From 18df5530c71f27ada1158557f00d86f0aeeeb42d Mon Sep 17 00:00:00 2001 From: "a.bouhuolia" Date: Tue, 21 Sep 2021 17:13:53 +0200 Subject: [PATCH] chrone: sperate client and server to different repos. --- client/CHANGELOG.md => CHANGELOG.md | 0 client/Dockerfile => Dockerfile | 0 README.md | 68 + client/.dockerignore | 4 - client/.flowconfig | 11 - client/.gitignore | 23 - client/.prettierrc | 10 - client/README.md | 68 - client/package-lock.json | 17658 ---------------- {client/config => config}/env.js | 0 {client/config => config}/getHttpsConfig.js | 0 .../config => config}/jest/cssTransform.js | 0 .../config => config}/jest/fileTransform.js | 0 {client/config => config}/modules.js | 0 {client/config => config}/paths.js | 0 {client/config => config}/pnpTs.js | 0 {client/config => config}/webpack.config.js | 0 .../webpackDevServer.config.js | 0 docker/.gitignore | 41 - docker/LICENSE | 21 - docker/README.md | 385 - docker/apache/Dockerfile | 30 - docker/apache/certs/.gitkeep | 0 docker/apache/httpd.conf | 100 - docker/apache/scripts/build-apache.sh | 20 - docker/apache/scripts/run-openssl.sh | 31 - docker/apache/sites/node-https.template | 17 - docker/apache/sites/node.template | 14 - docker/certbot/Dockerfile | 8 - docker/certbot/certs/.gitignore | 1 - docker/certbot/certs/.gitkeep | 0 docker/certbot/letsencrypt/.gitkeep | 0 .../certbot/letsencrypt/.well-known/.gitkeep | 0 docker/certbot/scripts/run-certbot.sh | 6 - docker/composehub.yml | 10 - docker/docker-compose.yml | 75 - docker/docs/CNAME | 1 - docker/docs/css/styles.css | 190 - docker/docs/images/box-icon.png | Bin 974 -> 0 bytes docker/docs/images/favicon.png | Bin 609 -> 0 bytes docker/docs/images/lightning-icon.png | Bin 724 -> 0 bytes docker/docs/images/logo.png | Bin 4262 -> 0 bytes docker/docs/images/nodock.jpg | Bin 85665 -> 0 bytes docker/docs/images/osedea-logo.png | Bin 2205 -> 0 bytes docker/docs/images/tech-logos.png | Bin 29346 -> 0 bytes docker/docs/index.html | 113 - docker/memcached/Dockerfile | 3 - docker/mongo/Dockerfile | 9 - docker/mysql/Dockerfile | 18 - docker/mysql/my.cnf | 2 - docker/nginx/Dockerfile | 23 - docker/nginx/certs/.gitkeep | 0 docker/nginx/nginx.conf | 33 - docker/nginx/scripts/build-nginx.sh | 20 - docker/nginx/scripts/run-openssl.sh | 31 - docker/nginx/sites/node-https.template | 13 - docker/nginx/sites/node.template | 32 - docker/node/Dockerfile | 38 - docker/node/scripts/run-nodock.sh | 21 - docker/postgresql/Dockerfile | 11 - docker/rabbitmq/Dockerfile | 15 - docker/rabbitmq/scripts/build-rabbitmq.sh | 13 - docker/redis/Dockerfile | 5 - docker/redis/redis.conf | 48 - docker/rethinkdb/Dockerfile | 3 - docker/workspace/Dockerfile | 39 - docker/workspace/crontab/root | 2 - {client/nginx => nginx}/sites/default.conf | 0 package-lock.json | 17645 ++++++++++++++- client/package.json => package.json | 0 .../public => public}/favicons/favicon-32.ico | Bin {client/public => public}/index.html | 0 {client/public => public}/logo192.png | Bin {client/public => public}/logo512.png | Bin {client/public => public}/manifest.json | 0 {client/public => public}/robots.txt | 0 {client/scripts => scripts}/build.js | 0 {client/scripts => scripts}/start.js | 0 {client/scripts => scripts}/test.js | 0 server/.babelrc | 9 - server/.env.example | 40 - server/.eslintrc.js | 41 - server/.gitignore | 7 - server/CHANGELOG.md | 28 - server/bin/bigcapital.js | 203 - server/bin/utils.js | 94 - server/nodemon.json | 17 - server/package.json | 147 - server/resources/css/modules/estimate-rtl.css | 552 - server/resources/css/modules/estimate.css | 552 - server/resources/css/modules/invoice-rtl.css | 558 - server/resources/css/modules/invoice.css | 558 - server/resources/css/modules/receipt-rtl.css | 552 - server/resources/css/modules/receipt.css | 552 - server/resources/scss/base.scss | 35 - server/resources/scss/fonts.scss | 26 - .../resources/scss/layouts/paper-layout.scss | 18 - server/resources/scss/modules/estimate.scss | 141 - server/resources/scss/modules/invoice.scss | 147 - server/resources/scss/modules/receipt.scss | 140 - server/resources/scss/normalize.scss | 379 - .../resources/views/PaperTemplateLayout.pug | 7 - .../views/modules/estimate-regular.pug | 70 - .../views/modules/invoice-regular.pug | 71 - .../views/modules/payment-receipt-regular.pug | 0 .../modules/purchase-invoice-regular.pug | 0 .../views/modules/receipt-regular.pug | 64 - server/scripts/gulpConfig.js | 125 - server/scripts/gulpfile.js | 50 - server/scripts/install.sh | 4 - server/scripts/run_test_db.sh | 31 - server/src/api/controllers/AccountTypes.ts | 42 - server/src/api/controllers/Accounts.ts | 473 - server/src/api/controllers/Agendash.ts | 25 - server/src/api/controllers/Authentication.ts | 314 - server/src/api/controllers/BaseController.ts | 140 - .../src/api/controllers/Contacts/Contacts.ts | 396 - .../src/api/controllers/Contacts/Customers.ts | 334 - .../src/api/controllers/Contacts/Vendors.ts | 307 - server/src/api/controllers/Currencies.ts | 211 - server/src/api/controllers/ExchangeRates.ts | 220 - server/src/api/controllers/Expenses.ts | 422 - .../api/controllers/FinancialStatements.ts | 97 - .../FinancialStatements/APAgingSummary.ts | 66 - .../FinancialStatements/ARAgingSummary.ts | 68 - .../FinancialStatements/BalanceSheet.ts | 80 - .../BaseFinancialReportController.ts | 26 - .../FinancialStatements/CashFlow/CashFlow.ts | 119 - .../CustomerBalanceSummary/index.ts | 119 - .../FinancialStatements/GeneralLedger.ts | 69 - .../InventoryDetails/index.ts | 131 - .../InventoryValuationSheet.ts | 74 - .../FinancialStatements/JournalSheet.ts | 80 - .../FinancialStatements/ProfitLossSheet.ts | 75 - .../FinancialStatements/PurchasesByItem.ts | 77 - .../FinancialStatements/SalesByItems.ts | 75 - .../TransactionsByCustomers/index.ts | 127 - .../TransactionsByReference/index.ts | 90 - .../TransactionsByVendors/index.ts | 120 - .../FinancialStatements/TrialBalanceSheet.ts | 81 - .../VendorBalanceSummary/index.ts | 107 - .../Inventory/InventoryAdjustments.ts | 304 - server/src/api/controllers/InviteUsers.ts | 243 - server/src/api/controllers/ItemCategories.ts | 311 - server/src/api/controllers/Items.ts | 498 - server/src/api/controllers/Jobs.ts | 60 - server/src/api/controllers/ManualJournals.ts | 400 - server/src/api/controllers/Media.ts | 212 - .../api/controllers/Miscellaneous/index.ts | 41 - server/src/api/controllers/Organization.ts | 200 - .../api/controllers/OrganizationDashboard.ts | 40 - server/src/api/controllers/Ping.ts | 28 - server/src/api/controllers/Purchases/Bills.ts | 475 - .../controllers/Purchases/BillsPayments.ts | 431 - .../api/controllers/Purchases/LandedCost.ts | 291 - server/src/api/controllers/Purchases/index.ts | 19 - server/src/api/controllers/Resources.ts | 82 - .../api/controllers/Sales/PaymentReceives.ts | 467 - .../api/controllers/Sales/SalesEstimates.ts | 454 - .../api/controllers/Sales/SalesInvoices.ts | 463 - .../api/controllers/Sales/SalesReceipts.ts | 375 - server/src/api/controllers/Sales/index.ts | 23 - server/src/api/controllers/Settings.ts | 112 - server/src/api/controllers/Setup.ts | 102 - .../api/controllers/Subscription/Licenses.ts | 250 - .../controllers/Subscription/PaymentMethod.ts | 31 - .../Subscription/PaymentViaLicense.ts | 125 - .../src/api/controllers/Subscription/index.ts | 49 - server/src/api/controllers/Users.ts | 281 - server/src/api/controllers/Views.ts | 123 - server/src/api/index.ts | 106 - .../api/middleware/AsyncRenderMiddleware.ts | 23 - .../api/middleware/AttachCurrentTenantUser.ts | 39 - .../middleware/ConvertEmptyStringsToNull.ts | 13 - .../middleware/EnsureTenantIsInitialized.ts | 21 - .../api/middleware/EnsureTenantIsSeeded.ts | 21 - .../middleware/I18nAuthenticatedMiddlware.ts | 36 - server/src/api/middleware/I18nMiddleware.ts | 23 - server/src/api/middleware/LoggerMiddleware.ts | 11 - .../middleware/LoginThrottlerMiddleware.ts | 24 - .../api/middleware/RateLimiterMiddleware.ts | 16 - .../src/api/middleware/SettingsMiddleware.ts | 27 - .../api/middleware/SubscriptionMiddleware.ts | 41 - .../src/api/middleware/TenancyMiddleware.ts | 36 - .../middleware/TenantDependencyInjection.ts | 47 - server/src/api/middleware/asyncMiddleware.ts | 15 - server/src/api/middleware/jwtAuth.ts | 32 - server/src/before.ts | 8 - server/src/collection/BudgetEntriesSet.js | 76 - server/src/collection/Cachable.js | 0 server/src/collection/Metable.js | 279 - server/src/collection/NestedSet/index.js | 116 - .../ResourceFieldMetadataCollection.js | 14 - .../src/collection/SoftDeleteQueryBuilder.js | 73 - server/src/config/index.js | 175 - server/src/config/knexConfig.ts | 58 - server/src/data/AccountTypes.ts | 223 - server/src/data/BalanceSheetStructure.ts | 96 - server/src/data/DataTypes.js | 8 - server/src/data/ResourceFieldsKeys.js | 205 - server/src/data/options.js | 127 - server/src/database/factories/index.js | 390 - server/src/database/factories/system.js | 16 - .../20190822214303_create_accounts_table.js | 19 - ...822214304_create_items_categories_table.js | 19 - .../20190822214306_create_items_table.js | 30 - .../20190822214903_create_views_table.js | 15 - .../20190822214904_create_settings_table.js | 13 - .../20190822214905_create_views_columns.js | 11 - ...20190822214905_create_views_roles_table.js | 13 - .../20200104232644_create_contacts_table.js | 54 - ...2647_create_accounts_transactions_table.js | 36 - .../20200105014405_create_expenses_table.js | 29 - ...0105195823_create_manual_journals_table.js | 21 - ...25_create_manual_journals_entries_table.js | 17 - .../20200419171451_create_currencies_table.js | 14 - ...00419191832_create_exchange_rates_table.js | 14 - .../20200423201600_create_media_table.js | 12 - ...20200503032011_create_media_links_table.js | 13 - ...e_expense_transactions_categories_table.js | 29 - ...0713192127_create_sales_estimates_table.js | 32 - ...200713213303_create_sales_receipt_table.js | 22 - ...200715193633_create_sale_invoices_table.js | 28 - ...715194514_create_payment_receives_table.js | 30 - ...1_create_payment_receives_entries_table.js | 13 - .../20200719152005_create_bills_table.js | 30 - ...00719153909_create_bills_payments_table.js | 21 - ...251_create_inventory_transactions_table.js | 24 - ...20200722164252_create_landed_cost_table.js | 21 - ...164253_create_landed_cost_entries_table.js | 11 - ...create_inventory_transaction_meta_table.js | 11 - ...200722173423_create_items_entries_table.js | 39 - ...0728161617_create_bill_payments_entries.js | 14 - ...create_inventory_cost_lot_tracker_table.js | 26 - ...1809_create_inventory_adjustments_table.js | 19 - ...ate_inventory_adjustments_entries_table.js | 25 - server/src/database/objection.js | 8 - .../core/20190423085242_seed_accounts.js | 24 - .../core/20200810121809_seed_settings.js | 37 - .../20200810121909_seed_items_settings.js | 27 - server/src/database/seeds/data/accounts.js | 318 - server/src/decorators/eventDispatcher.ts | 11 - server/src/exceptions/HttpException.ts | 9 - server/src/exceptions/ModelEntityNotFound.ts | 8 - .../NoPaymentModelWithPricedPlan.ts | 8 - .../NotAllowedChangeSubscriptionPlan.ts | 8 - .../PaymentAmountInvalidWithPlan.ts | 7 - server/src/exceptions/PaymentInputInvalid.ts | 5 - server/src/exceptions/ServiceError.ts | 14 - server/src/exceptions/ServiceErrors.ts | 15 - .../exceptions/TenantAlreadyInitialized.ts | 7 - server/src/exceptions/TenantAlreadySeeded.ts | 9 - .../src/exceptions/TenantDBAlreadyExists.ts | 9 - .../src/exceptions/TenantDatabaseNotBuilt.ts | 7 - server/src/exceptions/VoucherCodeRequired.ts | 6 - server/src/exceptions/index.ts | 25 - server/src/interfaces/APAgingSummaryReport.ts | 49 - server/src/interfaces/ARAgingSummaryReport.ts | 36 - server/src/interfaces/Account.ts | 66 - server/src/interfaces/AgingReport.ts | 22 - server/src/interfaces/Authentication.ts | 29 - server/src/interfaces/BalanceSheet.ts | 86 - server/src/interfaces/Bill.ts | 71 - server/src/interfaces/BillPayment.ts | 56 - server/src/interfaces/CashFlow.ts | 200 - server/src/interfaces/Contact.ts | 217 - .../src/interfaces/ContactBalanceSummary.ts | 49 - server/src/interfaces/Currency.ts | 27 - .../src/interfaces/CustomerBalanceSummary.ts | 49 - server/src/interfaces/DynamicFilter.ts | 38 - server/src/interfaces/Entry.ts | 18 - server/src/interfaces/ExchangeRate.ts | 36 - server/src/interfaces/Expenses.ts | 109 - server/src/interfaces/FinancialStatements.ts | 19 - server/src/interfaces/GeneralLedgerSheet.ts | 80 - .../interfaces/IInventoryValuationSheet.ts | 44 - server/src/interfaces/InventoryAdjustment.ts | 43 - server/src/interfaces/InventoryCostMethod.ts | 6 - server/src/interfaces/InventoryDetails.ts | 91 - server/src/interfaces/InventoryTransaction.ts | 51 - server/src/interfaces/Item.ts | 85 - server/src/interfaces/ItemCategory.ts | 43 - server/src/interfaces/ItemEntry.ts | 30 - server/src/interfaces/Jobs.ts | 14 - server/src/interfaces/Journal.ts | 52 - server/src/interfaces/JournalReport.ts | 36 - server/src/interfaces/LandedCost.ts | 96 - server/src/interfaces/Ledger.ts | 21 - server/src/interfaces/License.ts | 25 - server/src/interfaces/Mailable.ts | 16 - server/src/interfaces/ManualJournal.ts | 100 - server/src/interfaces/Media.ts | 25 - server/src/interfaces/Metable.ts | 28 - server/src/interfaces/Model.ts | 81 - server/src/interfaces/Options.ts | 11 - server/src/interfaces/Payment.ts | 20 - server/src/interfaces/PaymentReceive.ts | 79 - server/src/interfaces/ProfitLossSheet.ts | 64 - server/src/interfaces/Resource.ts | 22 - server/src/interfaces/SaleEstimate.ts | 43 - server/src/interfaces/SaleInvoice.ts | 51 - server/src/interfaces/SaleReceipt.ts | 59 - server/src/interfaces/SalesByItemsSheet.ts | 44 - server/src/interfaces/Setup.ts | 29 - server/src/interfaces/Table.ts | 25 - server/src/interfaces/Tenancy.ts | 50 - .../src/interfaces/TransactionsByContacts.ts | 33 - .../src/interfaces/TransactionsByCustomers.ts | 36 - .../src/interfaces/TransactionsByReference.ts | 31 - .../src/interfaces/TransactionsByVendors.ts | 36 - server/src/interfaces/TrialBalanceSheet.ts | 48 - server/src/interfaces/User.ts | 67 - server/src/interfaces/VendorBalanceSummary.ts | 51 - server/src/interfaces/View.ts | 68 - server/src/interfaces/index.ts | 63 - server/src/jobs/ComputeItemCost.ts | 72 - .../src/jobs/MailNotificationSubscribeEnd.ts | 34 - server/src/jobs/MailNotificationTrialEnd.ts | 34 - server/src/jobs/OrganizationSetup.ts | 35 - server/src/jobs/ResetPasswordMail.ts | 39 - .../src/jobs/SMSNotificationSubscribeEnd.ts | 28 - server/src/jobs/SMSNotificationTrialEnd.ts | 28 - server/src/jobs/SendLicenseEmail.ts | 33 - server/src/jobs/SendLicensePhone.ts | 33 - server/src/jobs/UserInviteMail.ts | 45 - server/src/jobs/WelcomeSMS.ts | 35 - server/src/jobs/welcomeEmail.ts | 39 - server/src/jobs/writeInvoicesJEntries.ts | 65 - server/src/lib/AccountTypes/index.ts | 101 - server/src/lib/Cachable/CachableModel.js | 16 - .../src/lib/Cachable/CachableQueryBuilder.js | 69 - server/src/lib/DependencyGraph/index.js | 349 - server/src/lib/DynamicFilter/DynamicFilter.ts | 91 - .../DynamicFilter/DynamicFilterAbstructor.ts | 50 - .../DynamicFilterAdvancedFilter.ts | 27 - .../DynamicFilter/DynamicFilterFilterRoles.ts | 52 - .../DynamicFilter/DynamicFilterQueryParser.ts | 61 - .../DynamicFilterRoleAbstructor.ts | 387 - .../lib/DynamicFilter/DynamicFilterSearch.ts | 48 - .../lib/DynamicFilter/DynamicFilterSortBy.ts | 92 - .../lib/DynamicFilter/DynamicFilterViews.ts | 56 - server/src/lib/DynamicFilter/constants.ts | 43 - server/src/lib/DynamicFilter/index.js | 13 - server/src/lib/KnexFactory/index.js | 55 - server/src/lib/LogicEvaluation/Lexer.js | 172 - server/src/lib/LogicEvaluation/Parser.js | 159 - server/src/lib/LogicEvaluation/QueryParser.js | 61 - server/src/lib/LogicEvaluation/index.js | 0 server/src/lib/Mail/index.ts | 102 - server/src/lib/Metable/MetableConfig.ts | 40 - server/src/lib/Metable/MetableModel.js | 12 - server/src/lib/Metable/MetableStore.ts | 215 - server/src/lib/Metable/MetableStoreDB.ts | 243 - server/src/lib/MomentFormats/index.ts | 48 - server/src/lib/NestedSet/NestedSetNode.js | 9 - .../QueryBuilder.js | 27 - server/src/lib/Transformer/Transformer.ts | 72 - .../FilterRolesDynamicFilter.js | 44 - server/src/lib/ViewRolesBuilder/index.ts | 129 - server/src/loaders/agenda.ts | 11 - server/src/loaders/database.ts | 10 - server/src/loaders/dbManager.ts | 7 - server/src/loaders/dependencyInjector.ts | 54 - server/src/loaders/events.ts | 31 - server/src/loaders/express.ts | 60 - server/src/loaders/i18n.ts | 9 - server/src/loaders/index.ts | 34 - server/src/loaders/jobs.ts | 48 - server/src/loaders/logger.ts | 13 - server/src/loaders/mail.ts | 15 - server/src/loaders/mongoose.ts | 11 - server/src/loaders/rateLimiterLoader.ts | 24 - server/src/loaders/smsClient.ts | 9 - server/src/loaders/systemRepositories.ts | 17 - server/src/loaders/tenantCache.ts | 8 - server/src/loaders/tenantModels.ts | 84 - server/src/loaders/tenantRepositories.ts | 33 - server/src/locales/ar.json | 367 - server/src/locales/en.json | 367 - server/src/models/Account.Settings.ts | 101 - server/src/models/Account.js | 275 - server/src/models/AccountTransaction.js | 186 - server/src/models/Auth.js | 38 - server/src/models/Bill.Settings.ts | 96 - server/src/models/Bill.js | 331 - server/src/models/BillLandedCost.js | 65 - server/src/models/BillLandedCostEntry.js | 32 - server/src/models/BillPayment.Settings.ts | 66 - server/src/models/BillPayment.js | 106 - server/src/models/BillPaymentEntry.js | 36 - server/src/models/Contact.js | 130 - server/src/models/Currency.js | 21 - server/src/models/CustomViewBaseModel.js | 20 - server/src/models/Customer.Settings.ts | 92 - server/src/models/Customer.js | 170 - server/src/models/DateSession.js | 34 - server/src/models/ExchangeRate.js | 44 - server/src/models/Expense.Settings.ts | 71 - server/src/models/Expense.js | 175 - server/src/models/ExpenseCategory.js | 44 - .../models/InventoryAdjustment.Settings.ts | 59 - server/src/models/InventoryAdjustment.js | 91 - server/src/models/InventoryAdjustmentEntry.js | 42 - server/src/models/InventoryCostLotTracker.js | 87 - server/src/models/InventoryTransaction.js | 148 - server/src/models/InventoryTransactionMeta.js | 29 - server/src/models/Item.Settings.ts | 123 - server/src/models/Item.js | 143 - server/src/models/ItemCategory.Settings.ts | 30 - server/src/models/ItemCategory.js | 62 - server/src/models/ItemEntry.js | 58 - server/src/models/ManualJournal.Settings.ts | 69 - server/src/models/ManualJournal.js | 163 - server/src/models/ManualJournalEntry.js | 45 - server/src/models/Media.js | 36 - server/src/models/MediaLink.js | 10 - server/src/models/Metable.js | 281 - server/src/models/Model.js | 55 - server/src/models/ModelSearchable.ts | 18 - server/src/models/ModelSetting.ts | 56 - server/src/models/Option.js | 30 - server/src/models/Pagination.js | 17 - server/src/models/PaymentReceive.Settings.ts | 57 - server/src/models/PaymentReceive.js | 110 - server/src/models/PaymentReceiveEntry.js | 51 - server/src/models/ResourcableModel.js | 8 - server/src/models/SaleEstimate.Settings.ts | 80 - server/src/models/SaleEstimate.js | 226 - server/src/models/SaleEstimateEntry.js | 30 - server/src/models/SaleInvoice.Settings.ts | 100 - server/src/models/SaleInvoice.js | 394 - server/src/models/SaleInvoiceEntry.js | 29 - server/src/models/SaleReceipt.Settings.ts | 85 - server/src/models/SaleReceipt.js | 175 - server/src/models/SaleReceiptEntry.js | 29 - server/src/models/Setting.js | 21 - server/src/models/TenantModel.js | 22 - server/src/models/Vendor.Settings.ts | 92 - server/src/models/Vendor.js | 169 - server/src/models/View.js | 72 - server/src/models/ViewColumn.js | 21 - server/src/models/ViewRole.js | 46 - server/src/models/index.js | 55 - server/src/repositories/AccountRepository.ts | 94 - .../AccountTransactionRepository.ts | 86 - .../src/repositories/BaseModelRepository.ts | 5 - server/src/repositories/BillRepository.ts | 38 - server/src/repositories/CachableRepository.ts | 241 - server/src/repositories/ContactRepository.ts | 12 - server/src/repositories/CustomerRepository.ts | 46 - server/src/repositories/EntityRepository.ts | 242 - .../repositories/ExpenseEntryRepository.ts | 11 - server/src/repositories/ExpenseRepository.ts | 35 - .../InventoryTransactionRepository.ts | 11 - server/src/repositories/ItemRepository.ts | 12 - server/src/repositories/JournalRepository.ts | 11 - .../PaymentReceiveEntryRepository.ts | 11 - .../repositories/PaymentReceiveRepository.ts | 11 - .../src/repositories/SaleInvoiceRepository.ts | 38 - server/src/repositories/SettingRepository.ts | 11 - server/src/repositories/TenantRepository.ts | 15 - server/src/repositories/VendorRepository.ts | 50 - server/src/repositories/ViewRepository.ts | 18 - server/src/repositories/ViewRoleRepository.ts | 6 - server/src/server.ts | 29 - .../services/Accounting/JournalCommands.ts | 463 - .../services/Accounting/JournalContacts.ts | 74 - .../src/services/Accounting/JournalEntry.ts | 10 - .../services/Accounting/JournalFinancial.ts | 17 - .../src/services/Accounting/JournalPoster.ts | 744 - server/src/services/Accounting/Ledger.ts | 136 - .../src/services/Accounts/AccountTransform.ts | 36 - .../src/services/Accounts/AccountsService.ts | 824 - .../Accounts/AccountsTypesServices.ts | 21 - server/src/services/Accounts/constants.ts | 75 - .../AuthenticationMailMessages.ts | 58 - .../AuthenticationSMSMessages.ts | 19 - .../services/Authentication/RateLimiter.ts | 49 - server/src/services/Authentication/index.ts | 329 - server/src/services/Cache/index.ts | 49 - .../services/Contacts/ContactTransformer.ts | 42 - .../src/services/Contacts/ContactsService.ts | 391 - .../Contacts/Customers/CustomerTransformer.ts | 25 - .../services/Contacts/Customers/constants.ts | 22 - .../src/services/Contacts/CustomersService.ts | 418 - .../Contacts/Vendors/VendorTransformer.ts | 16 - .../services/Contacts/Vendors/constants.ts | 22 - .../src/services/Contacts/VendorsService.ts | 347 - server/src/services/Contacts/constants.ts | 29 - .../services/Currencies/CurrenciesService.ts | 268 - .../DynamicListing/DynamicListAbstruct.ts | 6 - .../DynamicListing/DynamicListCustomView.ts | 57 - .../DynamicListing/DynamicListFilterRoles.ts | 103 - .../DynamicListing/DynamicListSearch.ts | 18 - .../DynamicListing/DynamicListService.ts | 181 - .../DynamicListing/DynamicListSortBy.ts | 40 - .../src/services/DynamicListing/constants.ts | 6 - .../src/services/DynamicListing/validators.ts | 0 server/src/services/Entries/index.ts | 78 - .../ExchangeRates/ExchangeRatesService.ts | 193 - .../services/Expenses/ExpenseTransformer.ts | 62 - .../src/services/Expenses/ExpensesService.ts | 736 - server/src/services/Expenses/constants.ts | 26 - .../AgingSummary/APAgingSummaryService.ts | 114 - .../AgingSummary/APAgingSummarySheet.ts | 131 - .../AgingSummary/ARAgingSummaryService.ts | 116 - .../AgingSummary/ARAgingSummarySheet.ts | 139 - .../AgingSummary/AgingReport.ts | 54 - .../AgingSummary/AgingSummary.ts | 230 - .../BalanceSheet/BalanceSheet.ts | 339 - .../BalanceSheet/BalanceSheetService.ts | 146 - .../FinancialStatements/CashFlow/CashFlow.ts | 764 - .../CashFlow/CashFlowDatePeriods.ts | 410 - .../CashFlow/CashFlowRepository.ts | 149 - .../CashFlow/CashFlowService.ts | 175 - .../CashFlow/CashFlowTable.ts | 365 - .../FinancialStatements/CashFlow/schema.ts | 75 - .../ContactBalanceSummary.ts | 134 - .../CustomerBalanceSummary.ts | 107 - .../CustomerBalanceSummaryRepository.ts | 69 - .../CustomerBalanceSummaryService.ts | 124 - .../CustomerBalanceSummaryTableRows.ts | 72 - .../FinancialReportService.ts | 8 - .../FinancialStatements/FinancialSheet.ts | 124 - .../GeneralLedger/GeneralLedger.ts | 240 - .../GeneralLedger/GeneralLedgerService.ts | 170 - .../InventoryDetails/InventoryDetails.ts | 424 - .../InventoryDetailsRepository.ts | 100 - .../InventoryDetailsService.ts | 123 - .../InventoryDetails/InventoryDetailsTable.ts | 197 - .../InventoryValuationSheet.ts | 174 - .../InventoryValuationSheetService.ts | 131 - .../JournalSheet/JournalSheet.ts | 137 - .../JournalSheet/JournalSheetService.ts | 142 - .../ProfitLossSheet/ProfitLossSheet.ts | 411 - .../ProfitLossSheet/ProfitLossSheetService.ts | 145 - .../PurchasesByItems/PurchasesByItems.ts | 120 - .../PurchasesByItemsService.ts | 130 - .../SalesByItems/SalesByItems.ts | 120 - .../SalesByItems/SalesByItemsService.ts | 131 - .../TransactionsByContact.ts | 144 - .../TransactionsByContactTableRows.ts | 81 - .../TransactionsByCustomers.ts | 139 - .../TransactionsByCustomersRepository.ts | 98 - .../TransactionsByCustomersService.ts | 173 - .../TransactionsByCustomersTableRows.ts | 78 - .../TransactionsByReferenceReport.ts | 81 - .../TransactionsByReferenceRepository.ts | 29 - .../TransactionsByReference/index.ts | 77 - .../TransactionsByVendor.ts | 136 - .../TransactionsByVendorRepository.ts | 101 - .../TransactionsByVendorService.ts | 179 - .../TransactionsByVendorTableRows.ts | 76 - .../TrialBalanceSheet/TrialBalanceSheet.ts | 156 - .../TrialBalanceSheetService.ts | 134 - .../VendorBalanceSummary.ts | 99 - .../VendorBalanceSummaryRepository.ts | 69 - .../VendorBalanceSummaryService.ts | 120 - .../VendorBalanceSummaryTableRows.ts | 70 - .../src/services/FinancialStatements/utils.ts | 13 - server/src/services/I18n/I18nService.ts | 64 - server/src/services/Inventory/Inventory.ts | 346 - .../Inventory/InventoryAdjustmentService.ts | 396 - .../Inventory/InventoryAverageCost.ts | 243 - .../Inventory/InventoryCostLotTracker.ts | 302 - .../services/Inventory/InventoryCostMethod.ts | 46 - .../Inventory/InventoryItemsQuantitySync.ts | 92 - .../InviteUsers/InviteUsersMailMessages.ts | 41 - .../InviteUsers/InviteUsersSMSMessages.ts | 0 server/src/services/InviteUsers/constants.ts | 11 - server/src/services/InviteUsers/index.ts | 302 - .../ItemCategories/ItemCategoriesService.ts | 470 - server/src/services/Items/ItemTransformer.ts | 34 - server/src/services/Items/ItemsCostService.ts | 5 - .../src/services/Items/ItemsEntriesService.ts | 232 - server/src/services/Items/ItemsService.ts | 632 - server/src/services/Items/constants.ts | 59 - server/src/services/Jobs/JobTransformer.ts | 47 - server/src/services/Jobs/JobsService.ts | 50 - .../ManualJournalTransformer.ts | 44 - .../ManualJournals/ManualJournalsService.ts | 916 - .../src/services/ManualJournals/constants.ts | 28 - server/src/services/Media/MediaService.ts | 223 - .../Miscellaneous/DateFormats/constants.ts | 11 - .../Miscellaneous/DateFormats/index.ts | 15 - .../src/services/Miscellaneous/MiscService.ts | 8 - .../OrganizationBaseCurrencyLocking.ts | 142 - server/src/services/Organization/constants.ts | 34 - server/src/services/Organization/index.ts | 267 - server/src/services/PDF/PdfService.ts | 26 - server/src/services/Payment/License.ts | 185 - .../services/Payment/LicenseMailMessages.ts | 26 - .../services/Payment/LicensePaymentMethod.ts | 67 - .../services/Payment/LicenseSMSMessages.ts | 17 - server/src/services/Payment/PaymentMethod.ts | 6 - server/src/services/Payment/index.ts | 22 - .../BillPayments/BillPaymentTransformer.ts | 35 - .../Purchases/BillPayments/BillPayments.ts | 743 - .../BillPayments/BillPaymentsPages.ts | 102 - .../Purchases/BillPayments/constants.ts | 17 - server/src/services/Purchases/Bills.ts | 771 - .../Purchases/LandedCost/BillLandedCost.ts | 58 - .../Purchases/LandedCost/ExpenseLandedCost.ts | 56 - .../Purchases/LandedCost/LandedCostListing.ts | 86 - .../LandedCost/TransctionLandedCost.ts | 84 - .../services/Purchases/LandedCost/index.ts | 479 - .../services/Purchases/LandedCost/utils.ts | 34 - .../PurchaseInvoiceTransformer.ts | 66 - server/src/services/Purchases/constants.ts | 75 - .../src/services/Resource/ResourceService.ts | 79 - .../src/services/SMSClient/EasySmsClient.ts | 27 - server/src/services/SMSClient/SMSAPI.ts | 20 - .../services/SMSClient/SMSClientInterface.ts | 5 - server/src/services/SMSClient/index.ts | 3 - .../Sales/AutoIncrementOrdersService.ts | 54 - .../Estimates/SaleEstimateTransformer.ts | 77 - .../Sales/Estimates/SaleEstimatesPdf.ts | 43 - .../src/services/Sales/Estimates/constants.ts | 109 - server/src/services/Sales/HasItemsEntries.ts | 30 - .../services/Sales/JournalPosterService.ts | 34 - .../PaymentReceiveTransformer.ts | 32 - .../PaymentReceives/PaymentReceivesPages.ts | 111 - .../Sales/PaymentReceives/PaymentsReceives.ts | 826 - .../Sales/PaymentReceives/constants.ts | 17 - .../Sales/Receipts/SaleReceiptTransformer.ts | 44 - .../Sales/Receipts/SaleReceiptsPdfService.ts | 41 - .../src/services/Sales/Receipts/constants.ts | 31 - server/src/services/Sales/SaleInvoicePdf.ts | 35 - .../services/Sales/SaleInvoiceTransformer.ts | 70 - server/src/services/Sales/SalesEstimate.ts | 606 - server/src/services/Sales/SalesInvoices.ts | 748 - .../src/services/Sales/SalesInvoicesCost.ts | 169 - server/src/services/Sales/SalesReceipts.ts | 588 - .../src/services/Sales/ServiceItemsEntries.js | 16 - server/src/services/Sales/constants.ts | 72 - .../SessionModel/SessionQueryBuilder.js | 13 - server/src/services/SessionModel/index.js | 24 - .../src/services/Settings/SettingsService.ts | 53 - server/src/services/Settings/SettingsStore.ts | 15 - server/src/services/Setup/SetupService.ts | 119 - .../src/services/Subscription/MailMessages.ts | 30 - .../src/services/Subscription/SMSMessages.ts | 34 - .../src/services/Subscription/Subscription.ts | 80 - .../Subscription/SubscriptionPeriod.ts | 41 - .../Subscription/SubscriptionService.ts | 69 - .../Subscription/SubscriptionViaLicense.ts | 54 - server/src/services/Tenancy/SystemService.ts | 26 - server/src/services/Tenancy/TenancyService.ts | 115 - .../src/services/Tenancy/TenantDBManager.ts | 154 - server/src/services/Tenancy/TenantService.ts | 0 server/src/services/Tenancy/TenantsManager.ts | 177 - server/src/services/Users/UsersService.ts | 239 - server/src/services/Views/ViewsService.ts | 52 - .../Bills/WriteInventoryTransactions.ts | 60 - .../subscribers/Bills/WriteJournalEntries.ts | 54 - server/src/subscribers/Bills/index.ts | 22 - server/src/subscribers/Inventory/Inventory.ts | 148 - .../Inventory/InventoryAdjustment.ts | 70 - server/src/subscribers/LandedCost/index.ts | 37 - .../WriteInventoryTransactions.ts | 72 - .../SaleInvoices/WriteJournalEntries.ts | 74 - server/src/subscribers/SaleInvoices/index.ts | 58 - .../SaleReceipt/WriteInventoryTransactions.ts | 68 - .../SaleReceipt/WriteJournalEntries.ts | 75 - server/src/subscribers/SaleReceipt/index.ts | 29 - server/src/subscribers/authentication.ts | 50 - server/src/subscribers/customers.ts | 70 - server/src/subscribers/events.ts | 217 - server/src/subscribers/expenses.ts | 126 - server/src/subscribers/inviteUser.ts | 22 - server/src/subscribers/items.ts | 13 - server/src/subscribers/manualJournals.ts | 118 - server/src/subscribers/organization.ts | 16 - server/src/subscribers/paymentMades.ts | 105 - server/src/subscribers/paymentReceives.ts | 135 - server/src/subscribers/saleEstimates.ts | 29 - server/src/subscribers/tenantManager.ts | 22 - server/src/subscribers/users.ts | 0 server/src/subscribers/vendors.ts | 57 - ...0104195900_create_password_resets_table.js | 9 - .../20200420134631_create_tenants_table.js | 19 - .../20200420134633_create_users_table.js | 22 - ...0200422225247_create_user_invites_table.js | 15 - ...091642_create_subscriptions_plans_table.js | 22 - .../20200823234134_create_plans_table.js | 30 - ...234434_create_subscription_plan_feature.js | 15 - ...6_create_subscription_plan_subscription.js | 22 - ...5339_create_subscription_licenses_table.js | 22 - ...823235340_create_tenants_metadata_table.js | 22 - server/src/system/models/Invite.js | 30 - server/src/system/models/PasswordReset.js | 17 - .../system/models/Subscriptions/License.js | 129 - .../src/system/models/Subscriptions/Plan.js | 82 - .../models/Subscriptions/PlanFeature.js | 36 - .../models/Subscriptions/PlanSubscription.js | 164 - server/src/system/models/SystemModel.js | 19 - server/src/system/models/SystemUser.js | 85 - server/src/system/models/Tenant.js | 200 - server/src/system/models/TenantMetadata.js | 10 - server/src/system/models/index.js | 22 - .../repositories/SubscriptionRepository.ts | 26 - .../system/repositories/SystemRepository.ts | 5 - .../repositories/SystemUserRepository.ts | 101 - .../system/repositories/TenantRepository.ts | 43 - server/src/system/repositories/index.ts | 9 - .../system/seeds/seed_subscriptions_plans.js | 66 - server/src/utils/deepdash.ts | 52 - server/src/utils/index.ts | 418 - server/src/utils/table.ts | 32 - server/tests/collection/NestedSet.test.js | 130 - server/tests/dbInit.js | 40 - server/tests/docker-compose.yml | 14 - server/tests/lib/CachableModel.test.js | 32 - server/tests/lib/MetableStore.test.ts | 39 - server/tests/models/Account.test.js | 50 - server/tests/models/AccountType.test.js | 22 - server/tests/models/Expense.test.js | 39 - server/tests/models/ExpenseCategory.test.js | 5 - server/tests/models/Item.test.js | 22 - server/tests/models/ItemCategories.test.js | 24 - server/tests/models/Resource.test.js | 31 - server/tests/models/User.test.js | 23 - server/tests/models/View.test.js | 47 - server/tests/mysql-tmpfs.sh | 31 - server/tests/routes/accounting.test.js | 887 - server/tests/routes/accounts.test.js | 758 - server/tests/routes/auth.test.js | 288 - server/tests/routes/balance_sheet.test.js | 541 - server/tests/routes/bill_payments.test.js | 113 - server/tests/routes/bills.test.js | 217 - server/tests/routes/currencies.test.js | 191 - server/tests/routes/customers.test.js | 250 - server/tests/routes/exchange_rates.test.js | 230 - server/tests/routes/expenses.test.js | 739 - .../tests/routes/financial_statements.test.js | 956 - server/tests/routes/inviteUsers.test.js | 259 - server/tests/routes/items.test.js | 729 - server/tests/routes/itemsCategories.test.js | 311 - server/tests/routes/options.test.js | 120 - server/tests/routes/payable_aging.test.js | 0 server/tests/routes/payment_receives.test.js | 274 - server/tests/routes/receivable_aging.test.js | 234 - server/tests/routes/sales_estimates.test.js | 439 - server/tests/routes/sales_invoices.test.js | 494 - server/tests/routes/sales_receipts.test.js | 294 - server/tests/routes/users.test.js | 203 - server/tests/routes/vendors.test.js | 193 - server/tests/routes/views.test.js | 936 - server/tests/services/JournalPoster.test.js | 406 - server/tests/testInit.js | 88 - server/tests/utils/utils.test.js | 16 - server/tsconfig.json | 55 - server/views/mail/LicenseReceive.html | 411 - server/views/mail/ResetPassword.html | 427 - server/views/mail/UserInvite.html | 421 - server/views/mail/Welcome.html | 411 - server/webpack.config.js | 76 - client/setupProxy.js => setupProxy.js | 0 {client/src => src}/common/accountTypes.js | 0 {client/src => src}/common/adjustmentType.js | 0 .../common/allocateLandedCostType.js | 0 {client/src => src}/common/classes.js | 0 {client/src => src}/common/contactsOptions.js | 0 {client/src => src}/common/countries.js | 0 {client/src => src}/common/currencies.js | 0 {client/src => src}/common/dataTypes.js | 0 .../src => src}/common/dateFormatsOptions.js | 0 {client/src => src}/common/drawers.js | 0 {client/src => src}/common/errors.js | 0 .../src => src}/common/fiscalYearOptions.js | 0 {client/src => src}/common/homepageOptions.js | 0 .../common/keyboardShortcutsOptions.js | 0 .../src => src}/common/languagesOptions.js | 0 .../common/numberFormatsOptions.js | 0 {client/src => src}/common/quickNewOptions.js | 0 {client/src => src}/common/registerWizard.js | 0 {client/src => src}/common/resourcesTypes.js | 0 .../src => src}/common/subscriptionModels.js | 0 {client/src => src}/common/tables.js | 0 .../components/AccountsMultiSelect.js | 0 .../components/AccountsSelectList.js | 0 .../components/AccountsSuggestField.js | 0 .../components/AccountsTypesSelect.js | 0 .../AdvancedFilter/AdvancedFilter.schema.js | 0 .../AdvancedFilterCompatatorField.js | 0 .../AdvancedFilter/AdvancedFilterDropdown.js | 0 .../AdvancedFilterDropdownContext.js | 0 .../AdvancedFilter/AdvancedFilterPopover.js | 0 .../AdvancedFilterValueField.js | 0 .../components/AdvancedFilter/components.js | 0 .../components/AdvancedFilter/interfaces.ts | 0 .../components/AdvancedFilter/utils.js | 0 {client/src => src}/components/Alert/index.js | 0 .../components/Alert/style.module.scss | 0 {client/src => src}/components/App.js | 0 .../src => src}/components/AppIntlLoader.js | 0 .../src => src}/components/AppIntlProvider.js | 0 {client/src => src}/components/AppToaster.js | 0 .../src => src}/components/Authentication.js | 0 {client/src => src}/components/Card.js | 0 .../components/CategoriesSelectList.js | 0 .../components/CloudLoadingIndicator.js | 0 .../components/ContactSelecetList.js | 0 .../components/ContactsMultiSelect.js | 0 .../components/ContactsSuggestField.js | 0 {client/src => src}/components/ContextMenu.js | 0 .../components/CurrenciesSelectList.js | 0 .../components/CurrencySelectList.js | 0 .../src => src}/components/CustomFields.js | 0 .../components/Dashboard/AuthenticatedUser.js | 0 .../components/Dashboard/BigcapitalLoading.js | 0 .../components/Dashboard/Dashboard.js | 0 .../Dashboard/DashboardActionViewsList.js | 0 .../Dashboard/DashboardActionsBar.js | 0 .../components/Dashboard/DashboardBackLink.js | 0 .../components/Dashboard/DashboardBoot.js | 0 .../Dashboard/DashboardBreadcrumbs.js | 0 .../components/Dashboard/DashboardCard.js | 0 .../components/Dashboard/DashboardContent.js | 0 .../Dashboard/DashboardContentRoute.js | 0 .../Dashboard/DashboardContentTable.js | 0 .../Dashboard/DashboardErrorBoundary.js | 0 .../Dashboard/DashboardFilterButton.js | 0 .../components/Dashboard/DashboardFooter.js | 0 .../components/Dashboard/DashboardInsider.js | 0 .../Dashboard/DashboardLoadingIndicator.js | 0 .../components/Dashboard/DashboardPage.js | 0 .../Dashboard/DashboardPageContent.js | 0 .../components/Dashboard/DashboardProvider.js | 0 .../Dashboard/DashboardRowsHeightButton.js | 0 .../Dashboard/DashboardSplitePane.js | 0 .../components/Dashboard/DashboardTopbar.js | 0 .../Dashboard/DashboardViewsTabs.js | 0 .../components/Dashboard/GlobalHotkeys.js | 0 .../components/Dashboard/PrivatePages.js | 0 .../Dashboard/PrivatePagesProvider.js | 0 .../components/Dashboard/SplashScreen.js | 0 .../components/Dashboard/TopbarUser.js | 0 .../src => src}/components/Dashboard/index.js | 0 {client/src => src}/components/DataTable.js | 0 .../DataTableCells/AccountsListFieldCell.js | 0 .../DataTableCells/CheckBoxFieldCell.js | 0 .../DataTableCells/ContactsListFieldCell.js | 0 .../components/DataTableCells/DivFieldCell.js | 0 .../DataTableCells/InputGroupCell.js | 0 .../DataTableCells/ItemsListCell.js | 0 .../DataTableCells/MoneyFieldCell.js | 0 .../DataTableCells/NumericInputCell.js | 0 .../PaymentReceiveListFieldCell.js | 0 .../DataTableCells/PercentFieldCell.js | 0 .../components/DataTableCells/index.js | 0 .../src => src}/components/Datatable/Cells.js | 0 .../components/Datatable/DatatableEditable.js | 0 .../components/Datatable/TableBody.js | 0 .../components/Datatable/TableCell.js | 0 .../components/Datatable/TableContext.js | 0 .../components/Datatable/TableFastCell.js | 0 .../components/Datatable/TableFooter.js | 0 .../components/Datatable/TableHeader.js | 0 .../Datatable/TableHeaderSkeleton.js | 0 .../TableIndeterminateCheckboxHeader.js | 0 .../TableIndeterminateCheckboxRow.js | 0 .../components/Datatable/TableLoading.js | 0 .../components/Datatable/TableNoResultsRow.js | 0 .../components/Datatable/TablePage.js | 0 .../components/Datatable/TablePagination.js | 0 .../components/Datatable/TableRow.js | 0 .../components/Datatable/TableRows.js | 0 .../components/Datatable/TableSkeletonRows.js | 0 .../components/Datatable/TableTBody.js | 0 .../Datatable/TableVirtualizedRows.js | 0 .../components/Datatable/TableWrapper.js | 0 .../src => src}/components/Datatable/utils.js | 0 .../src => src}/components/Details/index.js | 0 .../src => src}/components/Dialog/Dialog.js | 0 .../components/Dialog/DialogContent.js | 0 .../components/Dialog/DialogSuspense.js | 0 .../components/DialogReduxConnect.js | 0 .../components/DialogsContainer.js | 0 .../src => src}/components/DisplayNameList.js | 0 {client/src => src}/components/Dragzone.js | 0 .../src => src}/components/Drawer/Drawer.js | 0 .../components/Drawer/DrawerHeaderContent.js | 0 .../components/Drawer/DrawerInsider.js | 0 .../components/Drawer/DrawerMainTabs.js | 0 .../components/Drawer/DrawerSuspense.js | 0 .../src => src}/components/Drawer/index.js | 0 .../components/DrawersContainer.js | 0 {client/src => src}/components/EmptyStatus.js | 0 .../components/ErrorBoundary/index.js | 0 .../src => src}/components/ErrorMessage.js | 0 {client/src => src}/components/FieldHint.js | 0 .../components/FieldRequiredHint.js | 0 .../src => src}/components/FinancialSheet.js | 0 .../components/FinancialStatement.js | 0 .../components/FormattedMessage.js | 0 .../src => src}/components/Forms/Checkbox.tsx | 0 .../components/Forms/FormObserver.js | 0 .../components/Forms/InputPrepend.js | 0 .../components/Forms/InputPrependButton.js | 0 .../components/Forms/InputPrependOptions.js | 0 .../components/Forms/InputPrependText.js | 0 .../MoneyInputGroup/CurrencyInputProps.ts | 0 .../Forms/MoneyInputGroup/index.tsx | 0 .../utils/__tests__/addSeparators.spec.ts | 0 .../utils/__tests__/cleanValue.spec.ts | 0 .../utils/__tests__/fixedDecimalValue.spec.ts | 0 .../utils/__tests__/formatValue.spec.ts | 0 .../utils/__tests__/isNumber.spec.ts | 0 .../utils/__tests__/padTrimValue.spec.ts | 0 .../utils/__tests__/parseAbbrValue.spec.ts | 0 .../__tests__/removeInvalidChars.spec.ts | 0 .../utils/__tests__/removeSeparators.spec.ts | 0 .../MoneyInputGroup/utils/addSeparators.ts | 0 .../Forms/MoneyInputGroup/utils/cleanValue.ts | 0 .../MoneyInputGroup/utils/escapeRegExp.ts | 0 .../utils/fixedDecimalValue.ts | 0 .../MoneyInputGroup/utils/formatValue.ts | 0 .../Forms/MoneyInputGroup/utils/index.tsx | 0 .../Forms/MoneyInputGroup/utils/isNumber.ts | 0 .../MoneyInputGroup/utils/padTrimValue.ts | 0 .../MoneyInputGroup/utils/parseAbbrValue.ts | 0 .../utils/removeInvalidChars.ts | 0 .../MoneyInputGroup/utils/removeSeparators.ts | 0 {client/src => src}/components/Forms/index.js | 0 {client/src => src}/components/Grid/Col.js | 0 {client/src => src}/components/Grid/Row.js | 0 .../Guards/EnsureOrganizationIsNotReady.js | 0 .../Guards/EnsureOrganizationIsReady.js | 0 .../Guards/EnsureSubscriptionIsActive.js | 0 .../Guards/EnsureSubscriptionsIsActive.js | 0 .../Guards/EnsureSubscriptionsIsInactive.js | 0 .../components/Guards/PrivateRoute.js | 0 {client/src => src}/components/Icon.js | 0 .../components/Items/ItemsMultiSelect.js | 0 {client/src => src}/components/Items/index.js | 0 .../src => src}/components/ItemsListField.js | 0 .../components/ItemsSuggestField.js | 0 {client/src => src}/components/LazyLoader.js | 0 {client/src => src}/components/ListSelect.js | 0 .../components/LoadingIndicator.js | 0 .../components/MaterialProgressBar.js | 0 {client/src => src}/components/Menu/index.js | 0 {client/src => src}/components/MenuItem.js | 0 .../src => src}/components/MenuItemLabel.js | 0 {client/src => src}/components/Money.js | 0 .../components/MoneyExchangeRate.js | 0 {client/src => src}/components/MultiSelect.js | 0 .../components/MultiSelectTaggable/index.js | 0 .../components/NProgress/AppProgress.js | 0 .../src => src}/components/NProgress/Bar.js | 0 .../components/NProgress/Container.js | 0 .../components/NProgress/Progress.js | 0 .../components/NProgress/Spinner.js | 0 .../NumberFormatFields.js | 0 .../NumberFormatFooter.js | 0 .../NumberFormats.schema.js | 0 .../components/NumberFormatDropdown/index.js | 0 .../components/PageFormBigNumber.js | 0 {client/src => src}/components/Pagination.js | 0 .../components/PaymentReceiveListField.js | 0 .../components/PdfPreview/index.js | 0 {client/src => src}/components/Postbox.js | 0 .../Preferences/PreferencesContentRoute.js | 0 .../components/Preferences/PreferencesPage.js | 0 .../Preferences/PreferencesSidebar.js | 0 .../PreferencesSidebarContainer.js | 0 .../Preferences/PreferencesSubContent.js | 0 .../Preferences/PreferencesTopbar.js | 0 .../src => src}/components/RequiredHint.js | 0 .../src => src}/components/SalutationList.js | 0 {client/src => src}/components/SelectList.js | 0 .../src => src}/components/Sidebar/Sidebar.js | 0 .../components/Sidebar/SidebarContainer.js | 0 .../components/Sidebar/SidebarHead.js | 0 .../components/Sidebar/SidebarMenu.js | 0 .../SidebarOverlayContainer.tsx | 0 .../components/SidebarOverlay/index.tsx | 0 {client/src => src}/components/Skeleton.js | 0 .../components/Subscriptions/index.js | 0 .../TotalLines/TotalLines.module.scss | 0 .../components/TotalLines/index.js | 0 .../UniversalSearch/UniversalSearch.js | 0 .../UniversalSearchProvider.js | 0 .../components/UniversalSearch/utils.js | 0 .../src => src}/components/Utils/Choose.js | 0 {client/src => src}/components/Utils/For.js | 0 .../components/Utils/FormatDate.js | 0 .../components/Utils/FormatNumber.js | 0 {client/src => src}/components/Utils/If.js | 0 {client/src => src}/components/Utils/index.js | 0 {client/src => src}/components/index.js | 0 {client/src => src}/components/modifiers.js | 0 {client/src => src}/components/utils.js | 0 {client/src => src}/config/app.js | 0 .../config/financialReportsMenu.js | 0 {client/src => src}/config/footerLinks.js | 0 {client/src => src}/config/preferencesMenu.js | 0 {client/src => src}/config/sidebarMenu.js | 0 .../ManualJournalActionsBar.js | 0 .../JournalsLanding/ManualJournalsAlerts.js | 0 .../ManualJournalsDataTable.js | 0 .../ManualJournalsEmptyStatus.js | 0 .../JournalsLanding/ManualJournalsList.js | 0 .../ManualJournalsListProvider.js | 0 .../JournalsLanding/ManualJournalsViewTabs.js | 0 .../Accounting/JournalsLanding/components.js | 0 .../Accounting/JournalsLanding/utils.js | 0 .../JournalsLanding/withManualJournals.js | 0 .../withManualJournalsActions.js | 0 .../MakeJournal/MakeJournalEntries.schema.js | 0 .../MakeJournal/MakeJournalEntriesField.js | 0 .../MakeJournal/MakeJournalEntriesFooter.js | 0 .../MakeJournal/MakeJournalEntriesForm.js | 0 .../MakeJournal/MakeJournalEntriesHeader.js | 0 .../MakeJournalEntriesHeaderFields.js | 0 .../MakeJournal/MakeJournalEntriesPage.js | 0 .../MakeJournal/MakeJournalEntriesTable.js | 0 .../MakeJournal/MakeJournalFormDialogs.js | 0 .../MakeJournalFormFloatingActions.js | 0 .../MakeJournal/MakeJournalFormFooter.js | 0 .../MakeJournal/MakeJournalProvider.js | 0 .../Accounting/MakeJournal/components.js | 0 .../Accounting/MakeJournal/utils.js | 0 .../ManualJournalUniversalSearch.js | 0 .../Accounts/AccountUniversalSearch.js | 0 .../containers/Accounts/AccountsActionsBar.js | 0 .../containers/Accounts/AccountsAlerts.js | 0 .../containers/Accounts/AccountsChart.js | 0 .../Accounts/AccountsChartProvider.js | 0 .../containers/Accounts/AccountsDataTable.js | 0 .../containers/Accounts/AccountsViewsTabs.js | 0 .../containers/Accounts/components.js | 0 .../src => src}/containers/Accounts/utils.js | 0 .../containers/Accounts/withAccounts.js | 0 .../Accounts/withAccountsTableActions.js | 0 .../containers/Alert/withAlertActions.js | 0 .../containers/Alert/withAlertStoreConnect.js | 0 .../containers/Alerts/AccountActivateAlert.js | 0 .../Alerts/AccountBulkActivateAlert.js | 0 .../Alerts/AccountBulkDeleteAlert.js | 0 .../Alerts/AccountBulkInactivateAlert.js | 0 .../containers/Alerts/AccountDeleteAlert.js | 0 .../Alerts/AccountInactivateAlert.js | 0 .../Alerts/Bills/BillDeleteAlert.js | 0 .../Bills/BillLocatedLandedCostDeleteAlert.js | 0 .../containers/Alerts/Bills/BillOpenAlert.js | 0 .../Alerts/Contacts/ContactActivateAlert.js | 0 .../Alerts/Contacts/ContactInactivateAlert.js | 0 .../Alerts/Currencies/CurrencyDeleteAlert.js | 0 .../Customers/CustomerBulkDeleteAlert.js | 0 .../Alerts/Customers/CustomerDeleteAlert.js | 0 .../Alerts/Estimates/EstimateApproveAlert.js | 0 .../Alerts/Estimates/EstimateDeleteAlert.js | 0 .../Estimates/EstimateDeliveredAlert.js | 0 .../Alerts/Estimates/EstimateRejectAlert.js | 0 .../ExchangeRateBulkDeleteAlert.js | 0 .../ExchangeRates/ExchangeRateDeleteAlert.js | 0 .../Alerts/Expenses/ExpenseBulkDeleteAlert.js | 0 .../Alerts/Expenses/ExpenseDeleteAlert.js | 0 .../Expenses/ExpenseDeleteEntriesAlert.js | 0 .../Alerts/Expenses/ExpensePublishAlert.js | 0 .../Alerts/Invoices/InvoiceDeleteAlert.js | 0 .../Alerts/Invoices/InvoiceDeliverAlert.js | 0 .../Items/InventoryAdjustmentDeleteAlert.js | 0 .../Items/InventoryAdjustmentPublishAlert.js | 0 .../Alerts/Items/ItemActivateAlert.js | 0 .../Alerts/Items/ItemBulkDeleteAlert.js | 0 .../Items/ItemCategoryBulkDeleteAlert.js | 0 .../Alerts/Items/ItemCategoryDeleteAlert.js | 0 .../Alerts/Items/ItemDeleteAlert.js | 0 .../Alerts/Items/ItemInactivateAlert.js | 0 .../ItemsEntries/ItemsEntriesDeleteAlert.js | 0 .../ManualJournals/JournalBulkDeleteAlert.js | 0 .../ManualJournals/JournalDeleteAlert.js | 0 .../JournalDeleteEntriesAlert.js | 0 .../ManualJournals/JournalPublishAlert.js | 0 .../PaymentMades/ChangingFullAmountAlert.js | 0 .../PaymentMades/ClearTransactionAlert.js | 0 .../PaymentMades/ClearningAllLinesAlert.js | 0 .../PaymentMades/PaymentMadeDeleteAlert.js | 0 .../PaymentReceives/ClearingAllLinesAlert.js | 0 .../PaymentReceiveDeleteAlert.js | 0 .../Alerts/Receipts/ReceiptCloseAlert.js | 0 .../Alerts/Receipts/ReceiptDeleteAlert.js | 0 .../Alerts/Users/UserActivateAlert.js | 0 .../Alerts/Users/UserDeleteAlert.js | 0 .../Alerts/Users/UserInactivateAlert.js | 0 .../Alerts/Vendors/VendorDeleteAlert.js | 0 .../src => src}/containers/Alerts/index.js | 0 .../Authentication/AuthCopyright.js | 0 .../containers/Authentication/AuthInsider.js | 0 .../Authentication/AuthenticationBoot.js | 0 .../containers/Authentication/InviteAccept.js | 0 .../Authentication/InviteAcceptForm.js | 0 .../Authentication/InviteAcceptFormContent.js | 0 .../Authentication/InviteAcceptProvider.js | 0 .../containers/Authentication/Login.js | 0 .../containers/Authentication/LoginForm.js | 0 .../containers/Authentication/Register.js | 0 .../containers/Authentication/RegisterForm.js | 0 .../Authentication/ResetPassword.js | 0 .../Authentication/ResetPasswordForm.js | 0 .../Authentication/SendResetPassword.js | 0 .../Authentication/SendResetPasswordForm.js | 0 .../containers/Authentication/components.js | 0 .../containers/Authentication/utils.js | 0 .../Authentication/withAuthentication.js | 0 .../withAuthenticationActions.js | 0 .../containers/Currencies/withCurrencies.js | 0 .../Currencies/withCurrenciesActions.js | 0 .../Currencies/withCurrencyDetail.js | 0 .../CustomerForm/CustomerAddressTabs.js | 0 .../CustomerForm/CustomerAttachmentTabs.js | 0 .../CustomerForm/CustomerFinancialPanel.js | 0 .../CustomerForm/CustomerFloatingActions.js | 0 .../Customers/CustomerForm/CustomerForm.js | 0 .../CustomerForm/CustomerForm.schema.js | 0 .../CustomerFormAfterPrimarySection.js | 0 .../CustomerForm/CustomerFormPage.js | 0 .../CustomerFormPrimarySection.js | 0 .../CustomerForm/CustomerFormProvider.js | 0 .../CustomerForm/CustomerNotePanel.js | 0 .../CustomerForm/CustomerTypeRadioField.js | 0 .../Customers/CustomerForm/CustomersTabs.js | 0 .../containers/Customers/CustomersAlerts.js | 0 .../CustomersLanding/CustomersActionsBar.js | 0 .../CustomersLanding/CustomersEmptyStatus.js | 0 .../CustomersLanding/CustomersList.js | 0 .../CustomersLanding/CustomersListProvider.js | 0 .../CustomersLanding/CustomersTable.js | 0 .../CustomersLanding/CustomersViewsTabs.js | 0 .../Customers/CustomersLanding/components.js | 0 .../Customers/CustomersLanding/utils.js | 0 .../CustomersLanding/withCustomers.js | 0 .../CustomersLanding/withCustomersActions.js | 0 .../Customers/CustomersUniversalSearch.js | 0 .../src => src}/containers/Customers/utils.js | 0 .../Customers/withCustomerDetail.js | 0 .../containers/Dashboard/withDashboard.js | 0 .../Dashboard/withDashboardActions.js | 0 .../containers/Dialog/withDialogActions.js | 0 .../AccountDialog/AccountDialogContent.js | 0 .../AccountDialog/AccountDialogForm.js | 0 .../AccountDialog/AccountDialogFormContent.js | 0 .../AccountDialog/AccountDialogProvider.js | 0 .../AccountDialog/AccountForm.schema.js | 0 .../containers/Dialogs/AccountDialog/index.js | 0 .../containers/Dialogs/AccountDialog/utils.js | 0 .../AllocateLandedCostDialogContent.js | 0 .../AllocateLandedCostDialogProvider.js | 0 .../AllocateLandedCostEntriesTable.js | 0 .../AllocateLandedCostFloatingActions.js | 0 .../AllocateLandedCostForm.js | 0 .../AllocateLandedCostForm.schema.js | 0 .../AllocateLandedCostFormBody.js | 0 .../AllocateLandedCostFormContent.js | 0 .../AllocateLandedCostFormFields.js | 0 .../Dialogs/AllocateLandedCostDialog/index.js | 0 .../Dialogs/AllocateLandedCostDialog/utils.js | 0 .../BillNumberDialogContent.js | 0 .../Dialogs/BillNumberDialog/index.js | 0 .../ContactDuplicateDialogContent.js | 0 .../ContactDuplicateForm.js | 0 .../ContactDuplicateProvider.js | 0 .../Dialogs/ContactDuplicateDialog/index.js | 0 .../CurrencyFormDialog/CurrencyForm.js | 0 .../CurrencyFormDialog/CurrencyForm.schema.js | 0 .../CurrencyFormDialog/CurrencyFormContent.js | 0 .../CurrencyFormDialogContent.js | 0 .../CurrencyFormDialog/CurrencyFormFields.js | 0 .../CurrencyFormDialog/CurrencyFormFooter.js | 0 .../CurrencyFormProvider.js | 0 .../Dialogs/CurrencyFormDialog/index.js | 0 .../EstimateNumberDialogContent.js | 0 .../Dialogs/EstimateNumberDialog/index.js | 0 .../EstimatePdfPreviewDialogContent.js | 0 .../Dialogs/EstimatePdfPreviewDialog/index.js | 0 .../ExchangeRateForm.js | 0 .../ExchangeRateForm.schema.js | 0 .../ExchangeRateFormContent.js | 0 .../ExchangeRateFormDialogContent.js | 0 .../ExchangeRateFormFields.js | 0 .../ExchangeRateFormFooter.js | 0 .../ExchangeRateFormProvider.js | 0 .../Dialogs/ExchangeRateFormDialog/index.js | 0 .../containers/Dialogs/ExportDialog.js | 0 .../containers/Dialogs/ImportDialog.js | 0 .../DecrementAdjustmentFields.js | 0 .../IncrementAdjustmentFields.js | 0 .../InventoryAdjustmentFloatingActions.js | 0 .../InventoryAdjustmentForm.js | 0 .../InventoryAdjustmentForm.schema.js | 0 .../InventoryAdjustmentFormContent.js | 0 .../InventoryAdjustmentFormDialogContent.js | 0 .../InventoryAdjustmentFormDialogFields.js | 0 .../InventoryAdjustmentFormProvider.js | 0 .../InventoryAdjustmentQuantityFields.js | 0 .../InventoryAdjustmentFormDialog/index.js | 0 .../InventoryAdjustmentFormDialog/utils.js | 0 .../InviteUserDialog.schema.js | 0 .../InviteUserDialogContent.js | 0 .../InviteUserDialog/InviteUserForm.js | 0 .../InviteUserDialog/InviteUserFormContent.js | 0 .../InviteUserFormProvider.js | 0 .../Dialogs/InviteUserDialog/index.js | 0 .../Dialogs/InviteUserDialog/utils.js | 0 .../InvoiceNumberDialogContent.js | 0 .../InvoiceNumberDialogProvider.js | 0 .../Dialogs/InvoiceNumberDialog/index.js | 0 .../InvoicePdfPreviewDialogContent.js | 0 .../Dialogs/InvoicePdfPreviewDialog/index.js | 0 .../ItemCategoryDialog/ItemCategoryForm.js | 0 .../ItemCategoryFormContent.js | 0 .../ItemCategoryFormDialogContent.js | 0 .../ItemCategoryFormFields.js | 0 .../ItemCategoryFormFooter.js | 0 .../ItemCategoryProvider.js | 0 .../Dialogs/ItemCategoryDialog/index.js | 0 .../itemCategoryForm.schema.js | 0 .../JournalNumberDialogContent.js | 0 .../Dialogs/JournalNumberDialog/index.js | 0 .../PaymentReceiveNumberDialogContent.js | 0 .../PaymentReceiveNumberDialog/index.js | 0 .../PaymentViaVoucherDialogContent.js | 0 .../PaymentViaVoucherForm.js | 0 .../Dialogs/PaymentViaVoucherDialog/index.js | 0 .../QuickPaymentMade.schema.js | 0 .../QuickPaymentMadeFloatingActions.js | 0 .../QuickPaymentMadeForm.js | 0 .../QuickPaymentMadeFormContent.js | 0 .../QuickPaymentMadeFormDialogContent.js | 0 .../QuickPaymentMadeFormFields.js | 0 .../QuickPaymentMadeFormProvider.js | 0 .../QuickPaymentMadeFormDialog/index.js | 0 .../QuickPaymentMadeFormDialog/utils.js | 0 .../QuickPaymentReceive.schema.js | 0 .../QuickPaymentReceiveFloatingActions.js | 0 .../QuickPaymentReceiveForm.js | 0 .../QuickPaymentReceiveFormContent.js | 0 .../QuickPaymentReceiveFormDialogContent.js | 0 .../QuickPaymentReceiveFormFields.js | 0 .../QuickPaymentReceiveFormProvider.js | 0 .../QuickPaymentReceiveFormDialog/index.js | 0 .../QuickPaymentReceiveFormDialog/utils.js | 0 .../ReceiptNumberDialogContent.js | 0 .../Dialogs/ReceiptNumberDialog/index.js | 0 .../ReceiptPdfPreviewDialogContent.js | 0 .../Dialogs/ReceiptPdfPreviewDialog/index.js | 0 .../Dialogs/UserFormDialog.connector.js | 0 .../Dialogs/UserFormDialog/UserForm.js | 0 .../Dialogs/UserFormDialog/UserForm.schema.js | 0 .../Dialogs/UserFormDialog/UserFormContent.js | 0 .../UserFormDialog/UserFormDialogContent.js | 0 .../UserFormDialog/UserFormProvider.js | 0 .../Dialogs/UserFormDialog/index.js | 0 .../Dialogs/UsersListDialog.connector.js | 0 .../KeyboardShortcutsDialogContent.js | 0 .../KeyboardShortcutsFooter.js | 0 .../Dialogs/keyboardShortcutsDialog/index.js | 0 .../containers/Drawer/withDrawerActions.js | 0 .../containers/Drawer/withDrawers.js | 0 .../AccountDrawer/AccountDrawerActionBar.js | 0 .../AccountDrawer/AccountDrawerContent.js | 0 .../AccountDrawer/AccountDrawerDetails.js | 0 .../AccountDrawer/AccountDrawerHeader.js | 0 .../AccountDrawer/AccountDrawerProvider.js | 0 .../AccountDrawer/AccountDrawerTable.js | 0 .../containers/Drawers/AccountDrawer/index.js | 0 .../containers/Drawers/AccountDrawer/utils.js | 0 .../BillDrawer/BillDetailActionsBar.js | 0 .../Drawers/BillDrawer/BillDetailFooter.js | 0 .../Drawers/BillDrawer/BillDetailHeader.js | 0 .../Drawers/BillDrawer/BillDetailTab.js | 0 .../Drawers/BillDrawer/BillDetailTable.js | 0 .../Drawers/BillDrawer/BillDrawerAlerts.js | 0 .../Drawers/BillDrawer/BillDrawerContent.js | 0 .../Drawers/BillDrawer/BillDrawerDetails.js | 0 .../Drawers/BillDrawer/BillDrawerProvider.js | 0 .../BillDrawer/LocatedLandedCostTable.js | 0 .../Drawers/BillDrawer/components.js | 0 .../containers/Drawers/BillDrawer/index.js | 0 .../containers/Drawers/BillDrawer/utils.js | 0 .../ContactDetailDrawer/ContactDetail.js | 0 .../ContactDetailActionsBar.js | 0 .../ContactDetailDrawerContent.js | 0 .../ContactDetailDrawerProvider.js | 0 .../ContactDetailDrawer/ContactDetailList.js | 0 .../Drawers/ContactDetailDrawer/index.js | 0 .../CustomerDetailsDrawer/CustomerDetails.js | 0 .../CustomerDetailsActionsBar.js | 0 .../CustomerDetailsDrawer.module.scss | 0 .../CustomerDetailsDrawerContent.js | 0 .../CustomerDetailsDrawerProvider.js | 0 .../CustomerDetailsHeader.js | 0 .../Drawers/CustomerDetailsDrawer/index.js | 0 .../EstimateDetailDrawer/EstimateDetail.js | 0 .../EstimateDetailActionsBar.js | 0 .../EstimateDetailDrawerContent.js | 0 .../EstimateDetailDrawerProvider.js | 0 .../EstimateDetailFooter.js | 0 .../EstimateDetailHeader.js | 0 .../EstimateDetailPanel.js | 0 .../EstimateDetailTable.js | 0 .../EstimateDrawerClasses.js | 0 .../Drawers/EstimateDetailDrawer/index.js | 0 .../Drawers/EstimateDetailDrawer/utils.js | 0 .../ExpenseDrawer/ExpenseDrawerActionBar.js | 0 .../ExpenseDrawer/ExpenseDrawerContent.js | 0 .../ExpenseDrawer/ExpenseDrawerDetails.js | 0 .../ExpenseDrawer/ExpenseDrawerFooter.js | 0 .../ExpenseDrawer/ExpenseDrawerHeader.js | 0 .../ExpenseDrawer/ExpenseDrawerProvider.js | 0 .../ExpenseDrawer/ExpenseDrawerTable.js | 0 .../containers/Drawers/ExpenseDrawer/index.js | 0 .../containers/Drawers/ExpenseDrawer/utils.js | 0 .../InventoryAdjustmentDetail.js | 0 .../InventoryAdjustmentDetailActionsBar.js | 0 .../InventoryAdjustmentDetailHeader.js | 0 .../InventoryAdjustmentDetailTable.js | 0 .../InventoryAdjustmentDrawerContent.js | 0 .../InventoryAdjustmentDrawerProvider.js | 0 .../InventoryAdjustmentDetailDrawer/index.js | 0 .../InventoryAdjustmentDetailDrawer/utils.js | 0 .../InvoiceDetailDrawer/InvoiceDetail.js | 0 .../InvoiceDetailActionsBar.js | 0 .../InvoiceDetailDrawerContent.js | 0 .../InvoiceDetailDrawerProvider.js | 0 .../InvoiceDetailFooter.js | 0 .../InvoiceDetailHeader.js | 0 .../InvoiceDetailDrawer/InvoiceDetailTab.js | 0 .../InvoiceDetailDrawer/InvoiceDetailTable.js | 0 .../Drawers/InvoiceDetailDrawer/index.js | 0 .../Drawers/InvoiceDetailDrawer/utils.js | 0 .../ItemDetailDrawer/ItemContentDetails.js | 0 .../ItemDetailDrawer/ItemDetailActionsBar.js | 0 .../ItemDetailDrawerContent.js | 0 .../ItemDetailDrawerProvider.js | 0 .../ItemDetailDrawer/ItemDetailHeader.js | 0 .../Drawers/ItemDetailDrawer/index.js | 0 .../ManualJournalDrawerActionBar.js | 0 .../ManualJournalDrawerContent.js | 0 .../ManualJournalDrawerDetails.js | 0 .../ManualJournalDrawerFooter.js | 0 .../ManualJournalDrawerHeader.js | 0 .../ManualJournalDrawerProvider.js | 0 .../ManualJournalDrawerTable.js | 0 .../Drawers/ManualJournalDrawer/index.js | 0 .../Drawers/ManualJournalDrawer/utils.js | 0 .../Drawers/PaperTemplate/PaperTemplate.js | 0 .../PaperTemplate/PaperTemplateFooter.js | 0 .../PaperTemplate/PaperTemplateHeader.js | 0 .../PaperTemplate/PaperTemplateTable.js | 0 .../PaymentMadeDetailActionsBar.js | 0 .../PaymentMadeDetailContent.js | 0 .../PaymentMadeDetailFooter.js | 0 .../PaymentMadeDetailHeader.js | 0 .../PaymentMadeDetailProvider.js | 0 .../PaymentMadeDetailTab.js | 0 .../PaymentMadeDetailTable.js | 0 .../PaymentMadeDetails.js | 0 .../PaymentMadeDrawer.module.scss | 0 .../Drawers/PaymentMadeDetailDrawer/index.js | 0 .../Drawers/PaymentMadeDetailDrawer/utils.js | 0 .../PaymentPaperTemplate.js | 0 .../PaymentPaperTemplateHeader.js | 0 .../PaymentPaperTemplateTable.js | 0 .../PaymentReceiveActionsBar.js | 0 .../PaymentReceiveDetail.js | 0 .../PaymentReceiveDetailContent.js | 0 .../PaymentReceiveDetailFooter.js | 0 .../PaymentReceiveDetailHeader.js | 0 .../PaymentReceiveDetailProvider.js | 0 .../PaymentReceiveDetailTab.js | 0 .../PaymentReceiveDetailTable.js | 0 .../PaymentReceiveDrawer.module.scss | 0 .../PaymentReceiveDetailDrawer/index.js | 0 .../PaymentReceiveDetailDrawer/utils.js | 0 .../ReceiptDetailDrawer/ReceiptDetail.js | 0 .../ReceiptDetailActionBar.js | 0 .../ReceiptDetailDrawerContent.js | 0 .../ReceiptDetailDrawerProvider.js | 0 .../ReceiptDetailFooter.js | 0 .../ReceiptDetailHeader.js | 0 .../ReceiptDetailDrawer/ReceiptDetailTab.js | 0 .../ReceiptDetailDrawer/ReceiptDetailTable.js | 0 .../Drawers/ReceiptDetailDrawer/index.js | 0 .../Drawers/ReceiptDetailDrawer/utils.js | 0 .../VendorDetailsDrawer/VendorDetails.js | 0 .../VendorDetailsActionsBar.js | 0 .../VendorDetailsDrawer.module.scss | 0 .../VendorDetailsDrawerContent.js | 0 .../VendorDetailsDrawerProvider.js | 0 .../VendorDetailsHeader.js | 0 .../Drawers/VendorDetailsDrawer/index.js | 0 .../containers/Drawers/components.js | 0 .../containers/Entries/ItemsEntriesTable.js | 0 .../containers/Entries/components.js | 0 .../src => src}/containers/Entries/utils.js | 0 .../ExchangeRates/ExchangeRateActionsBar.js | 0 .../ExchangeRates/ExchangeRateTable.js | 0 .../ExchangeRates/ExchangeRatesAlerts.js | 0 .../ExchangeRates/ExchangeRatesList.js | 0 .../ExchangeRates/ExchangeRatesProvider.js | 0 .../containers/ExchangeRates/components.js | 0 .../ExchangeRates/withExchangeRateDetail.js | 0 .../ExchangeRates/withExchangeRates.js | 0 .../ExchangeRates/withExchangeRatesActions.js | 0 .../ExpenseForm/ExpenseFloatingActions.js | 0 .../Expenses/ExpenseForm/ExpenseForm.js | 0 .../ExpenseForm/ExpenseForm.schema.js | 0 .../Expenses/ExpenseForm/ExpenseFormBody.js | 0 .../ExpenseForm/ExpenseFormEntriesField.js | 0 .../ExpenseForm/ExpenseFormEntriesTable.js | 0 .../Expenses/ExpenseForm/ExpenseFormFooter.js | 0 .../Expenses/ExpenseForm/ExpenseFormHeader.js | 0 .../ExpenseForm/ExpenseFormHeaderFields.js | 0 .../Expenses/ExpenseForm/ExpenseFormPage.js | 0 .../ExpenseForm/ExpenseFormPageProvider.js | 0 .../Expenses/ExpenseForm/components.js | 0 .../containers/Expenses/ExpenseForm/utils.js | 0 .../Expenses/ExpenseUniversalSearch.js | 0 .../containers/Expenses/ExpensesAlerts.js | 0 .../ExpensesLanding/ExpenseActionsBar.js | 0 .../ExpensesLanding/ExpenseDataTable.js | 0 .../ExpensesLanding/ExpenseViewTabs.js | 0 .../ExpensesLanding/ExpensesEmptyStatus.js | 0 .../Expenses/ExpensesLanding/ExpensesList.js | 0 .../ExpensesLanding/ExpensesListProvider.js | 0 .../Expenses/ExpensesLanding/components.js | 0 .../Expenses/ExpensesLanding/withExpenses.js | 0 .../ExpensesLanding/withExpensesActions.js | 0 .../containers/Expenses/withExpenseDetail.js | 0 .../APAgingSummary/APAgingSummary.js | 0 .../APAgingSummaryActionsBar.js | 0 .../APAgingSummaryGeneralProvider.js | 0 .../APAgingSummary/APAgingSummaryHeader.js | 0 .../APAgingSummaryHeaderGeneral.js | 0 .../APAgingSummaryHeaderGeneralContent.js | 0 .../APAgingSummary/APAgingSummaryProvider.js | 0 .../APAgingSummary/APAgingSummaryTable.js | 0 .../APAgingSummary/common.js | 0 .../APAgingSummary/components.js | 0 .../APAgingSummary/withAPAgingSummary.js | 0 .../withAPAgingSummaryActions.js | 0 .../ARAgingSummary/ARAgingSummary.js | 0 .../ARAgingSummaryActionsBar.js | 0 .../ARAgingSummaryGeneralProvider.js | 0 .../ARAgingSummary/ARAgingSummaryHeader.js | 0 .../ARAgingSummaryHeaderGeneral.js | 0 .../ARAgingSummaryHeaderGeneralContent.js | 0 .../ARAgingSummary/ARAgingSummaryProvider.js | 0 .../ARAgingSummary/ARAgingSummaryTable.js | 0 .../ARAgingSummary/common.js | 0 .../ARAgingSummary/components.js | 0 .../ARAgingSummary/withARAgingSummary.js | 0 .../withARAgingSummaryActions.js | 0 .../BalanceSheet/BalanceSheet.js | 0 .../BalanceSheet/BalanceSheetActionsBar.js | 0 .../BalanceSheet/BalanceSheetHeader.js | 0 .../BalanceSheetHeaderGeneralPanal.js | 0 .../BalanceSheet/BalanceSheetProvider.js | 0 .../BalanceSheet/BalanceSheetTable.js | 0 .../BalanceSheet/components.js | 0 .../FinancialStatements/BalanceSheet/utils.js | 0 .../BalanceSheet/withBalanceSheet.js | 0 .../BalanceSheet/withBalanceSheetActions.js | 0 .../CashFlowStatement/CashFlowStatement.js | 0 .../CashFlowStatementActionsBar.js | 0 .../CashFlowStatementGeneralPanel.js | 0 .../CashFlowStatementHeader.js | 0 .../CashFlowStatementProvider.js | 0 .../CashFlowStatementTable.js | 0 .../CashFlowStatement/components.js | 0 .../CashFlowStatement/utils.js | 0 .../withCashFlowStatement.js | 0 .../withCashFlowStatementActions.js | 0 .../CustomersBalanceSummary.js | 0 .../CustomersBalanceSummaryActionsBar.js | 0 .../CustomersBalanceSummaryGeneralPanel.js | 0 ...tomersBalanceSummaryGeneralPanelContent.js | 0 .../CustomersBalanceSummaryGeneralProvider.js | 0 .../CustomersBalanceSummaryHeader.js | 0 .../CustomersBalanceSummaryProvider.js | 0 .../CustomersBalanceSummaryTable.js | 0 .../CustomersBalanceSummary/components.js | 0 .../withCustomersBalanceSummary.js | 0 .../withCustomersBalanceSummaryActions.js | 0 .../CustomersTransactions.js | 0 .../CustomersTransactionsActionsBar.js | 0 .../CustomersTransactionsHeader.js | 0 ...CustomersTransactionsHeaderGeneralPanel.js | 0 ...sTransactionsHeaderGeneralPanelProvider.js | 0 .../CustomersTransactionsProvider.js | 0 .../CustomersTransactionsTable.js | 0 .../CustomersTransactions/components.js | 0 .../withCustomersTransactions.js | 0 .../withCustomersTransactionsActions.js | 0 .../FinancialAccountsFilter.js | 0 .../FinancialHeaderLoadingSkeleton.js | 0 ...FinancialHeaderLoadingSkeleton.module.scss | 0 .../FinancialLoadingBar.js | 0 .../FinancialReportPage.js | 0 .../FinancialStatements/FinancialReports.js | 0 .../FinancialStatementDateRange.js | 0 .../FinancialStatementHeader.js | 0 .../FinancialStatements.js | 0 .../GLHeaderGeneralPaneProvider.js | 0 .../GeneralLedger/GeneralLedger.js | 0 .../GeneralLedger/GeneralLedgerActionsBar.js | 0 .../GeneralLedger/GeneralLedgerHeader.js | 0 .../GeneralLedgerHeaderGeneralPane.js | 0 .../GeneralLedger/GeneralLedgerProvider.js | 0 .../GeneralLedger/GeneralLedgerTable.js | 0 .../GeneralLedger/common.js | 0 .../GeneralLedger/components.js | 0 .../GeneralLedger/withGeneralLedger.js | 0 .../GeneralLedger/withGeneralLedgerActions.js | 0 .../InventoryItemDetails.js | 0 .../InventoryItemDetailsActionsBar.js | 0 .../InventoryItemDetailsHeader.js | 0 .../InventoryItemDetailsHeaderGeneralPanel.js | 0 ...ventoryItemDetailsHeaderGeneralProvider.js | 0 .../InventoryItemDetailsProvider.js | 0 .../InventoryItemDetailsTable.js | 0 .../InventoryItemDetails/components.js | 0 .../InventoryItemDetails/utils.js | 0 .../withInventoryItemDetails.js | 0 .../withInventoryItemDetailsActions.js | 0 .../InventoryValuation/InventoryValuation.js | 0 .../InventoryValuationActionsBar.js | 0 .../InventoryValuationHeader.js | 0 .../InventoryValuationHeaderGeneralPanel.js | 0 ...toryValuationHeaderGeneralPanelProvider.js | 0 .../InventoryValuationProvider.js | 0 .../InventoryValuationTable.js | 0 .../InventoryValuation/components.js | 0 .../withInventoryValuation.js | 0 .../withInventoryValuationActions.js | 0 .../FinancialStatements/Journal/Journal.js | 0 .../Journal/JournalActionsBar.js | 0 .../Journal/JournalHeader.js | 0 .../Journal/JournalProvider.js | 0 .../Journal/JournalSheetHeaderGeneral.js | 0 .../Journal/JournalTable.js | 0 .../FinancialStatements/Journal/components.js | 0 .../Journal/withJournal.js | 0 .../Journal/withJournalActions.js | 0 .../FinancialStatements/LedgerSheet.js | 0 .../ProfitLossSheet/ProfitLossActionsBar.js | 0 .../ProfitLossSheet/ProfitLossProvider.js | 0 .../ProfitLossSheet/ProfitLossSheet.js | 0 .../ProfitLossSheet/ProfitLossSheetHeader.js | 0 .../ProfitLossSheetHeaderGeneralPane.js | 0 .../ProfitLossSheet/ProfitLossSheetTable.js | 0 .../ProfitLossSheet/components.js | 0 .../ProfitLossSheet/withProfitLoss.js | 0 .../ProfitLossSheet/withProfitLossActions.js | 0 .../PurchasesByItems/PurchasesByItems.js | 0 .../PurchasesByItemsActionsBar.js | 0 .../PurchasesByItemsGeneralPanel.js | 0 .../PurchasesByItemsGeneralPanelProvider.js | 0 .../PurchasesByItemsHeader.js | 0 .../PurchasesByItemsProvider.js | 0 .../PurchasesByItems/PurchasesByItemsTable.js | 0 .../PurchasesByItems/components.js | 0 .../PurchasesByItems/withPurchasesByItems.js | 0 .../withPurchasesByItemsActions.js | 0 .../RadiosAccountingBasis.js | 0 .../SalesByItems/SalesByItemProvider.js | 0 .../SalesByItems/SalesByItems.js | 0 .../SalesByItems/SalesByItemsActionsBar.js | 0 .../SalesByItems/SalesByItemsHeader.js | 0 .../SalesByItemsHeaderGeneralPanel.js | 0 .../SalesByItemsHeaderGeneralPanelProvider.js | 0 .../SalesByItems/SalesByItemsTable.js | 0 .../SalesByItems/components.js | 0 .../SalesByItems/withSalesByItems.js | 0 .../SalesByItems/withSalesByItemsActions.js | 0 .../SelectDisplayColumnsBy.js | 0 .../TrialBalanceActionsBar.js | 0 .../TrialBalanceSheet/TrialBalanceProvider.js | 0 .../TrialBalanceSheet/TrialBalanceSheet.js | 0 .../TrialBalanceSheetHeader.js | 0 .../TrialBalanceSheetHeaderGeneralPanel.js | 0 .../TrialBalanceSheetTable.js | 0 .../TrialBalanceSheet/components.js | 0 .../TrialBalanceSheet/withTrialBalance.js | 0 .../withTrialBalanceActions.js | 0 .../VendorsBalanceSummary.js | 0 .../VendorsBalanceSummaryActionsBar.js | 0 .../VendorsBalanceSummaryHeader.js | 0 .../VendorsBalanceSummaryHeaderGeneral.js | 0 ...ndorsBalanceSummaryHeaderGeneralContent.js | 0 ...dorsBalanceSummaryHeaderGeneralProvider.js | 0 .../VendorsBalanceSummaryProvider.js | 0 .../VendorsBalanceSummaryTable.js | 0 .../VendorsBalanceSummary/components.js | 0 .../withVendorsBalanceSummary.js | 0 .../withVendorsBalanceSummaryActions.js | 0 .../VendorsTransactions.js | 0 .../VendorsTransactionsActionsBar.js | 0 .../VendorsTransactionsHeader.js | 0 .../VendorsTransactionsHeaderGeneralPanel.js | 0 ...sTransactionsHeaderGeneralPanelProvider.js | 0 .../VendorsTransactionsProvider.js | 0 .../VendorsTransactionsTable.js | 0 .../VendorsTransactions/components.js | 0 .../withVendorsTransaction.js | 0 .../withVendorsTransactionsActions.js | 0 .../containers/FinancialStatements/common.js | 0 .../FinancialStatements/reducers.js | 0 .../containers/GlobalErrors/GlobalErrors.js | 0 .../GlobalErrors/withGlobalErrors.js | 0 .../GlobalErrors/withGlobalErrorsActions.js | 0 .../Homepage/AccountsPayableSection.js | 0 .../Homepage/AccountsReceivableSection.js | 0 .../containers/Homepage/AnnouncementList.js | 0 .../Homepage/FinancialAccountingSection.js | 0 .../containers/Homepage/Homepage.js | 0 .../containers/Homepage/HomepageContent.js | 0 .../Homepage/ProductsServicesSection.js | 0 .../Homepage/ShortcutBoxesSection.js | 0 .../InventoryAdjustmentList.js | 0 .../InventoryAdjustmentTable.js | 0 .../InventoryAdjustmentView.js | 0 .../InventoryAdjustmentsAlerts.js | 0 .../InventoryAdjustmentsProvider.js | 0 .../InventoryAdjustments/components.js | 0 .../withInventoryAdjustmentActions.js | 0 .../withInventoryAdjustments.js | 0 .../src => src}/containers/Items/ItemForm.js | 0 .../containers/Items/ItemForm.schema.js | 0 .../containers/Items/ItemFormBody.js | 0 .../Items/ItemFormFloatingActions.js | 0 .../Items/ItemFormInventorySection.js | 0 .../containers/Items/ItemFormPage.js | 0 .../Items/ItemFormPrimarySection.js | 0 .../containers/Items/ItemFormProvider.js | 0 .../containers/Items/ItemsActionsBar.js | 0 .../containers/Items/ItemsAlerts.js | 0 .../containers/Items/ItemsDataTable.js | 0 .../containers/Items/ItemsEmptyStatus.js | 0 .../containers/Items/ItemsFooter.js | 0 .../src => src}/containers/Items/ItemsList.js | 0 .../containers/Items/ItemsListProvider.js | 0 .../containers/Items/ItemsUniversalSearch.js | 0 .../containers/Items/ItemsViewsTabs.js | 0 .../containers/Items/components.js | 0 {client/src => src}/containers/Items/utils.js | 0 .../src => src}/containers/Items/withItem.js | 0 .../src => src}/containers/Items/withItems.js | 0 .../containers/Items/withItemsActions.js | 0 .../ItemsCategories/ItemCategoriesList.js | 0 .../ItemsCategories/ItemCategoriesTable.js | 0 .../ItemsCategories/ItemsCategoriesAlerts.js | 0 .../ItemsCategoriesProvider.js | 0 .../ItemsCategoryActionsBar.js | 0 .../containers/ItemsCategories/components.js | 0 .../ItemsCategories/withItemCategories.js | 0 .../withItemCategoriesActions.js | 0 .../ItemsCategories/withItemCategoryDetail.js | 0 .../JournalEntriesTable.js | 0 .../JournalNumber/ReferenceNumberForm.js | 0 .../ReferenceNumberFormContent.js | 0 .../containers/JournalNumber/utils.js | 0 .../KeyboardShortcuts/ShortcutsTable.js | 0 .../containers/Media/withMediaActions.js | 0 .../Organization/withCurrentOrganization.js | 0 .../Organization/withOrganization.js | 0 .../Organization/withOrganizationActions.js | 0 .../Preferences/Accountant/Accountant.js | 0 .../Accountant/Accountant.schema.js | 0 .../Preferences/Accountant/AccountantForm.js | 0 .../Accountant/AccountantFormPage.js | 0 .../Accountant/AccountantFormProvider.js | 0 .../Preferences/Accountant/utils.js | 0 .../Preferences/Accounts/Accounts.js | 0 .../Accounts/AccountsCustomFields.js | 0 .../Preferences/Accounts/AccountsGeneral.js | 0 .../Preferences/Currencies/Currencies.js | 0 .../Currencies/CurrenciesActions.js | 0 .../Currencies/CurrenciesAlerts.js | 0 .../Currencies/CurrenciesDataTable.js | 0 .../Preferences/Currencies/CurrenciesList.js | 0 .../Currencies/CurrenciesProvider.js | 0 .../Preferences/Currencies/components.js | 0 .../containers/Preferences/DefaultRoute.js | 0 .../containers/Preferences/General/General.js | 0 .../Preferences/General/General.schema.js | 0 .../Preferences/General/GeneralForm.js | 0 .../Preferences/General/GeneralFormPage.js | 0 .../General/GeneralFormProvider.js | 0 .../containers/Preferences/General/utils.js | 0 .../Item/ItemPreferences.schema.js | 0 .../Preferences/Item/ItemPreferencesForm.js | 0 .../Item/ItemPreferencesFormPage.js | 0 .../Item/ItemPreferencesFormProvider.js | 0 .../containers/Preferences/Item/index.js | 0 .../Preferences/PreferencesPageLoader.js | 0 .../containers/Preferences/Users/RolesList.js | 0 .../containers/Preferences/Users/Users.js | 0 .../Preferences/Users/UsersActions.js | 0 .../Preferences/Users/UsersAlerts.js | 0 .../Preferences/Users/UsersDataTable.js | 0 .../containers/Preferences/Users/UsersList.js | 0 .../Preferences/Users/UsersProvider.js | 0 .../Preferences/Users/components.js | 0 .../Preferences/Users/withUserPreferences.js | 0 .../Bills/BillForm/BillFloatingActions.js | 0 .../Purchases/Bills/BillForm/BillForm.js | 0 .../Bills/BillForm/BillForm.schema.js | 0 .../Bills/BillForm/BillFormFooter.js | 0 .../Bills/BillForm/BillFormHeader.js | 0 .../Bills/BillForm/BillFormHeaderFields.js | 0 .../Purchases/Bills/BillForm/BillFormPage.js | 0 .../Bills/BillForm/BillFormProvider.js | 0 .../Bills/BillForm/BillItemsEntriesEditor.js | 0 .../Purchases/Bills/BillForm/utils.js | 0 .../Purchases/Bills/BillUniversalSearch.js | 0 .../Bills/BillsLanding/BillsActionsBar.js | 0 .../Bills/BillsLanding/BillsAlerts.js | 0 .../Bills/BillsLanding/BillsEmptyStatus.js | 0 .../Purchases/Bills/BillsLanding/BillsList.js | 0 .../Bills/BillsLanding/BillsListProvider.js | 0 .../Bills/BillsLanding/BillsTable.js | 0 .../Bills/BillsLanding/BillsViewsTabs.js | 0 .../Bills/BillsLanding/components.js | 0 .../Purchases/Bills/BillsLanding/withBills.js | 0 .../Bills/BillsLanding/withBillsActions.js | 0 .../PaymentForm/PaymentMadeEntriesTable.js | 0 .../PaymentForm/PaymentMadeFloatingActions.js | 0 .../PaymentForm/PaymentMadeFooter.js | 0 .../PaymentForm/PaymentMadeForm.js | 0 .../PaymentForm/PaymentMadeForm.schema.js | 0 .../PaymentForm/PaymentMadeFormBody.js | 0 .../PaymentForm/PaymentMadeFormHeader.js | 0 .../PaymentMadeFormHeaderFields.js | 0 .../PaymentForm/PaymentMadeFormPage.js | 0 .../PaymentForm/PaymentMadeFormProvider.js | 0 .../PaymentForm/PaymentMadeInnerProvider.js | 0 .../PaymentMades/PaymentForm/components.js | 0 .../PaymentMades/PaymentForm/utils.js | 0 .../PaymentMadeUniversalSearch.js | 0 .../PaymentMades/PaymentMadesAlerts.js | 0 .../PaymentsLanding/PaymentMadeActionsBar.js | 0 .../PaymentsLanding/PaymentMadeList.js | 0 .../PaymentsLanding/PaymentMadeViewTabs.js | 0 .../PaymentMadesEmptyStatus.js | 0 .../PaymentMadesListProvider.js | 0 .../PaymentsLanding/PaymentMadesTable.js | 0 .../PaymentsLanding/PaymentMadesView.js | 0 .../PaymentMdesListProvider.js | 0 .../PaymentsLanding/components.js | 0 .../PaymentMades/PaymentsLanding/utils.js | 0 .../PaymentsLanding/withPaymentMade.js | 0 .../PaymentsLanding/withPaymentMadeActions.js | 0 .../PaymentsLanding/withPaymentMadeDetail.js | 0 .../QuickNewDropdown/QuickNewDropdown.js | 0 .../Resources/withResourceDetails.js | 0 .../Resources/withResourcesActions.js | 0 .../containers/Router/withRoute.js | 0 .../containers/Router/withRouteActions.js | 0 .../Sales/Estimate/EstimatesDataTable.js | 0 .../EstimateDetails/EstimateDrawer.js | 0 .../EstimateDetails/EstimateDrawerContent.js | 0 .../EstimateDetails/EstimateDrawerProvider.js | 0 .../EstimateDetails/EstimatePaper.js | 0 .../EstimateForm/EstimateFloatingActions.js | 0 .../Estimates/EstimateForm/EstimateForm.js | 0 .../EstimateForm/EstimateForm.schema.js | 0 .../EstimateForm/EstimateFormDialogs.js | 0 .../EstimateForm/EstimateFormFooter.js | 0 .../EstimateForm/EstimateFormHeader.js | 0 .../EstimateForm/EstimateFormHeaderFields.js | 0 .../EstimateForm/EstimateFormPage.js | 0 .../EstimateForm/EstimateFormProvider.js | 0 .../EstimateForm/EstimateItemsEntriesField.js | 0 .../Sales/Estimates/EstimateForm/utils.js | 0 .../Sales/Estimates/EstimatesAlerts.js | 0 .../EstimateUniversalSearch.js | 0 .../EstimatesLanding/EstimatesActionsBar.js | 0 .../EstimatesLanding/EstimatesDataTable.js | 0 .../EstimatesLanding/EstimatesEmptyStatus.js | 0 .../EstimatesLanding/EstimatesList.js | 0 .../EstimatesLanding/EstimatesListProvider.js | 0 .../EstimatesLanding/EstimatesViewTabs.js | 0 .../Estimates/EstimatesLanding/components.js | 0 .../EstimatesLanding/withEstimates.js | 0 .../EstimatesLanding/withEstimatesActions.js | 0 .../Sales/Estimates/withEstimateDetail.js | 0 .../Invoices/InvoiceDetails/InvoiceDrawer.js | 0 .../InvoiceDetails/InvoiceDrawerContent.js | 0 .../InvoiceDetails/InvoiceDrawerProvider.js | 0 .../Invoices/InvoiceDetails/InvoicePaper.js | 0 .../InvoiceForm/InvoiceFloatingActions.js | 0 .../Sales/Invoices/InvoiceForm/InvoiceForm.js | 0 .../InvoiceForm/InvoiceForm.schema.js | 0 .../InvoiceForm/InvoiceFormDialogs.js | 0 .../Invoices/InvoiceForm/InvoiceFormFooter.js | 0 .../Invoices/InvoiceForm/InvoiceFormHeader.js | 0 .../InvoiceForm/InvoiceFormHeaderFields.js | 0 .../Invoices/InvoiceForm/InvoiceFormPage.js | 0 .../InvoiceForm/InvoiceFormProvider.js | 0 .../InvoiceItemsEntriesEditorField.js | 0 .../Sales/Invoices/InvoiceForm/utils.js | 0 .../Sales/Invoices/InvoiceUniversalSearch.js | 0 .../Sales/Invoices/InvoicesAlerts.js | 0 .../InvoicesLanding/InvoiceViewTabs.js | 0 .../InvoicesLanding/InvoicesActionsBar.js | 0 .../InvoicesLanding/InvoicesDataTable.js | 0 .../InvoicesLanding/InvoicesEmptyStatus.js | 0 .../Invoices/InvoicesLanding/InvoicesList.js | 0 .../InvoicesLanding/InvoicesListProvider.js | 0 .../Invoices/InvoicesLanding/components.js | 0 .../InvoicesLanding/withInvoiceActions.js | 0 .../Invoices/InvoicesLanding/withInvoices.js | 0 .../PaymentDetails/PaymentReceiveDrawer.js | 0 .../PaymentReceiveDrawerContent.js | 0 .../PaymentReceiveDrawerProvider.js | 0 .../PaymentDetails/PaymentReceivePaper.js | 0 .../PaymentReceives/PaymentReceiveAlerts.js | 0 .../PaymentReceiveFloatingActions.js | 0 .../PaymentReceiveForm/PaymentReceiveForm.js | 0 .../PaymentReceiveForm.schema.js | 0 .../PaymentReceiveFormAlerts.js | 0 .../PaymentReceiveFormBody.js | 0 .../PaymentReceiveFormDialogs.js | 0 .../PaymentReceiveFormFooter.js | 0 .../PaymentReceiveFormHeader.js | 0 .../PaymentReceiveFormPage.js | 0 .../PaymentReceiveFormProvider.js | 0 .../PaymentReceiveHeaderFields.js | 0 .../PaymentReceiveInnerProvider.js | 0 .../PaymentReceiveItemsTable.js | 0 .../PaymentReceiveForm/components.js | 0 .../PaymentReceiveForm/utils.js | 0 .../PaymentReceiveUniversalSearch.js | 0 .../PaymentReceiptsListProvider.js | 0 .../PaymentReceiveActionsBar.js | 0 .../PaymentsLanding/PaymentReceiveViewTabs.js | 0 .../PaymentReceivesEmptyStatus.js | 0 .../PaymentsLanding/PaymentReceivesList.js | 0 .../PaymentReceivesListProvider.js | 0 .../PaymentsLanding/PaymentReceivesTable.js | 0 .../PaymentsLanding/components.js | 0 .../withPaymentReceiveDetail.js | 0 .../PaymentsLanding/withPaymentReceives.js | 0 .../withPaymentReceivesActions.js | 0 .../Receipts/ReceiptDetails/ReceiptDrawer.js | 0 .../ReceiptDetails/ReceiptDrawerContent.js | 0 .../ReceiptDetails/ReceiptDrawerProvider.js | 0 .../Receipts/ReceiptDetails/ReceiptPaper.js | 0 .../Sales/Receipts/ReceiptForm/ReceiptForm.js | 0 .../ReceiptForm/ReceiptForm.schema.js | 0 .../ReceiptForm/ReceiptFormDialogs.js | 0 .../ReceiptForm/ReceiptFormFloatingActions.js | 0 .../Receipts/ReceiptForm/ReceiptFormFooter.js | 0 .../Receipts/ReceiptForm/ReceiptFormHeader.js | 0 .../ReceiptForm/ReceiptFormHeaderFields.js | 0 .../Receipts/ReceiptForm/ReceiptFormPage.js | 0 .../ReceiptForm/ReceiptFormProvider.js | 0 .../ReceiptForm/ReceiptItemsEntriesEditor.js | 0 .../Sales/Receipts/ReceiptForm/utils.js | 0 .../Sales/Receipts/ReceiptUniversalSearch.js | 0 .../Sales/Receipts/ReceiptsAlerts.js | 0 .../ReceiptsLanding/ReceiptActionsBar.js | 0 .../ReceiptsLanding/ReceiptViewTabs.js | 0 .../ReceiptsLanding/ReceiptsEmptyStatus.js | 0 .../Receipts/ReceiptsLanding/ReceiptsList.js | 0 .../ReceiptsLanding/ReceiptsListProvider.js | 0 .../Receipts/ReceiptsLanding/ReceiptsTable.js | 0 .../Receipts/ReceiptsLanding/components.js | 0 .../Receipts/ReceiptsLanding/withReceipts.js | 0 .../ReceiptsLanding/withReceiptsActions.js | 0 .../containers/Settings/withSettings.js | 0 .../Settings/withSettingsActions.js | 0 .../containers/Setup/SetupCongratsPage.js | 0 .../containers/Setup/SetupDialogs.js | 0 .../containers/Setup/SetupInitializingForm.js | 0 .../containers/Setup/SetupLeftSection.js | 0 .../Setup/SetupOrganization.schema.js | 0 .../containers/Setup/SetupOrganizationForm.js | 0 .../containers/Setup/SetupOrganizationPage.js | 0 .../containers/Setup/SetupRightSection.js | 0 .../containers/Setup/SetupSteps.js | 0 .../containers/Setup/SetupSubscription.js | 0 .../SetupSubscriptionForm.js | 0 .../SubscriptionPaymentsMethodsSection.js | 0 .../SubscriptionPeriodsSection.js | 0 .../SubscriptionPlansSection.js | 0 .../containers/Setup/SetupWizardContent.js | 0 .../Setup/SubscriptionForm.schema.js | 0 .../containers/Setup/WizardSetupPage.js | 0 .../containers/Setup/WizardSetupSteps.js | 0 .../containers/Setup/WorkflowIcon.js | 0 .../containers/Subscriptions/BillingForm.js | 0 .../containers/Subscriptions/BillingPeriod.js | 0 .../Subscriptions/BillingPeriodsInput.js | 0 .../containers/Subscriptions/BillingPlan.js | 0 .../Subscriptions/BillingPlansForm.js | 0 .../Subscriptions/BillingPlansInput.js | 0 .../containers/Subscriptions/BillingTab.js | 0 .../containers/Subscriptions/LicenseTab.js | 0 .../Subscriptions/SubscriptionTabs.js | 0 .../Subscriptions/billingPaymentmethod.js | 0 .../containers/Subscriptions/utils.js | 0 .../Subscriptions/withBillingActions.js | 0 .../containers/Subscriptions/withPlan.js | 0 .../containers/Subscriptions/withPlans.js | 0 .../withSubscriptionPlansActions.js | 0 .../Subscriptions/withSubscriptions.js | 0 .../Subscriptions/withSubscriptionsActions.js | 0 .../Subscriptions/withSubscriptionss.js | 0 .../DashboardUniversalSearch.js | 0 .../DashboardUniversalSearchBinds.js | 0 .../DashboardUniversalSearchHotkeys.js | 0 .../DashboardUniversalSearchItemActions.js | 0 .../containers/UniversalSearch/components.js | 0 .../containers/UniversalSearch/utils.js | 0 .../UniversalSearch/withUniversalSearch.js | 0 .../withUniversalSearchActions.js | 0 .../src => src}/containers/Users/withUsers.js | 0 .../containers/Users/withUsersActions.js | 0 .../Vendors/VendorForm/VendorAttahmentTab.js | 0 .../VendorForm/VendorFinanicalPanelTab.js | 0 .../VendorForm/VendorFloatingActions.js | 0 .../Vendors/VendorForm/VendorForm.js | 0 .../Vendors/VendorForm/VendorForm.schema.js | 0 .../VendorFormAfterPrimarySection.js | 0 .../Vendors/VendorForm/VendorFormPage.js | 0 .../VendorForm/VendorFormPrimarySection.js | 0 .../Vendors/VendorForm/VendorFormProvider.js | 0 .../Vendors/VendorForm/VendorsTabs.js | 0 .../containers/Vendors/VendorsAlerts.js | 0 .../VendorsLanding/VendorActionsBar.js | 0 .../Vendors/VendorsLanding/VendorViewsTabs.js | 0 .../VendorsLanding/VendorsEmptyStatus.js | 0 .../Vendors/VendorsLanding/VendorsList.js | 0 .../VendorsLanding/VendorsListProvider.js | 0 .../Vendors/VendorsLanding/VendorsTable.js | 0 .../Vendors/VendorsLanding/components.js | 0 .../Vendors/VendorsLanding/utils.js | 0 .../Vendors/VendorsLanding/withVendors.js | 0 .../VendorsLanding/withVendorsActions.js | 0 .../Vendors/VendorsUniversalSearch.js | 0 .../src => src}/containers/Vendors/utils.js | 0 .../containers/Vendors/withVendorDetail.js | 0 .../containers/Views/ViewForm.container.js | 0 .../src => src}/containers/Views/ViewForm.js | 0 .../containers/Views/ViewFormPage.js | 0 .../containers/Views/withCurrentView.js | 0 .../containers/Views/withViewDetails.js | 0 .../src => src}/containers/Views/withViews.js | 0 .../containers/Views/withViewsActions.js | 0 {client/src => src}/hooks/async.js | 0 {client/src => src}/hooks/index.js | 0 .../hooks/query/GenericResource/index.js | 0 .../query/UniversalSearch/UniversalSearch.js | 0 {client/src => src}/hooks/query/accounts.js | 0 .../src => src}/hooks/query/authentication.js | 0 {client/src => src}/hooks/query/base.js | 0 {client/src => src}/hooks/query/bills.js | 0 {client/src => src}/hooks/query/contacts.js | 0 {client/src => src}/hooks/query/currencies.js | 0 {client/src => src}/hooks/query/customers.js | 0 {client/src => src}/hooks/query/estimates.js | 0 .../src => src}/hooks/query/exchangeRates.js | 0 {client/src => src}/hooks/query/expenses.js | 0 .../hooks/query/financialReports.js | 0 {client/src => src}/hooks/query/index.js | 0 .../hooks/query/inventoryAdjustments.js | 0 {client/src => src}/hooks/query/invite.js | 0 {client/src => src}/hooks/query/invoices.js | 0 {client/src => src}/hooks/query/items.js | 0 .../hooks/query/itemsCategories.js | 0 {client/src => src}/hooks/query/jobs.js | 0 {client/src => src}/hooks/query/landedCost.js | 0 .../src => src}/hooks/query/manualJournals.js | 0 {client/src => src}/hooks/query/misc.js | 0 .../src => src}/hooks/query/organization.js | 0 .../src => src}/hooks/query/paymentMades.js | 0 .../hooks/query/paymentReceives.js | 0 {client/src => src}/hooks/query/receipts.js | 0 {client/src => src}/hooks/query/settings.js | 0 .../src => src}/hooks/query/subscriptions.js | 0 {client/src => src}/hooks/query/types.js | 0 {client/src => src}/hooks/query/users.js | 0 {client/src => src}/hooks/query/vendors.js | 0 {client/src => src}/hooks/query/views.js | 0 {client/src => src}/hooks/stackableState.js | 0 .../src => src}/hooks/state/authentication.js | 0 {client/src => src}/hooks/state/dashboard.js | 0 .../src => src}/hooks/state/globalErrors.js | 0 {client/src => src}/hooks/state/index.js | 0 .../src => src}/hooks/state/organizations.js | 0 {client/src => src}/hooks/state/settings.js | 0 .../src => src}/hooks/state/subscriptions.js | 0 {client/src => src}/hooks/useAppRoutes.js | 0 {client/src => src}/hooks/useAutofocus.js | 0 {client/src => src}/hooks/useMedia.js | 0 {client/src => src}/hooks/useQueryRequest.js | 0 {client/src => src}/hooks/useRequest.js | 0 {client/src => src}/hooks/useRequestPdf.js | 0 {client/src => src}/index.js | 0 {client/src => src}/lang/ar/index.json | 0 {client/src => src}/lang/ar/locale.js | 0 {client/src => src}/lang/en/authentication.js | 0 {client/src => src}/lang/en/index.json | 0 {client/src => src}/lang/en/locale.js | 0 {client/src => src}/lang/printValue.js | 0 {client/src => src}/logo.svg | 0 {client/src => src}/middleware/logger.js | 0 {client/src => src}/routes/authentication.js | 0 {client/src => src}/routes/dashboard.js | 0 {client/src => src}/routes/preferences.js | 0 {client/src => src}/routes/preferencesTabs.js | 0 {client/src => src}/routes/register.js | 0 {client/src => src}/serviceWorker.js | 0 {client/src => src}/services/ApiService.js | 0 {client/src => src}/services/NamedRoutes.js | 0 .../src => src}/services/RemoteDataBinding.js | 0 {client/src => src}/services/axios.js | 0 {client/src => src}/services/yup.js | 0 {client/src => src}/setupTests.js | 0 .../src => src}/static/icons/brands/500px.svg | 0 .../static/icons/brands/accessible-icon.svg | 0 .../static/icons/brands/accusoft.svg | 0 .../brands/acquisitions-incorporated.svg | 0 .../src => src}/static/icons/brands/adn.svg | 0 .../src => src}/static/icons/brands/adobe.svg | 0 .../static/icons/brands/adversal.svg | 0 .../static/icons/brands/affiliatetheme.svg | 0 .../static/icons/brands/airbnb.svg | 0 .../static/icons/brands/algolia.svg | 0 .../static/icons/brands/alipay.svg | 0 .../static/icons/brands/amazon-pay.svg | 0 .../static/icons/brands/amazon.svg | 0 .../static/icons/brands/amilia.svg | 0 .../static/icons/brands/android.svg | 0 .../static/icons/brands/angellist.svg | 0 .../static/icons/brands/angrycreative.svg | 0 .../static/icons/brands/angular.svg | 0 .../static/icons/brands/app-store-ios.svg | 0 .../static/icons/brands/app-store.svg | 0 .../src => src}/static/icons/brands/apper.svg | 0 .../static/icons/brands/apple-pay.svg | 0 .../src => src}/static/icons/brands/apple.svg | 0 .../static/icons/brands/artstation.svg | 0 .../static/icons/brands/asymmetrik.svg | 0 .../static/icons/brands/atlassian.svg | 0 .../static/icons/brands/audible.svg | 0 .../static/icons/brands/autoprefixer.svg | 0 .../static/icons/brands/avianex.svg | 0 .../static/icons/brands/aviato.svg | 0 .../src => src}/static/icons/brands/aws.svg | 0 .../static/icons/brands/bandcamp.svg | 0 .../static/icons/brands/battle-net.svg | 0 .../static/icons/brands/behance-square.svg | 0 .../static/icons/brands/behance.svg | 0 .../static/icons/brands/bimobject.svg | 0 .../static/icons/brands/bitbucket.svg | 0 .../static/icons/brands/bitcoin.svg | 0 .../src => src}/static/icons/brands/bity.svg | 0 .../static/icons/brands/black-tie.svg | 0 .../static/icons/brands/blackberry.svg | 0 .../static/icons/brands/blogger-b.svg | 0 .../static/icons/brands/blogger.svg | 0 .../static/icons/brands/bluetooth-b.svg | 0 .../static/icons/brands/bluetooth.svg | 0 .../static/icons/brands/bootstrap.svg | 0 .../src => src}/static/icons/brands/btc.svg | 0 .../static/icons/brands/buffer.svg | 0 .../static/icons/brands/buromobelexperte.svg | 0 .../static/icons/brands/buy-n-large.svg | 0 .../static/icons/brands/buysellads.svg | 0 .../icons/brands/canadian-maple-leaf.svg | 0 .../static/icons/brands/cc-amazon-pay.svg | 0 .../static/icons/brands/cc-amex.svg | 0 .../static/icons/brands/cc-apple-pay.svg | 0 .../static/icons/brands/cc-diners-club.svg | 0 .../static/icons/brands/cc-discover.svg | 0 .../static/icons/brands/cc-jcb.svg | 0 .../static/icons/brands/cc-mastercard.svg | 0 .../static/icons/brands/cc-paypal.svg | 0 .../static/icons/brands/cc-stripe.svg | 0 .../static/icons/brands/cc-visa.svg | 0 .../static/icons/brands/centercode.svg | 0 .../static/icons/brands/centos.svg | 0 .../static/icons/brands/chrome.svg | 0 .../static/icons/brands/chromecast.svg | 0 .../static/icons/brands/cloudscale.svg | 0 .../static/icons/brands/cloudsmith.svg | 0 .../static/icons/brands/cloudversify.svg | 0 .../static/icons/brands/codepen.svg | 0 .../static/icons/brands/codiepie.svg | 0 .../static/icons/brands/confluence.svg | 0 .../static/icons/brands/connectdevelop.svg | 0 .../static/icons/brands/contao.svg | 0 .../static/icons/brands/cotton-bureau.svg | 0 .../static/icons/brands/cpanel.svg | 0 .../icons/brands/creative-commons-by.svg | 0 .../icons/brands/creative-commons-nc-eu.svg | 0 .../icons/brands/creative-commons-nc-jp.svg | 0 .../icons/brands/creative-commons-nc.svg | 0 .../icons/brands/creative-commons-nd.svg | 0 .../icons/brands/creative-commons-pd-alt.svg | 0 .../icons/brands/creative-commons-pd.svg | 0 .../icons/brands/creative-commons-remix.svg | 0 .../icons/brands/creative-commons-sa.svg | 0 .../brands/creative-commons-sampling-plus.svg | 0 .../brands/creative-commons-sampling.svg | 0 .../icons/brands/creative-commons-share.svg | 0 .../icons/brands/creative-commons-zero.svg | 0 .../static/icons/brands/creative-commons.svg | 0 .../static/icons/brands/critical-role.svg | 0 .../static/icons/brands/css3-alt.svg | 0 .../src => src}/static/icons/brands/css3.svg | 0 .../static/icons/brands/cuttlefish.svg | 0 .../static/icons/brands/d-and-d-beyond.svg | 0 .../static/icons/brands/d-and-d.svg | 0 .../static/icons/brands/dashcube.svg | 0 .../static/icons/brands/delicious.svg | 0 .../static/icons/brands/deploydog.svg | 0 .../static/icons/brands/deskpro.svg | 0 .../src => src}/static/icons/brands/dev.svg | 0 .../static/icons/brands/deviantart.svg | 0 .../src => src}/static/icons/brands/dhl.svg | 0 .../static/icons/brands/diaspora.svg | 0 .../src => src}/static/icons/brands/digg.svg | 0 .../static/icons/brands/digital-ocean.svg | 0 .../static/icons/brands/discord.svg | 0 .../static/icons/brands/discourse.svg | 0 .../static/icons/brands/dochub.svg | 0 .../static/icons/brands/docker.svg | 0 .../static/icons/brands/draft2digital.svg | 0 .../static/icons/brands/dribbble-square.svg | 0 .../static/icons/brands/dribbble.svg | 0 .../static/icons/brands/dropbox.svg | 0 .../static/icons/brands/drupal.svg | 0 .../static/icons/brands/dyalog.svg | 0 .../static/icons/brands/earlybirds.svg | 0 .../src => src}/static/icons/brands/ebay.svg | 0 .../src => src}/static/icons/brands/edge.svg | 0 .../static/icons/brands/elementor.svg | 0 .../src => src}/static/icons/brands/ello.svg | 0 .../src => src}/static/icons/brands/ember.svg | 0 .../static/icons/brands/empire.svg | 0 .../static/icons/brands/envira.svg | 0 .../static/icons/brands/erlang.svg | 0 .../static/icons/brands/ethereum.svg | 0 .../src => src}/static/icons/brands/etsy.svg | 0 .../static/icons/brands/evernote.svg | 0 .../static/icons/brands/expeditedssl.svg | 0 .../static/icons/brands/facebook-f.svg | 0 .../icons/brands/facebook-messenger.svg | 0 .../static/icons/brands/facebook-square.svg | 0 .../static/icons/brands/facebook.svg | 0 .../icons/brands/fantasy-flight-games.svg | 0 .../src => src}/static/icons/brands/fedex.svg | 0 .../static/icons/brands/fedora.svg | 0 .../src => src}/static/icons/brands/figma.svg | 0 .../static/icons/brands/firefox-browser.svg | 0 .../static/icons/brands/firefox.svg | 0 .../static/icons/brands/first-order-alt.svg | 0 .../static/icons/brands/first-order.svg | 0 .../static/icons/brands/firstdraft.svg | 0 .../static/icons/brands/flickr.svg | 0 .../static/icons/brands/flipboard.svg | 0 .../src => src}/static/icons/brands/fly.svg | 0 .../static/icons/brands/font-awesome-alt.svg | 0 .../static/icons/brands/font-awesome-flag.svg | 0 .../icons/brands/font-awesome-logo-full.svg | 0 .../static/icons/brands/font-awesome.svg | 0 .../static/icons/brands/fonticons-fi.svg | 0 .../static/icons/brands/fonticons.svg | 0 .../static/icons/brands/fort-awesome-alt.svg | 0 .../static/icons/brands/fort-awesome.svg | 0 .../static/icons/brands/forumbee.svg | 0 .../static/icons/brands/foursquare.svg | 0 .../static/icons/brands/free-code-camp.svg | 0 .../static/icons/brands/freebsd.svg | 0 .../static/icons/brands/fulcrum.svg | 0 .../static/icons/brands/galactic-republic.svg | 0 .../static/icons/brands/galactic-senate.svg | 0 .../static/icons/brands/get-pocket.svg | 0 .../static/icons/brands/gg-circle.svg | 0 .../src => src}/static/icons/brands/gg.svg | 0 .../static/icons/brands/git-alt.svg | 0 .../static/icons/brands/git-square.svg | 0 .../src => src}/static/icons/brands/git.svg | 0 .../static/icons/brands/github-alt.svg | 0 .../static/icons/brands/github-square.svg | 0 .../static/icons/brands/github.svg | 0 .../static/icons/brands/gitkraken.svg | 0 .../static/icons/brands/gitlab.svg | 0 .../static/icons/brands/gitter.svg | 0 .../static/icons/brands/glide-g.svg | 0 .../src => src}/static/icons/brands/glide.svg | 0 .../static/icons/brands/gofore.svg | 0 .../static/icons/brands/goodreads-g.svg | 0 .../static/icons/brands/goodreads.svg | 0 .../static/icons/brands/google-drive.svg | 0 .../static/icons/brands/google-play.svg | 0 .../static/icons/brands/google-plus-g.svg | 0 .../icons/brands/google-plus-square.svg | 0 .../static/icons/brands/google-plus.svg | 0 .../static/icons/brands/google-wallet.svg | 0 .../static/icons/brands/google.svg | 0 .../static/icons/brands/gratipay.svg | 0 .../src => src}/static/icons/brands/grav.svg | 0 .../static/icons/brands/gripfire.svg | 0 .../src => src}/static/icons/brands/grunt.svg | 0 .../src => src}/static/icons/brands/gulp.svg | 0 .../icons/brands/hacker-news-square.svg | 0 .../static/icons/brands/hacker-news.svg | 0 .../static/icons/brands/hackerrank.svg | 0 .../src => src}/static/icons/brands/hips.svg | 0 .../static/icons/brands/hire-a-helper.svg | 0 .../src => src}/static/icons/brands/hooli.svg | 0 .../static/icons/brands/hornbill.svg | 0 .../static/icons/brands/hotjar.svg | 0 .../src => src}/static/icons/brands/houzz.svg | 0 .../src => src}/static/icons/brands/html5.svg | 0 .../static/icons/brands/hubspot.svg | 0 .../src => src}/static/icons/brands/ideal.svg | 0 .../src => src}/static/icons/brands/imdb.svg | 0 .../static/icons/brands/instagram.svg | 0 .../static/icons/brands/intercom.svg | 0 .../static/icons/brands/internet-explorer.svg | 0 .../static/icons/brands/invision.svg | 0 .../static/icons/brands/ioxhost.svg | 0 .../static/icons/brands/itch-io.svg | 0 .../static/icons/brands/itunes-note.svg | 0 .../static/icons/brands/itunes.svg | 0 .../src => src}/static/icons/brands/java.svg | 0 .../static/icons/brands/jedi-order.svg | 0 .../static/icons/brands/jenkins.svg | 0 .../src => src}/static/icons/brands/jira.svg | 0 .../src => src}/static/icons/brands/joget.svg | 0 .../static/icons/brands/joomla.svg | 0 .../static/icons/brands/js-square.svg | 0 .../src => src}/static/icons/brands/js.svg | 0 .../static/icons/brands/jsfiddle.svg | 0 .../static/icons/brands/kaggle.svg | 0 .../static/icons/brands/keybase.svg | 0 .../static/icons/brands/keycdn.svg | 0 .../static/icons/brands/kickstarter-k.svg | 0 .../static/icons/brands/kickstarter.svg | 0 .../static/icons/brands/korvue.svg | 0 .../static/icons/brands/laravel.svg | 0 .../static/icons/brands/lastfm-square.svg | 0 .../static/icons/brands/lastfm.svg | 0 .../static/icons/brands/leanpub.svg | 0 .../src => src}/static/icons/brands/less.svg | 0 .../src => src}/static/icons/brands/line.svg | 0 .../static/icons/brands/linkedin-in.svg | 0 .../static/icons/brands/linkedin.svg | 0 .../static/icons/brands/linode.svg | 0 .../src => src}/static/icons/brands/linux.svg | 0 .../src => src}/static/icons/brands/lyft.svg | 0 .../static/icons/brands/magento.svg | 0 .../static/icons/brands/mailchimp.svg | 0 .../static/icons/brands/mandalorian.svg | 0 .../static/icons/brands/markdown.svg | 0 .../static/icons/brands/mastodon.svg | 0 .../static/icons/brands/maxcdn.svg | 0 .../src => src}/static/icons/brands/mdb.svg | 0 .../static/icons/brands/medapps.svg | 0 .../static/icons/brands/medium-m.svg | 0 .../static/icons/brands/medium.svg | 0 .../src => src}/static/icons/brands/medrt.svg | 0 .../static/icons/brands/meetup.svg | 0 .../static/icons/brands/megaport.svg | 0 .../static/icons/brands/mendeley.svg | 0 .../static/icons/brands/microblog.svg | 0 .../static/icons/brands/microsoft.svg | 0 .../src => src}/static/icons/brands/mix.svg | 0 .../static/icons/brands/mixcloud.svg | 0 .../static/icons/brands/mizuni.svg | 0 .../src => src}/static/icons/brands/modx.svg | 0 .../static/icons/brands/monero.svg | 0 .../static/icons/brands/napster.svg | 0 .../src => src}/static/icons/brands/neos.svg | 0 .../static/icons/brands/nimblr.svg | 0 .../static/icons/brands/node-js.svg | 0 .../src => src}/static/icons/brands/node.svg | 0 .../src => src}/static/icons/brands/npm.svg | 0 .../src => src}/static/icons/brands/ns8.svg | 0 .../static/icons/brands/nutritionix.svg | 0 .../icons/brands/odnoklassniki-square.svg | 0 .../static/icons/brands/odnoklassniki.svg | 0 .../static/icons/brands/old-republic.svg | 0 .../static/icons/brands/opencart.svg | 0 .../static/icons/brands/openid.svg | 0 .../src => src}/static/icons/brands/opera.svg | 0 .../static/icons/brands/optin-monster.svg | 0 .../src => src}/static/icons/brands/orcid.svg | 0 .../src => src}/static/icons/brands/osi.svg | 0 .../src => src}/static/icons/brands/page4.svg | 0 .../static/icons/brands/pagelines.svg | 0 .../static/icons/brands/palfed.svg | 0 .../static/icons/brands/patreon.svg | 0 .../static/icons/brands/paypal.svg | 0 .../static/icons/brands/penny-arcade.svg | 0 .../static/icons/brands/periscope.svg | 0 .../static/icons/brands/phabricator.svg | 0 .../static/icons/brands/phoenix-framework.svg | 0 .../static/icons/brands/phoenix-squadron.svg | 0 .../src => src}/static/icons/brands/php.svg | 0 .../static/icons/brands/pied-piper-alt.svg | 0 .../static/icons/brands/pied-piper-hat.svg | 0 .../static/icons/brands/pied-piper-pp.svg | 0 .../static/icons/brands/pied-piper-square.svg | 0 .../static/icons/brands/pied-piper.svg | 0 .../static/icons/brands/pinterest-p.svg | 0 .../static/icons/brands/pinterest-square.svg | 0 .../static/icons/brands/pinterest.svg | 0 .../static/icons/brands/playstation.svg | 0 .../static/icons/brands/product-hunt.svg | 0 .../static/icons/brands/pushed.svg | 0 .../static/icons/brands/python.svg | 0 .../src => src}/static/icons/brands/qq.svg | 0 .../static/icons/brands/quinscape.svg | 0 .../src => src}/static/icons/brands/quora.svg | 0 .../static/icons/brands/r-project.svg | 0 .../static/icons/brands/raspberry-pi.svg | 0 .../static/icons/brands/ravelry.svg | 0 .../src => src}/static/icons/brands/react.svg | 0 .../static/icons/brands/reacteurope.svg | 0 .../static/icons/brands/readme.svg | 0 .../src => src}/static/icons/brands/rebel.svg | 0 .../static/icons/brands/red-river.svg | 0 .../static/icons/brands/reddit-alien.svg | 0 .../static/icons/brands/reddit-square.svg | 0 .../static/icons/brands/reddit.svg | 0 .../static/icons/brands/redhat.svg | 0 .../static/icons/brands/renren.svg | 0 .../static/icons/brands/replyd.svg | 0 .../static/icons/brands/researchgate.svg | 0 .../static/icons/brands/resolving.svg | 0 .../src => src}/static/icons/brands/rev.svg | 0 .../static/icons/brands/rocketchat.svg | 0 .../static/icons/brands/rockrms.svg | 0 .../static/icons/brands/safari.svg | 0 .../static/icons/brands/salesforce.svg | 0 .../src => src}/static/icons/brands/sass.svg | 0 .../static/icons/brands/schlix.svg | 0 .../static/icons/brands/scribd.svg | 0 .../static/icons/brands/searchengin.svg | 0 .../static/icons/brands/sellcast.svg | 0 .../static/icons/brands/sellsy.svg | 0 .../static/icons/brands/servicestack.svg | 0 .../static/icons/brands/shirtsinbulk.svg | 0 .../static/icons/brands/shopware.svg | 0 .../static/icons/brands/simplybuilt.svg | 0 .../static/icons/brands/sistrix.svg | 0 .../src => src}/static/icons/brands/sith.svg | 0 .../static/icons/brands/sketch.svg | 0 .../static/icons/brands/skyatlas.svg | 0 .../src => src}/static/icons/brands/skype.svg | 0 .../static/icons/brands/slack-hash.svg | 0 .../src => src}/static/icons/brands/slack.svg | 0 .../static/icons/brands/slideshare.svg | 0 .../static/icons/brands/snapchat-ghost.svg | 0 .../static/icons/brands/snapchat-square.svg | 0 .../static/icons/brands/snapchat.svg | 0 .../static/icons/brands/soundcloud.svg | 0 .../static/icons/brands/sourcetree.svg | 0 .../static/icons/brands/speakap.svg | 0 .../static/icons/brands/speaker-deck.svg | 0 .../static/icons/brands/spotify.svg | 0 .../static/icons/brands/squarespace.svg | 0 .../static/icons/brands/stack-exchange.svg | 0 .../static/icons/brands/stack-overflow.svg | 0 .../static/icons/brands/stackpath.svg | 0 .../static/icons/brands/staylinked.svg | 0 .../static/icons/brands/steam-square.svg | 0 .../static/icons/brands/steam-symbol.svg | 0 .../src => src}/static/icons/brands/steam.svg | 0 .../static/icons/brands/sticker-mule.svg | 0 .../static/icons/brands/strava.svg | 0 .../static/icons/brands/stripe-s.svg | 0 .../static/icons/brands/stripe.svg | 0 .../static/icons/brands/studiovinari.svg | 0 .../icons/brands/stumbleupon-circle.svg | 0 .../static/icons/brands/stumbleupon.svg | 0 .../static/icons/brands/superpowers.svg | 0 .../static/icons/brands/supple.svg | 0 .../src => src}/static/icons/brands/suse.svg | 0 .../src => src}/static/icons/brands/swift.svg | 0 .../static/icons/brands/symfony.svg | 0 .../static/icons/brands/teamspeak.svg | 0 .../static/icons/brands/telegram-plane.svg | 0 .../static/icons/brands/telegram.svg | 0 .../static/icons/brands/tencent-weibo.svg | 0 .../static/icons/brands/the-red-yeti.svg | 0 .../static/icons/brands/themeco.svg | 0 .../static/icons/brands/themeisle.svg | 0 .../static/icons/brands/think-peaks.svg | 0 .../static/icons/brands/trade-federation.svg | 0 .../static/icons/brands/trello.svg | 0 .../static/icons/brands/tripadvisor.svg | 0 .../static/icons/brands/tumblr-square.svg | 0 .../static/icons/brands/tumblr.svg | 0 .../static/icons/brands/twitch.svg | 0 .../static/icons/brands/twitter-square.svg | 0 .../static/icons/brands/twitter.svg | 0 .../src => src}/static/icons/brands/typo3.svg | 0 .../src => src}/static/icons/brands/uber.svg | 0 .../static/icons/brands/ubuntu.svg | 0 .../src => src}/static/icons/brands/uikit.svg | 0 .../static/icons/brands/umbraco.svg | 0 .../static/icons/brands/uniregistry.svg | 0 .../src => src}/static/icons/brands/unity.svg | 0 .../static/icons/brands/untappd.svg | 0 .../src => src}/static/icons/brands/ups.svg | 0 .../src => src}/static/icons/brands/usb.svg | 0 .../src => src}/static/icons/brands/usps.svg | 0 .../static/icons/brands/ussunnah.svg | 0 .../static/icons/brands/vaadin.svg | 0 .../static/icons/brands/viacoin.svg | 0 .../static/icons/brands/viadeo-square.svg | 0 .../static/icons/brands/viadeo.svg | 0 .../src => src}/static/icons/brands/viber.svg | 0 .../static/icons/brands/vimeo-square.svg | 0 .../static/icons/brands/vimeo-v.svg | 0 .../src => src}/static/icons/brands/vimeo.svg | 0 .../src => src}/static/icons/brands/vine.svg | 0 .../src => src}/static/icons/brands/vk.svg | 0 .../src => src}/static/icons/brands/vnv.svg | 0 .../src => src}/static/icons/brands/vuejs.svg | 0 .../src => src}/static/icons/brands/waze.svg | 0 .../static/icons/brands/weebly.svg | 0 .../src => src}/static/icons/brands/weibo.svg | 0 .../static/icons/brands/weixin.svg | 0 .../static/icons/brands/whatsapp-square.svg | 0 .../static/icons/brands/whatsapp.svg | 0 .../src => src}/static/icons/brands/whmcs.svg | 0 .../static/icons/brands/wikipedia-w.svg | 0 .../static/icons/brands/windows.svg | 0 .../src => src}/static/icons/brands/wix.svg | 0 .../icons/brands/wizards-of-the-coast.svg | 0 .../icons/brands/wolf-pack-battalion.svg | 0 .../static/icons/brands/wordpress-simple.svg | 0 .../static/icons/brands/wordpress.svg | 0 .../static/icons/brands/wpbeginner.svg | 0 .../static/icons/brands/wpexplorer.svg | 0 .../static/icons/brands/wpforms.svg | 0 .../static/icons/brands/wpressr.svg | 0 .../src => src}/static/icons/brands/xbox.svg | 0 .../static/icons/brands/xing-square.svg | 0 .../src => src}/static/icons/brands/xing.svg | 0 .../static/icons/brands/y-combinator.svg | 0 .../src => src}/static/icons/brands/yahoo.svg | 0 .../static/icons/brands/yammer.svg | 0 .../icons/brands/yandex-international.svg | 0 .../static/icons/brands/yandex.svg | 0 .../src => src}/static/icons/brands/yarn.svg | 0 .../src => src}/static/icons/brands/yelp.svg | 0 .../src => src}/static/icons/brands/yoast.svg | 0 .../static/icons/brands/youtube-square.svg | 0 .../static/icons/brands/youtube.svg | 0 .../src => src}/static/icons/brands/zhihu.svg | 0 .../static/icons/duotone/abacus.svg | 0 .../static/icons/duotone/acorn.svg | 0 .../src => src}/static/icons/duotone/ad.svg | 0 .../static/icons/duotone/address-book.svg | 0 .../static/icons/duotone/address-card.svg | 0 .../static/icons/duotone/adjust.svg | 0 .../static/icons/duotone/air-conditioner.svg | 0 .../static/icons/duotone/air-freshener.svg | 0 .../static/icons/duotone/alarm-clock.svg | 0 .../icons/duotone/alarm-exclamation.svg | 0 .../static/icons/duotone/alarm-plus.svg | 0 .../static/icons/duotone/alarm-snooze.svg | 0 .../static/icons/duotone/album-collection.svg | 0 .../static/icons/duotone/album.svg | 0 .../static/icons/duotone/alicorn.svg | 0 .../static/icons/duotone/alien-monster.svg | 0 .../static/icons/duotone/alien.svg | 0 .../static/icons/duotone/align-center.svg | 0 .../static/icons/duotone/align-justify.svg | 0 .../static/icons/duotone/align-left.svg | 0 .../static/icons/duotone/align-right.svg | 0 .../static/icons/duotone/align-slash.svg | 0 .../static/icons/duotone/allergies.svg | 0 .../static/icons/duotone/ambulance.svg | 0 .../american-sign-language-interpreting.svg | 0 .../static/icons/duotone/amp-guitar.svg | 0 .../static/icons/duotone/analytics.svg | 0 .../static/icons/duotone/anchor.svg | 0 .../static/icons/duotone/angel.svg | 0 .../icons/duotone/angle-double-down.svg | 0 .../icons/duotone/angle-double-left.svg | 0 .../icons/duotone/angle-double-right.svg | 0 .../static/icons/duotone/angle-double-up.svg | 0 .../static/icons/duotone/angle-down.svg | 0 .../static/icons/duotone/angle-left.svg | 0 .../static/icons/duotone/angle-right.svg | 0 .../static/icons/duotone/angle-up.svg | 0 .../static/icons/duotone/angry.svg | 0 .../src => src}/static/icons/duotone/ankh.svg | 0 .../static/icons/duotone/apple-alt.svg | 0 .../static/icons/duotone/apple-crate.svg | 0 .../static/icons/duotone/archive.svg | 0 .../static/icons/duotone/archway.svg | 0 .../icons/duotone/arrow-alt-circle-down.svg | 0 .../icons/duotone/arrow-alt-circle-left.svg | 0 .../icons/duotone/arrow-alt-circle-right.svg | 0 .../icons/duotone/arrow-alt-circle-up.svg | 0 .../static/icons/duotone/arrow-alt-down.svg | 0 .../icons/duotone/arrow-alt-from-bottom.svg | 0 .../icons/duotone/arrow-alt-from-left.svg | 0 .../icons/duotone/arrow-alt-from-right.svg | 0 .../icons/duotone/arrow-alt-from-top.svg | 0 .../static/icons/duotone/arrow-alt-left.svg | 0 .../static/icons/duotone/arrow-alt-right.svg | 0 .../icons/duotone/arrow-alt-square-down.svg | 0 .../icons/duotone/arrow-alt-square-left.svg | 0 .../icons/duotone/arrow-alt-square-right.svg | 0 .../icons/duotone/arrow-alt-square-up.svg | 0 .../icons/duotone/arrow-alt-to-bottom.svg | 0 .../icons/duotone/arrow-alt-to-left.svg | 0 .../icons/duotone/arrow-alt-to-right.svg | 0 .../static/icons/duotone/arrow-alt-to-top.svg | 0 .../static/icons/duotone/arrow-alt-up.svg | 0 .../icons/duotone/arrow-circle-down.svg | 0 .../icons/duotone/arrow-circle-left.svg | 0 .../icons/duotone/arrow-circle-right.svg | 0 .../static/icons/duotone/arrow-circle-up.svg | 0 .../static/icons/duotone/arrow-down.svg | 0 .../icons/duotone/arrow-from-bottom.svg | 0 .../static/icons/duotone/arrow-from-left.svg | 0 .../static/icons/duotone/arrow-from-right.svg | 0 .../static/icons/duotone/arrow-from-top.svg | 0 .../static/icons/duotone/arrow-left.svg | 0 .../static/icons/duotone/arrow-right.svg | 0 .../icons/duotone/arrow-square-down.svg | 0 .../icons/duotone/arrow-square-left.svg | 0 .../icons/duotone/arrow-square-right.svg | 0 .../static/icons/duotone/arrow-square-up.svg | 0 .../static/icons/duotone/arrow-to-bottom.svg | 0 .../static/icons/duotone/arrow-to-left.svg | 0 .../static/icons/duotone/arrow-to-right.svg | 0 .../static/icons/duotone/arrow-to-top.svg | 0 .../static/icons/duotone/arrow-up.svg | 0 .../static/icons/duotone/arrows-alt-h.svg | 0 .../static/icons/duotone/arrows-alt-v.svg | 0 .../static/icons/duotone/arrows-alt.svg | 0 .../static/icons/duotone/arrows-h.svg | 0 .../static/icons/duotone/arrows-v.svg | 0 .../static/icons/duotone/arrows.svg | 0 .../duotone/assistive-listening-systems.svg | 0 .../static/icons/duotone/asterisk.svg | 0 .../src => src}/static/icons/duotone/at.svg | 0 .../static/icons/duotone/atlas.svg | 0 .../static/icons/duotone/atom-alt.svg | 0 .../src => src}/static/icons/duotone/atom.svg | 0 .../icons/duotone/audio-description.svg | 0 .../static/icons/duotone/award.svg | 0 .../static/icons/duotone/axe-battle.svg | 0 .../src => src}/static/icons/duotone/axe.svg | 0 .../static/icons/duotone/baby-carriage.svg | 0 .../src => src}/static/icons/duotone/baby.svg | 0 .../static/icons/duotone/backpack.svg | 0 .../static/icons/duotone/backspace.svg | 0 .../static/icons/duotone/backward.svg | 0 .../static/icons/duotone/bacon.svg | 0 .../static/icons/duotone/badge-check.svg | 0 .../static/icons/duotone/badge-dollar.svg | 0 .../static/icons/duotone/badge-percent.svg | 0 .../static/icons/duotone/badge-sheriff.svg | 0 .../static/icons/duotone/badge.svg | 0 .../static/icons/duotone/badger-honey.svg | 0 .../static/icons/duotone/bags-shopping.svg | 0 .../static/icons/duotone/bahai.svg | 0 .../icons/duotone/balance-scale-left.svg | 0 .../icons/duotone/balance-scale-right.svg | 0 .../static/icons/duotone/balance-scale.svg | 0 .../static/icons/duotone/ball-pile.svg | 0 .../static/icons/duotone/ballot-check.svg | 0 .../static/icons/duotone/ballot.svg | 0 .../src => src}/static/icons/duotone/ban.svg | 0 .../static/icons/duotone/band-aid.svg | 0 .../static/icons/duotone/banjo.svg | 0 .../static/icons/duotone/barcode-alt.svg | 0 .../static/icons/duotone/barcode-read.svg | 0 .../static/icons/duotone/barcode-scan.svg | 0 .../static/icons/duotone/barcode.svg | 0 .../src => src}/static/icons/duotone/bars.svg | 0 .../static/icons/duotone/baseball-ball.svg | 0 .../static/icons/duotone/baseball.svg | 0 .../static/icons/duotone/basketball-ball.svg | 0 .../static/icons/duotone/basketball-hoop.svg | 0 .../src => src}/static/icons/duotone/bat.svg | 0 .../src => src}/static/icons/duotone/bath.svg | 0 .../static/icons/duotone/battery-bolt.svg | 0 .../static/icons/duotone/battery-empty.svg | 0 .../static/icons/duotone/battery-full.svg | 0 .../static/icons/duotone/battery-half.svg | 0 .../static/icons/duotone/battery-quarter.svg | 0 .../static/icons/duotone/battery-slash.svg | 0 .../icons/duotone/battery-three-quarters.svg | 0 .../static/icons/duotone/bed-alt.svg | 0 .../static/icons/duotone/bed-bunk.svg | 0 .../static/icons/duotone/bed-empty.svg | 0 .../src => src}/static/icons/duotone/bed.svg | 0 .../src => src}/static/icons/duotone/beer.svg | 0 .../static/icons/duotone/bell-exclamation.svg | 0 .../static/icons/duotone/bell-on.svg | 0 .../static/icons/duotone/bell-plus.svg | 0 .../icons/duotone/bell-school-slash.svg | 0 .../static/icons/duotone/bell-school.svg | 0 .../static/icons/duotone/bell-slash.svg | 0 .../src => src}/static/icons/duotone/bell.svg | 0 .../static/icons/duotone/bells.svg | 0 .../static/icons/duotone/betamax.svg | 0 .../static/icons/duotone/bezier-curve.svg | 0 .../static/icons/duotone/bible.svg | 0 .../static/icons/duotone/bicycle.svg | 0 .../static/icons/duotone/biking-mountain.svg | 0 .../static/icons/duotone/biking.svg | 0 .../static/icons/duotone/binoculars.svg | 0 .../static/icons/duotone/biohazard.svg | 0 .../static/icons/duotone/birthday-cake.svg | 0 .../static/icons/duotone/blanket.svg | 0 .../static/icons/duotone/blender-phone.svg | 0 .../static/icons/duotone/blender.svg | 0 .../static/icons/duotone/blind.svg | 0 .../static/icons/duotone/blinds-open.svg | 0 .../static/icons/duotone/blinds-raised.svg | 0 .../static/icons/duotone/blinds.svg | 0 .../src => src}/static/icons/duotone/blog.svg | 0 .../src => src}/static/icons/duotone/bold.svg | 0 .../src => src}/static/icons/duotone/bolt.svg | 0 .../src => src}/static/icons/duotone/bomb.svg | 0 .../static/icons/duotone/bone-break.svg | 0 .../src => src}/static/icons/duotone/bone.svg | 0 .../src => src}/static/icons/duotone/bong.svg | 0 .../static/icons/duotone/book-alt.svg | 0 .../static/icons/duotone/book-dead.svg | 0 .../static/icons/duotone/book-heart.svg | 0 .../static/icons/duotone/book-medical.svg | 0 .../static/icons/duotone/book-open.svg | 0 .../static/icons/duotone/book-reader.svg | 0 .../static/icons/duotone/book-spells.svg | 0 .../static/icons/duotone/book-user.svg | 0 .../src => src}/static/icons/duotone/book.svg | 0 .../static/icons/duotone/bookmark.svg | 0 .../static/icons/duotone/books-medical.svg | 0 .../static/icons/duotone/books.svg | 0 .../static/icons/duotone/boombox.svg | 0 .../src => src}/static/icons/duotone/boot.svg | 0 .../static/icons/duotone/booth-curtain.svg | 0 .../static/icons/duotone/border-all.svg | 0 .../static/icons/duotone/border-bottom.svg | 0 .../static/icons/duotone/border-center-h.svg | 0 .../static/icons/duotone/border-center-v.svg | 0 .../static/icons/duotone/border-inner.svg | 0 .../static/icons/duotone/border-left.svg | 0 .../static/icons/duotone/border-none.svg | 0 .../static/icons/duotone/border-outer.svg | 0 .../static/icons/duotone/border-right.svg | 0 .../static/icons/duotone/border-style-alt.svg | 0 .../static/icons/duotone/border-style.svg | 0 .../static/icons/duotone/border-top.svg | 0 .../static/icons/duotone/bow-arrow.svg | 0 .../static/icons/duotone/bowling-ball.svg | 0 .../static/icons/duotone/bowling-pins.svg | 0 .../static/icons/duotone/box-alt.svg | 0 .../static/icons/duotone/box-ballot.svg | 0 .../static/icons/duotone/box-check.svg | 0 .../static/icons/duotone/box-fragile.svg | 0 .../static/icons/duotone/box-full.svg | 0 .../static/icons/duotone/box-heart.svg | 0 .../static/icons/duotone/box-open.svg | 0 .../static/icons/duotone/box-up.svg | 0 .../static/icons/duotone/box-usd.svg | 0 .../src => src}/static/icons/duotone/box.svg | 0 .../static/icons/duotone/boxes-alt.svg | 0 .../static/icons/duotone/boxes.svg | 0 .../static/icons/duotone/boxing-glove.svg | 0 .../static/icons/duotone/brackets-curly.svg | 0 .../static/icons/duotone/brackets.svg | 0 .../static/icons/duotone/braille.svg | 0 .../static/icons/duotone/brain.svg | 0 .../static/icons/duotone/bread-loaf.svg | 0 .../static/icons/duotone/bread-slice.svg | 0 .../icons/duotone/briefcase-medical.svg | 0 .../static/icons/duotone/briefcase.svg | 0 .../static/icons/duotone/bring-forward.svg | 0 .../static/icons/duotone/bring-front.svg | 0 .../static/icons/duotone/broadcast-tower.svg | 0 .../static/icons/duotone/broom.svg | 0 .../static/icons/duotone/browser.svg | 0 .../static/icons/duotone/brush.svg | 0 .../src => src}/static/icons/duotone/bug.svg | 0 .../static/icons/duotone/building.svg | 0 .../static/icons/duotone/bullhorn.svg | 0 .../static/icons/duotone/bullseye-arrow.svg | 0 .../static/icons/duotone/bullseye-pointer.svg | 0 .../static/icons/duotone/bullseye.svg | 0 .../static/icons/duotone/burger-soda.svg | 0 .../src => src}/static/icons/duotone/burn.svg | 0 .../static/icons/duotone/burrito.svg | 0 .../static/icons/duotone/bus-alt.svg | 0 .../static/icons/duotone/bus-school.svg | 0 .../src => src}/static/icons/duotone/bus.svg | 0 .../static/icons/duotone/business-time.svg | 0 .../static/icons/duotone/cabinet-filing.svg | 0 .../static/icons/duotone/cactus.svg | 0 .../static/icons/duotone/calculator-alt.svg | 0 .../static/icons/duotone/calculator.svg | 0 .../static/icons/duotone/calendar-alt.svg | 0 .../static/icons/duotone/calendar-check.svg | 0 .../static/icons/duotone/calendar-day.svg | 0 .../static/icons/duotone/calendar-edit.svg | 0 .../icons/duotone/calendar-exclamation.svg | 0 .../static/icons/duotone/calendar-minus.svg | 0 .../static/icons/duotone/calendar-plus.svg | 0 .../static/icons/duotone/calendar-star.svg | 0 .../static/icons/duotone/calendar-times.svg | 0 .../static/icons/duotone/calendar-week.svg | 0 .../static/icons/duotone/calendar.svg | 0 .../static/icons/duotone/camcorder.svg | 0 .../static/icons/duotone/camera-alt.svg | 0 .../static/icons/duotone/camera-home.svg | 0 .../static/icons/duotone/camera-movie.svg | 0 .../static/icons/duotone/camera-polaroid.svg | 0 .../static/icons/duotone/camera-retro.svg | 0 .../static/icons/duotone/camera.svg | 0 .../static/icons/duotone/campfire.svg | 0 .../static/icons/duotone/campground.svg | 0 .../static/icons/duotone/candle-holder.svg | 0 .../static/icons/duotone/candy-cane.svg | 0 .../static/icons/duotone/candy-corn.svg | 0 .../static/icons/duotone/cannabis.svg | 0 .../static/icons/duotone/capsules.svg | 0 .../static/icons/duotone/car-alt.svg | 0 .../static/icons/duotone/car-battery.svg | 0 .../static/icons/duotone/car-building.svg | 0 .../static/icons/duotone/car-bump.svg | 0 .../static/icons/duotone/car-bus.svg | 0 .../static/icons/duotone/car-crash.svg | 0 .../static/icons/duotone/car-garage.svg | 0 .../static/icons/duotone/car-mechanic.svg | 0 .../static/icons/duotone/car-side.svg | 0 .../static/icons/duotone/car-tilt.svg | 0 .../static/icons/duotone/car-wash.svg | 0 .../src => src}/static/icons/duotone/car.svg | 0 .../static/icons/duotone/caravan-alt.svg | 0 .../static/icons/duotone/caravan.svg | 0 .../icons/duotone/caret-circle-down.svg | 0 .../icons/duotone/caret-circle-left.svg | 0 .../icons/duotone/caret-circle-right.svg | 0 .../static/icons/duotone/caret-circle-up.svg | 0 .../static/icons/duotone/caret-down.svg | 0 .../static/icons/duotone/caret-left.svg | 0 .../static/icons/duotone/caret-right.svg | 0 .../icons/duotone/caret-square-down.svg | 0 .../icons/duotone/caret-square-left.svg | 0 .../icons/duotone/caret-square-right.svg | 0 .../static/icons/duotone/caret-square-up.svg | 0 .../static/icons/duotone/caret-up.svg | 0 .../static/icons/duotone/carrot.svg | 0 .../src => src}/static/icons/duotone/cars.svg | 0 .../static/icons/duotone/cart-arrow-down.svg | 0 .../static/icons/duotone/cart-plus.svg | 0 .../static/icons/duotone/cash-register.svg | 0 .../static/icons/duotone/cassette-tape.svg | 0 .../static/icons/duotone/cat-space.svg | 0 .../src => src}/static/icons/duotone/cat.svg | 0 .../static/icons/duotone/cauldron.svg | 0 .../src => src}/static/icons/duotone/cctv.svg | 0 .../static/icons/duotone/certificate.svg | 0 .../static/icons/duotone/chair-office.svg | 0 .../static/icons/duotone/chair.svg | 0 .../icons/duotone/chalkboard-teacher.svg | 0 .../static/icons/duotone/chalkboard.svg | 0 .../static/icons/duotone/charging-station.svg | 0 .../static/icons/duotone/chart-area.svg | 0 .../static/icons/duotone/chart-bar.svg | 0 .../static/icons/duotone/chart-line-down.svg | 0 .../static/icons/duotone/chart-line.svg | 0 .../static/icons/duotone/chart-network.svg | 0 .../static/icons/duotone/chart-pie-alt.svg | 0 .../static/icons/duotone/chart-pie.svg | 0 .../static/icons/duotone/chart-scatter.svg | 0 .../static/icons/duotone/check-circle.svg | 0 .../static/icons/duotone/check-double.svg | 0 .../static/icons/duotone/check-square.svg | 0 .../static/icons/duotone/check.svg | 0 .../static/icons/duotone/cheese-swiss.svg | 0 .../static/icons/duotone/cheese.svg | 0 .../static/icons/duotone/cheeseburger.svg | 0 .../static/icons/duotone/chess-bishop-alt.svg | 0 .../static/icons/duotone/chess-bishop.svg | 0 .../static/icons/duotone/chess-board.svg | 0 .../static/icons/duotone/chess-clock-alt.svg | 0 .../static/icons/duotone/chess-clock.svg | 0 .../static/icons/duotone/chess-king-alt.svg | 0 .../static/icons/duotone/chess-king.svg | 0 .../static/icons/duotone/chess-knight-alt.svg | 0 .../static/icons/duotone/chess-knight.svg | 0 .../static/icons/duotone/chess-pawn-alt.svg | 0 .../static/icons/duotone/chess-pawn.svg | 0 .../static/icons/duotone/chess-queen-alt.svg | 0 .../static/icons/duotone/chess-queen.svg | 0 .../static/icons/duotone/chess-rook-alt.svg | 0 .../static/icons/duotone/chess-rook.svg | 0 .../static/icons/duotone/chess.svg | 0 .../icons/duotone/chevron-circle-down.svg | 0 .../icons/duotone/chevron-circle-left.svg | 0 .../icons/duotone/chevron-circle-right.svg | 0 .../icons/duotone/chevron-circle-up.svg | 0 .../icons/duotone/chevron-double-down.svg | 0 .../icons/duotone/chevron-double-left.svg | 0 .../icons/duotone/chevron-double-right.svg | 0 .../icons/duotone/chevron-double-up.svg | 0 .../static/icons/duotone/chevron-down.svg | 0 .../static/icons/duotone/chevron-left.svg | 0 .../static/icons/duotone/chevron-right.svg | 0 .../icons/duotone/chevron-square-down.svg | 0 .../icons/duotone/chevron-square-left.svg | 0 .../icons/duotone/chevron-square-right.svg | 0 .../icons/duotone/chevron-square-up.svg | 0 .../static/icons/duotone/chevron-up.svg | 0 .../static/icons/duotone/child.svg | 0 .../static/icons/duotone/chimney.svg | 0 .../static/icons/duotone/church.svg | 0 .../static/icons/duotone/circle-notch.svg | 0 .../static/icons/duotone/circle.svg | 0 .../src => src}/static/icons/duotone/city.svg | 0 .../static/icons/duotone/clarinet.svg | 0 .../static/icons/duotone/claw-marks.svg | 0 .../static/icons/duotone/clinic-medical.svg | 0 .../static/icons/duotone/clipboard-check.svg | 0 .../icons/duotone/clipboard-list-check.svg | 0 .../static/icons/duotone/clipboard-list.svg | 0 .../icons/duotone/clipboard-prescription.svg | 0 .../static/icons/duotone/clipboard-user.svg | 0 .../static/icons/duotone/clipboard.svg | 0 .../static/icons/duotone/clock.svg | 0 .../static/icons/duotone/clone.svg | 0 .../icons/duotone/closed-captioning.svg | 0 .../icons/duotone/cloud-download-alt.svg | 0 .../static/icons/duotone/cloud-download.svg | 0 .../static/icons/duotone/cloud-drizzle.svg | 0 .../static/icons/duotone/cloud-hail-mixed.svg | 0 .../static/icons/duotone/cloud-hail.svg | 0 .../static/icons/duotone/cloud-meatball.svg | 0 .../static/icons/duotone/cloud-moon-rain.svg | 0 .../static/icons/duotone/cloud-moon.svg | 0 .../static/icons/duotone/cloud-music.svg | 0 .../static/icons/duotone/cloud-rain.svg | 0 .../static/icons/duotone/cloud-rainbow.svg | 0 .../icons/duotone/cloud-showers-heavy.svg | 0 .../static/icons/duotone/cloud-showers.svg | 0 .../static/icons/duotone/cloud-sleet.svg | 0 .../static/icons/duotone/cloud-snow.svg | 0 .../static/icons/duotone/cloud-sun-rain.svg | 0 .../static/icons/duotone/cloud-sun.svg | 0 .../static/icons/duotone/cloud-upload-alt.svg | 0 .../static/icons/duotone/cloud-upload.svg | 0 .../static/icons/duotone/cloud.svg | 0 .../static/icons/duotone/clouds-moon.svg | 0 .../static/icons/duotone/clouds-sun.svg | 0 .../static/icons/duotone/clouds.svg | 0 .../src => src}/static/icons/duotone/club.svg | 0 .../static/icons/duotone/cocktail.svg | 0 .../static/icons/duotone/code-branch.svg | 0 .../static/icons/duotone/code-commit.svg | 0 .../static/icons/duotone/code-merge.svg | 0 .../src => src}/static/icons/duotone/code.svg | 0 .../static/icons/duotone/coffee-pot.svg | 0 .../static/icons/duotone/coffee-togo.svg | 0 .../static/icons/duotone/coffee.svg | 0 .../static/icons/duotone/coffin.svg | 0 .../src => src}/static/icons/duotone/cog.svg | 0 .../src => src}/static/icons/duotone/cogs.svg | 0 .../src => src}/static/icons/duotone/coin.svg | 0 .../static/icons/duotone/coins.svg | 0 .../static/icons/duotone/columns.svg | 0 .../static/icons/duotone/comet.svg | 0 .../icons/duotone/comment-alt-check.svg | 0 .../icons/duotone/comment-alt-dollar.svg | 0 .../static/icons/duotone/comment-alt-dots.svg | 0 .../static/icons/duotone/comment-alt-edit.svg | 0 .../icons/duotone/comment-alt-exclamation.svg | 0 .../icons/duotone/comment-alt-lines.svg | 0 .../icons/duotone/comment-alt-medical.svg | 0 .../icons/duotone/comment-alt-minus.svg | 0 .../icons/duotone/comment-alt-music.svg | 0 .../static/icons/duotone/comment-alt-plus.svg | 0 .../icons/duotone/comment-alt-slash.svg | 0 .../icons/duotone/comment-alt-smile.svg | 0 .../icons/duotone/comment-alt-times.svg | 0 .../static/icons/duotone/comment-alt.svg | 0 .../static/icons/duotone/comment-check.svg | 0 .../static/icons/duotone/comment-dollar.svg | 0 .../static/icons/duotone/comment-dots.svg | 0 .../static/icons/duotone/comment-edit.svg | 0 .../icons/duotone/comment-exclamation.svg | 0 .../static/icons/duotone/comment-lines.svg | 0 .../static/icons/duotone/comment-medical.svg | 0 .../static/icons/duotone/comment-minus.svg | 0 .../static/icons/duotone/comment-music.svg | 0 .../static/icons/duotone/comment-plus.svg | 0 .../static/icons/duotone/comment-slash.svg | 0 .../static/icons/duotone/comment-smile.svg | 0 .../static/icons/duotone/comment-times.svg | 0 .../static/icons/duotone/comment.svg | 0 .../icons/duotone/comments-alt-dollar.svg | 0 .../static/icons/duotone/comments-alt.svg | 0 .../static/icons/duotone/comments-dollar.svg | 0 .../static/icons/duotone/comments.svg | 0 .../static/icons/duotone/compact-disc.svg | 0 .../static/icons/duotone/compass-slash.svg | 0 .../static/icons/duotone/compass.svg | 0 .../static/icons/duotone/compress-alt.svg | 0 .../icons/duotone/compress-arrows-alt.svg | 0 .../static/icons/duotone/compress-wide.svg | 0 .../static/icons/duotone/compress.svg | 0 .../static/icons/duotone/computer-classic.svg | 0 .../static/icons/duotone/computer-speaker.svg | 0 .../static/icons/duotone/concierge-bell.svg | 0 .../static/icons/duotone/construction.svg | 0 .../icons/duotone/container-storage.svg | 0 .../icons/duotone/conveyor-belt-alt.svg | 0 .../static/icons/duotone/conveyor-belt.svg | 0 .../static/icons/duotone/cookie-bite.svg | 0 .../static/icons/duotone/cookie.svg | 0 .../src => src}/static/icons/duotone/copy.svg | 0 .../static/icons/duotone/copyright.svg | 0 .../src => src}/static/icons/duotone/corn.svg | 0 .../static/icons/duotone/couch.svg | 0 .../src => src}/static/icons/duotone/cow.svg | 0 .../static/icons/duotone/cowbell-more.svg | 0 .../static/icons/duotone/cowbell.svg | 0 .../icons/duotone/credit-card-blank.svg | 0 .../icons/duotone/credit-card-front.svg | 0 .../static/icons/duotone/credit-card.svg | 0 .../static/icons/duotone/cricket.svg | 0 .../static/icons/duotone/croissant.svg | 0 .../static/icons/duotone/crop-alt.svg | 0 .../src => src}/static/icons/duotone/crop.svg | 0 .../static/icons/duotone/cross.svg | 0 .../static/icons/duotone/crosshairs.svg | 0 .../src => src}/static/icons/duotone/crow.svg | 0 .../static/icons/duotone/crown.svg | 0 .../static/icons/duotone/crutch.svg | 0 .../static/icons/duotone/crutches.svg | 0 .../src => src}/static/icons/duotone/cube.svg | 0 .../static/icons/duotone/cubes.svg | 0 .../static/icons/duotone/curling.svg | 0 .../src => src}/static/icons/duotone/cut.svg | 0 .../static/icons/duotone/dagger.svg | 0 .../static/icons/duotone/database.svg | 0 .../src => src}/static/icons/duotone/deaf.svg | 0 .../static/icons/duotone/debug.svg | 0 .../static/icons/duotone/deer-rudolph.svg | 0 .../src => src}/static/icons/duotone/deer.svg | 0 .../static/icons/duotone/democrat.svg | 0 .../static/icons/duotone/desktop-alt.svg | 0 .../static/icons/duotone/desktop.svg | 0 .../static/icons/duotone/dewpoint.svg | 0 .../static/icons/duotone/dharmachakra.svg | 0 .../static/icons/duotone/diagnoses.svg | 0 .../static/icons/duotone/diamond.svg | 0 .../static/icons/duotone/dice-d10.svg | 0 .../static/icons/duotone/dice-d12.svg | 0 .../static/icons/duotone/dice-d20.svg | 0 .../static/icons/duotone/dice-d4.svg | 0 .../static/icons/duotone/dice-d6.svg | 0 .../static/icons/duotone/dice-d8.svg | 0 .../static/icons/duotone/dice-five.svg | 0 .../static/icons/duotone/dice-four.svg | 0 .../static/icons/duotone/dice-one.svg | 0 .../static/icons/duotone/dice-six.svg | 0 .../static/icons/duotone/dice-three.svg | 0 .../static/icons/duotone/dice-two.svg | 0 .../src => src}/static/icons/duotone/dice.svg | 0 .../static/icons/duotone/digging.svg | 0 .../icons/duotone/digital-tachograph.svg | 0 .../static/icons/duotone/diploma.svg | 0 .../static/icons/duotone/directions.svg | 0 .../static/icons/duotone/disc-drive.svg | 0 .../static/icons/duotone/disease.svg | 0 .../static/icons/duotone/divide.svg | 0 .../static/icons/duotone/dizzy.svg | 0 .../src => src}/static/icons/duotone/dna.svg | 0 .../static/icons/duotone/do-not-enter.svg | 0 .../static/icons/duotone/dog-leashed.svg | 0 .../src => src}/static/icons/duotone/dog.svg | 0 .../static/icons/duotone/dollar-sign.svg | 0 .../static/icons/duotone/dolly-empty.svg | 0 .../icons/duotone/dolly-flatbed-alt.svg | 0 .../icons/duotone/dolly-flatbed-empty.svg | 0 .../static/icons/duotone/dolly-flatbed.svg | 0 .../static/icons/duotone/dolly.svg | 0 .../static/icons/duotone/donate.svg | 0 .../static/icons/duotone/door-closed.svg | 0 .../static/icons/duotone/door-open.svg | 0 .../static/icons/duotone/dot-circle.svg | 0 .../src => src}/static/icons/duotone/dove.svg | 0 .../static/icons/duotone/download.svg | 0 .../static/icons/duotone/drafting-compass.svg | 0 .../static/icons/duotone/dragon.svg | 0 .../static/icons/duotone/draw-circle.svg | 0 .../static/icons/duotone/draw-polygon.svg | 0 .../static/icons/duotone/draw-square.svg | 0 .../static/icons/duotone/dreidel.svg | 0 .../static/icons/duotone/drone-alt.svg | 0 .../static/icons/duotone/drone.svg | 0 .../static/icons/duotone/drum-steelpan.svg | 0 .../src => src}/static/icons/duotone/drum.svg | 0 .../static/icons/duotone/drumstick-bite.svg | 0 .../static/icons/duotone/drumstick.svg | 0 .../static/icons/duotone/dryer-alt.svg | 0 .../static/icons/duotone/dryer.svg | 0 .../src => src}/static/icons/duotone/duck.svg | 0 .../static/icons/duotone/dumbbell.svg | 0 .../static/icons/duotone/dumpster-fire.svg | 0 .../static/icons/duotone/dumpster.svg | 0 .../static/icons/duotone/dungeon.svg | 0 .../static/icons/duotone/ear-muffs.svg | 0 .../src => src}/static/icons/duotone/ear.svg | 0 .../static/icons/duotone/eclipse-alt.svg | 0 .../static/icons/duotone/eclipse.svg | 0 .../src => src}/static/icons/duotone/edit.svg | 0 .../static/icons/duotone/egg-fried.svg | 0 .../src => src}/static/icons/duotone/egg.svg | 0 .../static/icons/duotone/eject.svg | 0 .../static/icons/duotone/elephant.svg | 0 .../static/icons/duotone/ellipsis-h-alt.svg | 0 .../static/icons/duotone/ellipsis-h.svg | 0 .../static/icons/duotone/ellipsis-v-alt.svg | 0 .../static/icons/duotone/ellipsis-v.svg | 0 .../static/icons/duotone/empty-set.svg | 0 .../static/icons/duotone/engine-warning.svg | 0 .../icons/duotone/envelope-open-dollar.svg | 0 .../icons/duotone/envelope-open-text.svg | 0 .../static/icons/duotone/envelope-open.svg | 0 .../static/icons/duotone/envelope-square.svg | 0 .../static/icons/duotone/envelope.svg | 0 .../static/icons/duotone/equals.svg | 0 .../static/icons/duotone/eraser.svg | 0 .../static/icons/duotone/ethernet.svg | 0 .../static/icons/duotone/euro-sign.svg | 0 .../static/icons/duotone/exchange-alt.svg | 0 .../static/icons/duotone/exchange.svg | 0 .../icons/duotone/exclamation-circle.svg | 0 .../icons/duotone/exclamation-square.svg | 0 .../icons/duotone/exclamation-triangle.svg | 0 .../static/icons/duotone/exclamation.svg | 0 .../static/icons/duotone/expand-alt.svg | 0 .../icons/duotone/expand-arrows-alt.svg | 0 .../static/icons/duotone/expand-arrows.svg | 0 .../static/icons/duotone/expand-wide.svg | 0 .../static/icons/duotone/expand.svg | 0 .../icons/duotone/external-link-alt.svg | 0 .../duotone/external-link-square-alt.svg | 0 .../icons/duotone/external-link-square.svg | 0 .../static/icons/duotone/external-link.svg | 0 .../static/icons/duotone/eye-dropper.svg | 0 .../static/icons/duotone/eye-evil.svg | 0 .../static/icons/duotone/eye-slash.svg | 0 .../src => src}/static/icons/duotone/eye.svg | 0 .../static/icons/duotone/fan-table.svg | 0 .../src => src}/static/icons/duotone/fan.svg | 0 .../src => src}/static/icons/duotone/farm.svg | 0 .../static/icons/duotone/fast-backward.svg | 0 .../static/icons/duotone/fast-forward.svg | 0 .../static/icons/duotone/faucet-drip.svg | 0 .../static/icons/duotone/faucet.svg | 0 .../src => src}/static/icons/duotone/fax.svg | 0 .../static/icons/duotone/feather-alt.svg | 0 .../static/icons/duotone/feather.svg | 0 .../static/icons/duotone/female.svg | 0 .../static/icons/duotone/field-hockey.svg | 0 .../static/icons/duotone/fighter-jet.svg | 0 .../static/icons/duotone/file-alt.svg | 0 .../static/icons/duotone/file-archive.svg | 0 .../static/icons/duotone/file-audio.svg | 0 .../static/icons/duotone/file-certificate.svg | 0 .../static/icons/duotone/file-chart-line.svg | 0 .../static/icons/duotone/file-chart-pie.svg | 0 .../static/icons/duotone/file-check.svg | 0 .../static/icons/duotone/file-code.svg | 0 .../static/icons/duotone/file-contract.svg | 0 .../static/icons/duotone/file-csv.svg | 0 .../static/icons/duotone/file-download.svg | 0 .../static/icons/duotone/file-edit.svg | 0 .../static/icons/duotone/file-excel.svg | 0 .../static/icons/duotone/file-exclamation.svg | 0 .../static/icons/duotone/file-export.svg | 0 .../static/icons/duotone/file-image.svg | 0 .../static/icons/duotone/file-import.svg | 0 .../icons/duotone/file-invoice-dollar.svg | 0 .../static/icons/duotone/file-invoice.svg | 0 .../static/icons/duotone/file-medical-alt.svg | 0 .../static/icons/duotone/file-medical.svg | 0 .../static/icons/duotone/file-minus.svg | 0 .../static/icons/duotone/file-music.svg | 0 .../static/icons/duotone/file-pdf.svg | 0 .../static/icons/duotone/file-plus.svg | 0 .../static/icons/duotone/file-powerpoint.svg | 0 .../icons/duotone/file-prescription.svg | 0 .../static/icons/duotone/file-search.svg | 0 .../static/icons/duotone/file-signature.svg | 0 .../static/icons/duotone/file-spreadsheet.svg | 0 .../static/icons/duotone/file-times.svg | 0 .../static/icons/duotone/file-upload.svg | 0 .../static/icons/duotone/file-user.svg | 0 .../static/icons/duotone/file-video.svg | 0 .../static/icons/duotone/file-word.svg | 0 .../src => src}/static/icons/duotone/file.svg | 0 .../static/icons/duotone/files-medical.svg | 0 .../static/icons/duotone/fill-drip.svg | 0 .../src => src}/static/icons/duotone/fill.svg | 0 .../static/icons/duotone/film-alt.svg | 0 .../static/icons/duotone/film-canister.svg | 0 .../src => src}/static/icons/duotone/film.svg | 0 .../static/icons/duotone/filter.svg | 0 .../static/icons/duotone/fingerprint.svg | 0 .../static/icons/duotone/fire-alt.svg | 0 .../icons/duotone/fire-extinguisher.svg | 0 .../static/icons/duotone/fire-smoke.svg | 0 .../src => src}/static/icons/duotone/fire.svg | 0 .../static/icons/duotone/fireplace.svg | 0 .../static/icons/duotone/first-aid.svg | 0 .../static/icons/duotone/fish-cooked.svg | 0 .../src => src}/static/icons/duotone/fish.svg | 0 .../static/icons/duotone/fist-raised.svg | 0 .../static/icons/duotone/flag-alt.svg | 0 .../static/icons/duotone/flag-checkered.svg | 0 .../static/icons/duotone/flag-usa.svg | 0 .../src => src}/static/icons/duotone/flag.svg | 0 .../static/icons/duotone/flame.svg | 0 .../static/icons/duotone/flashlight.svg | 0 .../static/icons/duotone/flask-poison.svg | 0 .../static/icons/duotone/flask-potion.svg | 0 .../static/icons/duotone/flask.svg | 0 .../static/icons/duotone/flower-daffodil.svg | 0 .../static/icons/duotone/flower-tulip.svg | 0 .../static/icons/duotone/flower.svg | 0 .../static/icons/duotone/flushed.svg | 0 .../static/icons/duotone/flute.svg | 0 .../static/icons/duotone/flux-capacitor.svg | 0 .../src => src}/static/icons/duotone/fog.svg | 0 .../static/icons/duotone/folder-minus.svg | 0 .../static/icons/duotone/folder-open.svg | 0 .../static/icons/duotone/folder-plus.svg | 0 .../static/icons/duotone/folder-times.svg | 0 .../static/icons/duotone/folder-tree.svg | 0 .../static/icons/duotone/folder.svg | 0 .../static/icons/duotone/folders.svg | 0 .../icons/duotone/font-awesome-logo-full.svg | 0 .../static/icons/duotone/font-case.svg | 0 .../src => src}/static/icons/duotone/font.svg | 0 .../static/icons/duotone/football-ball.svg | 0 .../static/icons/duotone/football-helmet.svg | 0 .../static/icons/duotone/forklift.svg | 0 .../static/icons/duotone/forward.svg | 0 .../static/icons/duotone/fragile.svg | 0 .../static/icons/duotone/french-fries.svg | 0 .../src => src}/static/icons/duotone/frog.svg | 0 .../static/icons/duotone/frosty-head.svg | 0 .../static/icons/duotone/frown-open.svg | 0 .../static/icons/duotone/frown.svg | 0 .../static/icons/duotone/function.svg | 0 .../static/icons/duotone/funnel-dollar.svg | 0 .../static/icons/duotone/futbol.svg | 0 .../static/icons/duotone/galaxy.svg | 0 .../static/icons/duotone/game-board-alt.svg | 0 .../static/icons/duotone/game-board.svg | 0 .../icons/duotone/game-console-handheld.svg | 0 .../static/icons/duotone/gamepad-alt.svg | 0 .../static/icons/duotone/gamepad.svg | 0 .../static/icons/duotone/garage-car.svg | 0 .../static/icons/duotone/garage-open.svg | 0 .../static/icons/duotone/garage.svg | 0 .../static/icons/duotone/gas-pump-slash.svg | 0 .../static/icons/duotone/gas-pump.svg | 0 .../static/icons/duotone/gavel.svg | 0 .../src => src}/static/icons/duotone/gem.svg | 0 .../static/icons/duotone/genderless.svg | 0 .../static/icons/duotone/ghost.svg | 0 .../static/icons/duotone/gift-card.svg | 0 .../src => src}/static/icons/duotone/gift.svg | 0 .../static/icons/duotone/gifts.svg | 0 .../static/icons/duotone/gingerbread-man.svg | 0 .../static/icons/duotone/glass-champagne.svg | 0 .../static/icons/duotone/glass-cheers.svg | 0 .../static/icons/duotone/glass-citrus.svg | 0 .../icons/duotone/glass-martini-alt.svg | 0 .../static/icons/duotone/glass-martini.svg | 0 .../icons/duotone/glass-whiskey-rocks.svg | 0 .../static/icons/duotone/glass-whiskey.svg | 0 .../static/icons/duotone/glass.svg | 0 .../static/icons/duotone/glasses-alt.svg | 0 .../static/icons/duotone/glasses.svg | 0 .../static/icons/duotone/globe-africa.svg | 0 .../static/icons/duotone/globe-americas.svg | 0 .../static/icons/duotone/globe-asia.svg | 0 .../static/icons/duotone/globe-europe.svg | 0 .../static/icons/duotone/globe-snow.svg | 0 .../static/icons/duotone/globe-stand.svg | 0 .../static/icons/duotone/globe.svg | 0 .../static/icons/duotone/golf-ball.svg | 0 .../static/icons/duotone/golf-club.svg | 0 .../static/icons/duotone/gopuram.svg | 0 .../static/icons/duotone/graduation-cap.svg | 0 .../static/icons/duotone/gramophone.svg | 0 .../icons/duotone/greater-than-equal.svg | 0 .../static/icons/duotone/greater-than.svg | 0 .../static/icons/duotone/grimace.svg | 0 .../static/icons/duotone/grin-alt.svg | 0 .../static/icons/duotone/grin-beam-sweat.svg | 0 .../static/icons/duotone/grin-beam.svg | 0 .../static/icons/duotone/grin-hearts.svg | 0 .../icons/duotone/grin-squint-tears.svg | 0 .../static/icons/duotone/grin-squint.svg | 0 .../static/icons/duotone/grin-stars.svg | 0 .../static/icons/duotone/grin-tears.svg | 0 .../icons/duotone/grin-tongue-squint.svg | 0 .../static/icons/duotone/grin-tongue-wink.svg | 0 .../static/icons/duotone/grin-tongue.svg | 0 .../static/icons/duotone/grin-wink.svg | 0 .../src => src}/static/icons/duotone/grin.svg | 0 .../static/icons/duotone/grip-horizontal.svg | 0 .../icons/duotone/grip-lines-vertical.svg | 0 .../static/icons/duotone/grip-lines.svg | 0 .../static/icons/duotone/grip-vertical.svg | 0 .../static/icons/duotone/guitar-electric.svg | 0 .../static/icons/duotone/guitar.svg | 0 .../static/icons/duotone/guitars.svg | 0 .../static/icons/duotone/h-square.svg | 0 .../src => src}/static/icons/duotone/h1.svg | 0 .../src => src}/static/icons/duotone/h2.svg | 0 .../src => src}/static/icons/duotone/h3.svg | 0 .../src => src}/static/icons/duotone/h4.svg | 0 .../static/icons/duotone/hamburger.svg | 0 .../static/icons/duotone/hammer-war.svg | 0 .../static/icons/duotone/hammer.svg | 0 .../static/icons/duotone/hamsa.svg | 0 .../static/icons/duotone/hand-heart.svg | 0 .../static/icons/duotone/hand-holding-box.svg | 0 .../icons/duotone/hand-holding-heart.svg | 0 .../icons/duotone/hand-holding-magic.svg | 0 .../icons/duotone/hand-holding-seedling.svg | 0 .../static/icons/duotone/hand-holding-usd.svg | 0 .../icons/duotone/hand-holding-water.svg | 0 .../static/icons/duotone/hand-holding.svg | 0 .../static/icons/duotone/hand-lizard.svg | 0 .../icons/duotone/hand-middle-finger.svg | 0 .../static/icons/duotone/hand-paper.svg | 0 .../static/icons/duotone/hand-peace.svg | 0 .../static/icons/duotone/hand-point-down.svg | 0 .../static/icons/duotone/hand-point-left.svg | 0 .../static/icons/duotone/hand-point-right.svg | 0 .../static/icons/duotone/hand-point-up.svg | 0 .../static/icons/duotone/hand-pointer.svg | 0 .../static/icons/duotone/hand-receiving.svg | 0 .../static/icons/duotone/hand-rock.svg | 0 .../static/icons/duotone/hand-scissors.svg | 0 .../static/icons/duotone/hand-spock.svg | 0 .../static/icons/duotone/hands-heart.svg | 0 .../static/icons/duotone/hands-helping.svg | 0 .../static/icons/duotone/hands-usd.svg | 0 .../static/icons/duotone/hands.svg | 0 .../static/icons/duotone/handshake-alt.svg | 0 .../static/icons/duotone/handshake.svg | 0 .../static/icons/duotone/hanukiah.svg | 0 .../static/icons/duotone/hard-hat.svg | 0 .../static/icons/duotone/hashtag.svg | 0 .../static/icons/duotone/hat-chef.svg | 0 .../static/icons/duotone/hat-cowboy-side.svg | 0 .../static/icons/duotone/hat-cowboy.svg | 0 .../static/icons/duotone/hat-santa.svg | 0 .../static/icons/duotone/hat-winter.svg | 0 .../static/icons/duotone/hat-witch.svg | 0 .../static/icons/duotone/hat-wizard.svg | 0 .../src => src}/static/icons/duotone/hdd.svg | 0 .../static/icons/duotone/head-side-brain.svg | 0 .../icons/duotone/head-side-headphones.svg | 0 .../icons/duotone/head-side-medical.svg | 0 .../static/icons/duotone/head-side.svg | 0 .../static/icons/duotone/head-vr.svg | 0 .../static/icons/duotone/heading.svg | 0 .../static/icons/duotone/headphones-alt.svg | 0 .../static/icons/duotone/headphones.svg | 0 .../static/icons/duotone/headset.svg | 0 .../static/icons/duotone/heart-broken.svg | 0 .../static/icons/duotone/heart-circle.svg | 0 .../static/icons/duotone/heart-rate.svg | 0 .../static/icons/duotone/heart-square.svg | 0 .../static/icons/duotone/heart.svg | 0 .../static/icons/duotone/heartbeat.svg | 0 .../src => src}/static/icons/duotone/heat.svg | 0 .../static/icons/duotone/helicopter.svg | 0 .../static/icons/duotone/helmet-battle.svg | 0 .../static/icons/duotone/hexagon.svg | 0 .../static/icons/duotone/highlighter.svg | 0 .../static/icons/duotone/hiking.svg | 0 .../static/icons/duotone/hippo.svg | 0 .../static/icons/duotone/history.svg | 0 .../static/icons/duotone/hockey-mask.svg | 0 .../static/icons/duotone/hockey-puck.svg | 0 .../static/icons/duotone/hockey-sticks.svg | 0 .../static/icons/duotone/holly-berry.svg | 0 .../static/icons/duotone/home-alt.svg | 0 .../static/icons/duotone/home-heart.svg | 0 .../static/icons/duotone/home-lg-alt.svg | 0 .../static/icons/duotone/home-lg.svg | 0 .../src => src}/static/icons/duotone/home.svg | 0 .../static/icons/duotone/hood-cloak.svg | 0 .../static/icons/duotone/horizontal-rule.svg | 0 .../static/icons/duotone/horse-head.svg | 0 .../static/icons/duotone/horse-saddle.svg | 0 .../static/icons/duotone/horse.svg | 0 .../static/icons/duotone/hospital-alt.svg | 0 .../static/icons/duotone/hospital-symbol.svg | 0 .../static/icons/duotone/hospital-user.svg | 0 .../static/icons/duotone/hospital.svg | 0 .../static/icons/duotone/hospitals.svg | 0 .../static/icons/duotone/hot-tub.svg | 0 .../static/icons/duotone/hotdog.svg | 0 .../static/icons/duotone/hotel.svg | 0 .../static/icons/duotone/hourglass-end.svg | 0 .../static/icons/duotone/hourglass-half.svg | 0 .../static/icons/duotone/hourglass-start.svg | 0 .../static/icons/duotone/hourglass.svg | 0 .../static/icons/duotone/house-damage.svg | 0 .../static/icons/duotone/house-day.svg | 0 .../static/icons/duotone/house-flood.svg | 0 .../static/icons/duotone/house-leave.svg | 0 .../static/icons/duotone/house-night.svg | 0 .../static/icons/duotone/house-return.svg | 0 .../static/icons/duotone/house-signal.svg | 0 .../static/icons/duotone/house.svg | 0 .../static/icons/duotone/hryvnia.svg | 0 .../static/icons/duotone/humidity.svg | 0 .../static/icons/duotone/hurricane.svg | 0 .../static/icons/duotone/i-cursor.svg | 0 .../static/icons/duotone/ice-cream.svg | 0 .../static/icons/duotone/ice-skate.svg | 0 .../static/icons/duotone/icicles.svg | 0 .../static/icons/duotone/icons-alt.svg | 0 .../static/icons/duotone/icons.svg | 0 .../static/icons/duotone/id-badge.svg | 0 .../static/icons/duotone/id-card-alt.svg | 0 .../static/icons/duotone/id-card.svg | 0 .../static/icons/duotone/igloo.svg | 0 .../static/icons/duotone/image-polaroid.svg | 0 .../static/icons/duotone/image.svg | 0 .../static/icons/duotone/images.svg | 0 .../static/icons/duotone/inbox-in.svg | 0 .../static/icons/duotone/inbox-out.svg | 0 .../static/icons/duotone/inbox.svg | 0 .../static/icons/duotone/indent.svg | 0 .../static/icons/duotone/industry-alt.svg | 0 .../static/icons/duotone/industry.svg | 0 .../static/icons/duotone/infinity.svg | 0 .../static/icons/duotone/info-circle.svg | 0 .../static/icons/duotone/info-square.svg | 0 .../src => src}/static/icons/duotone/info.svg | 0 .../static/icons/duotone/inhaler.svg | 0 .../static/icons/duotone/integral.svg | 0 .../static/icons/duotone/intersection.svg | 0 .../static/icons/duotone/inventory.svg | 0 .../static/icons/duotone/island-tropical.svg | 0 .../static/icons/duotone/italic.svg | 0 .../static/icons/duotone/jack-o-lantern.svg | 0 .../src => src}/static/icons/duotone/jedi.svg | 0 .../static/icons/duotone/joint.svg | 0 .../static/icons/duotone/journal-whills.svg | 0 .../static/icons/duotone/joystick.svg | 0 .../src => src}/static/icons/duotone/jug.svg | 0 .../static/icons/duotone/kaaba.svg | 0 .../static/icons/duotone/kazoo.svg | 0 .../static/icons/duotone/kerning.svg | 0 .../static/icons/duotone/key-skeleton.svg | 0 .../src => src}/static/icons/duotone/key.svg | 0 .../static/icons/duotone/keyboard.svg | 0 .../static/icons/duotone/keynote.svg | 0 .../static/icons/duotone/khanda.svg | 0 .../static/icons/duotone/kidneys.svg | 0 .../static/icons/duotone/kiss-beam.svg | 0 .../static/icons/duotone/kiss-wink-heart.svg | 0 .../src => src}/static/icons/duotone/kiss.svg | 0 .../src => src}/static/icons/duotone/kite.svg | 0 .../static/icons/duotone/kiwi-bird.svg | 0 .../static/icons/duotone/knife-kitchen.svg | 0 .../static/icons/duotone/lambda.svg | 0 .../static/icons/duotone/lamp-desk.svg | 0 .../static/icons/duotone/lamp-floor.svg | 0 .../src => src}/static/icons/duotone/lamp.svg | 0 .../static/icons/duotone/landmark-alt.svg | 0 .../static/icons/duotone/landmark.svg | 0 .../static/icons/duotone/language.svg | 0 .../static/icons/duotone/laptop-code.svg | 0 .../static/icons/duotone/laptop-medical.svg | 0 .../static/icons/duotone/laptop.svg | 0 .../static/icons/duotone/lasso.svg | 0 .../static/icons/duotone/laugh-beam.svg | 0 .../static/icons/duotone/laugh-squint.svg | 0 .../static/icons/duotone/laugh-wink.svg | 0 .../static/icons/duotone/laugh.svg | 0 .../static/icons/duotone/layer-group.svg | 0 .../static/icons/duotone/layer-minus.svg | 0 .../static/icons/duotone/layer-plus.svg | 0 .../static/icons/duotone/leaf-heart.svg | 0 .../static/icons/duotone/leaf-maple.svg | 0 .../static/icons/duotone/leaf-oak.svg | 0 .../src => src}/static/icons/duotone/leaf.svg | 0 .../static/icons/duotone/lemon.svg | 0 .../static/icons/duotone/less-than-equal.svg | 0 .../static/icons/duotone/less-than.svg | 0 .../static/icons/duotone/level-down-alt.svg | 0 .../static/icons/duotone/level-down.svg | 0 .../static/icons/duotone/level-up-alt.svg | 0 .../static/icons/duotone/level-up.svg | 0 .../static/icons/duotone/life-ring.svg | 0 .../static/icons/duotone/light-ceiling.svg | 0 .../static/icons/duotone/light-switch-off.svg | 0 .../static/icons/duotone/light-switch-on.svg | 0 .../static/icons/duotone/light-switch.svg | 0 .../static/icons/duotone/lightbulb-dollar.svg | 0 .../icons/duotone/lightbulb-exclamation.svg | 0 .../static/icons/duotone/lightbulb-on.svg | 0 .../static/icons/duotone/lightbulb-slash.svg | 0 .../static/icons/duotone/lightbulb.svg | 0 .../static/icons/duotone/lights-holiday.svg | 0 .../static/icons/duotone/line-columns.svg | 0 .../static/icons/duotone/line-height.svg | 0 .../src => src}/static/icons/duotone/link.svg | 0 .../src => src}/static/icons/duotone/lips.svg | 0 .../static/icons/duotone/lira-sign.svg | 0 .../static/icons/duotone/list-alt.svg | 0 .../static/icons/duotone/list-music.svg | 0 .../static/icons/duotone/list-ol.svg | 0 .../static/icons/duotone/list-ul.svg | 0 .../src => src}/static/icons/duotone/list.svg | 0 .../static/icons/duotone/location-arrow.svg | 0 .../static/icons/duotone/location-circle.svg | 0 .../static/icons/duotone/location-slash.svg | 0 .../static/icons/duotone/location.svg | 0 .../static/icons/duotone/lock-alt.svg | 0 .../static/icons/duotone/lock-open-alt.svg | 0 .../static/icons/duotone/lock-open.svg | 0 .../src => src}/static/icons/duotone/lock.svg | 0 .../icons/duotone/long-arrow-alt-down.svg | 0 .../icons/duotone/long-arrow-alt-left.svg | 0 .../icons/duotone/long-arrow-alt-right.svg | 0 .../icons/duotone/long-arrow-alt-up.svg | 0 .../static/icons/duotone/long-arrow-down.svg | 0 .../static/icons/duotone/long-arrow-left.svg | 0 .../static/icons/duotone/long-arrow-right.svg | 0 .../static/icons/duotone/long-arrow-up.svg | 0 .../static/icons/duotone/loveseat.svg | 0 .../static/icons/duotone/low-vision.svg | 0 .../static/icons/duotone/luchador.svg | 0 .../static/icons/duotone/luggage-cart.svg | 0 .../static/icons/duotone/lungs.svg | 0 .../src => src}/static/icons/duotone/mace.svg | 0 .../static/icons/duotone/magic.svg | 0 .../static/icons/duotone/magnet.svg | 0 .../static/icons/duotone/mail-bulk.svg | 0 .../static/icons/duotone/mailbox.svg | 0 .../src => src}/static/icons/duotone/male.svg | 0 .../static/icons/duotone/mandolin.svg | 0 .../static/icons/duotone/map-marked-alt.svg | 0 .../static/icons/duotone/map-marked.svg | 0 .../icons/duotone/map-marker-alt-slash.svg | 0 .../static/icons/duotone/map-marker-alt.svg | 0 .../static/icons/duotone/map-marker-check.svg | 0 .../static/icons/duotone/map-marker-edit.svg | 0 .../icons/duotone/map-marker-exclamation.svg | 0 .../static/icons/duotone/map-marker-minus.svg | 0 .../static/icons/duotone/map-marker-plus.svg | 0 .../icons/duotone/map-marker-question.svg | 0 .../static/icons/duotone/map-marker-slash.svg | 0 .../static/icons/duotone/map-marker-smile.svg | 0 .../static/icons/duotone/map-marker-times.svg | 0 .../static/icons/duotone/map-marker.svg | 0 .../static/icons/duotone/map-pin.svg | 0 .../static/icons/duotone/map-signs.svg | 0 .../src => src}/static/icons/duotone/map.svg | 0 .../static/icons/duotone/marker.svg | 0 .../static/icons/duotone/mars-double.svg | 0 .../static/icons/duotone/mars-stroke-h.svg | 0 .../static/icons/duotone/mars-stroke-v.svg | 0 .../static/icons/duotone/mars-stroke.svg | 0 .../src => src}/static/icons/duotone/mars.svg | 0 .../src => src}/static/icons/duotone/mask.svg | 0 .../src => src}/static/icons/duotone/meat.svg | 0 .../static/icons/duotone/medal.svg | 0 .../static/icons/duotone/medkit.svg | 0 .../static/icons/duotone/megaphone.svg | 0 .../static/icons/duotone/meh-blank.svg | 0 .../static/icons/duotone/meh-rolling-eyes.svg | 0 .../src => src}/static/icons/duotone/meh.svg | 0 .../static/icons/duotone/memory.svg | 0 .../static/icons/duotone/menorah.svg | 0 .../static/icons/duotone/mercury.svg | 0 .../static/icons/duotone/meteor.svg | 0 .../static/icons/duotone/microchip.svg | 0 .../icons/duotone/microphone-alt-slash.svg | 0 .../static/icons/duotone/microphone-alt.svg | 0 .../static/icons/duotone/microphone-slash.svg | 0 .../static/icons/duotone/microphone-stand.svg | 0 .../static/icons/duotone/microphone.svg | 0 .../static/icons/duotone/microscope.svg | 0 .../static/icons/duotone/microwave.svg | 0 .../static/icons/duotone/mind-share.svg | 0 .../static/icons/duotone/minus-circle.svg | 0 .../static/icons/duotone/minus-hexagon.svg | 0 .../static/icons/duotone/minus-octagon.svg | 0 .../static/icons/duotone/minus-square.svg | 0 .../static/icons/duotone/minus.svg | 0 .../static/icons/duotone/mistletoe.svg | 0 .../static/icons/duotone/mitten.svg | 0 .../static/icons/duotone/mobile-alt.svg | 0 .../icons/duotone/mobile-android-alt.svg | 0 .../static/icons/duotone/mobile-android.svg | 0 .../static/icons/duotone/mobile.svg | 0 .../static/icons/duotone/money-bill-alt.svg | 0 .../icons/duotone/money-bill-wave-alt.svg | 0 .../static/icons/duotone/money-bill-wave.svg | 0 .../static/icons/duotone/money-bill.svg | 0 .../static/icons/duotone/money-check-alt.svg | 0 .../icons/duotone/money-check-edit-alt.svg | 0 .../static/icons/duotone/money-check-edit.svg | 0 .../static/icons/duotone/money-check.svg | 0 .../icons/duotone/monitor-heart-rate.svg | 0 .../static/icons/duotone/monkey.svg | 0 .../static/icons/duotone/monument.svg | 0 .../static/icons/duotone/moon-cloud.svg | 0 .../static/icons/duotone/moon-stars.svg | 0 .../src => src}/static/icons/duotone/moon.svg | 0 .../static/icons/duotone/mortar-pestle.svg | 0 .../static/icons/duotone/mosque.svg | 0 .../static/icons/duotone/motorcycle.svg | 0 .../static/icons/duotone/mountain.svg | 0 .../static/icons/duotone/mountains.svg | 0 .../static/icons/duotone/mouse-alt.svg | 0 .../static/icons/duotone/mouse-pointer.svg | 0 .../static/icons/duotone/mouse.svg | 0 .../static/icons/duotone/mp3-player.svg | 0 .../static/icons/duotone/mug-hot.svg | 0 .../static/icons/duotone/mug-marshmallows.svg | 0 .../static/icons/duotone/mug-tea.svg | 0 .../src => src}/static/icons/duotone/mug.svg | 0 .../static/icons/duotone/music-alt-slash.svg | 0 .../static/icons/duotone/music-alt.svg | 0 .../static/icons/duotone/music-slash.svg | 0 .../static/icons/duotone/music.svg | 0 .../static/icons/duotone/narwhal.svg | 0 .../static/icons/duotone/network-wired.svg | 0 .../static/icons/duotone/neuter.svg | 0 .../static/icons/duotone/newspaper.svg | 0 .../static/icons/duotone/not-equal.svg | 0 .../static/icons/duotone/notes-medical.svg | 0 .../static/icons/duotone/object-group.svg | 0 .../static/icons/duotone/object-ungroup.svg | 0 .../static/icons/duotone/octagon.svg | 0 .../static/icons/duotone/oil-can.svg | 0 .../static/icons/duotone/oil-temp.svg | 0 .../src => src}/static/icons/duotone/om.svg | 0 .../static/icons/duotone/omega.svg | 0 .../static/icons/duotone/ornament.svg | 0 .../static/icons/duotone/otter.svg | 0 .../static/icons/duotone/outdent.svg | 0 .../static/icons/duotone/outlet.svg | 0 .../src => src}/static/icons/duotone/oven.svg | 0 .../static/icons/duotone/overline.svg | 0 .../static/icons/duotone/page-break.svg | 0 .../static/icons/duotone/pager.svg | 0 .../static/icons/duotone/paint-brush-alt.svg | 0 .../static/icons/duotone/paint-brush.svg | 0 .../static/icons/duotone/paint-roller.svg | 0 .../static/icons/duotone/palette.svg | 0 .../static/icons/duotone/pallet-alt.svg | 0 .../static/icons/duotone/pallet.svg | 0 .../static/icons/duotone/paper-plane.svg | 0 .../static/icons/duotone/paperclip.svg | 0 .../static/icons/duotone/parachute-box.svg | 0 .../static/icons/duotone/paragraph-rtl.svg | 0 .../static/icons/duotone/paragraph.svg | 0 .../icons/duotone/parking-circle-slash.svg | 0 .../static/icons/duotone/parking-circle.svg | 0 .../static/icons/duotone/parking-slash.svg | 0 .../static/icons/duotone/parking.svg | 0 .../static/icons/duotone/passport.svg | 0 .../static/icons/duotone/pastafarianism.svg | 0 .../static/icons/duotone/paste.svg | 0 .../static/icons/duotone/pause-circle.svg | 0 .../static/icons/duotone/pause.svg | 0 .../static/icons/duotone/paw-alt.svg | 0 .../static/icons/duotone/paw-claws.svg | 0 .../src => src}/static/icons/duotone/paw.svg | 0 .../static/icons/duotone/peace.svg | 0 .../static/icons/duotone/pegasus.svg | 0 .../static/icons/duotone/pen-alt.svg | 0 .../static/icons/duotone/pen-fancy.svg | 0 .../static/icons/duotone/pen-nib.svg | 0 .../static/icons/duotone/pen-square.svg | 0 .../src => src}/static/icons/duotone/pen.svg | 0 .../static/icons/duotone/pencil-alt.svg | 0 .../icons/duotone/pencil-paintbrush.svg | 0 .../static/icons/duotone/pencil-ruler.svg | 0 .../static/icons/duotone/pencil.svg | 0 .../static/icons/duotone/pennant.svg | 0 .../static/icons/duotone/people-carry.svg | 0 .../static/icons/duotone/pepper-hot.svg | 0 .../static/icons/duotone/percent.svg | 0 .../static/icons/duotone/percentage.svg | 0 .../static/icons/duotone/person-booth.svg | 0 .../static/icons/duotone/person-carry.svg | 0 .../icons/duotone/person-dolly-empty.svg | 0 .../static/icons/duotone/person-dolly.svg | 0 .../static/icons/duotone/person-sign.svg | 0 .../static/icons/duotone/phone-alt.svg | 0 .../static/icons/duotone/phone-laptop.svg | 0 .../static/icons/duotone/phone-office.svg | 0 .../static/icons/duotone/phone-plus.svg | 0 .../static/icons/duotone/phone-rotary.svg | 0 .../static/icons/duotone/phone-slash.svg | 0 .../static/icons/duotone/phone-square-alt.svg | 0 .../static/icons/duotone/phone-square.svg | 0 .../static/icons/duotone/phone-volume.svg | 0 .../static/icons/duotone/phone.svg | 0 .../static/icons/duotone/photo-video.svg | 0 .../src => src}/static/icons/duotone/pi.svg | 0 .../static/icons/duotone/piano-keyboard.svg | 0 .../static/icons/duotone/piano.svg | 0 .../src => src}/static/icons/duotone/pie.svg | 0 .../src => src}/static/icons/duotone/pig.svg | 0 .../static/icons/duotone/piggy-bank.svg | 0 .../static/icons/duotone/pills.svg | 0 .../static/icons/duotone/pizza-slice.svg | 0 .../static/icons/duotone/pizza.svg | 0 .../static/icons/duotone/place-of-worship.svg | 0 .../static/icons/duotone/plane-alt.svg | 0 .../static/icons/duotone/plane-arrival.svg | 0 .../static/icons/duotone/plane-departure.svg | 0 .../static/icons/duotone/plane.svg | 0 .../static/icons/duotone/planet-moon.svg | 0 .../static/icons/duotone/planet-ringed.svg | 0 .../static/icons/duotone/play-circle.svg | 0 .../src => src}/static/icons/duotone/play.svg | 0 .../src => src}/static/icons/duotone/plug.svg | 0 .../static/icons/duotone/plus-circle.svg | 0 .../static/icons/duotone/plus-hexagon.svg | 0 .../static/icons/duotone/plus-octagon.svg | 0 .../static/icons/duotone/plus-square.svg | 0 .../src => src}/static/icons/duotone/plus.svg | 0 .../static/icons/duotone/podcast.svg | 0 .../static/icons/duotone/podium-star.svg | 0 .../static/icons/duotone/podium.svg | 0 .../static/icons/duotone/police-box.svg | 0 .../static/icons/duotone/poll-h.svg | 0 .../static/icons/duotone/poll-people.svg | 0 .../src => src}/static/icons/duotone/poll.svg | 0 .../static/icons/duotone/poo-storm.svg | 0 .../src => src}/static/icons/duotone/poo.svg | 0 .../src => src}/static/icons/duotone/poop.svg | 0 .../static/icons/duotone/popcorn.svg | 0 .../static/icons/duotone/portal-enter.svg | 0 .../static/icons/duotone/portal-exit.svg | 0 .../static/icons/duotone/portrait.svg | 0 .../static/icons/duotone/pound-sign.svg | 0 .../static/icons/duotone/power-off.svg | 0 .../src => src}/static/icons/duotone/pray.svg | 0 .../static/icons/duotone/praying-hands.svg | 0 .../icons/duotone/prescription-bottle-alt.svg | 0 .../icons/duotone/prescription-bottle.svg | 0 .../static/icons/duotone/prescription.svg | 0 .../static/icons/duotone/presentation.svg | 0 .../static/icons/duotone/print-search.svg | 0 .../static/icons/duotone/print-slash.svg | 0 .../static/icons/duotone/print.svg | 0 .../static/icons/duotone/procedures.svg | 0 .../static/icons/duotone/project-diagram.svg | 0 .../static/icons/duotone/projector.svg | 0 .../static/icons/duotone/pumpkin.svg | 0 .../static/icons/duotone/puzzle-piece.svg | 0 .../static/icons/duotone/qrcode.svg | 0 .../static/icons/duotone/question-circle.svg | 0 .../static/icons/duotone/question-square.svg | 0 .../static/icons/duotone/question.svg | 0 .../static/icons/duotone/quidditch.svg | 0 .../static/icons/duotone/quote-left.svg | 0 .../static/icons/duotone/quote-right.svg | 0 .../static/icons/duotone/quran.svg | 0 .../static/icons/duotone/rabbit-fast.svg | 0 .../static/icons/duotone/rabbit.svg | 0 .../static/icons/duotone/racquet.svg | 0 .../static/icons/duotone/radar.svg | 0 .../static/icons/duotone/radiation-alt.svg | 0 .../static/icons/duotone/radiation.svg | 0 .../static/icons/duotone/radio-alt.svg | 0 .../static/icons/duotone/radio.svg | 0 .../static/icons/duotone/rainbow.svg | 0 .../static/icons/duotone/raindrops.svg | 0 .../src => src}/static/icons/duotone/ram.svg | 0 .../static/icons/duotone/ramp-loading.svg | 0 .../static/icons/duotone/random.svg | 0 .../static/icons/duotone/raygun.svg | 0 .../static/icons/duotone/receipt.svg | 0 .../static/icons/duotone/record-vinyl.svg | 0 .../icons/duotone/rectangle-landscape.svg | 0 .../icons/duotone/rectangle-portrait.svg | 0 .../static/icons/duotone/rectangle-wide.svg | 0 .../static/icons/duotone/recycle.svg | 0 .../static/icons/duotone/redo-alt.svg | 0 .../src => src}/static/icons/duotone/redo.svg | 0 .../static/icons/duotone/refrigerator.svg | 0 .../static/icons/duotone/registered.svg | 0 .../static/icons/duotone/remove-format.svg | 0 .../static/icons/duotone/repeat-1-alt.svg | 0 .../static/icons/duotone/repeat-1.svg | 0 .../static/icons/duotone/repeat-alt.svg | 0 .../static/icons/duotone/repeat.svg | 0 .../static/icons/duotone/reply-all.svg | 0 .../static/icons/duotone/reply.svg | 0 .../static/icons/duotone/republican.svg | 0 .../static/icons/duotone/restroom.svg | 0 .../static/icons/duotone/retweet-alt.svg | 0 .../static/icons/duotone/retweet.svg | 0 .../static/icons/duotone/ribbon.svg | 0 .../src => src}/static/icons/duotone/ring.svg | 0 .../static/icons/duotone/rings-wedding.svg | 0 .../src => src}/static/icons/duotone/road.svg | 0 .../static/icons/duotone/robot.svg | 0 .../static/icons/duotone/rocket-launch.svg | 0 .../static/icons/duotone/rocket.svg | 0 .../static/icons/duotone/route-highway.svg | 0 .../static/icons/duotone/route-interstate.svg | 0 .../static/icons/duotone/route.svg | 0 .../static/icons/duotone/router.svg | 0 .../static/icons/duotone/rss-square.svg | 0 .../src => src}/static/icons/duotone/rss.svg | 0 .../static/icons/duotone/ruble-sign.svg | 0 .../static/icons/duotone/ruler-combined.svg | 0 .../static/icons/duotone/ruler-horizontal.svg | 0 .../static/icons/duotone/ruler-triangle.svg | 0 .../static/icons/duotone/ruler-vertical.svg | 0 .../static/icons/duotone/ruler.svg | 0 .../static/icons/duotone/running.svg | 0 .../static/icons/duotone/rupee-sign.svg | 0 .../src => src}/static/icons/duotone/rv.svg | 0 .../static/icons/duotone/sack-dollar.svg | 0 .../src => src}/static/icons/duotone/sack.svg | 0 .../static/icons/duotone/sad-cry.svg | 0 .../static/icons/duotone/sad-tear.svg | 0 .../static/icons/duotone/salad.svg | 0 .../static/icons/duotone/sandwich.svg | 0 .../static/icons/duotone/satellite-dish.svg | 0 .../static/icons/duotone/satellite.svg | 0 .../static/icons/duotone/sausage.svg | 0 .../src => src}/static/icons/duotone/save.svg | 0 .../static/icons/duotone/sax-hot.svg | 0 .../static/icons/duotone/saxophone.svg | 0 .../static/icons/duotone/scalpel-path.svg | 0 .../static/icons/duotone/scalpel.svg | 0 .../static/icons/duotone/scanner-image.svg | 0 .../static/icons/duotone/scanner-keyboard.svg | 0 .../icons/duotone/scanner-touchscreen.svg | 0 .../static/icons/duotone/scanner.svg | 0 .../static/icons/duotone/scarecrow.svg | 0 .../static/icons/duotone/scarf.svg | 0 .../static/icons/duotone/school.svg | 0 .../static/icons/duotone/screwdriver.svg | 0 .../static/icons/duotone/scroll-old.svg | 0 .../static/icons/duotone/scroll.svg | 0 .../static/icons/duotone/scrubber.svg | 0 .../static/icons/duotone/scythe.svg | 0 .../static/icons/duotone/sd-card.svg | 0 .../static/icons/duotone/search-dollar.svg | 0 .../static/icons/duotone/search-location.svg | 0 .../static/icons/duotone/search-minus.svg | 0 .../static/icons/duotone/search-plus.svg | 0 .../static/icons/duotone/search.svg | 0 .../static/icons/duotone/seedling.svg | 0 .../static/icons/duotone/send-back.svg | 0 .../static/icons/duotone/send-backward.svg | 0 .../static/icons/duotone/sensor-alert.svg | 0 .../static/icons/duotone/sensor-fire.svg | 0 .../static/icons/duotone/sensor-on.svg | 0 .../static/icons/duotone/sensor-smoke.svg | 0 .../static/icons/duotone/sensor.svg | 0 .../static/icons/duotone/server.svg | 0 .../static/icons/duotone/shapes.svg | 0 .../static/icons/duotone/share-all.svg | 0 .../static/icons/duotone/share-alt-square.svg | 0 .../static/icons/duotone/share-alt.svg | 0 .../static/icons/duotone/share-square.svg | 0 .../static/icons/duotone/share.svg | 0 .../static/icons/duotone/sheep.svg | 0 .../static/icons/duotone/shekel-sign.svg | 0 .../static/icons/duotone/shield-alt.svg | 0 .../static/icons/duotone/shield-check.svg | 0 .../static/icons/duotone/shield-cross.svg | 0 .../static/icons/duotone/shield.svg | 0 .../src => src}/static/icons/duotone/ship.svg | 0 .../static/icons/duotone/shipping-fast.svg | 0 .../static/icons/duotone/shipping-timed.svg | 0 .../static/icons/duotone/shish-kebab.svg | 0 .../static/icons/duotone/shoe-prints.svg | 0 .../static/icons/duotone/shopping-bag.svg | 0 .../static/icons/duotone/shopping-basket.svg | 0 .../static/icons/duotone/shopping-cart.svg | 0 .../static/icons/duotone/shovel-snow.svg | 0 .../static/icons/duotone/shovel.svg | 0 .../static/icons/duotone/shower.svg | 0 .../static/icons/duotone/shredder.svg | 0 .../static/icons/duotone/shuttle-van.svg | 0 .../static/icons/duotone/shuttlecock.svg | 0 .../static/icons/duotone/sickle.svg | 0 .../static/icons/duotone/sigma.svg | 0 .../static/icons/duotone/sign-in-alt.svg | 0 .../static/icons/duotone/sign-in.svg | 0 .../static/icons/duotone/sign-language.svg | 0 .../static/icons/duotone/sign-out-alt.svg | 0 .../static/icons/duotone/sign-out.svg | 0 .../src => src}/static/icons/duotone/sign.svg | 0 .../static/icons/duotone/signal-1.svg | 0 .../static/icons/duotone/signal-2.svg | 0 .../static/icons/duotone/signal-3.svg | 0 .../static/icons/duotone/signal-4.svg | 0 .../static/icons/duotone/signal-alt-1.svg | 0 .../static/icons/duotone/signal-alt-2.svg | 0 .../static/icons/duotone/signal-alt-3.svg | 0 .../static/icons/duotone/signal-alt-slash.svg | 0 .../static/icons/duotone/signal-alt.svg | 0 .../static/icons/duotone/signal-slash.svg | 0 .../static/icons/duotone/signal-stream.svg | 0 .../static/icons/duotone/signal.svg | 0 .../static/icons/duotone/signature.svg | 0 .../static/icons/duotone/sim-card.svg | 0 .../static/icons/duotone/siren-on.svg | 0 .../static/icons/duotone/siren.svg | 0 .../static/icons/duotone/sitemap.svg | 0 .../static/icons/duotone/skating.svg | 0 .../static/icons/duotone/skeleton.svg | 0 .../static/icons/duotone/ski-jump.svg | 0 .../static/icons/duotone/ski-lift.svg | 0 .../static/icons/duotone/skiing-nordic.svg | 0 .../static/icons/duotone/skiing.svg | 0 .../static/icons/duotone/skull-cow.svg | 0 .../static/icons/duotone/skull-crossbones.svg | 0 .../static/icons/duotone/skull.svg | 0 .../static/icons/duotone/slash.svg | 0 .../static/icons/duotone/sledding.svg | 0 .../static/icons/duotone/sleigh.svg | 0 .../static/icons/duotone/sliders-h-square.svg | 0 .../static/icons/duotone/sliders-h.svg | 0 .../static/icons/duotone/sliders-v-square.svg | 0 .../static/icons/duotone/sliders-v.svg | 0 .../static/icons/duotone/smile-beam.svg | 0 .../static/icons/duotone/smile-plus.svg | 0 .../static/icons/duotone/smile-wink.svg | 0 .../static/icons/duotone/smile.svg | 0 .../src => src}/static/icons/duotone/smog.svg | 0 .../static/icons/duotone/smoke.svg | 0 .../static/icons/duotone/smoking-ban.svg | 0 .../static/icons/duotone/smoking.svg | 0 .../src => src}/static/icons/duotone/sms.svg | 0 .../static/icons/duotone/snake.svg | 0 .../static/icons/duotone/snooze.svg | 0 .../static/icons/duotone/snow-blowing.svg | 0 .../static/icons/duotone/snowboarding.svg | 0 .../static/icons/duotone/snowflake.svg | 0 .../static/icons/duotone/snowflakes.svg | 0 .../static/icons/duotone/snowman.svg | 0 .../static/icons/duotone/snowmobile.svg | 0 .../static/icons/duotone/snowplow.svg | 0 .../static/icons/duotone/socks.svg | 0 .../static/icons/duotone/solar-panel.svg | 0 .../static/icons/duotone/solar-system.svg | 0 .../icons/duotone/sort-alpha-down-alt.svg | 0 .../static/icons/duotone/sort-alpha-down.svg | 0 .../icons/duotone/sort-alpha-up-alt.svg | 0 .../static/icons/duotone/sort-alpha-up.svg | 0 .../static/icons/duotone/sort-alt.svg | 0 .../icons/duotone/sort-amount-down-alt.svg | 0 .../static/icons/duotone/sort-amount-down.svg | 0 .../icons/duotone/sort-amount-up-alt.svg | 0 .../static/icons/duotone/sort-amount-up.svg | 0 .../static/icons/duotone/sort-circle-down.svg | 0 .../static/icons/duotone/sort-circle-up.svg | 0 .../static/icons/duotone/sort-circle.svg | 0 .../static/icons/duotone/sort-down.svg | 0 .../icons/duotone/sort-numeric-down-alt.svg | 0 .../icons/duotone/sort-numeric-down.svg | 0 .../icons/duotone/sort-numeric-up-alt.svg | 0 .../static/icons/duotone/sort-numeric-up.svg | 0 .../icons/duotone/sort-shapes-down-alt.svg | 0 .../static/icons/duotone/sort-shapes-down.svg | 0 .../icons/duotone/sort-shapes-up-alt.svg | 0 .../static/icons/duotone/sort-shapes-up.svg | 0 .../icons/duotone/sort-size-down-alt.svg | 0 .../static/icons/duotone/sort-size-down.svg | 0 .../static/icons/duotone/sort-size-up-alt.svg | 0 .../static/icons/duotone/sort-size-up.svg | 0 .../static/icons/duotone/sort-up.svg | 0 .../src => src}/static/icons/duotone/sort.svg | 0 .../src => src}/static/icons/duotone/soup.svg | 0 .../src => src}/static/icons/duotone/spa.svg | 0 .../static/icons/duotone/space-shuttle.svg | 0 .../icons/duotone/space-station-moon-alt.svg | 0 .../icons/duotone/space-station-moon.svg | 0 .../static/icons/duotone/spade.svg | 0 .../static/icons/duotone/sparkles.svg | 0 .../static/icons/duotone/speaker.svg | 0 .../static/icons/duotone/speakers.svg | 0 .../static/icons/duotone/spell-check.svg | 0 .../icons/duotone/spider-black-widow.svg | 0 .../static/icons/duotone/spider-web.svg | 0 .../static/icons/duotone/spider.svg | 0 .../static/icons/duotone/spinner-third.svg | 0 .../static/icons/duotone/spinner.svg | 0 .../static/icons/duotone/splotch.svg | 0 .../static/icons/duotone/spray-can.svg | 0 .../static/icons/duotone/sprinkler.svg | 0 .../static/icons/duotone/square-full.svg | 0 .../static/icons/duotone/square-root-alt.svg | 0 .../static/icons/duotone/square-root.svg | 0 .../static/icons/duotone/square.svg | 0 .../static/icons/duotone/squirrel.svg | 0 .../static/icons/duotone/staff.svg | 0 .../static/icons/duotone/stamp.svg | 0 .../icons/duotone/star-and-crescent.svg | 0 .../static/icons/duotone/star-christmas.svg | 0 .../static/icons/duotone/star-exclamation.svg | 0 .../static/icons/duotone/star-half-alt.svg | 0 .../static/icons/duotone/star-half.svg | 0 .../static/icons/duotone/star-of-david.svg | 0 .../static/icons/duotone/star-of-life.svg | 0 .../static/icons/duotone/star-shooting.svg | 0 .../src => src}/static/icons/duotone/star.svg | 0 .../static/icons/duotone/starfighter-alt.svg | 0 .../static/icons/duotone/starfighter.svg | 0 .../static/icons/duotone/stars.svg | 0 .../icons/duotone/starship-freighter.svg | 0 .../static/icons/duotone/starship.svg | 0 .../static/icons/duotone/steak.svg | 0 .../static/icons/duotone/steering-wheel.svg | 0 .../static/icons/duotone/step-backward.svg | 0 .../static/icons/duotone/step-forward.svg | 0 .../static/icons/duotone/stethoscope.svg | 0 .../static/icons/duotone/sticky-note.svg | 0 .../static/icons/duotone/stocking.svg | 0 .../static/icons/duotone/stomach.svg | 0 .../static/icons/duotone/stop-circle.svg | 0 .../src => src}/static/icons/duotone/stop.svg | 0 .../static/icons/duotone/stopwatch.svg | 0 .../static/icons/duotone/store-alt.svg | 0 .../static/icons/duotone/store.svg | 0 .../static/icons/duotone/stream.svg | 0 .../static/icons/duotone/street-view.svg | 0 .../static/icons/duotone/stretcher.svg | 0 .../static/icons/duotone/strikethrough.svg | 0 .../static/icons/duotone/stroopwafel.svg | 0 .../static/icons/duotone/subscript.svg | 0 .../static/icons/duotone/subway.svg | 0 .../static/icons/duotone/suitcase-rolling.svg | 0 .../static/icons/duotone/suitcase.svg | 0 .../static/icons/duotone/sun-cloud.svg | 0 .../static/icons/duotone/sun-dust.svg | 0 .../static/icons/duotone/sun-haze.svg | 0 .../src => src}/static/icons/duotone/sun.svg | 0 .../static/icons/duotone/sunglasses.svg | 0 .../static/icons/duotone/sunrise.svg | 0 .../static/icons/duotone/sunset.svg | 0 .../static/icons/duotone/superscript.svg | 0 .../static/icons/duotone/surprise.svg | 0 .../static/icons/duotone/swatchbook.svg | 0 .../static/icons/duotone/swimmer.svg | 0 .../static/icons/duotone/swimming-pool.svg | 0 .../static/icons/duotone/sword-laser-alt.svg | 0 .../static/icons/duotone/sword-laser.svg | 0 .../static/icons/duotone/sword.svg | 0 .../static/icons/duotone/swords-laser.svg | 0 .../static/icons/duotone/swords.svg | 0 .../static/icons/duotone/synagogue.svg | 0 .../static/icons/duotone/sync-alt.svg | 0 .../src => src}/static/icons/duotone/sync.svg | 0 .../static/icons/duotone/syringe.svg | 0 .../static/icons/duotone/table-tennis.svg | 0 .../static/icons/duotone/table.svg | 0 .../static/icons/duotone/tablet-alt.svg | 0 .../icons/duotone/tablet-android-alt.svg | 0 .../static/icons/duotone/tablet-android.svg | 0 .../static/icons/duotone/tablet-rugged.svg | 0 .../static/icons/duotone/tablet.svg | 0 .../static/icons/duotone/tablets.svg | 0 .../icons/duotone/tachometer-alt-average.svg | 0 .../icons/duotone/tachometer-alt-fast.svg | 0 .../icons/duotone/tachometer-alt-fastest.svg | 0 .../icons/duotone/tachometer-alt-slow.svg | 0 .../icons/duotone/tachometer-alt-slowest.svg | 0 .../static/icons/duotone/tachometer-alt.svg | 0 .../icons/duotone/tachometer-average.svg | 0 .../static/icons/duotone/tachometer-fast.svg | 0 .../icons/duotone/tachometer-fastest.svg | 0 .../static/icons/duotone/tachometer-slow.svg | 0 .../icons/duotone/tachometer-slowest.svg | 0 .../static/icons/duotone/tachometer.svg | 0 .../src => src}/static/icons/duotone/taco.svg | 0 .../src => src}/static/icons/duotone/tag.svg | 0 .../src => src}/static/icons/duotone/tags.svg | 0 .../static/icons/duotone/tally.svg | 0 .../static/icons/duotone/tanakh.svg | 0 .../src => src}/static/icons/duotone/tape.svg | 0 .../static/icons/duotone/tasks-alt.svg | 0 .../static/icons/duotone/tasks.svg | 0 .../src => src}/static/icons/duotone/taxi.svg | 0 .../static/icons/duotone/teeth-open.svg | 0 .../static/icons/duotone/teeth.svg | 0 .../static/icons/duotone/telescope.svg | 0 .../static/icons/duotone/temperature-down.svg | 0 .../icons/duotone/temperature-frigid.svg | 0 .../static/icons/duotone/temperature-high.svg | 0 .../static/icons/duotone/temperature-hot.svg | 0 .../static/icons/duotone/temperature-low.svg | 0 .../static/icons/duotone/temperature-up.svg | 0 .../static/icons/duotone/tenge.svg | 0 .../static/icons/duotone/tennis-ball.svg | 0 .../static/icons/duotone/terminal.svg | 0 .../static/icons/duotone/text-height.svg | 0 .../static/icons/duotone/text-size.svg | 0 .../static/icons/duotone/text-width.svg | 0 .../src => src}/static/icons/duotone/text.svg | 0 .../static/icons/duotone/th-large.svg | 0 .../static/icons/duotone/th-list.svg | 0 .../src => src}/static/icons/duotone/th.svg | 0 .../static/icons/duotone/theater-masks.svg | 0 .../icons/duotone/thermometer-empty.svg | 0 .../static/icons/duotone/thermometer-full.svg | 0 .../static/icons/duotone/thermometer-half.svg | 0 .../icons/duotone/thermometer-quarter.svg | 0 .../duotone/thermometer-three-quarters.svg | 0 .../static/icons/duotone/thermometer.svg | 0 .../static/icons/duotone/theta.svg | 0 .../static/icons/duotone/thumbs-down.svg | 0 .../static/icons/duotone/thumbs-up.svg | 0 .../static/icons/duotone/thumbtack.svg | 0 .../icons/duotone/thunderstorm-moon.svg | 0 .../static/icons/duotone/thunderstorm-sun.svg | 0 .../static/icons/duotone/thunderstorm.svg | 0 .../static/icons/duotone/ticket-alt.svg | 0 .../static/icons/duotone/ticket.svg | 0 .../static/icons/duotone/tilde.svg | 0 .../static/icons/duotone/times-circle.svg | 0 .../static/icons/duotone/times-hexagon.svg | 0 .../static/icons/duotone/times-octagon.svg | 0 .../static/icons/duotone/times-square.svg | 0 .../static/icons/duotone/times.svg | 0 .../static/icons/duotone/tint-slash.svg | 0 .../src => src}/static/icons/duotone/tint.svg | 0 .../static/icons/duotone/tire-flat.svg | 0 .../icons/duotone/tire-pressure-warning.svg | 0 .../static/icons/duotone/tire-rugged.svg | 0 .../src => src}/static/icons/duotone/tire.svg | 0 .../static/icons/duotone/tired.svg | 0 .../static/icons/duotone/toggle-off.svg | 0 .../static/icons/duotone/toggle-on.svg | 0 .../static/icons/duotone/toilet-paper-alt.svg | 0 .../static/icons/duotone/toilet-paper.svg | 0 .../static/icons/duotone/toilet.svg | 0 .../static/icons/duotone/tombstone-alt.svg | 0 .../static/icons/duotone/tombstone.svg | 0 .../static/icons/duotone/toolbox.svg | 0 .../static/icons/duotone/tools.svg | 0 .../static/icons/duotone/tooth.svg | 0 .../static/icons/duotone/toothbrush.svg | 0 .../static/icons/duotone/torah.svg | 0 .../static/icons/duotone/torii-gate.svg | 0 .../static/icons/duotone/tornado.svg | 0 .../static/icons/duotone/tractor.svg | 0 .../static/icons/duotone/trademark.svg | 0 .../static/icons/duotone/traffic-cone.svg | 0 .../static/icons/duotone/traffic-light-go.svg | 0 .../icons/duotone/traffic-light-slow.svg | 0 .../icons/duotone/traffic-light-stop.svg | 0 .../static/icons/duotone/traffic-light.svg | 0 .../static/icons/duotone/trailer.svg | 0 .../static/icons/duotone/train.svg | 0 .../src => src}/static/icons/duotone/tram.svg | 0 .../static/icons/duotone/transgender-alt.svg | 0 .../static/icons/duotone/transgender.svg | 0 .../static/icons/duotone/transporter-1.svg | 0 .../static/icons/duotone/transporter-2.svg | 0 .../static/icons/duotone/transporter-3.svg | 0 .../icons/duotone/transporter-empty.svg | 0 .../static/icons/duotone/transporter.svg | 0 .../static/icons/duotone/trash-alt.svg | 0 .../icons/duotone/trash-restore-alt.svg | 0 .../static/icons/duotone/trash-restore.svg | 0 .../static/icons/duotone/trash-undo-alt.svg | 0 .../static/icons/duotone/trash-undo.svg | 0 .../static/icons/duotone/trash.svg | 0 .../static/icons/duotone/treasure-chest.svg | 0 .../static/icons/duotone/tree-alt.svg | 0 .../static/icons/duotone/tree-christmas.svg | 0 .../static/icons/duotone/tree-decorated.svg | 0 .../static/icons/duotone/tree-large.svg | 0 .../static/icons/duotone/tree-palm.svg | 0 .../src => src}/static/icons/duotone/tree.svg | 0 .../static/icons/duotone/trees.svg | 0 .../static/icons/duotone/triangle-music.svg | 0 .../static/icons/duotone/triangle.svg | 0 .../static/icons/duotone/trophy-alt.svg | 0 .../static/icons/duotone/trophy.svg | 0 .../static/icons/duotone/truck-container.svg | 0 .../static/icons/duotone/truck-couch.svg | 0 .../static/icons/duotone/truck-loading.svg | 0 .../static/icons/duotone/truck-monster.svg | 0 .../static/icons/duotone/truck-moving.svg | 0 .../static/icons/duotone/truck-pickup.svg | 0 .../static/icons/duotone/truck-plow.svg | 0 .../static/icons/duotone/truck-ramp.svg | 0 .../static/icons/duotone/truck.svg | 0 .../static/icons/duotone/trumpet.svg | 0 .../static/icons/duotone/tshirt.svg | 0 .../src => src}/static/icons/duotone/tty.svg | 0 .../static/icons/duotone/turkey.svg | 0 .../static/icons/duotone/turntable.svg | 0 .../static/icons/duotone/turtle.svg | 0 .../static/icons/duotone/tv-alt.svg | 0 .../static/icons/duotone/tv-music.svg | 0 .../static/icons/duotone/tv-retro.svg | 0 .../src => src}/static/icons/duotone/tv.svg | 0 .../static/icons/duotone/typewriter.svg | 0 .../static/icons/duotone/ufo-beam.svg | 0 .../src => src}/static/icons/duotone/ufo.svg | 0 .../static/icons/duotone/umbrella-beach.svg | 0 .../static/icons/duotone/umbrella.svg | 0 .../static/icons/duotone/underline.svg | 0 .../static/icons/duotone/undo-alt.svg | 0 .../src => src}/static/icons/duotone/undo.svg | 0 .../static/icons/duotone/unicorn.svg | 0 .../static/icons/duotone/union.svg | 0 .../static/icons/duotone/universal-access.svg | 0 .../static/icons/duotone/university.svg | 0 .../static/icons/duotone/unlink.svg | 0 .../static/icons/duotone/unlock-alt.svg | 0 .../static/icons/duotone/unlock.svg | 0 .../static/icons/duotone/upload.svg | 0 .../static/icons/duotone/usb-drive.svg | 0 .../static/icons/duotone/usd-circle.svg | 0 .../static/icons/duotone/usd-square.svg | 0 .../static/icons/duotone/user-alien.svg | 0 .../static/icons/duotone/user-alt-slash.svg | 0 .../static/icons/duotone/user-alt.svg | 0 .../static/icons/duotone/user-astronaut.svg | 0 .../static/icons/duotone/user-chart.svg | 0 .../static/icons/duotone/user-check.svg | 0 .../static/icons/duotone/user-circle.svg | 0 .../static/icons/duotone/user-clock.svg | 0 .../static/icons/duotone/user-cog.svg | 0 .../static/icons/duotone/user-cowboy.svg | 0 .../static/icons/duotone/user-crown.svg | 0 .../static/icons/duotone/user-edit.svg | 0 .../static/icons/duotone/user-friends.svg | 0 .../static/icons/duotone/user-graduate.svg | 0 .../static/icons/duotone/user-hard-hat.svg | 0 .../static/icons/duotone/user-headset.svg | 0 .../static/icons/duotone/user-injured.svg | 0 .../static/icons/duotone/user-lock.svg | 0 .../static/icons/duotone/user-md-chat.svg | 0 .../static/icons/duotone/user-md.svg | 0 .../static/icons/duotone/user-minus.svg | 0 .../static/icons/duotone/user-music.svg | 0 .../static/icons/duotone/user-ninja.svg | 0 .../static/icons/duotone/user-nurse.svg | 0 .../static/icons/duotone/user-plus.svg | 0 .../static/icons/duotone/user-robot.svg | 0 .../static/icons/duotone/user-secret.svg | 0 .../static/icons/duotone/user-shield.svg | 0 .../static/icons/duotone/user-slash.svg | 0 .../static/icons/duotone/user-tag.svg | 0 .../static/icons/duotone/user-tie.svg | 0 .../static/icons/duotone/user-times.svg | 0 .../static/icons/duotone/user-visor.svg | 0 .../src => src}/static/icons/duotone/user.svg | 0 .../static/icons/duotone/users-class.svg | 0 .../static/icons/duotone/users-cog.svg | 0 .../static/icons/duotone/users-crown.svg | 0 .../static/icons/duotone/users-medical.svg | 0 .../static/icons/duotone/users.svg | 0 .../static/icons/duotone/utensil-fork.svg | 0 .../static/icons/duotone/utensil-knife.svg | 0 .../static/icons/duotone/utensil-spoon.svg | 0 .../static/icons/duotone/utensils-alt.svg | 0 .../static/icons/duotone/utensils.svg | 0 .../static/icons/duotone/vacuum-robot.svg | 0 .../static/icons/duotone/vacuum.svg | 0 .../static/icons/duotone/value-absolute.svg | 0 .../static/icons/duotone/vector-square.svg | 0 .../static/icons/duotone/venus-double.svg | 0 .../static/icons/duotone/venus-mars.svg | 0 .../static/icons/duotone/venus.svg | 0 .../src => src}/static/icons/duotone/vhs.svg | 0 .../src => src}/static/icons/duotone/vial.svg | 0 .../static/icons/duotone/vials.svg | 0 .../static/icons/duotone/video-plus.svg | 0 .../static/icons/duotone/video-slash.svg | 0 .../static/icons/duotone/video.svg | 0 .../static/icons/duotone/vihara.svg | 0 .../static/icons/duotone/violin.svg | 0 .../static/icons/duotone/voicemail.svg | 0 .../static/icons/duotone/volcano.svg | 0 .../static/icons/duotone/volleyball-ball.svg | 0 .../static/icons/duotone/volume-down.svg | 0 .../static/icons/duotone/volume-mute.svg | 0 .../static/icons/duotone/volume-off.svg | 0 .../static/icons/duotone/volume-slash.svg | 0 .../static/icons/duotone/volume-up.svg | 0 .../static/icons/duotone/volume.svg | 0 .../static/icons/duotone/vote-nay.svg | 0 .../static/icons/duotone/vote-yea.svg | 0 .../static/icons/duotone/vr-cardboard.svg | 0 .../static/icons/duotone/wagon-covered.svg | 0 .../static/icons/duotone/walker.svg | 0 .../static/icons/duotone/walkie-talkie.svg | 0 .../static/icons/duotone/walking.svg | 0 .../static/icons/duotone/wallet.svg | 0 .../static/icons/duotone/wand-magic.svg | 0 .../src => src}/static/icons/duotone/wand.svg | 0 .../static/icons/duotone/warehouse-alt.svg | 0 .../static/icons/duotone/warehouse.svg | 0 .../static/icons/duotone/washer.svg | 0 .../static/icons/duotone/watch-calculator.svg | 0 .../static/icons/duotone/watch-fitness.svg | 0 .../static/icons/duotone/watch.svg | 0 .../static/icons/duotone/water-lower.svg | 0 .../static/icons/duotone/water-rise.svg | 0 .../static/icons/duotone/water.svg | 0 .../static/icons/duotone/wave-sine.svg | 0 .../static/icons/duotone/wave-square.svg | 0 .../static/icons/duotone/wave-triangle.svg | 0 .../static/icons/duotone/waveform-path.svg | 0 .../static/icons/duotone/waveform.svg | 0 .../static/icons/duotone/webcam-slash.svg | 0 .../static/icons/duotone/webcam.svg | 0 .../static/icons/duotone/weight-hanging.svg | 0 .../static/icons/duotone/weight.svg | 0 .../static/icons/duotone/whale.svg | 0 .../static/icons/duotone/wheat.svg | 0 .../static/icons/duotone/wheelchair.svg | 0 .../static/icons/duotone/whistle.svg | 0 .../static/icons/duotone/wifi-1.svg | 0 .../static/icons/duotone/wifi-2.svg | 0 .../static/icons/duotone/wifi-slash.svg | 0 .../src => src}/static/icons/duotone/wifi.svg | 0 .../static/icons/duotone/wind-turbine.svg | 0 .../static/icons/duotone/wind-warning.svg | 0 .../src => src}/static/icons/duotone/wind.svg | 0 .../static/icons/duotone/window-alt.svg | 0 .../static/icons/duotone/window-close.svg | 0 .../icons/duotone/window-frame-open.svg | 0 .../static/icons/duotone/window-frame.svg | 0 .../static/icons/duotone/window-maximize.svg | 0 .../static/icons/duotone/window-minimize.svg | 0 .../static/icons/duotone/window-restore.svg | 0 .../static/icons/duotone/window.svg | 0 .../static/icons/duotone/windsock.svg | 0 .../static/icons/duotone/wine-bottle.svg | 0 .../static/icons/duotone/wine-glass-alt.svg | 0 .../static/icons/duotone/wine-glass.svg | 0 .../static/icons/duotone/won-sign.svg | 0 .../static/icons/duotone/wreath.svg | 0 .../static/icons/duotone/wrench.svg | 0 .../static/icons/duotone/x-ray.svg | 0 .../static/icons/duotone/yen-sign.svg | 0 .../static/icons/duotone/yin-yang.svg | 0 .../src => src}/static/icons/light/abacus.svg | 0 .../src => src}/static/icons/light/acorn.svg | 0 {client/src => src}/static/icons/light/ad.svg | 0 .../static/icons/light/address-book.svg | 0 .../static/icons/light/address-card.svg | 0 .../src => src}/static/icons/light/adjust.svg | 0 .../static/icons/light/air-conditioner.svg | 0 .../static/icons/light/air-freshener.svg | 0 .../static/icons/light/alarm-clock.svg | 0 .../static/icons/light/alarm-exclamation.svg | 0 .../static/icons/light/alarm-plus.svg | 0 .../static/icons/light/alarm-snooze.svg | 0 .../static/icons/light/album-collection.svg | 0 .../src => src}/static/icons/light/album.svg | 0 .../static/icons/light/alicorn.svg | 0 .../static/icons/light/alien-monster.svg | 0 .../src => src}/static/icons/light/alien.svg | 0 .../static/icons/light/align-center.svg | 0 .../static/icons/light/align-justify.svg | 0 .../static/icons/light/align-left.svg | 0 .../static/icons/light/align-right.svg | 0 .../static/icons/light/align-slash.svg | 0 .../static/icons/light/allergies.svg | 0 .../static/icons/light/ambulance.svg | 0 .../american-sign-language-interpreting.svg | 0 .../static/icons/light/amp-guitar.svg | 0 .../static/icons/light/analytics.svg | 0 .../src => src}/static/icons/light/anchor.svg | 0 .../src => src}/static/icons/light/angel.svg | 0 .../static/icons/light/angle-double-down.svg | 0 .../static/icons/light/angle-double-left.svg | 0 .../static/icons/light/angle-double-right.svg | 0 .../static/icons/light/angle-double-up.svg | 0 .../static/icons/light/angle-down.svg | 0 .../static/icons/light/angle-left.svg | 0 .../static/icons/light/angle-right.svg | 0 .../static/icons/light/angle-up.svg | 0 .../src => src}/static/icons/light/angry.svg | 0 .../src => src}/static/icons/light/ankh.svg | 0 .../static/icons/light/apple-alt.svg | 0 .../static/icons/light/apple-crate.svg | 0 .../static/icons/light/archive.svg | 0 .../static/icons/light/archway.svg | 0 .../icons/light/arrow-alt-circle-down.svg | 0 .../icons/light/arrow-alt-circle-left.svg | 0 .../icons/light/arrow-alt-circle-right.svg | 0 .../icons/light/arrow-alt-circle-up.svg | 0 .../static/icons/light/arrow-alt-down.svg | 0 .../icons/light/arrow-alt-from-bottom.svg | 0 .../icons/light/arrow-alt-from-left.svg | 0 .../icons/light/arrow-alt-from-right.svg | 0 .../static/icons/light/arrow-alt-from-top.svg | 0 .../static/icons/light/arrow-alt-left.svg | 0 .../static/icons/light/arrow-alt-right.svg | 0 .../icons/light/arrow-alt-square-down.svg | 0 .../icons/light/arrow-alt-square-left.svg | 0 .../icons/light/arrow-alt-square-right.svg | 0 .../icons/light/arrow-alt-square-up.svg | 0 .../icons/light/arrow-alt-to-bottom.svg | 0 .../static/icons/light/arrow-alt-to-left.svg | 0 .../static/icons/light/arrow-alt-to-right.svg | 0 .../static/icons/light/arrow-alt-to-top.svg | 0 .../static/icons/light/arrow-alt-up.svg | 0 .../static/icons/light/arrow-circle-down.svg | 0 .../static/icons/light/arrow-circle-left.svg | 0 .../static/icons/light/arrow-circle-right.svg | 0 .../static/icons/light/arrow-circle-up.svg | 0 .../static/icons/light/arrow-down.svg | 0 .../static/icons/light/arrow-from-bottom.svg | 0 .../static/icons/light/arrow-from-left.svg | 0 .../static/icons/light/arrow-from-right.svg | 0 .../static/icons/light/arrow-from-top.svg | 0 .../static/icons/light/arrow-left.svg | 0 .../static/icons/light/arrow-right.svg | 0 .../static/icons/light/arrow-square-down.svg | 0 .../static/icons/light/arrow-square-left.svg | 0 .../static/icons/light/arrow-square-right.svg | 0 .../static/icons/light/arrow-square-up.svg | 0 .../static/icons/light/arrow-to-bottom.svg | 0 .../static/icons/light/arrow-to-left.svg | 0 .../static/icons/light/arrow-to-right.svg | 0 .../static/icons/light/arrow-to-top.svg | 0 .../static/icons/light/arrow-up.svg | 0 .../static/icons/light/arrows-alt-h.svg | 0 .../static/icons/light/arrows-alt-v.svg | 0 .../static/icons/light/arrows-alt.svg | 0 .../static/icons/light/arrows-h.svg | 0 .../static/icons/light/arrows-v.svg | 0 .../src => src}/static/icons/light/arrows.svg | 0 .../light/assistive-listening-systems.svg | 0 .../static/icons/light/asterisk.svg | 0 {client/src => src}/static/icons/light/at.svg | 0 .../src => src}/static/icons/light/atlas.svg | 0 .../static/icons/light/atom-alt.svg | 0 .../src => src}/static/icons/light/atom.svg | 0 .../static/icons/light/audio-description.svg | 0 .../src => src}/static/icons/light/award.svg | 0 .../static/icons/light/axe-battle.svg | 0 .../src => src}/static/icons/light/axe.svg | 0 .../static/icons/light/baby-carriage.svg | 0 .../src => src}/static/icons/light/baby.svg | 0 .../static/icons/light/backpack.svg | 0 .../static/icons/light/backspace.svg | 0 .../static/icons/light/backward.svg | 0 .../src => src}/static/icons/light/bacon.svg | 0 .../static/icons/light/badge-check.svg | 0 .../static/icons/light/badge-dollar.svg | 0 .../static/icons/light/badge-percent.svg | 0 .../static/icons/light/badge-sheriff.svg | 0 .../src => src}/static/icons/light/badge.svg | 0 .../static/icons/light/badger-honey.svg | 0 .../static/icons/light/bags-shopping.svg | 0 .../src => src}/static/icons/light/bahai.svg | 0 .../static/icons/light/balance-scale-left.svg | 0 .../icons/light/balance-scale-right.svg | 0 .../static/icons/light/balance-scale.svg | 0 .../static/icons/light/ball-pile.svg | 0 .../static/icons/light/ballot-check.svg | 0 .../src => src}/static/icons/light/ballot.svg | 0 .../src => src}/static/icons/light/ban.svg | 0 .../static/icons/light/band-aid.svg | 0 .../src => src}/static/icons/light/banjo.svg | 0 .../static/icons/light/barcode-alt.svg | 0 .../static/icons/light/barcode-read.svg | 0 .../static/icons/light/barcode-scan.svg | 0 .../static/icons/light/barcode.svg | 0 .../src => src}/static/icons/light/bars.svg | 0 .../static/icons/light/baseball-ball.svg | 0 .../static/icons/light/baseball.svg | 0 .../static/icons/light/basketball-ball.svg | 0 .../static/icons/light/basketball-hoop.svg | 0 .../src => src}/static/icons/light/bat.svg | 0 .../src => src}/static/icons/light/bath.svg | 0 .../static/icons/light/battery-bolt.svg | 0 .../static/icons/light/battery-empty.svg | 0 .../static/icons/light/battery-full.svg | 0 .../static/icons/light/battery-half.svg | 0 .../static/icons/light/battery-quarter.svg | 0 .../static/icons/light/battery-slash.svg | 0 .../icons/light/battery-three-quarters.svg | 0 .../static/icons/light/bed-alt.svg | 0 .../static/icons/light/bed-bunk.svg | 0 .../static/icons/light/bed-empty.svg | 0 .../src => src}/static/icons/light/bed.svg | 0 .../src => src}/static/icons/light/beer.svg | 0 .../static/icons/light/bell-exclamation.svg | 0 .../static/icons/light/bell-on.svg | 0 .../static/icons/light/bell-plus.svg | 0 .../static/icons/light/bell-school-slash.svg | 0 .../static/icons/light/bell-school.svg | 0 .../static/icons/light/bell-slash.svg | 0 .../src => src}/static/icons/light/bell.svg | 0 .../src => src}/static/icons/light/bells.svg | 0 .../static/icons/light/betamax.svg | 0 .../static/icons/light/bezier-curve.svg | 0 .../src => src}/static/icons/light/bible.svg | 0 .../static/icons/light/bicycle.svg | 0 .../static/icons/light/biking-mountain.svg | 0 .../src => src}/static/icons/light/biking.svg | 0 .../static/icons/light/binoculars.svg | 0 .../static/icons/light/biohazard.svg | 0 .../static/icons/light/birthday-cake.svg | 0 .../static/icons/light/blanket.svg | 0 .../static/icons/light/blender-phone.svg | 0 .../static/icons/light/blender.svg | 0 .../src => src}/static/icons/light/blind.svg | 0 .../static/icons/light/blinds-open.svg | 0 .../static/icons/light/blinds-raised.svg | 0 .../src => src}/static/icons/light/blinds.svg | 0 .../src => src}/static/icons/light/blog.svg | 0 .../src => src}/static/icons/light/bold.svg | 0 .../src => src}/static/icons/light/bolt.svg | 0 .../src => src}/static/icons/light/bomb.svg | 0 .../static/icons/light/bone-break.svg | 0 .../src => src}/static/icons/light/bone.svg | 0 .../src => src}/static/icons/light/bong.svg | 0 .../static/icons/light/book-alt.svg | 0 .../static/icons/light/book-dead.svg | 0 .../static/icons/light/book-heart.svg | 0 .../static/icons/light/book-medical.svg | 0 .../static/icons/light/book-open.svg | 0 .../static/icons/light/book-reader.svg | 0 .../static/icons/light/book-spells.svg | 0 .../static/icons/light/book-user.svg | 0 .../src => src}/static/icons/light/book.svg | 0 .../static/icons/light/bookmark.svg | 0 .../static/icons/light/books-medical.svg | 0 .../src => src}/static/icons/light/books.svg | 0 .../static/icons/light/boombox.svg | 0 .../src => src}/static/icons/light/boot.svg | 0 .../static/icons/light/booth-curtain.svg | 0 .../static/icons/light/border-all.svg | 0 .../static/icons/light/border-bottom.svg | 0 .../static/icons/light/border-center-h.svg | 0 .../static/icons/light/border-center-v.svg | 0 .../static/icons/light/border-inner.svg | 0 .../static/icons/light/border-left.svg | 0 .../static/icons/light/border-none.svg | 0 .../static/icons/light/border-outer.svg | 0 .../static/icons/light/border-right.svg | 0 .../static/icons/light/border-style-alt.svg | 0 .../static/icons/light/border-style.svg | 0 .../static/icons/light/border-top.svg | 0 .../static/icons/light/bow-arrow.svg | 0 .../static/icons/light/bowling-ball.svg | 0 .../static/icons/light/bowling-pins.svg | 0 .../static/icons/light/box-alt.svg | 0 .../static/icons/light/box-ballot.svg | 0 .../static/icons/light/box-check.svg | 0 .../static/icons/light/box-fragile.svg | 0 .../static/icons/light/box-full.svg | 0 .../static/icons/light/box-heart.svg | 0 .../static/icons/light/box-open.svg | 0 .../src => src}/static/icons/light/box-up.svg | 0 .../static/icons/light/box-usd.svg | 0 .../src => src}/static/icons/light/box.svg | 0 .../static/icons/light/boxes-alt.svg | 0 .../src => src}/static/icons/light/boxes.svg | 0 .../static/icons/light/boxing-glove.svg | 0 .../static/icons/light/brackets-curly.svg | 0 .../static/icons/light/brackets.svg | 0 .../static/icons/light/braille.svg | 0 .../src => src}/static/icons/light/brain.svg | 0 .../static/icons/light/bread-loaf.svg | 0 .../static/icons/light/bread-slice.svg | 0 .../static/icons/light/briefcase-medical.svg | 0 .../static/icons/light/briefcase.svg | 0 .../static/icons/light/bring-forward.svg | 0 .../static/icons/light/bring-front.svg | 0 .../static/icons/light/broadcast-tower.svg | 0 .../src => src}/static/icons/light/broom.svg | 0 .../static/icons/light/browser.svg | 0 .../src => src}/static/icons/light/brush.svg | 0 .../src => src}/static/icons/light/bug.svg | 0 .../static/icons/light/building.svg | 0 .../static/icons/light/bullhorn.svg | 0 .../static/icons/light/bullseye-arrow.svg | 0 .../static/icons/light/bullseye-pointer.svg | 0 .../static/icons/light/bullseye.svg | 0 .../static/icons/light/burger-soda.svg | 0 .../src => src}/static/icons/light/burn.svg | 0 .../static/icons/light/burrito.svg | 0 .../static/icons/light/bus-alt.svg | 0 .../static/icons/light/bus-school.svg | 0 .../src => src}/static/icons/light/bus.svg | 0 .../static/icons/light/business-time.svg | 0 .../static/icons/light/cabinet-filing.svg | 0 .../src => src}/static/icons/light/cactus.svg | 0 .../static/icons/light/calculator-alt.svg | 0 .../static/icons/light/calculator.svg | 0 .../static/icons/light/calendar-alt.svg | 0 .../static/icons/light/calendar-check.svg | 0 .../static/icons/light/calendar-day.svg | 0 .../static/icons/light/calendar-edit.svg | 0 .../icons/light/calendar-exclamation.svg | 0 .../static/icons/light/calendar-minus.svg | 0 .../static/icons/light/calendar-plus.svg | 0 .../static/icons/light/calendar-star.svg | 0 .../static/icons/light/calendar-times.svg | 0 .../static/icons/light/calendar-week.svg | 0 .../static/icons/light/calendar.svg | 0 .../static/icons/light/camcorder.svg | 0 .../static/icons/light/camera-alt.svg | 0 .../static/icons/light/camera-home.svg | 0 .../static/icons/light/camera-movie.svg | 0 .../static/icons/light/camera-polaroid.svg | 0 .../static/icons/light/camera-retro.svg | 0 .../src => src}/static/icons/light/camera.svg | 0 .../static/icons/light/campfire.svg | 0 .../static/icons/light/campground.svg | 0 .../static/icons/light/candle-holder.svg | 0 .../static/icons/light/candy-cane.svg | 0 .../static/icons/light/candy-corn.svg | 0 .../static/icons/light/cannabis.svg | 0 .../static/icons/light/capsules.svg | 0 .../static/icons/light/car-alt.svg | 0 .../static/icons/light/car-battery.svg | 0 .../static/icons/light/car-building.svg | 0 .../static/icons/light/car-bump.svg | 0 .../static/icons/light/car-bus.svg | 0 .../static/icons/light/car-crash.svg | 0 .../static/icons/light/car-garage.svg | 0 .../static/icons/light/car-mechanic.svg | 0 .../static/icons/light/car-side.svg | 0 .../static/icons/light/car-tilt.svg | 0 .../static/icons/light/car-wash.svg | 0 .../src => src}/static/icons/light/car.svg | 0 .../static/icons/light/caravan-alt.svg | 0 .../static/icons/light/caravan.svg | 0 .../static/icons/light/caret-circle-down.svg | 0 .../static/icons/light/caret-circle-left.svg | 0 .../static/icons/light/caret-circle-right.svg | 0 .../static/icons/light/caret-circle-up.svg | 0 .../static/icons/light/caret-down.svg | 0 .../static/icons/light/caret-left.svg | 0 .../static/icons/light/caret-right.svg | 0 .../static/icons/light/caret-square-down.svg | 0 .../static/icons/light/caret-square-left.svg | 0 .../static/icons/light/caret-square-right.svg | 0 .../static/icons/light/caret-square-up.svg | 0 .../static/icons/light/caret-up.svg | 0 .../src => src}/static/icons/light/carrot.svg | 0 .../src => src}/static/icons/light/cars.svg | 0 .../static/icons/light/cart-arrow-down.svg | 0 .../static/icons/light/cart-plus.svg | 0 .../static/icons/light/cash-register.svg | 0 .../static/icons/light/cassette-tape.svg | 0 .../static/icons/light/cat-space.svg | 0 .../src => src}/static/icons/light/cat.svg | 0 .../static/icons/light/cauldron.svg | 0 .../src => src}/static/icons/light/cctv.svg | 0 .../static/icons/light/certificate.svg | 0 .../static/icons/light/chair-office.svg | 0 .../src => src}/static/icons/light/chair.svg | 0 .../static/icons/light/chalkboard-teacher.svg | 0 .../static/icons/light/chalkboard.svg | 0 .../static/icons/light/charging-station.svg | 0 .../static/icons/light/chart-area.svg | 0 .../static/icons/light/chart-bar.svg | 0 .../static/icons/light/chart-line-down.svg | 0 .../static/icons/light/chart-line.svg | 0 .../static/icons/light/chart-network.svg | 0 .../static/icons/light/chart-pie-alt.svg | 0 .../static/icons/light/chart-pie.svg | 0 .../static/icons/light/chart-scatter.svg | 0 .../static/icons/light/check-circle.svg | 0 .../static/icons/light/check-double.svg | 0 .../static/icons/light/check-square.svg | 0 .../src => src}/static/icons/light/check.svg | 0 .../static/icons/light/cheese-swiss.svg | 0 .../src => src}/static/icons/light/cheese.svg | 0 .../static/icons/light/cheeseburger.svg | 0 .../static/icons/light/chess-bishop-alt.svg | 0 .../static/icons/light/chess-bishop.svg | 0 .../static/icons/light/chess-board.svg | 0 .../static/icons/light/chess-clock-alt.svg | 0 .../static/icons/light/chess-clock.svg | 0 .../static/icons/light/chess-king-alt.svg | 0 .../static/icons/light/chess-king.svg | 0 .../static/icons/light/chess-knight-alt.svg | 0 .../static/icons/light/chess-knight.svg | 0 .../static/icons/light/chess-pawn-alt.svg | 0 .../static/icons/light/chess-pawn.svg | 0 .../static/icons/light/chess-queen-alt.svg | 0 .../static/icons/light/chess-queen.svg | 0 .../static/icons/light/chess-rook-alt.svg | 0 .../static/icons/light/chess-rook.svg | 0 .../src => src}/static/icons/light/chess.svg | 0 .../icons/light/chevron-circle-down.svg | 0 .../icons/light/chevron-circle-left.svg | 0 .../icons/light/chevron-circle-right.svg | 0 .../static/icons/light/chevron-circle-up.svg | 0 .../icons/light/chevron-double-down.svg | 0 .../icons/light/chevron-double-left.svg | 0 .../icons/light/chevron-double-right.svg | 0 .../static/icons/light/chevron-double-up.svg | 0 .../static/icons/light/chevron-down.svg | 0 .../static/icons/light/chevron-left.svg | 0 .../static/icons/light/chevron-right.svg | 0 .../icons/light/chevron-square-down.svg | 0 .../icons/light/chevron-square-left.svg | 0 .../icons/light/chevron-square-right.svg | 0 .../static/icons/light/chevron-square-up.svg | 0 .../static/icons/light/chevron-up.svg | 0 .../src => src}/static/icons/light/child.svg | 0 .../static/icons/light/chimney.svg | 0 .../src => src}/static/icons/light/church.svg | 0 .../static/icons/light/circle-notch.svg | 0 .../src => src}/static/icons/light/circle.svg | 0 .../src => src}/static/icons/light/city.svg | 0 .../static/icons/light/clarinet.svg | 0 .../static/icons/light/claw-marks.svg | 0 .../static/icons/light/clinic-medical.svg | 0 .../static/icons/light/clipboard-check.svg | 0 .../icons/light/clipboard-list-check.svg | 0 .../static/icons/light/clipboard-list.svg | 0 .../icons/light/clipboard-prescription.svg | 0 .../static/icons/light/clipboard-user.svg | 0 .../static/icons/light/clipboard.svg | 0 .../src => src}/static/icons/light/clock.svg | 0 .../src => src}/static/icons/light/clone.svg | 0 .../static/icons/light/closed-captioning.svg | 0 .../static/icons/light/cloud-download-alt.svg | 0 .../static/icons/light/cloud-download.svg | 0 .../static/icons/light/cloud-drizzle.svg | 0 .../static/icons/light/cloud-hail-mixed.svg | 0 .../static/icons/light/cloud-hail.svg | 0 .../static/icons/light/cloud-meatball.svg | 0 .../static/icons/light/cloud-moon-rain.svg | 0 .../static/icons/light/cloud-moon.svg | 0 .../static/icons/light/cloud-music.svg | 0 .../static/icons/light/cloud-rain.svg | 0 .../static/icons/light/cloud-rainbow.svg | 0 .../icons/light/cloud-showers-heavy.svg | 0 .../static/icons/light/cloud-showers.svg | 0 .../static/icons/light/cloud-sleet.svg | 0 .../static/icons/light/cloud-snow.svg | 0 .../static/icons/light/cloud-sun-rain.svg | 0 .../static/icons/light/cloud-sun.svg | 0 .../static/icons/light/cloud-upload-alt.svg | 0 .../static/icons/light/cloud-upload.svg | 0 .../src => src}/static/icons/light/cloud.svg | 0 .../static/icons/light/clouds-moon.svg | 0 .../static/icons/light/clouds-sun.svg | 0 .../src => src}/static/icons/light/clouds.svg | 0 .../src => src}/static/icons/light/club.svg | 0 .../static/icons/light/cocktail.svg | 0 .../static/icons/light/code-branch.svg | 0 .../static/icons/light/code-commit.svg | 0 .../static/icons/light/code-merge.svg | 0 .../src => src}/static/icons/light/code.svg | 0 .../static/icons/light/coffee-pot.svg | 0 .../static/icons/light/coffee-togo.svg | 0 .../src => src}/static/icons/light/coffee.svg | 0 .../src => src}/static/icons/light/coffin.svg | 0 .../src => src}/static/icons/light/cog.svg | 0 .../src => src}/static/icons/light/cogs.svg | 0 .../src => src}/static/icons/light/coin.svg | 0 .../src => src}/static/icons/light/coins.svg | 0 .../static/icons/light/columns.svg | 0 .../src => src}/static/icons/light/comet.svg | 0 .../static/icons/light/comment-alt-check.svg | 0 .../static/icons/light/comment-alt-dollar.svg | 0 .../static/icons/light/comment-alt-dots.svg | 0 .../static/icons/light/comment-alt-edit.svg | 0 .../icons/light/comment-alt-exclamation.svg | 0 .../static/icons/light/comment-alt-lines.svg | 0 .../icons/light/comment-alt-medical.svg | 0 .../static/icons/light/comment-alt-minus.svg | 0 .../static/icons/light/comment-alt-music.svg | 0 .../static/icons/light/comment-alt-plus.svg | 0 .../static/icons/light/comment-alt-slash.svg | 0 .../static/icons/light/comment-alt-smile.svg | 0 .../static/icons/light/comment-alt-times.svg | 0 .../static/icons/light/comment-alt.svg | 0 .../static/icons/light/comment-check.svg | 0 .../static/icons/light/comment-dollar.svg | 0 .../static/icons/light/comment-dots.svg | 0 .../static/icons/light/comment-edit.svg | 0 .../icons/light/comment-exclamation.svg | 0 .../static/icons/light/comment-lines.svg | 0 .../static/icons/light/comment-medical.svg | 0 .../static/icons/light/comment-minus.svg | 0 .../static/icons/light/comment-music.svg | 0 .../static/icons/light/comment-plus.svg | 0 .../static/icons/light/comment-slash.svg | 0 .../static/icons/light/comment-smile.svg | 0 .../static/icons/light/comment-times.svg | 0 .../static/icons/light/comment.svg | 0 .../icons/light/comments-alt-dollar.svg | 0 .../static/icons/light/comments-alt.svg | 0 .../static/icons/light/comments-dollar.svg | 0 .../static/icons/light/comments.svg | 0 .../static/icons/light/compact-disc.svg | 0 .../static/icons/light/compass-slash.svg | 0 .../static/icons/light/compass.svg | 0 .../static/icons/light/compress-alt.svg | 0 .../icons/light/compress-arrows-alt.svg | 0 .../static/icons/light/compress-wide.svg | 0 .../static/icons/light/compress.svg | 0 .../static/icons/light/computer-classic.svg | 0 .../static/icons/light/computer-speaker.svg | 0 .../static/icons/light/concierge-bell.svg | 0 .../static/icons/light/construction.svg | 0 .../static/icons/light/container-storage.svg | 0 .../static/icons/light/conveyor-belt-alt.svg | 0 .../static/icons/light/conveyor-belt.svg | 0 .../static/icons/light/cookie-bite.svg | 0 .../src => src}/static/icons/light/cookie.svg | 0 .../src => src}/static/icons/light/copy.svg | 0 .../static/icons/light/copyright.svg | 0 .../src => src}/static/icons/light/corn.svg | 0 .../src => src}/static/icons/light/couch.svg | 0 .../src => src}/static/icons/light/cow.svg | 0 .../static/icons/light/cowbell-more.svg | 0 .../static/icons/light/cowbell.svg | 0 .../static/icons/light/credit-card-blank.svg | 0 .../static/icons/light/credit-card-front.svg | 0 .../static/icons/light/credit-card.svg | 0 .../static/icons/light/cricket.svg | 0 .../static/icons/light/croissant.svg | 0 .../static/icons/light/crop-alt.svg | 0 .../src => src}/static/icons/light/crop.svg | 0 .../src => src}/static/icons/light/cross.svg | 0 .../static/icons/light/crosshairs.svg | 0 .../src => src}/static/icons/light/crow.svg | 0 .../src => src}/static/icons/light/crown.svg | 0 .../src => src}/static/icons/light/crutch.svg | 0 .../static/icons/light/crutches.svg | 0 .../src => src}/static/icons/light/cube.svg | 0 .../src => src}/static/icons/light/cubes.svg | 0 .../static/icons/light/curling.svg | 0 .../src => src}/static/icons/light/cut.svg | 0 .../src => src}/static/icons/light/dagger.svg | 0 .../static/icons/light/database.svg | 0 .../src => src}/static/icons/light/deaf.svg | 0 .../src => src}/static/icons/light/debug.svg | 0 .../static/icons/light/deer-rudolph.svg | 0 .../src => src}/static/icons/light/deer.svg | 0 .../static/icons/light/democrat.svg | 0 .../static/icons/light/desktop-alt.svg | 0 .../static/icons/light/desktop.svg | 0 .../static/icons/light/dewpoint.svg | 0 .../static/icons/light/dharmachakra.svg | 0 .../static/icons/light/diagnoses.svg | 0 .../static/icons/light/diamond.svg | 0 .../static/icons/light/dice-d10.svg | 0 .../static/icons/light/dice-d12.svg | 0 .../static/icons/light/dice-d20.svg | 0 .../static/icons/light/dice-d4.svg | 0 .../static/icons/light/dice-d6.svg | 0 .../static/icons/light/dice-d8.svg | 0 .../static/icons/light/dice-five.svg | 0 .../static/icons/light/dice-four.svg | 0 .../static/icons/light/dice-one.svg | 0 .../static/icons/light/dice-six.svg | 0 .../static/icons/light/dice-three.svg | 0 .../static/icons/light/dice-two.svg | 0 .../src => src}/static/icons/light/dice.svg | 0 .../static/icons/light/digging.svg | 0 .../static/icons/light/digital-tachograph.svg | 0 .../static/icons/light/diploma.svg | 0 .../static/icons/light/directions.svg | 0 .../static/icons/light/disc-drive.svg | 0 .../static/icons/light/disease.svg | 0 .../src => src}/static/icons/light/divide.svg | 0 .../src => src}/static/icons/light/dizzy.svg | 0 .../src => src}/static/icons/light/dna.svg | 0 .../static/icons/light/do-not-enter.svg | 0 .../static/icons/light/dog-leashed.svg | 0 .../src => src}/static/icons/light/dog.svg | 0 .../static/icons/light/dollar-sign.svg | 0 .../static/icons/light/dolly-empty.svg | 0 .../static/icons/light/dolly-flatbed-alt.svg | 0 .../icons/light/dolly-flatbed-empty.svg | 0 .../static/icons/light/dolly-flatbed.svg | 0 .../src => src}/static/icons/light/dolly.svg | 0 .../src => src}/static/icons/light/donate.svg | 0 .../static/icons/light/door-closed.svg | 0 .../static/icons/light/door-open.svg | 0 .../static/icons/light/dot-circle.svg | 0 .../src => src}/static/icons/light/dove.svg | 0 .../static/icons/light/download.svg | 0 .../static/icons/light/drafting-compass.svg | 0 .../src => src}/static/icons/light/dragon.svg | 0 .../static/icons/light/draw-circle.svg | 0 .../static/icons/light/draw-polygon.svg | 0 .../static/icons/light/draw-square.svg | 0 .../static/icons/light/dreidel.svg | 0 .../static/icons/light/drone-alt.svg | 0 .../src => src}/static/icons/light/drone.svg | 0 .../static/icons/light/drum-steelpan.svg | 0 .../src => src}/static/icons/light/drum.svg | 0 .../static/icons/light/drumstick-bite.svg | 0 .../static/icons/light/drumstick.svg | 0 .../static/icons/light/dryer-alt.svg | 0 .../src => src}/static/icons/light/dryer.svg | 0 .../src => src}/static/icons/light/duck.svg | 0 .../static/icons/light/dumbbell.svg | 0 .../static/icons/light/dumpster-fire.svg | 0 .../static/icons/light/dumpster.svg | 0 .../static/icons/light/dungeon.svg | 0 .../static/icons/light/ear-muffs.svg | 0 .../src => src}/static/icons/light/ear.svg | 0 .../static/icons/light/eclipse-alt.svg | 0 .../static/icons/light/eclipse.svg | 0 .../src => src}/static/icons/light/edit.svg | 0 .../static/icons/light/egg-fried.svg | 0 .../src => src}/static/icons/light/egg.svg | 0 .../src => src}/static/icons/light/eject.svg | 0 .../static/icons/light/elephant.svg | 0 .../static/icons/light/ellipsis-h-alt.svg | 0 .../static/icons/light/ellipsis-h.svg | 0 .../static/icons/light/ellipsis-v-alt.svg | 0 .../static/icons/light/ellipsis-v.svg | 0 .../static/icons/light/empty-set.svg | 0 .../static/icons/light/engine-warning.svg | 0 .../icons/light/envelope-open-dollar.svg | 0 .../static/icons/light/envelope-open-text.svg | 0 .../static/icons/light/envelope-open.svg | 0 .../static/icons/light/envelope-square.svg | 0 .../static/icons/light/envelope.svg | 0 .../src => src}/static/icons/light/equals.svg | 0 .../src => src}/static/icons/light/eraser.svg | 0 .../static/icons/light/ethernet.svg | 0 .../static/icons/light/euro-sign.svg | 0 .../static/icons/light/exchange-alt.svg | 0 .../static/icons/light/exchange.svg | 0 .../static/icons/light/exclamation-circle.svg | 0 .../static/icons/light/exclamation-square.svg | 0 .../icons/light/exclamation-triangle.svg | 0 .../static/icons/light/exclamation.svg | 0 .../static/icons/light/expand-alt.svg | 0 .../static/icons/light/expand-arrows-alt.svg | 0 .../static/icons/light/expand-arrows.svg | 0 .../static/icons/light/expand-wide.svg | 0 .../src => src}/static/icons/light/expand.svg | 0 .../static/icons/light/external-link-alt.svg | 0 .../icons/light/external-link-square-alt.svg | 0 .../icons/light/external-link-square.svg | 0 .../static/icons/light/external-link.svg | 0 .../static/icons/light/eye-dropper.svg | 0 .../static/icons/light/eye-evil.svg | 0 .../static/icons/light/eye-slash.svg | 0 .../src => src}/static/icons/light/eye.svg | 0 .../static/icons/light/fan-table.svg | 0 .../src => src}/static/icons/light/fan.svg | 0 .../src => src}/static/icons/light/farm.svg | 0 .../static/icons/light/fast-backward.svg | 0 .../static/icons/light/fast-forward.svg | 0 .../static/icons/light/faucet-drip.svg | 0 .../src => src}/static/icons/light/faucet.svg | 0 .../src => src}/static/icons/light/fax.svg | 0 .../static/icons/light/feather-alt.svg | 0 .../static/icons/light/feather.svg | 0 .../src => src}/static/icons/light/female.svg | 0 .../static/icons/light/field-hockey.svg | 0 .../static/icons/light/fighter-jet.svg | 0 .../static/icons/light/file-alt.svg | 0 .../static/icons/light/file-archive.svg | 0 .../static/icons/light/file-audio.svg | 0 .../static/icons/light/file-certificate.svg | 0 .../static/icons/light/file-chart-line.svg | 0 .../static/icons/light/file-chart-pie.svg | 0 .../static/icons/light/file-check.svg | 0 .../static/icons/light/file-code.svg | 0 .../static/icons/light/file-contract.svg | 0 .../static/icons/light/file-csv.svg | 0 .../static/icons/light/file-download.svg | 0 .../static/icons/light/file-edit.svg | 0 .../static/icons/light/file-excel.svg | 0 .../static/icons/light/file-exclamation.svg | 0 .../static/icons/light/file-export.svg | 0 .../static/icons/light/file-image.svg | 0 .../static/icons/light/file-import.svg | 0 .../icons/light/file-invoice-dollar.svg | 0 .../static/icons/light/file-invoice.svg | 0 .../static/icons/light/file-medical-alt.svg | 0 .../static/icons/light/file-medical.svg | 0 .../static/icons/light/file-minus.svg | 0 .../static/icons/light/file-music.svg | 0 .../static/icons/light/file-pdf.svg | 0 .../static/icons/light/file-plus.svg | 0 .../static/icons/light/file-powerpoint.svg | 0 .../static/icons/light/file-prescription.svg | 0 .../static/icons/light/file-search.svg | 0 .../static/icons/light/file-signature.svg | 0 .../static/icons/light/file-spreadsheet.svg | 0 .../static/icons/light/file-times.svg | 0 .../static/icons/light/file-upload.svg | 0 .../static/icons/light/file-user.svg | 0 .../static/icons/light/file-video.svg | 0 .../static/icons/light/file-word.svg | 0 .../src => src}/static/icons/light/file.svg | 0 .../static/icons/light/files-medical.svg | 0 .../static/icons/light/fill-drip.svg | 0 .../src => src}/static/icons/light/fill.svg | 0 .../static/icons/light/film-alt.svg | 0 .../static/icons/light/film-canister.svg | 0 .../src => src}/static/icons/light/film.svg | 0 .../src => src}/static/icons/light/filter.svg | 0 .../static/icons/light/fingerprint.svg | 0 .../static/icons/light/fire-alt.svg | 0 .../static/icons/light/fire-extinguisher.svg | 0 .../static/icons/light/fire-smoke.svg | 0 .../src => src}/static/icons/light/fire.svg | 0 .../static/icons/light/fireplace.svg | 0 .../static/icons/light/first-aid.svg | 0 .../static/icons/light/fish-cooked.svg | 0 .../src => src}/static/icons/light/fish.svg | 0 .../static/icons/light/fist-raised.svg | 0 .../static/icons/light/flag-alt.svg | 0 .../static/icons/light/flag-checkered.svg | 0 .../static/icons/light/flag-usa.svg | 0 .../src => src}/static/icons/light/flag.svg | 0 .../src => src}/static/icons/light/flame.svg | 0 .../static/icons/light/flashlight.svg | 0 .../static/icons/light/flask-poison.svg | 0 .../static/icons/light/flask-potion.svg | 0 .../src => src}/static/icons/light/flask.svg | 0 .../static/icons/light/flower-daffodil.svg | 0 .../static/icons/light/flower-tulip.svg | 0 .../src => src}/static/icons/light/flower.svg | 0 .../static/icons/light/flushed.svg | 0 .../src => src}/static/icons/light/flute.svg | 0 .../static/icons/light/flux-capacitor.svg | 0 .../src => src}/static/icons/light/fog.svg | 0 .../static/icons/light/folder-minus.svg | 0 .../static/icons/light/folder-open.svg | 0 .../static/icons/light/folder-plus.svg | 0 .../static/icons/light/folder-times.svg | 0 .../static/icons/light/folder-tree.svg | 0 .../src => src}/static/icons/light/folder.svg | 0 .../static/icons/light/folders.svg | 0 .../icons/light/font-awesome-logo-full.svg | 0 .../static/icons/light/font-case.svg | 0 .../src => src}/static/icons/light/font.svg | 0 .../static/icons/light/football-ball.svg | 0 .../static/icons/light/football-helmet.svg | 0 .../static/icons/light/forklift.svg | 0 .../static/icons/light/forward.svg | 0 .../static/icons/light/fragile.svg | 0 .../static/icons/light/french-fries.svg | 0 .../src => src}/static/icons/light/frog.svg | 0 .../static/icons/light/frosty-head.svg | 0 .../static/icons/light/frown-open.svg | 0 .../src => src}/static/icons/light/frown.svg | 0 .../static/icons/light/function.svg | 0 .../static/icons/light/funnel-dollar.svg | 0 .../src => src}/static/icons/light/futbol.svg | 0 .../src => src}/static/icons/light/galaxy.svg | 0 .../static/icons/light/game-board-alt.svg | 0 .../static/icons/light/game-board.svg | 0 .../icons/light/game-console-handheld.svg | 0 .../static/icons/light/gamepad-alt.svg | 0 .../static/icons/light/gamepad.svg | 0 .../static/icons/light/garage-car.svg | 0 .../static/icons/light/garage-open.svg | 0 .../src => src}/static/icons/light/garage.svg | 0 .../static/icons/light/gas-pump-slash.svg | 0 .../static/icons/light/gas-pump.svg | 0 .../src => src}/static/icons/light/gavel.svg | 0 .../src => src}/static/icons/light/gem.svg | 0 .../static/icons/light/genderless.svg | 0 .../src => src}/static/icons/light/ghost.svg | 0 .../static/icons/light/gift-card.svg | 0 .../src => src}/static/icons/light/gift.svg | 0 .../src => src}/static/icons/light/gifts.svg | 0 .../static/icons/light/gingerbread-man.svg | 0 .../static/icons/light/glass-champagne.svg | 0 .../static/icons/light/glass-cheers.svg | 0 .../static/icons/light/glass-citrus.svg | 0 .../static/icons/light/glass-martini-alt.svg | 0 .../static/icons/light/glass-martini.svg | 0 .../icons/light/glass-whiskey-rocks.svg | 0 .../static/icons/light/glass-whiskey.svg | 0 .../src => src}/static/icons/light/glass.svg | 0 .../static/icons/light/glasses-alt.svg | 0 .../static/icons/light/glasses.svg | 0 .../static/icons/light/globe-africa.svg | 0 .../static/icons/light/globe-americas.svg | 0 .../static/icons/light/globe-asia.svg | 0 .../static/icons/light/globe-europe.svg | 0 .../static/icons/light/globe-snow.svg | 0 .../static/icons/light/globe-stand.svg | 0 .../src => src}/static/icons/light/globe.svg | 0 .../static/icons/light/golf-ball.svg | 0 .../static/icons/light/golf-club.svg | 0 .../static/icons/light/gopuram.svg | 0 .../static/icons/light/graduation-cap.svg | 0 .../static/icons/light/gramophone.svg | 0 .../static/icons/light/greater-than-equal.svg | 0 .../static/icons/light/greater-than.svg | 0 .../static/icons/light/grimace.svg | 0 .../static/icons/light/grin-alt.svg | 0 .../static/icons/light/grin-beam-sweat.svg | 0 .../static/icons/light/grin-beam.svg | 0 .../static/icons/light/grin-hearts.svg | 0 .../static/icons/light/grin-squint-tears.svg | 0 .../static/icons/light/grin-squint.svg | 0 .../static/icons/light/grin-stars.svg | 0 .../static/icons/light/grin-tears.svg | 0 .../static/icons/light/grin-tongue-squint.svg | 0 .../static/icons/light/grin-tongue-wink.svg | 0 .../static/icons/light/grin-tongue.svg | 0 .../static/icons/light/grin-wink.svg | 0 .../src => src}/static/icons/light/grin.svg | 0 .../static/icons/light/grip-horizontal.svg | 0 .../icons/light/grip-lines-vertical.svg | 0 .../static/icons/light/grip-lines.svg | 0 .../static/icons/light/grip-vertical.svg | 0 .../static/icons/light/guitar-electric.svg | 0 .../src => src}/static/icons/light/guitar.svg | 0 .../static/icons/light/guitars.svg | 0 .../static/icons/light/h-square.svg | 0 {client/src => src}/static/icons/light/h1.svg | 0 {client/src => src}/static/icons/light/h2.svg | 0 {client/src => src}/static/icons/light/h3.svg | 0 {client/src => src}/static/icons/light/h4.svg | 0 .../static/icons/light/hamburger.svg | 0 .../static/icons/light/hammer-war.svg | 0 .../src => src}/static/icons/light/hammer.svg | 0 .../src => src}/static/icons/light/hamsa.svg | 0 .../static/icons/light/hand-heart.svg | 0 .../static/icons/light/hand-holding-box.svg | 0 .../static/icons/light/hand-holding-heart.svg | 0 .../static/icons/light/hand-holding-magic.svg | 0 .../icons/light/hand-holding-seedling.svg | 0 .../static/icons/light/hand-holding-usd.svg | 0 .../static/icons/light/hand-holding-water.svg | 0 .../static/icons/light/hand-holding.svg | 0 .../static/icons/light/hand-lizard.svg | 0 .../static/icons/light/hand-middle-finger.svg | 0 .../static/icons/light/hand-paper.svg | 0 .../static/icons/light/hand-peace.svg | 0 .../static/icons/light/hand-point-down.svg | 0 .../static/icons/light/hand-point-left.svg | 0 .../static/icons/light/hand-point-right.svg | 0 .../static/icons/light/hand-point-up.svg | 0 .../static/icons/light/hand-pointer.svg | 0 .../static/icons/light/hand-receiving.svg | 0 .../static/icons/light/hand-rock.svg | 0 .../static/icons/light/hand-scissors.svg | 0 .../static/icons/light/hand-spock.svg | 0 .../static/icons/light/hands-heart.svg | 0 .../static/icons/light/hands-helping.svg | 0 .../static/icons/light/hands-usd.svg | 0 .../src => src}/static/icons/light/hands.svg | 0 .../static/icons/light/handshake-alt.svg | 0 .../static/icons/light/handshake.svg | 0 .../static/icons/light/hanukiah.svg | 0 .../static/icons/light/hard-hat.svg | 0 .../static/icons/light/hashtag.svg | 0 .../static/icons/light/hat-chef.svg | 0 .../static/icons/light/hat-cowboy-side.svg | 0 .../static/icons/light/hat-cowboy.svg | 0 .../static/icons/light/hat-santa.svg | 0 .../static/icons/light/hat-winter.svg | 0 .../static/icons/light/hat-witch.svg | 0 .../static/icons/light/hat-wizard.svg | 0 .../src => src}/static/icons/light/hdd.svg | 0 .../static/icons/light/head-side-brain.svg | 0 .../icons/light/head-side-headphones.svg | 0 .../static/icons/light/head-side-medical.svg | 0 .../static/icons/light/head-side.svg | 0 .../static/icons/light/head-vr.svg | 0 .../static/icons/light/heading.svg | 0 .../static/icons/light/headphones-alt.svg | 0 .../static/icons/light/headphones.svg | 0 .../static/icons/light/headset.svg | 0 .../static/icons/light/heart-broken.svg | 0 .../static/icons/light/heart-circle.svg | 0 .../static/icons/light/heart-rate.svg | 0 .../static/icons/light/heart-square.svg | 0 .../src => src}/static/icons/light/heart.svg | 0 .../static/icons/light/heartbeat.svg | 0 .../src => src}/static/icons/light/heat.svg | 0 .../static/icons/light/helicopter.svg | 0 .../static/icons/light/helmet-battle.svg | 0 .../static/icons/light/hexagon.svg | 0 .../static/icons/light/highlighter.svg | 0 .../src => src}/static/icons/light/hiking.svg | 0 .../src => src}/static/icons/light/hippo.svg | 0 .../static/icons/light/history.svg | 0 .../static/icons/light/hockey-mask.svg | 0 .../static/icons/light/hockey-puck.svg | 0 .../static/icons/light/hockey-sticks.svg | 0 .../static/icons/light/holly-berry.svg | 0 .../static/icons/light/home-alt.svg | 0 .../static/icons/light/home-heart.svg | 0 .../static/icons/light/home-lg-alt.svg | 0 .../static/icons/light/home-lg.svg | 0 .../src => src}/static/icons/light/home.svg | 0 .../static/icons/light/hood-cloak.svg | 0 .../static/icons/light/horizontal-rule.svg | 0 .../static/icons/light/horse-head.svg | 0 .../static/icons/light/horse-saddle.svg | 0 .../src => src}/static/icons/light/horse.svg | 0 .../static/icons/light/hospital-alt.svg | 0 .../static/icons/light/hospital-symbol.svg | 0 .../static/icons/light/hospital-user.svg | 0 .../static/icons/light/hospital.svg | 0 .../static/icons/light/hospitals.svg | 0 .../static/icons/light/hot-tub.svg | 0 .../src => src}/static/icons/light/hotdog.svg | 0 .../src => src}/static/icons/light/hotel.svg | 0 .../static/icons/light/hourglass-end.svg | 0 .../static/icons/light/hourglass-half.svg | 0 .../static/icons/light/hourglass-start.svg | 0 .../static/icons/light/hourglass.svg | 0 .../static/icons/light/house-damage.svg | 0 .../static/icons/light/house-day.svg | 0 .../static/icons/light/house-flood.svg | 0 .../static/icons/light/house-leave.svg | 0 .../static/icons/light/house-night.svg | 0 .../static/icons/light/house-return.svg | 0 .../static/icons/light/house-signal.svg | 0 .../src => src}/static/icons/light/house.svg | 0 .../static/icons/light/hryvnia.svg | 0 .../static/icons/light/humidity.svg | 0 .../static/icons/light/hurricane.svg | 0 .../static/icons/light/i-cursor.svg | 0 .../static/icons/light/ice-cream.svg | 0 .../static/icons/light/ice-skate.svg | 0 .../static/icons/light/icicles.svg | 0 .../static/icons/light/icons-alt.svg | 0 .../src => src}/static/icons/light/icons.svg | 0 .../static/icons/light/id-badge.svg | 0 .../static/icons/light/id-card-alt.svg | 0 .../static/icons/light/id-card.svg | 0 .../src => src}/static/icons/light/igloo.svg | 0 .../static/icons/light/image-polaroid.svg | 0 .../src => src}/static/icons/light/image.svg | 0 .../src => src}/static/icons/light/images.svg | 0 .../static/icons/light/inbox-in.svg | 0 .../static/icons/light/inbox-out.svg | 0 .../src => src}/static/icons/light/inbox.svg | 0 .../src => src}/static/icons/light/indent.svg | 0 .../static/icons/light/industry-alt.svg | 0 .../static/icons/light/industry.svg | 0 .../static/icons/light/infinity.svg | 0 .../static/icons/light/info-circle.svg | 0 .../static/icons/light/info-square.svg | 0 .../src => src}/static/icons/light/info.svg | 0 .../static/icons/light/inhaler.svg | 0 .../static/icons/light/integral.svg | 0 .../static/icons/light/intersection.svg | 0 .../static/icons/light/inventory.svg | 0 .../static/icons/light/island-tropical.svg | 0 .../src => src}/static/icons/light/italic.svg | 0 .../static/icons/light/jack-o-lantern.svg | 0 .../src => src}/static/icons/light/jedi.svg | 0 .../src => src}/static/icons/light/joint.svg | 0 .../static/icons/light/journal-whills.svg | 0 .../static/icons/light/joystick.svg | 0 .../src => src}/static/icons/light/jug.svg | 0 .../src => src}/static/icons/light/kaaba.svg | 0 .../src => src}/static/icons/light/kazoo.svg | 0 .../static/icons/light/kerning.svg | 0 .../static/icons/light/key-skeleton.svg | 0 .../src => src}/static/icons/light/key.svg | 0 .../static/icons/light/keyboard.svg | 0 .../static/icons/light/keynote.svg | 0 .../src => src}/static/icons/light/khanda.svg | 0 .../static/icons/light/kidneys.svg | 0 .../static/icons/light/kiss-beam.svg | 0 .../static/icons/light/kiss-wink-heart.svg | 0 .../src => src}/static/icons/light/kiss.svg | 0 .../src => src}/static/icons/light/kite.svg | 0 .../static/icons/light/kiwi-bird.svg | 0 .../static/icons/light/knife-kitchen.svg | 0 .../src => src}/static/icons/light/lambda.svg | 0 .../static/icons/light/lamp-desk.svg | 0 .../static/icons/light/lamp-floor.svg | 0 .../src => src}/static/icons/light/lamp.svg | 0 .../static/icons/light/landmark-alt.svg | 0 .../static/icons/light/landmark.svg | 0 .../static/icons/light/language.svg | 0 .../static/icons/light/laptop-code.svg | 0 .../static/icons/light/laptop-medical.svg | 0 .../src => src}/static/icons/light/laptop.svg | 0 .../src => src}/static/icons/light/lasso.svg | 0 .../static/icons/light/laugh-beam.svg | 0 .../static/icons/light/laugh-squint.svg | 0 .../static/icons/light/laugh-wink.svg | 0 .../src => src}/static/icons/light/laugh.svg | 0 .../static/icons/light/layer-group.svg | 0 .../static/icons/light/layer-minus.svg | 0 .../static/icons/light/layer-plus.svg | 0 .../static/icons/light/leaf-heart.svg | 0 .../static/icons/light/leaf-maple.svg | 0 .../static/icons/light/leaf-oak.svg | 0 .../src => src}/static/icons/light/leaf.svg | 0 .../src => src}/static/icons/light/lemon.svg | 0 .../static/icons/light/less-than-equal.svg | 0 .../static/icons/light/less-than.svg | 0 .../static/icons/light/level-down-alt.svg | 0 .../static/icons/light/level-down.svg | 0 .../static/icons/light/level-up-alt.svg | 0 .../static/icons/light/level-up.svg | 0 .../static/icons/light/life-ring.svg | 0 .../static/icons/light/light-ceiling.svg | 0 .../static/icons/light/light-switch-off.svg | 0 .../static/icons/light/light-switch-on.svg | 0 .../static/icons/light/light-switch.svg | 0 .../static/icons/light/lightbulb-dollar.svg | 0 .../icons/light/lightbulb-exclamation.svg | 0 .../static/icons/light/lightbulb-on.svg | 0 .../static/icons/light/lightbulb-slash.svg | 0 .../static/icons/light/lightbulb.svg | 0 .../static/icons/light/lights-holiday.svg | 0 .../static/icons/light/line-columns.svg | 0 .../static/icons/light/line-height.svg | 0 .../src => src}/static/icons/light/link.svg | 0 .../src => src}/static/icons/light/lips.svg | 0 .../static/icons/light/lira-sign.svg | 0 .../static/icons/light/list-alt.svg | 0 .../static/icons/light/list-music.svg | 0 .../static/icons/light/list-ol.svg | 0 .../static/icons/light/list-ul.svg | 0 .../src => src}/static/icons/light/list.svg | 0 .../static/icons/light/location-arrow.svg | 0 .../static/icons/light/location-circle.svg | 0 .../static/icons/light/location-slash.svg | 0 .../static/icons/light/location.svg | 0 .../static/icons/light/lock-alt.svg | 0 .../static/icons/light/lock-open-alt.svg | 0 .../static/icons/light/lock-open.svg | 0 .../src => src}/static/icons/light/lock.svg | 0 .../icons/light/long-arrow-alt-down.svg | 0 .../icons/light/long-arrow-alt-left.svg | 0 .../icons/light/long-arrow-alt-right.svg | 0 .../static/icons/light/long-arrow-alt-up.svg | 0 .../static/icons/light/long-arrow-down.svg | 0 .../static/icons/light/long-arrow-left.svg | 0 .../static/icons/light/long-arrow-right.svg | 0 .../static/icons/light/long-arrow-up.svg | 0 .../static/icons/light/loveseat.svg | 0 .../static/icons/light/low-vision.svg | 0 .../static/icons/light/luchador.svg | 0 .../static/icons/light/luggage-cart.svg | 0 .../src => src}/static/icons/light/lungs.svg | 0 .../src => src}/static/icons/light/mace.svg | 0 .../src => src}/static/icons/light/magic.svg | 0 .../src => src}/static/icons/light/magnet.svg | 0 .../static/icons/light/mail-bulk.svg | 0 .../static/icons/light/mailbox.svg | 0 .../src => src}/static/icons/light/male.svg | 0 .../static/icons/light/mandolin.svg | 0 .../static/icons/light/map-marked-alt.svg | 0 .../static/icons/light/map-marked.svg | 0 .../icons/light/map-marker-alt-slash.svg | 0 .../static/icons/light/map-marker-alt.svg | 0 .../static/icons/light/map-marker-check.svg | 0 .../static/icons/light/map-marker-edit.svg | 0 .../icons/light/map-marker-exclamation.svg | 0 .../static/icons/light/map-marker-minus.svg | 0 .../static/icons/light/map-marker-plus.svg | 0 .../icons/light/map-marker-question.svg | 0 .../static/icons/light/map-marker-slash.svg | 0 .../static/icons/light/map-marker-smile.svg | 0 .../static/icons/light/map-marker-times.svg | 0 .../static/icons/light/map-marker.svg | 0 .../static/icons/light/map-pin.svg | 0 .../static/icons/light/map-signs.svg | 0 .../src => src}/static/icons/light/map.svg | 0 .../src => src}/static/icons/light/marker.svg | 0 .../static/icons/light/mars-double.svg | 0 .../static/icons/light/mars-stroke-h.svg | 0 .../static/icons/light/mars-stroke-v.svg | 0 .../static/icons/light/mars-stroke.svg | 0 .../src => src}/static/icons/light/mars.svg | 0 .../src => src}/static/icons/light/mask.svg | 0 .../src => src}/static/icons/light/meat.svg | 0 .../src => src}/static/icons/light/medal.svg | 0 .../src => src}/static/icons/light/medkit.svg | 0 .../static/icons/light/megaphone.svg | 0 .../static/icons/light/meh-blank.svg | 0 .../static/icons/light/meh-rolling-eyes.svg | 0 .../src => src}/static/icons/light/meh.svg | 0 .../src => src}/static/icons/light/memory.svg | 0 .../static/icons/light/menorah.svg | 0 .../static/icons/light/mercury.svg | 0 .../src => src}/static/icons/light/meteor.svg | 0 .../static/icons/light/microchip.svg | 0 .../icons/light/microphone-alt-slash.svg | 0 .../static/icons/light/microphone-alt.svg | 0 .../static/icons/light/microphone-slash.svg | 0 .../static/icons/light/microphone-stand.svg | 0 .../static/icons/light/microphone.svg | 0 .../static/icons/light/microscope.svg | 0 .../static/icons/light/microwave.svg | 0 .../static/icons/light/mind-share.svg | 0 .../static/icons/light/minus-circle.svg | 0 .../static/icons/light/minus-hexagon.svg | 0 .../static/icons/light/minus-octagon.svg | 0 .../static/icons/light/minus-square.svg | 0 .../src => src}/static/icons/light/minus.svg | 0 .../static/icons/light/mistletoe.svg | 0 .../src => src}/static/icons/light/mitten.svg | 0 .../static/icons/light/mobile-alt.svg | 0 .../static/icons/light/mobile-android-alt.svg | 0 .../static/icons/light/mobile-android.svg | 0 .../src => src}/static/icons/light/mobile.svg | 0 .../static/icons/light/money-bill-alt.svg | 0 .../icons/light/money-bill-wave-alt.svg | 0 .../static/icons/light/money-bill-wave.svg | 0 .../static/icons/light/money-bill.svg | 0 .../static/icons/light/money-check-alt.svg | 0 .../icons/light/money-check-edit-alt.svg | 0 .../static/icons/light/money-check-edit.svg | 0 .../static/icons/light/money-check.svg | 0 .../static/icons/light/monitor-heart-rate.svg | 0 .../src => src}/static/icons/light/monkey.svg | 0 .../static/icons/light/monument.svg | 0 .../static/icons/light/moon-cloud.svg | 0 .../static/icons/light/moon-stars.svg | 0 .../src => src}/static/icons/light/moon.svg | 0 .../static/icons/light/mortar-pestle.svg | 0 .../src => src}/static/icons/light/mosque.svg | 0 .../static/icons/light/motorcycle.svg | 0 .../static/icons/light/mountain.svg | 0 .../static/icons/light/mountains.svg | 0 .../static/icons/light/mouse-alt.svg | 0 .../static/icons/light/mouse-pointer.svg | 0 .../src => src}/static/icons/light/mouse.svg | 0 .../static/icons/light/mp3-player.svg | 0 .../static/icons/light/mug-hot.svg | 0 .../static/icons/light/mug-marshmallows.svg | 0 .../static/icons/light/mug-tea.svg | 0 .../src => src}/static/icons/light/mug.svg | 0 .../static/icons/light/music-alt-slash.svg | 0 .../static/icons/light/music-alt.svg | 0 .../static/icons/light/music-slash.svg | 0 .../src => src}/static/icons/light/music.svg | 0 .../static/icons/light/narwhal.svg | 0 .../static/icons/light/network-wired.svg | 0 .../src => src}/static/icons/light/neuter.svg | 0 .../static/icons/light/newspaper.svg | 0 .../static/icons/light/not-equal.svg | 0 .../static/icons/light/notes-medical.svg | 0 .../static/icons/light/object-group.svg | 0 .../static/icons/light/object-ungroup.svg | 0 .../static/icons/light/octagon.svg | 0 .../static/icons/light/oil-can.svg | 0 .../static/icons/light/oil-temp.svg | 0 {client/src => src}/static/icons/light/om.svg | 0 .../src => src}/static/icons/light/omega.svg | 0 .../static/icons/light/ornament.svg | 0 .../src => src}/static/icons/light/otter.svg | 0 .../static/icons/light/outdent.svg | 0 .../src => src}/static/icons/light/outlet.svg | 0 .../src => src}/static/icons/light/oven.svg | 0 .../static/icons/light/overline.svg | 0 .../static/icons/light/page-break.svg | 0 .../src => src}/static/icons/light/pager.svg | 0 .../static/icons/light/paint-brush-alt.svg | 0 .../static/icons/light/paint-brush.svg | 0 .../static/icons/light/paint-roller.svg | 0 .../static/icons/light/palette.svg | 0 .../static/icons/light/pallet-alt.svg | 0 .../src => src}/static/icons/light/pallet.svg | 0 .../static/icons/light/paper-plane.svg | 0 .../static/icons/light/paperclip.svg | 0 .../static/icons/light/parachute-box.svg | 0 .../static/icons/light/paragraph-rtl.svg | 0 .../static/icons/light/paragraph.svg | 0 .../icons/light/parking-circle-slash.svg | 0 .../static/icons/light/parking-circle.svg | 0 .../static/icons/light/parking-slash.svg | 0 .../static/icons/light/parking.svg | 0 .../static/icons/light/passport.svg | 0 .../static/icons/light/pastafarianism.svg | 0 .../src => src}/static/icons/light/paste.svg | 0 .../static/icons/light/pause-circle.svg | 0 .../src => src}/static/icons/light/pause.svg | 0 .../static/icons/light/paw-alt.svg | 0 .../static/icons/light/paw-claws.svg | 0 .../src => src}/static/icons/light/paw.svg | 0 .../src => src}/static/icons/light/peace.svg | 0 .../static/icons/light/pegasus.svg | 0 .../static/icons/light/pen-alt.svg | 0 .../static/icons/light/pen-fancy.svg | 0 .../static/icons/light/pen-nib.svg | 0 .../static/icons/light/pen-square.svg | 0 .../src => src}/static/icons/light/pen.svg | 0 .../static/icons/light/pencil-alt.svg | 0 .../static/icons/light/pencil-paintbrush.svg | 0 .../static/icons/light/pencil-ruler.svg | 0 .../src => src}/static/icons/light/pencil.svg | 0 .../static/icons/light/pennant.svg | 0 .../static/icons/light/people-carry.svg | 0 .../static/icons/light/pepper-hot.svg | 0 .../static/icons/light/percent.svg | 0 .../static/icons/light/percentage.svg | 0 .../static/icons/light/person-booth.svg | 0 .../static/icons/light/person-carry.svg | 0 .../static/icons/light/person-dolly-empty.svg | 0 .../static/icons/light/person-dolly.svg | 0 .../static/icons/light/person-sign.svg | 0 .../static/icons/light/phone-alt.svg | 0 .../static/icons/light/phone-laptop.svg | 0 .../static/icons/light/phone-office.svg | 0 .../static/icons/light/phone-plus.svg | 0 .../static/icons/light/phone-rotary.svg | 0 .../static/icons/light/phone-slash.svg | 0 .../static/icons/light/phone-square-alt.svg | 0 .../static/icons/light/phone-square.svg | 0 .../static/icons/light/phone-volume.svg | 0 .../src => src}/static/icons/light/phone.svg | 0 .../static/icons/light/photo-video.svg | 0 {client/src => src}/static/icons/light/pi.svg | 0 .../static/icons/light/piano-keyboard.svg | 0 .../src => src}/static/icons/light/piano.svg | 0 .../src => src}/static/icons/light/pie.svg | 0 .../src => src}/static/icons/light/pig.svg | 0 .../static/icons/light/piggy-bank.svg | 0 .../src => src}/static/icons/light/pills.svg | 0 .../static/icons/light/pizza-slice.svg | 0 .../src => src}/static/icons/light/pizza.svg | 0 .../static/icons/light/place-of-worship.svg | 0 .../static/icons/light/plane-alt.svg | 0 .../static/icons/light/plane-arrival.svg | 0 .../static/icons/light/plane-departure.svg | 0 .../src => src}/static/icons/light/plane.svg | 0 .../static/icons/light/planet-moon.svg | 0 .../static/icons/light/planet-ringed.svg | 0 .../static/icons/light/play-circle.svg | 0 .../src => src}/static/icons/light/play.svg | 0 .../src => src}/static/icons/light/plug.svg | 0 .../static/icons/light/plus-circle.svg | 0 .../static/icons/light/plus-hexagon.svg | 0 .../static/icons/light/plus-octagon.svg | 0 .../static/icons/light/plus-square.svg | 0 .../src => src}/static/icons/light/plus.svg | 0 .../static/icons/light/podcast.svg | 0 .../static/icons/light/podium-star.svg | 0 .../src => src}/static/icons/light/podium.svg | 0 .../static/icons/light/police-box.svg | 0 .../src => src}/static/icons/light/poll-h.svg | 0 .../static/icons/light/poll-people.svg | 0 .../src => src}/static/icons/light/poll.svg | 0 .../static/icons/light/poo-storm.svg | 0 .../src => src}/static/icons/light/poo.svg | 0 .../src => src}/static/icons/light/poop.svg | 0 .../static/icons/light/popcorn.svg | 0 .../static/icons/light/portal-enter.svg | 0 .../static/icons/light/portal-exit.svg | 0 .../static/icons/light/portrait.svg | 0 .../static/icons/light/pound-sign.svg | 0 .../static/icons/light/power-off.svg | 0 .../src => src}/static/icons/light/pray.svg | 0 .../static/icons/light/praying-hands.svg | 0 .../icons/light/prescription-bottle-alt.svg | 0 .../icons/light/prescription-bottle.svg | 0 .../static/icons/light/prescription.svg | 0 .../static/icons/light/presentation.svg | 0 .../static/icons/light/print-search.svg | 0 .../static/icons/light/print-slash.svg | 0 .../src => src}/static/icons/light/print.svg | 0 .../static/icons/light/procedures.svg | 0 .../static/icons/light/project-diagram.svg | 0 .../static/icons/light/projector.svg | 0 .../static/icons/light/pumpkin.svg | 0 .../static/icons/light/puzzle-piece.svg | 0 .../src => src}/static/icons/light/qrcode.svg | 0 .../static/icons/light/question-circle.svg | 0 .../static/icons/light/question-square.svg | 0 .../static/icons/light/question.svg | 0 .../static/icons/light/quidditch.svg | 0 .../static/icons/light/quote-left.svg | 0 .../static/icons/light/quote-right.svg | 0 .../src => src}/static/icons/light/quran.svg | 0 .../static/icons/light/rabbit-fast.svg | 0 .../src => src}/static/icons/light/rabbit.svg | 0 .../static/icons/light/racquet.svg | 0 .../src => src}/static/icons/light/radar.svg | 0 .../static/icons/light/radiation-alt.svg | 0 .../static/icons/light/radiation.svg | 0 .../static/icons/light/radio-alt.svg | 0 .../src => src}/static/icons/light/radio.svg | 0 .../static/icons/light/rainbow.svg | 0 .../static/icons/light/raindrops.svg | 0 .../src => src}/static/icons/light/ram.svg | 0 .../static/icons/light/ramp-loading.svg | 0 .../src => src}/static/icons/light/random.svg | 0 .../src => src}/static/icons/light/raygun.svg | 0 .../static/icons/light/receipt.svg | 0 .../static/icons/light/record-vinyl.svg | 0 .../icons/light/rectangle-landscape.svg | 0 .../static/icons/light/rectangle-portrait.svg | 0 .../static/icons/light/rectangle-wide.svg | 0 .../static/icons/light/recycle.svg | 0 .../static/icons/light/redo-alt.svg | 0 .../src => src}/static/icons/light/redo.svg | 0 .../static/icons/light/refrigerator.svg | 0 .../static/icons/light/registered.svg | 0 .../static/icons/light/remove-format.svg | 0 .../static/icons/light/repeat-1-alt.svg | 0 .../static/icons/light/repeat-1.svg | 0 .../static/icons/light/repeat-alt.svg | 0 .../src => src}/static/icons/light/repeat.svg | 0 .../static/icons/light/reply-all.svg | 0 .../src => src}/static/icons/light/reply.svg | 0 .../static/icons/light/republican.svg | 0 .../static/icons/light/restroom.svg | 0 .../static/icons/light/retweet-alt.svg | 0 .../static/icons/light/retweet.svg | 0 .../src => src}/static/icons/light/ribbon.svg | 0 .../src => src}/static/icons/light/ring.svg | 0 .../static/icons/light/rings-wedding.svg | 0 .../src => src}/static/icons/light/road.svg | 0 .../src => src}/static/icons/light/robot.svg | 0 .../static/icons/light/rocket-launch.svg | 0 .../src => src}/static/icons/light/rocket.svg | 0 .../static/icons/light/route-highway.svg | 0 .../static/icons/light/route-interstate.svg | 0 .../src => src}/static/icons/light/route.svg | 0 .../src => src}/static/icons/light/router.svg | 0 .../static/icons/light/rss-square.svg | 0 .../src => src}/static/icons/light/rss.svg | 0 .../static/icons/light/ruble-sign.svg | 0 .../static/icons/light/ruler-combined.svg | 0 .../static/icons/light/ruler-horizontal.svg | 0 .../static/icons/light/ruler-triangle.svg | 0 .../static/icons/light/ruler-vertical.svg | 0 .../src => src}/static/icons/light/ruler.svg | 0 .../static/icons/light/running.svg | 0 .../static/icons/light/rupee-sign.svg | 0 {client/src => src}/static/icons/light/rv.svg | 0 .../static/icons/light/sack-dollar.svg | 0 .../src => src}/static/icons/light/sack.svg | 0 .../static/icons/light/sad-cry.svg | 0 .../static/icons/light/sad-tear.svg | 0 .../src => src}/static/icons/light/salad.svg | 0 .../static/icons/light/sandwich.svg | 0 .../static/icons/light/satellite-dish.svg | 0 .../static/icons/light/satellite.svg | 0 .../static/icons/light/sausage.svg | 0 .../src => src}/static/icons/light/save.svg | 0 .../static/icons/light/sax-hot.svg | 0 .../static/icons/light/saxophone.svg | 0 .../static/icons/light/scalpel-path.svg | 0 .../static/icons/light/scalpel.svg | 0 .../static/icons/light/scanner-image.svg | 0 .../static/icons/light/scanner-keyboard.svg | 0 .../icons/light/scanner-touchscreen.svg | 0 .../static/icons/light/scanner.svg | 0 .../static/icons/light/scarecrow.svg | 0 .../src => src}/static/icons/light/scarf.svg | 0 .../src => src}/static/icons/light/school.svg | 0 .../static/icons/light/screwdriver.svg | 0 .../static/icons/light/scroll-old.svg | 0 .../src => src}/static/icons/light/scroll.svg | 0 .../static/icons/light/scrubber.svg | 0 .../src => src}/static/icons/light/scythe.svg | 0 .../static/icons/light/sd-card.svg | 0 .../static/icons/light/search-dollar.svg | 0 .../static/icons/light/search-location.svg | 0 .../static/icons/light/search-minus.svg | 0 .../static/icons/light/search-plus.svg | 0 .../src => src}/static/icons/light/search.svg | 0 .../static/icons/light/seedling.svg | 0 .../static/icons/light/send-back.svg | 0 .../static/icons/light/send-backward.svg | 0 .../static/icons/light/sensor-alert.svg | 0 .../static/icons/light/sensor-fire.svg | 0 .../static/icons/light/sensor-on.svg | 0 .../static/icons/light/sensor-smoke.svg | 0 .../src => src}/static/icons/light/sensor.svg | 0 .../src => src}/static/icons/light/server.svg | 0 .../src => src}/static/icons/light/shapes.svg | 0 .../static/icons/light/share-all.svg | 0 .../static/icons/light/share-alt-square.svg | 0 .../static/icons/light/share-alt.svg | 0 .../static/icons/light/share-square.svg | 0 .../src => src}/static/icons/light/share.svg | 0 .../src => src}/static/icons/light/sheep.svg | 0 .../static/icons/light/shekel-sign.svg | 0 .../static/icons/light/shield-alt.svg | 0 .../static/icons/light/shield-check.svg | 0 .../static/icons/light/shield-cross.svg | 0 .../src => src}/static/icons/light/shield.svg | 0 .../src => src}/static/icons/light/ship.svg | 0 .../static/icons/light/shipping-fast.svg | 0 .../static/icons/light/shipping-timed.svg | 0 .../static/icons/light/shish-kebab.svg | 0 .../static/icons/light/shoe-prints.svg | 0 .../static/icons/light/shopping-bag.svg | 0 .../static/icons/light/shopping-basket.svg | 0 .../static/icons/light/shopping-cart.svg | 0 .../static/icons/light/shovel-snow.svg | 0 .../src => src}/static/icons/light/shovel.svg | 0 .../src => src}/static/icons/light/shower.svg | 0 .../static/icons/light/shredder.svg | 0 .../static/icons/light/shuttle-van.svg | 0 .../static/icons/light/shuttlecock.svg | 0 .../src => src}/static/icons/light/sickle.svg | 0 .../src => src}/static/icons/light/sigma.svg | 0 .../static/icons/light/sign-in-alt.svg | 0 .../static/icons/light/sign-in.svg | 0 .../static/icons/light/sign-language.svg | 0 .../static/icons/light/sign-out-alt.svg | 0 .../static/icons/light/sign-out.svg | 0 .../src => src}/static/icons/light/sign.svg | 0 .../static/icons/light/signal-1.svg | 0 .../static/icons/light/signal-2.svg | 0 .../static/icons/light/signal-3.svg | 0 .../static/icons/light/signal-4.svg | 0 .../static/icons/light/signal-alt-1.svg | 0 .../static/icons/light/signal-alt-2.svg | 0 .../static/icons/light/signal-alt-3.svg | 0 .../static/icons/light/signal-alt-slash.svg | 0 .../static/icons/light/signal-alt.svg | 0 .../static/icons/light/signal-slash.svg | 0 .../static/icons/light/signal-stream.svg | 0 .../src => src}/static/icons/light/signal.svg | 0 .../static/icons/light/signature.svg | 0 .../static/icons/light/sim-card.svg | 0 .../static/icons/light/siren-on.svg | 0 .../src => src}/static/icons/light/siren.svg | 0 .../static/icons/light/sitemap.svg | 0 .../static/icons/light/skating.svg | 0 .../static/icons/light/skeleton.svg | 0 .../static/icons/light/ski-jump.svg | 0 .../static/icons/light/ski-lift.svg | 0 .../static/icons/light/skiing-nordic.svg | 0 .../src => src}/static/icons/light/skiing.svg | 0 .../static/icons/light/skull-cow.svg | 0 .../static/icons/light/skull-crossbones.svg | 0 .../src => src}/static/icons/light/skull.svg | 0 .../src => src}/static/icons/light/slash.svg | 0 .../static/icons/light/sledding.svg | 0 .../src => src}/static/icons/light/sleigh.svg | 0 .../static/icons/light/sliders-h-square.svg | 0 .../static/icons/light/sliders-h.svg | 0 .../static/icons/light/sliders-v-square.svg | 0 .../static/icons/light/sliders-v.svg | 0 .../static/icons/light/smile-beam.svg | 0 .../static/icons/light/smile-plus.svg | 0 .../static/icons/light/smile-wink.svg | 0 .../src => src}/static/icons/light/smile.svg | 0 .../src => src}/static/icons/light/smog.svg | 0 .../src => src}/static/icons/light/smoke.svg | 0 .../static/icons/light/smoking-ban.svg | 0 .../static/icons/light/smoking.svg | 0 .../src => src}/static/icons/light/sms.svg | 0 .../src => src}/static/icons/light/snake.svg | 0 .../src => src}/static/icons/light/snooze.svg | 0 .../static/icons/light/snow-blowing.svg | 0 .../static/icons/light/snowboarding.svg | 0 .../static/icons/light/snowflake.svg | 0 .../static/icons/light/snowflakes.svg | 0 .../static/icons/light/snowman.svg | 0 .../static/icons/light/snowmobile.svg | 0 .../static/icons/light/snowplow.svg | 0 .../src => src}/static/icons/light/socks.svg | 0 .../static/icons/light/solar-panel.svg | 0 .../static/icons/light/solar-system.svg | 0 .../icons/light/sort-alpha-down-alt.svg | 0 .../static/icons/light/sort-alpha-down.svg | 0 .../static/icons/light/sort-alpha-up-alt.svg | 0 .../static/icons/light/sort-alpha-up.svg | 0 .../static/icons/light/sort-alt.svg | 0 .../icons/light/sort-amount-down-alt.svg | 0 .../static/icons/light/sort-amount-down.svg | 0 .../static/icons/light/sort-amount-up-alt.svg | 0 .../static/icons/light/sort-amount-up.svg | 0 .../static/icons/light/sort-circle-down.svg | 0 .../static/icons/light/sort-circle-up.svg | 0 .../static/icons/light/sort-circle.svg | 0 .../static/icons/light/sort-down.svg | 0 .../icons/light/sort-numeric-down-alt.svg | 0 .../static/icons/light/sort-numeric-down.svg | 0 .../icons/light/sort-numeric-up-alt.svg | 0 .../static/icons/light/sort-numeric-up.svg | 0 .../icons/light/sort-shapes-down-alt.svg | 0 .../static/icons/light/sort-shapes-down.svg | 0 .../static/icons/light/sort-shapes-up-alt.svg | 0 .../static/icons/light/sort-shapes-up.svg | 0 .../static/icons/light/sort-size-down-alt.svg | 0 .../static/icons/light/sort-size-down.svg | 0 .../static/icons/light/sort-size-up-alt.svg | 0 .../static/icons/light/sort-size-up.svg | 0 .../static/icons/light/sort-up.svg | 0 .../src => src}/static/icons/light/sort.svg | 0 .../src => src}/static/icons/light/soup.svg | 0 .../src => src}/static/icons/light/spa.svg | 0 .../static/icons/light/space-shuttle.svg | 0 .../icons/light/space-station-moon-alt.svg | 0 .../static/icons/light/space-station-moon.svg | 0 .../src => src}/static/icons/light/spade.svg | 0 .../static/icons/light/sparkles.svg | 0 .../static/icons/light/speaker.svg | 0 .../static/icons/light/speakers.svg | 0 .../static/icons/light/spell-check.svg | 0 .../static/icons/light/spider-black-widow.svg | 0 .../static/icons/light/spider-web.svg | 0 .../src => src}/static/icons/light/spider.svg | 0 .../static/icons/light/spinner-third.svg | 0 .../static/icons/light/spinner.svg | 0 .../static/icons/light/splotch.svg | 0 .../static/icons/light/spray-can.svg | 0 .../static/icons/light/sprinkler.svg | 0 .../static/icons/light/square-full.svg | 0 .../static/icons/light/square-root-alt.svg | 0 .../static/icons/light/square-root.svg | 0 .../src => src}/static/icons/light/square.svg | 0 .../static/icons/light/squirrel.svg | 0 .../src => src}/static/icons/light/staff.svg | 0 .../src => src}/static/icons/light/stamp.svg | 0 .../static/icons/light/star-and-crescent.svg | 0 .../static/icons/light/star-christmas.svg | 0 .../static/icons/light/star-exclamation.svg | 0 .../static/icons/light/star-half-alt.svg | 0 .../static/icons/light/star-half.svg | 0 .../static/icons/light/star-of-david.svg | 0 .../static/icons/light/star-of-life.svg | 0 .../static/icons/light/star-shooting.svg | 0 .../src => src}/static/icons/light/star.svg | 0 .../static/icons/light/starfighter-alt.svg | 0 .../static/icons/light/starfighter.svg | 0 .../src => src}/static/icons/light/stars.svg | 0 .../static/icons/light/starship-freighter.svg | 0 .../static/icons/light/starship.svg | 0 .../src => src}/static/icons/light/steak.svg | 0 .../static/icons/light/steering-wheel.svg | 0 .../static/icons/light/step-backward.svg | 0 .../static/icons/light/step-forward.svg | 0 .../static/icons/light/stethoscope.svg | 0 .../static/icons/light/sticky-note.svg | 0 .../static/icons/light/stocking.svg | 0 .../static/icons/light/stomach.svg | 0 .../static/icons/light/stop-circle.svg | 0 .../src => src}/static/icons/light/stop.svg | 0 .../static/icons/light/stopwatch.svg | 0 .../static/icons/light/store-alt.svg | 0 .../src => src}/static/icons/light/store.svg | 0 .../src => src}/static/icons/light/stream.svg | 0 .../static/icons/light/street-view.svg | 0 .../static/icons/light/stretcher.svg | 0 .../static/icons/light/strikethrough.svg | 0 .../static/icons/light/stroopwafel.svg | 0 .../static/icons/light/subscript.svg | 0 .../src => src}/static/icons/light/subway.svg | 0 .../static/icons/light/suitcase-rolling.svg | 0 .../static/icons/light/suitcase.svg | 0 .../static/icons/light/sun-cloud.svg | 0 .../static/icons/light/sun-dust.svg | 0 .../static/icons/light/sun-haze.svg | 0 .../src => src}/static/icons/light/sun.svg | 0 .../static/icons/light/sunglasses.svg | 0 .../static/icons/light/sunrise.svg | 0 .../src => src}/static/icons/light/sunset.svg | 0 .../static/icons/light/superscript.svg | 0 .../static/icons/light/surprise.svg | 0 .../static/icons/light/swatchbook.svg | 0 .../static/icons/light/swimmer.svg | 0 .../static/icons/light/swimming-pool.svg | 0 .../static/icons/light/sword-laser-alt.svg | 0 .../static/icons/light/sword-laser.svg | 0 .../src => src}/static/icons/light/sword.svg | 0 .../static/icons/light/swords-laser.svg | 0 .../src => src}/static/icons/light/swords.svg | 0 .../static/icons/light/synagogue.svg | 0 .../static/icons/light/sync-alt.svg | 0 .../src => src}/static/icons/light/sync.svg | 0 .../static/icons/light/syringe.svg | 0 .../static/icons/light/table-tennis.svg | 0 .../src => src}/static/icons/light/table.svg | 0 .../static/icons/light/tablet-alt.svg | 0 .../static/icons/light/tablet-android-alt.svg | 0 .../static/icons/light/tablet-android.svg | 0 .../static/icons/light/tablet-rugged.svg | 0 .../src => src}/static/icons/light/tablet.svg | 0 .../static/icons/light/tablets.svg | 0 .../icons/light/tachometer-alt-average.svg | 0 .../icons/light/tachometer-alt-fast.svg | 0 .../icons/light/tachometer-alt-fastest.svg | 0 .../icons/light/tachometer-alt-slow.svg | 0 .../icons/light/tachometer-alt-slowest.svg | 0 .../static/icons/light/tachometer-alt.svg | 0 .../static/icons/light/tachometer-average.svg | 0 .../static/icons/light/tachometer-fast.svg | 0 .../static/icons/light/tachometer-fastest.svg | 0 .../static/icons/light/tachometer-slow.svg | 0 .../static/icons/light/tachometer-slowest.svg | 0 .../static/icons/light/tachometer.svg | 0 .../src => src}/static/icons/light/taco.svg | 0 .../src => src}/static/icons/light/tag.svg | 0 .../src => src}/static/icons/light/tags.svg | 0 .../src => src}/static/icons/light/tally.svg | 0 .../src => src}/static/icons/light/tanakh.svg | 0 .../src => src}/static/icons/light/tape.svg | 0 .../static/icons/light/tasks-alt.svg | 0 .../src => src}/static/icons/light/tasks.svg | 0 .../src => src}/static/icons/light/taxi.svg | 0 .../static/icons/light/teeth-open.svg | 0 .../src => src}/static/icons/light/teeth.svg | 0 .../static/icons/light/telescope.svg | 0 .../static/icons/light/temperature-down.svg | 0 .../static/icons/light/temperature-frigid.svg | 0 .../static/icons/light/temperature-high.svg | 0 .../static/icons/light/temperature-hot.svg | 0 .../static/icons/light/temperature-low.svg | 0 .../static/icons/light/temperature-up.svg | 0 .../src => src}/static/icons/light/tenge.svg | 0 .../static/icons/light/tennis-ball.svg | 0 .../static/icons/light/terminal.svg | 0 .../static/icons/light/text-height.svg | 0 .../static/icons/light/text-size.svg | 0 .../static/icons/light/text-width.svg | 0 .../src => src}/static/icons/light/text.svg | 0 .../static/icons/light/th-large.svg | 0 .../static/icons/light/th-list.svg | 0 {client/src => src}/static/icons/light/th.svg | 0 .../static/icons/light/theater-masks.svg | 0 .../static/icons/light/thermometer-empty.svg | 0 .../static/icons/light/thermometer-full.svg | 0 .../static/icons/light/thermometer-half.svg | 0 .../icons/light/thermometer-quarter.svg | 0 .../light/thermometer-three-quarters.svg | 0 .../static/icons/light/thermometer.svg | 0 .../src => src}/static/icons/light/theta.svg | 0 .../static/icons/light/thumbs-down.svg | 0 .../static/icons/light/thumbs-up.svg | 0 .../static/icons/light/thumbtack.svg | 0 .../static/icons/light/thunderstorm-moon.svg | 0 .../static/icons/light/thunderstorm-sun.svg | 0 .../static/icons/light/thunderstorm.svg | 0 .../static/icons/light/ticket-alt.svg | 0 .../src => src}/static/icons/light/ticket.svg | 0 .../src => src}/static/icons/light/tilde.svg | 0 .../static/icons/light/times-circle.svg | 0 .../static/icons/light/times-hexagon.svg | 0 .../static/icons/light/times-octagon.svg | 0 .../static/icons/light/times-square.svg | 0 .../src => src}/static/icons/light/times.svg | 0 .../static/icons/light/tint-slash.svg | 0 .../src => src}/static/icons/light/tint.svg | 0 .../static/icons/light/tire-flat.svg | 0 .../icons/light/tire-pressure-warning.svg | 0 .../static/icons/light/tire-rugged.svg | 0 .../src => src}/static/icons/light/tire.svg | 0 .../src => src}/static/icons/light/tired.svg | 0 .../static/icons/light/toggle-off.svg | 0 .../static/icons/light/toggle-on.svg | 0 .../static/icons/light/toilet-paper-alt.svg | 0 .../static/icons/light/toilet-paper.svg | 0 .../src => src}/static/icons/light/toilet.svg | 0 .../static/icons/light/tombstone-alt.svg | 0 .../static/icons/light/tombstone.svg | 0 .../static/icons/light/toolbox.svg | 0 .../src => src}/static/icons/light/tools.svg | 0 .../src => src}/static/icons/light/tooth.svg | 0 .../static/icons/light/toothbrush.svg | 0 .../src => src}/static/icons/light/torah.svg | 0 .../static/icons/light/torii-gate.svg | 0 .../static/icons/light/tornado.svg | 0 .../static/icons/light/tractor.svg | 0 .../static/icons/light/trademark.svg | 0 .../static/icons/light/traffic-cone.svg | 0 .../static/icons/light/traffic-light-go.svg | 0 .../static/icons/light/traffic-light-slow.svg | 0 .../static/icons/light/traffic-light-stop.svg | 0 .../static/icons/light/traffic-light.svg | 0 .../static/icons/light/trailer.svg | 0 .../src => src}/static/icons/light/train.svg | 0 .../src => src}/static/icons/light/tram.svg | 0 .../static/icons/light/transgender-alt.svg | 0 .../static/icons/light/transgender.svg | 0 .../static/icons/light/transporter-1.svg | 0 .../static/icons/light/transporter-2.svg | 0 .../static/icons/light/transporter-3.svg | 0 .../static/icons/light/transporter-empty.svg | 0 .../static/icons/light/transporter.svg | 0 .../static/icons/light/trash-alt.svg | 0 .../static/icons/light/trash-restore-alt.svg | 0 .../static/icons/light/trash-restore.svg | 0 .../static/icons/light/trash-undo-alt.svg | 0 .../static/icons/light/trash-undo.svg | 0 .../src => src}/static/icons/light/trash.svg | 0 .../static/icons/light/treasure-chest.svg | 0 .../static/icons/light/tree-alt.svg | 0 .../static/icons/light/tree-christmas.svg | 0 .../static/icons/light/tree-decorated.svg | 0 .../static/icons/light/tree-large.svg | 0 .../static/icons/light/tree-palm.svg | 0 .../src => src}/static/icons/light/tree.svg | 0 .../src => src}/static/icons/light/trees.svg | 0 .../static/icons/light/triangle-music.svg | 0 .../static/icons/light/triangle.svg | 0 .../static/icons/light/trophy-alt.svg | 0 .../src => src}/static/icons/light/trophy.svg | 0 .../static/icons/light/truck-container.svg | 0 .../static/icons/light/truck-couch.svg | 0 .../static/icons/light/truck-loading.svg | 0 .../static/icons/light/truck-monster.svg | 0 .../static/icons/light/truck-moving.svg | 0 .../static/icons/light/truck-pickup.svg | 0 .../static/icons/light/truck-plow.svg | 0 .../static/icons/light/truck-ramp.svg | 0 .../src => src}/static/icons/light/truck.svg | 0 .../static/icons/light/trumpet.svg | 0 .../src => src}/static/icons/light/tshirt.svg | 0 .../src => src}/static/icons/light/tty.svg | 0 .../src => src}/static/icons/light/turkey.svg | 0 .../static/icons/light/turntable.svg | 0 .../src => src}/static/icons/light/turtle.svg | 0 .../src => src}/static/icons/light/tv-alt.svg | 0 .../static/icons/light/tv-music.svg | 0 .../static/icons/light/tv-retro.svg | 0 {client/src => src}/static/icons/light/tv.svg | 0 .../static/icons/light/typewriter.svg | 0 .../static/icons/light/ufo-beam.svg | 0 .../src => src}/static/icons/light/ufo.svg | 0 .../static/icons/light/umbrella-beach.svg | 0 .../static/icons/light/umbrella.svg | 0 .../static/icons/light/underline.svg | 0 .../static/icons/light/undo-alt.svg | 0 .../src => src}/static/icons/light/undo.svg | 0 .../static/icons/light/unicorn.svg | 0 .../src => src}/static/icons/light/union.svg | 0 .../static/icons/light/universal-access.svg | 0 .../static/icons/light/university.svg | 0 .../src => src}/static/icons/light/unlink.svg | 0 .../static/icons/light/unlock-alt.svg | 0 .../src => src}/static/icons/light/unlock.svg | 0 .../src => src}/static/icons/light/upload.svg | 0 .../static/icons/light/usb-drive.svg | 0 .../static/icons/light/usd-circle.svg | 0 .../static/icons/light/usd-square.svg | 0 .../static/icons/light/user-alien.svg | 0 .../static/icons/light/user-alt-slash.svg | 0 .../static/icons/light/user-alt.svg | 0 .../static/icons/light/user-astronaut.svg | 0 .../static/icons/light/user-chart.svg | 0 .../static/icons/light/user-check.svg | 0 .../static/icons/light/user-circle.svg | 0 .../static/icons/light/user-clock.svg | 0 .../static/icons/light/user-cog.svg | 0 .../static/icons/light/user-cowboy.svg | 0 .../static/icons/light/user-crown.svg | 0 .../static/icons/light/user-edit.svg | 0 .../static/icons/light/user-friends.svg | 0 .../static/icons/light/user-graduate.svg | 0 .../static/icons/light/user-hard-hat.svg | 0 .../static/icons/light/user-headset.svg | 0 .../static/icons/light/user-injured.svg | 0 .../static/icons/light/user-lock.svg | 0 .../static/icons/light/user-md-chat.svg | 0 .../static/icons/light/user-md.svg | 0 .../static/icons/light/user-minus.svg | 0 .../static/icons/light/user-music.svg | 0 .../static/icons/light/user-ninja.svg | 0 .../static/icons/light/user-nurse.svg | 0 .../static/icons/light/user-plus.svg | 0 .../static/icons/light/user-robot.svg | 0 .../static/icons/light/user-secret.svg | 0 .../static/icons/light/user-shield.svg | 0 .../static/icons/light/user-slash.svg | 0 .../static/icons/light/user-tag.svg | 0 .../static/icons/light/user-tie.svg | 0 .../static/icons/light/user-times.svg | 0 .../static/icons/light/user-visor.svg | 0 .../src => src}/static/icons/light/user.svg | 0 .../static/icons/light/users-class.svg | 0 .../static/icons/light/users-cog.svg | 0 .../static/icons/light/users-crown.svg | 0 .../static/icons/light/users-medical.svg | 0 .../src => src}/static/icons/light/users.svg | 0 .../static/icons/light/utensil-fork.svg | 0 .../static/icons/light/utensil-knife.svg | 0 .../static/icons/light/utensil-spoon.svg | 0 .../static/icons/light/utensils-alt.svg | 0 .../static/icons/light/utensils.svg | 0 .../static/icons/light/vacuum-robot.svg | 0 .../src => src}/static/icons/light/vacuum.svg | 0 .../static/icons/light/value-absolute.svg | 0 .../static/icons/light/vector-square.svg | 0 .../static/icons/light/venus-double.svg | 0 .../static/icons/light/venus-mars.svg | 0 .../src => src}/static/icons/light/venus.svg | 0 .../src => src}/static/icons/light/vhs.svg | 0 .../src => src}/static/icons/light/vial.svg | 0 .../src => src}/static/icons/light/vials.svg | 0 .../static/icons/light/video-plus.svg | 0 .../static/icons/light/video-slash.svg | 0 .../src => src}/static/icons/light/video.svg | 0 .../src => src}/static/icons/light/vihara.svg | 0 .../src => src}/static/icons/light/violin.svg | 0 .../static/icons/light/voicemail.svg | 0 .../static/icons/light/volcano.svg | 0 .../static/icons/light/volleyball-ball.svg | 0 .../static/icons/light/volume-down.svg | 0 .../static/icons/light/volume-mute.svg | 0 .../static/icons/light/volume-off.svg | 0 .../static/icons/light/volume-slash.svg | 0 .../static/icons/light/volume-up.svg | 0 .../src => src}/static/icons/light/volume.svg | 0 .../static/icons/light/vote-nay.svg | 0 .../static/icons/light/vote-yea.svg | 0 .../static/icons/light/vr-cardboard.svg | 0 .../static/icons/light/wagon-covered.svg | 0 .../src => src}/static/icons/light/walker.svg | 0 .../static/icons/light/walkie-talkie.svg | 0 .../static/icons/light/walking.svg | 0 .../src => src}/static/icons/light/wallet.svg | 0 .../static/icons/light/wand-magic.svg | 0 .../src => src}/static/icons/light/wand.svg | 0 .../static/icons/light/warehouse-alt.svg | 0 .../static/icons/light/warehouse.svg | 0 .../src => src}/static/icons/light/washer.svg | 0 .../static/icons/light/watch-calculator.svg | 0 .../static/icons/light/watch-fitness.svg | 0 .../src => src}/static/icons/light/watch.svg | 0 .../static/icons/light/water-lower.svg | 0 .../static/icons/light/water-rise.svg | 0 .../src => src}/static/icons/light/water.svg | 0 .../static/icons/light/wave-sine.svg | 0 .../static/icons/light/wave-square.svg | 0 .../static/icons/light/wave-triangle.svg | 0 .../static/icons/light/waveform-path.svg | 0 .../static/icons/light/waveform.svg | 0 .../static/icons/light/webcam-slash.svg | 0 .../src => src}/static/icons/light/webcam.svg | 0 .../static/icons/light/weight-hanging.svg | 0 .../src => src}/static/icons/light/weight.svg | 0 .../src => src}/static/icons/light/whale.svg | 0 .../src => src}/static/icons/light/wheat.svg | 0 .../static/icons/light/wheelchair.svg | 0 .../static/icons/light/whistle.svg | 0 .../src => src}/static/icons/light/wifi-1.svg | 0 .../src => src}/static/icons/light/wifi-2.svg | 0 .../static/icons/light/wifi-slash.svg | 0 .../src => src}/static/icons/light/wifi.svg | 0 .../static/icons/light/wind-turbine.svg | 0 .../static/icons/light/wind-warning.svg | 0 .../src => src}/static/icons/light/wind.svg | 0 .../static/icons/light/window-alt.svg | 0 .../static/icons/light/window-close.svg | 0 .../static/icons/light/window-frame-open.svg | 0 .../static/icons/light/window-frame.svg | 0 .../static/icons/light/window-maximize.svg | 0 .../static/icons/light/window-minimize.svg | 0 .../static/icons/light/window-restore.svg | 0 .../src => src}/static/icons/light/window.svg | 0 .../static/icons/light/windsock.svg | 0 .../static/icons/light/wine-bottle.svg | 0 .../static/icons/light/wine-glass-alt.svg | 0 .../static/icons/light/wine-glass.svg | 0 .../static/icons/light/won-sign.svg | 0 .../src => src}/static/icons/light/wreath.svg | 0 .../src => src}/static/icons/light/wrench.svg | 0 .../src => src}/static/icons/light/x-ray.svg | 0 .../static/icons/light/yen-sign.svg | 0 .../static/icons/light/yin-yang.svg | 0 .../static/icons/regular/abacus.svg | 0 .../static/icons/regular/acorn.svg | 0 .../src => src}/static/icons/regular/ad.svg | 0 .../static/icons/regular/address-book.svg | 0 .../static/icons/regular/address-card.svg | 0 .../static/icons/regular/adjust.svg | 0 .../static/icons/regular/air-conditioner.svg | 0 .../static/icons/regular/air-freshener.svg | 0 .../static/icons/regular/alarm-clock.svg | 0 .../icons/regular/alarm-exclamation.svg | 0 .../static/icons/regular/alarm-plus.svg | 0 .../static/icons/regular/alarm-snooze.svg | 0 .../static/icons/regular/album-collection.svg | 0 .../static/icons/regular/album.svg | 0 .../static/icons/regular/alicorn.svg | 0 .../static/icons/regular/alien-monster.svg | 0 .../static/icons/regular/alien.svg | 0 .../static/icons/regular/align-center.svg | 0 .../static/icons/regular/align-justify.svg | 0 .../static/icons/regular/align-left.svg | 0 .../static/icons/regular/align-right.svg | 0 .../static/icons/regular/align-slash.svg | 0 .../static/icons/regular/allergies.svg | 0 .../static/icons/regular/ambulance.svg | 0 .../american-sign-language-interpreting.svg | 0 .../static/icons/regular/amp-guitar.svg | 0 .../static/icons/regular/analytics.svg | 0 .../static/icons/regular/anchor.svg | 0 .../static/icons/regular/angel.svg | 0 .../icons/regular/angle-double-down.svg | 0 .../icons/regular/angle-double-left.svg | 0 .../icons/regular/angle-double-right.svg | 0 .../static/icons/regular/angle-double-up.svg | 0 .../static/icons/regular/angle-down.svg | 0 .../static/icons/regular/angle-left.svg | 0 .../static/icons/regular/angle-right.svg | 0 .../static/icons/regular/angle-up.svg | 0 .../static/icons/regular/angry.svg | 0 .../src => src}/static/icons/regular/ankh.svg | 0 .../static/icons/regular/apple-alt.svg | 0 .../static/icons/regular/apple-crate.svg | 0 .../static/icons/regular/archive.svg | 0 .../static/icons/regular/archway.svg | 0 .../icons/regular/arrow-alt-circle-down.svg | 0 .../icons/regular/arrow-alt-circle-left.svg | 0 .../icons/regular/arrow-alt-circle-right.svg | 0 .../icons/regular/arrow-alt-circle-up.svg | 0 .../static/icons/regular/arrow-alt-down.svg | 0 .../icons/regular/arrow-alt-from-bottom.svg | 0 .../icons/regular/arrow-alt-from-left.svg | 0 .../icons/regular/arrow-alt-from-right.svg | 0 .../icons/regular/arrow-alt-from-top.svg | 0 .../static/icons/regular/arrow-alt-left.svg | 0 .../static/icons/regular/arrow-alt-right.svg | 0 .../icons/regular/arrow-alt-square-down.svg | 0 .../icons/regular/arrow-alt-square-left.svg | 0 .../icons/regular/arrow-alt-square-right.svg | 0 .../icons/regular/arrow-alt-square-up.svg | 0 .../icons/regular/arrow-alt-to-bottom.svg | 0 .../icons/regular/arrow-alt-to-left.svg | 0 .../icons/regular/arrow-alt-to-right.svg | 0 .../static/icons/regular/arrow-alt-to-top.svg | 0 .../static/icons/regular/arrow-alt-up.svg | 0 .../icons/regular/arrow-circle-down.svg | 0 .../icons/regular/arrow-circle-left.svg | 0 .../icons/regular/arrow-circle-right.svg | 0 .../static/icons/regular/arrow-circle-up.svg | 0 .../static/icons/regular/arrow-down.svg | 0 .../icons/regular/arrow-from-bottom.svg | 0 .../static/icons/regular/arrow-from-left.svg | 0 .../static/icons/regular/arrow-from-right.svg | 0 .../static/icons/regular/arrow-from-top.svg | 0 .../static/icons/regular/arrow-left.svg | 0 .../static/icons/regular/arrow-right.svg | 0 .../icons/regular/arrow-square-down.svg | 0 .../icons/regular/arrow-square-left.svg | 0 .../icons/regular/arrow-square-right.svg | 0 .../static/icons/regular/arrow-square-up.svg | 0 .../static/icons/regular/arrow-to-bottom.svg | 0 .../static/icons/regular/arrow-to-left.svg | 0 .../static/icons/regular/arrow-to-right.svg | 0 .../static/icons/regular/arrow-to-top.svg | 0 .../static/icons/regular/arrow-up.svg | 0 .../static/icons/regular/arrows-alt-h.svg | 0 .../static/icons/regular/arrows-alt-v.svg | 0 .../static/icons/regular/arrows-alt.svg | 0 .../static/icons/regular/arrows-h.svg | 0 .../static/icons/regular/arrows-v.svg | 0 .../static/icons/regular/arrows.svg | 0 .../regular/assistive-listening-systems.svg | 0 .../static/icons/regular/asterisk.svg | 0 .../src => src}/static/icons/regular/at.svg | 0 .../static/icons/regular/atlas.svg | 0 .../static/icons/regular/atom-alt.svg | 0 .../src => src}/static/icons/regular/atom.svg | 0 .../icons/regular/audio-description.svg | 0 .../static/icons/regular/award.svg | 0 .../static/icons/regular/axe-battle.svg | 0 .../src => src}/static/icons/regular/axe.svg | 0 .../static/icons/regular/baby-carriage.svg | 0 .../src => src}/static/icons/regular/baby.svg | 0 .../static/icons/regular/backpack.svg | 0 .../static/icons/regular/backspace.svg | 0 .../static/icons/regular/backward.svg | 0 .../static/icons/regular/bacon.svg | 0 .../static/icons/regular/badge-check.svg | 0 .../static/icons/regular/badge-dollar.svg | 0 .../static/icons/regular/badge-percent.svg | 0 .../static/icons/regular/badge-sheriff.svg | 0 .../static/icons/regular/badge.svg | 0 .../static/icons/regular/badger-honey.svg | 0 .../static/icons/regular/bags-shopping.svg | 0 .../static/icons/regular/bahai.svg | 0 .../icons/regular/balance-scale-left.svg | 0 .../icons/regular/balance-scale-right.svg | 0 .../static/icons/regular/balance-scale.svg | 0 .../static/icons/regular/ball-pile.svg | 0 .../static/icons/regular/ballot-check.svg | 0 .../static/icons/regular/ballot.svg | 0 .../src => src}/static/icons/regular/ban.svg | 0 .../static/icons/regular/band-aid.svg | 0 .../static/icons/regular/banjo.svg | 0 .../static/icons/regular/barcode-alt.svg | 0 .../static/icons/regular/barcode-read.svg | 0 .../static/icons/regular/barcode-scan.svg | 0 .../static/icons/regular/barcode.svg | 0 .../src => src}/static/icons/regular/bars.svg | 0 .../static/icons/regular/baseball-ball.svg | 0 .../static/icons/regular/baseball.svg | 0 .../static/icons/regular/basketball-ball.svg | 0 .../static/icons/regular/basketball-hoop.svg | 0 .../src => src}/static/icons/regular/bat.svg | 0 .../src => src}/static/icons/regular/bath.svg | 0 .../static/icons/regular/battery-bolt.svg | 0 .../static/icons/regular/battery-empty.svg | 0 .../static/icons/regular/battery-full.svg | 0 .../static/icons/regular/battery-half.svg | 0 .../static/icons/regular/battery-quarter.svg | 0 .../static/icons/regular/battery-slash.svg | 0 .../icons/regular/battery-three-quarters.svg | 0 .../static/icons/regular/bed-alt.svg | 0 .../static/icons/regular/bed-bunk.svg | 0 .../static/icons/regular/bed-empty.svg | 0 .../src => src}/static/icons/regular/bed.svg | 0 .../src => src}/static/icons/regular/beer.svg | 0 .../static/icons/regular/bell-exclamation.svg | 0 .../static/icons/regular/bell-on.svg | 0 .../static/icons/regular/bell-plus.svg | 0 .../icons/regular/bell-school-slash.svg | 0 .../static/icons/regular/bell-school.svg | 0 .../static/icons/regular/bell-slash.svg | 0 .../src => src}/static/icons/regular/bell.svg | 0 .../static/icons/regular/bells.svg | 0 .../static/icons/regular/betamax.svg | 0 .../static/icons/regular/bezier-curve.svg | 0 .../static/icons/regular/bible.svg | 0 .../static/icons/regular/bicycle.svg | 0 .../static/icons/regular/biking-mountain.svg | 0 .../static/icons/regular/biking.svg | 0 .../static/icons/regular/binoculars.svg | 0 .../static/icons/regular/biohazard.svg | 0 .../static/icons/regular/birthday-cake.svg | 0 .../static/icons/regular/blanket.svg | 0 .../static/icons/regular/blender-phone.svg | 0 .../static/icons/regular/blender.svg | 0 .../static/icons/regular/blind.svg | 0 .../static/icons/regular/blinds-open.svg | 0 .../static/icons/regular/blinds-raised.svg | 0 .../static/icons/regular/blinds.svg | 0 .../src => src}/static/icons/regular/blog.svg | 0 .../src => src}/static/icons/regular/bold.svg | 0 .../src => src}/static/icons/regular/bolt.svg | 0 .../src => src}/static/icons/regular/bomb.svg | 0 .../static/icons/regular/bone-break.svg | 0 .../src => src}/static/icons/regular/bone.svg | 0 .../src => src}/static/icons/regular/bong.svg | 0 .../static/icons/regular/book-alt.svg | 0 .../static/icons/regular/book-dead.svg | 0 .../static/icons/regular/book-heart.svg | 0 .../static/icons/regular/book-medical.svg | 0 .../static/icons/regular/book-open.svg | 0 .../static/icons/regular/book-reader.svg | 0 .../static/icons/regular/book-spells.svg | 0 .../static/icons/regular/book-user.svg | 0 .../src => src}/static/icons/regular/book.svg | 0 .../static/icons/regular/bookmark.svg | 0 .../static/icons/regular/books-medical.svg | 0 .../static/icons/regular/books.svg | 0 .../static/icons/regular/boombox.svg | 0 .../src => src}/static/icons/regular/boot.svg | 0 .../static/icons/regular/booth-curtain.svg | 0 .../static/icons/regular/border-all.svg | 0 .../static/icons/regular/border-bottom.svg | 0 .../static/icons/regular/border-center-h.svg | 0 .../static/icons/regular/border-center-v.svg | 0 .../static/icons/regular/border-inner.svg | 0 .../static/icons/regular/border-left.svg | 0 .../static/icons/regular/border-none.svg | 0 .../static/icons/regular/border-outer.svg | 0 .../static/icons/regular/border-right.svg | 0 .../static/icons/regular/border-style-alt.svg | 0 .../static/icons/regular/border-style.svg | 0 .../static/icons/regular/border-top.svg | 0 .../static/icons/regular/bow-arrow.svg | 0 .../static/icons/regular/bowling-ball.svg | 0 .../static/icons/regular/bowling-pins.svg | 0 .../static/icons/regular/box-alt.svg | 0 .../static/icons/regular/box-ballot.svg | 0 .../static/icons/regular/box-check.svg | 0 .../static/icons/regular/box-fragile.svg | 0 .../static/icons/regular/box-full.svg | 0 .../static/icons/regular/box-heart.svg | 0 .../static/icons/regular/box-open.svg | 0 .../static/icons/regular/box-up.svg | 0 .../static/icons/regular/box-usd.svg | 0 .../src => src}/static/icons/regular/box.svg | 0 .../static/icons/regular/boxes-alt.svg | 0 .../static/icons/regular/boxes.svg | 0 .../static/icons/regular/boxing-glove.svg | 0 .../static/icons/regular/brackets-curly.svg | 0 .../static/icons/regular/brackets.svg | 0 .../static/icons/regular/braille.svg | 0 .../static/icons/regular/brain.svg | 0 .../static/icons/regular/bread-loaf.svg | 0 .../static/icons/regular/bread-slice.svg | 0 .../icons/regular/briefcase-medical.svg | 0 .../static/icons/regular/briefcase.svg | 0 .../static/icons/regular/bring-forward.svg | 0 .../static/icons/regular/bring-front.svg | 0 .../static/icons/regular/broadcast-tower.svg | 0 .../static/icons/regular/broom.svg | 0 .../static/icons/regular/browser.svg | 0 .../static/icons/regular/brush.svg | 0 .../src => src}/static/icons/regular/bug.svg | 0 .../static/icons/regular/building.svg | 0 .../static/icons/regular/bullhorn.svg | 0 .../static/icons/regular/bullseye-arrow.svg | 0 .../static/icons/regular/bullseye-pointer.svg | 0 .../static/icons/regular/bullseye.svg | 0 .../static/icons/regular/burger-soda.svg | 0 .../src => src}/static/icons/regular/burn.svg | 0 .../static/icons/regular/burrito.svg | 0 .../static/icons/regular/bus-alt.svg | 0 .../static/icons/regular/bus-school.svg | 0 .../src => src}/static/icons/regular/bus.svg | 0 .../static/icons/regular/business-time.svg | 0 .../static/icons/regular/cabinet-filing.svg | 0 .../static/icons/regular/cactus.svg | 0 .../static/icons/regular/calculator-alt.svg | 0 .../static/icons/regular/calculator.svg | 0 .../static/icons/regular/calendar-alt.svg | 0 .../static/icons/regular/calendar-check.svg | 0 .../static/icons/regular/calendar-day.svg | 0 .../static/icons/regular/calendar-edit.svg | 0 .../icons/regular/calendar-exclamation.svg | 0 .../static/icons/regular/calendar-minus.svg | 0 .../static/icons/regular/calendar-plus.svg | 0 .../static/icons/regular/calendar-star.svg | 0 .../static/icons/regular/calendar-times.svg | 0 .../static/icons/regular/calendar-week.svg | 0 .../static/icons/regular/calendar.svg | 0 .../static/icons/regular/camcorder.svg | 0 .../static/icons/regular/camera-alt.svg | 0 .../static/icons/regular/camera-home.svg | 0 .../static/icons/regular/camera-movie.svg | 0 .../static/icons/regular/camera-polaroid.svg | 0 .../static/icons/regular/camera-retro.svg | 0 .../static/icons/regular/camera.svg | 0 .../static/icons/regular/campfire.svg | 0 .../static/icons/regular/campground.svg | 0 .../static/icons/regular/candle-holder.svg | 0 .../static/icons/regular/candy-cane.svg | 0 .../static/icons/regular/candy-corn.svg | 0 .../static/icons/regular/cannabis.svg | 0 .../static/icons/regular/capsules.svg | 0 .../static/icons/regular/car-alt.svg | 0 .../static/icons/regular/car-battery.svg | 0 .../static/icons/regular/car-building.svg | 0 .../static/icons/regular/car-bump.svg | 0 .../static/icons/regular/car-bus.svg | 0 .../static/icons/regular/car-crash.svg | 0 .../static/icons/regular/car-garage.svg | 0 .../static/icons/regular/car-mechanic.svg | 0 .../static/icons/regular/car-side.svg | 0 .../static/icons/regular/car-tilt.svg | 0 .../static/icons/regular/car-wash.svg | 0 .../src => src}/static/icons/regular/car.svg | 0 .../static/icons/regular/caravan-alt.svg | 0 .../static/icons/regular/caravan.svg | 0 .../icons/regular/caret-circle-down.svg | 0 .../icons/regular/caret-circle-left.svg | 0 .../icons/regular/caret-circle-right.svg | 0 .../static/icons/regular/caret-circle-up.svg | 0 .../static/icons/regular/caret-down.svg | 0 .../static/icons/regular/caret-left.svg | 0 .../static/icons/regular/caret-right.svg | 0 .../icons/regular/caret-square-down.svg | 0 .../icons/regular/caret-square-left.svg | 0 .../icons/regular/caret-square-right.svg | 0 .../static/icons/regular/caret-square-up.svg | 0 .../static/icons/regular/caret-up.svg | 0 .../static/icons/regular/carrot.svg | 0 .../src => src}/static/icons/regular/cars.svg | 0 .../static/icons/regular/cart-arrow-down.svg | 0 .../static/icons/regular/cart-plus.svg | 0 .../static/icons/regular/cash-register.svg | 0 .../static/icons/regular/cassette-tape.svg | 0 .../static/icons/regular/cat-space.svg | 0 .../src => src}/static/icons/regular/cat.svg | 0 .../static/icons/regular/cauldron.svg | 0 .../src => src}/static/icons/regular/cctv.svg | 0 .../static/icons/regular/certificate.svg | 0 .../static/icons/regular/chair-office.svg | 0 .../static/icons/regular/chair.svg | 0 .../icons/regular/chalkboard-teacher.svg | 0 .../static/icons/regular/chalkboard.svg | 0 .../static/icons/regular/charging-station.svg | 0 .../static/icons/regular/chart-area.svg | 0 .../static/icons/regular/chart-bar.svg | 0 .../static/icons/regular/chart-line-down.svg | 0 .../static/icons/regular/chart-line.svg | 0 .../static/icons/regular/chart-network.svg | 0 .../static/icons/regular/chart-pie-alt.svg | 0 .../static/icons/regular/chart-pie.svg | 0 .../static/icons/regular/chart-scatter.svg | 0 .../static/icons/regular/check-circle.svg | 0 .../static/icons/regular/check-double.svg | 0 .../static/icons/regular/check-square.svg | 0 .../static/icons/regular/check.svg | 0 .../static/icons/regular/cheese-swiss.svg | 0 .../static/icons/regular/cheese.svg | 0 .../static/icons/regular/cheeseburger.svg | 0 .../static/icons/regular/chess-bishop-alt.svg | 0 .../static/icons/regular/chess-bishop.svg | 0 .../static/icons/regular/chess-board.svg | 0 .../static/icons/regular/chess-clock-alt.svg | 0 .../static/icons/regular/chess-clock.svg | 0 .../static/icons/regular/chess-king-alt.svg | 0 .../static/icons/regular/chess-king.svg | 0 .../static/icons/regular/chess-knight-alt.svg | 0 .../static/icons/regular/chess-knight.svg | 0 .../static/icons/regular/chess-pawn-alt.svg | 0 .../static/icons/regular/chess-pawn.svg | 0 .../static/icons/regular/chess-queen-alt.svg | 0 .../static/icons/regular/chess-queen.svg | 0 .../static/icons/regular/chess-rook-alt.svg | 0 .../static/icons/regular/chess-rook.svg | 0 .../static/icons/regular/chess.svg | 0 .../icons/regular/chevron-circle-down.svg | 0 .../icons/regular/chevron-circle-left.svg | 0 .../icons/regular/chevron-circle-right.svg | 0 .../icons/regular/chevron-circle-up.svg | 0 .../icons/regular/chevron-double-down.svg | 0 .../icons/regular/chevron-double-left.svg | 0 .../icons/regular/chevron-double-right.svg | 0 .../icons/regular/chevron-double-up.svg | 0 .../static/icons/regular/chevron-down.svg | 0 .../static/icons/regular/chevron-left.svg | 0 .../static/icons/regular/chevron-right.svg | 0 .../icons/regular/chevron-square-down.svg | 0 .../icons/regular/chevron-square-left.svg | 0 .../icons/regular/chevron-square-right.svg | 0 .../icons/regular/chevron-square-up.svg | 0 .../static/icons/regular/chevron-up.svg | 0 .../static/icons/regular/child.svg | 0 .../static/icons/regular/chimney.svg | 0 .../static/icons/regular/church.svg | 0 .../static/icons/regular/circle-notch.svg | 0 .../static/icons/regular/circle.svg | 0 .../src => src}/static/icons/regular/city.svg | 0 .../static/icons/regular/clarinet.svg | 0 .../static/icons/regular/claw-marks.svg | 0 .../static/icons/regular/clinic-medical.svg | 0 .../static/icons/regular/clipboard-check.svg | 0 .../icons/regular/clipboard-list-check.svg | 0 .../static/icons/regular/clipboard-list.svg | 0 .../icons/regular/clipboard-prescription.svg | 0 .../static/icons/regular/clipboard-user.svg | 0 .../static/icons/regular/clipboard.svg | 0 .../static/icons/regular/clock.svg | 0 .../static/icons/regular/clone.svg | 0 .../icons/regular/closed-captioning.svg | 0 .../icons/regular/cloud-download-alt.svg | 0 .../static/icons/regular/cloud-download.svg | 0 .../static/icons/regular/cloud-drizzle.svg | 0 .../static/icons/regular/cloud-hail-mixed.svg | 0 .../static/icons/regular/cloud-hail.svg | 0 .../static/icons/regular/cloud-meatball.svg | 0 .../static/icons/regular/cloud-moon-rain.svg | 0 .../static/icons/regular/cloud-moon.svg | 0 .../static/icons/regular/cloud-music.svg | 0 .../static/icons/regular/cloud-rain.svg | 0 .../static/icons/regular/cloud-rainbow.svg | 0 .../icons/regular/cloud-showers-heavy.svg | 0 .../static/icons/regular/cloud-showers.svg | 0 .../static/icons/regular/cloud-sleet.svg | 0 .../static/icons/regular/cloud-snow.svg | 0 .../static/icons/regular/cloud-sun-rain.svg | 0 .../static/icons/regular/cloud-sun.svg | 0 .../static/icons/regular/cloud-upload-alt.svg | 0 .../static/icons/regular/cloud-upload.svg | 0 .../static/icons/regular/cloud.svg | 0 .../static/icons/regular/clouds-moon.svg | 0 .../static/icons/regular/clouds-sun.svg | 0 .../static/icons/regular/clouds.svg | 0 .../src => src}/static/icons/regular/club.svg | 0 .../static/icons/regular/cocktail.svg | 0 .../static/icons/regular/code-branch.svg | 0 .../static/icons/regular/code-commit.svg | 0 .../static/icons/regular/code-merge.svg | 0 .../src => src}/static/icons/regular/code.svg | 0 .../static/icons/regular/coffee-pot.svg | 0 .../static/icons/regular/coffee-togo.svg | 0 .../static/icons/regular/coffee.svg | 0 .../static/icons/regular/coffin.svg | 0 .../src => src}/static/icons/regular/cog.svg | 0 .../src => src}/static/icons/regular/cogs.svg | 0 .../src => src}/static/icons/regular/coin.svg | 0 .../static/icons/regular/coins.svg | 0 .../static/icons/regular/columns.svg | 0 .../static/icons/regular/comet.svg | 0 .../icons/regular/comment-alt-check.svg | 0 .../icons/regular/comment-alt-dollar.svg | 0 .../static/icons/regular/comment-alt-dots.svg | 0 .../static/icons/regular/comment-alt-edit.svg | 0 .../icons/regular/comment-alt-exclamation.svg | 0 .../icons/regular/comment-alt-lines.svg | 0 .../icons/regular/comment-alt-medical.svg | 0 .../icons/regular/comment-alt-minus.svg | 0 .../icons/regular/comment-alt-music.svg | 0 .../static/icons/regular/comment-alt-plus.svg | 0 .../icons/regular/comment-alt-slash.svg | 0 .../icons/regular/comment-alt-smile.svg | 0 .../icons/regular/comment-alt-times.svg | 0 .../static/icons/regular/comment-alt.svg | 0 .../static/icons/regular/comment-check.svg | 0 .../static/icons/regular/comment-dollar.svg | 0 .../static/icons/regular/comment-dots.svg | 0 .../static/icons/regular/comment-edit.svg | 0 .../icons/regular/comment-exclamation.svg | 0 .../static/icons/regular/comment-lines.svg | 0 .../static/icons/regular/comment-medical.svg | 0 .../static/icons/regular/comment-minus.svg | 0 .../static/icons/regular/comment-music.svg | 0 .../static/icons/regular/comment-plus.svg | 0 .../static/icons/regular/comment-slash.svg | 0 .../static/icons/regular/comment-smile.svg | 0 .../static/icons/regular/comment-times.svg | 0 .../static/icons/regular/comment.svg | 0 .../icons/regular/comments-alt-dollar.svg | 0 .../static/icons/regular/comments-alt.svg | 0 .../static/icons/regular/comments-dollar.svg | 0 .../static/icons/regular/comments.svg | 0 .../static/icons/regular/compact-disc.svg | 0 .../static/icons/regular/compass-slash.svg | 0 .../static/icons/regular/compass.svg | 0 .../static/icons/regular/compress-alt.svg | 0 .../icons/regular/compress-arrows-alt.svg | 0 .../static/icons/regular/compress-wide.svg | 0 .../static/icons/regular/compress.svg | 0 .../static/icons/regular/computer-classic.svg | 0 .../static/icons/regular/computer-speaker.svg | 0 .../static/icons/regular/concierge-bell.svg | 0 .../static/icons/regular/construction.svg | 0 .../icons/regular/container-storage.svg | 0 .../icons/regular/conveyor-belt-alt.svg | 0 .../static/icons/regular/conveyor-belt.svg | 0 .../static/icons/regular/cookie-bite.svg | 0 .../static/icons/regular/cookie.svg | 0 .../src => src}/static/icons/regular/copy.svg | 0 .../static/icons/regular/copyright.svg | 0 .../src => src}/static/icons/regular/corn.svg | 0 .../static/icons/regular/couch.svg | 0 .../src => src}/static/icons/regular/cow.svg | 0 .../static/icons/regular/cowbell-more.svg | 0 .../static/icons/regular/cowbell.svg | 0 .../icons/regular/credit-card-blank.svg | 0 .../icons/regular/credit-card-front.svg | 0 .../static/icons/regular/credit-card.svg | 0 .../static/icons/regular/cricket.svg | 0 .../static/icons/regular/croissant.svg | 0 .../static/icons/regular/crop-alt.svg | 0 .../src => src}/static/icons/regular/crop.svg | 0 .../static/icons/regular/cross.svg | 0 .../static/icons/regular/crosshairs.svg | 0 .../src => src}/static/icons/regular/crow.svg | 0 .../static/icons/regular/crown.svg | 0 .../static/icons/regular/crutch.svg | 0 .../static/icons/regular/crutches.svg | 0 .../src => src}/static/icons/regular/cube.svg | 0 .../static/icons/regular/cubes.svg | 0 .../static/icons/regular/curling.svg | 0 .../src => src}/static/icons/regular/cut.svg | 0 .../static/icons/regular/dagger.svg | 0 .../static/icons/regular/database.svg | 0 .../src => src}/static/icons/regular/deaf.svg | 0 .../static/icons/regular/debug.svg | 0 .../static/icons/regular/deer-rudolph.svg | 0 .../src => src}/static/icons/regular/deer.svg | 0 .../static/icons/regular/democrat.svg | 0 .../static/icons/regular/desktop-alt.svg | 0 .../static/icons/regular/desktop.svg | 0 .../static/icons/regular/dewpoint.svg | 0 .../static/icons/regular/dharmachakra.svg | 0 .../static/icons/regular/diagnoses.svg | 0 .../static/icons/regular/diamond.svg | 0 .../static/icons/regular/dice-d10.svg | 0 .../static/icons/regular/dice-d12.svg | 0 .../static/icons/regular/dice-d20.svg | 0 .../static/icons/regular/dice-d4.svg | 0 .../static/icons/regular/dice-d6.svg | 0 .../static/icons/regular/dice-d8.svg | 0 .../static/icons/regular/dice-five.svg | 0 .../static/icons/regular/dice-four.svg | 0 .../static/icons/regular/dice-one.svg | 0 .../static/icons/regular/dice-six.svg | 0 .../static/icons/regular/dice-three.svg | 0 .../static/icons/regular/dice-two.svg | 0 .../src => src}/static/icons/regular/dice.svg | 0 .../static/icons/regular/digging.svg | 0 .../icons/regular/digital-tachograph.svg | 0 .../static/icons/regular/diploma.svg | 0 .../static/icons/regular/directions.svg | 0 .../static/icons/regular/disc-drive.svg | 0 .../static/icons/regular/disease.svg | 0 .../static/icons/regular/divide.svg | 0 .../static/icons/regular/dizzy.svg | 0 .../src => src}/static/icons/regular/dna.svg | 0 .../static/icons/regular/do-not-enter.svg | 0 .../static/icons/regular/dog-leashed.svg | 0 .../src => src}/static/icons/regular/dog.svg | 0 .../static/icons/regular/dollar-sign.svg | 0 .../static/icons/regular/dolly-empty.svg | 0 .../icons/regular/dolly-flatbed-alt.svg | 0 .../icons/regular/dolly-flatbed-empty.svg | 0 .../static/icons/regular/dolly-flatbed.svg | 0 .../static/icons/regular/dolly.svg | 0 .../static/icons/regular/donate.svg | 0 .../static/icons/regular/door-closed.svg | 0 .../static/icons/regular/door-open.svg | 0 .../static/icons/regular/dot-circle.svg | 0 .../src => src}/static/icons/regular/dove.svg | 0 .../static/icons/regular/download.svg | 0 .../static/icons/regular/drafting-compass.svg | 0 .../static/icons/regular/dragon.svg | 0 .../static/icons/regular/draw-circle.svg | 0 .../static/icons/regular/draw-polygon.svg | 0 .../static/icons/regular/draw-square.svg | 0 .../static/icons/regular/dreidel.svg | 0 .../static/icons/regular/drone-alt.svg | 0 .../static/icons/regular/drone.svg | 0 .../static/icons/regular/drum-steelpan.svg | 0 .../src => src}/static/icons/regular/drum.svg | 0 .../static/icons/regular/drumstick-bite.svg | 0 .../static/icons/regular/drumstick.svg | 0 .../static/icons/regular/dryer-alt.svg | 0 .../static/icons/regular/dryer.svg | 0 .../src => src}/static/icons/regular/duck.svg | 0 .../static/icons/regular/dumbbell.svg | 0 .../static/icons/regular/dumpster-fire.svg | 0 .../static/icons/regular/dumpster.svg | 0 .../static/icons/regular/dungeon.svg | 0 .../static/icons/regular/ear-muffs.svg | 0 .../src => src}/static/icons/regular/ear.svg | 0 .../static/icons/regular/eclipse-alt.svg | 0 .../static/icons/regular/eclipse.svg | 0 .../src => src}/static/icons/regular/edit.svg | 0 .../static/icons/regular/egg-fried.svg | 0 .../src => src}/static/icons/regular/egg.svg | 0 .../static/icons/regular/eject.svg | 0 .../static/icons/regular/elephant.svg | 0 .../static/icons/regular/ellipsis-h-alt.svg | 0 .../static/icons/regular/ellipsis-h.svg | 0 .../static/icons/regular/ellipsis-v-alt.svg | 0 .../static/icons/regular/ellipsis-v.svg | 0 .../static/icons/regular/empty-set.svg | 0 .../static/icons/regular/engine-warning.svg | 0 .../icons/regular/envelope-open-dollar.svg | 0 .../icons/regular/envelope-open-text.svg | 0 .../static/icons/regular/envelope-open.svg | 0 .../static/icons/regular/envelope-square.svg | 0 .../static/icons/regular/envelope.svg | 0 .../static/icons/regular/equals.svg | 0 .../static/icons/regular/eraser.svg | 0 .../static/icons/regular/ethernet.svg | 0 .../static/icons/regular/euro-sign.svg | 0 .../static/icons/regular/exchange-alt.svg | 0 .../static/icons/regular/exchange.svg | 0 .../icons/regular/exclamation-circle.svg | 0 .../icons/regular/exclamation-square.svg | 0 .../icons/regular/exclamation-triangle.svg | 0 .../static/icons/regular/exclamation.svg | 0 .../static/icons/regular/expand-alt.svg | 0 .../icons/regular/expand-arrows-alt.svg | 0 .../static/icons/regular/expand-arrows.svg | 0 .../static/icons/regular/expand-wide.svg | 0 .../static/icons/regular/expand.svg | 0 .../icons/regular/external-link-alt.svg | 0 .../regular/external-link-square-alt.svg | 0 .../icons/regular/external-link-square.svg | 0 .../static/icons/regular/external-link.svg | 0 .../static/icons/regular/eye-dropper.svg | 0 .../static/icons/regular/eye-evil.svg | 0 .../static/icons/regular/eye-slash.svg | 0 .../src => src}/static/icons/regular/eye.svg | 0 .../static/icons/regular/fan-table.svg | 0 .../src => src}/static/icons/regular/fan.svg | 0 .../src => src}/static/icons/regular/farm.svg | 0 .../static/icons/regular/fast-backward.svg | 0 .../static/icons/regular/fast-forward.svg | 0 .../static/icons/regular/faucet-drip.svg | 0 .../static/icons/regular/faucet.svg | 0 .../src => src}/static/icons/regular/fax.svg | 0 .../static/icons/regular/feather-alt.svg | 0 .../static/icons/regular/feather.svg | 0 .../static/icons/regular/female.svg | 0 .../static/icons/regular/field-hockey.svg | 0 .../static/icons/regular/fighter-jet.svg | 0 .../static/icons/regular/file-alt.svg | 0 .../static/icons/regular/file-archive.svg | 0 .../static/icons/regular/file-audio.svg | 0 .../static/icons/regular/file-certificate.svg | 0 .../static/icons/regular/file-chart-line.svg | 0 .../static/icons/regular/file-chart-pie.svg | 0 .../static/icons/regular/file-check.svg | 0 .../static/icons/regular/file-code.svg | 0 .../static/icons/regular/file-contract.svg | 0 .../static/icons/regular/file-csv.svg | 0 .../static/icons/regular/file-download.svg | 0 .../static/icons/regular/file-edit.svg | 0 .../static/icons/regular/file-excel.svg | 0 .../static/icons/regular/file-exclamation.svg | 0 .../static/icons/regular/file-export.svg | 0 .../static/icons/regular/file-image.svg | 0 .../static/icons/regular/file-import.svg | 0 .../icons/regular/file-invoice-dollar.svg | 0 .../static/icons/regular/file-invoice.svg | 0 .../static/icons/regular/file-medical-alt.svg | 0 .../static/icons/regular/file-medical.svg | 0 .../static/icons/regular/file-minus.svg | 0 .../static/icons/regular/file-music.svg | 0 .../static/icons/regular/file-pdf.svg | 0 .../static/icons/regular/file-plus.svg | 0 .../static/icons/regular/file-powerpoint.svg | 0 .../icons/regular/file-prescription.svg | 0 .../static/icons/regular/file-search.svg | 0 .../static/icons/regular/file-signature.svg | 0 .../static/icons/regular/file-spreadsheet.svg | 0 .../static/icons/regular/file-times.svg | 0 .../static/icons/regular/file-upload.svg | 0 .../static/icons/regular/file-user.svg | 0 .../static/icons/regular/file-video.svg | 0 .../static/icons/regular/file-word.svg | 0 .../src => src}/static/icons/regular/file.svg | 0 .../static/icons/regular/files-medical.svg | 0 .../static/icons/regular/fill-drip.svg | 0 .../src => src}/static/icons/regular/fill.svg | 0 .../static/icons/regular/film-alt.svg | 0 .../static/icons/regular/film-canister.svg | 0 .../src => src}/static/icons/regular/film.svg | 0 .../static/icons/regular/filter.svg | 0 .../static/icons/regular/fingerprint.svg | 0 .../static/icons/regular/fire-alt.svg | 0 .../icons/regular/fire-extinguisher.svg | 0 .../static/icons/regular/fire-smoke.svg | 0 .../src => src}/static/icons/regular/fire.svg | 0 .../static/icons/regular/fireplace.svg | 0 .../static/icons/regular/first-aid.svg | 0 .../static/icons/regular/fish-cooked.svg | 0 .../src => src}/static/icons/regular/fish.svg | 0 .../static/icons/regular/fist-raised.svg | 0 .../static/icons/regular/flag-alt.svg | 0 .../static/icons/regular/flag-checkered.svg | 0 .../static/icons/regular/flag-usa.svg | 0 .../src => src}/static/icons/regular/flag.svg | 0 .../static/icons/regular/flame.svg | 0 .../static/icons/regular/flashlight.svg | 0 .../static/icons/regular/flask-poison.svg | 0 .../static/icons/regular/flask-potion.svg | 0 .../static/icons/regular/flask.svg | 0 .../static/icons/regular/flower-daffodil.svg | 0 .../static/icons/regular/flower-tulip.svg | 0 .../static/icons/regular/flower.svg | 0 .../static/icons/regular/flushed.svg | 0 .../static/icons/regular/flute.svg | 0 .../static/icons/regular/flux-capacitor.svg | 0 .../src => src}/static/icons/regular/fog.svg | 0 .../static/icons/regular/folder-minus.svg | 0 .../static/icons/regular/folder-open.svg | 0 .../static/icons/regular/folder-plus.svg | 0 .../static/icons/regular/folder-times.svg | 0 .../static/icons/regular/folder-tree.svg | 0 .../static/icons/regular/folder.svg | 0 .../static/icons/regular/folders.svg | 0 .../icons/regular/font-awesome-logo-full.svg | 0 .../static/icons/regular/font-case.svg | 0 .../src => src}/static/icons/regular/font.svg | 0 .../static/icons/regular/football-ball.svg | 0 .../static/icons/regular/football-helmet.svg | 0 .../static/icons/regular/forklift.svg | 0 .../static/icons/regular/forward.svg | 0 .../static/icons/regular/fragile.svg | 0 .../static/icons/regular/french-fries.svg | 0 .../src => src}/static/icons/regular/frog.svg | 0 .../static/icons/regular/frosty-head.svg | 0 .../static/icons/regular/frown-open.svg | 0 .../static/icons/regular/frown.svg | 0 .../static/icons/regular/function.svg | 0 .../static/icons/regular/funnel-dollar.svg | 0 .../static/icons/regular/futbol.svg | 0 .../static/icons/regular/galaxy.svg | 0 .../static/icons/regular/game-board-alt.svg | 0 .../static/icons/regular/game-board.svg | 0 .../icons/regular/game-console-handheld.svg | 0 .../static/icons/regular/gamepad-alt.svg | 0 .../static/icons/regular/gamepad.svg | 0 .../static/icons/regular/garage-car.svg | 0 .../static/icons/regular/garage-open.svg | 0 .../static/icons/regular/garage.svg | 0 .../static/icons/regular/gas-pump-slash.svg | 0 .../static/icons/regular/gas-pump.svg | 0 .../static/icons/regular/gavel.svg | 0 .../src => src}/static/icons/regular/gem.svg | 0 .../static/icons/regular/genderless.svg | 0 .../static/icons/regular/ghost.svg | 0 .../static/icons/regular/gift-card.svg | 0 .../src => src}/static/icons/regular/gift.svg | 0 .../static/icons/regular/gifts.svg | 0 .../static/icons/regular/gingerbread-man.svg | 0 .../static/icons/regular/glass-champagne.svg | 0 .../static/icons/regular/glass-cheers.svg | 0 .../static/icons/regular/glass-citrus.svg | 0 .../icons/regular/glass-martini-alt.svg | 0 .../static/icons/regular/glass-martini.svg | 0 .../icons/regular/glass-whiskey-rocks.svg | 0 .../static/icons/regular/glass-whiskey.svg | 0 .../static/icons/regular/glass.svg | 0 .../static/icons/regular/glasses-alt.svg | 0 .../static/icons/regular/glasses.svg | 0 .../static/icons/regular/globe-africa.svg | 0 .../static/icons/regular/globe-americas.svg | 0 .../static/icons/regular/globe-asia.svg | 0 .../static/icons/regular/globe-europe.svg | 0 .../static/icons/regular/globe-snow.svg | 0 .../static/icons/regular/globe-stand.svg | 0 .../static/icons/regular/globe.svg | 0 .../static/icons/regular/golf-ball.svg | 0 .../static/icons/regular/golf-club.svg | 0 .../static/icons/regular/gopuram.svg | 0 .../static/icons/regular/graduation-cap.svg | 0 .../static/icons/regular/gramophone.svg | 0 .../icons/regular/greater-than-equal.svg | 0 .../static/icons/regular/greater-than.svg | 0 .../static/icons/regular/grimace.svg | 0 .../static/icons/regular/grin-alt.svg | 0 .../static/icons/regular/grin-beam-sweat.svg | 0 .../static/icons/regular/grin-beam.svg | 0 .../static/icons/regular/grin-hearts.svg | 0 .../icons/regular/grin-squint-tears.svg | 0 .../static/icons/regular/grin-squint.svg | 0 .../static/icons/regular/grin-stars.svg | 0 .../static/icons/regular/grin-tears.svg | 0 .../icons/regular/grin-tongue-squint.svg | 0 .../static/icons/regular/grin-tongue-wink.svg | 0 .../static/icons/regular/grin-tongue.svg | 0 .../static/icons/regular/grin-wink.svg | 0 .../src => src}/static/icons/regular/grin.svg | 0 .../static/icons/regular/grip-horizontal.svg | 0 .../icons/regular/grip-lines-vertical.svg | 0 .../static/icons/regular/grip-lines.svg | 0 .../static/icons/regular/grip-vertical.svg | 0 .../static/icons/regular/guitar-electric.svg | 0 .../static/icons/regular/guitar.svg | 0 .../static/icons/regular/guitars.svg | 0 .../static/icons/regular/h-square.svg | 0 .../src => src}/static/icons/regular/h1.svg | 0 .../src => src}/static/icons/regular/h2.svg | 0 .../src => src}/static/icons/regular/h3.svg | 0 .../src => src}/static/icons/regular/h4.svg | 0 .../static/icons/regular/hamburger.svg | 0 .../static/icons/regular/hammer-war.svg | 0 .../static/icons/regular/hammer.svg | 0 .../static/icons/regular/hamsa.svg | 0 .../static/icons/regular/hand-heart.svg | 0 .../static/icons/regular/hand-holding-box.svg | 0 .../icons/regular/hand-holding-heart.svg | 0 .../icons/regular/hand-holding-magic.svg | 0 .../icons/regular/hand-holding-seedling.svg | 0 .../static/icons/regular/hand-holding-usd.svg | 0 .../icons/regular/hand-holding-water.svg | 0 .../static/icons/regular/hand-holding.svg | 0 .../static/icons/regular/hand-lizard.svg | 0 .../icons/regular/hand-middle-finger.svg | 0 .../static/icons/regular/hand-paper.svg | 0 .../static/icons/regular/hand-peace.svg | 0 .../static/icons/regular/hand-point-down.svg | 0 .../static/icons/regular/hand-point-left.svg | 0 .../static/icons/regular/hand-point-right.svg | 0 .../static/icons/regular/hand-point-up.svg | 0 .../static/icons/regular/hand-pointer.svg | 0 .../static/icons/regular/hand-receiving.svg | 0 .../static/icons/regular/hand-rock.svg | 0 .../static/icons/regular/hand-scissors.svg | 0 .../static/icons/regular/hand-spock.svg | 0 .../static/icons/regular/hands-heart.svg | 0 .../static/icons/regular/hands-helping.svg | 0 .../static/icons/regular/hands-usd.svg | 0 .../static/icons/regular/hands.svg | 0 .../static/icons/regular/handshake-alt.svg | 0 .../static/icons/regular/handshake.svg | 0 .../static/icons/regular/hanukiah.svg | 0 .../static/icons/regular/hard-hat.svg | 0 .../static/icons/regular/hashtag.svg | 0 .../static/icons/regular/hat-chef.svg | 0 .../static/icons/regular/hat-cowboy-side.svg | 0 .../static/icons/regular/hat-cowboy.svg | 0 .../static/icons/regular/hat-santa.svg | 0 .../static/icons/regular/hat-winter.svg | 0 .../static/icons/regular/hat-witch.svg | 0 .../static/icons/regular/hat-wizard.svg | 0 .../src => src}/static/icons/regular/hdd.svg | 0 .../static/icons/regular/head-side-brain.svg | 0 .../icons/regular/head-side-headphones.svg | 0 .../icons/regular/head-side-medical.svg | 0 .../static/icons/regular/head-side.svg | 0 .../static/icons/regular/head-vr.svg | 0 .../static/icons/regular/heading.svg | 0 .../static/icons/regular/headphones-alt.svg | 0 .../static/icons/regular/headphones.svg | 0 .../static/icons/regular/headset.svg | 0 .../static/icons/regular/heart-broken.svg | 0 .../static/icons/regular/heart-circle.svg | 0 .../static/icons/regular/heart-rate.svg | 0 .../static/icons/regular/heart-square.svg | 0 .../static/icons/regular/heart.svg | 0 .../static/icons/regular/heartbeat.svg | 0 .../src => src}/static/icons/regular/heat.svg | 0 .../static/icons/regular/helicopter.svg | 0 .../static/icons/regular/helmet-battle.svg | 0 .../static/icons/regular/hexagon.svg | 0 .../static/icons/regular/highlighter.svg | 0 .../static/icons/regular/hiking.svg | 0 .../static/icons/regular/hippo.svg | 0 .../static/icons/regular/history.svg | 0 .../static/icons/regular/hockey-mask.svg | 0 .../static/icons/regular/hockey-puck.svg | 0 .../static/icons/regular/hockey-sticks.svg | 0 .../static/icons/regular/holly-berry.svg | 0 .../static/icons/regular/home-alt.svg | 0 .../static/icons/regular/home-heart.svg | 0 .../static/icons/regular/home-lg-alt.svg | 0 .../static/icons/regular/home-lg.svg | 0 .../src => src}/static/icons/regular/home.svg | 0 .../static/icons/regular/hood-cloak.svg | 0 .../static/icons/regular/horizontal-rule.svg | 0 .../static/icons/regular/horse-head.svg | 0 .../static/icons/regular/horse-saddle.svg | 0 .../static/icons/regular/horse.svg | 0 .../static/icons/regular/hospital-alt.svg | 0 .../static/icons/regular/hospital-symbol.svg | 0 .../static/icons/regular/hospital-user.svg | 0 .../static/icons/regular/hospital.svg | 0 .../static/icons/regular/hospitals.svg | 0 .../static/icons/regular/hot-tub.svg | 0 .../static/icons/regular/hotdog.svg | 0 .../static/icons/regular/hotel.svg | 0 .../static/icons/regular/hourglass-end.svg | 0 .../static/icons/regular/hourglass-half.svg | 0 .../static/icons/regular/hourglass-start.svg | 0 .../static/icons/regular/hourglass.svg | 0 .../static/icons/regular/house-damage.svg | 0 .../static/icons/regular/house-day.svg | 0 .../static/icons/regular/house-flood.svg | 0 .../static/icons/regular/house-leave.svg | 0 .../static/icons/regular/house-night.svg | 0 .../static/icons/regular/house-return.svg | 0 .../static/icons/regular/house-signal.svg | 0 .../static/icons/regular/house.svg | 0 .../static/icons/regular/hryvnia.svg | 0 .../static/icons/regular/humidity.svg | 0 .../static/icons/regular/hurricane.svg | 0 .../static/icons/regular/i-cursor.svg | 0 .../static/icons/regular/ice-cream.svg | 0 .../static/icons/regular/ice-skate.svg | 0 .../static/icons/regular/icicles.svg | 0 .../static/icons/regular/icons-alt.svg | 0 .../static/icons/regular/icons.svg | 0 .../static/icons/regular/id-badge.svg | 0 .../static/icons/regular/id-card-alt.svg | 0 .../static/icons/regular/id-card.svg | 0 .../static/icons/regular/igloo.svg | 0 .../static/icons/regular/image-polaroid.svg | 0 .../static/icons/regular/image.svg | 0 .../static/icons/regular/images.svg | 0 .../static/icons/regular/inbox-in.svg | 0 .../static/icons/regular/inbox-out.svg | 0 .../static/icons/regular/inbox.svg | 0 .../static/icons/regular/indent.svg | 0 .../static/icons/regular/industry-alt.svg | 0 .../static/icons/regular/industry.svg | 0 .../static/icons/regular/infinity.svg | 0 .../static/icons/regular/info-circle.svg | 0 .../static/icons/regular/info-square.svg | 0 .../src => src}/static/icons/regular/info.svg | 0 .../static/icons/regular/inhaler.svg | 0 .../static/icons/regular/integral.svg | 0 .../static/icons/regular/intersection.svg | 0 .../static/icons/regular/inventory.svg | 0 .../static/icons/regular/island-tropical.svg | 0 .../static/icons/regular/italic.svg | 0 .../static/icons/regular/jack-o-lantern.svg | 0 .../src => src}/static/icons/regular/jedi.svg | 0 .../static/icons/regular/joint.svg | 0 .../static/icons/regular/journal-whills.svg | 0 .../static/icons/regular/joystick.svg | 0 .../src => src}/static/icons/regular/jug.svg | 0 .../static/icons/regular/kaaba.svg | 0 .../static/icons/regular/kazoo.svg | 0 .../static/icons/regular/kerning.svg | 0 .../static/icons/regular/key-skeleton.svg | 0 .../src => src}/static/icons/regular/key.svg | 0 .../static/icons/regular/keyboard.svg | 0 .../static/icons/regular/keynote.svg | 0 .../static/icons/regular/khanda.svg | 0 .../static/icons/regular/kidneys.svg | 0 .../static/icons/regular/kiss-beam.svg | 0 .../static/icons/regular/kiss-wink-heart.svg | 0 .../src => src}/static/icons/regular/kiss.svg | 0 .../src => src}/static/icons/regular/kite.svg | 0 .../static/icons/regular/kiwi-bird.svg | 0 .../static/icons/regular/knife-kitchen.svg | 0 .../static/icons/regular/lambda.svg | 0 .../static/icons/regular/lamp-desk.svg | 0 .../static/icons/regular/lamp-floor.svg | 0 .../src => src}/static/icons/regular/lamp.svg | 0 .../static/icons/regular/landmark-alt.svg | 0 .../static/icons/regular/landmark.svg | 0 .../static/icons/regular/language.svg | 0 .../static/icons/regular/laptop-code.svg | 0 .../static/icons/regular/laptop-medical.svg | 0 .../static/icons/regular/laptop.svg | 0 .../static/icons/regular/lasso.svg | 0 .../static/icons/regular/laugh-beam.svg | 0 .../static/icons/regular/laugh-squint.svg | 0 .../static/icons/regular/laugh-wink.svg | 0 .../static/icons/regular/laugh.svg | 0 .../static/icons/regular/layer-group.svg | 0 .../static/icons/regular/layer-minus.svg | 0 .../static/icons/regular/layer-plus.svg | 0 .../static/icons/regular/leaf-heart.svg | 0 .../static/icons/regular/leaf-maple.svg | 0 .../static/icons/regular/leaf-oak.svg | 0 .../src => src}/static/icons/regular/leaf.svg | 0 .../static/icons/regular/lemon.svg | 0 .../static/icons/regular/less-than-equal.svg | 0 .../static/icons/regular/less-than.svg | 0 .../static/icons/regular/level-down-alt.svg | 0 .../static/icons/regular/level-down.svg | 0 .../static/icons/regular/level-up-alt.svg | 0 .../static/icons/regular/level-up.svg | 0 .../static/icons/regular/life-ring.svg | 0 .../static/icons/regular/light-ceiling.svg | 0 .../static/icons/regular/light-switch-off.svg | 0 .../static/icons/regular/light-switch-on.svg | 0 .../static/icons/regular/light-switch.svg | 0 .../static/icons/regular/lightbulb-dollar.svg | 0 .../icons/regular/lightbulb-exclamation.svg | 0 .../static/icons/regular/lightbulb-on.svg | 0 .../static/icons/regular/lightbulb-slash.svg | 0 .../static/icons/regular/lightbulb.svg | 0 .../static/icons/regular/lights-holiday.svg | 0 .../static/icons/regular/line-columns.svg | 0 .../static/icons/regular/line-height.svg | 0 .../src => src}/static/icons/regular/link.svg | 0 .../src => src}/static/icons/regular/lips.svg | 0 .../static/icons/regular/lira-sign.svg | 0 .../static/icons/regular/list-alt.svg | 0 .../static/icons/regular/list-music.svg | 0 .../static/icons/regular/list-ol.svg | 0 .../static/icons/regular/list-ul.svg | 0 .../src => src}/static/icons/regular/list.svg | 0 .../static/icons/regular/location-arrow.svg | 0 .../static/icons/regular/location-circle.svg | 0 .../static/icons/regular/location-slash.svg | 0 .../static/icons/regular/location.svg | 0 .../static/icons/regular/lock-alt.svg | 0 .../static/icons/regular/lock-open-alt.svg | 0 .../static/icons/regular/lock-open.svg | 0 .../src => src}/static/icons/regular/lock.svg | 0 .../icons/regular/long-arrow-alt-down.svg | 0 .../icons/regular/long-arrow-alt-left.svg | 0 .../icons/regular/long-arrow-alt-right.svg | 0 .../icons/regular/long-arrow-alt-up.svg | 0 .../static/icons/regular/long-arrow-down.svg | 0 .../static/icons/regular/long-arrow-left.svg | 0 .../static/icons/regular/long-arrow-right.svg | 0 .../static/icons/regular/long-arrow-up.svg | 0 .../static/icons/regular/loveseat.svg | 0 .../static/icons/regular/low-vision.svg | 0 .../static/icons/regular/luchador.svg | 0 .../static/icons/regular/luggage-cart.svg | 0 .../static/icons/regular/lungs.svg | 0 .../src => src}/static/icons/regular/mace.svg | 0 .../static/icons/regular/magic.svg | 0 .../static/icons/regular/magnet.svg | 0 .../static/icons/regular/mail-bulk.svg | 0 .../static/icons/regular/mailbox.svg | 0 .../src => src}/static/icons/regular/male.svg | 0 .../static/icons/regular/mandolin.svg | 0 .../static/icons/regular/map-marked-alt.svg | 0 .../static/icons/regular/map-marked.svg | 0 .../icons/regular/map-marker-alt-slash.svg | 0 .../static/icons/regular/map-marker-alt.svg | 0 .../static/icons/regular/map-marker-check.svg | 0 .../static/icons/regular/map-marker-edit.svg | 0 .../icons/regular/map-marker-exclamation.svg | 0 .../static/icons/regular/map-marker-minus.svg | 0 .../static/icons/regular/map-marker-plus.svg | 0 .../icons/regular/map-marker-question.svg | 0 .../static/icons/regular/map-marker-slash.svg | 0 .../static/icons/regular/map-marker-smile.svg | 0 .../static/icons/regular/map-marker-times.svg | 0 .../static/icons/regular/map-marker.svg | 0 .../static/icons/regular/map-pin.svg | 0 .../static/icons/regular/map-signs.svg | 0 .../src => src}/static/icons/regular/map.svg | 0 .../static/icons/regular/marker.svg | 0 .../static/icons/regular/mars-double.svg | 0 .../static/icons/regular/mars-stroke-h.svg | 0 .../static/icons/regular/mars-stroke-v.svg | 0 .../static/icons/regular/mars-stroke.svg | 0 .../src => src}/static/icons/regular/mars.svg | 0 .../src => src}/static/icons/regular/mask.svg | 0 .../src => src}/static/icons/regular/meat.svg | 0 .../static/icons/regular/medal.svg | 0 .../static/icons/regular/medkit.svg | 0 .../static/icons/regular/megaphone.svg | 0 .../static/icons/regular/meh-blank.svg | 0 .../static/icons/regular/meh-rolling-eyes.svg | 0 .../src => src}/static/icons/regular/meh.svg | 0 .../static/icons/regular/memory.svg | 0 .../static/icons/regular/menorah.svg | 0 .../static/icons/regular/mercury.svg | 0 .../static/icons/regular/meteor.svg | 0 .../static/icons/regular/microchip.svg | 0 .../icons/regular/microphone-alt-slash.svg | 0 .../static/icons/regular/microphone-alt.svg | 0 .../static/icons/regular/microphone-slash.svg | 0 .../static/icons/regular/microphone-stand.svg | 0 .../static/icons/regular/microphone.svg | 0 .../static/icons/regular/microscope.svg | 0 .../static/icons/regular/microwave.svg | 0 .../static/icons/regular/mind-share.svg | 0 .../static/icons/regular/minus-circle.svg | 0 .../static/icons/regular/minus-hexagon.svg | 0 .../static/icons/regular/minus-octagon.svg | 0 .../static/icons/regular/minus-square.svg | 0 .../static/icons/regular/minus.svg | 0 .../static/icons/regular/mistletoe.svg | 0 .../static/icons/regular/mitten.svg | 0 .../static/icons/regular/mobile-alt.svg | 0 .../icons/regular/mobile-android-alt.svg | 0 .../static/icons/regular/mobile-android.svg | 0 .../static/icons/regular/mobile.svg | 0 .../static/icons/regular/money-bill-alt.svg | 0 .../icons/regular/money-bill-wave-alt.svg | 0 .../static/icons/regular/money-bill-wave.svg | 0 .../static/icons/regular/money-bill.svg | 0 .../static/icons/regular/money-check-alt.svg | 0 .../icons/regular/money-check-edit-alt.svg | 0 .../static/icons/regular/money-check-edit.svg | 0 .../static/icons/regular/money-check.svg | 0 .../icons/regular/monitor-heart-rate.svg | 0 .../static/icons/regular/monkey.svg | 0 .../static/icons/regular/monument.svg | 0 .../static/icons/regular/moon-cloud.svg | 0 .../static/icons/regular/moon-stars.svg | 0 .../src => src}/static/icons/regular/moon.svg | 0 .../static/icons/regular/mortar-pestle.svg | 0 .../static/icons/regular/mosque.svg | 0 .../static/icons/regular/motorcycle.svg | 0 .../static/icons/regular/mountain.svg | 0 .../static/icons/regular/mountains.svg | 0 .../static/icons/regular/mouse-alt.svg | 0 .../static/icons/regular/mouse-pointer.svg | 0 .../static/icons/regular/mouse.svg | 0 .../static/icons/regular/mp3-player.svg | 0 .../static/icons/regular/mug-hot.svg | 0 .../static/icons/regular/mug-marshmallows.svg | 0 .../static/icons/regular/mug-tea.svg | 0 .../src => src}/static/icons/regular/mug.svg | 0 .../static/icons/regular/music-alt-slash.svg | 0 .../static/icons/regular/music-alt.svg | 0 .../static/icons/regular/music-slash.svg | 0 .../static/icons/regular/music.svg | 0 .../static/icons/regular/narwhal.svg | 0 .../static/icons/regular/network-wired.svg | 0 .../static/icons/regular/neuter.svg | 0 .../static/icons/regular/newspaper.svg | 0 .../static/icons/regular/not-equal.svg | 0 .../static/icons/regular/notes-medical.svg | 0 .../static/icons/regular/object-group.svg | 0 .../static/icons/regular/object-ungroup.svg | 0 .../static/icons/regular/octagon.svg | 0 .../static/icons/regular/oil-can.svg | 0 .../static/icons/regular/oil-temp.svg | 0 .../src => src}/static/icons/regular/om.svg | 0 .../static/icons/regular/omega.svg | 0 .../static/icons/regular/ornament.svg | 0 .../static/icons/regular/otter.svg | 0 .../static/icons/regular/outdent.svg | 0 .../static/icons/regular/outlet.svg | 0 .../src => src}/static/icons/regular/oven.svg | 0 .../static/icons/regular/overline.svg | 0 .../static/icons/regular/page-break.svg | 0 .../static/icons/regular/pager.svg | 0 .../static/icons/regular/paint-brush-alt.svg | 0 .../static/icons/regular/paint-brush.svg | 0 .../static/icons/regular/paint-roller.svg | 0 .../static/icons/regular/palette.svg | 0 .../static/icons/regular/pallet-alt.svg | 0 .../static/icons/regular/pallet.svg | 0 .../static/icons/regular/paper-plane.svg | 0 .../static/icons/regular/paperclip.svg | 0 .../static/icons/regular/parachute-box.svg | 0 .../static/icons/regular/paragraph-rtl.svg | 0 .../static/icons/regular/paragraph.svg | 0 .../icons/regular/parking-circle-slash.svg | 0 .../static/icons/regular/parking-circle.svg | 0 .../static/icons/regular/parking-slash.svg | 0 .../static/icons/regular/parking.svg | 0 .../static/icons/regular/passport.svg | 0 .../static/icons/regular/pastafarianism.svg | 0 .../static/icons/regular/paste.svg | 0 .../static/icons/regular/pause-circle.svg | 0 .../static/icons/regular/pause.svg | 0 .../static/icons/regular/paw-alt.svg | 0 .../static/icons/regular/paw-claws.svg | 0 .../src => src}/static/icons/regular/paw.svg | 0 .../static/icons/regular/peace.svg | 0 .../static/icons/regular/pegasus.svg | 0 .../static/icons/regular/pen-alt.svg | 0 .../static/icons/regular/pen-fancy.svg | 0 .../static/icons/regular/pen-nib.svg | 0 .../static/icons/regular/pen-square.svg | 0 .../src => src}/static/icons/regular/pen.svg | 0 .../static/icons/regular/pencil-alt.svg | 0 .../icons/regular/pencil-paintbrush.svg | 0 .../static/icons/regular/pencil-ruler.svg | 0 .../static/icons/regular/pencil.svg | 0 .../static/icons/regular/pennant.svg | 0 .../static/icons/regular/people-carry.svg | 0 .../static/icons/regular/pepper-hot.svg | 0 .../static/icons/regular/percent.svg | 0 .../static/icons/regular/percentage.svg | 0 .../static/icons/regular/person-booth.svg | 0 .../static/icons/regular/person-carry.svg | 0 .../icons/regular/person-dolly-empty.svg | 0 .../static/icons/regular/person-dolly.svg | 0 .../static/icons/regular/person-sign.svg | 0 .../static/icons/regular/phone-alt.svg | 0 .../static/icons/regular/phone-laptop.svg | 0 .../static/icons/regular/phone-office.svg | 0 .../static/icons/regular/phone-plus.svg | 0 .../static/icons/regular/phone-rotary.svg | 0 .../static/icons/regular/phone-slash.svg | 0 .../static/icons/regular/phone-square-alt.svg | 0 .../static/icons/regular/phone-square.svg | 0 .../static/icons/regular/phone-volume.svg | 0 .../static/icons/regular/phone.svg | 0 .../static/icons/regular/photo-video.svg | 0 .../src => src}/static/icons/regular/pi.svg | 0 .../static/icons/regular/piano-keyboard.svg | 0 .../static/icons/regular/piano.svg | 0 .../src => src}/static/icons/regular/pie.svg | 0 .../src => src}/static/icons/regular/pig.svg | 0 .../static/icons/regular/piggy-bank.svg | 0 .../static/icons/regular/pills.svg | 0 .../static/icons/regular/pizza-slice.svg | 0 .../static/icons/regular/pizza.svg | 0 .../static/icons/regular/place-of-worship.svg | 0 .../static/icons/regular/plane-alt.svg | 0 .../static/icons/regular/plane-arrival.svg | 0 .../static/icons/regular/plane-departure.svg | 0 .../static/icons/regular/plane.svg | 0 .../static/icons/regular/planet-moon.svg | 0 .../static/icons/regular/planet-ringed.svg | 0 .../static/icons/regular/play-circle.svg | 0 .../src => src}/static/icons/regular/play.svg | 0 .../src => src}/static/icons/regular/plug.svg | 0 .../static/icons/regular/plus-circle.svg | 0 .../static/icons/regular/plus-hexagon.svg | 0 .../static/icons/regular/plus-octagon.svg | 0 .../static/icons/regular/plus-square.svg | 0 .../src => src}/static/icons/regular/plus.svg | 0 .../static/icons/regular/podcast.svg | 0 .../static/icons/regular/podium-star.svg | 0 .../static/icons/regular/podium.svg | 0 .../static/icons/regular/police-box.svg | 0 .../static/icons/regular/poll-h.svg | 0 .../static/icons/regular/poll-people.svg | 0 .../src => src}/static/icons/regular/poll.svg | 0 .../static/icons/regular/poo-storm.svg | 0 .../src => src}/static/icons/regular/poo.svg | 0 .../src => src}/static/icons/regular/poop.svg | 0 .../static/icons/regular/popcorn.svg | 0 .../static/icons/regular/portal-enter.svg | 0 .../static/icons/regular/portal-exit.svg | 0 .../static/icons/regular/portrait.svg | 0 .../static/icons/regular/pound-sign.svg | 0 .../static/icons/regular/power-off.svg | 0 .../src => src}/static/icons/regular/pray.svg | 0 .../static/icons/regular/praying-hands.svg | 0 .../icons/regular/prescription-bottle-alt.svg | 0 .../icons/regular/prescription-bottle.svg | 0 .../static/icons/regular/prescription.svg | 0 .../static/icons/regular/presentation.svg | 0 .../static/icons/regular/print-search.svg | 0 .../static/icons/regular/print-slash.svg | 0 .../static/icons/regular/print.svg | 0 .../static/icons/regular/procedures.svg | 0 .../static/icons/regular/project-diagram.svg | 0 .../static/icons/regular/projector.svg | 0 .../static/icons/regular/pumpkin.svg | 0 .../static/icons/regular/puzzle-piece.svg | 0 .../static/icons/regular/qrcode.svg | 0 .../static/icons/regular/question-circle.svg | 0 .../static/icons/regular/question-square.svg | 0 .../static/icons/regular/question.svg | 0 .../static/icons/regular/quidditch.svg | 0 .../static/icons/regular/quote-left.svg | 0 .../static/icons/regular/quote-right.svg | 0 .../static/icons/regular/quran.svg | 0 .../static/icons/regular/rabbit-fast.svg | 0 .../static/icons/regular/rabbit.svg | 0 .../static/icons/regular/racquet.svg | 0 .../static/icons/regular/radar.svg | 0 .../static/icons/regular/radiation-alt.svg | 0 .../static/icons/regular/radiation.svg | 0 .../static/icons/regular/radio-alt.svg | 0 .../static/icons/regular/radio.svg | 0 .../static/icons/regular/rainbow.svg | 0 .../static/icons/regular/raindrops.svg | 0 .../src => src}/static/icons/regular/ram.svg | 0 .../static/icons/regular/ramp-loading.svg | 0 .../static/icons/regular/random.svg | 0 .../static/icons/regular/raygun.svg | 0 .../static/icons/regular/receipt.svg | 0 .../static/icons/regular/record-vinyl.svg | 0 .../icons/regular/rectangle-landscape.svg | 0 .../icons/regular/rectangle-portrait.svg | 0 .../static/icons/regular/rectangle-wide.svg | 0 .../static/icons/regular/recycle.svg | 0 .../static/icons/regular/redo-alt.svg | 0 .../src => src}/static/icons/regular/redo.svg | 0 .../static/icons/regular/refrigerator.svg | 0 .../static/icons/regular/registered.svg | 0 .../static/icons/regular/remove-format.svg | 0 .../static/icons/regular/repeat-1-alt.svg | 0 .../static/icons/regular/repeat-1.svg | 0 .../static/icons/regular/repeat-alt.svg | 0 .../static/icons/regular/repeat.svg | 0 .../static/icons/regular/reply-all.svg | 0 .../static/icons/regular/reply.svg | 0 .../static/icons/regular/republican.svg | 0 .../static/icons/regular/restroom.svg | 0 .../static/icons/regular/retweet-alt.svg | 0 .../static/icons/regular/retweet.svg | 0 .../static/icons/regular/ribbon.svg | 0 .../src => src}/static/icons/regular/ring.svg | 0 .../static/icons/regular/rings-wedding.svg | 0 .../src => src}/static/icons/regular/road.svg | 0 .../static/icons/regular/robot.svg | 0 .../static/icons/regular/rocket-launch.svg | 0 .../static/icons/regular/rocket.svg | 0 .../static/icons/regular/route-highway.svg | 0 .../static/icons/regular/route-interstate.svg | 0 .../static/icons/regular/route.svg | 0 .../static/icons/regular/router.svg | 0 .../static/icons/regular/rss-square.svg | 0 .../src => src}/static/icons/regular/rss.svg | 0 .../static/icons/regular/ruble-sign.svg | 0 .../static/icons/regular/ruler-combined.svg | 0 .../static/icons/regular/ruler-horizontal.svg | 0 .../static/icons/regular/ruler-triangle.svg | 0 .../static/icons/regular/ruler-vertical.svg | 0 .../static/icons/regular/ruler.svg | 0 .../static/icons/regular/running.svg | 0 .../static/icons/regular/rupee-sign.svg | 0 .../src => src}/static/icons/regular/rv.svg | 0 .../static/icons/regular/sack-dollar.svg | 0 .../src => src}/static/icons/regular/sack.svg | 0 .../static/icons/regular/sad-cry.svg | 0 .../static/icons/regular/sad-tear.svg | 0 .../static/icons/regular/salad.svg | 0 .../static/icons/regular/sandwich.svg | 0 .../static/icons/regular/satellite-dish.svg | 0 .../static/icons/regular/satellite.svg | 0 .../static/icons/regular/sausage.svg | 0 .../src => src}/static/icons/regular/save.svg | 0 .../static/icons/regular/sax-hot.svg | 0 .../static/icons/regular/saxophone.svg | 0 .../static/icons/regular/scalpel-path.svg | 0 .../static/icons/regular/scalpel.svg | 0 .../static/icons/regular/scanner-image.svg | 0 .../static/icons/regular/scanner-keyboard.svg | 0 .../icons/regular/scanner-touchscreen.svg | 0 .../static/icons/regular/scanner.svg | 0 .../static/icons/regular/scarecrow.svg | 0 .../static/icons/regular/scarf.svg | 0 .../static/icons/regular/school.svg | 0 .../static/icons/regular/screwdriver.svg | 0 .../static/icons/regular/scroll-old.svg | 0 .../static/icons/regular/scroll.svg | 0 .../static/icons/regular/scrubber.svg | 0 .../static/icons/regular/scythe.svg | 0 .../static/icons/regular/sd-card.svg | 0 .../static/icons/regular/search-dollar.svg | 0 .../static/icons/regular/search-location.svg | 0 .../static/icons/regular/search-minus.svg | 0 .../static/icons/regular/search-plus.svg | 0 .../static/icons/regular/search.svg | 0 .../static/icons/regular/seedling.svg | 0 .../static/icons/regular/send-back.svg | 0 .../static/icons/regular/send-backward.svg | 0 .../static/icons/regular/sensor-alert.svg | 0 .../static/icons/regular/sensor-fire.svg | 0 .../static/icons/regular/sensor-on.svg | 0 .../static/icons/regular/sensor-smoke.svg | 0 .../static/icons/regular/sensor.svg | 0 .../static/icons/regular/server.svg | 0 .../static/icons/regular/shapes.svg | 0 .../static/icons/regular/share-all.svg | 0 .../static/icons/regular/share-alt-square.svg | 0 .../static/icons/regular/share-alt.svg | 0 .../static/icons/regular/share-square.svg | 0 .../static/icons/regular/share.svg | 0 .../static/icons/regular/sheep.svg | 0 .../static/icons/regular/shekel-sign.svg | 0 .../static/icons/regular/shield-alt.svg | 0 .../static/icons/regular/shield-check.svg | 0 .../static/icons/regular/shield-cross.svg | 0 .../static/icons/regular/shield.svg | 0 .../src => src}/static/icons/regular/ship.svg | 0 .../static/icons/regular/shipping-fast.svg | 0 .../static/icons/regular/shipping-timed.svg | 0 .../static/icons/regular/shish-kebab.svg | 0 .../static/icons/regular/shoe-prints.svg | 0 .../static/icons/regular/shopping-bag.svg | 0 .../static/icons/regular/shopping-basket.svg | 0 .../static/icons/regular/shopping-cart.svg | 0 .../static/icons/regular/shovel-snow.svg | 0 .../static/icons/regular/shovel.svg | 0 .../static/icons/regular/shower.svg | 0 .../static/icons/regular/shredder.svg | 0 .../static/icons/regular/shuttle-van.svg | 0 .../static/icons/regular/shuttlecock.svg | 0 .../static/icons/regular/sickle.svg | 0 .../static/icons/regular/sigma.svg | 0 .../static/icons/regular/sign-in-alt.svg | 0 .../static/icons/regular/sign-in.svg | 0 .../static/icons/regular/sign-language.svg | 0 .../static/icons/regular/sign-out-alt.svg | 0 .../static/icons/regular/sign-out.svg | 0 .../src => src}/static/icons/regular/sign.svg | 0 .../static/icons/regular/signal-1.svg | 0 .../static/icons/regular/signal-2.svg | 0 .../static/icons/regular/signal-3.svg | 0 .../static/icons/regular/signal-4.svg | 0 .../static/icons/regular/signal-alt-1.svg | 0 .../static/icons/regular/signal-alt-2.svg | 0 .../static/icons/regular/signal-alt-3.svg | 0 .../static/icons/regular/signal-alt-slash.svg | 0 .../static/icons/regular/signal-alt.svg | 0 .../static/icons/regular/signal-slash.svg | 0 .../static/icons/regular/signal-stream.svg | 0 .../static/icons/regular/signal.svg | 0 .../static/icons/regular/signature.svg | 0 .../static/icons/regular/sim-card.svg | 0 .../static/icons/regular/siren-on.svg | 0 .../static/icons/regular/siren.svg | 0 .../static/icons/regular/sitemap.svg | 0 .../static/icons/regular/skating.svg | 0 .../static/icons/regular/skeleton.svg | 0 .../static/icons/regular/ski-jump.svg | 0 .../static/icons/regular/ski-lift.svg | 0 .../static/icons/regular/skiing-nordic.svg | 0 .../static/icons/regular/skiing.svg | 0 .../static/icons/regular/skull-cow.svg | 0 .../static/icons/regular/skull-crossbones.svg | 0 .../static/icons/regular/skull.svg | 0 .../static/icons/regular/slash.svg | 0 .../static/icons/regular/sledding.svg | 0 .../static/icons/regular/sleigh.svg | 0 .../static/icons/regular/sliders-h-square.svg | 0 .../static/icons/regular/sliders-h.svg | 0 .../static/icons/regular/sliders-v-square.svg | 0 .../static/icons/regular/sliders-v.svg | 0 .../static/icons/regular/smile-beam.svg | 0 .../static/icons/regular/smile-plus.svg | 0 .../static/icons/regular/smile-wink.svg | 0 .../static/icons/regular/smile.svg | 0 .../src => src}/static/icons/regular/smog.svg | 0 .../static/icons/regular/smoke.svg | 0 .../static/icons/regular/smoking-ban.svg | 0 .../static/icons/regular/smoking.svg | 0 .../src => src}/static/icons/regular/sms.svg | 0 .../static/icons/regular/snake.svg | 0 .../static/icons/regular/snooze.svg | 0 .../static/icons/regular/snow-blowing.svg | 0 .../static/icons/regular/snowboarding.svg | 0 .../static/icons/regular/snowflake.svg | 0 .../static/icons/regular/snowflakes.svg | 0 .../static/icons/regular/snowman.svg | 0 .../static/icons/regular/snowmobile.svg | 0 .../static/icons/regular/snowplow.svg | 0 .../static/icons/regular/socks.svg | 0 .../static/icons/regular/solar-panel.svg | 0 .../static/icons/regular/solar-system.svg | 0 .../icons/regular/sort-alpha-down-alt.svg | 0 .../static/icons/regular/sort-alpha-down.svg | 0 .../icons/regular/sort-alpha-up-alt.svg | 0 .../static/icons/regular/sort-alpha-up.svg | 0 .../static/icons/regular/sort-alt.svg | 0 .../icons/regular/sort-amount-down-alt.svg | 0 .../static/icons/regular/sort-amount-down.svg | 0 .../icons/regular/sort-amount-up-alt.svg | 0 .../static/icons/regular/sort-amount-up.svg | 0 .../static/icons/regular/sort-circle-down.svg | 0 .../static/icons/regular/sort-circle-up.svg | 0 .../static/icons/regular/sort-circle.svg | 0 .../static/icons/regular/sort-down.svg | 0 .../icons/regular/sort-numeric-down-alt.svg | 0 .../icons/regular/sort-numeric-down.svg | 0 .../icons/regular/sort-numeric-up-alt.svg | 0 .../static/icons/regular/sort-numeric-up.svg | 0 .../icons/regular/sort-shapes-down-alt.svg | 0 .../static/icons/regular/sort-shapes-down.svg | 0 .../icons/regular/sort-shapes-up-alt.svg | 0 .../static/icons/regular/sort-shapes-up.svg | 0 .../icons/regular/sort-size-down-alt.svg | 0 .../static/icons/regular/sort-size-down.svg | 0 .../static/icons/regular/sort-size-up-alt.svg | 0 .../static/icons/regular/sort-size-up.svg | 0 .../static/icons/regular/sort-up.svg | 0 .../src => src}/static/icons/regular/sort.svg | 0 .../src => src}/static/icons/regular/soup.svg | 0 .../src => src}/static/icons/regular/spa.svg | 0 .../static/icons/regular/space-shuttle.svg | 0 .../icons/regular/space-station-moon-alt.svg | 0 .../icons/regular/space-station-moon.svg | 0 .../static/icons/regular/spade.svg | 0 .../static/icons/regular/sparkles.svg | 0 .../static/icons/regular/speaker.svg | 0 .../static/icons/regular/speakers.svg | 0 .../static/icons/regular/spell-check.svg | 0 .../icons/regular/spider-black-widow.svg | 0 .../static/icons/regular/spider-web.svg | 0 .../static/icons/regular/spider.svg | 0 .../static/icons/regular/spinner-third.svg | 0 .../static/icons/regular/spinner.svg | 0 .../static/icons/regular/splotch.svg | 0 .../static/icons/regular/spray-can.svg | 0 .../static/icons/regular/sprinkler.svg | 0 .../static/icons/regular/square-full.svg | 0 .../static/icons/regular/square-root-alt.svg | 0 .../static/icons/regular/square-root.svg | 0 .../static/icons/regular/square.svg | 0 .../static/icons/regular/squirrel.svg | 0 .../static/icons/regular/staff.svg | 0 .../static/icons/regular/stamp.svg | 0 .../icons/regular/star-and-crescent.svg | 0 .../static/icons/regular/star-christmas.svg | 0 .../static/icons/regular/star-exclamation.svg | 0 .../static/icons/regular/star-half-alt.svg | 0 .../static/icons/regular/star-half.svg | 0 .../static/icons/regular/star-of-david.svg | 0 .../static/icons/regular/star-of-life.svg | 0 .../static/icons/regular/star-shooting.svg | 0 .../src => src}/static/icons/regular/star.svg | 0 .../static/icons/regular/starfighter-alt.svg | 0 .../static/icons/regular/starfighter.svg | 0 .../static/icons/regular/stars.svg | 0 .../icons/regular/starship-freighter.svg | 0 .../static/icons/regular/starship.svg | 0 .../static/icons/regular/steak.svg | 0 .../static/icons/regular/steering-wheel.svg | 0 .../static/icons/regular/step-backward.svg | 0 .../static/icons/regular/step-forward.svg | 0 .../static/icons/regular/stethoscope.svg | 0 .../static/icons/regular/sticky-note.svg | 0 .../static/icons/regular/stocking.svg | 0 .../static/icons/regular/stomach.svg | 0 .../static/icons/regular/stop-circle.svg | 0 .../src => src}/static/icons/regular/stop.svg | 0 .../static/icons/regular/stopwatch.svg | 0 .../static/icons/regular/store-alt.svg | 0 .../static/icons/regular/store.svg | 0 .../static/icons/regular/stream.svg | 0 .../static/icons/regular/street-view.svg | 0 .../static/icons/regular/stretcher.svg | 0 .../static/icons/regular/strikethrough.svg | 0 .../static/icons/regular/stroopwafel.svg | 0 .../static/icons/regular/subscript.svg | 0 .../static/icons/regular/subway.svg | 0 .../static/icons/regular/suitcase-rolling.svg | 0 .../static/icons/regular/suitcase.svg | 0 .../static/icons/regular/sun-cloud.svg | 0 .../static/icons/regular/sun-dust.svg | 0 .../static/icons/regular/sun-haze.svg | 0 .../src => src}/static/icons/regular/sun.svg | 0 .../static/icons/regular/sunglasses.svg | 0 .../static/icons/regular/sunrise.svg | 0 .../static/icons/regular/sunset.svg | 0 .../static/icons/regular/superscript.svg | 0 .../static/icons/regular/surprise.svg | 0 .../static/icons/regular/swatchbook.svg | 0 .../static/icons/regular/swimmer.svg | 0 .../static/icons/regular/swimming-pool.svg | 0 .../static/icons/regular/sword-laser-alt.svg | 0 .../static/icons/regular/sword-laser.svg | 0 .../static/icons/regular/sword.svg | 0 .../static/icons/regular/swords-laser.svg | 0 .../static/icons/regular/swords.svg | 0 .../static/icons/regular/synagogue.svg | 0 .../static/icons/regular/sync-alt.svg | 0 .../src => src}/static/icons/regular/sync.svg | 0 .../static/icons/regular/syringe.svg | 0 .../static/icons/regular/table-tennis.svg | 0 .../static/icons/regular/table.svg | 0 .../static/icons/regular/tablet-alt.svg | 0 .../icons/regular/tablet-android-alt.svg | 0 .../static/icons/regular/tablet-android.svg | 0 .../static/icons/regular/tablet-rugged.svg | 0 .../static/icons/regular/tablet.svg | 0 .../static/icons/regular/tablets.svg | 0 .../icons/regular/tachometer-alt-average.svg | 0 .../icons/regular/tachometer-alt-fast.svg | 0 .../icons/regular/tachometer-alt-fastest.svg | 0 .../icons/regular/tachometer-alt-slow.svg | 0 .../icons/regular/tachometer-alt-slowest.svg | 0 .../static/icons/regular/tachometer-alt.svg | 0 .../icons/regular/tachometer-average.svg | 0 .../static/icons/regular/tachometer-fast.svg | 0 .../icons/regular/tachometer-fastest.svg | 0 .../static/icons/regular/tachometer-slow.svg | 0 .../icons/regular/tachometer-slowest.svg | 0 .../static/icons/regular/tachometer.svg | 0 .../src => src}/static/icons/regular/taco.svg | 0 .../src => src}/static/icons/regular/tag.svg | 0 .../src => src}/static/icons/regular/tags.svg | 0 .../static/icons/regular/tally.svg | 0 .../static/icons/regular/tanakh.svg | 0 .../src => src}/static/icons/regular/tape.svg | 0 .../static/icons/regular/tasks-alt.svg | 0 .../static/icons/regular/tasks.svg | 0 .../src => src}/static/icons/regular/taxi.svg | 0 .../static/icons/regular/teeth-open.svg | 0 .../static/icons/regular/teeth.svg | 0 .../static/icons/regular/telescope.svg | 0 .../static/icons/regular/temperature-down.svg | 0 .../icons/regular/temperature-frigid.svg | 0 .../static/icons/regular/temperature-high.svg | 0 .../static/icons/regular/temperature-hot.svg | 0 .../static/icons/regular/temperature-low.svg | 0 .../static/icons/regular/temperature-up.svg | 0 .../static/icons/regular/tenge.svg | 0 .../static/icons/regular/tennis-ball.svg | 0 .../static/icons/regular/terminal.svg | 0 .../static/icons/regular/text-height.svg | 0 .../static/icons/regular/text-size.svg | 0 .../static/icons/regular/text-width.svg | 0 .../src => src}/static/icons/regular/text.svg | 0 .../static/icons/regular/th-large.svg | 0 .../static/icons/regular/th-list.svg | 0 .../src => src}/static/icons/regular/th.svg | 0 .../static/icons/regular/theater-masks.svg | 0 .../icons/regular/thermometer-empty.svg | 0 .../static/icons/regular/thermometer-full.svg | 0 .../static/icons/regular/thermometer-half.svg | 0 .../icons/regular/thermometer-quarter.svg | 0 .../regular/thermometer-three-quarters.svg | 0 .../static/icons/regular/thermometer.svg | 0 .../static/icons/regular/theta.svg | 0 .../static/icons/regular/thumbs-down.svg | 0 .../static/icons/regular/thumbs-up.svg | 0 .../static/icons/regular/thumbtack.svg | 0 .../icons/regular/thunderstorm-moon.svg | 0 .../static/icons/regular/thunderstorm-sun.svg | 0 .../static/icons/regular/thunderstorm.svg | 0 .../static/icons/regular/ticket-alt.svg | 0 .../static/icons/regular/ticket.svg | 0 .../static/icons/regular/tilde.svg | 0 .../static/icons/regular/times-circle.svg | 0 .../static/icons/regular/times-hexagon.svg | 0 .../static/icons/regular/times-octagon.svg | 0 .../static/icons/regular/times-square.svg | 0 .../static/icons/regular/times.svg | 0 .../static/icons/regular/tint-slash.svg | 0 .../src => src}/static/icons/regular/tint.svg | 0 .../static/icons/regular/tire-flat.svg | 0 .../icons/regular/tire-pressure-warning.svg | 0 .../static/icons/regular/tire-rugged.svg | 0 .../src => src}/static/icons/regular/tire.svg | 0 .../static/icons/regular/tired.svg | 0 .../static/icons/regular/toggle-off.svg | 0 .../static/icons/regular/toggle-on.svg | 0 .../static/icons/regular/toilet-paper-alt.svg | 0 .../static/icons/regular/toilet-paper.svg | 0 .../static/icons/regular/toilet.svg | 0 .../static/icons/regular/tombstone-alt.svg | 0 .../static/icons/regular/tombstone.svg | 0 .../static/icons/regular/toolbox.svg | 0 .../static/icons/regular/tools.svg | 0 .../static/icons/regular/tooth.svg | 0 .../static/icons/regular/toothbrush.svg | 0 .../static/icons/regular/torah.svg | 0 .../static/icons/regular/torii-gate.svg | 0 .../static/icons/regular/tornado.svg | 0 .../static/icons/regular/tractor.svg | 0 .../static/icons/regular/trademark.svg | 0 .../static/icons/regular/traffic-cone.svg | 0 .../static/icons/regular/traffic-light-go.svg | 0 .../icons/regular/traffic-light-slow.svg | 0 .../icons/regular/traffic-light-stop.svg | 0 .../static/icons/regular/traffic-light.svg | 0 .../static/icons/regular/trailer.svg | 0 .../static/icons/regular/train.svg | 0 .../src => src}/static/icons/regular/tram.svg | 0 .../static/icons/regular/transgender-alt.svg | 0 .../static/icons/regular/transgender.svg | 0 .../static/icons/regular/transporter-1.svg | 0 .../static/icons/regular/transporter-2.svg | 0 .../static/icons/regular/transporter-3.svg | 0 .../icons/regular/transporter-empty.svg | 0 .../static/icons/regular/transporter.svg | 0 .../static/icons/regular/trash-alt.svg | 0 .../icons/regular/trash-restore-alt.svg | 0 .../static/icons/regular/trash-restore.svg | 0 .../static/icons/regular/trash-undo-alt.svg | 0 .../static/icons/regular/trash-undo.svg | 0 .../static/icons/regular/trash.svg | 0 .../static/icons/regular/treasure-chest.svg | 0 .../static/icons/regular/tree-alt.svg | 0 .../static/icons/regular/tree-christmas.svg | 0 .../static/icons/regular/tree-decorated.svg | 0 .../static/icons/regular/tree-large.svg | 0 .../static/icons/regular/tree-palm.svg | 0 .../src => src}/static/icons/regular/tree.svg | 0 .../static/icons/regular/trees.svg | 0 .../static/icons/regular/triangle-music.svg | 0 .../static/icons/regular/triangle.svg | 0 .../static/icons/regular/trophy-alt.svg | 0 .../static/icons/regular/trophy.svg | 0 .../static/icons/regular/truck-container.svg | 0 .../static/icons/regular/truck-couch.svg | 0 .../static/icons/regular/truck-loading.svg | 0 .../static/icons/regular/truck-monster.svg | 0 .../static/icons/regular/truck-moving.svg | 0 .../static/icons/regular/truck-pickup.svg | 0 .../static/icons/regular/truck-plow.svg | 0 .../static/icons/regular/truck-ramp.svg | 0 .../static/icons/regular/truck.svg | 0 .../static/icons/regular/trumpet.svg | 0 .../static/icons/regular/tshirt.svg | 0 .../src => src}/static/icons/regular/tty.svg | 0 .../static/icons/regular/turkey.svg | 0 .../static/icons/regular/turntable.svg | 0 .../static/icons/regular/turtle.svg | 0 .../static/icons/regular/tv-alt.svg | 0 .../static/icons/regular/tv-music.svg | 0 .../static/icons/regular/tv-retro.svg | 0 .../src => src}/static/icons/regular/tv.svg | 0 .../static/icons/regular/typewriter.svg | 0 .../static/icons/regular/ufo-beam.svg | 0 .../src => src}/static/icons/regular/ufo.svg | 0 .../static/icons/regular/umbrella-beach.svg | 0 .../static/icons/regular/umbrella.svg | 0 .../static/icons/regular/underline.svg | 0 .../static/icons/regular/undo-alt.svg | 0 .../src => src}/static/icons/regular/undo.svg | 0 .../static/icons/regular/unicorn.svg | 0 .../static/icons/regular/union.svg | 0 .../static/icons/regular/universal-access.svg | 0 .../static/icons/regular/university.svg | 0 .../static/icons/regular/unlink.svg | 0 .../static/icons/regular/unlock-alt.svg | 0 .../static/icons/regular/unlock.svg | 0 .../static/icons/regular/upload.svg | 0 .../static/icons/regular/usb-drive.svg | 0 .../static/icons/regular/usd-circle.svg | 0 .../static/icons/regular/usd-square.svg | 0 .../static/icons/regular/user-alien.svg | 0 .../static/icons/regular/user-alt-slash.svg | 0 .../static/icons/regular/user-alt.svg | 0 .../static/icons/regular/user-astronaut.svg | 0 .../static/icons/regular/user-chart.svg | 0 .../static/icons/regular/user-check.svg | 0 .../static/icons/regular/user-circle.svg | 0 .../static/icons/regular/user-clock.svg | 0 .../static/icons/regular/user-cog.svg | 0 .../static/icons/regular/user-cowboy.svg | 0 .../static/icons/regular/user-crown.svg | 0 .../static/icons/regular/user-edit.svg | 0 .../static/icons/regular/user-friends.svg | 0 .../static/icons/regular/user-graduate.svg | 0 .../static/icons/regular/user-hard-hat.svg | 0 .../static/icons/regular/user-headset.svg | 0 .../static/icons/regular/user-injured.svg | 0 .../static/icons/regular/user-lock.svg | 0 .../static/icons/regular/user-md-chat.svg | 0 .../static/icons/regular/user-md.svg | 0 .../static/icons/regular/user-minus.svg | 0 .../static/icons/regular/user-music.svg | 0 .../static/icons/regular/user-ninja.svg | 0 .../static/icons/regular/user-nurse.svg | 0 .../static/icons/regular/user-plus.svg | 0 .../static/icons/regular/user-robot.svg | 0 .../static/icons/regular/user-secret.svg | 0 .../static/icons/regular/user-shield.svg | 0 .../static/icons/regular/user-slash.svg | 0 .../static/icons/regular/user-tag.svg | 0 .../static/icons/regular/user-tie.svg | 0 .../static/icons/regular/user-times.svg | 0 .../static/icons/regular/user-visor.svg | 0 .../src => src}/static/icons/regular/user.svg | 0 .../static/icons/regular/users-class.svg | 0 .../static/icons/regular/users-cog.svg | 0 .../static/icons/regular/users-crown.svg | 0 .../static/icons/regular/users-medical.svg | 0 .../static/icons/regular/users.svg | 0 .../static/icons/regular/utensil-fork.svg | 0 .../static/icons/regular/utensil-knife.svg | 0 .../static/icons/regular/utensil-spoon.svg | 0 .../static/icons/regular/utensils-alt.svg | 0 .../static/icons/regular/utensils.svg | 0 .../static/icons/regular/vacuum-robot.svg | 0 .../static/icons/regular/vacuum.svg | 0 .../static/icons/regular/value-absolute.svg | 0 .../static/icons/regular/vector-square.svg | 0 .../static/icons/regular/venus-double.svg | 0 .../static/icons/regular/venus-mars.svg | 0 .../static/icons/regular/venus.svg | 0 .../src => src}/static/icons/regular/vhs.svg | 0 .../src => src}/static/icons/regular/vial.svg | 0 .../static/icons/regular/vials.svg | 0 .../static/icons/regular/video-plus.svg | 0 .../static/icons/regular/video-slash.svg | 0 .../static/icons/regular/video.svg | 0 .../static/icons/regular/vihara.svg | 0 .../static/icons/regular/violin.svg | 0 .../static/icons/regular/voicemail.svg | 0 .../static/icons/regular/volcano.svg | 0 .../static/icons/regular/volleyball-ball.svg | 0 .../static/icons/regular/volume-down.svg | 0 .../static/icons/regular/volume-mute.svg | 0 .../static/icons/regular/volume-off.svg | 0 .../static/icons/regular/volume-slash.svg | 0 .../static/icons/regular/volume-up.svg | 0 .../static/icons/regular/volume.svg | 0 .../static/icons/regular/vote-nay.svg | 0 .../static/icons/regular/vote-yea.svg | 0 .../static/icons/regular/vr-cardboard.svg | 0 .../static/icons/regular/wagon-covered.svg | 0 .../static/icons/regular/walker.svg | 0 .../static/icons/regular/walkie-talkie.svg | 0 .../static/icons/regular/walking.svg | 0 .../static/icons/regular/wallet.svg | 0 .../static/icons/regular/wand-magic.svg | 0 .../src => src}/static/icons/regular/wand.svg | 0 .../static/icons/regular/warehouse-alt.svg | 0 .../static/icons/regular/warehouse.svg | 0 .../static/icons/regular/washer.svg | 0 .../static/icons/regular/watch-calculator.svg | 0 .../static/icons/regular/watch-fitness.svg | 0 .../static/icons/regular/watch.svg | 0 .../static/icons/regular/water-lower.svg | 0 .../static/icons/regular/water-rise.svg | 0 .../static/icons/regular/water.svg | 0 .../static/icons/regular/wave-sine.svg | 0 .../static/icons/regular/wave-square.svg | 0 .../static/icons/regular/wave-triangle.svg | 0 .../static/icons/regular/waveform-path.svg | 0 .../static/icons/regular/waveform.svg | 0 .../static/icons/regular/webcam-slash.svg | 0 .../static/icons/regular/webcam.svg | 0 .../static/icons/regular/weight-hanging.svg | 0 .../static/icons/regular/weight.svg | 0 .../static/icons/regular/whale.svg | 0 .../static/icons/regular/wheat.svg | 0 .../static/icons/regular/wheelchair.svg | 0 .../static/icons/regular/whistle.svg | 0 .../static/icons/regular/wifi-1.svg | 0 .../static/icons/regular/wifi-2.svg | 0 .../static/icons/regular/wifi-slash.svg | 0 .../src => src}/static/icons/regular/wifi.svg | 0 .../static/icons/regular/wind-turbine.svg | 0 .../static/icons/regular/wind-warning.svg | 0 .../src => src}/static/icons/regular/wind.svg | 0 .../static/icons/regular/window-alt.svg | 0 .../static/icons/regular/window-close.svg | 0 .../icons/regular/window-frame-open.svg | 0 .../static/icons/regular/window-frame.svg | 0 .../static/icons/regular/window-maximize.svg | 0 .../static/icons/regular/window-minimize.svg | 0 .../static/icons/regular/window-restore.svg | 0 .../static/icons/regular/window.svg | 0 .../static/icons/regular/windsock.svg | 0 .../static/icons/regular/wine-bottle.svg | 0 .../static/icons/regular/wine-glass-alt.svg | 0 .../static/icons/regular/wine-glass.svg | 0 .../static/icons/regular/won-sign.svg | 0 .../static/icons/regular/wreath.svg | 0 .../static/icons/regular/wrench.svg | 0 .../static/icons/regular/x-ray.svg | 0 .../static/icons/regular/yen-sign.svg | 0 .../static/icons/regular/yin-yang.svg | 0 .../src => src}/static/icons/solid/abacus.svg | 0 .../src => src}/static/icons/solid/acorn.svg | 0 {client/src => src}/static/icons/solid/ad.svg | 0 .../static/icons/solid/address-book.svg | 0 .../static/icons/solid/address-card.svg | 0 .../src => src}/static/icons/solid/adjust.svg | 0 .../static/icons/solid/air-conditioner.svg | 0 .../static/icons/solid/air-freshener.svg | 0 .../static/icons/solid/alarm-clock.svg | 0 .../static/icons/solid/alarm-exclamation.svg | 0 .../static/icons/solid/alarm-plus.svg | 0 .../static/icons/solid/alarm-snooze.svg | 0 .../static/icons/solid/album-collection.svg | 0 .../src => src}/static/icons/solid/album.svg | 0 .../static/icons/solid/alicorn.svg | 0 .../static/icons/solid/alien-monster.svg | 0 .../src => src}/static/icons/solid/alien.svg | 0 .../static/icons/solid/align-center.svg | 0 .../static/icons/solid/align-justify.svg | 0 .../static/icons/solid/align-left.svg | 0 .../static/icons/solid/align-right.svg | 0 .../static/icons/solid/align-slash.svg | 0 .../static/icons/solid/allergies.svg | 0 .../static/icons/solid/ambulance.svg | 0 .../american-sign-language-interpreting.svg | 0 .../static/icons/solid/amp-guitar.svg | 0 .../static/icons/solid/analytics.svg | 0 .../src => src}/static/icons/solid/anchor.svg | 0 .../src => src}/static/icons/solid/angel.svg | 0 .../static/icons/solid/angle-double-down.svg | 0 .../static/icons/solid/angle-double-left.svg | 0 .../static/icons/solid/angle-double-right.svg | 0 .../static/icons/solid/angle-double-up.svg | 0 .../static/icons/solid/angle-down.svg | 0 .../static/icons/solid/angle-left.svg | 0 .../static/icons/solid/angle-right.svg | 0 .../static/icons/solid/angle-up.svg | 0 .../src => src}/static/icons/solid/angry.svg | 0 .../src => src}/static/icons/solid/ankh.svg | 0 .../static/icons/solid/apple-alt.svg | 0 .../static/icons/solid/apple-crate.svg | 0 .../static/icons/solid/archive.svg | 0 .../static/icons/solid/archway.svg | 0 .../icons/solid/arrow-alt-circle-down.svg | 0 .../icons/solid/arrow-alt-circle-left.svg | 0 .../icons/solid/arrow-alt-circle-right.svg | 0 .../icons/solid/arrow-alt-circle-up.svg | 0 .../static/icons/solid/arrow-alt-down.svg | 0 .../icons/solid/arrow-alt-from-bottom.svg | 0 .../icons/solid/arrow-alt-from-left.svg | 0 .../icons/solid/arrow-alt-from-right.svg | 0 .../static/icons/solid/arrow-alt-from-top.svg | 0 .../static/icons/solid/arrow-alt-left.svg | 0 .../static/icons/solid/arrow-alt-right.svg | 0 .../icons/solid/arrow-alt-square-down.svg | 0 .../icons/solid/arrow-alt-square-left.svg | 0 .../icons/solid/arrow-alt-square-right.svg | 0 .../icons/solid/arrow-alt-square-up.svg | 0 .../icons/solid/arrow-alt-to-bottom.svg | 0 .../static/icons/solid/arrow-alt-to-left.svg | 0 .../static/icons/solid/arrow-alt-to-right.svg | 0 .../static/icons/solid/arrow-alt-to-top.svg | 0 .../static/icons/solid/arrow-alt-up.svg | 0 .../static/icons/solid/arrow-circle-down.svg | 0 .../static/icons/solid/arrow-circle-left.svg | 0 .../static/icons/solid/arrow-circle-right.svg | 0 .../static/icons/solid/arrow-circle-up.svg | 0 .../static/icons/solid/arrow-down.svg | 0 .../static/icons/solid/arrow-from-bottom.svg | 0 .../static/icons/solid/arrow-from-left.svg | 0 .../static/icons/solid/arrow-from-right.svg | 0 .../static/icons/solid/arrow-from-top.svg | 0 .../static/icons/solid/arrow-left.svg | 0 .../static/icons/solid/arrow-right.svg | 0 .../static/icons/solid/arrow-square-down.svg | 0 .../static/icons/solid/arrow-square-left.svg | 0 .../static/icons/solid/arrow-square-right.svg | 0 .../static/icons/solid/arrow-square-up.svg | 0 .../static/icons/solid/arrow-to-bottom.svg | 0 .../static/icons/solid/arrow-to-left.svg | 0 .../static/icons/solid/arrow-to-right.svg | 0 .../static/icons/solid/arrow-to-top.svg | 0 .../static/icons/solid/arrow-up.svg | 0 .../static/icons/solid/arrows-alt-h.svg | 0 .../static/icons/solid/arrows-alt-v.svg | 0 .../static/icons/solid/arrows-alt.svg | 0 .../static/icons/solid/arrows-h.svg | 0 .../static/icons/solid/arrows-v.svg | 0 .../src => src}/static/icons/solid/arrows.svg | 0 .../solid/assistive-listening-systems.svg | 0 .../static/icons/solid/asterisk.svg | 0 {client/src => src}/static/icons/solid/at.svg | 0 .../src => src}/static/icons/solid/atlas.svg | 0 .../static/icons/solid/atom-alt.svg | 0 .../src => src}/static/icons/solid/atom.svg | 0 .../static/icons/solid/audio-description.svg | 0 .../src => src}/static/icons/solid/award.svg | 0 .../static/icons/solid/axe-battle.svg | 0 .../src => src}/static/icons/solid/axe.svg | 0 .../static/icons/solid/baby-carriage.svg | 0 .../src => src}/static/icons/solid/baby.svg | 0 .../static/icons/solid/backpack.svg | 0 .../static/icons/solid/backspace.svg | 0 .../static/icons/solid/backward.svg | 0 .../src => src}/static/icons/solid/bacon.svg | 0 .../static/icons/solid/badge-check.svg | 0 .../static/icons/solid/badge-dollar.svg | 0 .../static/icons/solid/badge-percent.svg | 0 .../static/icons/solid/badge-sheriff.svg | 0 .../src => src}/static/icons/solid/badge.svg | 0 .../static/icons/solid/badger-honey.svg | 0 .../static/icons/solid/bags-shopping.svg | 0 .../src => src}/static/icons/solid/bahai.svg | 0 .../static/icons/solid/balance-scale-left.svg | 0 .../icons/solid/balance-scale-right.svg | 0 .../static/icons/solid/balance-scale.svg | 0 .../static/icons/solid/ball-pile.svg | 0 .../static/icons/solid/ballot-check.svg | 0 .../src => src}/static/icons/solid/ballot.svg | 0 .../src => src}/static/icons/solid/ban.svg | 0 .../static/icons/solid/band-aid.svg | 0 .../src => src}/static/icons/solid/banjo.svg | 0 .../static/icons/solid/barcode-alt.svg | 0 .../static/icons/solid/barcode-read.svg | 0 .../static/icons/solid/barcode-scan.svg | 0 .../static/icons/solid/barcode.svg | 0 .../src => src}/static/icons/solid/bars.svg | 0 .../static/icons/solid/baseball-ball.svg | 0 .../static/icons/solid/baseball.svg | 0 .../static/icons/solid/basketball-ball.svg | 0 .../static/icons/solid/basketball-hoop.svg | 0 .../src => src}/static/icons/solid/bat.svg | 0 .../src => src}/static/icons/solid/bath.svg | 0 .../static/icons/solid/battery-bolt.svg | 0 .../static/icons/solid/battery-empty.svg | 0 .../static/icons/solid/battery-full.svg | 0 .../static/icons/solid/battery-half.svg | 0 .../static/icons/solid/battery-quarter.svg | 0 .../static/icons/solid/battery-slash.svg | 0 .../icons/solid/battery-three-quarters.svg | 0 .../static/icons/solid/bed-alt.svg | 0 .../static/icons/solid/bed-bunk.svg | 0 .../static/icons/solid/bed-empty.svg | 0 .../src => src}/static/icons/solid/bed.svg | 0 .../src => src}/static/icons/solid/beer.svg | 0 .../static/icons/solid/bell-exclamation.svg | 0 .../static/icons/solid/bell-on.svg | 0 .../static/icons/solid/bell-plus.svg | 0 .../static/icons/solid/bell-school-slash.svg | 0 .../static/icons/solid/bell-school.svg | 0 .../static/icons/solid/bell-slash.svg | 0 .../src => src}/static/icons/solid/bell.svg | 0 .../src => src}/static/icons/solid/bells.svg | 0 .../static/icons/solid/betamax.svg | 0 .../static/icons/solid/bezier-curve.svg | 0 .../src => src}/static/icons/solid/bible.svg | 0 .../static/icons/solid/bicycle.svg | 0 .../static/icons/solid/biking-mountain.svg | 0 .../src => src}/static/icons/solid/biking.svg | 0 .../static/icons/solid/binoculars.svg | 0 .../static/icons/solid/biohazard.svg | 0 .../static/icons/solid/birthday-cake.svg | 0 .../static/icons/solid/blanket.svg | 0 .../static/icons/solid/blender-phone.svg | 0 .../static/icons/solid/blender.svg | 0 .../src => src}/static/icons/solid/blind.svg | 0 .../static/icons/solid/blinds-open.svg | 0 .../static/icons/solid/blinds-raised.svg | 0 .../src => src}/static/icons/solid/blinds.svg | 0 .../src => src}/static/icons/solid/blog.svg | 0 .../src => src}/static/icons/solid/bold.svg | 0 .../src => src}/static/icons/solid/bolt.svg | 0 .../src => src}/static/icons/solid/bomb.svg | 0 .../static/icons/solid/bone-break.svg | 0 .../src => src}/static/icons/solid/bone.svg | 0 .../src => src}/static/icons/solid/bong.svg | 0 .../static/icons/solid/book-alt.svg | 0 .../static/icons/solid/book-dead.svg | 0 .../static/icons/solid/book-heart.svg | 0 .../static/icons/solid/book-medical.svg | 0 .../static/icons/solid/book-open.svg | 0 .../static/icons/solid/book-reader.svg | 0 .../static/icons/solid/book-spells.svg | 0 .../static/icons/solid/book-user.svg | 0 .../src => src}/static/icons/solid/book.svg | 0 .../static/icons/solid/bookmark.svg | 0 .../static/icons/solid/books-medical.svg | 0 .../src => src}/static/icons/solid/books.svg | 0 .../static/icons/solid/boombox.svg | 0 .../src => src}/static/icons/solid/boot.svg | 0 .../static/icons/solid/booth-curtain.svg | 0 .../static/icons/solid/border-all.svg | 0 .../static/icons/solid/border-bottom.svg | 0 .../static/icons/solid/border-center-h.svg | 0 .../static/icons/solid/border-center-v.svg | 0 .../static/icons/solid/border-inner.svg | 0 .../static/icons/solid/border-left.svg | 0 .../static/icons/solid/border-none.svg | 0 .../static/icons/solid/border-outer.svg | 0 .../static/icons/solid/border-right.svg | 0 .../static/icons/solid/border-style-alt.svg | 0 .../static/icons/solid/border-style.svg | 0 .../static/icons/solid/border-top.svg | 0 .../static/icons/solid/bow-arrow.svg | 0 .../static/icons/solid/bowling-ball.svg | 0 .../static/icons/solid/bowling-pins.svg | 0 .../static/icons/solid/box-alt.svg | 0 .../static/icons/solid/box-ballot.svg | 0 .../static/icons/solid/box-check.svg | 0 .../static/icons/solid/box-fragile.svg | 0 .../static/icons/solid/box-full.svg | 0 .../static/icons/solid/box-heart.svg | 0 .../static/icons/solid/box-open.svg | 0 .../src => src}/static/icons/solid/box-up.svg | 0 .../static/icons/solid/box-usd.svg | 0 .../src => src}/static/icons/solid/box.svg | 0 .../static/icons/solid/boxes-alt.svg | 0 .../src => src}/static/icons/solid/boxes.svg | 0 .../static/icons/solid/boxing-glove.svg | 0 .../static/icons/solid/brackets-curly.svg | 0 .../static/icons/solid/brackets.svg | 0 .../static/icons/solid/braille.svg | 0 .../src => src}/static/icons/solid/brain.svg | 0 .../static/icons/solid/bread-loaf.svg | 0 .../static/icons/solid/bread-slice.svg | 0 .../static/icons/solid/briefcase-medical.svg | 0 .../static/icons/solid/briefcase.svg | 0 .../static/icons/solid/bring-forward.svg | 0 .../static/icons/solid/bring-front.svg | 0 .../static/icons/solid/broadcast-tower.svg | 0 .../src => src}/static/icons/solid/broom.svg | 0 .../static/icons/solid/browser.svg | 0 .../src => src}/static/icons/solid/brush.svg | 0 .../src => src}/static/icons/solid/bug.svg | 0 .../static/icons/solid/building.svg | 0 .../static/icons/solid/bullhorn.svg | 0 .../static/icons/solid/bullseye-arrow.svg | 0 .../static/icons/solid/bullseye-pointer.svg | 0 .../static/icons/solid/bullseye.svg | 0 .../static/icons/solid/burger-soda.svg | 0 .../src => src}/static/icons/solid/burn.svg | 0 .../static/icons/solid/burrito.svg | 0 .../static/icons/solid/bus-alt.svg | 0 .../static/icons/solid/bus-school.svg | 0 .../src => src}/static/icons/solid/bus.svg | 0 .../static/icons/solid/business-time.svg | 0 .../static/icons/solid/cabinet-filing.svg | 0 .../src => src}/static/icons/solid/cactus.svg | 0 .../static/icons/solid/calculator-alt.svg | 0 .../static/icons/solid/calculator.svg | 0 .../static/icons/solid/calendar-alt.svg | 0 .../static/icons/solid/calendar-check.svg | 0 .../static/icons/solid/calendar-day.svg | 0 .../static/icons/solid/calendar-edit.svg | 0 .../icons/solid/calendar-exclamation.svg | 0 .../static/icons/solid/calendar-minus.svg | 0 .../static/icons/solid/calendar-plus.svg | 0 .../static/icons/solid/calendar-star.svg | 0 .../static/icons/solid/calendar-times.svg | 0 .../static/icons/solid/calendar-week.svg | 0 .../static/icons/solid/calendar.svg | 0 .../static/icons/solid/camcorder.svg | 0 .../static/icons/solid/camera-alt.svg | 0 .../static/icons/solid/camera-home.svg | 0 .../static/icons/solid/camera-movie.svg | 0 .../static/icons/solid/camera-polaroid.svg | 0 .../static/icons/solid/camera-retro.svg | 0 .../src => src}/static/icons/solid/camera.svg | 0 .../static/icons/solid/campfire.svg | 0 .../static/icons/solid/campground.svg | 0 .../static/icons/solid/candle-holder.svg | 0 .../static/icons/solid/candy-cane.svg | 0 .../static/icons/solid/candy-corn.svg | 0 .../static/icons/solid/cannabis.svg | 0 .../static/icons/solid/capsules.svg | 0 .../static/icons/solid/car-alt.svg | 0 .../static/icons/solid/car-battery.svg | 0 .../static/icons/solid/car-building.svg | 0 .../static/icons/solid/car-bump.svg | 0 .../static/icons/solid/car-bus.svg | 0 .../static/icons/solid/car-crash.svg | 0 .../static/icons/solid/car-garage.svg | 0 .../static/icons/solid/car-mechanic.svg | 0 .../static/icons/solid/car-side.svg | 0 .../static/icons/solid/car-tilt.svg | 0 .../static/icons/solid/car-wash.svg | 0 .../src => src}/static/icons/solid/car.svg | 0 .../static/icons/solid/caravan-alt.svg | 0 .../static/icons/solid/caravan.svg | 0 .../static/icons/solid/caret-circle-down.svg | 0 .../static/icons/solid/caret-circle-left.svg | 0 .../static/icons/solid/caret-circle-right.svg | 0 .../static/icons/solid/caret-circle-up.svg | 0 .../static/icons/solid/caret-down.svg | 0 .../static/icons/solid/caret-left.svg | 0 .../static/icons/solid/caret-right.svg | 0 .../static/icons/solid/caret-square-down.svg | 0 .../static/icons/solid/caret-square-left.svg | 0 .../static/icons/solid/caret-square-right.svg | 0 .../static/icons/solid/caret-square-up.svg | 0 .../static/icons/solid/caret-up.svg | 0 .../src => src}/static/icons/solid/carrot.svg | 0 .../src => src}/static/icons/solid/cars.svg | 0 .../static/icons/solid/cart-arrow-down.svg | 0 .../static/icons/solid/cart-plus.svg | 0 .../static/icons/solid/cash-register.svg | 0 .../static/icons/solid/cassette-tape.svg | 0 .../static/icons/solid/cat-space.svg | 0 .../src => src}/static/icons/solid/cat.svg | 0 .../static/icons/solid/cauldron.svg | 0 .../src => src}/static/icons/solid/cctv.svg | 0 .../static/icons/solid/certificate.svg | 0 .../static/icons/solid/chair-office.svg | 0 .../src => src}/static/icons/solid/chair.svg | 0 .../static/icons/solid/chalkboard-teacher.svg | 0 .../static/icons/solid/chalkboard.svg | 0 .../static/icons/solid/charging-station.svg | 0 .../static/icons/solid/chart-area.svg | 0 .../static/icons/solid/chart-bar.svg | 0 .../static/icons/solid/chart-line-down.svg | 0 .../static/icons/solid/chart-line.svg | 0 .../static/icons/solid/chart-network.svg | 0 .../static/icons/solid/chart-pie-alt.svg | 0 .../static/icons/solid/chart-pie.svg | 0 .../static/icons/solid/chart-scatter.svg | 0 .../static/icons/solid/check-circle.svg | 0 .../static/icons/solid/check-double.svg | 0 .../static/icons/solid/check-square.svg | 0 .../src => src}/static/icons/solid/check.svg | 0 .../static/icons/solid/cheese-swiss.svg | 0 .../src => src}/static/icons/solid/cheese.svg | 0 .../static/icons/solid/cheeseburger.svg | 0 .../static/icons/solid/chess-bishop-alt.svg | 0 .../static/icons/solid/chess-bishop.svg | 0 .../static/icons/solid/chess-board.svg | 0 .../static/icons/solid/chess-clock-alt.svg | 0 .../static/icons/solid/chess-clock.svg | 0 .../static/icons/solid/chess-king-alt.svg | 0 .../static/icons/solid/chess-king.svg | 0 .../static/icons/solid/chess-knight-alt.svg | 0 .../static/icons/solid/chess-knight.svg | 0 .../static/icons/solid/chess-pawn-alt.svg | 0 .../static/icons/solid/chess-pawn.svg | 0 .../static/icons/solid/chess-queen-alt.svg | 0 .../static/icons/solid/chess-queen.svg | 0 .../static/icons/solid/chess-rook-alt.svg | 0 .../static/icons/solid/chess-rook.svg | 0 .../src => src}/static/icons/solid/chess.svg | 0 .../icons/solid/chevron-circle-down.svg | 0 .../icons/solid/chevron-circle-left.svg | 0 .../icons/solid/chevron-circle-right.svg | 0 .../static/icons/solid/chevron-circle-up.svg | 0 .../icons/solid/chevron-double-down.svg | 0 .../icons/solid/chevron-double-left.svg | 0 .../icons/solid/chevron-double-right.svg | 0 .../static/icons/solid/chevron-double-up.svg | 0 .../static/icons/solid/chevron-down.svg | 0 .../static/icons/solid/chevron-left.svg | 0 .../static/icons/solid/chevron-right.svg | 0 .../icons/solid/chevron-square-down.svg | 0 .../icons/solid/chevron-square-left.svg | 0 .../icons/solid/chevron-square-right.svg | 0 .../static/icons/solid/chevron-square-up.svg | 0 .../static/icons/solid/chevron-up.svg | 0 .../src => src}/static/icons/solid/child.svg | 0 .../static/icons/solid/chimney.svg | 0 .../src => src}/static/icons/solid/church.svg | 0 .../static/icons/solid/circle-notch.svg | 0 .../src => src}/static/icons/solid/circle.svg | 0 .../src => src}/static/icons/solid/city.svg | 0 .../static/icons/solid/clarinet.svg | 0 .../static/icons/solid/claw-marks.svg | 0 .../static/icons/solid/clinic-medical.svg | 0 .../static/icons/solid/clipboard-check.svg | 0 .../icons/solid/clipboard-list-check.svg | 0 .../static/icons/solid/clipboard-list.svg | 0 .../icons/solid/clipboard-prescription.svg | 0 .../static/icons/solid/clipboard-user.svg | 0 .../static/icons/solid/clipboard.svg | 0 .../src => src}/static/icons/solid/clock.svg | 0 .../src => src}/static/icons/solid/clone.svg | 0 .../static/icons/solid/closed-captioning.svg | 0 .../static/icons/solid/cloud-download-alt.svg | 0 .../static/icons/solid/cloud-download.svg | 0 .../static/icons/solid/cloud-drizzle.svg | 0 .../static/icons/solid/cloud-hail-mixed.svg | 0 .../static/icons/solid/cloud-hail.svg | 0 .../static/icons/solid/cloud-meatball.svg | 0 .../static/icons/solid/cloud-moon-rain.svg | 0 .../static/icons/solid/cloud-moon.svg | 0 .../static/icons/solid/cloud-music.svg | 0 .../static/icons/solid/cloud-rain.svg | 0 .../static/icons/solid/cloud-rainbow.svg | 0 .../icons/solid/cloud-showers-heavy.svg | 0 .../static/icons/solid/cloud-showers.svg | 0 .../static/icons/solid/cloud-sleet.svg | 0 .../static/icons/solid/cloud-snow.svg | 0 .../static/icons/solid/cloud-sun-rain.svg | 0 .../static/icons/solid/cloud-sun.svg | 0 .../static/icons/solid/cloud-upload-alt.svg | 0 .../static/icons/solid/cloud-upload.svg | 0 .../src => src}/static/icons/solid/cloud.svg | 0 .../static/icons/solid/clouds-moon.svg | 0 .../static/icons/solid/clouds-sun.svg | 0 .../src => src}/static/icons/solid/clouds.svg | 0 .../src => src}/static/icons/solid/club.svg | 0 .../static/icons/solid/cocktail.svg | 0 .../static/icons/solid/code-branch.svg | 0 .../static/icons/solid/code-commit.svg | 0 .../static/icons/solid/code-merge.svg | 0 .../src => src}/static/icons/solid/code.svg | 0 .../static/icons/solid/coffee-pot.svg | 0 .../static/icons/solid/coffee-togo.svg | 0 .../src => src}/static/icons/solid/coffee.svg | 0 .../src => src}/static/icons/solid/coffin.svg | 0 .../src => src}/static/icons/solid/cog.svg | 0 .../src => src}/static/icons/solid/cogs.svg | 0 .../src => src}/static/icons/solid/coin.svg | 0 .../src => src}/static/icons/solid/coins.svg | 0 .../static/icons/solid/columns.svg | 0 .../src => src}/static/icons/solid/comet.svg | 0 .../static/icons/solid/comment-alt-check.svg | 0 .../static/icons/solid/comment-alt-dollar.svg | 0 .../static/icons/solid/comment-alt-dots.svg | 0 .../static/icons/solid/comment-alt-edit.svg | 0 .../icons/solid/comment-alt-exclamation.svg | 0 .../static/icons/solid/comment-alt-lines.svg | 0 .../icons/solid/comment-alt-medical.svg | 0 .../static/icons/solid/comment-alt-minus.svg | 0 .../static/icons/solid/comment-alt-music.svg | 0 .../static/icons/solid/comment-alt-plus.svg | 0 .../static/icons/solid/comment-alt-slash.svg | 0 .../static/icons/solid/comment-alt-smile.svg | 0 .../static/icons/solid/comment-alt-times.svg | 0 .../static/icons/solid/comment-alt.svg | 0 .../static/icons/solid/comment-check.svg | 0 .../static/icons/solid/comment-dollar.svg | 0 .../static/icons/solid/comment-dots.svg | 0 .../static/icons/solid/comment-edit.svg | 0 .../icons/solid/comment-exclamation.svg | 0 .../static/icons/solid/comment-lines.svg | 0 .../static/icons/solid/comment-medical.svg | 0 .../static/icons/solid/comment-minus.svg | 0 .../static/icons/solid/comment-music.svg | 0 .../static/icons/solid/comment-plus.svg | 0 .../static/icons/solid/comment-slash.svg | 0 .../static/icons/solid/comment-smile.svg | 0 .../static/icons/solid/comment-times.svg | 0 .../static/icons/solid/comment.svg | 0 .../icons/solid/comments-alt-dollar.svg | 0 .../static/icons/solid/comments-alt.svg | 0 .../static/icons/solid/comments-dollar.svg | 0 .../static/icons/solid/comments.svg | 0 .../static/icons/solid/compact-disc.svg | 0 .../static/icons/solid/compass-slash.svg | 0 .../static/icons/solid/compass.svg | 0 .../static/icons/solid/compress-alt.svg | 0 .../icons/solid/compress-arrows-alt.svg | 0 .../static/icons/solid/compress-wide.svg | 0 .../static/icons/solid/compress.svg | 0 .../static/icons/solid/computer-classic.svg | 0 .../static/icons/solid/computer-speaker.svg | 0 .../static/icons/solid/concierge-bell.svg | 0 .../static/icons/solid/construction.svg | 0 .../static/icons/solid/container-storage.svg | 0 .../static/icons/solid/conveyor-belt-alt.svg | 0 .../static/icons/solid/conveyor-belt.svg | 0 .../static/icons/solid/cookie-bite.svg | 0 .../src => src}/static/icons/solid/cookie.svg | 0 .../src => src}/static/icons/solid/copy.svg | 0 .../static/icons/solid/copyright.svg | 0 .../src => src}/static/icons/solid/corn.svg | 0 .../src => src}/static/icons/solid/couch.svg | 0 .../src => src}/static/icons/solid/cow.svg | 0 .../static/icons/solid/cowbell-more.svg | 0 .../static/icons/solid/cowbell.svg | 0 .../static/icons/solid/credit-card-blank.svg | 0 .../static/icons/solid/credit-card-front.svg | 0 .../static/icons/solid/credit-card.svg | 0 .../static/icons/solid/cricket.svg | 0 .../static/icons/solid/croissant.svg | 0 .../static/icons/solid/crop-alt.svg | 0 .../src => src}/static/icons/solid/crop.svg | 0 .../src => src}/static/icons/solid/cross.svg | 0 .../static/icons/solid/crosshairs.svg | 0 .../src => src}/static/icons/solid/crow.svg | 0 .../src => src}/static/icons/solid/crown.svg | 0 .../src => src}/static/icons/solid/crutch.svg | 0 .../static/icons/solid/crutches.svg | 0 .../src => src}/static/icons/solid/cube.svg | 0 .../src => src}/static/icons/solid/cubes.svg | 0 .../static/icons/solid/curling.svg | 0 .../src => src}/static/icons/solid/cut.svg | 0 .../src => src}/static/icons/solid/dagger.svg | 0 .../static/icons/solid/database.svg | 0 .../src => src}/static/icons/solid/deaf.svg | 0 .../src => src}/static/icons/solid/debug.svg | 0 .../static/icons/solid/deer-rudolph.svg | 0 .../src => src}/static/icons/solid/deer.svg | 0 .../static/icons/solid/democrat.svg | 0 .../static/icons/solid/desktop-alt.svg | 0 .../static/icons/solid/desktop.svg | 0 .../static/icons/solid/dewpoint.svg | 0 .../static/icons/solid/dharmachakra.svg | 0 .../static/icons/solid/diagnoses.svg | 0 .../static/icons/solid/diamond.svg | 0 .../static/icons/solid/dice-d10.svg | 0 .../static/icons/solid/dice-d12.svg | 0 .../static/icons/solid/dice-d20.svg | 0 .../static/icons/solid/dice-d4.svg | 0 .../static/icons/solid/dice-d6.svg | 0 .../static/icons/solid/dice-d8.svg | 0 .../static/icons/solid/dice-five.svg | 0 .../static/icons/solid/dice-four.svg | 0 .../static/icons/solid/dice-one.svg | 0 .../static/icons/solid/dice-six.svg | 0 .../static/icons/solid/dice-three.svg | 0 .../static/icons/solid/dice-two.svg | 0 .../src => src}/static/icons/solid/dice.svg | 0 .../static/icons/solid/digging.svg | 0 .../static/icons/solid/digital-tachograph.svg | 0 .../static/icons/solid/diploma.svg | 0 .../static/icons/solid/directions.svg | 0 .../static/icons/solid/disc-drive.svg | 0 .../static/icons/solid/disease.svg | 0 .../src => src}/static/icons/solid/divide.svg | 0 .../src => src}/static/icons/solid/dizzy.svg | 0 .../src => src}/static/icons/solid/dna.svg | 0 .../static/icons/solid/do-not-enter.svg | 0 .../static/icons/solid/dog-leashed.svg | 0 .../src => src}/static/icons/solid/dog.svg | 0 .../static/icons/solid/dollar-sign.svg | 0 .../static/icons/solid/dolly-empty.svg | 0 .../static/icons/solid/dolly-flatbed-alt.svg | 0 .../icons/solid/dolly-flatbed-empty.svg | 0 .../static/icons/solid/dolly-flatbed.svg | 0 .../src => src}/static/icons/solid/dolly.svg | 0 .../src => src}/static/icons/solid/donate.svg | 0 .../static/icons/solid/door-closed.svg | 0 .../static/icons/solid/door-open.svg | 0 .../static/icons/solid/dot-circle.svg | 0 .../src => src}/static/icons/solid/dove.svg | 0 .../static/icons/solid/download.svg | 0 .../static/icons/solid/drafting-compass.svg | 0 .../src => src}/static/icons/solid/dragon.svg | 0 .../static/icons/solid/draw-circle.svg | 0 .../static/icons/solid/draw-polygon.svg | 0 .../static/icons/solid/draw-square.svg | 0 .../static/icons/solid/dreidel.svg | 0 .../static/icons/solid/drone-alt.svg | 0 .../src => src}/static/icons/solid/drone.svg | 0 .../static/icons/solid/drum-steelpan.svg | 0 .../src => src}/static/icons/solid/drum.svg | 0 .../static/icons/solid/drumstick-bite.svg | 0 .../static/icons/solid/drumstick.svg | 0 .../static/icons/solid/dryer-alt.svg | 0 .../src => src}/static/icons/solid/dryer.svg | 0 .../src => src}/static/icons/solid/duck.svg | 0 .../static/icons/solid/dumbbell.svg | 0 .../static/icons/solid/dumpster-fire.svg | 0 .../static/icons/solid/dumpster.svg | 0 .../static/icons/solid/dungeon.svg | 0 .../static/icons/solid/ear-muffs.svg | 0 .../src => src}/static/icons/solid/ear.svg | 0 .../static/icons/solid/eclipse-alt.svg | 0 .../static/icons/solid/eclipse.svg | 0 .../src => src}/static/icons/solid/edit.svg | 0 .../static/icons/solid/egg-fried.svg | 0 .../src => src}/static/icons/solid/egg.svg | 0 .../src => src}/static/icons/solid/eject.svg | 0 .../static/icons/solid/elephant.svg | 0 .../static/icons/solid/ellipsis-h-alt.svg | 0 .../static/icons/solid/ellipsis-h.svg | 0 .../static/icons/solid/ellipsis-v-alt.svg | 0 .../static/icons/solid/ellipsis-v.svg | 0 .../static/icons/solid/empty-set.svg | 0 .../static/icons/solid/engine-warning.svg | 0 .../icons/solid/envelope-open-dollar.svg | 0 .../static/icons/solid/envelope-open-text.svg | 0 .../static/icons/solid/envelope-open.svg | 0 .../static/icons/solid/envelope-square.svg | 0 .../static/icons/solid/envelope.svg | 0 .../src => src}/static/icons/solid/equals.svg | 0 .../src => src}/static/icons/solid/eraser.svg | 0 .../static/icons/solid/ethernet.svg | 0 .../static/icons/solid/euro-sign.svg | 0 .../static/icons/solid/exchange-alt.svg | 0 .../static/icons/solid/exchange.svg | 0 .../static/icons/solid/exclamation-circle.svg | 0 .../static/icons/solid/exclamation-square.svg | 0 .../icons/solid/exclamation-triangle.svg | 0 .../static/icons/solid/exclamation.svg | 0 .../static/icons/solid/expand-alt.svg | 0 .../static/icons/solid/expand-arrows-alt.svg | 0 .../static/icons/solid/expand-arrows.svg | 0 .../static/icons/solid/expand-wide.svg | 0 .../src => src}/static/icons/solid/expand.svg | 0 .../static/icons/solid/external-link-alt.svg | 0 .../icons/solid/external-link-square-alt.svg | 0 .../icons/solid/external-link-square.svg | 0 .../static/icons/solid/external-link.svg | 0 .../static/icons/solid/eye-dropper.svg | 0 .../static/icons/solid/eye-evil.svg | 0 .../static/icons/solid/eye-slash.svg | 0 .../src => src}/static/icons/solid/eye.svg | 0 .../static/icons/solid/fan-table.svg | 0 .../src => src}/static/icons/solid/fan.svg | 0 .../src => src}/static/icons/solid/farm.svg | 0 .../static/icons/solid/fast-backward.svg | 0 .../static/icons/solid/fast-forward.svg | 0 .../static/icons/solid/faucet-drip.svg | 0 .../src => src}/static/icons/solid/faucet.svg | 0 .../src => src}/static/icons/solid/fax.svg | 0 .../static/icons/solid/feather-alt.svg | 0 .../static/icons/solid/feather.svg | 0 .../src => src}/static/icons/solid/female.svg | 0 .../static/icons/solid/field-hockey.svg | 0 .../static/icons/solid/fighter-jet.svg | 0 .../static/icons/solid/file-alt.svg | 0 .../static/icons/solid/file-archive.svg | 0 .../static/icons/solid/file-audio.svg | 0 .../static/icons/solid/file-certificate.svg | 0 .../static/icons/solid/file-chart-line.svg | 0 .../static/icons/solid/file-chart-pie.svg | 0 .../static/icons/solid/file-check.svg | 0 .../static/icons/solid/file-code.svg | 0 .../static/icons/solid/file-contract.svg | 0 .../static/icons/solid/file-csv.svg | 0 .../static/icons/solid/file-download.svg | 0 .../static/icons/solid/file-edit.svg | 0 .../static/icons/solid/file-excel.svg | 0 .../static/icons/solid/file-exclamation.svg | 0 .../static/icons/solid/file-export.svg | 0 .../static/icons/solid/file-image.svg | 0 .../static/icons/solid/file-import.svg | 0 .../icons/solid/file-invoice-dollar.svg | 0 .../static/icons/solid/file-invoice.svg | 0 .../static/icons/solid/file-medical-alt.svg | 0 .../static/icons/solid/file-medical.svg | 0 .../static/icons/solid/file-minus.svg | 0 .../static/icons/solid/file-music.svg | 0 .../static/icons/solid/file-pdf.svg | 0 .../static/icons/solid/file-plus.svg | 0 .../static/icons/solid/file-powerpoint.svg | 0 .../static/icons/solid/file-prescription.svg | 0 .../static/icons/solid/file-search.svg | 0 .../static/icons/solid/file-signature.svg | 0 .../static/icons/solid/file-spreadsheet.svg | 0 .../static/icons/solid/file-times.svg | 0 .../static/icons/solid/file-upload.svg | 0 .../static/icons/solid/file-user.svg | 0 .../static/icons/solid/file-video.svg | 0 .../static/icons/solid/file-word.svg | 0 .../src => src}/static/icons/solid/file.svg | 0 .../static/icons/solid/files-medical.svg | 0 .../static/icons/solid/fill-drip.svg | 0 .../src => src}/static/icons/solid/fill.svg | 0 .../static/icons/solid/film-alt.svg | 0 .../static/icons/solid/film-canister.svg | 0 .../src => src}/static/icons/solid/film.svg | 0 .../src => src}/static/icons/solid/filter.svg | 0 .../static/icons/solid/fingerprint.svg | 0 .../static/icons/solid/fire-alt.svg | 0 .../static/icons/solid/fire-extinguisher.svg | 0 .../static/icons/solid/fire-smoke.svg | 0 .../src => src}/static/icons/solid/fire.svg | 0 .../static/icons/solid/fireplace.svg | 0 .../static/icons/solid/first-aid.svg | 0 .../static/icons/solid/fish-cooked.svg | 0 .../src => src}/static/icons/solid/fish.svg | 0 .../static/icons/solid/fist-raised.svg | 0 .../static/icons/solid/flag-alt.svg | 0 .../static/icons/solid/flag-checkered.svg | 0 .../static/icons/solid/flag-usa.svg | 0 .../src => src}/static/icons/solid/flag.svg | 0 .../src => src}/static/icons/solid/flame.svg | 0 .../static/icons/solid/flashlight.svg | 0 .../static/icons/solid/flask-poison.svg | 0 .../static/icons/solid/flask-potion.svg | 0 .../src => src}/static/icons/solid/flask.svg | 0 .../static/icons/solid/flower-daffodil.svg | 0 .../static/icons/solid/flower-tulip.svg | 0 .../src => src}/static/icons/solid/flower.svg | 0 .../static/icons/solid/flushed.svg | 0 .../src => src}/static/icons/solid/flute.svg | 0 .../static/icons/solid/flux-capacitor.svg | 0 .../src => src}/static/icons/solid/fog.svg | 0 .../static/icons/solid/folder-minus.svg | 0 .../static/icons/solid/folder-open.svg | 0 .../static/icons/solid/folder-plus.svg | 0 .../static/icons/solid/folder-times.svg | 0 .../static/icons/solid/folder-tree.svg | 0 .../src => src}/static/icons/solid/folder.svg | 0 .../static/icons/solid/folders.svg | 0 .../icons/solid/font-awesome-logo-full.svg | 0 .../static/icons/solid/font-case.svg | 0 .../src => src}/static/icons/solid/font.svg | 0 .../static/icons/solid/football-ball.svg | 0 .../static/icons/solid/football-helmet.svg | 0 .../static/icons/solid/forklift.svg | 0 .../static/icons/solid/forward.svg | 0 .../static/icons/solid/fragile.svg | 0 .../static/icons/solid/french-fries.svg | 0 .../src => src}/static/icons/solid/frog.svg | 0 .../static/icons/solid/frosty-head.svg | 0 .../static/icons/solid/frown-open.svg | 0 .../src => src}/static/icons/solid/frown.svg | 0 .../static/icons/solid/function.svg | 0 .../static/icons/solid/funnel-dollar.svg | 0 .../src => src}/static/icons/solid/futbol.svg | 0 .../src => src}/static/icons/solid/galaxy.svg | 0 .../static/icons/solid/game-board-alt.svg | 0 .../static/icons/solid/game-board.svg | 0 .../icons/solid/game-console-handheld.svg | 0 .../static/icons/solid/gamepad-alt.svg | 0 .../static/icons/solid/gamepad.svg | 0 .../static/icons/solid/garage-car.svg | 0 .../static/icons/solid/garage-open.svg | 0 .../src => src}/static/icons/solid/garage.svg | 0 .../static/icons/solid/gas-pump-slash.svg | 0 .../static/icons/solid/gas-pump.svg | 0 .../src => src}/static/icons/solid/gavel.svg | 0 .../src => src}/static/icons/solid/gem.svg | 0 .../static/icons/solid/genderless.svg | 0 .../src => src}/static/icons/solid/ghost.svg | 0 .../static/icons/solid/gift-card.svg | 0 .../src => src}/static/icons/solid/gift.svg | 0 .../src => src}/static/icons/solid/gifts.svg | 0 .../static/icons/solid/gingerbread-man.svg | 0 .../static/icons/solid/glass-champagne.svg | 0 .../static/icons/solid/glass-cheers.svg | 0 .../static/icons/solid/glass-citrus.svg | 0 .../static/icons/solid/glass-martini-alt.svg | 0 .../static/icons/solid/glass-martini.svg | 0 .../icons/solid/glass-whiskey-rocks.svg | 0 .../static/icons/solid/glass-whiskey.svg | 0 .../src => src}/static/icons/solid/glass.svg | 0 .../static/icons/solid/glasses-alt.svg | 0 .../static/icons/solid/glasses.svg | 0 .../static/icons/solid/globe-africa.svg | 0 .../static/icons/solid/globe-americas.svg | 0 .../static/icons/solid/globe-asia.svg | 0 .../static/icons/solid/globe-europe.svg | 0 .../static/icons/solid/globe-snow.svg | 0 .../static/icons/solid/globe-stand.svg | 0 .../src => src}/static/icons/solid/globe.svg | 0 .../static/icons/solid/golf-ball.svg | 0 .../static/icons/solid/golf-club.svg | 0 .../static/icons/solid/gopuram.svg | 0 .../static/icons/solid/graduation-cap.svg | 0 .../static/icons/solid/gramophone.svg | 0 .../static/icons/solid/greater-than-equal.svg | 0 .../static/icons/solid/greater-than.svg | 0 .../static/icons/solid/grimace.svg | 0 .../static/icons/solid/grin-alt.svg | 0 .../static/icons/solid/grin-beam-sweat.svg | 0 .../static/icons/solid/grin-beam.svg | 0 .../static/icons/solid/grin-hearts.svg | 0 .../static/icons/solid/grin-squint-tears.svg | 0 .../static/icons/solid/grin-squint.svg | 0 .../static/icons/solid/grin-stars.svg | 0 .../static/icons/solid/grin-tears.svg | 0 .../static/icons/solid/grin-tongue-squint.svg | 0 .../static/icons/solid/grin-tongue-wink.svg | 0 .../static/icons/solid/grin-tongue.svg | 0 .../static/icons/solid/grin-wink.svg | 0 .../src => src}/static/icons/solid/grin.svg | 0 .../static/icons/solid/grip-horizontal.svg | 0 .../icons/solid/grip-lines-vertical.svg | 0 .../static/icons/solid/grip-lines.svg | 0 .../static/icons/solid/grip-vertical.svg | 0 .../static/icons/solid/guitar-electric.svg | 0 .../src => src}/static/icons/solid/guitar.svg | 0 .../static/icons/solid/guitars.svg | 0 .../static/icons/solid/h-square.svg | 0 {client/src => src}/static/icons/solid/h1.svg | 0 {client/src => src}/static/icons/solid/h2.svg | 0 {client/src => src}/static/icons/solid/h3.svg | 0 {client/src => src}/static/icons/solid/h4.svg | 0 .../static/icons/solid/hamburger.svg | 0 .../static/icons/solid/hammer-war.svg | 0 .../src => src}/static/icons/solid/hammer.svg | 0 .../src => src}/static/icons/solid/hamsa.svg | 0 .../static/icons/solid/hand-heart.svg | 0 .../static/icons/solid/hand-holding-box.svg | 0 .../static/icons/solid/hand-holding-heart.svg | 0 .../static/icons/solid/hand-holding-magic.svg | 0 .../icons/solid/hand-holding-seedling.svg | 0 .../static/icons/solid/hand-holding-usd.svg | 0 .../static/icons/solid/hand-holding-water.svg | 0 .../static/icons/solid/hand-holding.svg | 0 .../static/icons/solid/hand-lizard.svg | 0 .../static/icons/solid/hand-middle-finger.svg | 0 .../static/icons/solid/hand-paper.svg | 0 .../static/icons/solid/hand-peace.svg | 0 .../static/icons/solid/hand-point-down.svg | 0 .../static/icons/solid/hand-point-left.svg | 0 .../static/icons/solid/hand-point-right.svg | 0 .../static/icons/solid/hand-point-up.svg | 0 .../static/icons/solid/hand-pointer.svg | 0 .../static/icons/solid/hand-receiving.svg | 0 .../static/icons/solid/hand-rock.svg | 0 .../static/icons/solid/hand-scissors.svg | 0 .../static/icons/solid/hand-spock.svg | 0 .../static/icons/solid/hands-heart.svg | 0 .../static/icons/solid/hands-helping.svg | 0 .../static/icons/solid/hands-usd.svg | 0 .../src => src}/static/icons/solid/hands.svg | 0 .../static/icons/solid/handshake-alt.svg | 0 .../static/icons/solid/handshake.svg | 0 .../static/icons/solid/hanukiah.svg | 0 .../static/icons/solid/hard-hat.svg | 0 .../static/icons/solid/hashtag.svg | 0 .../static/icons/solid/hat-chef.svg | 0 .../static/icons/solid/hat-cowboy-side.svg | 0 .../static/icons/solid/hat-cowboy.svg | 0 .../static/icons/solid/hat-santa.svg | 0 .../static/icons/solid/hat-winter.svg | 0 .../static/icons/solid/hat-witch.svg | 0 .../static/icons/solid/hat-wizard.svg | 0 .../src => src}/static/icons/solid/hdd.svg | 0 .../static/icons/solid/head-side-brain.svg | 0 .../icons/solid/head-side-headphones.svg | 0 .../static/icons/solid/head-side-medical.svg | 0 .../static/icons/solid/head-side.svg | 0 .../static/icons/solid/head-vr.svg | 0 .../static/icons/solid/heading.svg | 0 .../static/icons/solid/headphones-alt.svg | 0 .../static/icons/solid/headphones.svg | 0 .../static/icons/solid/headset.svg | 0 .../static/icons/solid/heart-broken.svg | 0 .../static/icons/solid/heart-circle.svg | 0 .../static/icons/solid/heart-rate.svg | 0 .../static/icons/solid/heart-square.svg | 0 .../src => src}/static/icons/solid/heart.svg | 0 .../static/icons/solid/heartbeat.svg | 0 .../src => src}/static/icons/solid/heat.svg | 0 .../static/icons/solid/helicopter.svg | 0 .../static/icons/solid/helmet-battle.svg | 0 .../static/icons/solid/hexagon.svg | 0 .../static/icons/solid/highlighter.svg | 0 .../src => src}/static/icons/solid/hiking.svg | 0 .../src => src}/static/icons/solid/hippo.svg | 0 .../static/icons/solid/history.svg | 0 .../static/icons/solid/hockey-mask.svg | 0 .../static/icons/solid/hockey-puck.svg | 0 .../static/icons/solid/hockey-sticks.svg | 0 .../static/icons/solid/holly-berry.svg | 0 .../static/icons/solid/home-alt.svg | 0 .../static/icons/solid/home-heart.svg | 0 .../static/icons/solid/home-lg-alt.svg | 0 .../static/icons/solid/home-lg.svg | 0 .../src => src}/static/icons/solid/home.svg | 0 .../static/icons/solid/hood-cloak.svg | 0 .../static/icons/solid/horizontal-rule.svg | 0 .../static/icons/solid/horse-head.svg | 0 .../static/icons/solid/horse-saddle.svg | 0 .../src => src}/static/icons/solid/horse.svg | 0 .../static/icons/solid/hospital-alt.svg | 0 .../static/icons/solid/hospital-symbol.svg | 0 .../static/icons/solid/hospital-user.svg | 0 .../static/icons/solid/hospital.svg | 0 .../static/icons/solid/hospitals.svg | 0 .../static/icons/solid/hot-tub.svg | 0 .../src => src}/static/icons/solid/hotdog.svg | 0 .../src => src}/static/icons/solid/hotel.svg | 0 .../static/icons/solid/hourglass-end.svg | 0 .../static/icons/solid/hourglass-half.svg | 0 .../static/icons/solid/hourglass-start.svg | 0 .../static/icons/solid/hourglass.svg | 0 .../static/icons/solid/house-damage.svg | 0 .../static/icons/solid/house-day.svg | 0 .../static/icons/solid/house-flood.svg | 0 .../static/icons/solid/house-leave.svg | 0 .../static/icons/solid/house-night.svg | 0 .../static/icons/solid/house-return.svg | 0 .../static/icons/solid/house-signal.svg | 0 .../src => src}/static/icons/solid/house.svg | 0 .../static/icons/solid/hryvnia.svg | 0 .../static/icons/solid/humidity.svg | 0 .../static/icons/solid/hurricane.svg | 0 .../static/icons/solid/i-cursor.svg | 0 .../static/icons/solid/ice-cream.svg | 0 .../static/icons/solid/ice-skate.svg | 0 .../static/icons/solid/icicles.svg | 0 .../static/icons/solid/icons-alt.svg | 0 .../src => src}/static/icons/solid/icons.svg | 0 .../static/icons/solid/id-badge.svg | 0 .../static/icons/solid/id-card-alt.svg | 0 .../static/icons/solid/id-card.svg | 0 .../src => src}/static/icons/solid/igloo.svg | 0 .../static/icons/solid/image-polaroid.svg | 0 .../src => src}/static/icons/solid/image.svg | 0 .../src => src}/static/icons/solid/images.svg | 0 .../static/icons/solid/inbox-in.svg | 0 .../static/icons/solid/inbox-out.svg | 0 .../src => src}/static/icons/solid/inbox.svg | 0 .../src => src}/static/icons/solid/indent.svg | 0 .../static/icons/solid/industry-alt.svg | 0 .../static/icons/solid/industry.svg | 0 .../static/icons/solid/infinity.svg | 0 .../static/icons/solid/info-circle.svg | 0 .../static/icons/solid/info-square.svg | 0 .../src => src}/static/icons/solid/info.svg | 0 .../static/icons/solid/inhaler.svg | 0 .../static/icons/solid/integral.svg | 0 .../static/icons/solid/intersection.svg | 0 .../static/icons/solid/inventory.svg | 0 .../static/icons/solid/island-tropical.svg | 0 .../src => src}/static/icons/solid/italic.svg | 0 .../static/icons/solid/jack-o-lantern.svg | 0 .../src => src}/static/icons/solid/jedi.svg | 0 .../src => src}/static/icons/solid/joint.svg | 0 .../static/icons/solid/journal-whills.svg | 0 .../static/icons/solid/joystick.svg | 0 .../src => src}/static/icons/solid/jug.svg | 0 .../src => src}/static/icons/solid/kaaba.svg | 0 .../src => src}/static/icons/solid/kazoo.svg | 0 .../static/icons/solid/kerning.svg | 0 .../static/icons/solid/key-skeleton.svg | 0 .../src => src}/static/icons/solid/key.svg | 0 .../static/icons/solid/keyboard.svg | 0 .../static/icons/solid/keynote.svg | 0 .../src => src}/static/icons/solid/khanda.svg | 0 .../static/icons/solid/kidneys.svg | 0 .../static/icons/solid/kiss-beam.svg | 0 .../static/icons/solid/kiss-wink-heart.svg | 0 .../src => src}/static/icons/solid/kiss.svg | 0 .../src => src}/static/icons/solid/kite.svg | 0 .../static/icons/solid/kiwi-bird.svg | 0 .../static/icons/solid/knife-kitchen.svg | 0 .../src => src}/static/icons/solid/lambda.svg | 0 .../static/icons/solid/lamp-desk.svg | 0 .../static/icons/solid/lamp-floor.svg | 0 .../src => src}/static/icons/solid/lamp.svg | 0 .../static/icons/solid/landmark-alt.svg | 0 .../static/icons/solid/landmark.svg | 0 .../static/icons/solid/language.svg | 0 .../static/icons/solid/laptop-code.svg | 0 .../static/icons/solid/laptop-medical.svg | 0 .../src => src}/static/icons/solid/laptop.svg | 0 .../src => src}/static/icons/solid/lasso.svg | 0 .../static/icons/solid/laugh-beam.svg | 0 .../static/icons/solid/laugh-squint.svg | 0 .../static/icons/solid/laugh-wink.svg | 0 .../src => src}/static/icons/solid/laugh.svg | 0 .../static/icons/solid/layer-group.svg | 0 .../static/icons/solid/layer-minus.svg | 0 .../static/icons/solid/layer-plus.svg | 0 .../static/icons/solid/leaf-heart.svg | 0 .../static/icons/solid/leaf-maple.svg | 0 .../static/icons/solid/leaf-oak.svg | 0 .../src => src}/static/icons/solid/leaf.svg | 0 .../src => src}/static/icons/solid/lemon.svg | 0 .../static/icons/solid/less-than-equal.svg | 0 .../static/icons/solid/less-than.svg | 0 .../static/icons/solid/level-down-alt.svg | 0 .../static/icons/solid/level-down.svg | 0 .../static/icons/solid/level-up-alt.svg | 0 .../static/icons/solid/level-up.svg | 0 .../static/icons/solid/life-ring.svg | 0 .../static/icons/solid/light-ceiling.svg | 0 .../static/icons/solid/light-switch-off.svg | 0 .../static/icons/solid/light-switch-on.svg | 0 .../static/icons/solid/light-switch.svg | 0 .../static/icons/solid/lightbulb-dollar.svg | 0 .../icons/solid/lightbulb-exclamation.svg | 0 .../static/icons/solid/lightbulb-on.svg | 0 .../static/icons/solid/lightbulb-slash.svg | 0 .../static/icons/solid/lightbulb.svg | 0 .../static/icons/solid/lights-holiday.svg | 0 .../static/icons/solid/line-columns.svg | 0 .../static/icons/solid/line-height.svg | 0 .../src => src}/static/icons/solid/link.svg | 0 .../src => src}/static/icons/solid/lips.svg | 0 .../static/icons/solid/lira-sign.svg | 0 .../static/icons/solid/list-alt.svg | 0 .../static/icons/solid/list-music.svg | 0 .../static/icons/solid/list-ol.svg | 0 .../static/icons/solid/list-ul.svg | 0 .../src => src}/static/icons/solid/list.svg | 0 .../static/icons/solid/location-arrow.svg | 0 .../static/icons/solid/location-circle.svg | 0 .../static/icons/solid/location-slash.svg | 0 .../static/icons/solid/location.svg | 0 .../static/icons/solid/lock-alt.svg | 0 .../static/icons/solid/lock-open-alt.svg | 0 .../static/icons/solid/lock-open.svg | 0 .../src => src}/static/icons/solid/lock.svg | 0 .../icons/solid/long-arrow-alt-down.svg | 0 .../icons/solid/long-arrow-alt-left.svg | 0 .../icons/solid/long-arrow-alt-right.svg | 0 .../static/icons/solid/long-arrow-alt-up.svg | 0 .../static/icons/solid/long-arrow-down.svg | 0 .../static/icons/solid/long-arrow-left.svg | 0 .../static/icons/solid/long-arrow-right.svg | 0 .../static/icons/solid/long-arrow-up.svg | 0 .../static/icons/solid/loveseat.svg | 0 .../static/icons/solid/low-vision.svg | 0 .../static/icons/solid/luchador.svg | 0 .../static/icons/solid/luggage-cart.svg | 0 .../src => src}/static/icons/solid/lungs.svg | 0 .../src => src}/static/icons/solid/mace.svg | 0 .../src => src}/static/icons/solid/magic.svg | 0 .../src => src}/static/icons/solid/magnet.svg | 0 .../static/icons/solid/mail-bulk.svg | 0 .../static/icons/solid/mailbox.svg | 0 .../src => src}/static/icons/solid/male.svg | 0 .../static/icons/solid/mandolin.svg | 0 .../static/icons/solid/map-marked-alt.svg | 0 .../static/icons/solid/map-marked.svg | 0 .../icons/solid/map-marker-alt-slash.svg | 0 .../static/icons/solid/map-marker-alt.svg | 0 .../static/icons/solid/map-marker-check.svg | 0 .../static/icons/solid/map-marker-edit.svg | 0 .../icons/solid/map-marker-exclamation.svg | 0 .../static/icons/solid/map-marker-minus.svg | 0 .../static/icons/solid/map-marker-plus.svg | 0 .../icons/solid/map-marker-question.svg | 0 .../static/icons/solid/map-marker-slash.svg | 0 .../static/icons/solid/map-marker-smile.svg | 0 .../static/icons/solid/map-marker-times.svg | 0 .../static/icons/solid/map-marker.svg | 0 .../static/icons/solid/map-pin.svg | 0 .../static/icons/solid/map-signs.svg | 0 .../src => src}/static/icons/solid/map.svg | 0 .../src => src}/static/icons/solid/marker.svg | 0 .../static/icons/solid/mars-double.svg | 0 .../static/icons/solid/mars-stroke-h.svg | 0 .../static/icons/solid/mars-stroke-v.svg | 0 .../static/icons/solid/mars-stroke.svg | 0 .../src => src}/static/icons/solid/mars.svg | 0 .../src => src}/static/icons/solid/mask.svg | 0 .../src => src}/static/icons/solid/meat.svg | 0 .../src => src}/static/icons/solid/medal.svg | 0 .../src => src}/static/icons/solid/medkit.svg | 0 .../static/icons/solid/megaphone.svg | 0 .../static/icons/solid/meh-blank.svg | 0 .../static/icons/solid/meh-rolling-eyes.svg | 0 .../src => src}/static/icons/solid/meh.svg | 0 .../src => src}/static/icons/solid/memory.svg | 0 .../static/icons/solid/menorah.svg | 0 .../static/icons/solid/mercury.svg | 0 .../src => src}/static/icons/solid/meteor.svg | 0 .../static/icons/solid/microchip.svg | 0 .../icons/solid/microphone-alt-slash.svg | 0 .../static/icons/solid/microphone-alt.svg | 0 .../static/icons/solid/microphone-slash.svg | 0 .../static/icons/solid/microphone-stand.svg | 0 .../static/icons/solid/microphone.svg | 0 .../static/icons/solid/microscope.svg | 0 .../static/icons/solid/microwave.svg | 0 .../static/icons/solid/mind-share.svg | 0 .../static/icons/solid/minus-circle.svg | 0 .../static/icons/solid/minus-hexagon.svg | 0 .../static/icons/solid/minus-octagon.svg | 0 .../static/icons/solid/minus-square.svg | 0 .../src => src}/static/icons/solid/minus.svg | 0 .../static/icons/solid/mistletoe.svg | 0 .../src => src}/static/icons/solid/mitten.svg | 0 .../static/icons/solid/mobile-alt.svg | 0 .../static/icons/solid/mobile-android-alt.svg | 0 .../static/icons/solid/mobile-android.svg | 0 .../src => src}/static/icons/solid/mobile.svg | 0 .../static/icons/solid/money-bill-alt.svg | 0 .../icons/solid/money-bill-wave-alt.svg | 0 .../static/icons/solid/money-bill-wave.svg | 0 .../static/icons/solid/money-bill.svg | 0 .../static/icons/solid/money-check-alt.svg | 0 .../icons/solid/money-check-edit-alt.svg | 0 .../static/icons/solid/money-check-edit.svg | 0 .../static/icons/solid/money-check.svg | 0 .../static/icons/solid/monitor-heart-rate.svg | 0 .../src => src}/static/icons/solid/monkey.svg | 0 .../static/icons/solid/monument.svg | 0 .../static/icons/solid/moon-cloud.svg | 0 .../static/icons/solid/moon-stars.svg | 0 .../src => src}/static/icons/solid/moon.svg | 0 .../static/icons/solid/mortar-pestle.svg | 0 .../src => src}/static/icons/solid/mosque.svg | 0 .../static/icons/solid/motorcycle.svg | 0 .../static/icons/solid/mountain.svg | 0 .../static/icons/solid/mountains.svg | 0 .../static/icons/solid/mouse-alt.svg | 0 .../static/icons/solid/mouse-pointer.svg | 0 .../src => src}/static/icons/solid/mouse.svg | 0 .../static/icons/solid/mp3-player.svg | 0 .../static/icons/solid/mug-hot.svg | 0 .../static/icons/solid/mug-marshmallows.svg | 0 .../static/icons/solid/mug-tea.svg | 0 .../src => src}/static/icons/solid/mug.svg | 0 .../static/icons/solid/music-alt-slash.svg | 0 .../static/icons/solid/music-alt.svg | 0 .../static/icons/solid/music-slash.svg | 0 .../src => src}/static/icons/solid/music.svg | 0 .../static/icons/solid/narwhal.svg | 0 .../static/icons/solid/network-wired.svg | 0 .../src => src}/static/icons/solid/neuter.svg | 0 .../static/icons/solid/newspaper.svg | 0 .../static/icons/solid/not-equal.svg | 0 .../static/icons/solid/notes-medical.svg | 0 .../static/icons/solid/object-group.svg | 0 .../static/icons/solid/object-ungroup.svg | 0 .../static/icons/solid/octagon.svg | 0 .../static/icons/solid/oil-can.svg | 0 .../static/icons/solid/oil-temp.svg | 0 {client/src => src}/static/icons/solid/om.svg | 0 .../src => src}/static/icons/solid/omega.svg | 0 .../static/icons/solid/ornament.svg | 0 .../src => src}/static/icons/solid/otter.svg | 0 .../static/icons/solid/outdent.svg | 0 .../src => src}/static/icons/solid/outlet.svg | 0 .../src => src}/static/icons/solid/oven.svg | 0 .../static/icons/solid/overline.svg | 0 .../static/icons/solid/page-break.svg | 0 .../src => src}/static/icons/solid/pager.svg | 0 .../static/icons/solid/paint-brush-alt.svg | 0 .../static/icons/solid/paint-brush.svg | 0 .../static/icons/solid/paint-roller.svg | 0 .../static/icons/solid/palette.svg | 0 .../static/icons/solid/pallet-alt.svg | 0 .../src => src}/static/icons/solid/pallet.svg | 0 .../static/icons/solid/paper-plane.svg | 0 .../static/icons/solid/paperclip.svg | 0 .../static/icons/solid/parachute-box.svg | 0 .../static/icons/solid/paragraph-rtl.svg | 0 .../static/icons/solid/paragraph.svg | 0 .../icons/solid/parking-circle-slash.svg | 0 .../static/icons/solid/parking-circle.svg | 0 .../static/icons/solid/parking-slash.svg | 0 .../static/icons/solid/parking.svg | 0 .../static/icons/solid/passport.svg | 0 .../static/icons/solid/pastafarianism.svg | 0 .../src => src}/static/icons/solid/paste.svg | 0 .../static/icons/solid/pause-circle.svg | 0 .../src => src}/static/icons/solid/pause.svg | 0 .../static/icons/solid/paw-alt.svg | 0 .../static/icons/solid/paw-claws.svg | 0 .../src => src}/static/icons/solid/paw.svg | 0 .../src => src}/static/icons/solid/peace.svg | 0 .../static/icons/solid/pegasus.svg | 0 .../static/icons/solid/pen-alt.svg | 0 .../static/icons/solid/pen-fancy.svg | 0 .../static/icons/solid/pen-nib.svg | 0 .../static/icons/solid/pen-square.svg | 0 .../src => src}/static/icons/solid/pen.svg | 0 .../static/icons/solid/pencil-alt.svg | 0 .../static/icons/solid/pencil-paintbrush.svg | 0 .../static/icons/solid/pencil-ruler.svg | 0 .../src => src}/static/icons/solid/pencil.svg | 0 .../static/icons/solid/pennant.svg | 0 .../static/icons/solid/people-carry.svg | 0 .../static/icons/solid/pepper-hot.svg | 0 .../static/icons/solid/percent.svg | 0 .../static/icons/solid/percentage.svg | 0 .../static/icons/solid/person-booth.svg | 0 .../static/icons/solid/person-carry.svg | 0 .../static/icons/solid/person-dolly-empty.svg | 0 .../static/icons/solid/person-dolly.svg | 0 .../static/icons/solid/person-sign.svg | 0 .../static/icons/solid/phone-alt.svg | 0 .../static/icons/solid/phone-laptop.svg | 0 .../static/icons/solid/phone-office.svg | 0 .../static/icons/solid/phone-plus.svg | 0 .../static/icons/solid/phone-rotary.svg | 0 .../static/icons/solid/phone-slash.svg | 0 .../static/icons/solid/phone-square-alt.svg | 0 .../static/icons/solid/phone-square.svg | 0 .../static/icons/solid/phone-volume.svg | 0 .../src => src}/static/icons/solid/phone.svg | 0 .../static/icons/solid/photo-video.svg | 0 {client/src => src}/static/icons/solid/pi.svg | 0 .../static/icons/solid/piano-keyboard.svg | 0 .../src => src}/static/icons/solid/piano.svg | 0 .../src => src}/static/icons/solid/pie.svg | 0 .../src => src}/static/icons/solid/pig.svg | 0 .../static/icons/solid/piggy-bank.svg | 0 .../src => src}/static/icons/solid/pills.svg | 0 .../static/icons/solid/pizza-slice.svg | 0 .../src => src}/static/icons/solid/pizza.svg | 0 .../static/icons/solid/place-of-worship.svg | 0 .../static/icons/solid/plane-alt.svg | 0 .../static/icons/solid/plane-arrival.svg | 0 .../static/icons/solid/plane-departure.svg | 0 .../src => src}/static/icons/solid/plane.svg | 0 .../static/icons/solid/planet-moon.svg | 0 .../static/icons/solid/planet-ringed.svg | 0 .../static/icons/solid/play-circle.svg | 0 .../src => src}/static/icons/solid/play.svg | 0 .../src => src}/static/icons/solid/plug.svg | 0 .../static/icons/solid/plus-circle.svg | 0 .../static/icons/solid/plus-hexagon.svg | 0 .../static/icons/solid/plus-octagon.svg | 0 .../static/icons/solid/plus-square.svg | 0 .../src => src}/static/icons/solid/plus.svg | 0 .../static/icons/solid/podcast.svg | 0 .../static/icons/solid/podium-star.svg | 0 .../src => src}/static/icons/solid/podium.svg | 0 .../static/icons/solid/police-box.svg | 0 .../src => src}/static/icons/solid/poll-h.svg | 0 .../static/icons/solid/poll-people.svg | 0 .../src => src}/static/icons/solid/poll.svg | 0 .../static/icons/solid/poo-storm.svg | 0 .../src => src}/static/icons/solid/poo.svg | 0 .../src => src}/static/icons/solid/poop.svg | 0 .../static/icons/solid/popcorn.svg | 0 .../static/icons/solid/portal-enter.svg | 0 .../static/icons/solid/portal-exit.svg | 0 .../static/icons/solid/portrait.svg | 0 .../static/icons/solid/pound-sign.svg | 0 .../static/icons/solid/power-off.svg | 0 .../src => src}/static/icons/solid/pray.svg | 0 .../static/icons/solid/praying-hands.svg | 0 .../icons/solid/prescription-bottle-alt.svg | 0 .../icons/solid/prescription-bottle.svg | 0 .../static/icons/solid/prescription.svg | 0 .../static/icons/solid/presentation.svg | 0 .../static/icons/solid/print-search.svg | 0 .../static/icons/solid/print-slash.svg | 0 .../src => src}/static/icons/solid/print.svg | 0 .../static/icons/solid/procedures.svg | 0 .../static/icons/solid/project-diagram.svg | 0 .../static/icons/solid/projector.svg | 0 .../static/icons/solid/pumpkin.svg | 0 .../static/icons/solid/puzzle-piece.svg | 0 .../src => src}/static/icons/solid/qrcode.svg | 0 .../static/icons/solid/question-circle.svg | 0 .../static/icons/solid/question-square.svg | 0 .../static/icons/solid/question.svg | 0 .../static/icons/solid/quidditch.svg | 0 .../static/icons/solid/quote-left.svg | 0 .../static/icons/solid/quote-right.svg | 0 .../src => src}/static/icons/solid/quran.svg | 0 .../static/icons/solid/rabbit-fast.svg | 0 .../src => src}/static/icons/solid/rabbit.svg | 0 .../static/icons/solid/racquet.svg | 0 .../src => src}/static/icons/solid/radar.svg | 0 .../static/icons/solid/radiation-alt.svg | 0 .../static/icons/solid/radiation.svg | 0 .../static/icons/solid/radio-alt.svg | 0 .../src => src}/static/icons/solid/radio.svg | 0 .../static/icons/solid/rainbow.svg | 0 .../static/icons/solid/raindrops.svg | 0 .../src => src}/static/icons/solid/ram.svg | 0 .../static/icons/solid/ramp-loading.svg | 0 .../src => src}/static/icons/solid/random.svg | 0 .../src => src}/static/icons/solid/raygun.svg | 0 .../static/icons/solid/receipt.svg | 0 .../static/icons/solid/record-vinyl.svg | 0 .../icons/solid/rectangle-landscape.svg | 0 .../static/icons/solid/rectangle-portrait.svg | 0 .../static/icons/solid/rectangle-wide.svg | 0 .../static/icons/solid/recycle.svg | 0 .../static/icons/solid/redo-alt.svg | 0 .../src => src}/static/icons/solid/redo.svg | 0 .../static/icons/solid/refrigerator.svg | 0 .../static/icons/solid/registered.svg | 0 .../static/icons/solid/remove-format.svg | 0 .../static/icons/solid/repeat-1-alt.svg | 0 .../static/icons/solid/repeat-1.svg | 0 .../static/icons/solid/repeat-alt.svg | 0 .../src => src}/static/icons/solid/repeat.svg | 0 .../static/icons/solid/reply-all.svg | 0 .../src => src}/static/icons/solid/reply.svg | 0 .../static/icons/solid/republican.svg | 0 .../static/icons/solid/restroom.svg | 0 .../static/icons/solid/retweet-alt.svg | 0 .../static/icons/solid/retweet.svg | 0 .../src => src}/static/icons/solid/ribbon.svg | 0 .../src => src}/static/icons/solid/ring.svg | 0 .../static/icons/solid/rings-wedding.svg | 0 .../src => src}/static/icons/solid/road.svg | 0 .../src => src}/static/icons/solid/robot.svg | 0 .../static/icons/solid/rocket-launch.svg | 0 .../src => src}/static/icons/solid/rocket.svg | 0 .../static/icons/solid/route-highway.svg | 0 .../static/icons/solid/route-interstate.svg | 0 .../src => src}/static/icons/solid/route.svg | 0 .../src => src}/static/icons/solid/router.svg | 0 .../static/icons/solid/rss-square.svg | 0 .../src => src}/static/icons/solid/rss.svg | 0 .../static/icons/solid/ruble-sign.svg | 0 .../static/icons/solid/ruler-combined.svg | 0 .../static/icons/solid/ruler-horizontal.svg | 0 .../static/icons/solid/ruler-triangle.svg | 0 .../static/icons/solid/ruler-vertical.svg | 0 .../src => src}/static/icons/solid/ruler.svg | 0 .../static/icons/solid/running.svg | 0 .../static/icons/solid/rupee-sign.svg | 0 {client/src => src}/static/icons/solid/rv.svg | 0 .../static/icons/solid/sack-dollar.svg | 0 .../src => src}/static/icons/solid/sack.svg | 0 .../static/icons/solid/sad-cry.svg | 0 .../static/icons/solid/sad-tear.svg | 0 .../src => src}/static/icons/solid/salad.svg | 0 .../static/icons/solid/sandwich.svg | 0 .../static/icons/solid/satellite-dish.svg | 0 .../static/icons/solid/satellite.svg | 0 .../static/icons/solid/sausage.svg | 0 .../src => src}/static/icons/solid/save.svg | 0 .../static/icons/solid/sax-hot.svg | 0 .../static/icons/solid/saxophone.svg | 0 .../static/icons/solid/scalpel-path.svg | 0 .../static/icons/solid/scalpel.svg | 0 .../static/icons/solid/scanner-image.svg | 0 .../static/icons/solid/scanner-keyboard.svg | 0 .../icons/solid/scanner-touchscreen.svg | 0 .../static/icons/solid/scanner.svg | 0 .../static/icons/solid/scarecrow.svg | 0 .../src => src}/static/icons/solid/scarf.svg | 0 .../src => src}/static/icons/solid/school.svg | 0 .../static/icons/solid/screwdriver.svg | 0 .../static/icons/solid/scroll-old.svg | 0 .../src => src}/static/icons/solid/scroll.svg | 0 .../static/icons/solid/scrubber.svg | 0 .../src => src}/static/icons/solid/scythe.svg | 0 .../static/icons/solid/sd-card.svg | 0 .../static/icons/solid/search-dollar.svg | 0 .../static/icons/solid/search-location.svg | 0 .../static/icons/solid/search-minus.svg | 0 .../static/icons/solid/search-plus.svg | 0 .../src => src}/static/icons/solid/search.svg | 0 .../static/icons/solid/seedling.svg | 0 .../static/icons/solid/send-back.svg | 0 .../static/icons/solid/send-backward.svg | 0 .../static/icons/solid/sensor-alert.svg | 0 .../static/icons/solid/sensor-fire.svg | 0 .../static/icons/solid/sensor-on.svg | 0 .../static/icons/solid/sensor-smoke.svg | 0 .../src => src}/static/icons/solid/sensor.svg | 0 .../src => src}/static/icons/solid/server.svg | 0 .../src => src}/static/icons/solid/shapes.svg | 0 .../static/icons/solid/share-all.svg | 0 .../static/icons/solid/share-alt-square.svg | 0 .../static/icons/solid/share-alt.svg | 0 .../static/icons/solid/share-square.svg | 0 .../src => src}/static/icons/solid/share.svg | 0 .../src => src}/static/icons/solid/sheep.svg | 0 .../static/icons/solid/shekel-sign.svg | 0 .../static/icons/solid/shield-alt.svg | 0 .../static/icons/solid/shield-check.svg | 0 .../static/icons/solid/shield-cross.svg | 0 .../src => src}/static/icons/solid/shield.svg | 0 .../src => src}/static/icons/solid/ship.svg | 0 .../static/icons/solid/shipping-fast.svg | 0 .../static/icons/solid/shipping-timed.svg | 0 .../static/icons/solid/shish-kebab.svg | 0 .../static/icons/solid/shoe-prints.svg | 0 .../static/icons/solid/shopping-bag.svg | 0 .../static/icons/solid/shopping-basket.svg | 0 .../static/icons/solid/shopping-cart.svg | 0 .../static/icons/solid/shovel-snow.svg | 0 .../src => src}/static/icons/solid/shovel.svg | 0 .../src => src}/static/icons/solid/shower.svg | 0 .../static/icons/solid/shredder.svg | 0 .../static/icons/solid/shuttle-van.svg | 0 .../static/icons/solid/shuttlecock.svg | 0 .../src => src}/static/icons/solid/sickle.svg | 0 .../src => src}/static/icons/solid/sigma.svg | 0 .../static/icons/solid/sign-in-alt.svg | 0 .../static/icons/solid/sign-in.svg | 0 .../static/icons/solid/sign-language.svg | 0 .../static/icons/solid/sign-out-alt.svg | 0 .../static/icons/solid/sign-out.svg | 0 .../src => src}/static/icons/solid/sign.svg | 0 .../static/icons/solid/signal-1.svg | 0 .../static/icons/solid/signal-2.svg | 0 .../static/icons/solid/signal-3.svg | 0 .../static/icons/solid/signal-4.svg | 0 .../static/icons/solid/signal-alt-1.svg | 0 .../static/icons/solid/signal-alt-2.svg | 0 .../static/icons/solid/signal-alt-3.svg | 0 .../static/icons/solid/signal-alt-slash.svg | 0 .../static/icons/solid/signal-alt.svg | 0 .../static/icons/solid/signal-slash.svg | 0 .../static/icons/solid/signal-stream.svg | 0 .../src => src}/static/icons/solid/signal.svg | 0 .../static/icons/solid/signature.svg | 0 .../static/icons/solid/sim-card.svg | 0 .../static/icons/solid/siren-on.svg | 0 .../src => src}/static/icons/solid/siren.svg | 0 .../static/icons/solid/sitemap.svg | 0 .../static/icons/solid/skating.svg | 0 .../static/icons/solid/skeleton.svg | 0 .../static/icons/solid/ski-jump.svg | 0 .../static/icons/solid/ski-lift.svg | 0 .../static/icons/solid/skiing-nordic.svg | 0 .../src => src}/static/icons/solid/skiing.svg | 0 .../static/icons/solid/skull-cow.svg | 0 .../static/icons/solid/skull-crossbones.svg | 0 .../src => src}/static/icons/solid/skull.svg | 0 .../src => src}/static/icons/solid/slash.svg | 0 .../static/icons/solid/sledding.svg | 0 .../src => src}/static/icons/solid/sleigh.svg | 0 .../static/icons/solid/sliders-h-square.svg | 0 .../static/icons/solid/sliders-h.svg | 0 .../static/icons/solid/sliders-v-square.svg | 0 .../static/icons/solid/sliders-v.svg | 0 .../static/icons/solid/smile-beam.svg | 0 .../static/icons/solid/smile-plus.svg | 0 .../static/icons/solid/smile-wink.svg | 0 .../src => src}/static/icons/solid/smile.svg | 0 .../src => src}/static/icons/solid/smog.svg | 0 .../src => src}/static/icons/solid/smoke.svg | 0 .../static/icons/solid/smoking-ban.svg | 0 .../static/icons/solid/smoking.svg | 0 .../src => src}/static/icons/solid/sms.svg | 0 .../src => src}/static/icons/solid/snake.svg | 0 .../src => src}/static/icons/solid/snooze.svg | 0 .../static/icons/solid/snow-blowing.svg | 0 .../static/icons/solid/snowboarding.svg | 0 .../static/icons/solid/snowflake.svg | 0 .../static/icons/solid/snowflakes.svg | 0 .../static/icons/solid/snowman.svg | 0 .../static/icons/solid/snowmobile.svg | 0 .../static/icons/solid/snowplow.svg | 0 .../src => src}/static/icons/solid/socks.svg | 0 .../static/icons/solid/solar-panel.svg | 0 .../static/icons/solid/solar-system.svg | 0 .../icons/solid/sort-alpha-down-alt.svg | 0 .../static/icons/solid/sort-alpha-down.svg | 0 .../static/icons/solid/sort-alpha-up-alt.svg | 0 .../static/icons/solid/sort-alpha-up.svg | 0 .../static/icons/solid/sort-alt.svg | 0 .../icons/solid/sort-amount-down-alt.svg | 0 .../static/icons/solid/sort-amount-down.svg | 0 .../static/icons/solid/sort-amount-up-alt.svg | 0 .../static/icons/solid/sort-amount-up.svg | 0 .../static/icons/solid/sort-circle-down.svg | 0 .../static/icons/solid/sort-circle-up.svg | 0 .../static/icons/solid/sort-circle.svg | 0 .../static/icons/solid/sort-down.svg | 0 .../icons/solid/sort-numeric-down-alt.svg | 0 .../static/icons/solid/sort-numeric-down.svg | 0 .../icons/solid/sort-numeric-up-alt.svg | 0 .../static/icons/solid/sort-numeric-up.svg | 0 .../icons/solid/sort-shapes-down-alt.svg | 0 .../static/icons/solid/sort-shapes-down.svg | 0 .../static/icons/solid/sort-shapes-up-alt.svg | 0 .../static/icons/solid/sort-shapes-up.svg | 0 .../static/icons/solid/sort-size-down-alt.svg | 0 .../static/icons/solid/sort-size-down.svg | 0 .../static/icons/solid/sort-size-up-alt.svg | 0 .../static/icons/solid/sort-size-up.svg | 0 .../static/icons/solid/sort-up.svg | 0 .../src => src}/static/icons/solid/sort.svg | 0 .../src => src}/static/icons/solid/soup.svg | 0 .../src => src}/static/icons/solid/spa.svg | 0 .../static/icons/solid/space-shuttle.svg | 0 .../icons/solid/space-station-moon-alt.svg | 0 .../static/icons/solid/space-station-moon.svg | 0 .../src => src}/static/icons/solid/spade.svg | 0 .../static/icons/solid/sparkles.svg | 0 .../static/icons/solid/speaker.svg | 0 .../static/icons/solid/speakers.svg | 0 .../static/icons/solid/spell-check.svg | 0 .../static/icons/solid/spider-black-widow.svg | 0 .../static/icons/solid/spider-web.svg | 0 .../src => src}/static/icons/solid/spider.svg | 0 .../static/icons/solid/spinner-third.svg | 0 .../static/icons/solid/spinner.svg | 0 .../static/icons/solid/splotch.svg | 0 .../static/icons/solid/spray-can.svg | 0 .../static/icons/solid/sprinkler.svg | 0 .../static/icons/solid/square-full.svg | 0 .../static/icons/solid/square-root-alt.svg | 0 .../static/icons/solid/square-root.svg | 0 .../src => src}/static/icons/solid/square.svg | 0 .../static/icons/solid/squirrel.svg | 0 .../src => src}/static/icons/solid/staff.svg | 0 .../src => src}/static/icons/solid/stamp.svg | 0 .../static/icons/solid/star-and-crescent.svg | 0 .../static/icons/solid/star-christmas.svg | 0 .../static/icons/solid/star-exclamation.svg | 0 .../static/icons/solid/star-half-alt.svg | 0 .../static/icons/solid/star-half.svg | 0 .../static/icons/solid/star-of-david.svg | 0 .../static/icons/solid/star-of-life.svg | 0 .../static/icons/solid/star-shooting.svg | 0 .../src => src}/static/icons/solid/star.svg | 0 .../static/icons/solid/starfighter-alt.svg | 0 .../static/icons/solid/starfighter.svg | 0 .../src => src}/static/icons/solid/stars.svg | 0 .../static/icons/solid/starship-freighter.svg | 0 .../static/icons/solid/starship.svg | 0 .../src => src}/static/icons/solid/steak.svg | 0 .../static/icons/solid/steering-wheel.svg | 0 .../static/icons/solid/step-backward.svg | 0 .../static/icons/solid/step-forward.svg | 0 .../static/icons/solid/stethoscope.svg | 0 .../static/icons/solid/sticky-note.svg | 0 .../static/icons/solid/stocking.svg | 0 .../static/icons/solid/stomach.svg | 0 .../static/icons/solid/stop-circle.svg | 0 .../src => src}/static/icons/solid/stop.svg | 0 .../static/icons/solid/stopwatch.svg | 0 .../static/icons/solid/store-alt.svg | 0 .../src => src}/static/icons/solid/store.svg | 0 .../src => src}/static/icons/solid/stream.svg | 0 .../static/icons/solid/street-view.svg | 0 .../static/icons/solid/stretcher.svg | 0 .../static/icons/solid/strikethrough.svg | 0 .../static/icons/solid/stroopwafel.svg | 0 .../static/icons/solid/subscript.svg | 0 .../src => src}/static/icons/solid/subway.svg | 0 .../static/icons/solid/suitcase-rolling.svg | 0 .../static/icons/solid/suitcase.svg | 0 .../static/icons/solid/sun-cloud.svg | 0 .../static/icons/solid/sun-dust.svg | 0 .../static/icons/solid/sun-haze.svg | 0 .../src => src}/static/icons/solid/sun.svg | 0 .../static/icons/solid/sunglasses.svg | 0 .../static/icons/solid/sunrise.svg | 0 .../src => src}/static/icons/solid/sunset.svg | 0 .../static/icons/solid/superscript.svg | 0 .../static/icons/solid/surprise.svg | 0 .../static/icons/solid/swatchbook.svg | 0 .../static/icons/solid/swimmer.svg | 0 .../static/icons/solid/swimming-pool.svg | 0 .../static/icons/solid/sword-laser-alt.svg | 0 .../static/icons/solid/sword-laser.svg | 0 .../src => src}/static/icons/solid/sword.svg | 0 .../static/icons/solid/swords-laser.svg | 0 .../src => src}/static/icons/solid/swords.svg | 0 .../static/icons/solid/synagogue.svg | 0 .../static/icons/solid/sync-alt.svg | 0 .../src => src}/static/icons/solid/sync.svg | 0 .../static/icons/solid/syringe.svg | 0 .../static/icons/solid/table-tennis.svg | 0 .../src => src}/static/icons/solid/table.svg | 0 .../static/icons/solid/tablet-alt.svg | 0 .../static/icons/solid/tablet-android-alt.svg | 0 .../static/icons/solid/tablet-android.svg | 0 .../static/icons/solid/tablet-rugged.svg | 0 .../src => src}/static/icons/solid/tablet.svg | 0 .../static/icons/solid/tablets.svg | 0 .../icons/solid/tachometer-alt-average.svg | 0 .../icons/solid/tachometer-alt-fast.svg | 0 .../icons/solid/tachometer-alt-fastest.svg | 0 .../icons/solid/tachometer-alt-slow.svg | 0 .../icons/solid/tachometer-alt-slowest.svg | 0 .../static/icons/solid/tachometer-alt.svg | 0 .../static/icons/solid/tachometer-average.svg | 0 .../static/icons/solid/tachometer-fast.svg | 0 .../static/icons/solid/tachometer-fastest.svg | 0 .../static/icons/solid/tachometer-slow.svg | 0 .../static/icons/solid/tachometer-slowest.svg | 0 .../static/icons/solid/tachometer.svg | 0 .../src => src}/static/icons/solid/taco.svg | 0 .../src => src}/static/icons/solid/tag.svg | 0 .../src => src}/static/icons/solid/tags.svg | 0 .../src => src}/static/icons/solid/tally.svg | 0 .../src => src}/static/icons/solid/tanakh.svg | 0 .../src => src}/static/icons/solid/tape.svg | 0 .../static/icons/solid/tasks-alt.svg | 0 .../src => src}/static/icons/solid/tasks.svg | 0 .../src => src}/static/icons/solid/taxi.svg | 0 .../static/icons/solid/teeth-open.svg | 0 .../src => src}/static/icons/solid/teeth.svg | 0 .../static/icons/solid/telescope.svg | 0 .../static/icons/solid/temperature-down.svg | 0 .../static/icons/solid/temperature-frigid.svg | 0 .../static/icons/solid/temperature-high.svg | 0 .../static/icons/solid/temperature-hot.svg | 0 .../static/icons/solid/temperature-low.svg | 0 .../static/icons/solid/temperature-up.svg | 0 .../src => src}/static/icons/solid/tenge.svg | 0 .../static/icons/solid/tennis-ball.svg | 0 .../static/icons/solid/terminal.svg | 0 .../static/icons/solid/text-height.svg | 0 .../static/icons/solid/text-size.svg | 0 .../static/icons/solid/text-width.svg | 0 .../src => src}/static/icons/solid/text.svg | 0 .../static/icons/solid/th-large.svg | 0 .../static/icons/solid/th-list.svg | 0 {client/src => src}/static/icons/solid/th.svg | 0 .../static/icons/solid/theater-masks.svg | 0 .../static/icons/solid/thermometer-empty.svg | 0 .../static/icons/solid/thermometer-full.svg | 0 .../static/icons/solid/thermometer-half.svg | 0 .../icons/solid/thermometer-quarter.svg | 0 .../solid/thermometer-three-quarters.svg | 0 .../static/icons/solid/thermometer.svg | 0 .../src => src}/static/icons/solid/theta.svg | 0 .../static/icons/solid/thumbs-down.svg | 0 .../static/icons/solid/thumbs-up.svg | 0 .../static/icons/solid/thumbtack.svg | 0 .../static/icons/solid/thunderstorm-moon.svg | 0 .../static/icons/solid/thunderstorm-sun.svg | 0 .../static/icons/solid/thunderstorm.svg | 0 .../static/icons/solid/ticket-alt.svg | 0 .../src => src}/static/icons/solid/ticket.svg | 0 .../src => src}/static/icons/solid/tilde.svg | 0 .../static/icons/solid/times-circle.svg | 0 .../static/icons/solid/times-hexagon.svg | 0 .../static/icons/solid/times-octagon.svg | 0 .../static/icons/solid/times-square.svg | 0 .../src => src}/static/icons/solid/times.svg | 0 .../static/icons/solid/tint-slash.svg | 0 .../src => src}/static/icons/solid/tint.svg | 0 .../static/icons/solid/tire-flat.svg | 0 .../icons/solid/tire-pressure-warning.svg | 0 .../static/icons/solid/tire-rugged.svg | 0 .../src => src}/static/icons/solid/tire.svg | 0 .../src => src}/static/icons/solid/tired.svg | 0 .../static/icons/solid/toggle-off.svg | 0 .../static/icons/solid/toggle-on.svg | 0 .../static/icons/solid/toilet-paper-alt.svg | 0 .../static/icons/solid/toilet-paper.svg | 0 .../src => src}/static/icons/solid/toilet.svg | 0 .../static/icons/solid/tombstone-alt.svg | 0 .../static/icons/solid/tombstone.svg | 0 .../static/icons/solid/toolbox.svg | 0 .../src => src}/static/icons/solid/tools.svg | 0 .../src => src}/static/icons/solid/tooth.svg | 0 .../static/icons/solid/toothbrush.svg | 0 .../src => src}/static/icons/solid/torah.svg | 0 .../static/icons/solid/torii-gate.svg | 0 .../static/icons/solid/tornado.svg | 0 .../static/icons/solid/tractor.svg | 0 .../static/icons/solid/trademark.svg | 0 .../static/icons/solid/traffic-cone.svg | 0 .../static/icons/solid/traffic-light-go.svg | 0 .../static/icons/solid/traffic-light-slow.svg | 0 .../static/icons/solid/traffic-light-stop.svg | 0 .../static/icons/solid/traffic-light.svg | 0 .../static/icons/solid/trailer.svg | 0 .../src => src}/static/icons/solid/train.svg | 0 .../src => src}/static/icons/solid/tram.svg | 0 .../static/icons/solid/transgender-alt.svg | 0 .../static/icons/solid/transgender.svg | 0 .../static/icons/solid/transporter-1.svg | 0 .../static/icons/solid/transporter-2.svg | 0 .../static/icons/solid/transporter-3.svg | 0 .../static/icons/solid/transporter-empty.svg | 0 .../static/icons/solid/transporter.svg | 0 .../static/icons/solid/trash-alt.svg | 0 .../static/icons/solid/trash-restore-alt.svg | 0 .../static/icons/solid/trash-restore.svg | 0 .../static/icons/solid/trash-undo-alt.svg | 0 .../static/icons/solid/trash-undo.svg | 0 .../src => src}/static/icons/solid/trash.svg | 0 .../static/icons/solid/treasure-chest.svg | 0 .../static/icons/solid/tree-alt.svg | 0 .../static/icons/solid/tree-christmas.svg | 0 .../static/icons/solid/tree-decorated.svg | 0 .../static/icons/solid/tree-large.svg | 0 .../static/icons/solid/tree-palm.svg | 0 .../src => src}/static/icons/solid/tree.svg | 0 .../src => src}/static/icons/solid/trees.svg | 0 .../static/icons/solid/triangle-music.svg | 0 .../static/icons/solid/triangle.svg | 0 .../static/icons/solid/trophy-alt.svg | 0 .../src => src}/static/icons/solid/trophy.svg | 0 .../static/icons/solid/truck-container.svg | 0 .../static/icons/solid/truck-couch.svg | 0 .../static/icons/solid/truck-loading.svg | 0 .../static/icons/solid/truck-monster.svg | 0 .../static/icons/solid/truck-moving.svg | 0 .../static/icons/solid/truck-pickup.svg | 0 .../static/icons/solid/truck-plow.svg | 0 .../static/icons/solid/truck-ramp.svg | 0 .../src => src}/static/icons/solid/truck.svg | 0 .../static/icons/solid/trumpet.svg | 0 .../src => src}/static/icons/solid/tshirt.svg | 0 .../src => src}/static/icons/solid/tty.svg | 0 .../src => src}/static/icons/solid/turkey.svg | 0 .../static/icons/solid/turntable.svg | 0 .../src => src}/static/icons/solid/turtle.svg | 0 .../src => src}/static/icons/solid/tv-alt.svg | 0 .../static/icons/solid/tv-music.svg | 0 .../static/icons/solid/tv-retro.svg | 0 {client/src => src}/static/icons/solid/tv.svg | 0 .../static/icons/solid/typewriter.svg | 0 .../static/icons/solid/ufo-beam.svg | 0 .../src => src}/static/icons/solid/ufo.svg | 0 .../static/icons/solid/umbrella-beach.svg | 0 .../static/icons/solid/umbrella.svg | 0 .../static/icons/solid/underline.svg | 0 .../static/icons/solid/undo-alt.svg | 0 .../src => src}/static/icons/solid/undo.svg | 0 .../static/icons/solid/unicorn.svg | 0 .../src => src}/static/icons/solid/union.svg | 0 .../static/icons/solid/universal-access.svg | 0 .../static/icons/solid/university.svg | 0 .../src => src}/static/icons/solid/unlink.svg | 0 .../static/icons/solid/unlock-alt.svg | 0 .../src => src}/static/icons/solid/unlock.svg | 0 .../src => src}/static/icons/solid/upload.svg | 0 .../static/icons/solid/usb-drive.svg | 0 .../static/icons/solid/usd-circle.svg | 0 .../static/icons/solid/usd-square.svg | 0 .../static/icons/solid/user-alien.svg | 0 .../static/icons/solid/user-alt-slash.svg | 0 .../static/icons/solid/user-alt.svg | 0 .../static/icons/solid/user-astronaut.svg | 0 .../static/icons/solid/user-chart.svg | 0 .../static/icons/solid/user-check.svg | 0 .../static/icons/solid/user-circle.svg | 0 .../static/icons/solid/user-clock.svg | 0 .../static/icons/solid/user-cog.svg | 0 .../static/icons/solid/user-cowboy.svg | 0 .../static/icons/solid/user-crown.svg | 0 .../static/icons/solid/user-edit.svg | 0 .../static/icons/solid/user-friends.svg | 0 .../static/icons/solid/user-graduate.svg | 0 .../static/icons/solid/user-hard-hat.svg | 0 .../static/icons/solid/user-headset.svg | 0 .../static/icons/solid/user-injured.svg | 0 .../static/icons/solid/user-lock.svg | 0 .../static/icons/solid/user-md-chat.svg | 0 .../static/icons/solid/user-md.svg | 0 .../static/icons/solid/user-minus.svg | 0 .../static/icons/solid/user-music.svg | 0 .../static/icons/solid/user-ninja.svg | 0 .../static/icons/solid/user-nurse.svg | 0 .../static/icons/solid/user-plus.svg | 0 .../static/icons/solid/user-robot.svg | 0 .../static/icons/solid/user-secret.svg | 0 .../static/icons/solid/user-shield.svg | 0 .../static/icons/solid/user-slash.svg | 0 .../static/icons/solid/user-tag.svg | 0 .../static/icons/solid/user-tie.svg | 0 .../static/icons/solid/user-times.svg | 0 .../static/icons/solid/user-visor.svg | 0 .../src => src}/static/icons/solid/user.svg | 0 .../static/icons/solid/users-class.svg | 0 .../static/icons/solid/users-cog.svg | 0 .../static/icons/solid/users-crown.svg | 0 .../static/icons/solid/users-medical.svg | 0 .../src => src}/static/icons/solid/users.svg | 0 .../static/icons/solid/utensil-fork.svg | 0 .../static/icons/solid/utensil-knife.svg | 0 .../static/icons/solid/utensil-spoon.svg | 0 .../static/icons/solid/utensils-alt.svg | 0 .../static/icons/solid/utensils.svg | 0 .../static/icons/solid/vacuum-robot.svg | 0 .../src => src}/static/icons/solid/vacuum.svg | 0 .../static/icons/solid/value-absolute.svg | 0 .../static/icons/solid/vector-square.svg | 0 .../static/icons/solid/venus-double.svg | 0 .../static/icons/solid/venus-mars.svg | 0 .../src => src}/static/icons/solid/venus.svg | 0 .../src => src}/static/icons/solid/vhs.svg | 0 .../src => src}/static/icons/solid/vial.svg | 0 .../src => src}/static/icons/solid/vials.svg | 0 .../static/icons/solid/video-plus.svg | 0 .../static/icons/solid/video-slash.svg | 0 .../src => src}/static/icons/solid/video.svg | 0 .../src => src}/static/icons/solid/vihara.svg | 0 .../src => src}/static/icons/solid/violin.svg | 0 .../static/icons/solid/voicemail.svg | 0 .../static/icons/solid/volcano.svg | 0 .../static/icons/solid/volleyball-ball.svg | 0 .../static/icons/solid/volume-down.svg | 0 .../static/icons/solid/volume-mute.svg | 0 .../static/icons/solid/volume-off.svg | 0 .../static/icons/solid/volume-slash.svg | 0 .../static/icons/solid/volume-up.svg | 0 .../src => src}/static/icons/solid/volume.svg | 0 .../static/icons/solid/vote-nay.svg | 0 .../static/icons/solid/vote-yea.svg | 0 .../static/icons/solid/vr-cardboard.svg | 0 .../static/icons/solid/wagon-covered.svg | 0 .../src => src}/static/icons/solid/walker.svg | 0 .../static/icons/solid/walkie-talkie.svg | 0 .../static/icons/solid/walking.svg | 0 .../src => src}/static/icons/solid/wallet.svg | 0 .../static/icons/solid/wand-magic.svg | 0 .../src => src}/static/icons/solid/wand.svg | 0 .../static/icons/solid/warehouse-alt.svg | 0 .../static/icons/solid/warehouse.svg | 0 .../src => src}/static/icons/solid/washer.svg | 0 .../static/icons/solid/watch-calculator.svg | 0 .../static/icons/solid/watch-fitness.svg | 0 .../src => src}/static/icons/solid/watch.svg | 0 .../static/icons/solid/water-lower.svg | 0 .../static/icons/solid/water-rise.svg | 0 .../src => src}/static/icons/solid/water.svg | 0 .../static/icons/solid/wave-sine.svg | 0 .../static/icons/solid/wave-square.svg | 0 .../static/icons/solid/wave-triangle.svg | 0 .../static/icons/solid/waveform-path.svg | 0 .../static/icons/solid/waveform.svg | 0 .../static/icons/solid/webcam-slash.svg | 0 .../src => src}/static/icons/solid/webcam.svg | 0 .../static/icons/solid/weight-hanging.svg | 0 .../src => src}/static/icons/solid/weight.svg | 0 .../src => src}/static/icons/solid/whale.svg | 0 .../src => src}/static/icons/solid/wheat.svg | 0 .../static/icons/solid/wheelchair.svg | 0 .../static/icons/solid/whistle.svg | 0 .../src => src}/static/icons/solid/wifi-1.svg | 0 .../src => src}/static/icons/solid/wifi-2.svg | 0 .../static/icons/solid/wifi-slash.svg | 0 .../src => src}/static/icons/solid/wifi.svg | 0 .../static/icons/solid/wind-turbine.svg | 0 .../static/icons/solid/wind-warning.svg | 0 .../src => src}/static/icons/solid/wind.svg | 0 .../static/icons/solid/window-alt.svg | 0 .../static/icons/solid/window-close.svg | 0 .../static/icons/solid/window-frame-open.svg | 0 .../static/icons/solid/window-frame.svg | 0 .../static/icons/solid/window-maximize.svg | 0 .../static/icons/solid/window-minimize.svg | 0 .../static/icons/solid/window-restore.svg | 0 .../src => src}/static/icons/solid/window.svg | 0 .../static/icons/solid/windsock.svg | 0 .../static/icons/solid/wine-bottle.svg | 0 .../static/icons/solid/wine-glass-alt.svg | 0 .../static/icons/solid/wine-glass.svg | 0 .../static/icons/solid/won-sign.svg | 0 .../src => src}/static/icons/solid/wreath.svg | 0 .../src => src}/static/icons/solid/wrench.svg | 0 .../src => src}/static/icons/solid/x-ray.svg | 0 .../static/icons/solid/yen-sign.svg | 0 .../static/icons/solid/yin-yang.svg | 0 {client/src => src}/static/json/icons.js | 0 .../src => src}/store/Bills/bills.actions.js | 0 .../src => src}/store/Bills/bills.reducer.js | 0 .../store/Bills/bills.selectors.js | 0 {client/src => src}/store/Bills/bills.type.js | 0 .../store/Estimate/estimates.actions.js | 0 .../store/Estimate/estimates.reducer.js | 0 .../store/Estimate/estimates.selectors.js | 0 .../store/Estimate/estimates.types.js | 0 .../store/ExchangeRate/exchange.actions.js | 0 .../store/ExchangeRate/exchange.reducer.js | 0 .../store/ExchangeRate/exchange.selector.js | 0 .../store/ExchangeRate/exchange.type.js | 0 .../store/Invoice/invoices.actions.js | 0 .../store/Invoice/invoices.reducer.js | 0 .../store/Invoice/invoices.selector.js | 0 .../store/Invoice/invoices.types.js | 0 .../PaymentMades/paymentMades.actions.js | 0 .../PaymentMades/paymentMades.reducer.js | 0 .../PaymentMades/paymentMades.selector.js | 0 .../store/PaymentMades/paymentMades.type.js | 0 .../paymentReceives.actions.js | 0 .../paymentReceives.reducer.js | 0 .../paymentReceives.selector.js | 0 .../PaymentReceives/paymentReceives.type.js | 0 {client/src => src}/store/ResetMiddleware.js | 0 .../store/accounts/accounts.actions.js | 0 .../store/accounts/accounts.reducer.js | 0 .../store/accounts/accounts.selectors.js | 0 .../store/accounts/accounts.types.js | 0 .../authentication/authentication.actions.js | 0 .../authentication/authentication.reducer.js | 0 .../authentication.selectors.js | 0 .../authentication/authentication.types.js | 0 .../store/billing/Billing.action.js | 0 .../src => src}/store/billing/Billing.type.js | 0 {client/src => src}/store/createStore.js | 0 .../store/currencies/currencies.actions.js | 0 .../store/currencies/currencies.reducer.js | 0 .../store/currencies/currencies.selector.js | 0 .../store/currencies/currencies.types.js | 0 .../customFields/customFields.actions.js | 0 .../customFields/customFields.reducer.js | 0 .../store/customFields/customFields.types.js | 0 .../store/customViews/customViews.actions.js | 0 .../store/customViews/customViews.reducer.js | 0 .../customViews/customViews.selectors.js | 0 .../store/customViews/customViews.types.js | 0 .../store/customers/customers.actions.js | 0 .../store/customers/customers.reducer.js | 0 .../store/customers/customers.selectors.js | 0 .../store/customers/customers.type.js | 0 .../store/dashboard/dashboard.actions.js | 0 .../store/dashboard/dashboard.reducer.js | 0 .../store/dashboard/dashboard.selectors.js | 0 .../store/dashboard/dashboard.types.js | 0 .../store/enhancers/monitorReducer.js | 0 .../store/expenses/expenses.actions.js | 0 .../store/expenses/expenses.reducer.js | 0 .../store/expenses/expenses.selectors.js | 0 .../store/expenses/expenses.types.js | 0 .../financialStatements.actions.js | 0 .../financialStatements.mappers.js | 0 .../financialStatements.reducer.js | 0 .../financialStatements.selectors.js | 0 .../financialStatements.types.js | 0 .../globalErrors/globalErrors.actions.js | 0 .../globalErrors/globalErrors.reducer.js | 0 .../inventoryAdjustment.actions.js | 0 .../inventoryAdjustment.reducer.js | 0 .../inventoryAdjustment.selector.js | 0 .../inventoryAdjustment.type.js | 0 .../ItemsCategories.selectors.js | 0 .../itemCategories/itemsCategory.actions.js | 0 .../itemCategories/itemsCategory.reducer.js | 0 .../itemCategories/itemsCategory.type.js | 0 .../itemCategories/itemsCateory.reducer.js | 0 .../src => src}/store/items/items.actions.js | 0 .../src => src}/store/items/items.reducer.js | 0 .../store/items/items.selectors.js | 0 .../src => src}/store/items/items.types.js | 0 .../store/journalNumber.reducer.js | 0 {client/src => src}/store/localStorage.js | 0 .../manualJournals/manualJournals.actions.js | 0 .../manualJournals/manualJournals.reducers.js | 0 .../manualJournals.selectors.js | 0 .../manualJournals/manualJournals.types.js | 0 .../src => src}/store/media/media.actions.js | 0 .../src => src}/store/media/media.reducers.js | 0 .../src => src}/store/media/media.types.js | 0 .../organizations/organizations.actions.js | 0 .../organizations/organizations.reducers.js | 0 .../organizations/organizations.selectors.js | 0 .../organizations/organizations.types.js | 0 .../store/organizations/withSetupWizard.js | 0 .../src => src}/store/paginator.reducer.js | 0 .../src => src}/store/plans/plans.actions.js | 0 .../src => src}/store/plans/plans.reducer.js | 0 .../store/plans/plans.selectors.js | 0 .../src => src}/store/plans/plans.types.js | 0 .../store/preferences/preferences.actions.js | 0 .../store/preferences/preferences.reducer.js | 0 .../store/preferences/preferences.types.js | 0 {client/src => src}/store/queryReducers.js | 0 .../store/receipts/receipts.actions.js | 0 .../store/receipts/receipts.reducer.js | 0 .../store/receipts/receipts.selector.js | 0 .../store/receipts/receipts.type.js | 0 {client/src => src}/store/reducers.js | 0 .../store/registers/register.action.js | 0 .../store/registers/register.reducer.js | 0 .../store/registers/register.type.js | 0 .../resetPassword/resetPassword.action.js | 0 .../store/resources/resource.types.js | 0 .../store/resources/resources.actions.js | 0 .../store/resources/resources.reducer.js | 0 .../store/resources/resources.selectors.js | 0 .../store/search/search.actions.js | 0 .../store/search/search.reducer.js | 0 .../src => src}/store/search/search.type.js | 0 {client/src => src}/store/selectors.js | 0 .../store/settings/settings.actions.js | 0 .../store/settings/settings.reducer.js | 0 .../store/settings/settings.selectors.js | 0 .../store/settings/settings.type.js | 0 .../subscription/subscription.actions.js | 0 .../subscription/subscription.reducer.js | 0 .../subscription/subscription.selectors.js | 0 .../store/subscription/subscription.types.js | 0 .../src => src}/store/tableState.reducer.js | 0 {client/src => src}/store/types.js | 0 .../src => src}/store/users/users.actions.js | 0 .../src => src}/store/users/users.reducer.js | 0 .../store/users/users.selectors.js | 0 .../src => src}/store/users/users.types.js | 0 .../store/vendors/vendors.actions.js | 0 .../store/vendors/vendors.reducer.js | 0 .../store/vendors/vendors.selectors.js | 0 .../store/vendors/vendors.types.js | 0 {client/src => src}/style/App.scss | 0 {client/src => src}/style/Base.scss | 0 .../src => src}/style/components/Alert.scss | 0 .../style/components/BigAmount.scss | 0 .../style/components/BigcapitalLoading.scss | 0 .../src => src}/style/components/Card.scss | 0 .../style/components/CloudSpinner.scss | 0 .../style/components/CustomScrollbar.scss | 0 .../style/components/DataTable/DataTable.scss | 0 .../DataTable/DataTableEditable.scss | 0 .../DataTableEmptyStatus.module.scss | 0 .../components/DataTable/Pagination.scss | 0 .../src => src}/style/components/Details.scss | 0 .../style/components/Dialog/Dialog.scss | 0 .../src => src}/style/components/Drawer.scss | 0 .../components/Drawers/AccountDrawer.scss | 0 .../components/Drawers/BillDrawer.module.scss | 0 .../components/Drawers/DrawerTemplate.scss | 0 .../Drawers/EstimateDetails.module.scss | 0 .../components/Drawers/ExpenseDrawer.scss | 0 .../InventoryAdjustmentDrawer.module.scss | 0 .../Drawers/InvoiceDrawer.module.scss | 0 .../style/components/Drawers/ItemDrawer.scss | 0 .../Drawers/ManualJournalDrawer.scss | 0 .../Drawers/ReceiptDrawer.module.scss | 0 .../Drawers/ViewDetail/ViewDetail.scss | 0 .../src => src}/style/components/Hint.scss | 0 .../style/components/MaterialProgressBar.scss | 0 .../src => src}/style/components/Menu.scss | 0 .../src => src}/style/components/Overlay.scss | 0 .../style/components/PageForm.scss | 0 .../src => src}/style/components/Postbox.scss | 0 .../style/components/SidebarOverlay.scss | 0 .../style/components/Skeleton.scss | 0 .../src => src}/style/components/Toast.scss | 0 .../src => src}/style/components/Tooltip.scss | 0 .../style/components/UniversalSearch.scss | 0 .../style/components/dragzone.scss | 0 .../src => src}/style/components/resizer.scss | 0 .../src => src}/style/components/tabs.scss | 0 .../style/containers/Dashboard/Sidebar.scss | 0 .../FinancialStatements/DrawerHeader.scss | 0 .../FinancialStatements/FinancialSheet.scss | 0 .../style/fonts/NotoSans-Black.woff | Bin .../style/fonts/NotoSans-Medium.woff | Bin .../style/fonts/NotoSans-Regular.woff | Bin .../style/fonts/NotoSans-SemiBold.woff | Bin .../fonts/NotoSansArabicUI-SemiCondensed.woff | Bin .../NotoSansArabicUI-SemiCondensedBlack.woff | Bin .../NotoSansArabicUI-SemiCondensedMedium.woff | Bin ...otoSansArabicUI-SemiCondensedSemiBold.woff | Bin .../style/fonts/SegoeArabicUI-Bold.woff2 | Bin .../style/fonts/SegoeArabicUI-Light.woff2 | Bin .../style/fonts/SegoeArabicUI-Regular.woff2 | Bin .../style/fonts/SegoeArabicUI-SemiBold.woff2 | Bin {client/src => src}/style/functions.scss | 0 {client/src => src}/style/normalize.scss | 0 .../src => src}/style/objects/Bigcapital.scss | 0 .../src => src}/style/objects/buttons.scss | 0 {client/src => src}/style/objects/form.scss | 0 .../src => src}/style/objects/typography.scss | 0 .../pages/Accounts/AccountFormDialog.scss | 0 .../style/pages/Accounts/List.scss | 0 .../AllocateLandedCostForm.scss | 0 .../style/pages/Authentication/Auth.scss | 0 .../style/pages/Billing/BillingPage.scss | 0 .../src => src}/style/pages/Bills/List.scss | 0 .../style/pages/Bills/PageForm.scss | 0 .../ContactDuplicateDialog.scss | 0 .../pages/Currency/CurrencyFormDialog.scss | 0 .../style/pages/Customers/List.scss | 0 .../style/pages/Customers/PageForm.scss | 0 .../style/pages/Dashboard/Dashboard.scss | 0 .../ExchangeRate/ExchangeRateDialog.scss | 0 .../src => src}/style/pages/Expense/List.scss | 0 .../style/pages/Expense/PageForm.scss | 0 .../FinancialStatements/APAgingSummary.scss | 0 .../FinancialStatements/ARAgingSummary.scss | 0 .../FinancialStatements/BalanceSheet.scss | 0 .../CashFlowStatement.scss | 0 .../ContactsBalanceSummary.scss | 0 .../ContactsTransactions.scss | 0 .../FinancialReportPage.scss | 0 .../FinancialStatements/FinancialSheet.scss | 0 .../FinancialStatements/FinancialSheets.scss | 0 .../FinancialStatements/GeneralLedger.scss | 0 .../InventoryItemDetails.scss | 0 .../pages/FinancialStatements/Journal.scss | 0 .../NumberFormatDropdown.scss | 0 .../FinancialStatements/ProfitLossSheet.scss | 0 .../SalesAndPurchasesSheet.scss | 0 .../TrialBalanceSheet.scss | 0 .../style/pages/HomePage/HomePage.scss | 0 .../pages/InventoryAdjustments/List.scss | 0 .../ItemCategory/ItemCategoryDialog.scss | 0 .../pages/Items/ItemAdjustmentDialog.scss | 0 .../src => src}/style/pages/Items/List.scss | 0 .../style/pages/Items/PageForm.scss | 0 .../style/pages/ItemsCategories/List.scss | 0 .../style/pages/JournalEntries/List.scss | 0 .../ManualJournal/JournalNumberDialog.scss | 0 .../style/pages/ManualJournal/List.scss | 0 .../pages/ManualJournal/MakeJournal.scss | 0 .../style/pages/PaymentMade/List.scss | 0 .../style/pages/PaymentMade/PageForm.scss | 0 .../style/pages/PaymentReceive/List.scss | 0 .../style/pages/PaymentReceive/PageForm.scss | 0 .../QuickPaymentReceiveDialog.scss | 0 .../style/pages/Preferences/Accounting.scss | 0 .../pages/Preferences/CurrenciesList.scss | 0 .../style/pages/Preferences/GeneralForm.scss | 0 .../style/pages/Preferences/Page.scss | 0 .../style/pages/Preferences/Sidebar.scss | 0 .../style/pages/Preferences/Topbar.scss | 0 .../style/pages/Preferences/Users.scss | 0 .../ReferenceNumber/ReferenceNumber.scss | 0 .../style/pages/SaleEstimate/List.scss | 0 .../style/pages/SaleEstimate/PageForm.scss | 0 .../style/pages/SaleInvoice/List.scss | 0 .../style/pages/SaleInvoice/PageForm.scss | 0 .../style/pages/SaleReceipt/List.scss | 0 .../style/pages/SaleReceipt/PageForm.scss | 0 .../style/pages/Setup/Congrats.scss | 0 .../style/pages/Setup/Initializing.scss | 0 .../style/pages/Setup/Organization.scss | 0 .../pages/Setup/PaymentViaVoucherDialog.scss | 0 .../style/pages/Setup/SetupPage.scss | 0 .../style/pages/Setup/Subscription.scss | 0 .../pages/Subscription/BillingPlans.scss | 0 .../pages/Subscription/PlanPeriodRadio.scss | 0 .../style/pages/Subscription/PlanRadio.scss | 0 .../style/pages/Users/InviteFormDialog.scss | 0 .../style/pages/Users/UserFormDialog.scss | 0 .../src => src}/style/pages/Vendors/List.scss | 0 .../style/pages/Vendors/PageForm.scss | 0 .../style/pages/authentication.scss | 0 {client/src => src}/style/pages/fonts.scss | 0 .../KeyboardShortcutDialog.scss | 0 .../style/pages/register-organizaton.scss | 0 .../src => src}/style/pages/view-form.scss | 0 {client/src => src}/style/variables.scss | 0 .../style/views/filter-dropdown.scss | 0 {client/src => src}/utils.js | 0 client/tsconfig.json => tsconfig.json | 0 10015 files changed, 17686 insertions(+), 97524 deletions(-) rename client/CHANGELOG.md => CHANGELOG.md (100%) rename client/Dockerfile => Dockerfile (100%) delete mode 100644 client/.dockerignore delete mode 100644 client/.flowconfig delete mode 100644 client/.gitignore delete mode 100644 client/.prettierrc delete mode 100644 client/README.md delete mode 100644 client/package-lock.json rename {client/config => config}/env.js (100%) rename {client/config => config}/getHttpsConfig.js (100%) rename {client/config => config}/jest/cssTransform.js (100%) rename {client/config => config}/jest/fileTransform.js (100%) rename {client/config => config}/modules.js (100%) rename {client/config => config}/paths.js (100%) rename {client/config => config}/pnpTs.js (100%) rename {client/config => config}/webpack.config.js (100%) rename {client/config => config}/webpackDevServer.config.js (100%) delete mode 100644 docker/.gitignore delete mode 100644 docker/LICENSE delete mode 100644 docker/README.md delete mode 100644 docker/apache/Dockerfile delete mode 100644 docker/apache/certs/.gitkeep delete mode 100644 docker/apache/httpd.conf delete mode 100644 docker/apache/scripts/build-apache.sh delete mode 100644 docker/apache/scripts/run-openssl.sh delete mode 100644 docker/apache/sites/node-https.template delete mode 100644 docker/apache/sites/node.template delete mode 100644 docker/certbot/Dockerfile delete mode 100644 docker/certbot/certs/.gitignore delete mode 100644 docker/certbot/certs/.gitkeep delete mode 100644 docker/certbot/letsencrypt/.gitkeep delete mode 100644 docker/certbot/letsencrypt/.well-known/.gitkeep delete mode 100644 docker/certbot/scripts/run-certbot.sh delete mode 100644 docker/composehub.yml delete mode 100644 docker/docker-compose.yml delete mode 100644 docker/docs/CNAME delete mode 100644 docker/docs/css/styles.css delete mode 100644 docker/docs/images/box-icon.png delete mode 100644 docker/docs/images/favicon.png delete mode 100644 docker/docs/images/lightning-icon.png delete mode 100644 docker/docs/images/logo.png delete mode 100644 docker/docs/images/nodock.jpg delete mode 100644 docker/docs/images/osedea-logo.png delete mode 100644 docker/docs/images/tech-logos.png delete mode 100644 docker/docs/index.html delete mode 100644 docker/memcached/Dockerfile delete mode 100644 docker/mongo/Dockerfile delete mode 100644 docker/mysql/Dockerfile delete mode 100644 docker/mysql/my.cnf delete mode 100644 docker/nginx/Dockerfile delete mode 100644 docker/nginx/certs/.gitkeep delete mode 100644 docker/nginx/nginx.conf delete mode 100644 docker/nginx/scripts/build-nginx.sh delete mode 100644 docker/nginx/scripts/run-openssl.sh delete mode 100644 docker/nginx/sites/node-https.template delete mode 100644 docker/nginx/sites/node.template delete mode 100644 docker/node/Dockerfile delete mode 100644 docker/node/scripts/run-nodock.sh delete mode 100644 docker/postgresql/Dockerfile delete mode 100644 docker/rabbitmq/Dockerfile delete mode 100644 docker/rabbitmq/scripts/build-rabbitmq.sh delete mode 100644 docker/redis/Dockerfile delete mode 100644 docker/redis/redis.conf delete mode 100644 docker/rethinkdb/Dockerfile delete mode 100644 docker/workspace/Dockerfile delete mode 100644 docker/workspace/crontab/root rename {client/nginx => nginx}/sites/default.conf (100%) rename client/package.json => package.json (100%) rename {client/public => public}/favicons/favicon-32.ico (100%) rename {client/public => public}/index.html (100%) rename {client/public => public}/logo192.png (100%) rename {client/public => public}/logo512.png (100%) rename {client/public => public}/manifest.json (100%) rename {client/public => public}/robots.txt (100%) rename {client/scripts => scripts}/build.js (100%) rename {client/scripts => scripts}/start.js (100%) rename {client/scripts => scripts}/test.js (100%) delete mode 100644 server/.babelrc delete mode 100644 server/.env.example delete mode 100644 server/.eslintrc.js delete mode 100644 server/.gitignore delete mode 100644 server/CHANGELOG.md delete mode 100644 server/bin/bigcapital.js delete mode 100644 server/bin/utils.js delete mode 100644 server/nodemon.json delete mode 100644 server/package.json delete mode 100644 server/resources/css/modules/estimate-rtl.css delete mode 100644 server/resources/css/modules/estimate.css delete mode 100644 server/resources/css/modules/invoice-rtl.css delete mode 100644 server/resources/css/modules/invoice.css delete mode 100644 server/resources/css/modules/receipt-rtl.css delete mode 100644 server/resources/css/modules/receipt.css delete mode 100644 server/resources/scss/base.scss delete mode 100644 server/resources/scss/fonts.scss delete mode 100644 server/resources/scss/layouts/paper-layout.scss delete mode 100644 server/resources/scss/modules/estimate.scss delete mode 100644 server/resources/scss/modules/invoice.scss delete mode 100644 server/resources/scss/modules/receipt.scss delete mode 100644 server/resources/scss/normalize.scss delete mode 100644 server/resources/views/PaperTemplateLayout.pug delete mode 100644 server/resources/views/modules/estimate-regular.pug delete mode 100644 server/resources/views/modules/invoice-regular.pug delete mode 100644 server/resources/views/modules/payment-receipt-regular.pug delete mode 100644 server/resources/views/modules/purchase-invoice-regular.pug delete mode 100644 server/resources/views/modules/receipt-regular.pug delete mode 100644 server/scripts/gulpConfig.js delete mode 100644 server/scripts/gulpfile.js delete mode 100644 server/scripts/install.sh delete mode 100644 server/scripts/run_test_db.sh delete mode 100644 server/src/api/controllers/AccountTypes.ts delete mode 100644 server/src/api/controllers/Accounts.ts delete mode 100644 server/src/api/controllers/Agendash.ts delete mode 100644 server/src/api/controllers/Authentication.ts delete mode 100644 server/src/api/controllers/BaseController.ts delete mode 100644 server/src/api/controllers/Contacts/Contacts.ts delete mode 100644 server/src/api/controllers/Contacts/Customers.ts delete mode 100644 server/src/api/controllers/Contacts/Vendors.ts delete mode 100644 server/src/api/controllers/Currencies.ts delete mode 100644 server/src/api/controllers/ExchangeRates.ts delete mode 100644 server/src/api/controllers/Expenses.ts delete mode 100644 server/src/api/controllers/FinancialStatements.ts delete mode 100644 server/src/api/controllers/FinancialStatements/APAgingSummary.ts delete mode 100644 server/src/api/controllers/FinancialStatements/ARAgingSummary.ts delete mode 100644 server/src/api/controllers/FinancialStatements/BalanceSheet.ts delete mode 100644 server/src/api/controllers/FinancialStatements/BaseFinancialReportController.ts delete mode 100644 server/src/api/controllers/FinancialStatements/CashFlow/CashFlow.ts delete mode 100644 server/src/api/controllers/FinancialStatements/CustomerBalanceSummary/index.ts delete mode 100644 server/src/api/controllers/FinancialStatements/GeneralLedger.ts delete mode 100644 server/src/api/controllers/FinancialStatements/InventoryDetails/index.ts delete mode 100644 server/src/api/controllers/FinancialStatements/InventoryValuationSheet.ts delete mode 100644 server/src/api/controllers/FinancialStatements/JournalSheet.ts delete mode 100644 server/src/api/controllers/FinancialStatements/ProfitLossSheet.ts delete mode 100644 server/src/api/controllers/FinancialStatements/PurchasesByItem.ts delete mode 100644 server/src/api/controllers/FinancialStatements/SalesByItems.ts delete mode 100644 server/src/api/controllers/FinancialStatements/TransactionsByCustomers/index.ts delete mode 100644 server/src/api/controllers/FinancialStatements/TransactionsByReference/index.ts delete mode 100644 server/src/api/controllers/FinancialStatements/TransactionsByVendors/index.ts delete mode 100644 server/src/api/controllers/FinancialStatements/TrialBalanceSheet.ts delete mode 100644 server/src/api/controllers/FinancialStatements/VendorBalanceSummary/index.ts delete mode 100644 server/src/api/controllers/Inventory/InventoryAdjustments.ts delete mode 100644 server/src/api/controllers/InviteUsers.ts delete mode 100644 server/src/api/controllers/ItemCategories.ts delete mode 100644 server/src/api/controllers/Items.ts delete mode 100644 server/src/api/controllers/Jobs.ts delete mode 100644 server/src/api/controllers/ManualJournals.ts delete mode 100644 server/src/api/controllers/Media.ts delete mode 100644 server/src/api/controllers/Miscellaneous/index.ts delete mode 100644 server/src/api/controllers/Organization.ts delete mode 100644 server/src/api/controllers/OrganizationDashboard.ts delete mode 100644 server/src/api/controllers/Ping.ts delete mode 100644 server/src/api/controllers/Purchases/Bills.ts delete mode 100644 server/src/api/controllers/Purchases/BillsPayments.ts delete mode 100644 server/src/api/controllers/Purchases/LandedCost.ts delete mode 100644 server/src/api/controllers/Purchases/index.ts delete mode 100644 server/src/api/controllers/Resources.ts delete mode 100644 server/src/api/controllers/Sales/PaymentReceives.ts delete mode 100644 server/src/api/controllers/Sales/SalesEstimates.ts delete mode 100644 server/src/api/controllers/Sales/SalesInvoices.ts delete mode 100644 server/src/api/controllers/Sales/SalesReceipts.ts delete mode 100644 server/src/api/controllers/Sales/index.ts delete mode 100644 server/src/api/controllers/Settings.ts delete mode 100644 server/src/api/controllers/Setup.ts delete mode 100644 server/src/api/controllers/Subscription/Licenses.ts delete mode 100644 server/src/api/controllers/Subscription/PaymentMethod.ts delete mode 100644 server/src/api/controllers/Subscription/PaymentViaLicense.ts delete mode 100644 server/src/api/controllers/Subscription/index.ts delete mode 100644 server/src/api/controllers/Users.ts delete mode 100644 server/src/api/controllers/Views.ts delete mode 100644 server/src/api/index.ts delete mode 100644 server/src/api/middleware/AsyncRenderMiddleware.ts delete mode 100644 server/src/api/middleware/AttachCurrentTenantUser.ts delete mode 100644 server/src/api/middleware/ConvertEmptyStringsToNull.ts delete mode 100644 server/src/api/middleware/EnsureTenantIsInitialized.ts delete mode 100644 server/src/api/middleware/EnsureTenantIsSeeded.ts delete mode 100644 server/src/api/middleware/I18nAuthenticatedMiddlware.ts delete mode 100644 server/src/api/middleware/I18nMiddleware.ts delete mode 100644 server/src/api/middleware/LoggerMiddleware.ts delete mode 100644 server/src/api/middleware/LoginThrottlerMiddleware.ts delete mode 100644 server/src/api/middleware/RateLimiterMiddleware.ts delete mode 100644 server/src/api/middleware/SettingsMiddleware.ts delete mode 100644 server/src/api/middleware/SubscriptionMiddleware.ts delete mode 100644 server/src/api/middleware/TenancyMiddleware.ts delete mode 100644 server/src/api/middleware/TenantDependencyInjection.ts delete mode 100644 server/src/api/middleware/asyncMiddleware.ts delete mode 100644 server/src/api/middleware/jwtAuth.ts delete mode 100644 server/src/before.ts delete mode 100644 server/src/collection/BudgetEntriesSet.js delete mode 100644 server/src/collection/Cachable.js delete mode 100644 server/src/collection/Metable.js delete mode 100644 server/src/collection/NestedSet/index.js delete mode 100644 server/src/collection/ResourceFieldMetadataCollection.js delete mode 100644 server/src/collection/SoftDeleteQueryBuilder.js delete mode 100644 server/src/config/index.js delete mode 100644 server/src/config/knexConfig.ts delete mode 100644 server/src/data/AccountTypes.ts delete mode 100644 server/src/data/BalanceSheetStructure.ts delete mode 100644 server/src/data/DataTypes.js delete mode 100644 server/src/data/ResourceFieldsKeys.js delete mode 100644 server/src/data/options.js delete mode 100644 server/src/database/factories/index.js delete mode 100644 server/src/database/factories/system.js delete mode 100644 server/src/database/migrations/20190822214303_create_accounts_table.js delete mode 100644 server/src/database/migrations/20190822214304_create_items_categories_table.js delete mode 100644 server/src/database/migrations/20190822214306_create_items_table.js delete mode 100644 server/src/database/migrations/20190822214903_create_views_table.js delete mode 100644 server/src/database/migrations/20190822214904_create_settings_table.js delete mode 100644 server/src/database/migrations/20190822214905_create_views_columns.js delete mode 100644 server/src/database/migrations/20190822214905_create_views_roles_table.js delete mode 100644 server/src/database/migrations/20200104232644_create_contacts_table.js delete mode 100644 server/src/database/migrations/20200104232647_create_accounts_transactions_table.js delete mode 100644 server/src/database/migrations/20200105014405_create_expenses_table.js delete mode 100644 server/src/database/migrations/20200105195823_create_manual_journals_table.js delete mode 100644 server/src/database/migrations/20200105195825_create_manual_journals_entries_table.js delete mode 100644 server/src/database/migrations/20200419171451_create_currencies_table.js delete mode 100644 server/src/database/migrations/20200419191832_create_exchange_rates_table.js delete mode 100644 server/src/database/migrations/20200423201600_create_media_table.js delete mode 100644 server/src/database/migrations/20200503032011_create_media_links_table.js delete mode 100644 server/src/database/migrations/20200606113848_create_expense_transactions_categories_table.js delete mode 100644 server/src/database/migrations/20200713192127_create_sales_estimates_table.js delete mode 100644 server/src/database/migrations/20200713213303_create_sales_receipt_table.js delete mode 100644 server/src/database/migrations/20200715193633_create_sale_invoices_table.js delete mode 100644 server/src/database/migrations/20200715194514_create_payment_receives_table.js delete mode 100644 server/src/database/migrations/20200718161031_create_payment_receives_entries_table.js delete mode 100644 server/src/database/migrations/20200719152005_create_bills_table.js delete mode 100644 server/src/database/migrations/20200719153909_create_bills_payments_table.js delete mode 100644 server/src/database/migrations/20200722164251_create_inventory_transactions_table.js delete mode 100644 server/src/database/migrations/20200722164252_create_landed_cost_table.js delete mode 100644 server/src/database/migrations/20200722164253_create_landed_cost_entries_table.js delete mode 100644 server/src/database/migrations/20200722164255_create_inventory_transaction_meta_table.js delete mode 100644 server/src/database/migrations/20200722173423_create_items_entries_table.js delete mode 100644 server/src/database/migrations/20200728161617_create_bill_payments_entries.js delete mode 100644 server/src/database/migrations/20200810121807_create_inventory_cost_lot_tracker_table.js delete mode 100644 server/src/database/migrations/20200810121809_create_inventory_adjustments_table.js delete mode 100644 server/src/database/migrations/20200810121810_create_inventory_adjustments_entries_table.js delete mode 100644 server/src/database/objection.js delete mode 100644 server/src/database/seeds/core/20190423085242_seed_accounts.js delete mode 100644 server/src/database/seeds/core/20200810121809_seed_settings.js delete mode 100644 server/src/database/seeds/core/20200810121909_seed_items_settings.js delete mode 100644 server/src/database/seeds/data/accounts.js delete mode 100644 server/src/decorators/eventDispatcher.ts delete mode 100644 server/src/exceptions/HttpException.ts delete mode 100644 server/src/exceptions/ModelEntityNotFound.ts delete mode 100644 server/src/exceptions/NoPaymentModelWithPricedPlan.ts delete mode 100644 server/src/exceptions/NotAllowedChangeSubscriptionPlan.ts delete mode 100644 server/src/exceptions/PaymentAmountInvalidWithPlan.ts delete mode 100644 server/src/exceptions/PaymentInputInvalid.ts delete mode 100644 server/src/exceptions/ServiceError.ts delete mode 100644 server/src/exceptions/ServiceErrors.ts delete mode 100644 server/src/exceptions/TenantAlreadyInitialized.ts delete mode 100644 server/src/exceptions/TenantAlreadySeeded.ts delete mode 100644 server/src/exceptions/TenantDBAlreadyExists.ts delete mode 100644 server/src/exceptions/TenantDatabaseNotBuilt.ts delete mode 100644 server/src/exceptions/VoucherCodeRequired.ts delete mode 100644 server/src/exceptions/index.ts delete mode 100644 server/src/interfaces/APAgingSummaryReport.ts delete mode 100644 server/src/interfaces/ARAgingSummaryReport.ts delete mode 100644 server/src/interfaces/Account.ts delete mode 100644 server/src/interfaces/AgingReport.ts delete mode 100644 server/src/interfaces/Authentication.ts delete mode 100644 server/src/interfaces/BalanceSheet.ts delete mode 100644 server/src/interfaces/Bill.ts delete mode 100644 server/src/interfaces/BillPayment.ts delete mode 100644 server/src/interfaces/CashFlow.ts delete mode 100644 server/src/interfaces/Contact.ts delete mode 100644 server/src/interfaces/ContactBalanceSummary.ts delete mode 100644 server/src/interfaces/Currency.ts delete mode 100644 server/src/interfaces/CustomerBalanceSummary.ts delete mode 100644 server/src/interfaces/DynamicFilter.ts delete mode 100644 server/src/interfaces/Entry.ts delete mode 100644 server/src/interfaces/ExchangeRate.ts delete mode 100644 server/src/interfaces/Expenses.ts delete mode 100644 server/src/interfaces/FinancialStatements.ts delete mode 100644 server/src/interfaces/GeneralLedgerSheet.ts delete mode 100644 server/src/interfaces/IInventoryValuationSheet.ts delete mode 100644 server/src/interfaces/InventoryAdjustment.ts delete mode 100644 server/src/interfaces/InventoryCostMethod.ts delete mode 100644 server/src/interfaces/InventoryDetails.ts delete mode 100644 server/src/interfaces/InventoryTransaction.ts delete mode 100644 server/src/interfaces/Item.ts delete mode 100644 server/src/interfaces/ItemCategory.ts delete mode 100644 server/src/interfaces/ItemEntry.ts delete mode 100644 server/src/interfaces/Jobs.ts delete mode 100644 server/src/interfaces/Journal.ts delete mode 100644 server/src/interfaces/JournalReport.ts delete mode 100644 server/src/interfaces/LandedCost.ts delete mode 100644 server/src/interfaces/Ledger.ts delete mode 100644 server/src/interfaces/License.ts delete mode 100644 server/src/interfaces/Mailable.ts delete mode 100644 server/src/interfaces/ManualJournal.ts delete mode 100644 server/src/interfaces/Media.ts delete mode 100644 server/src/interfaces/Metable.ts delete mode 100644 server/src/interfaces/Model.ts delete mode 100644 server/src/interfaces/Options.ts delete mode 100644 server/src/interfaces/Payment.ts delete mode 100644 server/src/interfaces/PaymentReceive.ts delete mode 100644 server/src/interfaces/ProfitLossSheet.ts delete mode 100644 server/src/interfaces/Resource.ts delete mode 100644 server/src/interfaces/SaleEstimate.ts delete mode 100644 server/src/interfaces/SaleInvoice.ts delete mode 100644 server/src/interfaces/SaleReceipt.ts delete mode 100644 server/src/interfaces/SalesByItemsSheet.ts delete mode 100644 server/src/interfaces/Setup.ts delete mode 100644 server/src/interfaces/Table.ts delete mode 100644 server/src/interfaces/Tenancy.ts delete mode 100644 server/src/interfaces/TransactionsByContacts.ts delete mode 100644 server/src/interfaces/TransactionsByCustomers.ts delete mode 100644 server/src/interfaces/TransactionsByReference.ts delete mode 100644 server/src/interfaces/TransactionsByVendors.ts delete mode 100644 server/src/interfaces/TrialBalanceSheet.ts delete mode 100644 server/src/interfaces/User.ts delete mode 100644 server/src/interfaces/VendorBalanceSummary.ts delete mode 100644 server/src/interfaces/View.ts delete mode 100644 server/src/interfaces/index.ts delete mode 100644 server/src/jobs/ComputeItemCost.ts delete mode 100644 server/src/jobs/MailNotificationSubscribeEnd.ts delete mode 100644 server/src/jobs/MailNotificationTrialEnd.ts delete mode 100644 server/src/jobs/OrganizationSetup.ts delete mode 100644 server/src/jobs/ResetPasswordMail.ts delete mode 100644 server/src/jobs/SMSNotificationSubscribeEnd.ts delete mode 100644 server/src/jobs/SMSNotificationTrialEnd.ts delete mode 100644 server/src/jobs/SendLicenseEmail.ts delete mode 100644 server/src/jobs/SendLicensePhone.ts delete mode 100644 server/src/jobs/UserInviteMail.ts delete mode 100644 server/src/jobs/WelcomeSMS.ts delete mode 100644 server/src/jobs/welcomeEmail.ts delete mode 100644 server/src/jobs/writeInvoicesJEntries.ts delete mode 100644 server/src/lib/AccountTypes/index.ts delete mode 100644 server/src/lib/Cachable/CachableModel.js delete mode 100644 server/src/lib/Cachable/CachableQueryBuilder.js delete mode 100644 server/src/lib/DependencyGraph/index.js delete mode 100644 server/src/lib/DynamicFilter/DynamicFilter.ts delete mode 100644 server/src/lib/DynamicFilter/DynamicFilterAbstructor.ts delete mode 100644 server/src/lib/DynamicFilter/DynamicFilterAdvancedFilter.ts delete mode 100644 server/src/lib/DynamicFilter/DynamicFilterFilterRoles.ts delete mode 100644 server/src/lib/DynamicFilter/DynamicFilterQueryParser.ts delete mode 100644 server/src/lib/DynamicFilter/DynamicFilterRoleAbstructor.ts delete mode 100644 server/src/lib/DynamicFilter/DynamicFilterSearch.ts delete mode 100644 server/src/lib/DynamicFilter/DynamicFilterSortBy.ts delete mode 100644 server/src/lib/DynamicFilter/DynamicFilterViews.ts delete mode 100644 server/src/lib/DynamicFilter/constants.ts delete mode 100644 server/src/lib/DynamicFilter/index.js delete mode 100644 server/src/lib/KnexFactory/index.js delete mode 100644 server/src/lib/LogicEvaluation/Lexer.js delete mode 100644 server/src/lib/LogicEvaluation/Parser.js delete mode 100644 server/src/lib/LogicEvaluation/QueryParser.js delete mode 100644 server/src/lib/LogicEvaluation/index.js delete mode 100644 server/src/lib/Mail/index.ts delete mode 100644 server/src/lib/Metable/MetableConfig.ts delete mode 100644 server/src/lib/Metable/MetableModel.js delete mode 100644 server/src/lib/Metable/MetableStore.ts delete mode 100644 server/src/lib/Metable/MetableStoreDB.ts delete mode 100644 server/src/lib/MomentFormats/index.ts delete mode 100644 server/src/lib/NestedSet/NestedSetNode.js delete mode 100644 server/src/lib/QueryBuilderBulkOperations/QueryBuilder.js delete mode 100644 server/src/lib/Transformer/Transformer.ts delete mode 100644 server/src/lib/ViewRolesBuilder/FilterRolesDynamicFilter.js delete mode 100644 server/src/lib/ViewRolesBuilder/index.ts delete mode 100644 server/src/loaders/agenda.ts delete mode 100644 server/src/loaders/database.ts delete mode 100644 server/src/loaders/dbManager.ts delete mode 100644 server/src/loaders/dependencyInjector.ts delete mode 100644 server/src/loaders/events.ts delete mode 100644 server/src/loaders/express.ts delete mode 100644 server/src/loaders/i18n.ts delete mode 100644 server/src/loaders/index.ts delete mode 100644 server/src/loaders/jobs.ts delete mode 100644 server/src/loaders/logger.ts delete mode 100644 server/src/loaders/mail.ts delete mode 100644 server/src/loaders/mongoose.ts delete mode 100644 server/src/loaders/rateLimiterLoader.ts delete mode 100644 server/src/loaders/smsClient.ts delete mode 100644 server/src/loaders/systemRepositories.ts delete mode 100644 server/src/loaders/tenantCache.ts delete mode 100644 server/src/loaders/tenantModels.ts delete mode 100644 server/src/loaders/tenantRepositories.ts delete mode 100644 server/src/locales/ar.json delete mode 100644 server/src/locales/en.json delete mode 100644 server/src/models/Account.Settings.ts delete mode 100644 server/src/models/Account.js delete mode 100644 server/src/models/AccountTransaction.js delete mode 100644 server/src/models/Auth.js delete mode 100644 server/src/models/Bill.Settings.ts delete mode 100644 server/src/models/Bill.js delete mode 100644 server/src/models/BillLandedCost.js delete mode 100644 server/src/models/BillLandedCostEntry.js delete mode 100644 server/src/models/BillPayment.Settings.ts delete mode 100644 server/src/models/BillPayment.js delete mode 100644 server/src/models/BillPaymentEntry.js delete mode 100644 server/src/models/Contact.js delete mode 100644 server/src/models/Currency.js delete mode 100644 server/src/models/CustomViewBaseModel.js delete mode 100644 server/src/models/Customer.Settings.ts delete mode 100644 server/src/models/Customer.js delete mode 100644 server/src/models/DateSession.js delete mode 100644 server/src/models/ExchangeRate.js delete mode 100644 server/src/models/Expense.Settings.ts delete mode 100644 server/src/models/Expense.js delete mode 100644 server/src/models/ExpenseCategory.js delete mode 100644 server/src/models/InventoryAdjustment.Settings.ts delete mode 100644 server/src/models/InventoryAdjustment.js delete mode 100644 server/src/models/InventoryAdjustmentEntry.js delete mode 100644 server/src/models/InventoryCostLotTracker.js delete mode 100644 server/src/models/InventoryTransaction.js delete mode 100644 server/src/models/InventoryTransactionMeta.js delete mode 100644 server/src/models/Item.Settings.ts delete mode 100644 server/src/models/Item.js delete mode 100644 server/src/models/ItemCategory.Settings.ts delete mode 100644 server/src/models/ItemCategory.js delete mode 100644 server/src/models/ItemEntry.js delete mode 100644 server/src/models/ManualJournal.Settings.ts delete mode 100644 server/src/models/ManualJournal.js delete mode 100644 server/src/models/ManualJournalEntry.js delete mode 100644 server/src/models/Media.js delete mode 100644 server/src/models/MediaLink.js delete mode 100644 server/src/models/Metable.js delete mode 100644 server/src/models/Model.js delete mode 100644 server/src/models/ModelSearchable.ts delete mode 100644 server/src/models/ModelSetting.ts delete mode 100644 server/src/models/Option.js delete mode 100644 server/src/models/Pagination.js delete mode 100644 server/src/models/PaymentReceive.Settings.ts delete mode 100644 server/src/models/PaymentReceive.js delete mode 100644 server/src/models/PaymentReceiveEntry.js delete mode 100644 server/src/models/ResourcableModel.js delete mode 100644 server/src/models/SaleEstimate.Settings.ts delete mode 100644 server/src/models/SaleEstimate.js delete mode 100644 server/src/models/SaleEstimateEntry.js delete mode 100644 server/src/models/SaleInvoice.Settings.ts delete mode 100644 server/src/models/SaleInvoice.js delete mode 100644 server/src/models/SaleInvoiceEntry.js delete mode 100644 server/src/models/SaleReceipt.Settings.ts delete mode 100644 server/src/models/SaleReceipt.js delete mode 100644 server/src/models/SaleReceiptEntry.js delete mode 100644 server/src/models/Setting.js delete mode 100644 server/src/models/TenantModel.js delete mode 100644 server/src/models/Vendor.Settings.ts delete mode 100644 server/src/models/Vendor.js delete mode 100644 server/src/models/View.js delete mode 100644 server/src/models/ViewColumn.js delete mode 100644 server/src/models/ViewRole.js delete mode 100644 server/src/models/index.js delete mode 100644 server/src/repositories/AccountRepository.ts delete mode 100644 server/src/repositories/AccountTransactionRepository.ts delete mode 100644 server/src/repositories/BaseModelRepository.ts delete mode 100644 server/src/repositories/BillRepository.ts delete mode 100644 server/src/repositories/CachableRepository.ts delete mode 100644 server/src/repositories/ContactRepository.ts delete mode 100644 server/src/repositories/CustomerRepository.ts delete mode 100644 server/src/repositories/EntityRepository.ts delete mode 100644 server/src/repositories/ExpenseEntryRepository.ts delete mode 100644 server/src/repositories/ExpenseRepository.ts delete mode 100644 server/src/repositories/InventoryTransactionRepository.ts delete mode 100644 server/src/repositories/ItemRepository.ts delete mode 100644 server/src/repositories/JournalRepository.ts delete mode 100644 server/src/repositories/PaymentReceiveEntryRepository.ts delete mode 100644 server/src/repositories/PaymentReceiveRepository.ts delete mode 100644 server/src/repositories/SaleInvoiceRepository.ts delete mode 100644 server/src/repositories/SettingRepository.ts delete mode 100644 server/src/repositories/TenantRepository.ts delete mode 100644 server/src/repositories/VendorRepository.ts delete mode 100644 server/src/repositories/ViewRepository.ts delete mode 100644 server/src/repositories/ViewRoleRepository.ts delete mode 100644 server/src/server.ts delete mode 100644 server/src/services/Accounting/JournalCommands.ts delete mode 100644 server/src/services/Accounting/JournalContacts.ts delete mode 100644 server/src/services/Accounting/JournalEntry.ts delete mode 100644 server/src/services/Accounting/JournalFinancial.ts delete mode 100644 server/src/services/Accounting/JournalPoster.ts delete mode 100644 server/src/services/Accounting/Ledger.ts delete mode 100644 server/src/services/Accounts/AccountTransform.ts delete mode 100644 server/src/services/Accounts/AccountsService.ts delete mode 100644 server/src/services/Accounts/AccountsTypesServices.ts delete mode 100644 server/src/services/Accounts/constants.ts delete mode 100644 server/src/services/Authentication/AuthenticationMailMessages.ts delete mode 100644 server/src/services/Authentication/AuthenticationSMSMessages.ts delete mode 100644 server/src/services/Authentication/RateLimiter.ts delete mode 100644 server/src/services/Authentication/index.ts delete mode 100644 server/src/services/Cache/index.ts delete mode 100644 server/src/services/Contacts/ContactTransformer.ts delete mode 100644 server/src/services/Contacts/ContactsService.ts delete mode 100644 server/src/services/Contacts/Customers/CustomerTransformer.ts delete mode 100644 server/src/services/Contacts/Customers/constants.ts delete mode 100644 server/src/services/Contacts/CustomersService.ts delete mode 100644 server/src/services/Contacts/Vendors/VendorTransformer.ts delete mode 100644 server/src/services/Contacts/Vendors/constants.ts delete mode 100644 server/src/services/Contacts/VendorsService.ts delete mode 100644 server/src/services/Contacts/constants.ts delete mode 100644 server/src/services/Currencies/CurrenciesService.ts delete mode 100644 server/src/services/DynamicListing/DynamicListAbstruct.ts delete mode 100644 server/src/services/DynamicListing/DynamicListCustomView.ts delete mode 100644 server/src/services/DynamicListing/DynamicListFilterRoles.ts delete mode 100644 server/src/services/DynamicListing/DynamicListSearch.ts delete mode 100644 server/src/services/DynamicListing/DynamicListService.ts delete mode 100644 server/src/services/DynamicListing/DynamicListSortBy.ts delete mode 100644 server/src/services/DynamicListing/constants.ts delete mode 100644 server/src/services/DynamicListing/validators.ts delete mode 100644 server/src/services/Entries/index.ts delete mode 100644 server/src/services/ExchangeRates/ExchangeRatesService.ts delete mode 100644 server/src/services/Expenses/ExpenseTransformer.ts delete mode 100644 server/src/services/Expenses/ExpensesService.ts delete mode 100644 server/src/services/Expenses/constants.ts delete mode 100644 server/src/services/FinancialStatements/AgingSummary/APAgingSummaryService.ts delete mode 100644 server/src/services/FinancialStatements/AgingSummary/APAgingSummarySheet.ts delete mode 100644 server/src/services/FinancialStatements/AgingSummary/ARAgingSummaryService.ts delete mode 100644 server/src/services/FinancialStatements/AgingSummary/ARAgingSummarySheet.ts delete mode 100644 server/src/services/FinancialStatements/AgingSummary/AgingReport.ts delete mode 100644 server/src/services/FinancialStatements/AgingSummary/AgingSummary.ts delete mode 100644 server/src/services/FinancialStatements/BalanceSheet/BalanceSheet.ts delete mode 100644 server/src/services/FinancialStatements/BalanceSheet/BalanceSheetService.ts delete mode 100644 server/src/services/FinancialStatements/CashFlow/CashFlow.ts delete mode 100644 server/src/services/FinancialStatements/CashFlow/CashFlowDatePeriods.ts delete mode 100644 server/src/services/FinancialStatements/CashFlow/CashFlowRepository.ts delete mode 100644 server/src/services/FinancialStatements/CashFlow/CashFlowService.ts delete mode 100644 server/src/services/FinancialStatements/CashFlow/CashFlowTable.ts delete mode 100644 server/src/services/FinancialStatements/CashFlow/schema.ts delete mode 100644 server/src/services/FinancialStatements/ContactBalanceSummary/ContactBalanceSummary.ts delete mode 100644 server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummary.ts delete mode 100644 server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryRepository.ts delete mode 100644 server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryService.ts delete mode 100644 server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryTableRows.ts delete mode 100644 server/src/services/FinancialStatements/FinancialReportService.ts delete mode 100644 server/src/services/FinancialStatements/FinancialSheet.ts delete mode 100644 server/src/services/FinancialStatements/GeneralLedger/GeneralLedger.ts delete mode 100644 server/src/services/FinancialStatements/GeneralLedger/GeneralLedgerService.ts delete mode 100644 server/src/services/FinancialStatements/InventoryDetails/InventoryDetails.ts delete mode 100644 server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsRepository.ts delete mode 100644 server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsService.ts delete mode 100644 server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsTable.ts delete mode 100644 server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheet.ts delete mode 100644 server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheetService.ts delete mode 100644 server/src/services/FinancialStatements/JournalSheet/JournalSheet.ts delete mode 100644 server/src/services/FinancialStatements/JournalSheet/JournalSheetService.ts delete mode 100644 server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossSheet.ts delete mode 100644 server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossSheetService.ts delete mode 100644 server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItems.ts delete mode 100644 server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItemsService.ts delete mode 100644 server/src/services/FinancialStatements/SalesByItems/SalesByItems.ts delete mode 100644 server/src/services/FinancialStatements/SalesByItems/SalesByItemsService.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByContact/TransactionsByContact.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByContact/TransactionsByContactTableRows.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomers.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersRepository.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersService.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersTableRows.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByReference/TransactionsByReferenceReport.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByReference/TransactionsByReferenceRepository.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByReference/index.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendor.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorRepository.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorService.ts delete mode 100644 server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorTableRows.ts delete mode 100644 server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheet.ts delete mode 100644 server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetService.ts delete mode 100644 server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummary.ts delete mode 100644 server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryRepository.ts delete mode 100644 server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryService.ts delete mode 100644 server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryTableRows.ts delete mode 100644 server/src/services/FinancialStatements/utils.ts delete mode 100644 server/src/services/I18n/I18nService.ts delete mode 100644 server/src/services/Inventory/Inventory.ts delete mode 100644 server/src/services/Inventory/InventoryAdjustmentService.ts delete mode 100644 server/src/services/Inventory/InventoryAverageCost.ts delete mode 100644 server/src/services/Inventory/InventoryCostLotTracker.ts delete mode 100644 server/src/services/Inventory/InventoryCostMethod.ts delete mode 100644 server/src/services/Inventory/InventoryItemsQuantitySync.ts delete mode 100644 server/src/services/InviteUsers/InviteUsersMailMessages.ts delete mode 100644 server/src/services/InviteUsers/InviteUsersSMSMessages.ts delete mode 100644 server/src/services/InviteUsers/constants.ts delete mode 100644 server/src/services/InviteUsers/index.ts delete mode 100644 server/src/services/ItemCategories/ItemCategoriesService.ts delete mode 100644 server/src/services/Items/ItemTransformer.ts delete mode 100644 server/src/services/Items/ItemsCostService.ts delete mode 100644 server/src/services/Items/ItemsEntriesService.ts delete mode 100644 server/src/services/Items/ItemsService.ts delete mode 100644 server/src/services/Items/constants.ts delete mode 100644 server/src/services/Jobs/JobTransformer.ts delete mode 100644 server/src/services/Jobs/JobsService.ts delete mode 100644 server/src/services/ManualJournals/ManualJournalTransformer.ts delete mode 100644 server/src/services/ManualJournals/ManualJournalsService.ts delete mode 100644 server/src/services/ManualJournals/constants.ts delete mode 100644 server/src/services/Media/MediaService.ts delete mode 100644 server/src/services/Miscellaneous/DateFormats/constants.ts delete mode 100644 server/src/services/Miscellaneous/DateFormats/index.ts delete mode 100644 server/src/services/Miscellaneous/MiscService.ts delete mode 100644 server/src/services/Organization/OrganizationBaseCurrencyLocking.ts delete mode 100644 server/src/services/Organization/constants.ts delete mode 100644 server/src/services/Organization/index.ts delete mode 100644 server/src/services/PDF/PdfService.ts delete mode 100644 server/src/services/Payment/License.ts delete mode 100644 server/src/services/Payment/LicenseMailMessages.ts delete mode 100644 server/src/services/Payment/LicensePaymentMethod.ts delete mode 100644 server/src/services/Payment/LicenseSMSMessages.ts delete mode 100644 server/src/services/Payment/PaymentMethod.ts delete mode 100644 server/src/services/Payment/index.ts delete mode 100644 server/src/services/Purchases/BillPayments/BillPaymentTransformer.ts delete mode 100644 server/src/services/Purchases/BillPayments/BillPayments.ts delete mode 100644 server/src/services/Purchases/BillPayments/BillPaymentsPages.ts delete mode 100644 server/src/services/Purchases/BillPayments/constants.ts delete mode 100644 server/src/services/Purchases/Bills.ts delete mode 100644 server/src/services/Purchases/LandedCost/BillLandedCost.ts delete mode 100644 server/src/services/Purchases/LandedCost/ExpenseLandedCost.ts delete mode 100644 server/src/services/Purchases/LandedCost/LandedCostListing.ts delete mode 100644 server/src/services/Purchases/LandedCost/TransctionLandedCost.ts delete mode 100644 server/src/services/Purchases/LandedCost/index.ts delete mode 100644 server/src/services/Purchases/LandedCost/utils.ts delete mode 100644 server/src/services/Purchases/PurchaseInvoices/PurchaseInvoiceTransformer.ts delete mode 100644 server/src/services/Purchases/constants.ts delete mode 100644 server/src/services/Resource/ResourceService.ts delete mode 100644 server/src/services/SMSClient/EasySmsClient.ts delete mode 100644 server/src/services/SMSClient/SMSAPI.ts delete mode 100644 server/src/services/SMSClient/SMSClientInterface.ts delete mode 100644 server/src/services/SMSClient/index.ts delete mode 100644 server/src/services/Sales/AutoIncrementOrdersService.ts delete mode 100644 server/src/services/Sales/Estimates/SaleEstimateTransformer.ts delete mode 100644 server/src/services/Sales/Estimates/SaleEstimatesPdf.ts delete mode 100644 server/src/services/Sales/Estimates/constants.ts delete mode 100644 server/src/services/Sales/HasItemsEntries.ts delete mode 100644 server/src/services/Sales/JournalPosterService.ts delete mode 100644 server/src/services/Sales/PaymentReceives/PaymentReceiveTransformer.ts delete mode 100644 server/src/services/Sales/PaymentReceives/PaymentReceivesPages.ts delete mode 100644 server/src/services/Sales/PaymentReceives/PaymentsReceives.ts delete mode 100644 server/src/services/Sales/PaymentReceives/constants.ts delete mode 100644 server/src/services/Sales/Receipts/SaleReceiptTransformer.ts delete mode 100644 server/src/services/Sales/Receipts/SaleReceiptsPdfService.ts delete mode 100644 server/src/services/Sales/Receipts/constants.ts delete mode 100644 server/src/services/Sales/SaleInvoicePdf.ts delete mode 100644 server/src/services/Sales/SaleInvoiceTransformer.ts delete mode 100644 server/src/services/Sales/SalesEstimate.ts delete mode 100644 server/src/services/Sales/SalesInvoices.ts delete mode 100644 server/src/services/Sales/SalesInvoicesCost.ts delete mode 100644 server/src/services/Sales/SalesReceipts.ts delete mode 100644 server/src/services/Sales/ServiceItemsEntries.js delete mode 100644 server/src/services/Sales/constants.ts delete mode 100644 server/src/services/SessionModel/SessionQueryBuilder.js delete mode 100644 server/src/services/SessionModel/index.js delete mode 100644 server/src/services/Settings/SettingsService.ts delete mode 100644 server/src/services/Settings/SettingsStore.ts delete mode 100644 server/src/services/Setup/SetupService.ts delete mode 100644 server/src/services/Subscription/MailMessages.ts delete mode 100644 server/src/services/Subscription/SMSMessages.ts delete mode 100644 server/src/services/Subscription/Subscription.ts delete mode 100644 server/src/services/Subscription/SubscriptionPeriod.ts delete mode 100644 server/src/services/Subscription/SubscriptionService.ts delete mode 100644 server/src/services/Subscription/SubscriptionViaLicense.ts delete mode 100644 server/src/services/Tenancy/SystemService.ts delete mode 100644 server/src/services/Tenancy/TenancyService.ts delete mode 100644 server/src/services/Tenancy/TenantDBManager.ts delete mode 100644 server/src/services/Tenancy/TenantService.ts delete mode 100644 server/src/services/Tenancy/TenantsManager.ts delete mode 100644 server/src/services/Users/UsersService.ts delete mode 100644 server/src/services/Views/ViewsService.ts delete mode 100644 server/src/subscribers/Bills/WriteInventoryTransactions.ts delete mode 100644 server/src/subscribers/Bills/WriteJournalEntries.ts delete mode 100644 server/src/subscribers/Bills/index.ts delete mode 100644 server/src/subscribers/Inventory/Inventory.ts delete mode 100644 server/src/subscribers/Inventory/InventoryAdjustment.ts delete mode 100644 server/src/subscribers/LandedCost/index.ts delete mode 100644 server/src/subscribers/SaleInvoices/WriteInventoryTransactions.ts delete mode 100644 server/src/subscribers/SaleInvoices/WriteJournalEntries.ts delete mode 100644 server/src/subscribers/SaleInvoices/index.ts delete mode 100644 server/src/subscribers/SaleReceipt/WriteInventoryTransactions.ts delete mode 100644 server/src/subscribers/SaleReceipt/WriteJournalEntries.ts delete mode 100644 server/src/subscribers/SaleReceipt/index.ts delete mode 100644 server/src/subscribers/authentication.ts delete mode 100644 server/src/subscribers/customers.ts delete mode 100644 server/src/subscribers/events.ts delete mode 100644 server/src/subscribers/expenses.ts delete mode 100644 server/src/subscribers/inviteUser.ts delete mode 100644 server/src/subscribers/items.ts delete mode 100644 server/src/subscribers/manualJournals.ts delete mode 100644 server/src/subscribers/organization.ts delete mode 100644 server/src/subscribers/paymentMades.ts delete mode 100644 server/src/subscribers/paymentReceives.ts delete mode 100644 server/src/subscribers/saleEstimates.ts delete mode 100644 server/src/subscribers/tenantManager.ts delete mode 100644 server/src/subscribers/users.ts delete mode 100644 server/src/subscribers/vendors.ts delete mode 100644 server/src/system/migrations/20190104195900_create_password_resets_table.js delete mode 100644 server/src/system/migrations/20200420134631_create_tenants_table.js delete mode 100644 server/src/system/migrations/20200420134633_create_users_table.js delete mode 100644 server/src/system/migrations/20200422225247_create_user_invites_table.js delete mode 100644 server/src/system/migrations/20200527091642_create_subscriptions_plans_table.js delete mode 100644 server/src/system/migrations/20200823234134_create_plans_table.js delete mode 100644 server/src/system/migrations/20200823234434_create_subscription_plan_feature.js delete mode 100644 server/src/system/migrations/20200823234636_create_subscription_plan_subscription.js delete mode 100644 server/src/system/migrations/20200823235339_create_subscription_licenses_table.js delete mode 100644 server/src/system/migrations/20200823235340_create_tenants_metadata_table.js delete mode 100644 server/src/system/models/Invite.js delete mode 100644 server/src/system/models/PasswordReset.js delete mode 100644 server/src/system/models/Subscriptions/License.js delete mode 100644 server/src/system/models/Subscriptions/Plan.js delete mode 100644 server/src/system/models/Subscriptions/PlanFeature.js delete mode 100644 server/src/system/models/Subscriptions/PlanSubscription.js delete mode 100644 server/src/system/models/SystemModel.js delete mode 100644 server/src/system/models/SystemUser.js delete mode 100644 server/src/system/models/Tenant.js delete mode 100644 server/src/system/models/TenantMetadata.js delete mode 100644 server/src/system/models/index.js delete mode 100644 server/src/system/repositories/SubscriptionRepository.ts delete mode 100644 server/src/system/repositories/SystemRepository.ts delete mode 100644 server/src/system/repositories/SystemUserRepository.ts delete mode 100644 server/src/system/repositories/TenantRepository.ts delete mode 100644 server/src/system/repositories/index.ts delete mode 100644 server/src/system/seeds/seed_subscriptions_plans.js delete mode 100644 server/src/utils/deepdash.ts delete mode 100644 server/src/utils/index.ts delete mode 100644 server/src/utils/table.ts delete mode 100644 server/tests/collection/NestedSet.test.js delete mode 100644 server/tests/dbInit.js delete mode 100644 server/tests/docker-compose.yml delete mode 100644 server/tests/lib/CachableModel.test.js delete mode 100644 server/tests/lib/MetableStore.test.ts delete mode 100644 server/tests/models/Account.test.js delete mode 100644 server/tests/models/AccountType.test.js delete mode 100644 server/tests/models/Expense.test.js delete mode 100644 server/tests/models/ExpenseCategory.test.js delete mode 100644 server/tests/models/Item.test.js delete mode 100644 server/tests/models/ItemCategories.test.js delete mode 100644 server/tests/models/Resource.test.js delete mode 100644 server/tests/models/User.test.js delete mode 100644 server/tests/models/View.test.js delete mode 100644 server/tests/mysql-tmpfs.sh delete mode 100644 server/tests/routes/accounting.test.js delete mode 100644 server/tests/routes/accounts.test.js delete mode 100644 server/tests/routes/auth.test.js delete mode 100644 server/tests/routes/balance_sheet.test.js delete mode 100644 server/tests/routes/bill_payments.test.js delete mode 100644 server/tests/routes/bills.test.js delete mode 100644 server/tests/routes/currencies.test.js delete mode 100644 server/tests/routes/customers.test.js delete mode 100644 server/tests/routes/exchange_rates.test.js delete mode 100644 server/tests/routes/expenses.test.js delete mode 100644 server/tests/routes/financial_statements.test.js delete mode 100644 server/tests/routes/inviteUsers.test.js delete mode 100644 server/tests/routes/items.test.js delete mode 100644 server/tests/routes/itemsCategories.test.js delete mode 100644 server/tests/routes/options.test.js delete mode 100644 server/tests/routes/payable_aging.test.js delete mode 100644 server/tests/routes/payment_receives.test.js delete mode 100644 server/tests/routes/receivable_aging.test.js delete mode 100644 server/tests/routes/sales_estimates.test.js delete mode 100644 server/tests/routes/sales_invoices.test.js delete mode 100644 server/tests/routes/sales_receipts.test.js delete mode 100644 server/tests/routes/users.test.js delete mode 100644 server/tests/routes/vendors.test.js delete mode 100644 server/tests/routes/views.test.js delete mode 100644 server/tests/services/JournalPoster.test.js delete mode 100644 server/tests/testInit.js delete mode 100644 server/tests/utils/utils.test.js delete mode 100644 server/tsconfig.json delete mode 100644 server/views/mail/LicenseReceive.html delete mode 100644 server/views/mail/ResetPassword.html delete mode 100644 server/views/mail/UserInvite.html delete mode 100644 server/views/mail/Welcome.html delete mode 100644 server/webpack.config.js rename client/setupProxy.js => setupProxy.js (100%) rename {client/src => src}/common/accountTypes.js (100%) rename {client/src => src}/common/adjustmentType.js (100%) rename {client/src => src}/common/allocateLandedCostType.js (100%) rename {client/src => src}/common/classes.js (100%) rename {client/src => src}/common/contactsOptions.js (100%) rename {client/src => src}/common/countries.js (100%) rename {client/src => src}/common/currencies.js (100%) rename {client/src => src}/common/dataTypes.js (100%) rename {client/src => src}/common/dateFormatsOptions.js (100%) rename {client/src => src}/common/drawers.js (100%) rename {client/src => src}/common/errors.js (100%) rename {client/src => src}/common/fiscalYearOptions.js (100%) rename {client/src => src}/common/homepageOptions.js (100%) rename {client/src => src}/common/keyboardShortcutsOptions.js (100%) rename {client/src => src}/common/languagesOptions.js (100%) rename {client/src => src}/common/numberFormatsOptions.js (100%) rename {client/src => src}/common/quickNewOptions.js (100%) rename {client/src => src}/common/registerWizard.js (100%) rename {client/src => src}/common/resourcesTypes.js (100%) rename {client/src => src}/common/subscriptionModels.js (100%) rename {client/src => src}/common/tables.js (100%) rename {client/src => src}/components/AccountsMultiSelect.js (100%) rename {client/src => src}/components/AccountsSelectList.js (100%) rename {client/src => src}/components/AccountsSuggestField.js (100%) rename {client/src => src}/components/AccountsTypesSelect.js (100%) rename {client/src => src}/components/AdvancedFilter/AdvancedFilter.schema.js (100%) rename {client/src => src}/components/AdvancedFilter/AdvancedFilterCompatatorField.js (100%) rename {client/src => src}/components/AdvancedFilter/AdvancedFilterDropdown.js (100%) rename {client/src => src}/components/AdvancedFilter/AdvancedFilterDropdownContext.js (100%) rename {client/src => src}/components/AdvancedFilter/AdvancedFilterPopover.js (100%) rename {client/src => src}/components/AdvancedFilter/AdvancedFilterValueField.js (100%) rename {client/src => src}/components/AdvancedFilter/components.js (100%) rename {client/src => src}/components/AdvancedFilter/interfaces.ts (100%) rename {client/src => src}/components/AdvancedFilter/utils.js (100%) rename {client/src => src}/components/Alert/index.js (100%) rename {client/src => src}/components/Alert/style.module.scss (100%) rename {client/src => src}/components/App.js (100%) rename {client/src => src}/components/AppIntlLoader.js (100%) rename {client/src => src}/components/AppIntlProvider.js (100%) rename {client/src => src}/components/AppToaster.js (100%) rename {client/src => src}/components/Authentication.js (100%) rename {client/src => src}/components/Card.js (100%) rename {client/src => src}/components/CategoriesSelectList.js (100%) rename {client/src => src}/components/CloudLoadingIndicator.js (100%) rename {client/src => src}/components/ContactSelecetList.js (100%) rename {client/src => src}/components/ContactsMultiSelect.js (100%) rename {client/src => src}/components/ContactsSuggestField.js (100%) rename {client/src => src}/components/ContextMenu.js (100%) rename {client/src => src}/components/CurrenciesSelectList.js (100%) rename {client/src => src}/components/CurrencySelectList.js (100%) rename {client/src => src}/components/CustomFields.js (100%) rename {client/src => src}/components/Dashboard/AuthenticatedUser.js (100%) rename {client/src => src}/components/Dashboard/BigcapitalLoading.js (100%) rename {client/src => src}/components/Dashboard/Dashboard.js (100%) rename {client/src => src}/components/Dashboard/DashboardActionViewsList.js (100%) rename {client/src => src}/components/Dashboard/DashboardActionsBar.js (100%) rename {client/src => src}/components/Dashboard/DashboardBackLink.js (100%) rename {client/src => src}/components/Dashboard/DashboardBoot.js (100%) rename {client/src => src}/components/Dashboard/DashboardBreadcrumbs.js (100%) rename {client/src => src}/components/Dashboard/DashboardCard.js (100%) rename {client/src => src}/components/Dashboard/DashboardContent.js (100%) rename {client/src => src}/components/Dashboard/DashboardContentRoute.js (100%) rename {client/src => src}/components/Dashboard/DashboardContentTable.js (100%) rename {client/src => src}/components/Dashboard/DashboardErrorBoundary.js (100%) rename {client/src => src}/components/Dashboard/DashboardFilterButton.js (100%) rename {client/src => src}/components/Dashboard/DashboardFooter.js (100%) rename {client/src => src}/components/Dashboard/DashboardInsider.js (100%) rename {client/src => src}/components/Dashboard/DashboardLoadingIndicator.js (100%) rename {client/src => src}/components/Dashboard/DashboardPage.js (100%) rename {client/src => src}/components/Dashboard/DashboardPageContent.js (100%) rename {client/src => src}/components/Dashboard/DashboardProvider.js (100%) rename {client/src => src}/components/Dashboard/DashboardRowsHeightButton.js (100%) rename {client/src => src}/components/Dashboard/DashboardSplitePane.js (100%) rename {client/src => src}/components/Dashboard/DashboardTopbar.js (100%) rename {client/src => src}/components/Dashboard/DashboardViewsTabs.js (100%) rename {client/src => src}/components/Dashboard/GlobalHotkeys.js (100%) rename {client/src => src}/components/Dashboard/PrivatePages.js (100%) rename {client/src => src}/components/Dashboard/PrivatePagesProvider.js (100%) rename {client/src => src}/components/Dashboard/SplashScreen.js (100%) rename {client/src => src}/components/Dashboard/TopbarUser.js (100%) rename {client/src => src}/components/Dashboard/index.js (100%) rename {client/src => src}/components/DataTable.js (100%) rename {client/src => src}/components/DataTableCells/AccountsListFieldCell.js (100%) rename {client/src => src}/components/DataTableCells/CheckBoxFieldCell.js (100%) rename {client/src => src}/components/DataTableCells/ContactsListFieldCell.js (100%) rename {client/src => src}/components/DataTableCells/DivFieldCell.js (100%) rename {client/src => src}/components/DataTableCells/InputGroupCell.js (100%) rename {client/src => src}/components/DataTableCells/ItemsListCell.js (100%) rename {client/src => src}/components/DataTableCells/MoneyFieldCell.js (100%) rename {client/src => src}/components/DataTableCells/NumericInputCell.js (100%) rename {client/src => src}/components/DataTableCells/PaymentReceiveListFieldCell.js (100%) rename {client/src => src}/components/DataTableCells/PercentFieldCell.js (100%) rename {client/src => src}/components/DataTableCells/index.js (100%) rename {client/src => src}/components/Datatable/Cells.js (100%) rename {client/src => src}/components/Datatable/DatatableEditable.js (100%) rename {client/src => src}/components/Datatable/TableBody.js (100%) rename {client/src => src}/components/Datatable/TableCell.js (100%) rename {client/src => src}/components/Datatable/TableContext.js (100%) rename {client/src => src}/components/Datatable/TableFastCell.js (100%) rename {client/src => src}/components/Datatable/TableFooter.js (100%) rename {client/src => src}/components/Datatable/TableHeader.js (100%) rename {client/src => src}/components/Datatable/TableHeaderSkeleton.js (100%) rename {client/src => src}/components/Datatable/TableIndeterminateCheckboxHeader.js (100%) rename {client/src => src}/components/Datatable/TableIndeterminateCheckboxRow.js (100%) rename {client/src => src}/components/Datatable/TableLoading.js (100%) rename {client/src => src}/components/Datatable/TableNoResultsRow.js (100%) rename {client/src => src}/components/Datatable/TablePage.js (100%) rename {client/src => src}/components/Datatable/TablePagination.js (100%) rename {client/src => src}/components/Datatable/TableRow.js (100%) rename {client/src => src}/components/Datatable/TableRows.js (100%) rename {client/src => src}/components/Datatable/TableSkeletonRows.js (100%) rename {client/src => src}/components/Datatable/TableTBody.js (100%) rename {client/src => src}/components/Datatable/TableVirtualizedRows.js (100%) rename {client/src => src}/components/Datatable/TableWrapper.js (100%) rename {client/src => src}/components/Datatable/utils.js (100%) rename {client/src => src}/components/Details/index.js (100%) rename {client/src => src}/components/Dialog/Dialog.js (100%) rename {client/src => src}/components/Dialog/DialogContent.js (100%) rename {client/src => src}/components/Dialog/DialogSuspense.js (100%) rename {client/src => src}/components/DialogReduxConnect.js (100%) rename {client/src => src}/components/DialogsContainer.js (100%) rename {client/src => src}/components/DisplayNameList.js (100%) rename {client/src => src}/components/Dragzone.js (100%) rename {client/src => src}/components/Drawer/Drawer.js (100%) rename {client/src => src}/components/Drawer/DrawerHeaderContent.js (100%) rename {client/src => src}/components/Drawer/DrawerInsider.js (100%) rename {client/src => src}/components/Drawer/DrawerMainTabs.js (100%) rename {client/src => src}/components/Drawer/DrawerSuspense.js (100%) rename {client/src => src}/components/Drawer/index.js (100%) rename {client/src => src}/components/DrawersContainer.js (100%) rename {client/src => src}/components/EmptyStatus.js (100%) rename {client/src => src}/components/ErrorBoundary/index.js (100%) rename {client/src => src}/components/ErrorMessage.js (100%) rename {client/src => src}/components/FieldHint.js (100%) rename {client/src => src}/components/FieldRequiredHint.js (100%) rename {client/src => src}/components/FinancialSheet.js (100%) rename {client/src => src}/components/FinancialStatement.js (100%) rename {client/src => src}/components/FormattedMessage.js (100%) rename {client/src => src}/components/Forms/Checkbox.tsx (100%) rename {client/src => src}/components/Forms/FormObserver.js (100%) rename {client/src => src}/components/Forms/InputPrepend.js (100%) rename {client/src => src}/components/Forms/InputPrependButton.js (100%) rename {client/src => src}/components/Forms/InputPrependOptions.js (100%) rename {client/src => src}/components/Forms/InputPrependText.js (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/CurrencyInputProps.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/index.tsx (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/__tests__/addSeparators.spec.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/__tests__/cleanValue.spec.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/__tests__/fixedDecimalValue.spec.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/__tests__/formatValue.spec.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/__tests__/isNumber.spec.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/__tests__/padTrimValue.spec.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/__tests__/parseAbbrValue.spec.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/__tests__/removeInvalidChars.spec.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/__tests__/removeSeparators.spec.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/addSeparators.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/cleanValue.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/escapeRegExp.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/fixedDecimalValue.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/formatValue.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/index.tsx (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/isNumber.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/padTrimValue.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/parseAbbrValue.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/removeInvalidChars.ts (100%) rename {client/src => src}/components/Forms/MoneyInputGroup/utils/removeSeparators.ts (100%) rename {client/src => src}/components/Forms/index.js (100%) rename {client/src => src}/components/Grid/Col.js (100%) rename {client/src => src}/components/Grid/Row.js (100%) rename {client/src => src}/components/Guards/EnsureOrganizationIsNotReady.js (100%) rename {client/src => src}/components/Guards/EnsureOrganizationIsReady.js (100%) rename {client/src => src}/components/Guards/EnsureSubscriptionIsActive.js (100%) rename {client/src => src}/components/Guards/EnsureSubscriptionsIsActive.js (100%) rename {client/src => src}/components/Guards/EnsureSubscriptionsIsInactive.js (100%) rename {client/src => src}/components/Guards/PrivateRoute.js (100%) rename {client/src => src}/components/Icon.js (100%) rename {client/src => src}/components/Items/ItemsMultiSelect.js (100%) rename {client/src => src}/components/Items/index.js (100%) rename {client/src => src}/components/ItemsListField.js (100%) rename {client/src => src}/components/ItemsSuggestField.js (100%) rename {client/src => src}/components/LazyLoader.js (100%) rename {client/src => src}/components/ListSelect.js (100%) rename {client/src => src}/components/LoadingIndicator.js (100%) rename {client/src => src}/components/MaterialProgressBar.js (100%) rename {client/src => src}/components/Menu/index.js (100%) rename {client/src => src}/components/MenuItem.js (100%) rename {client/src => src}/components/MenuItemLabel.js (100%) rename {client/src => src}/components/Money.js (100%) rename {client/src => src}/components/MoneyExchangeRate.js (100%) rename {client/src => src}/components/MultiSelect.js (100%) rename {client/src => src}/components/MultiSelectTaggable/index.js (100%) rename {client/src => src}/components/NProgress/AppProgress.js (100%) rename {client/src => src}/components/NProgress/Bar.js (100%) rename {client/src => src}/components/NProgress/Container.js (100%) rename {client/src => src}/components/NProgress/Progress.js (100%) rename {client/src => src}/components/NProgress/Spinner.js (100%) rename {client/src => src}/components/NumberFormatDropdown/NumberFormatFields.js (100%) rename {client/src => src}/components/NumberFormatDropdown/NumberFormatFooter.js (100%) rename {client/src => src}/components/NumberFormatDropdown/NumberFormats.schema.js (100%) rename {client/src => src}/components/NumberFormatDropdown/index.js (100%) rename {client/src => src}/components/PageFormBigNumber.js (100%) rename {client/src => src}/components/Pagination.js (100%) rename {client/src => src}/components/PaymentReceiveListField.js (100%) rename {client/src => src}/components/PdfPreview/index.js (100%) rename {client/src => src}/components/Postbox.js (100%) rename {client/src => src}/components/Preferences/PreferencesContentRoute.js (100%) rename {client/src => src}/components/Preferences/PreferencesPage.js (100%) rename {client/src => src}/components/Preferences/PreferencesSidebar.js (100%) rename {client/src => src}/components/Preferences/PreferencesSidebarContainer.js (100%) rename {client/src => src}/components/Preferences/PreferencesSubContent.js (100%) rename {client/src => src}/components/Preferences/PreferencesTopbar.js (100%) rename {client/src => src}/components/RequiredHint.js (100%) rename {client/src => src}/components/SalutationList.js (100%) rename {client/src => src}/components/SelectList.js (100%) rename {client/src => src}/components/Sidebar/Sidebar.js (100%) rename {client/src => src}/components/Sidebar/SidebarContainer.js (100%) rename {client/src => src}/components/Sidebar/SidebarHead.js (100%) rename {client/src => src}/components/Sidebar/SidebarMenu.js (100%) rename {client/src => src}/components/SidebarOverlay/SidebarOverlayContainer.tsx (100%) rename {client/src => src}/components/SidebarOverlay/index.tsx (100%) rename {client/src => src}/components/Skeleton.js (100%) rename {client/src => src}/components/Subscriptions/index.js (100%) rename {client/src => src}/components/TotalLines/TotalLines.module.scss (100%) rename {client/src => src}/components/TotalLines/index.js (100%) rename {client/src => src}/components/UniversalSearch/UniversalSearch.js (100%) rename {client/src => src}/components/UniversalSearch/UniversalSearchProvider.js (100%) rename {client/src => src}/components/UniversalSearch/utils.js (100%) rename {client/src => src}/components/Utils/Choose.js (100%) rename {client/src => src}/components/Utils/For.js (100%) rename {client/src => src}/components/Utils/FormatDate.js (100%) rename {client/src => src}/components/Utils/FormatNumber.js (100%) rename {client/src => src}/components/Utils/If.js (100%) rename {client/src => src}/components/Utils/index.js (100%) rename {client/src => src}/components/index.js (100%) rename {client/src => src}/components/modifiers.js (100%) rename {client/src => src}/components/utils.js (100%) rename {client/src => src}/config/app.js (100%) rename {client/src => src}/config/financialReportsMenu.js (100%) rename {client/src => src}/config/footerLinks.js (100%) rename {client/src => src}/config/preferencesMenu.js (100%) rename {client/src => src}/config/sidebarMenu.js (100%) rename {client/src => src}/containers/Accounting/JournalsLanding/ManualJournalActionsBar.js (100%) rename {client/src => src}/containers/Accounting/JournalsLanding/ManualJournalsAlerts.js (100%) rename {client/src => src}/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js (100%) rename {client/src => src}/containers/Accounting/JournalsLanding/ManualJournalsEmptyStatus.js (100%) rename {client/src => src}/containers/Accounting/JournalsLanding/ManualJournalsList.js (100%) rename {client/src => src}/containers/Accounting/JournalsLanding/ManualJournalsListProvider.js (100%) rename {client/src => src}/containers/Accounting/JournalsLanding/ManualJournalsViewTabs.js (100%) rename {client/src => src}/containers/Accounting/JournalsLanding/components.js (100%) rename {client/src => src}/containers/Accounting/JournalsLanding/utils.js (100%) rename {client/src => src}/containers/Accounting/JournalsLanding/withManualJournals.js (100%) rename {client/src => src}/containers/Accounting/JournalsLanding/withManualJournalsActions.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalEntries.schema.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalEntriesField.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalEntriesFooter.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalEntriesForm.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalEntriesHeader.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalEntriesPage.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalEntriesTable.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalFormDialogs.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalFormFloatingActions.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalFormFooter.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/MakeJournalProvider.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/components.js (100%) rename {client/src => src}/containers/Accounting/MakeJournal/utils.js (100%) rename {client/src => src}/containers/Accounting/ManualJournalUniversalSearch.js (100%) rename {client/src => src}/containers/Accounts/AccountUniversalSearch.js (100%) rename {client/src => src}/containers/Accounts/AccountsActionsBar.js (100%) rename {client/src => src}/containers/Accounts/AccountsAlerts.js (100%) rename {client/src => src}/containers/Accounts/AccountsChart.js (100%) rename {client/src => src}/containers/Accounts/AccountsChartProvider.js (100%) rename {client/src => src}/containers/Accounts/AccountsDataTable.js (100%) rename {client/src => src}/containers/Accounts/AccountsViewsTabs.js (100%) rename {client/src => src}/containers/Accounts/components.js (100%) rename {client/src => src}/containers/Accounts/utils.js (100%) rename {client/src => src}/containers/Accounts/withAccounts.js (100%) rename {client/src => src}/containers/Accounts/withAccountsTableActions.js (100%) rename {client/src => src}/containers/Alert/withAlertActions.js (100%) rename {client/src => src}/containers/Alert/withAlertStoreConnect.js (100%) rename {client/src => src}/containers/Alerts/AccountActivateAlert.js (100%) rename {client/src => src}/containers/Alerts/AccountBulkActivateAlert.js (100%) rename {client/src => src}/containers/Alerts/AccountBulkDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/AccountBulkInactivateAlert.js (100%) rename {client/src => src}/containers/Alerts/AccountDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/AccountInactivateAlert.js (100%) rename {client/src => src}/containers/Alerts/Bills/BillDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Bills/BillLocatedLandedCostDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Bills/BillOpenAlert.js (100%) rename {client/src => src}/containers/Alerts/Contacts/ContactActivateAlert.js (100%) rename {client/src => src}/containers/Alerts/Contacts/ContactInactivateAlert.js (100%) rename {client/src => src}/containers/Alerts/Currencies/CurrencyDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Customers/CustomerBulkDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Customers/CustomerDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Estimates/EstimateApproveAlert.js (100%) rename {client/src => src}/containers/Alerts/Estimates/EstimateDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Estimates/EstimateDeliveredAlert.js (100%) rename {client/src => src}/containers/Alerts/Estimates/EstimateRejectAlert.js (100%) rename {client/src => src}/containers/Alerts/ExchangeRates/ExchangeRateBulkDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/ExchangeRates/ExchangeRateDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Expenses/ExpenseBulkDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Expenses/ExpenseDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Expenses/ExpenseDeleteEntriesAlert.js (100%) rename {client/src => src}/containers/Alerts/Expenses/ExpensePublishAlert.js (100%) rename {client/src => src}/containers/Alerts/Invoices/InvoiceDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Invoices/InvoiceDeliverAlert.js (100%) rename {client/src => src}/containers/Alerts/Items/InventoryAdjustmentDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Items/InventoryAdjustmentPublishAlert.js (100%) rename {client/src => src}/containers/Alerts/Items/ItemActivateAlert.js (100%) rename {client/src => src}/containers/Alerts/Items/ItemBulkDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Items/ItemCategoryBulkDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Items/ItemCategoryDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Items/ItemDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Items/ItemInactivateAlert.js (100%) rename {client/src => src}/containers/Alerts/ItemsEntries/ItemsEntriesDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/ManualJournals/JournalBulkDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/ManualJournals/JournalDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/ManualJournals/JournalDeleteEntriesAlert.js (100%) rename {client/src => src}/containers/Alerts/ManualJournals/JournalPublishAlert.js (100%) rename {client/src => src}/containers/Alerts/PaymentMades/ChangingFullAmountAlert.js (100%) rename {client/src => src}/containers/Alerts/PaymentMades/ClearTransactionAlert.js (100%) rename {client/src => src}/containers/Alerts/PaymentMades/ClearningAllLinesAlert.js (100%) rename {client/src => src}/containers/Alerts/PaymentMades/PaymentMadeDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/PaymentReceives/ClearingAllLinesAlert.js (100%) rename {client/src => src}/containers/Alerts/PaymentReceives/PaymentReceiveDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Receipts/ReceiptCloseAlert.js (100%) rename {client/src => src}/containers/Alerts/Receipts/ReceiptDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Users/UserActivateAlert.js (100%) rename {client/src => src}/containers/Alerts/Users/UserDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/Users/UserInactivateAlert.js (100%) rename {client/src => src}/containers/Alerts/Vendors/VendorDeleteAlert.js (100%) rename {client/src => src}/containers/Alerts/index.js (100%) rename {client/src => src}/containers/Authentication/AuthCopyright.js (100%) rename {client/src => src}/containers/Authentication/AuthInsider.js (100%) rename {client/src => src}/containers/Authentication/AuthenticationBoot.js (100%) rename {client/src => src}/containers/Authentication/InviteAccept.js (100%) rename {client/src => src}/containers/Authentication/InviteAcceptForm.js (100%) rename {client/src => src}/containers/Authentication/InviteAcceptFormContent.js (100%) rename {client/src => src}/containers/Authentication/InviteAcceptProvider.js (100%) rename {client/src => src}/containers/Authentication/Login.js (100%) rename {client/src => src}/containers/Authentication/LoginForm.js (100%) rename {client/src => src}/containers/Authentication/Register.js (100%) rename {client/src => src}/containers/Authentication/RegisterForm.js (100%) rename {client/src => src}/containers/Authentication/ResetPassword.js (100%) rename {client/src => src}/containers/Authentication/ResetPasswordForm.js (100%) rename {client/src => src}/containers/Authentication/SendResetPassword.js (100%) rename {client/src => src}/containers/Authentication/SendResetPasswordForm.js (100%) rename {client/src => src}/containers/Authentication/components.js (100%) rename {client/src => src}/containers/Authentication/utils.js (100%) rename {client/src => src}/containers/Authentication/withAuthentication.js (100%) rename {client/src => src}/containers/Authentication/withAuthenticationActions.js (100%) rename {client/src => src}/containers/Currencies/withCurrencies.js (100%) rename {client/src => src}/containers/Currencies/withCurrenciesActions.js (100%) rename {client/src => src}/containers/Currencies/withCurrencyDetail.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerAddressTabs.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerAttachmentTabs.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerFinancialPanel.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerFloatingActions.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerForm.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerForm.schema.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerFormAfterPrimarySection.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerFormPage.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerFormPrimarySection.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerFormProvider.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerNotePanel.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomerTypeRadioField.js (100%) rename {client/src => src}/containers/Customers/CustomerForm/CustomersTabs.js (100%) rename {client/src => src}/containers/Customers/CustomersAlerts.js (100%) rename {client/src => src}/containers/Customers/CustomersLanding/CustomersActionsBar.js (100%) rename {client/src => src}/containers/Customers/CustomersLanding/CustomersEmptyStatus.js (100%) rename {client/src => src}/containers/Customers/CustomersLanding/CustomersList.js (100%) rename {client/src => src}/containers/Customers/CustomersLanding/CustomersListProvider.js (100%) rename {client/src => src}/containers/Customers/CustomersLanding/CustomersTable.js (100%) rename {client/src => src}/containers/Customers/CustomersLanding/CustomersViewsTabs.js (100%) rename {client/src => src}/containers/Customers/CustomersLanding/components.js (100%) rename {client/src => src}/containers/Customers/CustomersLanding/utils.js (100%) rename {client/src => src}/containers/Customers/CustomersLanding/withCustomers.js (100%) rename {client/src => src}/containers/Customers/CustomersLanding/withCustomersActions.js (100%) rename {client/src => src}/containers/Customers/CustomersUniversalSearch.js (100%) rename {client/src => src}/containers/Customers/utils.js (100%) rename {client/src => src}/containers/Customers/withCustomerDetail.js (100%) rename {client/src => src}/containers/Dashboard/withDashboard.js (100%) rename {client/src => src}/containers/Dashboard/withDashboardActions.js (100%) rename {client/src => src}/containers/Dialog/withDialogActions.js (100%) rename {client/src => src}/containers/Dialogs/AccountDialog/AccountDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/AccountDialog/AccountDialogForm.js (100%) rename {client/src => src}/containers/Dialogs/AccountDialog/AccountDialogFormContent.js (100%) rename {client/src => src}/containers/Dialogs/AccountDialog/AccountDialogProvider.js (100%) rename {client/src => src}/containers/Dialogs/AccountDialog/AccountForm.schema.js (100%) rename {client/src => src}/containers/Dialogs/AccountDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/AccountDialog/utils.js (100%) rename {client/src => src}/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostDialogProvider.js (100%) rename {client/src => src}/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostEntriesTable.js (100%) rename {client/src => src}/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFloatingActions.js (100%) rename {client/src => src}/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostForm.js (100%) rename {client/src => src}/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostForm.schema.js (100%) rename {client/src => src}/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormBody.js (100%) rename {client/src => src}/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormContent.js (100%) rename {client/src => src}/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormFields.js (100%) rename {client/src => src}/containers/Dialogs/AllocateLandedCostDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/AllocateLandedCostDialog/utils.js (100%) rename {client/src => src}/containers/Dialogs/BillNumberDialog/BillNumberDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/BillNumberDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateForm.js (100%) rename {client/src => src}/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateProvider.js (100%) rename {client/src => src}/containers/Dialogs/ContactDuplicateDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/CurrencyFormDialog/CurrencyForm.js (100%) rename {client/src => src}/containers/Dialogs/CurrencyFormDialog/CurrencyForm.schema.js (100%) rename {client/src => src}/containers/Dialogs/CurrencyFormDialog/CurrencyFormContent.js (100%) rename {client/src => src}/containers/Dialogs/CurrencyFormDialog/CurrencyFormDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/CurrencyFormDialog/CurrencyFormFields.js (100%) rename {client/src => src}/containers/Dialogs/CurrencyFormDialog/CurrencyFormFooter.js (100%) rename {client/src => src}/containers/Dialogs/CurrencyFormDialog/CurrencyFormProvider.js (100%) rename {client/src => src}/containers/Dialogs/CurrencyFormDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/EstimateNumberDialog/EstimateNumberDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/EstimateNumberDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/EstimatePdfPreviewDialog/EstimatePdfPreviewDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/EstimatePdfPreviewDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateForm.js (100%) rename {client/src => src}/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateForm.schema.js (100%) rename {client/src => src}/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormContent.js (100%) rename {client/src => src}/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormFields.js (100%) rename {client/src => src}/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormFooter.js (100%) rename {client/src => src}/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormProvider.js (100%) rename {client/src => src}/containers/Dialogs/ExchangeRateFormDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/ExportDialog.js (100%) rename {client/src => src}/containers/Dialogs/ImportDialog.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/DecrementAdjustmentFields.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/IncrementAdjustmentFields.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFloatingActions.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentForm.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentForm.schema.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormContent.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormDialogFields.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormProvider.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentQuantityFields.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/InventoryAdjustmentFormDialog/utils.js (100%) rename {client/src => src}/containers/Dialogs/InviteUserDialog/InviteUserDialog.schema.js (100%) rename {client/src => src}/containers/Dialogs/InviteUserDialog/InviteUserDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/InviteUserDialog/InviteUserForm.js (100%) rename {client/src => src}/containers/Dialogs/InviteUserDialog/InviteUserFormContent.js (100%) rename {client/src => src}/containers/Dialogs/InviteUserDialog/InviteUserFormProvider.js (100%) rename {client/src => src}/containers/Dialogs/InviteUserDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/InviteUserDialog/utils.js (100%) rename {client/src => src}/containers/Dialogs/InvoiceNumberDialog/InvoiceNumberDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/InvoiceNumberDialog/InvoiceNumberDialogProvider.js (100%) rename {client/src => src}/containers/Dialogs/InvoiceNumberDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/InvoicePdfPreviewDialog/InvoicePdfPreviewDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/InvoicePdfPreviewDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/ItemCategoryDialog/ItemCategoryForm.js (100%) rename {client/src => src}/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormContent.js (100%) rename {client/src => src}/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormFields.js (100%) rename {client/src => src}/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormFooter.js (100%) rename {client/src => src}/containers/Dialogs/ItemCategoryDialog/ItemCategoryProvider.js (100%) rename {client/src => src}/containers/Dialogs/ItemCategoryDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/ItemCategoryDialog/itemCategoryForm.schema.js (100%) rename {client/src => src}/containers/Dialogs/JournalNumberDialog/JournalNumberDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/JournalNumberDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/PaymentReceiveNumberDialog/PaymentReceiveNumberDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/PaymentReceiveNumberDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/PaymentViaVoucherDialog/PaymentViaVoucherDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/PaymentViaVoucherDialog/PaymentViaVoucherForm.js (100%) rename {client/src => src}/containers/Dialogs/PaymentViaVoucherDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMade.schema.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFloatingActions.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeForm.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormContent.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormFields.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormProvider.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentMadeFormDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentMadeFormDialog/utils.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceive.schema.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFloatingActions.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveForm.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormContent.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormFields.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormProvider.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentReceiveFormDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/QuickPaymentReceiveFormDialog/utils.js (100%) rename {client/src => src}/containers/Dialogs/ReceiptNumberDialog/ReceiptNumberDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/ReceiptNumberDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/ReceiptPdfPreviewDialog/ReceiptPdfPreviewDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/ReceiptPdfPreviewDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/UserFormDialog.connector.js (100%) rename {client/src => src}/containers/Dialogs/UserFormDialog/UserForm.js (100%) rename {client/src => src}/containers/Dialogs/UserFormDialog/UserForm.schema.js (100%) rename {client/src => src}/containers/Dialogs/UserFormDialog/UserFormContent.js (100%) rename {client/src => src}/containers/Dialogs/UserFormDialog/UserFormDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/UserFormDialog/UserFormProvider.js (100%) rename {client/src => src}/containers/Dialogs/UserFormDialog/index.js (100%) rename {client/src => src}/containers/Dialogs/UsersListDialog.connector.js (100%) rename {client/src => src}/containers/Dialogs/keyboardShortcutsDialog/KeyboardShortcutsDialogContent.js (100%) rename {client/src => src}/containers/Dialogs/keyboardShortcutsDialog/KeyboardShortcutsFooter.js (100%) rename {client/src => src}/containers/Dialogs/keyboardShortcutsDialog/index.js (100%) rename {client/src => src}/containers/Drawer/withDrawerActions.js (100%) rename {client/src => src}/containers/Drawer/withDrawers.js (100%) rename {client/src => src}/containers/Drawers/AccountDrawer/AccountDrawerActionBar.js (100%) rename {client/src => src}/containers/Drawers/AccountDrawer/AccountDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/AccountDrawer/AccountDrawerDetails.js (100%) rename {client/src => src}/containers/Drawers/AccountDrawer/AccountDrawerHeader.js (100%) rename {client/src => src}/containers/Drawers/AccountDrawer/AccountDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/AccountDrawer/AccountDrawerTable.js (100%) rename {client/src => src}/containers/Drawers/AccountDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/AccountDrawer/utils.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/BillDetailActionsBar.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/BillDetailFooter.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/BillDetailHeader.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/BillDetailTab.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/BillDetailTable.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/BillDrawerAlerts.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/BillDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/BillDrawerDetails.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/BillDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/LocatedLandedCostTable.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/components.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/BillDrawer/utils.js (100%) rename {client/src => src}/containers/Drawers/ContactDetailDrawer/ContactDetail.js (100%) rename {client/src => src}/containers/Drawers/ContactDetailDrawer/ContactDetailActionsBar.js (100%) rename {client/src => src}/containers/Drawers/ContactDetailDrawer/ContactDetailDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/ContactDetailDrawer/ContactDetailDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/ContactDetailDrawer/ContactDetailList.js (100%) rename {client/src => src}/containers/Drawers/ContactDetailDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/CustomerDetailsDrawer/CustomerDetails.js (100%) rename {client/src => src}/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsActionsBar.js (100%) rename {client/src => src}/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawer.module.scss (100%) rename {client/src => src}/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsHeader.js (100%) rename {client/src => src}/containers/Drawers/CustomerDetailsDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/EstimateDetailDrawer/EstimateDetail.js (100%) rename {client/src => src}/containers/Drawers/EstimateDetailDrawer/EstimateDetailActionsBar.js (100%) rename {client/src => src}/containers/Drawers/EstimateDetailDrawer/EstimateDetailDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/EstimateDetailDrawer/EstimateDetailDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/EstimateDetailDrawer/EstimateDetailFooter.js (100%) rename {client/src => src}/containers/Drawers/EstimateDetailDrawer/EstimateDetailHeader.js (100%) rename {client/src => src}/containers/Drawers/EstimateDetailDrawer/EstimateDetailPanel.js (100%) rename {client/src => src}/containers/Drawers/EstimateDetailDrawer/EstimateDetailTable.js (100%) rename {client/src => src}/containers/Drawers/EstimateDetailDrawer/EstimateDrawerClasses.js (100%) rename {client/src => src}/containers/Drawers/EstimateDetailDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/EstimateDetailDrawer/utils.js (100%) rename {client/src => src}/containers/Drawers/ExpenseDrawer/ExpenseDrawerActionBar.js (100%) rename {client/src => src}/containers/Drawers/ExpenseDrawer/ExpenseDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/ExpenseDrawer/ExpenseDrawerDetails.js (100%) rename {client/src => src}/containers/Drawers/ExpenseDrawer/ExpenseDrawerFooter.js (100%) rename {client/src => src}/containers/Drawers/ExpenseDrawer/ExpenseDrawerHeader.js (100%) rename {client/src => src}/containers/Drawers/ExpenseDrawer/ExpenseDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/ExpenseDrawer/ExpenseDrawerTable.js (100%) rename {client/src => src}/containers/Drawers/ExpenseDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/ExpenseDrawer/utils.js (100%) rename {client/src => src}/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetail.js (100%) rename {client/src => src}/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailActionsBar.js (100%) rename {client/src => src}/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailHeader.js (100%) rename {client/src => src}/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailTable.js (100%) rename {client/src => src}/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/InventoryAdjustmentDetailDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/InventoryAdjustmentDetailDrawer/utils.js (100%) rename {client/src => src}/containers/Drawers/InvoiceDetailDrawer/InvoiceDetail.js (100%) rename {client/src => src}/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailActionsBar.js (100%) rename {client/src => src}/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailFooter.js (100%) rename {client/src => src}/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailHeader.js (100%) rename {client/src => src}/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailTab.js (100%) rename {client/src => src}/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailTable.js (100%) rename {client/src => src}/containers/Drawers/InvoiceDetailDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/InvoiceDetailDrawer/utils.js (100%) rename {client/src => src}/containers/Drawers/ItemDetailDrawer/ItemContentDetails.js (100%) rename {client/src => src}/containers/Drawers/ItemDetailDrawer/ItemDetailActionsBar.js (100%) rename {client/src => src}/containers/Drawers/ItemDetailDrawer/ItemDetailDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/ItemDetailDrawer/ItemDetailDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/ItemDetailDrawer/ItemDetailHeader.js (100%) rename {client/src => src}/containers/Drawers/ItemDetailDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerActionBar.js (100%) rename {client/src => src}/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerDetails.js (100%) rename {client/src => src}/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerFooter.js (100%) rename {client/src => src}/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerHeader.js (100%) rename {client/src => src}/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerTable.js (100%) rename {client/src => src}/containers/Drawers/ManualJournalDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/ManualJournalDrawer/utils.js (100%) rename {client/src => src}/containers/Drawers/PaperTemplate/PaperTemplate.js (100%) rename {client/src => src}/containers/Drawers/PaperTemplate/PaperTemplateFooter.js (100%) rename {client/src => src}/containers/Drawers/PaperTemplate/PaperTemplateHeader.js (100%) rename {client/src => src}/containers/Drawers/PaperTemplate/PaperTemplateTable.js (100%) rename {client/src => src}/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailActionsBar.js (100%) rename {client/src => src}/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailContent.js (100%) rename {client/src => src}/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailFooter.js (100%) rename {client/src => src}/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.js (100%) rename {client/src => src}/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailProvider.js (100%) rename {client/src => src}/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTab.js (100%) rename {client/src => src}/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTable.js (100%) rename {client/src => src}/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetails.js (100%) rename {client/src => src}/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDrawer.module.scss (100%) rename {client/src => src}/containers/Drawers/PaymentMadeDetailDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/PaymentMadeDetailDrawer/utils.js (100%) rename {client/src => src}/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplate.js (100%) rename {client/src => src}/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplateHeader.js (100%) rename {client/src => src}/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplateTable.js (100%) rename {client/src => src}/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveActionsBar.js (100%) rename {client/src => src}/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetail.js (100%) rename {client/src => src}/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailContent.js (100%) rename {client/src => src}/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailFooter.js (100%) rename {client/src => src}/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailHeader.js (100%) rename {client/src => src}/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailProvider.js (100%) rename {client/src => src}/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailTab.js (100%) rename {client/src => src}/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailTable.js (100%) rename {client/src => src}/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDrawer.module.scss (100%) rename {client/src => src}/containers/Drawers/PaymentReceiveDetailDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/PaymentReceiveDetailDrawer/utils.js (100%) rename {client/src => src}/containers/Drawers/ReceiptDetailDrawer/ReceiptDetail.js (100%) rename {client/src => src}/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailActionBar.js (100%) rename {client/src => src}/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailFooter.js (100%) rename {client/src => src}/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailHeader.js (100%) rename {client/src => src}/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailTab.js (100%) rename {client/src => src}/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailTable.js (100%) rename {client/src => src}/containers/Drawers/ReceiptDetailDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/ReceiptDetailDrawer/utils.js (100%) rename {client/src => src}/containers/Drawers/VendorDetailsDrawer/VendorDetails.js (100%) rename {client/src => src}/containers/Drawers/VendorDetailsDrawer/VendorDetailsActionsBar.js (100%) rename {client/src => src}/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawer.module.scss (100%) rename {client/src => src}/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawerContent.js (100%) rename {client/src => src}/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawerProvider.js (100%) rename {client/src => src}/containers/Drawers/VendorDetailsDrawer/VendorDetailsHeader.js (100%) rename {client/src => src}/containers/Drawers/VendorDetailsDrawer/index.js (100%) rename {client/src => src}/containers/Drawers/components.js (100%) rename {client/src => src}/containers/Entries/ItemsEntriesTable.js (100%) rename {client/src => src}/containers/Entries/components.js (100%) rename {client/src => src}/containers/Entries/utils.js (100%) rename {client/src => src}/containers/ExchangeRates/ExchangeRateActionsBar.js (100%) rename {client/src => src}/containers/ExchangeRates/ExchangeRateTable.js (100%) rename {client/src => src}/containers/ExchangeRates/ExchangeRatesAlerts.js (100%) rename {client/src => src}/containers/ExchangeRates/ExchangeRatesList.js (100%) rename {client/src => src}/containers/ExchangeRates/ExchangeRatesProvider.js (100%) rename {client/src => src}/containers/ExchangeRates/components.js (100%) rename {client/src => src}/containers/ExchangeRates/withExchangeRateDetail.js (100%) rename {client/src => src}/containers/ExchangeRates/withExchangeRates.js (100%) rename {client/src => src}/containers/ExchangeRates/withExchangeRatesActions.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/ExpenseFloatingActions.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/ExpenseForm.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/ExpenseForm.schema.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/ExpenseFormBody.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/ExpenseFormEntriesField.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/ExpenseFormEntriesTable.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/ExpenseFormFooter.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/ExpenseFormHeader.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/ExpenseFormHeaderFields.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/ExpenseFormPage.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/ExpenseFormPageProvider.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/components.js (100%) rename {client/src => src}/containers/Expenses/ExpenseForm/utils.js (100%) rename {client/src => src}/containers/Expenses/ExpenseUniversalSearch.js (100%) rename {client/src => src}/containers/Expenses/ExpensesAlerts.js (100%) rename {client/src => src}/containers/Expenses/ExpensesLanding/ExpenseActionsBar.js (100%) rename {client/src => src}/containers/Expenses/ExpensesLanding/ExpenseDataTable.js (100%) rename {client/src => src}/containers/Expenses/ExpensesLanding/ExpenseViewTabs.js (100%) rename {client/src => src}/containers/Expenses/ExpensesLanding/ExpensesEmptyStatus.js (100%) rename {client/src => src}/containers/Expenses/ExpensesLanding/ExpensesList.js (100%) rename {client/src => src}/containers/Expenses/ExpensesLanding/ExpensesListProvider.js (100%) rename {client/src => src}/containers/Expenses/ExpensesLanding/components.js (100%) rename {client/src => src}/containers/Expenses/ExpensesLanding/withExpenses.js (100%) rename {client/src => src}/containers/Expenses/ExpensesLanding/withExpensesActions.js (100%) rename {client/src => src}/containers/Expenses/withExpenseDetail.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/APAgingSummary.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/APAgingSummaryActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/APAgingSummaryGeneralProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderGeneral.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderGeneralContent.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/APAgingSummaryProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/APAgingSummaryTable.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/common.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/components.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/withAPAgingSummary.js (100%) rename {client/src => src}/containers/FinancialStatements/APAgingSummary/withAPAgingSummaryActions.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/ARAgingSummary.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryGeneralProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderGeneral.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderGeneralContent.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryTable.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/common.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/components.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/withARAgingSummary.js (100%) rename {client/src => src}/containers/FinancialStatements/ARAgingSummary/withARAgingSummaryActions.js (100%) rename {client/src => src}/containers/FinancialStatements/BalanceSheet/BalanceSheet.js (100%) rename {client/src => src}/containers/FinancialStatements/BalanceSheet/BalanceSheetActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/BalanceSheet/BalanceSheetHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/BalanceSheet/BalanceSheetHeaderGeneralPanal.js (100%) rename {client/src => src}/containers/FinancialStatements/BalanceSheet/BalanceSheetProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/BalanceSheet/BalanceSheetTable.js (100%) rename {client/src => src}/containers/FinancialStatements/BalanceSheet/components.js (100%) rename {client/src => src}/containers/FinancialStatements/BalanceSheet/utils.js (100%) rename {client/src => src}/containers/FinancialStatements/BalanceSheet/withBalanceSheet.js (100%) rename {client/src => src}/containers/FinancialStatements/BalanceSheet/withBalanceSheetActions.js (100%) rename {client/src => src}/containers/FinancialStatements/CashFlowStatement/CashFlowStatement.js (100%) rename {client/src => src}/containers/FinancialStatements/CashFlowStatement/CashFlowStatementActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/CashFlowStatement/CashFlowStatementGeneralPanel.js (100%) rename {client/src => src}/containers/FinancialStatements/CashFlowStatement/CashFlowStatementHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/CashFlowStatement/CashFlowStatementProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/CashFlowStatement/CashFlowStatementTable.js (100%) rename {client/src => src}/containers/FinancialStatements/CashFlowStatement/components.js (100%) rename {client/src => src}/containers/FinancialStatements/CashFlowStatement/utils.js (100%) rename {client/src => src}/containers/FinancialStatements/CashFlowStatement/withCashFlowStatement.js (100%) rename {client/src => src}/containers/FinancialStatements/CashFlowStatement/withCashFlowStatementActions.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummary.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralPanel.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralPanelContent.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryTable.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersBalanceSummary/components.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersBalanceSummary/withCustomersBalanceSummary.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersBalanceSummary/withCustomersBalanceSummaryActions.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersTransactions/CustomersTransactions.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeaderGeneralPanel.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeaderGeneralPanelProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsTable.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersTransactions/components.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersTransactions/withCustomersTransactions.js (100%) rename {client/src => src}/containers/FinancialStatements/CustomersTransactions/withCustomersTransactionsActions.js (100%) rename {client/src => src}/containers/FinancialStatements/FinancialAccountsFilter.js (100%) rename {client/src => src}/containers/FinancialStatements/FinancialHeaderLoadingSkeleton.js (100%) rename {client/src => src}/containers/FinancialStatements/FinancialHeaderLoadingSkeleton.module.scss (100%) rename {client/src => src}/containers/FinancialStatements/FinancialLoadingBar.js (100%) rename {client/src => src}/containers/FinancialStatements/FinancialReportPage.js (100%) rename {client/src => src}/containers/FinancialStatements/FinancialReports.js (100%) rename {client/src => src}/containers/FinancialStatements/FinancialStatementDateRange.js (100%) rename {client/src => src}/containers/FinancialStatements/FinancialStatementHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/FinancialStatements.js (100%) rename {client/src => src}/containers/FinancialStatements/GeneralLedger/GLHeaderGeneralPaneProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/GeneralLedger/GeneralLedger.js (100%) rename {client/src => src}/containers/FinancialStatements/GeneralLedger/GeneralLedgerActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeaderGeneralPane.js (100%) rename {client/src => src}/containers/FinancialStatements/GeneralLedger/GeneralLedgerProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/GeneralLedger/GeneralLedgerTable.js (100%) rename {client/src => src}/containers/FinancialStatements/GeneralLedger/common.js (100%) rename {client/src => src}/containers/FinancialStatements/GeneralLedger/components.js (100%) rename {client/src => src}/containers/FinancialStatements/GeneralLedger/withGeneralLedger.js (100%) rename {client/src => src}/containers/FinancialStatements/GeneralLedger/withGeneralLedgerActions.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetails.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderGeneralPanel.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderGeneralProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsTable.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryItemDetails/components.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryItemDetails/utils.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryItemDetails/withInventoryItemDetails.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryItemDetails/withInventoryItemDetailsActions.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryValuation/InventoryValuation.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryValuation/InventoryValuationActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryValuation/InventoryValuationHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderGeneralPanel.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderGeneralPanelProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryValuation/InventoryValuationProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryValuation/InventoryValuationTable.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryValuation/components.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryValuation/withInventoryValuation.js (100%) rename {client/src => src}/containers/FinancialStatements/InventoryValuation/withInventoryValuationActions.js (100%) rename {client/src => src}/containers/FinancialStatements/Journal/Journal.js (100%) rename {client/src => src}/containers/FinancialStatements/Journal/JournalActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/Journal/JournalHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/Journal/JournalProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/Journal/JournalSheetHeaderGeneral.js (100%) rename {client/src => src}/containers/FinancialStatements/Journal/JournalTable.js (100%) rename {client/src => src}/containers/FinancialStatements/Journal/components.js (100%) rename {client/src => src}/containers/FinancialStatements/Journal/withJournal.js (100%) rename {client/src => src}/containers/FinancialStatements/Journal/withJournalActions.js (100%) rename {client/src => src}/containers/FinancialStatements/LedgerSheet.js (100%) rename {client/src => src}/containers/FinancialStatements/ProfitLossSheet/ProfitLossActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/ProfitLossSheet/ProfitLossProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheet.js (100%) rename {client/src => src}/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeaderGeneralPane.js (100%) rename {client/src => src}/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetTable.js (100%) rename {client/src => src}/containers/FinancialStatements/ProfitLossSheet/components.js (100%) rename {client/src => src}/containers/FinancialStatements/ProfitLossSheet/withProfitLoss.js (100%) rename {client/src => src}/containers/FinancialStatements/ProfitLossSheet/withProfitLossActions.js (100%) rename {client/src => src}/containers/FinancialStatements/PurchasesByItems/PurchasesByItems.js (100%) rename {client/src => src}/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsGeneralPanel.js (100%) rename {client/src => src}/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsGeneralPanelProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsTable.js (100%) rename {client/src => src}/containers/FinancialStatements/PurchasesByItems/components.js (100%) rename {client/src => src}/containers/FinancialStatements/PurchasesByItems/withPurchasesByItems.js (100%) rename {client/src => src}/containers/FinancialStatements/PurchasesByItems/withPurchasesByItemsActions.js (100%) rename {client/src => src}/containers/FinancialStatements/RadiosAccountingBasis.js (100%) rename {client/src => src}/containers/FinancialStatements/SalesByItems/SalesByItemProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/SalesByItems/SalesByItems.js (100%) rename {client/src => src}/containers/FinancialStatements/SalesByItems/SalesByItemsActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/SalesByItems/SalesByItemsHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/SalesByItems/SalesByItemsHeaderGeneralPanel.js (100%) rename {client/src => src}/containers/FinancialStatements/SalesByItems/SalesByItemsHeaderGeneralPanelProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/SalesByItems/SalesByItemsTable.js (100%) rename {client/src => src}/containers/FinancialStatements/SalesByItems/components.js (100%) rename {client/src => src}/containers/FinancialStatements/SalesByItems/withSalesByItems.js (100%) rename {client/src => src}/containers/FinancialStatements/SalesByItems/withSalesByItemsActions.js (100%) rename {client/src => src}/containers/FinancialStatements/SelectDisplayColumnsBy.js (100%) rename {client/src => src}/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheet.js (100%) rename {client/src => src}/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeaderGeneralPanel.js (100%) rename {client/src => src}/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetTable.js (100%) rename {client/src => src}/containers/FinancialStatements/TrialBalanceSheet/components.js (100%) rename {client/src => src}/containers/FinancialStatements/TrialBalanceSheet/withTrialBalance.js (100%) rename {client/src => src}/containers/FinancialStatements/TrialBalanceSheet/withTrialBalanceActions.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummary.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneral.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneralContent.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneralProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryTable.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsBalanceSummary/components.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsBalanceSummary/withVendorsBalanceSummary.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsBalanceSummary/withVendorsBalanceSummaryActions.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsTransactions/VendorsTransactions.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsActionsBar.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeader.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeaderGeneralPanel.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeaderGeneralPanelProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsProvider.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsTable.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsTransactions/components.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsTransactions/withVendorsTransaction.js (100%) rename {client/src => src}/containers/FinancialStatements/VendorsTransactions/withVendorsTransactionsActions.js (100%) rename {client/src => src}/containers/FinancialStatements/common.js (100%) rename {client/src => src}/containers/FinancialStatements/reducers.js (100%) rename {client/src => src}/containers/GlobalErrors/GlobalErrors.js (100%) rename {client/src => src}/containers/GlobalErrors/withGlobalErrors.js (100%) rename {client/src => src}/containers/GlobalErrors/withGlobalErrorsActions.js (100%) rename {client/src => src}/containers/Homepage/AccountsPayableSection.js (100%) rename {client/src => src}/containers/Homepage/AccountsReceivableSection.js (100%) rename {client/src => src}/containers/Homepage/AnnouncementList.js (100%) rename {client/src => src}/containers/Homepage/FinancialAccountingSection.js (100%) rename {client/src => src}/containers/Homepage/Homepage.js (100%) rename {client/src => src}/containers/Homepage/HomepageContent.js (100%) rename {client/src => src}/containers/Homepage/ProductsServicesSection.js (100%) rename {client/src => src}/containers/Homepage/ShortcutBoxesSection.js (100%) rename {client/src => src}/containers/InventoryAdjustments/InventoryAdjustmentList.js (100%) rename {client/src => src}/containers/InventoryAdjustments/InventoryAdjustmentTable.js (100%) rename {client/src => src}/containers/InventoryAdjustments/InventoryAdjustmentView.js (100%) rename {client/src => src}/containers/InventoryAdjustments/InventoryAdjustmentsAlerts.js (100%) rename {client/src => src}/containers/InventoryAdjustments/InventoryAdjustmentsProvider.js (100%) rename {client/src => src}/containers/InventoryAdjustments/components.js (100%) rename {client/src => src}/containers/InventoryAdjustments/withInventoryAdjustmentActions.js (100%) rename {client/src => src}/containers/InventoryAdjustments/withInventoryAdjustments.js (100%) rename {client/src => src}/containers/Items/ItemForm.js (100%) rename {client/src => src}/containers/Items/ItemForm.schema.js (100%) rename {client/src => src}/containers/Items/ItemFormBody.js (100%) rename {client/src => src}/containers/Items/ItemFormFloatingActions.js (100%) rename {client/src => src}/containers/Items/ItemFormInventorySection.js (100%) rename {client/src => src}/containers/Items/ItemFormPage.js (100%) rename {client/src => src}/containers/Items/ItemFormPrimarySection.js (100%) rename {client/src => src}/containers/Items/ItemFormProvider.js (100%) rename {client/src => src}/containers/Items/ItemsActionsBar.js (100%) rename {client/src => src}/containers/Items/ItemsAlerts.js (100%) rename {client/src => src}/containers/Items/ItemsDataTable.js (100%) rename {client/src => src}/containers/Items/ItemsEmptyStatus.js (100%) rename {client/src => src}/containers/Items/ItemsFooter.js (100%) rename {client/src => src}/containers/Items/ItemsList.js (100%) rename {client/src => src}/containers/Items/ItemsListProvider.js (100%) rename {client/src => src}/containers/Items/ItemsUniversalSearch.js (100%) rename {client/src => src}/containers/Items/ItemsViewsTabs.js (100%) rename {client/src => src}/containers/Items/components.js (100%) rename {client/src => src}/containers/Items/utils.js (100%) rename {client/src => src}/containers/Items/withItem.js (100%) rename {client/src => src}/containers/Items/withItems.js (100%) rename {client/src => src}/containers/Items/withItemsActions.js (100%) rename {client/src => src}/containers/ItemsCategories/ItemCategoriesList.js (100%) rename {client/src => src}/containers/ItemsCategories/ItemCategoriesTable.js (100%) rename {client/src => src}/containers/ItemsCategories/ItemsCategoriesAlerts.js (100%) rename {client/src => src}/containers/ItemsCategories/ItemsCategoriesProvider.js (100%) rename {client/src => src}/containers/ItemsCategories/ItemsCategoryActionsBar.js (100%) rename {client/src => src}/containers/ItemsCategories/components.js (100%) rename {client/src => src}/containers/ItemsCategories/withItemCategories.js (100%) rename {client/src => src}/containers/ItemsCategories/withItemCategoriesActions.js (100%) rename {client/src => src}/containers/ItemsCategories/withItemCategoryDetail.js (100%) rename {client/src => src}/containers/JournalEntriesTable/JournalEntriesTable.js (100%) rename {client/src => src}/containers/JournalNumber/ReferenceNumberForm.js (100%) rename {client/src => src}/containers/JournalNumber/ReferenceNumberFormContent.js (100%) rename {client/src => src}/containers/JournalNumber/utils.js (100%) rename {client/src => src}/containers/KeyboardShortcuts/ShortcutsTable.js (100%) rename {client/src => src}/containers/Media/withMediaActions.js (100%) rename {client/src => src}/containers/Organization/withCurrentOrganization.js (100%) rename {client/src => src}/containers/Organization/withOrganization.js (100%) rename {client/src => src}/containers/Organization/withOrganizationActions.js (100%) rename {client/src => src}/containers/Preferences/Accountant/Accountant.js (100%) rename {client/src => src}/containers/Preferences/Accountant/Accountant.schema.js (100%) rename {client/src => src}/containers/Preferences/Accountant/AccountantForm.js (100%) rename {client/src => src}/containers/Preferences/Accountant/AccountantFormPage.js (100%) rename {client/src => src}/containers/Preferences/Accountant/AccountantFormProvider.js (100%) rename {client/src => src}/containers/Preferences/Accountant/utils.js (100%) rename {client/src => src}/containers/Preferences/Accounts/Accounts.js (100%) rename {client/src => src}/containers/Preferences/Accounts/AccountsCustomFields.js (100%) rename {client/src => src}/containers/Preferences/Accounts/AccountsGeneral.js (100%) rename {client/src => src}/containers/Preferences/Currencies/Currencies.js (100%) rename {client/src => src}/containers/Preferences/Currencies/CurrenciesActions.js (100%) rename {client/src => src}/containers/Preferences/Currencies/CurrenciesAlerts.js (100%) rename {client/src => src}/containers/Preferences/Currencies/CurrenciesDataTable.js (100%) rename {client/src => src}/containers/Preferences/Currencies/CurrenciesList.js (100%) rename {client/src => src}/containers/Preferences/Currencies/CurrenciesProvider.js (100%) rename {client/src => src}/containers/Preferences/Currencies/components.js (100%) rename {client/src => src}/containers/Preferences/DefaultRoute.js (100%) rename {client/src => src}/containers/Preferences/General/General.js (100%) rename {client/src => src}/containers/Preferences/General/General.schema.js (100%) rename {client/src => src}/containers/Preferences/General/GeneralForm.js (100%) rename {client/src => src}/containers/Preferences/General/GeneralFormPage.js (100%) rename {client/src => src}/containers/Preferences/General/GeneralFormProvider.js (100%) rename {client/src => src}/containers/Preferences/General/utils.js (100%) rename {client/src => src}/containers/Preferences/Item/ItemPreferences.schema.js (100%) rename {client/src => src}/containers/Preferences/Item/ItemPreferencesForm.js (100%) rename {client/src => src}/containers/Preferences/Item/ItemPreferencesFormPage.js (100%) rename {client/src => src}/containers/Preferences/Item/ItemPreferencesFormProvider.js (100%) rename {client/src => src}/containers/Preferences/Item/index.js (100%) rename {client/src => src}/containers/Preferences/PreferencesPageLoader.js (100%) rename {client/src => src}/containers/Preferences/Users/RolesList.js (100%) rename {client/src => src}/containers/Preferences/Users/Users.js (100%) rename {client/src => src}/containers/Preferences/Users/UsersActions.js (100%) rename {client/src => src}/containers/Preferences/Users/UsersAlerts.js (100%) rename {client/src => src}/containers/Preferences/Users/UsersDataTable.js (100%) rename {client/src => src}/containers/Preferences/Users/UsersList.js (100%) rename {client/src => src}/containers/Preferences/Users/UsersProvider.js (100%) rename {client/src => src}/containers/Preferences/Users/components.js (100%) rename {client/src => src}/containers/Preferences/Users/withUserPreferences.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillForm/BillFloatingActions.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillForm/BillForm.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillForm/BillForm.schema.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillForm/BillFormFooter.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillForm/BillFormHeader.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillForm/BillFormHeaderFields.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillForm/BillFormPage.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillForm/BillFormProvider.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillForm/BillItemsEntriesEditor.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillForm/utils.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillUniversalSearch.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillsLanding/BillsActionsBar.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillsLanding/BillsAlerts.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillsLanding/BillsEmptyStatus.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillsLanding/BillsList.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillsLanding/BillsListProvider.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillsLanding/BillsTable.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillsLanding/BillsViewsTabs.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillsLanding/components.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillsLanding/withBills.js (100%) rename {client/src => src}/containers/Purchases/Bills/BillsLanding/withBillsActions.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeEntriesTable.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFloatingActions.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFooter.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeForm.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeForm.schema.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormBody.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormPage.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormProvider.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeInnerProvider.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/components.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentForm/utils.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentMadeUniversalSearch.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentMadesAlerts.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeActionsBar.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeList.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeViewTabs.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesEmptyStatus.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesListProvider.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesTable.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesView.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMdesListProvider.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/components.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/utils.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMade.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMadeActions.js (100%) rename {client/src => src}/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMadeDetail.js (100%) rename {client/src => src}/containers/QuickNewDropdown/QuickNewDropdown.js (100%) rename {client/src => src}/containers/Resources/withResourceDetails.js (100%) rename {client/src => src}/containers/Resources/withResourcesActions.js (100%) rename {client/src => src}/containers/Router/withRoute.js (100%) rename {client/src => src}/containers/Router/withRouteActions.js (100%) rename {client/src => src}/containers/Sales/Estimate/EstimatesDataTable.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateDetails/EstimateDrawer.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateDetails/EstimateDrawerContent.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateDetails/EstimateDrawerProvider.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateDetails/EstimatePaper.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateForm/EstimateFloatingActions.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateForm/EstimateForm.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateForm/EstimateForm.schema.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateForm/EstimateFormDialogs.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateForm/EstimateFormFooter.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateForm/EstimateFormPage.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateForm/EstimateFormProvider.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateForm/EstimateItemsEntriesField.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimateForm/utils.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimatesAlerts.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimatesLanding/EstimateUniversalSearch.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimatesLanding/EstimatesActionsBar.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimatesLanding/EstimatesDataTable.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimatesLanding/EstimatesList.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimatesLanding/EstimatesListProvider.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimatesLanding/EstimatesViewTabs.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimatesLanding/components.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimatesLanding/withEstimates.js (100%) rename {client/src => src}/containers/Sales/Estimates/EstimatesLanding/withEstimatesActions.js (100%) rename {client/src => src}/containers/Sales/Estimates/withEstimateDetail.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawer.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawerContent.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawerProvider.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceDetails/InvoicePaper.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceForm/InvoiceFloatingActions.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceForm/InvoiceForm.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceForm/InvoiceForm.schema.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceForm/InvoiceFormDialogs.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceForm/InvoiceFormFooter.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceForm/InvoiceFormPage.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceForm/InvoiceItemsEntriesEditorField.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceForm/utils.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoiceUniversalSearch.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoicesAlerts.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoicesLanding/InvoiceViewTabs.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoicesLanding/InvoicesActionsBar.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoicesLanding/InvoicesDataTable.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoicesLanding/InvoicesEmptyStatus.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoicesLanding/InvoicesList.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoicesLanding/InvoicesListProvider.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoicesLanding/components.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoicesLanding/withInvoiceActions.js (100%) rename {client/src => src}/containers/Sales/Invoices/InvoicesLanding/withInvoices.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawer.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawerContent.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawerProvider.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceivePaper.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveAlerts.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFloatingActions.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.schema.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormAlerts.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormBody.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormDialogs.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormFooter.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormPage.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormProvider.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveInnerProvider.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveItemsTable.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/components.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveForm/utils.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentReceiveUniversalSearch.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiptsListProvider.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiveActionsBar.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiveViewTabs.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesList.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesListProvider.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesTable.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentsLanding/components.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceiveDetail.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceives.js (100%) rename {client/src => src}/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceivesActions.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawer.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawerContent.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawerProvider.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptDetails/ReceiptPaper.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptForm/ReceiptForm.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptForm/ReceiptForm.schema.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptForm/ReceiptFormDialogs.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptForm/ReceiptFormFloatingActions.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptForm/ReceiptFormFooter.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeader.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptForm/ReceiptFormPage.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptForm/ReceiptFormProvider.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptForm/ReceiptItemsEntriesEditor.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptForm/utils.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptUniversalSearch.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptsAlerts.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptsLanding/ReceiptActionsBar.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptsLanding/ReceiptViewTabs.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptsLanding/ReceiptsEmptyStatus.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptsLanding/ReceiptsList.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptsLanding/ReceiptsListProvider.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptsLanding/ReceiptsTable.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptsLanding/components.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptsLanding/withReceipts.js (100%) rename {client/src => src}/containers/Sales/Receipts/ReceiptsLanding/withReceiptsActions.js (100%) rename {client/src => src}/containers/Settings/withSettings.js (100%) rename {client/src => src}/containers/Settings/withSettingsActions.js (100%) rename {client/src => src}/containers/Setup/SetupCongratsPage.js (100%) rename {client/src => src}/containers/Setup/SetupDialogs.js (100%) rename {client/src => src}/containers/Setup/SetupInitializingForm.js (100%) rename {client/src => src}/containers/Setup/SetupLeftSection.js (100%) rename {client/src => src}/containers/Setup/SetupOrganization.schema.js (100%) rename {client/src => src}/containers/Setup/SetupOrganizationForm.js (100%) rename {client/src => src}/containers/Setup/SetupOrganizationPage.js (100%) rename {client/src => src}/containers/Setup/SetupRightSection.js (100%) rename {client/src => src}/containers/Setup/SetupSteps.js (100%) rename {client/src => src}/containers/Setup/SetupSubscription.js (100%) rename {client/src => src}/containers/Setup/SetupSubscription/SetupSubscriptionForm.js (100%) rename {client/src => src}/containers/Setup/SetupSubscription/SubscriptionPaymentsMethodsSection.js (100%) rename {client/src => src}/containers/Setup/SetupSubscription/SubscriptionPeriodsSection.js (100%) rename {client/src => src}/containers/Setup/SetupSubscription/SubscriptionPlansSection.js (100%) rename {client/src => src}/containers/Setup/SetupWizardContent.js (100%) rename {client/src => src}/containers/Setup/SubscriptionForm.schema.js (100%) rename {client/src => src}/containers/Setup/WizardSetupPage.js (100%) rename {client/src => src}/containers/Setup/WizardSetupSteps.js (100%) rename {client/src => src}/containers/Setup/WorkflowIcon.js (100%) rename {client/src => src}/containers/Subscriptions/BillingForm.js (100%) rename {client/src => src}/containers/Subscriptions/BillingPeriod.js (100%) rename {client/src => src}/containers/Subscriptions/BillingPeriodsInput.js (100%) rename {client/src => src}/containers/Subscriptions/BillingPlan.js (100%) rename {client/src => src}/containers/Subscriptions/BillingPlansForm.js (100%) rename {client/src => src}/containers/Subscriptions/BillingPlansInput.js (100%) rename {client/src => src}/containers/Subscriptions/BillingTab.js (100%) rename {client/src => src}/containers/Subscriptions/LicenseTab.js (100%) rename {client/src => src}/containers/Subscriptions/SubscriptionTabs.js (100%) rename {client/src => src}/containers/Subscriptions/billingPaymentmethod.js (100%) rename {client/src => src}/containers/Subscriptions/utils.js (100%) rename {client/src => src}/containers/Subscriptions/withBillingActions.js (100%) rename {client/src => src}/containers/Subscriptions/withPlan.js (100%) rename {client/src => src}/containers/Subscriptions/withPlans.js (100%) rename {client/src => src}/containers/Subscriptions/withSubscriptionPlansActions.js (100%) rename {client/src => src}/containers/Subscriptions/withSubscriptions.js (100%) rename {client/src => src}/containers/Subscriptions/withSubscriptionsActions.js (100%) rename {client/src => src}/containers/Subscriptions/withSubscriptionss.js (100%) rename {client/src => src}/containers/UniversalSearch/DashboardUniversalSearch.js (100%) rename {client/src => src}/containers/UniversalSearch/DashboardUniversalSearchBinds.js (100%) rename {client/src => src}/containers/UniversalSearch/DashboardUniversalSearchHotkeys.js (100%) rename {client/src => src}/containers/UniversalSearch/DashboardUniversalSearchItemActions.js (100%) rename {client/src => src}/containers/UniversalSearch/components.js (100%) rename {client/src => src}/containers/UniversalSearch/utils.js (100%) rename {client/src => src}/containers/UniversalSearch/withUniversalSearch.js (100%) rename {client/src => src}/containers/UniversalSearch/withUniversalSearchActions.js (100%) rename {client/src => src}/containers/Users/withUsers.js (100%) rename {client/src => src}/containers/Users/withUsersActions.js (100%) rename {client/src => src}/containers/Vendors/VendorForm/VendorAttahmentTab.js (100%) rename {client/src => src}/containers/Vendors/VendorForm/VendorFinanicalPanelTab.js (100%) rename {client/src => src}/containers/Vendors/VendorForm/VendorFloatingActions.js (100%) rename {client/src => src}/containers/Vendors/VendorForm/VendorForm.js (100%) rename {client/src => src}/containers/Vendors/VendorForm/VendorForm.schema.js (100%) rename {client/src => src}/containers/Vendors/VendorForm/VendorFormAfterPrimarySection.js (100%) rename {client/src => src}/containers/Vendors/VendorForm/VendorFormPage.js (100%) rename {client/src => src}/containers/Vendors/VendorForm/VendorFormPrimarySection.js (100%) rename {client/src => src}/containers/Vendors/VendorForm/VendorFormProvider.js (100%) rename {client/src => src}/containers/Vendors/VendorForm/VendorsTabs.js (100%) rename {client/src => src}/containers/Vendors/VendorsAlerts.js (100%) rename {client/src => src}/containers/Vendors/VendorsLanding/VendorActionsBar.js (100%) rename {client/src => src}/containers/Vendors/VendorsLanding/VendorViewsTabs.js (100%) rename {client/src => src}/containers/Vendors/VendorsLanding/VendorsEmptyStatus.js (100%) rename {client/src => src}/containers/Vendors/VendorsLanding/VendorsList.js (100%) rename {client/src => src}/containers/Vendors/VendorsLanding/VendorsListProvider.js (100%) rename {client/src => src}/containers/Vendors/VendorsLanding/VendorsTable.js (100%) rename {client/src => src}/containers/Vendors/VendorsLanding/components.js (100%) rename {client/src => src}/containers/Vendors/VendorsLanding/utils.js (100%) rename {client/src => src}/containers/Vendors/VendorsLanding/withVendors.js (100%) rename {client/src => src}/containers/Vendors/VendorsLanding/withVendorsActions.js (100%) rename {client/src => src}/containers/Vendors/VendorsUniversalSearch.js (100%) rename {client/src => src}/containers/Vendors/utils.js (100%) rename {client/src => src}/containers/Vendors/withVendorDetail.js (100%) rename {client/src => src}/containers/Views/ViewForm.container.js (100%) rename {client/src => src}/containers/Views/ViewForm.js (100%) rename {client/src => src}/containers/Views/ViewFormPage.js (100%) rename {client/src => src}/containers/Views/withCurrentView.js (100%) rename {client/src => src}/containers/Views/withViewDetails.js (100%) rename {client/src => src}/containers/Views/withViews.js (100%) rename {client/src => src}/containers/Views/withViewsActions.js (100%) rename {client/src => src}/hooks/async.js (100%) rename {client/src => src}/hooks/index.js (100%) rename {client/src => src}/hooks/query/GenericResource/index.js (100%) rename {client/src => src}/hooks/query/UniversalSearch/UniversalSearch.js (100%) rename {client/src => src}/hooks/query/accounts.js (100%) rename {client/src => src}/hooks/query/authentication.js (100%) rename {client/src => src}/hooks/query/base.js (100%) rename {client/src => src}/hooks/query/bills.js (100%) rename {client/src => src}/hooks/query/contacts.js (100%) rename {client/src => src}/hooks/query/currencies.js (100%) rename {client/src => src}/hooks/query/customers.js (100%) rename {client/src => src}/hooks/query/estimates.js (100%) rename {client/src => src}/hooks/query/exchangeRates.js (100%) rename {client/src => src}/hooks/query/expenses.js (100%) rename {client/src => src}/hooks/query/financialReports.js (100%) rename {client/src => src}/hooks/query/index.js (100%) rename {client/src => src}/hooks/query/inventoryAdjustments.js (100%) rename {client/src => src}/hooks/query/invite.js (100%) rename {client/src => src}/hooks/query/invoices.js (100%) rename {client/src => src}/hooks/query/items.js (100%) rename {client/src => src}/hooks/query/itemsCategories.js (100%) rename {client/src => src}/hooks/query/jobs.js (100%) rename {client/src => src}/hooks/query/landedCost.js (100%) rename {client/src => src}/hooks/query/manualJournals.js (100%) rename {client/src => src}/hooks/query/misc.js (100%) rename {client/src => src}/hooks/query/organization.js (100%) rename {client/src => src}/hooks/query/paymentMades.js (100%) rename {client/src => src}/hooks/query/paymentReceives.js (100%) rename {client/src => src}/hooks/query/receipts.js (100%) rename {client/src => src}/hooks/query/settings.js (100%) rename {client/src => src}/hooks/query/subscriptions.js (100%) rename {client/src => src}/hooks/query/types.js (100%) rename {client/src => src}/hooks/query/users.js (100%) rename {client/src => src}/hooks/query/vendors.js (100%) rename {client/src => src}/hooks/query/views.js (100%) rename {client/src => src}/hooks/stackableState.js (100%) rename {client/src => src}/hooks/state/authentication.js (100%) rename {client/src => src}/hooks/state/dashboard.js (100%) rename {client/src => src}/hooks/state/globalErrors.js (100%) rename {client/src => src}/hooks/state/index.js (100%) rename {client/src => src}/hooks/state/organizations.js (100%) rename {client/src => src}/hooks/state/settings.js (100%) rename {client/src => src}/hooks/state/subscriptions.js (100%) rename {client/src => src}/hooks/useAppRoutes.js (100%) rename {client/src => src}/hooks/useAutofocus.js (100%) rename {client/src => src}/hooks/useMedia.js (100%) rename {client/src => src}/hooks/useQueryRequest.js (100%) rename {client/src => src}/hooks/useRequest.js (100%) rename {client/src => src}/hooks/useRequestPdf.js (100%) rename {client/src => src}/index.js (100%) rename {client/src => src}/lang/ar/index.json (100%) rename {client/src => src}/lang/ar/locale.js (100%) rename {client/src => src}/lang/en/authentication.js (100%) rename {client/src => src}/lang/en/index.json (100%) rename {client/src => src}/lang/en/locale.js (100%) rename {client/src => src}/lang/printValue.js (100%) rename {client/src => src}/logo.svg (100%) rename {client/src => src}/middleware/logger.js (100%) rename {client/src => src}/routes/authentication.js (100%) rename {client/src => src}/routes/dashboard.js (100%) rename {client/src => src}/routes/preferences.js (100%) rename {client/src => src}/routes/preferencesTabs.js (100%) rename {client/src => src}/routes/register.js (100%) rename {client/src => src}/serviceWorker.js (100%) rename {client/src => src}/services/ApiService.js (100%) rename {client/src => src}/services/NamedRoutes.js (100%) rename {client/src => src}/services/RemoteDataBinding.js (100%) rename {client/src => src}/services/axios.js (100%) rename {client/src => src}/services/yup.js (100%) rename {client/src => src}/setupTests.js (100%) rename {client/src => src}/static/icons/brands/500px.svg (100%) rename {client/src => src}/static/icons/brands/accessible-icon.svg (100%) rename {client/src => src}/static/icons/brands/accusoft.svg (100%) rename {client/src => src}/static/icons/brands/acquisitions-incorporated.svg (100%) rename {client/src => src}/static/icons/brands/adn.svg (100%) rename {client/src => src}/static/icons/brands/adobe.svg (100%) rename {client/src => src}/static/icons/brands/adversal.svg (100%) rename {client/src => src}/static/icons/brands/affiliatetheme.svg (100%) rename {client/src => src}/static/icons/brands/airbnb.svg (100%) rename {client/src => src}/static/icons/brands/algolia.svg (100%) rename {client/src => src}/static/icons/brands/alipay.svg (100%) rename {client/src => src}/static/icons/brands/amazon-pay.svg (100%) rename {client/src => src}/static/icons/brands/amazon.svg (100%) rename {client/src => src}/static/icons/brands/amilia.svg (100%) rename {client/src => src}/static/icons/brands/android.svg (100%) rename {client/src => src}/static/icons/brands/angellist.svg (100%) rename {client/src => src}/static/icons/brands/angrycreative.svg (100%) rename {client/src => src}/static/icons/brands/angular.svg (100%) rename {client/src => src}/static/icons/brands/app-store-ios.svg (100%) rename {client/src => src}/static/icons/brands/app-store.svg (100%) rename {client/src => src}/static/icons/brands/apper.svg (100%) rename {client/src => src}/static/icons/brands/apple-pay.svg (100%) rename {client/src => src}/static/icons/brands/apple.svg (100%) rename {client/src => src}/static/icons/brands/artstation.svg (100%) rename {client/src => src}/static/icons/brands/asymmetrik.svg (100%) rename {client/src => src}/static/icons/brands/atlassian.svg (100%) rename {client/src => src}/static/icons/brands/audible.svg (100%) rename {client/src => src}/static/icons/brands/autoprefixer.svg (100%) rename {client/src => src}/static/icons/brands/avianex.svg (100%) rename {client/src => src}/static/icons/brands/aviato.svg (100%) rename {client/src => src}/static/icons/brands/aws.svg (100%) rename {client/src => src}/static/icons/brands/bandcamp.svg (100%) rename {client/src => src}/static/icons/brands/battle-net.svg (100%) rename {client/src => src}/static/icons/brands/behance-square.svg (100%) rename {client/src => src}/static/icons/brands/behance.svg (100%) rename {client/src => src}/static/icons/brands/bimobject.svg (100%) rename {client/src => src}/static/icons/brands/bitbucket.svg (100%) rename {client/src => src}/static/icons/brands/bitcoin.svg (100%) rename {client/src => src}/static/icons/brands/bity.svg (100%) rename {client/src => src}/static/icons/brands/black-tie.svg (100%) rename {client/src => src}/static/icons/brands/blackberry.svg (100%) rename {client/src => src}/static/icons/brands/blogger-b.svg (100%) rename {client/src => src}/static/icons/brands/blogger.svg (100%) rename {client/src => src}/static/icons/brands/bluetooth-b.svg (100%) rename {client/src => src}/static/icons/brands/bluetooth.svg (100%) rename {client/src => src}/static/icons/brands/bootstrap.svg (100%) rename {client/src => src}/static/icons/brands/btc.svg (100%) rename {client/src => src}/static/icons/brands/buffer.svg (100%) rename {client/src => src}/static/icons/brands/buromobelexperte.svg (100%) rename {client/src => src}/static/icons/brands/buy-n-large.svg (100%) rename {client/src => src}/static/icons/brands/buysellads.svg (100%) rename {client/src => src}/static/icons/brands/canadian-maple-leaf.svg (100%) rename {client/src => src}/static/icons/brands/cc-amazon-pay.svg (100%) rename {client/src => src}/static/icons/brands/cc-amex.svg (100%) rename {client/src => src}/static/icons/brands/cc-apple-pay.svg (100%) rename {client/src => src}/static/icons/brands/cc-diners-club.svg (100%) rename {client/src => src}/static/icons/brands/cc-discover.svg (100%) rename {client/src => src}/static/icons/brands/cc-jcb.svg (100%) rename {client/src => src}/static/icons/brands/cc-mastercard.svg (100%) rename {client/src => src}/static/icons/brands/cc-paypal.svg (100%) rename {client/src => src}/static/icons/brands/cc-stripe.svg (100%) rename {client/src => src}/static/icons/brands/cc-visa.svg (100%) rename {client/src => src}/static/icons/brands/centercode.svg (100%) rename {client/src => src}/static/icons/brands/centos.svg (100%) rename {client/src => src}/static/icons/brands/chrome.svg (100%) rename {client/src => src}/static/icons/brands/chromecast.svg (100%) rename {client/src => src}/static/icons/brands/cloudscale.svg (100%) rename {client/src => src}/static/icons/brands/cloudsmith.svg (100%) rename {client/src => src}/static/icons/brands/cloudversify.svg (100%) rename {client/src => src}/static/icons/brands/codepen.svg (100%) rename {client/src => src}/static/icons/brands/codiepie.svg (100%) rename {client/src => src}/static/icons/brands/confluence.svg (100%) rename {client/src => src}/static/icons/brands/connectdevelop.svg (100%) rename {client/src => src}/static/icons/brands/contao.svg (100%) rename {client/src => src}/static/icons/brands/cotton-bureau.svg (100%) rename {client/src => src}/static/icons/brands/cpanel.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-by.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-nc-eu.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-nc-jp.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-nc.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-nd.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-pd-alt.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-pd.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-remix.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-sa.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-sampling-plus.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-sampling.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-share.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons-zero.svg (100%) rename {client/src => src}/static/icons/brands/creative-commons.svg (100%) rename {client/src => src}/static/icons/brands/critical-role.svg (100%) rename {client/src => src}/static/icons/brands/css3-alt.svg (100%) rename {client/src => src}/static/icons/brands/css3.svg (100%) rename {client/src => src}/static/icons/brands/cuttlefish.svg (100%) rename {client/src => src}/static/icons/brands/d-and-d-beyond.svg (100%) rename {client/src => src}/static/icons/brands/d-and-d.svg (100%) rename {client/src => src}/static/icons/brands/dashcube.svg (100%) rename {client/src => src}/static/icons/brands/delicious.svg (100%) rename {client/src => src}/static/icons/brands/deploydog.svg (100%) rename {client/src => src}/static/icons/brands/deskpro.svg (100%) rename {client/src => src}/static/icons/brands/dev.svg (100%) rename {client/src => src}/static/icons/brands/deviantart.svg (100%) rename {client/src => src}/static/icons/brands/dhl.svg (100%) rename {client/src => src}/static/icons/brands/diaspora.svg (100%) rename {client/src => src}/static/icons/brands/digg.svg (100%) rename {client/src => src}/static/icons/brands/digital-ocean.svg (100%) rename {client/src => src}/static/icons/brands/discord.svg (100%) rename {client/src => src}/static/icons/brands/discourse.svg (100%) rename {client/src => src}/static/icons/brands/dochub.svg (100%) rename {client/src => src}/static/icons/brands/docker.svg (100%) rename {client/src => src}/static/icons/brands/draft2digital.svg (100%) rename {client/src => src}/static/icons/brands/dribbble-square.svg (100%) rename {client/src => src}/static/icons/brands/dribbble.svg (100%) rename {client/src => src}/static/icons/brands/dropbox.svg (100%) rename {client/src => src}/static/icons/brands/drupal.svg (100%) rename {client/src => src}/static/icons/brands/dyalog.svg (100%) rename {client/src => src}/static/icons/brands/earlybirds.svg (100%) rename {client/src => src}/static/icons/brands/ebay.svg (100%) rename {client/src => src}/static/icons/brands/edge.svg (100%) rename {client/src => src}/static/icons/brands/elementor.svg (100%) rename {client/src => src}/static/icons/brands/ello.svg (100%) rename {client/src => src}/static/icons/brands/ember.svg (100%) rename {client/src => src}/static/icons/brands/empire.svg (100%) rename {client/src => src}/static/icons/brands/envira.svg (100%) rename {client/src => src}/static/icons/brands/erlang.svg (100%) rename {client/src => src}/static/icons/brands/ethereum.svg (100%) rename {client/src => src}/static/icons/brands/etsy.svg (100%) rename {client/src => src}/static/icons/brands/evernote.svg (100%) rename {client/src => src}/static/icons/brands/expeditedssl.svg (100%) rename {client/src => src}/static/icons/brands/facebook-f.svg (100%) rename {client/src => src}/static/icons/brands/facebook-messenger.svg (100%) rename {client/src => src}/static/icons/brands/facebook-square.svg (100%) rename {client/src => src}/static/icons/brands/facebook.svg (100%) rename {client/src => src}/static/icons/brands/fantasy-flight-games.svg (100%) rename {client/src => src}/static/icons/brands/fedex.svg (100%) rename {client/src => src}/static/icons/brands/fedora.svg (100%) rename {client/src => src}/static/icons/brands/figma.svg (100%) rename {client/src => src}/static/icons/brands/firefox-browser.svg (100%) rename {client/src => src}/static/icons/brands/firefox.svg (100%) rename {client/src => src}/static/icons/brands/first-order-alt.svg (100%) rename {client/src => src}/static/icons/brands/first-order.svg (100%) rename {client/src => src}/static/icons/brands/firstdraft.svg (100%) rename {client/src => src}/static/icons/brands/flickr.svg (100%) rename {client/src => src}/static/icons/brands/flipboard.svg (100%) rename {client/src => src}/static/icons/brands/fly.svg (100%) rename {client/src => src}/static/icons/brands/font-awesome-alt.svg (100%) rename {client/src => src}/static/icons/brands/font-awesome-flag.svg (100%) rename {client/src => src}/static/icons/brands/font-awesome-logo-full.svg (100%) rename {client/src => src}/static/icons/brands/font-awesome.svg (100%) rename {client/src => src}/static/icons/brands/fonticons-fi.svg (100%) rename {client/src => src}/static/icons/brands/fonticons.svg (100%) rename {client/src => src}/static/icons/brands/fort-awesome-alt.svg (100%) rename {client/src => src}/static/icons/brands/fort-awesome.svg (100%) rename {client/src => src}/static/icons/brands/forumbee.svg (100%) rename {client/src => src}/static/icons/brands/foursquare.svg (100%) rename {client/src => src}/static/icons/brands/free-code-camp.svg (100%) rename {client/src => src}/static/icons/brands/freebsd.svg (100%) rename {client/src => src}/static/icons/brands/fulcrum.svg (100%) rename {client/src => src}/static/icons/brands/galactic-republic.svg (100%) rename {client/src => src}/static/icons/brands/galactic-senate.svg (100%) rename {client/src => src}/static/icons/brands/get-pocket.svg (100%) rename {client/src => src}/static/icons/brands/gg-circle.svg (100%) rename {client/src => src}/static/icons/brands/gg.svg (100%) rename {client/src => src}/static/icons/brands/git-alt.svg (100%) rename {client/src => src}/static/icons/brands/git-square.svg (100%) rename {client/src => src}/static/icons/brands/git.svg (100%) rename {client/src => src}/static/icons/brands/github-alt.svg (100%) rename {client/src => src}/static/icons/brands/github-square.svg (100%) rename {client/src => src}/static/icons/brands/github.svg (100%) rename {client/src => src}/static/icons/brands/gitkraken.svg (100%) rename {client/src => src}/static/icons/brands/gitlab.svg (100%) rename {client/src => src}/static/icons/brands/gitter.svg (100%) rename {client/src => src}/static/icons/brands/glide-g.svg (100%) rename {client/src => src}/static/icons/brands/glide.svg (100%) rename {client/src => src}/static/icons/brands/gofore.svg (100%) rename {client/src => src}/static/icons/brands/goodreads-g.svg (100%) rename {client/src => src}/static/icons/brands/goodreads.svg (100%) rename {client/src => src}/static/icons/brands/google-drive.svg (100%) rename {client/src => src}/static/icons/brands/google-play.svg (100%) rename {client/src => src}/static/icons/brands/google-plus-g.svg (100%) rename {client/src => src}/static/icons/brands/google-plus-square.svg (100%) rename {client/src => src}/static/icons/brands/google-plus.svg (100%) rename {client/src => src}/static/icons/brands/google-wallet.svg (100%) rename {client/src => src}/static/icons/brands/google.svg (100%) rename {client/src => src}/static/icons/brands/gratipay.svg (100%) rename {client/src => src}/static/icons/brands/grav.svg (100%) rename {client/src => src}/static/icons/brands/gripfire.svg (100%) rename {client/src => src}/static/icons/brands/grunt.svg (100%) rename {client/src => src}/static/icons/brands/gulp.svg (100%) rename {client/src => src}/static/icons/brands/hacker-news-square.svg (100%) rename {client/src => src}/static/icons/brands/hacker-news.svg (100%) rename {client/src => src}/static/icons/brands/hackerrank.svg (100%) rename {client/src => src}/static/icons/brands/hips.svg (100%) rename {client/src => src}/static/icons/brands/hire-a-helper.svg (100%) rename {client/src => src}/static/icons/brands/hooli.svg (100%) rename {client/src => src}/static/icons/brands/hornbill.svg (100%) rename {client/src => src}/static/icons/brands/hotjar.svg (100%) rename {client/src => src}/static/icons/brands/houzz.svg (100%) rename {client/src => src}/static/icons/brands/html5.svg (100%) rename {client/src => src}/static/icons/brands/hubspot.svg (100%) rename {client/src => src}/static/icons/brands/ideal.svg (100%) rename {client/src => src}/static/icons/brands/imdb.svg (100%) rename {client/src => src}/static/icons/brands/instagram.svg (100%) rename {client/src => src}/static/icons/brands/intercom.svg (100%) rename {client/src => src}/static/icons/brands/internet-explorer.svg (100%) rename {client/src => src}/static/icons/brands/invision.svg (100%) rename {client/src => src}/static/icons/brands/ioxhost.svg (100%) rename {client/src => src}/static/icons/brands/itch-io.svg (100%) rename {client/src => src}/static/icons/brands/itunes-note.svg (100%) rename {client/src => src}/static/icons/brands/itunes.svg (100%) rename {client/src => src}/static/icons/brands/java.svg (100%) rename {client/src => src}/static/icons/brands/jedi-order.svg (100%) rename {client/src => src}/static/icons/brands/jenkins.svg (100%) rename {client/src => src}/static/icons/brands/jira.svg (100%) rename {client/src => src}/static/icons/brands/joget.svg (100%) rename {client/src => src}/static/icons/brands/joomla.svg (100%) rename {client/src => src}/static/icons/brands/js-square.svg (100%) rename {client/src => src}/static/icons/brands/js.svg (100%) rename {client/src => src}/static/icons/brands/jsfiddle.svg (100%) rename {client/src => src}/static/icons/brands/kaggle.svg (100%) rename {client/src => src}/static/icons/brands/keybase.svg (100%) rename {client/src => src}/static/icons/brands/keycdn.svg (100%) rename {client/src => src}/static/icons/brands/kickstarter-k.svg (100%) rename {client/src => src}/static/icons/brands/kickstarter.svg (100%) rename {client/src => src}/static/icons/brands/korvue.svg (100%) rename {client/src => src}/static/icons/brands/laravel.svg (100%) rename {client/src => src}/static/icons/brands/lastfm-square.svg (100%) rename {client/src => src}/static/icons/brands/lastfm.svg (100%) rename {client/src => src}/static/icons/brands/leanpub.svg (100%) rename {client/src => src}/static/icons/brands/less.svg (100%) rename {client/src => src}/static/icons/brands/line.svg (100%) rename {client/src => src}/static/icons/brands/linkedin-in.svg (100%) rename {client/src => src}/static/icons/brands/linkedin.svg (100%) rename {client/src => src}/static/icons/brands/linode.svg (100%) rename {client/src => src}/static/icons/brands/linux.svg (100%) rename {client/src => src}/static/icons/brands/lyft.svg (100%) rename {client/src => src}/static/icons/brands/magento.svg (100%) rename {client/src => src}/static/icons/brands/mailchimp.svg (100%) rename {client/src => src}/static/icons/brands/mandalorian.svg (100%) rename {client/src => src}/static/icons/brands/markdown.svg (100%) rename {client/src => src}/static/icons/brands/mastodon.svg (100%) rename {client/src => src}/static/icons/brands/maxcdn.svg (100%) rename {client/src => src}/static/icons/brands/mdb.svg (100%) rename {client/src => src}/static/icons/brands/medapps.svg (100%) rename {client/src => src}/static/icons/brands/medium-m.svg (100%) rename {client/src => src}/static/icons/brands/medium.svg (100%) rename {client/src => src}/static/icons/brands/medrt.svg (100%) rename {client/src => src}/static/icons/brands/meetup.svg (100%) rename {client/src => src}/static/icons/brands/megaport.svg (100%) rename {client/src => src}/static/icons/brands/mendeley.svg (100%) rename {client/src => src}/static/icons/brands/microblog.svg (100%) rename {client/src => src}/static/icons/brands/microsoft.svg (100%) rename {client/src => src}/static/icons/brands/mix.svg (100%) rename {client/src => src}/static/icons/brands/mixcloud.svg (100%) rename {client/src => src}/static/icons/brands/mizuni.svg (100%) rename {client/src => src}/static/icons/brands/modx.svg (100%) rename {client/src => src}/static/icons/brands/monero.svg (100%) rename {client/src => src}/static/icons/brands/napster.svg (100%) rename {client/src => src}/static/icons/brands/neos.svg (100%) rename {client/src => src}/static/icons/brands/nimblr.svg (100%) rename {client/src => src}/static/icons/brands/node-js.svg (100%) rename {client/src => src}/static/icons/brands/node.svg (100%) rename {client/src => src}/static/icons/brands/npm.svg (100%) rename {client/src => src}/static/icons/brands/ns8.svg (100%) rename {client/src => src}/static/icons/brands/nutritionix.svg (100%) rename {client/src => src}/static/icons/brands/odnoklassniki-square.svg (100%) rename {client/src => src}/static/icons/brands/odnoklassniki.svg (100%) rename {client/src => src}/static/icons/brands/old-republic.svg (100%) rename {client/src => src}/static/icons/brands/opencart.svg (100%) rename {client/src => src}/static/icons/brands/openid.svg (100%) rename {client/src => src}/static/icons/brands/opera.svg (100%) rename {client/src => src}/static/icons/brands/optin-monster.svg (100%) rename {client/src => src}/static/icons/brands/orcid.svg (100%) rename {client/src => src}/static/icons/brands/osi.svg (100%) rename {client/src => src}/static/icons/brands/page4.svg (100%) rename {client/src => src}/static/icons/brands/pagelines.svg (100%) rename {client/src => src}/static/icons/brands/palfed.svg (100%) rename {client/src => src}/static/icons/brands/patreon.svg (100%) rename {client/src => src}/static/icons/brands/paypal.svg (100%) rename {client/src => src}/static/icons/brands/penny-arcade.svg (100%) rename {client/src => src}/static/icons/brands/periscope.svg (100%) rename {client/src => src}/static/icons/brands/phabricator.svg (100%) rename {client/src => src}/static/icons/brands/phoenix-framework.svg (100%) rename {client/src => src}/static/icons/brands/phoenix-squadron.svg (100%) rename {client/src => src}/static/icons/brands/php.svg (100%) rename {client/src => src}/static/icons/brands/pied-piper-alt.svg (100%) rename {client/src => src}/static/icons/brands/pied-piper-hat.svg (100%) rename {client/src => src}/static/icons/brands/pied-piper-pp.svg (100%) rename {client/src => src}/static/icons/brands/pied-piper-square.svg (100%) rename {client/src => src}/static/icons/brands/pied-piper.svg (100%) rename {client/src => src}/static/icons/brands/pinterest-p.svg (100%) rename {client/src => src}/static/icons/brands/pinterest-square.svg (100%) rename {client/src => src}/static/icons/brands/pinterest.svg (100%) rename {client/src => src}/static/icons/brands/playstation.svg (100%) rename {client/src => src}/static/icons/brands/product-hunt.svg (100%) rename {client/src => src}/static/icons/brands/pushed.svg (100%) rename {client/src => src}/static/icons/brands/python.svg (100%) rename {client/src => src}/static/icons/brands/qq.svg (100%) rename {client/src => src}/static/icons/brands/quinscape.svg (100%) rename {client/src => src}/static/icons/brands/quora.svg (100%) rename {client/src => src}/static/icons/brands/r-project.svg (100%) rename {client/src => src}/static/icons/brands/raspberry-pi.svg (100%) rename {client/src => src}/static/icons/brands/ravelry.svg (100%) rename {client/src => src}/static/icons/brands/react.svg (100%) rename {client/src => src}/static/icons/brands/reacteurope.svg (100%) rename {client/src => src}/static/icons/brands/readme.svg (100%) rename {client/src => src}/static/icons/brands/rebel.svg (100%) rename {client/src => src}/static/icons/brands/red-river.svg (100%) rename {client/src => src}/static/icons/brands/reddit-alien.svg (100%) rename {client/src => src}/static/icons/brands/reddit-square.svg (100%) rename {client/src => src}/static/icons/brands/reddit.svg (100%) rename {client/src => src}/static/icons/brands/redhat.svg (100%) rename {client/src => src}/static/icons/brands/renren.svg (100%) rename {client/src => src}/static/icons/brands/replyd.svg (100%) rename {client/src => src}/static/icons/brands/researchgate.svg (100%) rename {client/src => src}/static/icons/brands/resolving.svg (100%) rename {client/src => src}/static/icons/brands/rev.svg (100%) rename {client/src => src}/static/icons/brands/rocketchat.svg (100%) rename {client/src => src}/static/icons/brands/rockrms.svg (100%) rename {client/src => src}/static/icons/brands/safari.svg (100%) rename {client/src => src}/static/icons/brands/salesforce.svg (100%) rename {client/src => src}/static/icons/brands/sass.svg (100%) rename {client/src => src}/static/icons/brands/schlix.svg (100%) rename {client/src => src}/static/icons/brands/scribd.svg (100%) rename {client/src => src}/static/icons/brands/searchengin.svg (100%) rename {client/src => src}/static/icons/brands/sellcast.svg (100%) rename {client/src => src}/static/icons/brands/sellsy.svg (100%) rename {client/src => src}/static/icons/brands/servicestack.svg (100%) rename {client/src => src}/static/icons/brands/shirtsinbulk.svg (100%) rename {client/src => src}/static/icons/brands/shopware.svg (100%) rename {client/src => src}/static/icons/brands/simplybuilt.svg (100%) rename {client/src => src}/static/icons/brands/sistrix.svg (100%) rename {client/src => src}/static/icons/brands/sith.svg (100%) rename {client/src => src}/static/icons/brands/sketch.svg (100%) rename {client/src => src}/static/icons/brands/skyatlas.svg (100%) rename {client/src => src}/static/icons/brands/skype.svg (100%) rename {client/src => src}/static/icons/brands/slack-hash.svg (100%) rename {client/src => src}/static/icons/brands/slack.svg (100%) rename {client/src => src}/static/icons/brands/slideshare.svg (100%) rename {client/src => src}/static/icons/brands/snapchat-ghost.svg (100%) rename {client/src => src}/static/icons/brands/snapchat-square.svg (100%) rename {client/src => src}/static/icons/brands/snapchat.svg (100%) rename {client/src => src}/static/icons/brands/soundcloud.svg (100%) rename {client/src => src}/static/icons/brands/sourcetree.svg (100%) rename {client/src => src}/static/icons/brands/speakap.svg (100%) rename {client/src => src}/static/icons/brands/speaker-deck.svg (100%) rename {client/src => src}/static/icons/brands/spotify.svg (100%) rename {client/src => src}/static/icons/brands/squarespace.svg (100%) rename {client/src => src}/static/icons/brands/stack-exchange.svg (100%) rename {client/src => src}/static/icons/brands/stack-overflow.svg (100%) rename {client/src => src}/static/icons/brands/stackpath.svg (100%) rename {client/src => src}/static/icons/brands/staylinked.svg (100%) rename {client/src => src}/static/icons/brands/steam-square.svg (100%) rename {client/src => src}/static/icons/brands/steam-symbol.svg (100%) rename {client/src => src}/static/icons/brands/steam.svg (100%) rename {client/src => src}/static/icons/brands/sticker-mule.svg (100%) rename {client/src => src}/static/icons/brands/strava.svg (100%) rename {client/src => src}/static/icons/brands/stripe-s.svg (100%) rename {client/src => src}/static/icons/brands/stripe.svg (100%) rename {client/src => src}/static/icons/brands/studiovinari.svg (100%) rename {client/src => src}/static/icons/brands/stumbleupon-circle.svg (100%) rename {client/src => src}/static/icons/brands/stumbleupon.svg (100%) rename {client/src => src}/static/icons/brands/superpowers.svg (100%) rename {client/src => src}/static/icons/brands/supple.svg (100%) rename {client/src => src}/static/icons/brands/suse.svg (100%) rename {client/src => src}/static/icons/brands/swift.svg (100%) rename {client/src => src}/static/icons/brands/symfony.svg (100%) rename {client/src => src}/static/icons/brands/teamspeak.svg (100%) rename {client/src => src}/static/icons/brands/telegram-plane.svg (100%) rename {client/src => src}/static/icons/brands/telegram.svg (100%) rename {client/src => src}/static/icons/brands/tencent-weibo.svg (100%) rename {client/src => src}/static/icons/brands/the-red-yeti.svg (100%) rename {client/src => src}/static/icons/brands/themeco.svg (100%) rename {client/src => src}/static/icons/brands/themeisle.svg (100%) rename {client/src => src}/static/icons/brands/think-peaks.svg (100%) rename {client/src => src}/static/icons/brands/trade-federation.svg (100%) rename {client/src => src}/static/icons/brands/trello.svg (100%) rename {client/src => src}/static/icons/brands/tripadvisor.svg (100%) rename {client/src => src}/static/icons/brands/tumblr-square.svg (100%) rename {client/src => src}/static/icons/brands/tumblr.svg (100%) rename {client/src => src}/static/icons/brands/twitch.svg (100%) rename {client/src => src}/static/icons/brands/twitter-square.svg (100%) rename {client/src => src}/static/icons/brands/twitter.svg (100%) rename {client/src => src}/static/icons/brands/typo3.svg (100%) rename {client/src => src}/static/icons/brands/uber.svg (100%) rename {client/src => src}/static/icons/brands/ubuntu.svg (100%) rename {client/src => src}/static/icons/brands/uikit.svg (100%) rename {client/src => src}/static/icons/brands/umbraco.svg (100%) rename {client/src => src}/static/icons/brands/uniregistry.svg (100%) rename {client/src => src}/static/icons/brands/unity.svg (100%) rename {client/src => src}/static/icons/brands/untappd.svg (100%) rename {client/src => src}/static/icons/brands/ups.svg (100%) rename {client/src => src}/static/icons/brands/usb.svg (100%) rename {client/src => src}/static/icons/brands/usps.svg (100%) rename {client/src => src}/static/icons/brands/ussunnah.svg (100%) rename {client/src => src}/static/icons/brands/vaadin.svg (100%) rename {client/src => src}/static/icons/brands/viacoin.svg (100%) rename {client/src => src}/static/icons/brands/viadeo-square.svg (100%) rename {client/src => src}/static/icons/brands/viadeo.svg (100%) rename {client/src => src}/static/icons/brands/viber.svg (100%) rename {client/src => src}/static/icons/brands/vimeo-square.svg (100%) rename {client/src => src}/static/icons/brands/vimeo-v.svg (100%) rename {client/src => src}/static/icons/brands/vimeo.svg (100%) rename {client/src => src}/static/icons/brands/vine.svg (100%) rename {client/src => src}/static/icons/brands/vk.svg (100%) rename {client/src => src}/static/icons/brands/vnv.svg (100%) rename {client/src => src}/static/icons/brands/vuejs.svg (100%) rename {client/src => src}/static/icons/brands/waze.svg (100%) rename {client/src => src}/static/icons/brands/weebly.svg (100%) rename {client/src => src}/static/icons/brands/weibo.svg (100%) rename {client/src => src}/static/icons/brands/weixin.svg (100%) rename {client/src => src}/static/icons/brands/whatsapp-square.svg (100%) rename {client/src => src}/static/icons/brands/whatsapp.svg (100%) rename {client/src => src}/static/icons/brands/whmcs.svg (100%) rename {client/src => src}/static/icons/brands/wikipedia-w.svg (100%) rename {client/src => src}/static/icons/brands/windows.svg (100%) rename {client/src => src}/static/icons/brands/wix.svg (100%) rename {client/src => src}/static/icons/brands/wizards-of-the-coast.svg (100%) rename {client/src => src}/static/icons/brands/wolf-pack-battalion.svg (100%) rename {client/src => src}/static/icons/brands/wordpress-simple.svg (100%) rename {client/src => src}/static/icons/brands/wordpress.svg (100%) rename {client/src => src}/static/icons/brands/wpbeginner.svg (100%) rename {client/src => src}/static/icons/brands/wpexplorer.svg (100%) rename {client/src => src}/static/icons/brands/wpforms.svg (100%) rename {client/src => src}/static/icons/brands/wpressr.svg (100%) rename {client/src => src}/static/icons/brands/xbox.svg (100%) rename {client/src => src}/static/icons/brands/xing-square.svg (100%) rename {client/src => src}/static/icons/brands/xing.svg (100%) rename {client/src => src}/static/icons/brands/y-combinator.svg (100%) rename {client/src => src}/static/icons/brands/yahoo.svg (100%) rename {client/src => src}/static/icons/brands/yammer.svg (100%) rename {client/src => src}/static/icons/brands/yandex-international.svg (100%) rename {client/src => src}/static/icons/brands/yandex.svg (100%) rename {client/src => src}/static/icons/brands/yarn.svg (100%) rename {client/src => src}/static/icons/brands/yelp.svg (100%) rename {client/src => src}/static/icons/brands/yoast.svg (100%) rename {client/src => src}/static/icons/brands/youtube-square.svg (100%) rename {client/src => src}/static/icons/brands/youtube.svg (100%) rename {client/src => src}/static/icons/brands/zhihu.svg (100%) rename {client/src => src}/static/icons/duotone/abacus.svg (100%) rename {client/src => src}/static/icons/duotone/acorn.svg (100%) rename {client/src => src}/static/icons/duotone/ad.svg (100%) rename {client/src => src}/static/icons/duotone/address-book.svg (100%) rename {client/src => src}/static/icons/duotone/address-card.svg (100%) rename {client/src => src}/static/icons/duotone/adjust.svg (100%) rename {client/src => src}/static/icons/duotone/air-conditioner.svg (100%) rename {client/src => src}/static/icons/duotone/air-freshener.svg (100%) rename {client/src => src}/static/icons/duotone/alarm-clock.svg (100%) rename {client/src => src}/static/icons/duotone/alarm-exclamation.svg (100%) rename {client/src => src}/static/icons/duotone/alarm-plus.svg (100%) rename {client/src => src}/static/icons/duotone/alarm-snooze.svg (100%) rename {client/src => src}/static/icons/duotone/album-collection.svg (100%) rename {client/src => src}/static/icons/duotone/album.svg (100%) rename {client/src => src}/static/icons/duotone/alicorn.svg (100%) rename {client/src => src}/static/icons/duotone/alien-monster.svg (100%) rename {client/src => src}/static/icons/duotone/alien.svg (100%) rename {client/src => src}/static/icons/duotone/align-center.svg (100%) rename {client/src => src}/static/icons/duotone/align-justify.svg (100%) rename {client/src => src}/static/icons/duotone/align-left.svg (100%) rename {client/src => src}/static/icons/duotone/align-right.svg (100%) rename {client/src => src}/static/icons/duotone/align-slash.svg (100%) rename {client/src => src}/static/icons/duotone/allergies.svg (100%) rename {client/src => src}/static/icons/duotone/ambulance.svg (100%) rename {client/src => src}/static/icons/duotone/american-sign-language-interpreting.svg (100%) rename {client/src => src}/static/icons/duotone/amp-guitar.svg (100%) rename {client/src => src}/static/icons/duotone/analytics.svg (100%) rename {client/src => src}/static/icons/duotone/anchor.svg (100%) rename {client/src => src}/static/icons/duotone/angel.svg (100%) rename {client/src => src}/static/icons/duotone/angle-double-down.svg (100%) rename {client/src => src}/static/icons/duotone/angle-double-left.svg (100%) rename {client/src => src}/static/icons/duotone/angle-double-right.svg (100%) rename {client/src => src}/static/icons/duotone/angle-double-up.svg (100%) rename {client/src => src}/static/icons/duotone/angle-down.svg (100%) rename {client/src => src}/static/icons/duotone/angle-left.svg (100%) rename {client/src => src}/static/icons/duotone/angle-right.svg (100%) rename {client/src => src}/static/icons/duotone/angle-up.svg (100%) rename {client/src => src}/static/icons/duotone/angry.svg (100%) rename {client/src => src}/static/icons/duotone/ankh.svg (100%) rename {client/src => src}/static/icons/duotone/apple-alt.svg (100%) rename {client/src => src}/static/icons/duotone/apple-crate.svg (100%) rename {client/src => src}/static/icons/duotone/archive.svg (100%) rename {client/src => src}/static/icons/duotone/archway.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-circle-down.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-circle-left.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-circle-right.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-circle-up.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-down.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-from-bottom.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-from-left.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-from-right.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-from-top.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-left.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-right.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-square-down.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-square-left.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-square-right.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-square-up.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-to-bottom.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-to-left.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-to-right.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-to-top.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-alt-up.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-circle-down.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-circle-left.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-circle-right.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-circle-up.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-down.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-from-bottom.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-from-left.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-from-right.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-from-top.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-left.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-right.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-square-down.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-square-left.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-square-right.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-square-up.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-to-bottom.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-to-left.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-to-right.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-to-top.svg (100%) rename {client/src => src}/static/icons/duotone/arrow-up.svg (100%) rename {client/src => src}/static/icons/duotone/arrows-alt-h.svg (100%) rename {client/src => src}/static/icons/duotone/arrows-alt-v.svg (100%) rename {client/src => src}/static/icons/duotone/arrows-alt.svg (100%) rename {client/src => src}/static/icons/duotone/arrows-h.svg (100%) rename {client/src => src}/static/icons/duotone/arrows-v.svg (100%) rename {client/src => src}/static/icons/duotone/arrows.svg (100%) rename {client/src => src}/static/icons/duotone/assistive-listening-systems.svg (100%) rename {client/src => src}/static/icons/duotone/asterisk.svg (100%) rename {client/src => src}/static/icons/duotone/at.svg (100%) rename {client/src => src}/static/icons/duotone/atlas.svg (100%) rename {client/src => src}/static/icons/duotone/atom-alt.svg (100%) rename {client/src => src}/static/icons/duotone/atom.svg (100%) rename {client/src => src}/static/icons/duotone/audio-description.svg (100%) rename {client/src => src}/static/icons/duotone/award.svg (100%) rename {client/src => src}/static/icons/duotone/axe-battle.svg (100%) rename {client/src => src}/static/icons/duotone/axe.svg (100%) rename {client/src => src}/static/icons/duotone/baby-carriage.svg (100%) rename {client/src => src}/static/icons/duotone/baby.svg (100%) rename {client/src => src}/static/icons/duotone/backpack.svg (100%) rename {client/src => src}/static/icons/duotone/backspace.svg (100%) rename {client/src => src}/static/icons/duotone/backward.svg (100%) rename {client/src => src}/static/icons/duotone/bacon.svg (100%) rename {client/src => src}/static/icons/duotone/badge-check.svg (100%) rename {client/src => src}/static/icons/duotone/badge-dollar.svg (100%) rename {client/src => src}/static/icons/duotone/badge-percent.svg (100%) rename {client/src => src}/static/icons/duotone/badge-sheriff.svg (100%) rename {client/src => src}/static/icons/duotone/badge.svg (100%) rename {client/src => src}/static/icons/duotone/badger-honey.svg (100%) rename {client/src => src}/static/icons/duotone/bags-shopping.svg (100%) rename {client/src => src}/static/icons/duotone/bahai.svg (100%) rename {client/src => src}/static/icons/duotone/balance-scale-left.svg (100%) rename {client/src => src}/static/icons/duotone/balance-scale-right.svg (100%) rename {client/src => src}/static/icons/duotone/balance-scale.svg (100%) rename {client/src => src}/static/icons/duotone/ball-pile.svg (100%) rename {client/src => src}/static/icons/duotone/ballot-check.svg (100%) rename {client/src => src}/static/icons/duotone/ballot.svg (100%) rename {client/src => src}/static/icons/duotone/ban.svg (100%) rename {client/src => src}/static/icons/duotone/band-aid.svg (100%) rename {client/src => src}/static/icons/duotone/banjo.svg (100%) rename {client/src => src}/static/icons/duotone/barcode-alt.svg (100%) rename {client/src => src}/static/icons/duotone/barcode-read.svg (100%) rename {client/src => src}/static/icons/duotone/barcode-scan.svg (100%) rename {client/src => src}/static/icons/duotone/barcode.svg (100%) rename {client/src => src}/static/icons/duotone/bars.svg (100%) rename {client/src => src}/static/icons/duotone/baseball-ball.svg (100%) rename {client/src => src}/static/icons/duotone/baseball.svg (100%) rename {client/src => src}/static/icons/duotone/basketball-ball.svg (100%) rename {client/src => src}/static/icons/duotone/basketball-hoop.svg (100%) rename {client/src => src}/static/icons/duotone/bat.svg (100%) rename {client/src => src}/static/icons/duotone/bath.svg (100%) rename {client/src => src}/static/icons/duotone/battery-bolt.svg (100%) rename {client/src => src}/static/icons/duotone/battery-empty.svg (100%) rename {client/src => src}/static/icons/duotone/battery-full.svg (100%) rename {client/src => src}/static/icons/duotone/battery-half.svg (100%) rename {client/src => src}/static/icons/duotone/battery-quarter.svg (100%) rename {client/src => src}/static/icons/duotone/battery-slash.svg (100%) rename {client/src => src}/static/icons/duotone/battery-three-quarters.svg (100%) rename {client/src => src}/static/icons/duotone/bed-alt.svg (100%) rename {client/src => src}/static/icons/duotone/bed-bunk.svg (100%) rename {client/src => src}/static/icons/duotone/bed-empty.svg (100%) rename {client/src => src}/static/icons/duotone/bed.svg (100%) rename {client/src => src}/static/icons/duotone/beer.svg (100%) rename {client/src => src}/static/icons/duotone/bell-exclamation.svg (100%) rename {client/src => src}/static/icons/duotone/bell-on.svg (100%) rename {client/src => src}/static/icons/duotone/bell-plus.svg (100%) rename {client/src => src}/static/icons/duotone/bell-school-slash.svg (100%) rename {client/src => src}/static/icons/duotone/bell-school.svg (100%) rename {client/src => src}/static/icons/duotone/bell-slash.svg (100%) rename {client/src => src}/static/icons/duotone/bell.svg (100%) rename {client/src => src}/static/icons/duotone/bells.svg (100%) rename {client/src => src}/static/icons/duotone/betamax.svg (100%) rename {client/src => src}/static/icons/duotone/bezier-curve.svg (100%) rename {client/src => src}/static/icons/duotone/bible.svg (100%) rename {client/src => src}/static/icons/duotone/bicycle.svg (100%) rename {client/src => src}/static/icons/duotone/biking-mountain.svg (100%) rename {client/src => src}/static/icons/duotone/biking.svg (100%) rename {client/src => src}/static/icons/duotone/binoculars.svg (100%) rename {client/src => src}/static/icons/duotone/biohazard.svg (100%) rename {client/src => src}/static/icons/duotone/birthday-cake.svg (100%) rename {client/src => src}/static/icons/duotone/blanket.svg (100%) rename {client/src => src}/static/icons/duotone/blender-phone.svg (100%) rename {client/src => src}/static/icons/duotone/blender.svg (100%) rename {client/src => src}/static/icons/duotone/blind.svg (100%) rename {client/src => src}/static/icons/duotone/blinds-open.svg (100%) rename {client/src => src}/static/icons/duotone/blinds-raised.svg (100%) rename {client/src => src}/static/icons/duotone/blinds.svg (100%) rename {client/src => src}/static/icons/duotone/blog.svg (100%) rename {client/src => src}/static/icons/duotone/bold.svg (100%) rename {client/src => src}/static/icons/duotone/bolt.svg (100%) rename {client/src => src}/static/icons/duotone/bomb.svg (100%) rename {client/src => src}/static/icons/duotone/bone-break.svg (100%) rename {client/src => src}/static/icons/duotone/bone.svg (100%) rename {client/src => src}/static/icons/duotone/bong.svg (100%) rename {client/src => src}/static/icons/duotone/book-alt.svg (100%) rename {client/src => src}/static/icons/duotone/book-dead.svg (100%) rename {client/src => src}/static/icons/duotone/book-heart.svg (100%) rename {client/src => src}/static/icons/duotone/book-medical.svg (100%) rename {client/src => src}/static/icons/duotone/book-open.svg (100%) rename {client/src => src}/static/icons/duotone/book-reader.svg (100%) rename {client/src => src}/static/icons/duotone/book-spells.svg (100%) rename {client/src => src}/static/icons/duotone/book-user.svg (100%) rename {client/src => src}/static/icons/duotone/book.svg (100%) rename {client/src => src}/static/icons/duotone/bookmark.svg (100%) rename {client/src => src}/static/icons/duotone/books-medical.svg (100%) rename {client/src => src}/static/icons/duotone/books.svg (100%) rename {client/src => src}/static/icons/duotone/boombox.svg (100%) rename {client/src => src}/static/icons/duotone/boot.svg (100%) rename {client/src => src}/static/icons/duotone/booth-curtain.svg (100%) rename {client/src => src}/static/icons/duotone/border-all.svg (100%) rename {client/src => src}/static/icons/duotone/border-bottom.svg (100%) rename {client/src => src}/static/icons/duotone/border-center-h.svg (100%) rename {client/src => src}/static/icons/duotone/border-center-v.svg (100%) rename {client/src => src}/static/icons/duotone/border-inner.svg (100%) rename {client/src => src}/static/icons/duotone/border-left.svg (100%) rename {client/src => src}/static/icons/duotone/border-none.svg (100%) rename {client/src => src}/static/icons/duotone/border-outer.svg (100%) rename {client/src => src}/static/icons/duotone/border-right.svg (100%) rename {client/src => src}/static/icons/duotone/border-style-alt.svg (100%) rename {client/src => src}/static/icons/duotone/border-style.svg (100%) rename {client/src => src}/static/icons/duotone/border-top.svg (100%) rename {client/src => src}/static/icons/duotone/bow-arrow.svg (100%) rename {client/src => src}/static/icons/duotone/bowling-ball.svg (100%) rename {client/src => src}/static/icons/duotone/bowling-pins.svg (100%) rename {client/src => src}/static/icons/duotone/box-alt.svg (100%) rename {client/src => src}/static/icons/duotone/box-ballot.svg (100%) rename {client/src => src}/static/icons/duotone/box-check.svg (100%) rename {client/src => src}/static/icons/duotone/box-fragile.svg (100%) rename {client/src => src}/static/icons/duotone/box-full.svg (100%) rename {client/src => src}/static/icons/duotone/box-heart.svg (100%) rename {client/src => src}/static/icons/duotone/box-open.svg (100%) rename {client/src => src}/static/icons/duotone/box-up.svg (100%) rename {client/src => src}/static/icons/duotone/box-usd.svg (100%) rename {client/src => src}/static/icons/duotone/box.svg (100%) rename {client/src => src}/static/icons/duotone/boxes-alt.svg (100%) rename {client/src => src}/static/icons/duotone/boxes.svg (100%) rename {client/src => src}/static/icons/duotone/boxing-glove.svg (100%) rename {client/src => src}/static/icons/duotone/brackets-curly.svg (100%) rename {client/src => src}/static/icons/duotone/brackets.svg (100%) rename {client/src => src}/static/icons/duotone/braille.svg (100%) rename {client/src => src}/static/icons/duotone/brain.svg (100%) rename {client/src => src}/static/icons/duotone/bread-loaf.svg (100%) rename {client/src => src}/static/icons/duotone/bread-slice.svg (100%) rename {client/src => src}/static/icons/duotone/briefcase-medical.svg (100%) rename {client/src => src}/static/icons/duotone/briefcase.svg (100%) rename {client/src => src}/static/icons/duotone/bring-forward.svg (100%) rename {client/src => src}/static/icons/duotone/bring-front.svg (100%) rename {client/src => src}/static/icons/duotone/broadcast-tower.svg (100%) rename {client/src => src}/static/icons/duotone/broom.svg (100%) rename {client/src => src}/static/icons/duotone/browser.svg (100%) rename {client/src => src}/static/icons/duotone/brush.svg (100%) rename {client/src => src}/static/icons/duotone/bug.svg (100%) rename {client/src => src}/static/icons/duotone/building.svg (100%) rename {client/src => src}/static/icons/duotone/bullhorn.svg (100%) rename {client/src => src}/static/icons/duotone/bullseye-arrow.svg (100%) rename {client/src => src}/static/icons/duotone/bullseye-pointer.svg (100%) rename {client/src => src}/static/icons/duotone/bullseye.svg (100%) rename {client/src => src}/static/icons/duotone/burger-soda.svg (100%) rename {client/src => src}/static/icons/duotone/burn.svg (100%) rename {client/src => src}/static/icons/duotone/burrito.svg (100%) rename {client/src => src}/static/icons/duotone/bus-alt.svg (100%) rename {client/src => src}/static/icons/duotone/bus-school.svg (100%) rename {client/src => src}/static/icons/duotone/bus.svg (100%) rename {client/src => src}/static/icons/duotone/business-time.svg (100%) rename {client/src => src}/static/icons/duotone/cabinet-filing.svg (100%) rename {client/src => src}/static/icons/duotone/cactus.svg (100%) rename {client/src => src}/static/icons/duotone/calculator-alt.svg (100%) rename {client/src => src}/static/icons/duotone/calculator.svg (100%) rename {client/src => src}/static/icons/duotone/calendar-alt.svg (100%) rename {client/src => src}/static/icons/duotone/calendar-check.svg (100%) rename {client/src => src}/static/icons/duotone/calendar-day.svg (100%) rename {client/src => src}/static/icons/duotone/calendar-edit.svg (100%) rename {client/src => src}/static/icons/duotone/calendar-exclamation.svg (100%) rename {client/src => src}/static/icons/duotone/calendar-minus.svg (100%) rename {client/src => src}/static/icons/duotone/calendar-plus.svg (100%) rename {client/src => src}/static/icons/duotone/calendar-star.svg (100%) rename {client/src => src}/static/icons/duotone/calendar-times.svg (100%) rename {client/src => src}/static/icons/duotone/calendar-week.svg (100%) rename {client/src => src}/static/icons/duotone/calendar.svg (100%) rename {client/src => src}/static/icons/duotone/camcorder.svg (100%) rename {client/src => src}/static/icons/duotone/camera-alt.svg (100%) rename {client/src => src}/static/icons/duotone/camera-home.svg (100%) rename {client/src => src}/static/icons/duotone/camera-movie.svg (100%) rename {client/src => src}/static/icons/duotone/camera-polaroid.svg (100%) rename {client/src => src}/static/icons/duotone/camera-retro.svg (100%) rename {client/src => src}/static/icons/duotone/camera.svg (100%) rename {client/src => src}/static/icons/duotone/campfire.svg (100%) rename {client/src => src}/static/icons/duotone/campground.svg (100%) rename {client/src => src}/static/icons/duotone/candle-holder.svg (100%) rename {client/src => src}/static/icons/duotone/candy-cane.svg (100%) rename {client/src => src}/static/icons/duotone/candy-corn.svg (100%) rename {client/src => src}/static/icons/duotone/cannabis.svg (100%) rename {client/src => src}/static/icons/duotone/capsules.svg (100%) rename {client/src => src}/static/icons/duotone/car-alt.svg (100%) rename {client/src => src}/static/icons/duotone/car-battery.svg (100%) rename {client/src => src}/static/icons/duotone/car-building.svg (100%) rename {client/src => src}/static/icons/duotone/car-bump.svg (100%) rename {client/src => src}/static/icons/duotone/car-bus.svg (100%) rename {client/src => src}/static/icons/duotone/car-crash.svg (100%) rename {client/src => src}/static/icons/duotone/car-garage.svg (100%) rename {client/src => src}/static/icons/duotone/car-mechanic.svg (100%) rename {client/src => src}/static/icons/duotone/car-side.svg (100%) rename {client/src => src}/static/icons/duotone/car-tilt.svg (100%) rename {client/src => src}/static/icons/duotone/car-wash.svg (100%) rename {client/src => src}/static/icons/duotone/car.svg (100%) rename {client/src => src}/static/icons/duotone/caravan-alt.svg (100%) rename {client/src => src}/static/icons/duotone/caravan.svg (100%) rename {client/src => src}/static/icons/duotone/caret-circle-down.svg (100%) rename {client/src => src}/static/icons/duotone/caret-circle-left.svg (100%) rename {client/src => src}/static/icons/duotone/caret-circle-right.svg (100%) rename {client/src => src}/static/icons/duotone/caret-circle-up.svg (100%) rename {client/src => src}/static/icons/duotone/caret-down.svg (100%) rename {client/src => src}/static/icons/duotone/caret-left.svg (100%) rename {client/src => src}/static/icons/duotone/caret-right.svg (100%) rename {client/src => src}/static/icons/duotone/caret-square-down.svg (100%) rename {client/src => src}/static/icons/duotone/caret-square-left.svg (100%) rename {client/src => src}/static/icons/duotone/caret-square-right.svg (100%) rename {client/src => src}/static/icons/duotone/caret-square-up.svg (100%) rename {client/src => src}/static/icons/duotone/caret-up.svg (100%) rename {client/src => src}/static/icons/duotone/carrot.svg (100%) rename {client/src => src}/static/icons/duotone/cars.svg (100%) rename {client/src => src}/static/icons/duotone/cart-arrow-down.svg (100%) rename {client/src => src}/static/icons/duotone/cart-plus.svg (100%) rename {client/src => src}/static/icons/duotone/cash-register.svg (100%) rename {client/src => src}/static/icons/duotone/cassette-tape.svg (100%) rename {client/src => src}/static/icons/duotone/cat-space.svg (100%) rename {client/src => src}/static/icons/duotone/cat.svg (100%) rename {client/src => src}/static/icons/duotone/cauldron.svg (100%) rename {client/src => src}/static/icons/duotone/cctv.svg (100%) rename {client/src => src}/static/icons/duotone/certificate.svg (100%) rename {client/src => src}/static/icons/duotone/chair-office.svg (100%) rename {client/src => src}/static/icons/duotone/chair.svg (100%) rename {client/src => src}/static/icons/duotone/chalkboard-teacher.svg (100%) rename {client/src => src}/static/icons/duotone/chalkboard.svg (100%) rename {client/src => src}/static/icons/duotone/charging-station.svg (100%) rename {client/src => src}/static/icons/duotone/chart-area.svg (100%) rename {client/src => src}/static/icons/duotone/chart-bar.svg (100%) rename {client/src => src}/static/icons/duotone/chart-line-down.svg (100%) rename {client/src => src}/static/icons/duotone/chart-line.svg (100%) rename {client/src => src}/static/icons/duotone/chart-network.svg (100%) rename {client/src => src}/static/icons/duotone/chart-pie-alt.svg (100%) rename {client/src => src}/static/icons/duotone/chart-pie.svg (100%) rename {client/src => src}/static/icons/duotone/chart-scatter.svg (100%) rename {client/src => src}/static/icons/duotone/check-circle.svg (100%) rename {client/src => src}/static/icons/duotone/check-double.svg (100%) rename {client/src => src}/static/icons/duotone/check-square.svg (100%) rename {client/src => src}/static/icons/duotone/check.svg (100%) rename {client/src => src}/static/icons/duotone/cheese-swiss.svg (100%) rename {client/src => src}/static/icons/duotone/cheese.svg (100%) rename {client/src => src}/static/icons/duotone/cheeseburger.svg (100%) rename {client/src => src}/static/icons/duotone/chess-bishop-alt.svg (100%) rename {client/src => src}/static/icons/duotone/chess-bishop.svg (100%) rename {client/src => src}/static/icons/duotone/chess-board.svg (100%) rename {client/src => src}/static/icons/duotone/chess-clock-alt.svg (100%) rename {client/src => src}/static/icons/duotone/chess-clock.svg (100%) rename {client/src => src}/static/icons/duotone/chess-king-alt.svg (100%) rename {client/src => src}/static/icons/duotone/chess-king.svg (100%) rename {client/src => src}/static/icons/duotone/chess-knight-alt.svg (100%) rename {client/src => src}/static/icons/duotone/chess-knight.svg (100%) rename {client/src => src}/static/icons/duotone/chess-pawn-alt.svg (100%) rename {client/src => src}/static/icons/duotone/chess-pawn.svg (100%) rename {client/src => src}/static/icons/duotone/chess-queen-alt.svg (100%) rename {client/src => src}/static/icons/duotone/chess-queen.svg (100%) rename {client/src => src}/static/icons/duotone/chess-rook-alt.svg (100%) rename {client/src => src}/static/icons/duotone/chess-rook.svg (100%) rename {client/src => src}/static/icons/duotone/chess.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-circle-down.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-circle-left.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-circle-right.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-circle-up.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-double-down.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-double-left.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-double-right.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-double-up.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-down.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-left.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-right.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-square-down.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-square-left.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-square-right.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-square-up.svg (100%) rename {client/src => src}/static/icons/duotone/chevron-up.svg (100%) rename {client/src => src}/static/icons/duotone/child.svg (100%) rename {client/src => src}/static/icons/duotone/chimney.svg (100%) rename {client/src => src}/static/icons/duotone/church.svg (100%) rename {client/src => src}/static/icons/duotone/circle-notch.svg (100%) rename {client/src => src}/static/icons/duotone/circle.svg (100%) rename {client/src => src}/static/icons/duotone/city.svg (100%) rename {client/src => src}/static/icons/duotone/clarinet.svg (100%) rename {client/src => src}/static/icons/duotone/claw-marks.svg (100%) rename {client/src => src}/static/icons/duotone/clinic-medical.svg (100%) rename {client/src => src}/static/icons/duotone/clipboard-check.svg (100%) rename {client/src => src}/static/icons/duotone/clipboard-list-check.svg (100%) rename {client/src => src}/static/icons/duotone/clipboard-list.svg (100%) rename {client/src => src}/static/icons/duotone/clipboard-prescription.svg (100%) rename {client/src => src}/static/icons/duotone/clipboard-user.svg (100%) rename {client/src => src}/static/icons/duotone/clipboard.svg (100%) rename {client/src => src}/static/icons/duotone/clock.svg (100%) rename {client/src => src}/static/icons/duotone/clone.svg (100%) rename {client/src => src}/static/icons/duotone/closed-captioning.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-download-alt.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-download.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-drizzle.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-hail-mixed.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-hail.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-meatball.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-moon-rain.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-moon.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-music.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-rain.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-rainbow.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-showers-heavy.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-showers.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-sleet.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-snow.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-sun-rain.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-sun.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-upload-alt.svg (100%) rename {client/src => src}/static/icons/duotone/cloud-upload.svg (100%) rename {client/src => src}/static/icons/duotone/cloud.svg (100%) rename {client/src => src}/static/icons/duotone/clouds-moon.svg (100%) rename {client/src => src}/static/icons/duotone/clouds-sun.svg (100%) rename {client/src => src}/static/icons/duotone/clouds.svg (100%) rename {client/src => src}/static/icons/duotone/club.svg (100%) rename {client/src => src}/static/icons/duotone/cocktail.svg (100%) rename {client/src => src}/static/icons/duotone/code-branch.svg (100%) rename {client/src => src}/static/icons/duotone/code-commit.svg (100%) rename {client/src => src}/static/icons/duotone/code-merge.svg (100%) rename {client/src => src}/static/icons/duotone/code.svg (100%) rename {client/src => src}/static/icons/duotone/coffee-pot.svg (100%) rename {client/src => src}/static/icons/duotone/coffee-togo.svg (100%) rename {client/src => src}/static/icons/duotone/coffee.svg (100%) rename {client/src => src}/static/icons/duotone/coffin.svg (100%) rename {client/src => src}/static/icons/duotone/cog.svg (100%) rename {client/src => src}/static/icons/duotone/cogs.svg (100%) rename {client/src => src}/static/icons/duotone/coin.svg (100%) rename {client/src => src}/static/icons/duotone/coins.svg (100%) rename {client/src => src}/static/icons/duotone/columns.svg (100%) rename {client/src => src}/static/icons/duotone/comet.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-check.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-dollar.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-dots.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-edit.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-exclamation.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-lines.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-medical.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-minus.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-music.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-plus.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-slash.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-smile.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt-times.svg (100%) rename {client/src => src}/static/icons/duotone/comment-alt.svg (100%) rename {client/src => src}/static/icons/duotone/comment-check.svg (100%) rename {client/src => src}/static/icons/duotone/comment-dollar.svg (100%) rename {client/src => src}/static/icons/duotone/comment-dots.svg (100%) rename {client/src => src}/static/icons/duotone/comment-edit.svg (100%) rename {client/src => src}/static/icons/duotone/comment-exclamation.svg (100%) rename {client/src => src}/static/icons/duotone/comment-lines.svg (100%) rename {client/src => src}/static/icons/duotone/comment-medical.svg (100%) rename {client/src => src}/static/icons/duotone/comment-minus.svg (100%) rename {client/src => src}/static/icons/duotone/comment-music.svg (100%) rename {client/src => src}/static/icons/duotone/comment-plus.svg (100%) rename {client/src => src}/static/icons/duotone/comment-slash.svg (100%) rename {client/src => src}/static/icons/duotone/comment-smile.svg (100%) rename {client/src => src}/static/icons/duotone/comment-times.svg (100%) rename {client/src => src}/static/icons/duotone/comment.svg (100%) rename {client/src => src}/static/icons/duotone/comments-alt-dollar.svg (100%) rename {client/src => src}/static/icons/duotone/comments-alt.svg (100%) rename {client/src => src}/static/icons/duotone/comments-dollar.svg (100%) rename {client/src => src}/static/icons/duotone/comments.svg (100%) rename {client/src => src}/static/icons/duotone/compact-disc.svg (100%) rename {client/src => src}/static/icons/duotone/compass-slash.svg (100%) rename {client/src => src}/static/icons/duotone/compass.svg (100%) rename {client/src => src}/static/icons/duotone/compress-alt.svg (100%) rename {client/src => src}/static/icons/duotone/compress-arrows-alt.svg (100%) rename {client/src => src}/static/icons/duotone/compress-wide.svg (100%) rename {client/src => src}/static/icons/duotone/compress.svg (100%) rename {client/src => src}/static/icons/duotone/computer-classic.svg (100%) rename {client/src => src}/static/icons/duotone/computer-speaker.svg (100%) rename {client/src => src}/static/icons/duotone/concierge-bell.svg (100%) rename {client/src => src}/static/icons/duotone/construction.svg (100%) rename {client/src => src}/static/icons/duotone/container-storage.svg (100%) rename {client/src => src}/static/icons/duotone/conveyor-belt-alt.svg (100%) rename {client/src => src}/static/icons/duotone/conveyor-belt.svg (100%) rename {client/src => src}/static/icons/duotone/cookie-bite.svg (100%) rename {client/src => src}/static/icons/duotone/cookie.svg (100%) rename {client/src => src}/static/icons/duotone/copy.svg (100%) rename {client/src => src}/static/icons/duotone/copyright.svg (100%) rename {client/src => src}/static/icons/duotone/corn.svg (100%) rename {client/src => src}/static/icons/duotone/couch.svg (100%) rename {client/src => src}/static/icons/duotone/cow.svg (100%) rename {client/src => src}/static/icons/duotone/cowbell-more.svg (100%) rename {client/src => src}/static/icons/duotone/cowbell.svg (100%) rename {client/src => src}/static/icons/duotone/credit-card-blank.svg (100%) rename {client/src => src}/static/icons/duotone/credit-card-front.svg (100%) rename {client/src => src}/static/icons/duotone/credit-card.svg (100%) rename {client/src => src}/static/icons/duotone/cricket.svg (100%) rename {client/src => src}/static/icons/duotone/croissant.svg (100%) rename {client/src => src}/static/icons/duotone/crop-alt.svg (100%) rename {client/src => src}/static/icons/duotone/crop.svg (100%) rename {client/src => src}/static/icons/duotone/cross.svg (100%) rename {client/src => src}/static/icons/duotone/crosshairs.svg (100%) rename {client/src => src}/static/icons/duotone/crow.svg (100%) rename {client/src => src}/static/icons/duotone/crown.svg (100%) rename {client/src => src}/static/icons/duotone/crutch.svg (100%) rename {client/src => src}/static/icons/duotone/crutches.svg (100%) rename {client/src => src}/static/icons/duotone/cube.svg (100%) rename {client/src => src}/static/icons/duotone/cubes.svg (100%) rename {client/src => src}/static/icons/duotone/curling.svg (100%) rename {client/src => src}/static/icons/duotone/cut.svg (100%) rename {client/src => src}/static/icons/duotone/dagger.svg (100%) rename {client/src => src}/static/icons/duotone/database.svg (100%) rename {client/src => src}/static/icons/duotone/deaf.svg (100%) rename {client/src => src}/static/icons/duotone/debug.svg (100%) rename {client/src => src}/static/icons/duotone/deer-rudolph.svg (100%) rename {client/src => src}/static/icons/duotone/deer.svg (100%) rename {client/src => src}/static/icons/duotone/democrat.svg (100%) rename {client/src => src}/static/icons/duotone/desktop-alt.svg (100%) rename {client/src => src}/static/icons/duotone/desktop.svg (100%) rename {client/src => src}/static/icons/duotone/dewpoint.svg (100%) rename {client/src => src}/static/icons/duotone/dharmachakra.svg (100%) rename {client/src => src}/static/icons/duotone/diagnoses.svg (100%) rename {client/src => src}/static/icons/duotone/diamond.svg (100%) rename {client/src => src}/static/icons/duotone/dice-d10.svg (100%) rename {client/src => src}/static/icons/duotone/dice-d12.svg (100%) rename {client/src => src}/static/icons/duotone/dice-d20.svg (100%) rename {client/src => src}/static/icons/duotone/dice-d4.svg (100%) rename {client/src => src}/static/icons/duotone/dice-d6.svg (100%) rename {client/src => src}/static/icons/duotone/dice-d8.svg (100%) rename {client/src => src}/static/icons/duotone/dice-five.svg (100%) rename {client/src => src}/static/icons/duotone/dice-four.svg (100%) rename {client/src => src}/static/icons/duotone/dice-one.svg (100%) rename {client/src => src}/static/icons/duotone/dice-six.svg (100%) rename {client/src => src}/static/icons/duotone/dice-three.svg (100%) rename {client/src => src}/static/icons/duotone/dice-two.svg (100%) rename {client/src => src}/static/icons/duotone/dice.svg (100%) rename {client/src => src}/static/icons/duotone/digging.svg (100%) rename {client/src => src}/static/icons/duotone/digital-tachograph.svg (100%) rename {client/src => src}/static/icons/duotone/diploma.svg (100%) rename {client/src => src}/static/icons/duotone/directions.svg (100%) rename {client/src => src}/static/icons/duotone/disc-drive.svg (100%) rename {client/src => src}/static/icons/duotone/disease.svg (100%) rename {client/src => src}/static/icons/duotone/divide.svg (100%) rename {client/src => src}/static/icons/duotone/dizzy.svg (100%) rename {client/src => src}/static/icons/duotone/dna.svg (100%) rename {client/src => src}/static/icons/duotone/do-not-enter.svg (100%) rename {client/src => src}/static/icons/duotone/dog-leashed.svg (100%) rename {client/src => src}/static/icons/duotone/dog.svg (100%) rename {client/src => src}/static/icons/duotone/dollar-sign.svg (100%) rename {client/src => src}/static/icons/duotone/dolly-empty.svg (100%) rename {client/src => src}/static/icons/duotone/dolly-flatbed-alt.svg (100%) rename {client/src => src}/static/icons/duotone/dolly-flatbed-empty.svg (100%) rename {client/src => src}/static/icons/duotone/dolly-flatbed.svg (100%) rename {client/src => src}/static/icons/duotone/dolly.svg (100%) rename {client/src => src}/static/icons/duotone/donate.svg (100%) rename {client/src => src}/static/icons/duotone/door-closed.svg (100%) rename {client/src => src}/static/icons/duotone/door-open.svg (100%) rename {client/src => src}/static/icons/duotone/dot-circle.svg (100%) rename {client/src => src}/static/icons/duotone/dove.svg (100%) rename {client/src => src}/static/icons/duotone/download.svg (100%) rename {client/src => src}/static/icons/duotone/drafting-compass.svg (100%) rename {client/src => src}/static/icons/duotone/dragon.svg (100%) rename {client/src => src}/static/icons/duotone/draw-circle.svg (100%) rename {client/src => src}/static/icons/duotone/draw-polygon.svg (100%) rename {client/src => src}/static/icons/duotone/draw-square.svg (100%) rename {client/src => src}/static/icons/duotone/dreidel.svg (100%) rename {client/src => src}/static/icons/duotone/drone-alt.svg (100%) rename {client/src => src}/static/icons/duotone/drone.svg (100%) rename {client/src => src}/static/icons/duotone/drum-steelpan.svg (100%) rename {client/src => src}/static/icons/duotone/drum.svg (100%) rename {client/src => src}/static/icons/duotone/drumstick-bite.svg (100%) rename {client/src => src}/static/icons/duotone/drumstick.svg (100%) rename {client/src => src}/static/icons/duotone/dryer-alt.svg (100%) rename {client/src => src}/static/icons/duotone/dryer.svg (100%) rename {client/src => src}/static/icons/duotone/duck.svg (100%) rename {client/src => src}/static/icons/duotone/dumbbell.svg (100%) rename {client/src => src}/static/icons/duotone/dumpster-fire.svg (100%) rename {client/src => src}/static/icons/duotone/dumpster.svg (100%) rename {client/src => src}/static/icons/duotone/dungeon.svg (100%) rename {client/src => src}/static/icons/duotone/ear-muffs.svg (100%) rename {client/src => src}/static/icons/duotone/ear.svg (100%) rename {client/src => src}/static/icons/duotone/eclipse-alt.svg (100%) rename {client/src => src}/static/icons/duotone/eclipse.svg (100%) rename {client/src => src}/static/icons/duotone/edit.svg (100%) rename {client/src => src}/static/icons/duotone/egg-fried.svg (100%) rename {client/src => src}/static/icons/duotone/egg.svg (100%) rename {client/src => src}/static/icons/duotone/eject.svg (100%) rename {client/src => src}/static/icons/duotone/elephant.svg (100%) rename {client/src => src}/static/icons/duotone/ellipsis-h-alt.svg (100%) rename {client/src => src}/static/icons/duotone/ellipsis-h.svg (100%) rename {client/src => src}/static/icons/duotone/ellipsis-v-alt.svg (100%) rename {client/src => src}/static/icons/duotone/ellipsis-v.svg (100%) rename {client/src => src}/static/icons/duotone/empty-set.svg (100%) rename {client/src => src}/static/icons/duotone/engine-warning.svg (100%) rename {client/src => src}/static/icons/duotone/envelope-open-dollar.svg (100%) rename {client/src => src}/static/icons/duotone/envelope-open-text.svg (100%) rename {client/src => src}/static/icons/duotone/envelope-open.svg (100%) rename {client/src => src}/static/icons/duotone/envelope-square.svg (100%) rename {client/src => src}/static/icons/duotone/envelope.svg (100%) rename {client/src => src}/static/icons/duotone/equals.svg (100%) rename {client/src => src}/static/icons/duotone/eraser.svg (100%) rename {client/src => src}/static/icons/duotone/ethernet.svg (100%) rename {client/src => src}/static/icons/duotone/euro-sign.svg (100%) rename {client/src => src}/static/icons/duotone/exchange-alt.svg (100%) rename {client/src => src}/static/icons/duotone/exchange.svg (100%) rename {client/src => src}/static/icons/duotone/exclamation-circle.svg (100%) rename {client/src => src}/static/icons/duotone/exclamation-square.svg (100%) rename {client/src => src}/static/icons/duotone/exclamation-triangle.svg (100%) rename {client/src => src}/static/icons/duotone/exclamation.svg (100%) rename {client/src => src}/static/icons/duotone/expand-alt.svg (100%) rename {client/src => src}/static/icons/duotone/expand-arrows-alt.svg (100%) rename {client/src => src}/static/icons/duotone/expand-arrows.svg (100%) rename {client/src => src}/static/icons/duotone/expand-wide.svg (100%) rename {client/src => src}/static/icons/duotone/expand.svg (100%) rename {client/src => src}/static/icons/duotone/external-link-alt.svg (100%) rename {client/src => src}/static/icons/duotone/external-link-square-alt.svg (100%) rename {client/src => src}/static/icons/duotone/external-link-square.svg (100%) rename {client/src => src}/static/icons/duotone/external-link.svg (100%) rename {client/src => src}/static/icons/duotone/eye-dropper.svg (100%) rename {client/src => src}/static/icons/duotone/eye-evil.svg (100%) rename {client/src => src}/static/icons/duotone/eye-slash.svg (100%) rename {client/src => src}/static/icons/duotone/eye.svg (100%) rename {client/src => src}/static/icons/duotone/fan-table.svg (100%) rename {client/src => src}/static/icons/duotone/fan.svg (100%) rename {client/src => src}/static/icons/duotone/farm.svg (100%) rename {client/src => src}/static/icons/duotone/fast-backward.svg (100%) rename {client/src => src}/static/icons/duotone/fast-forward.svg (100%) rename {client/src => src}/static/icons/duotone/faucet-drip.svg (100%) rename {client/src => src}/static/icons/duotone/faucet.svg (100%) rename {client/src => src}/static/icons/duotone/fax.svg (100%) rename {client/src => src}/static/icons/duotone/feather-alt.svg (100%) rename {client/src => src}/static/icons/duotone/feather.svg (100%) rename {client/src => src}/static/icons/duotone/female.svg (100%) rename {client/src => src}/static/icons/duotone/field-hockey.svg (100%) rename {client/src => src}/static/icons/duotone/fighter-jet.svg (100%) rename {client/src => src}/static/icons/duotone/file-alt.svg (100%) rename {client/src => src}/static/icons/duotone/file-archive.svg (100%) rename {client/src => src}/static/icons/duotone/file-audio.svg (100%) rename {client/src => src}/static/icons/duotone/file-certificate.svg (100%) rename {client/src => src}/static/icons/duotone/file-chart-line.svg (100%) rename {client/src => src}/static/icons/duotone/file-chart-pie.svg (100%) rename {client/src => src}/static/icons/duotone/file-check.svg (100%) rename {client/src => src}/static/icons/duotone/file-code.svg (100%) rename {client/src => src}/static/icons/duotone/file-contract.svg (100%) rename {client/src => src}/static/icons/duotone/file-csv.svg (100%) rename {client/src => src}/static/icons/duotone/file-download.svg (100%) rename {client/src => src}/static/icons/duotone/file-edit.svg (100%) rename {client/src => src}/static/icons/duotone/file-excel.svg (100%) rename {client/src => src}/static/icons/duotone/file-exclamation.svg (100%) rename {client/src => src}/static/icons/duotone/file-export.svg (100%) rename {client/src => src}/static/icons/duotone/file-image.svg (100%) rename {client/src => src}/static/icons/duotone/file-import.svg (100%) rename {client/src => src}/static/icons/duotone/file-invoice-dollar.svg (100%) rename {client/src => src}/static/icons/duotone/file-invoice.svg (100%) rename {client/src => src}/static/icons/duotone/file-medical-alt.svg (100%) rename {client/src => src}/static/icons/duotone/file-medical.svg (100%) rename {client/src => src}/static/icons/duotone/file-minus.svg (100%) rename {client/src => src}/static/icons/duotone/file-music.svg (100%) rename {client/src => src}/static/icons/duotone/file-pdf.svg (100%) rename {client/src => src}/static/icons/duotone/file-plus.svg (100%) rename {client/src => src}/static/icons/duotone/file-powerpoint.svg (100%) rename {client/src => src}/static/icons/duotone/file-prescription.svg (100%) rename {client/src => src}/static/icons/duotone/file-search.svg (100%) rename {client/src => src}/static/icons/duotone/file-signature.svg (100%) rename {client/src => src}/static/icons/duotone/file-spreadsheet.svg (100%) rename {client/src => src}/static/icons/duotone/file-times.svg (100%) rename {client/src => src}/static/icons/duotone/file-upload.svg (100%) rename {client/src => src}/static/icons/duotone/file-user.svg (100%) rename {client/src => src}/static/icons/duotone/file-video.svg (100%) rename {client/src => src}/static/icons/duotone/file-word.svg (100%) rename {client/src => src}/static/icons/duotone/file.svg (100%) rename {client/src => src}/static/icons/duotone/files-medical.svg (100%) rename {client/src => src}/static/icons/duotone/fill-drip.svg (100%) rename {client/src => src}/static/icons/duotone/fill.svg (100%) rename {client/src => src}/static/icons/duotone/film-alt.svg (100%) rename {client/src => src}/static/icons/duotone/film-canister.svg (100%) rename {client/src => src}/static/icons/duotone/film.svg (100%) rename {client/src => src}/static/icons/duotone/filter.svg (100%) rename {client/src => src}/static/icons/duotone/fingerprint.svg (100%) rename {client/src => src}/static/icons/duotone/fire-alt.svg (100%) rename {client/src => src}/static/icons/duotone/fire-extinguisher.svg (100%) rename {client/src => src}/static/icons/duotone/fire-smoke.svg (100%) rename {client/src => src}/static/icons/duotone/fire.svg (100%) rename {client/src => src}/static/icons/duotone/fireplace.svg (100%) rename {client/src => src}/static/icons/duotone/first-aid.svg (100%) rename {client/src => src}/static/icons/duotone/fish-cooked.svg (100%) rename {client/src => src}/static/icons/duotone/fish.svg (100%) rename {client/src => src}/static/icons/duotone/fist-raised.svg (100%) rename {client/src => src}/static/icons/duotone/flag-alt.svg (100%) rename {client/src => src}/static/icons/duotone/flag-checkered.svg (100%) rename {client/src => src}/static/icons/duotone/flag-usa.svg (100%) rename {client/src => src}/static/icons/duotone/flag.svg (100%) rename {client/src => src}/static/icons/duotone/flame.svg (100%) rename {client/src => src}/static/icons/duotone/flashlight.svg (100%) rename {client/src => src}/static/icons/duotone/flask-poison.svg (100%) rename {client/src => src}/static/icons/duotone/flask-potion.svg (100%) rename {client/src => src}/static/icons/duotone/flask.svg (100%) rename {client/src => src}/static/icons/duotone/flower-daffodil.svg (100%) rename {client/src => src}/static/icons/duotone/flower-tulip.svg (100%) rename {client/src => src}/static/icons/duotone/flower.svg (100%) rename {client/src => src}/static/icons/duotone/flushed.svg (100%) rename {client/src => src}/static/icons/duotone/flute.svg (100%) rename {client/src => src}/static/icons/duotone/flux-capacitor.svg (100%) rename {client/src => src}/static/icons/duotone/fog.svg (100%) rename {client/src => src}/static/icons/duotone/folder-minus.svg (100%) rename {client/src => src}/static/icons/duotone/folder-open.svg (100%) rename {client/src => src}/static/icons/duotone/folder-plus.svg (100%) rename {client/src => src}/static/icons/duotone/folder-times.svg (100%) rename {client/src => src}/static/icons/duotone/folder-tree.svg (100%) rename {client/src => src}/static/icons/duotone/folder.svg (100%) rename {client/src => src}/static/icons/duotone/folders.svg (100%) rename {client/src => src}/static/icons/duotone/font-awesome-logo-full.svg (100%) rename {client/src => src}/static/icons/duotone/font-case.svg (100%) rename {client/src => src}/static/icons/duotone/font.svg (100%) rename {client/src => src}/static/icons/duotone/football-ball.svg (100%) rename {client/src => src}/static/icons/duotone/football-helmet.svg (100%) rename {client/src => src}/static/icons/duotone/forklift.svg (100%) rename {client/src => src}/static/icons/duotone/forward.svg (100%) rename {client/src => src}/static/icons/duotone/fragile.svg (100%) rename {client/src => src}/static/icons/duotone/french-fries.svg (100%) rename {client/src => src}/static/icons/duotone/frog.svg (100%) rename {client/src => src}/static/icons/duotone/frosty-head.svg (100%) rename {client/src => src}/static/icons/duotone/frown-open.svg (100%) rename {client/src => src}/static/icons/duotone/frown.svg (100%) rename {client/src => src}/static/icons/duotone/function.svg (100%) rename {client/src => src}/static/icons/duotone/funnel-dollar.svg (100%) rename {client/src => src}/static/icons/duotone/futbol.svg (100%) rename {client/src => src}/static/icons/duotone/galaxy.svg (100%) rename {client/src => src}/static/icons/duotone/game-board-alt.svg (100%) rename {client/src => src}/static/icons/duotone/game-board.svg (100%) rename {client/src => src}/static/icons/duotone/game-console-handheld.svg (100%) rename {client/src => src}/static/icons/duotone/gamepad-alt.svg (100%) rename {client/src => src}/static/icons/duotone/gamepad.svg (100%) rename {client/src => src}/static/icons/duotone/garage-car.svg (100%) rename {client/src => src}/static/icons/duotone/garage-open.svg (100%) rename {client/src => src}/static/icons/duotone/garage.svg (100%) rename {client/src => src}/static/icons/duotone/gas-pump-slash.svg (100%) rename {client/src => src}/static/icons/duotone/gas-pump.svg (100%) rename {client/src => src}/static/icons/duotone/gavel.svg (100%) rename {client/src => src}/static/icons/duotone/gem.svg (100%) rename {client/src => src}/static/icons/duotone/genderless.svg (100%) rename {client/src => src}/static/icons/duotone/ghost.svg (100%) rename {client/src => src}/static/icons/duotone/gift-card.svg (100%) rename {client/src => src}/static/icons/duotone/gift.svg (100%) rename {client/src => src}/static/icons/duotone/gifts.svg (100%) rename {client/src => src}/static/icons/duotone/gingerbread-man.svg (100%) rename {client/src => src}/static/icons/duotone/glass-champagne.svg (100%) rename {client/src => src}/static/icons/duotone/glass-cheers.svg (100%) rename {client/src => src}/static/icons/duotone/glass-citrus.svg (100%) rename {client/src => src}/static/icons/duotone/glass-martini-alt.svg (100%) rename {client/src => src}/static/icons/duotone/glass-martini.svg (100%) rename {client/src => src}/static/icons/duotone/glass-whiskey-rocks.svg (100%) rename {client/src => src}/static/icons/duotone/glass-whiskey.svg (100%) rename {client/src => src}/static/icons/duotone/glass.svg (100%) rename {client/src => src}/static/icons/duotone/glasses-alt.svg (100%) rename {client/src => src}/static/icons/duotone/glasses.svg (100%) rename {client/src => src}/static/icons/duotone/globe-africa.svg (100%) rename {client/src => src}/static/icons/duotone/globe-americas.svg (100%) rename {client/src => src}/static/icons/duotone/globe-asia.svg (100%) rename {client/src => src}/static/icons/duotone/globe-europe.svg (100%) rename {client/src => src}/static/icons/duotone/globe-snow.svg (100%) rename {client/src => src}/static/icons/duotone/globe-stand.svg (100%) rename {client/src => src}/static/icons/duotone/globe.svg (100%) rename {client/src => src}/static/icons/duotone/golf-ball.svg (100%) rename {client/src => src}/static/icons/duotone/golf-club.svg (100%) rename {client/src => src}/static/icons/duotone/gopuram.svg (100%) rename {client/src => src}/static/icons/duotone/graduation-cap.svg (100%) rename {client/src => src}/static/icons/duotone/gramophone.svg (100%) rename {client/src => src}/static/icons/duotone/greater-than-equal.svg (100%) rename {client/src => src}/static/icons/duotone/greater-than.svg (100%) rename {client/src => src}/static/icons/duotone/grimace.svg (100%) rename {client/src => src}/static/icons/duotone/grin-alt.svg (100%) rename {client/src => src}/static/icons/duotone/grin-beam-sweat.svg (100%) rename {client/src => src}/static/icons/duotone/grin-beam.svg (100%) rename {client/src => src}/static/icons/duotone/grin-hearts.svg (100%) rename {client/src => src}/static/icons/duotone/grin-squint-tears.svg (100%) rename {client/src => src}/static/icons/duotone/grin-squint.svg (100%) rename {client/src => src}/static/icons/duotone/grin-stars.svg (100%) rename {client/src => src}/static/icons/duotone/grin-tears.svg (100%) rename {client/src => src}/static/icons/duotone/grin-tongue-squint.svg (100%) rename {client/src => src}/static/icons/duotone/grin-tongue-wink.svg (100%) rename {client/src => src}/static/icons/duotone/grin-tongue.svg (100%) rename {client/src => src}/static/icons/duotone/grin-wink.svg (100%) rename {client/src => src}/static/icons/duotone/grin.svg (100%) rename {client/src => src}/static/icons/duotone/grip-horizontal.svg (100%) rename {client/src => src}/static/icons/duotone/grip-lines-vertical.svg (100%) rename {client/src => src}/static/icons/duotone/grip-lines.svg (100%) rename {client/src => src}/static/icons/duotone/grip-vertical.svg (100%) rename {client/src => src}/static/icons/duotone/guitar-electric.svg (100%) rename {client/src => src}/static/icons/duotone/guitar.svg (100%) rename {client/src => src}/static/icons/duotone/guitars.svg (100%) rename {client/src => src}/static/icons/duotone/h-square.svg (100%) rename {client/src => src}/static/icons/duotone/h1.svg (100%) rename {client/src => src}/static/icons/duotone/h2.svg (100%) rename {client/src => src}/static/icons/duotone/h3.svg (100%) rename {client/src => src}/static/icons/duotone/h4.svg (100%) rename {client/src => src}/static/icons/duotone/hamburger.svg (100%) rename {client/src => src}/static/icons/duotone/hammer-war.svg (100%) rename {client/src => src}/static/icons/duotone/hammer.svg (100%) rename {client/src => src}/static/icons/duotone/hamsa.svg (100%) rename {client/src => src}/static/icons/duotone/hand-heart.svg (100%) rename {client/src => src}/static/icons/duotone/hand-holding-box.svg (100%) rename {client/src => src}/static/icons/duotone/hand-holding-heart.svg (100%) rename {client/src => src}/static/icons/duotone/hand-holding-magic.svg (100%) rename {client/src => src}/static/icons/duotone/hand-holding-seedling.svg (100%) rename {client/src => src}/static/icons/duotone/hand-holding-usd.svg (100%) rename {client/src => src}/static/icons/duotone/hand-holding-water.svg (100%) rename {client/src => src}/static/icons/duotone/hand-holding.svg (100%) rename {client/src => src}/static/icons/duotone/hand-lizard.svg (100%) rename {client/src => src}/static/icons/duotone/hand-middle-finger.svg (100%) rename {client/src => src}/static/icons/duotone/hand-paper.svg (100%) rename {client/src => src}/static/icons/duotone/hand-peace.svg (100%) rename {client/src => src}/static/icons/duotone/hand-point-down.svg (100%) rename {client/src => src}/static/icons/duotone/hand-point-left.svg (100%) rename {client/src => src}/static/icons/duotone/hand-point-right.svg (100%) rename {client/src => src}/static/icons/duotone/hand-point-up.svg (100%) rename {client/src => src}/static/icons/duotone/hand-pointer.svg (100%) rename {client/src => src}/static/icons/duotone/hand-receiving.svg (100%) rename {client/src => src}/static/icons/duotone/hand-rock.svg (100%) rename {client/src => src}/static/icons/duotone/hand-scissors.svg (100%) rename {client/src => src}/static/icons/duotone/hand-spock.svg (100%) rename {client/src => src}/static/icons/duotone/hands-heart.svg (100%) rename {client/src => src}/static/icons/duotone/hands-helping.svg (100%) rename {client/src => src}/static/icons/duotone/hands-usd.svg (100%) rename {client/src => src}/static/icons/duotone/hands.svg (100%) rename {client/src => src}/static/icons/duotone/handshake-alt.svg (100%) rename {client/src => src}/static/icons/duotone/handshake.svg (100%) rename {client/src => src}/static/icons/duotone/hanukiah.svg (100%) rename {client/src => src}/static/icons/duotone/hard-hat.svg (100%) rename {client/src => src}/static/icons/duotone/hashtag.svg (100%) rename {client/src => src}/static/icons/duotone/hat-chef.svg (100%) rename {client/src => src}/static/icons/duotone/hat-cowboy-side.svg (100%) rename {client/src => src}/static/icons/duotone/hat-cowboy.svg (100%) rename {client/src => src}/static/icons/duotone/hat-santa.svg (100%) rename {client/src => src}/static/icons/duotone/hat-winter.svg (100%) rename {client/src => src}/static/icons/duotone/hat-witch.svg (100%) rename {client/src => src}/static/icons/duotone/hat-wizard.svg (100%) rename {client/src => src}/static/icons/duotone/hdd.svg (100%) rename {client/src => src}/static/icons/duotone/head-side-brain.svg (100%) rename {client/src => src}/static/icons/duotone/head-side-headphones.svg (100%) rename {client/src => src}/static/icons/duotone/head-side-medical.svg (100%) rename {client/src => src}/static/icons/duotone/head-side.svg (100%) rename {client/src => src}/static/icons/duotone/head-vr.svg (100%) rename {client/src => src}/static/icons/duotone/heading.svg (100%) rename {client/src => src}/static/icons/duotone/headphones-alt.svg (100%) rename {client/src => src}/static/icons/duotone/headphones.svg (100%) rename {client/src => src}/static/icons/duotone/headset.svg (100%) rename {client/src => src}/static/icons/duotone/heart-broken.svg (100%) rename {client/src => src}/static/icons/duotone/heart-circle.svg (100%) rename {client/src => src}/static/icons/duotone/heart-rate.svg (100%) rename {client/src => src}/static/icons/duotone/heart-square.svg (100%) rename {client/src => src}/static/icons/duotone/heart.svg (100%) rename {client/src => src}/static/icons/duotone/heartbeat.svg (100%) rename {client/src => src}/static/icons/duotone/heat.svg (100%) rename {client/src => src}/static/icons/duotone/helicopter.svg (100%) rename {client/src => src}/static/icons/duotone/helmet-battle.svg (100%) rename {client/src => src}/static/icons/duotone/hexagon.svg (100%) rename {client/src => src}/static/icons/duotone/highlighter.svg (100%) rename {client/src => src}/static/icons/duotone/hiking.svg (100%) rename {client/src => src}/static/icons/duotone/hippo.svg (100%) rename {client/src => src}/static/icons/duotone/history.svg (100%) rename {client/src => src}/static/icons/duotone/hockey-mask.svg (100%) rename {client/src => src}/static/icons/duotone/hockey-puck.svg (100%) rename {client/src => src}/static/icons/duotone/hockey-sticks.svg (100%) rename {client/src => src}/static/icons/duotone/holly-berry.svg (100%) rename {client/src => src}/static/icons/duotone/home-alt.svg (100%) rename {client/src => src}/static/icons/duotone/home-heart.svg (100%) rename {client/src => src}/static/icons/duotone/home-lg-alt.svg (100%) rename {client/src => src}/static/icons/duotone/home-lg.svg (100%) rename {client/src => src}/static/icons/duotone/home.svg (100%) rename {client/src => src}/static/icons/duotone/hood-cloak.svg (100%) rename {client/src => src}/static/icons/duotone/horizontal-rule.svg (100%) rename {client/src => src}/static/icons/duotone/horse-head.svg (100%) rename {client/src => src}/static/icons/duotone/horse-saddle.svg (100%) rename {client/src => src}/static/icons/duotone/horse.svg (100%) rename {client/src => src}/static/icons/duotone/hospital-alt.svg (100%) rename {client/src => src}/static/icons/duotone/hospital-symbol.svg (100%) rename {client/src => src}/static/icons/duotone/hospital-user.svg (100%) rename {client/src => src}/static/icons/duotone/hospital.svg (100%) rename {client/src => src}/static/icons/duotone/hospitals.svg (100%) rename {client/src => src}/static/icons/duotone/hot-tub.svg (100%) rename {client/src => src}/static/icons/duotone/hotdog.svg (100%) rename {client/src => src}/static/icons/duotone/hotel.svg (100%) rename {client/src => src}/static/icons/duotone/hourglass-end.svg (100%) rename {client/src => src}/static/icons/duotone/hourglass-half.svg (100%) rename {client/src => src}/static/icons/duotone/hourglass-start.svg (100%) rename {client/src => src}/static/icons/duotone/hourglass.svg (100%) rename {client/src => src}/static/icons/duotone/house-damage.svg (100%) rename {client/src => src}/static/icons/duotone/house-day.svg (100%) rename {client/src => src}/static/icons/duotone/house-flood.svg (100%) rename {client/src => src}/static/icons/duotone/house-leave.svg (100%) rename {client/src => src}/static/icons/duotone/house-night.svg (100%) rename {client/src => src}/static/icons/duotone/house-return.svg (100%) rename {client/src => src}/static/icons/duotone/house-signal.svg (100%) rename {client/src => src}/static/icons/duotone/house.svg (100%) rename {client/src => src}/static/icons/duotone/hryvnia.svg (100%) rename {client/src => src}/static/icons/duotone/humidity.svg (100%) rename {client/src => src}/static/icons/duotone/hurricane.svg (100%) rename {client/src => src}/static/icons/duotone/i-cursor.svg (100%) rename {client/src => src}/static/icons/duotone/ice-cream.svg (100%) rename {client/src => src}/static/icons/duotone/ice-skate.svg (100%) rename {client/src => src}/static/icons/duotone/icicles.svg (100%) rename {client/src => src}/static/icons/duotone/icons-alt.svg (100%) rename {client/src => src}/static/icons/duotone/icons.svg (100%) rename {client/src => src}/static/icons/duotone/id-badge.svg (100%) rename {client/src => src}/static/icons/duotone/id-card-alt.svg (100%) rename {client/src => src}/static/icons/duotone/id-card.svg (100%) rename {client/src => src}/static/icons/duotone/igloo.svg (100%) rename {client/src => src}/static/icons/duotone/image-polaroid.svg (100%) rename {client/src => src}/static/icons/duotone/image.svg (100%) rename {client/src => src}/static/icons/duotone/images.svg (100%) rename {client/src => src}/static/icons/duotone/inbox-in.svg (100%) rename {client/src => src}/static/icons/duotone/inbox-out.svg (100%) rename {client/src => src}/static/icons/duotone/inbox.svg (100%) rename {client/src => src}/static/icons/duotone/indent.svg (100%) rename {client/src => src}/static/icons/duotone/industry-alt.svg (100%) rename {client/src => src}/static/icons/duotone/industry.svg (100%) rename {client/src => src}/static/icons/duotone/infinity.svg (100%) rename {client/src => src}/static/icons/duotone/info-circle.svg (100%) rename {client/src => src}/static/icons/duotone/info-square.svg (100%) rename {client/src => src}/static/icons/duotone/info.svg (100%) rename {client/src => src}/static/icons/duotone/inhaler.svg (100%) rename {client/src => src}/static/icons/duotone/integral.svg (100%) rename {client/src => src}/static/icons/duotone/intersection.svg (100%) rename {client/src => src}/static/icons/duotone/inventory.svg (100%) rename {client/src => src}/static/icons/duotone/island-tropical.svg (100%) rename {client/src => src}/static/icons/duotone/italic.svg (100%) rename {client/src => src}/static/icons/duotone/jack-o-lantern.svg (100%) rename {client/src => src}/static/icons/duotone/jedi.svg (100%) rename {client/src => src}/static/icons/duotone/joint.svg (100%) rename {client/src => src}/static/icons/duotone/journal-whills.svg (100%) rename {client/src => src}/static/icons/duotone/joystick.svg (100%) rename {client/src => src}/static/icons/duotone/jug.svg (100%) rename {client/src => src}/static/icons/duotone/kaaba.svg (100%) rename {client/src => src}/static/icons/duotone/kazoo.svg (100%) rename {client/src => src}/static/icons/duotone/kerning.svg (100%) rename {client/src => src}/static/icons/duotone/key-skeleton.svg (100%) rename {client/src => src}/static/icons/duotone/key.svg (100%) rename {client/src => src}/static/icons/duotone/keyboard.svg (100%) rename {client/src => src}/static/icons/duotone/keynote.svg (100%) rename {client/src => src}/static/icons/duotone/khanda.svg (100%) rename {client/src => src}/static/icons/duotone/kidneys.svg (100%) rename {client/src => src}/static/icons/duotone/kiss-beam.svg (100%) rename {client/src => src}/static/icons/duotone/kiss-wink-heart.svg (100%) rename {client/src => src}/static/icons/duotone/kiss.svg (100%) rename {client/src => src}/static/icons/duotone/kite.svg (100%) rename {client/src => src}/static/icons/duotone/kiwi-bird.svg (100%) rename {client/src => src}/static/icons/duotone/knife-kitchen.svg (100%) rename {client/src => src}/static/icons/duotone/lambda.svg (100%) rename {client/src => src}/static/icons/duotone/lamp-desk.svg (100%) rename {client/src => src}/static/icons/duotone/lamp-floor.svg (100%) rename {client/src => src}/static/icons/duotone/lamp.svg (100%) rename {client/src => src}/static/icons/duotone/landmark-alt.svg (100%) rename {client/src => src}/static/icons/duotone/landmark.svg (100%) rename {client/src => src}/static/icons/duotone/language.svg (100%) rename {client/src => src}/static/icons/duotone/laptop-code.svg (100%) rename {client/src => src}/static/icons/duotone/laptop-medical.svg (100%) rename {client/src => src}/static/icons/duotone/laptop.svg (100%) rename {client/src => src}/static/icons/duotone/lasso.svg (100%) rename {client/src => src}/static/icons/duotone/laugh-beam.svg (100%) rename {client/src => src}/static/icons/duotone/laugh-squint.svg (100%) rename {client/src => src}/static/icons/duotone/laugh-wink.svg (100%) rename {client/src => src}/static/icons/duotone/laugh.svg (100%) rename {client/src => src}/static/icons/duotone/layer-group.svg (100%) rename {client/src => src}/static/icons/duotone/layer-minus.svg (100%) rename {client/src => src}/static/icons/duotone/layer-plus.svg (100%) rename {client/src => src}/static/icons/duotone/leaf-heart.svg (100%) rename {client/src => src}/static/icons/duotone/leaf-maple.svg (100%) rename {client/src => src}/static/icons/duotone/leaf-oak.svg (100%) rename {client/src => src}/static/icons/duotone/leaf.svg (100%) rename {client/src => src}/static/icons/duotone/lemon.svg (100%) rename {client/src => src}/static/icons/duotone/less-than-equal.svg (100%) rename {client/src => src}/static/icons/duotone/less-than.svg (100%) rename {client/src => src}/static/icons/duotone/level-down-alt.svg (100%) rename {client/src => src}/static/icons/duotone/level-down.svg (100%) rename {client/src => src}/static/icons/duotone/level-up-alt.svg (100%) rename {client/src => src}/static/icons/duotone/level-up.svg (100%) rename {client/src => src}/static/icons/duotone/life-ring.svg (100%) rename {client/src => src}/static/icons/duotone/light-ceiling.svg (100%) rename {client/src => src}/static/icons/duotone/light-switch-off.svg (100%) rename {client/src => src}/static/icons/duotone/light-switch-on.svg (100%) rename {client/src => src}/static/icons/duotone/light-switch.svg (100%) rename {client/src => src}/static/icons/duotone/lightbulb-dollar.svg (100%) rename {client/src => src}/static/icons/duotone/lightbulb-exclamation.svg (100%) rename {client/src => src}/static/icons/duotone/lightbulb-on.svg (100%) rename {client/src => src}/static/icons/duotone/lightbulb-slash.svg (100%) rename {client/src => src}/static/icons/duotone/lightbulb.svg (100%) rename {client/src => src}/static/icons/duotone/lights-holiday.svg (100%) rename {client/src => src}/static/icons/duotone/line-columns.svg (100%) rename {client/src => src}/static/icons/duotone/line-height.svg (100%) rename {client/src => src}/static/icons/duotone/link.svg (100%) rename {client/src => src}/static/icons/duotone/lips.svg (100%) rename {client/src => src}/static/icons/duotone/lira-sign.svg (100%) rename {client/src => src}/static/icons/duotone/list-alt.svg (100%) rename {client/src => src}/static/icons/duotone/list-music.svg (100%) rename {client/src => src}/static/icons/duotone/list-ol.svg (100%) rename {client/src => src}/static/icons/duotone/list-ul.svg (100%) rename {client/src => src}/static/icons/duotone/list.svg (100%) rename {client/src => src}/static/icons/duotone/location-arrow.svg (100%) rename {client/src => src}/static/icons/duotone/location-circle.svg (100%) rename {client/src => src}/static/icons/duotone/location-slash.svg (100%) rename {client/src => src}/static/icons/duotone/location.svg (100%) rename {client/src => src}/static/icons/duotone/lock-alt.svg (100%) rename {client/src => src}/static/icons/duotone/lock-open-alt.svg (100%) rename {client/src => src}/static/icons/duotone/lock-open.svg (100%) rename {client/src => src}/static/icons/duotone/lock.svg (100%) rename {client/src => src}/static/icons/duotone/long-arrow-alt-down.svg (100%) rename {client/src => src}/static/icons/duotone/long-arrow-alt-left.svg (100%) rename {client/src => src}/static/icons/duotone/long-arrow-alt-right.svg (100%) rename {client/src => src}/static/icons/duotone/long-arrow-alt-up.svg (100%) rename {client/src => src}/static/icons/duotone/long-arrow-down.svg (100%) rename {client/src => src}/static/icons/duotone/long-arrow-left.svg (100%) rename {client/src => src}/static/icons/duotone/long-arrow-right.svg (100%) rename {client/src => src}/static/icons/duotone/long-arrow-up.svg (100%) rename {client/src => src}/static/icons/duotone/loveseat.svg (100%) rename {client/src => src}/static/icons/duotone/low-vision.svg (100%) rename {client/src => src}/static/icons/duotone/luchador.svg (100%) rename {client/src => src}/static/icons/duotone/luggage-cart.svg (100%) rename {client/src => src}/static/icons/duotone/lungs.svg (100%) rename {client/src => src}/static/icons/duotone/mace.svg (100%) rename {client/src => src}/static/icons/duotone/magic.svg (100%) rename {client/src => src}/static/icons/duotone/magnet.svg (100%) rename {client/src => src}/static/icons/duotone/mail-bulk.svg (100%) rename {client/src => src}/static/icons/duotone/mailbox.svg (100%) rename {client/src => src}/static/icons/duotone/male.svg (100%) rename {client/src => src}/static/icons/duotone/mandolin.svg (100%) rename {client/src => src}/static/icons/duotone/map-marked-alt.svg (100%) rename {client/src => src}/static/icons/duotone/map-marked.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker-alt-slash.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker-alt.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker-check.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker-edit.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker-exclamation.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker-minus.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker-plus.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker-question.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker-slash.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker-smile.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker-times.svg (100%) rename {client/src => src}/static/icons/duotone/map-marker.svg (100%) rename {client/src => src}/static/icons/duotone/map-pin.svg (100%) rename {client/src => src}/static/icons/duotone/map-signs.svg (100%) rename {client/src => src}/static/icons/duotone/map.svg (100%) rename {client/src => src}/static/icons/duotone/marker.svg (100%) rename {client/src => src}/static/icons/duotone/mars-double.svg (100%) rename {client/src => src}/static/icons/duotone/mars-stroke-h.svg (100%) rename {client/src => src}/static/icons/duotone/mars-stroke-v.svg (100%) rename {client/src => src}/static/icons/duotone/mars-stroke.svg (100%) rename {client/src => src}/static/icons/duotone/mars.svg (100%) rename {client/src => src}/static/icons/duotone/mask.svg (100%) rename {client/src => src}/static/icons/duotone/meat.svg (100%) rename {client/src => src}/static/icons/duotone/medal.svg (100%) rename {client/src => src}/static/icons/duotone/medkit.svg (100%) rename {client/src => src}/static/icons/duotone/megaphone.svg (100%) rename {client/src => src}/static/icons/duotone/meh-blank.svg (100%) rename {client/src => src}/static/icons/duotone/meh-rolling-eyes.svg (100%) rename {client/src => src}/static/icons/duotone/meh.svg (100%) rename {client/src => src}/static/icons/duotone/memory.svg (100%) rename {client/src => src}/static/icons/duotone/menorah.svg (100%) rename {client/src => src}/static/icons/duotone/mercury.svg (100%) rename {client/src => src}/static/icons/duotone/meteor.svg (100%) rename {client/src => src}/static/icons/duotone/microchip.svg (100%) rename {client/src => src}/static/icons/duotone/microphone-alt-slash.svg (100%) rename {client/src => src}/static/icons/duotone/microphone-alt.svg (100%) rename {client/src => src}/static/icons/duotone/microphone-slash.svg (100%) rename {client/src => src}/static/icons/duotone/microphone-stand.svg (100%) rename {client/src => src}/static/icons/duotone/microphone.svg (100%) rename {client/src => src}/static/icons/duotone/microscope.svg (100%) rename {client/src => src}/static/icons/duotone/microwave.svg (100%) rename {client/src => src}/static/icons/duotone/mind-share.svg (100%) rename {client/src => src}/static/icons/duotone/minus-circle.svg (100%) rename {client/src => src}/static/icons/duotone/minus-hexagon.svg (100%) rename {client/src => src}/static/icons/duotone/minus-octagon.svg (100%) rename {client/src => src}/static/icons/duotone/minus-square.svg (100%) rename {client/src => src}/static/icons/duotone/minus.svg (100%) rename {client/src => src}/static/icons/duotone/mistletoe.svg (100%) rename {client/src => src}/static/icons/duotone/mitten.svg (100%) rename {client/src => src}/static/icons/duotone/mobile-alt.svg (100%) rename {client/src => src}/static/icons/duotone/mobile-android-alt.svg (100%) rename {client/src => src}/static/icons/duotone/mobile-android.svg (100%) rename {client/src => src}/static/icons/duotone/mobile.svg (100%) rename {client/src => src}/static/icons/duotone/money-bill-alt.svg (100%) rename {client/src => src}/static/icons/duotone/money-bill-wave-alt.svg (100%) rename {client/src => src}/static/icons/duotone/money-bill-wave.svg (100%) rename {client/src => src}/static/icons/duotone/money-bill.svg (100%) rename {client/src => src}/static/icons/duotone/money-check-alt.svg (100%) rename {client/src => src}/static/icons/duotone/money-check-edit-alt.svg (100%) rename {client/src => src}/static/icons/duotone/money-check-edit.svg (100%) rename {client/src => src}/static/icons/duotone/money-check.svg (100%) rename {client/src => src}/static/icons/duotone/monitor-heart-rate.svg (100%) rename {client/src => src}/static/icons/duotone/monkey.svg (100%) rename {client/src => src}/static/icons/duotone/monument.svg (100%) rename {client/src => src}/static/icons/duotone/moon-cloud.svg (100%) rename {client/src => src}/static/icons/duotone/moon-stars.svg (100%) rename {client/src => src}/static/icons/duotone/moon.svg (100%) rename {client/src => src}/static/icons/duotone/mortar-pestle.svg (100%) rename {client/src => src}/static/icons/duotone/mosque.svg (100%) rename {client/src => src}/static/icons/duotone/motorcycle.svg (100%) rename {client/src => src}/static/icons/duotone/mountain.svg (100%) rename {client/src => src}/static/icons/duotone/mountains.svg (100%) rename {client/src => src}/static/icons/duotone/mouse-alt.svg (100%) rename {client/src => src}/static/icons/duotone/mouse-pointer.svg (100%) rename {client/src => src}/static/icons/duotone/mouse.svg (100%) rename {client/src => src}/static/icons/duotone/mp3-player.svg (100%) rename {client/src => src}/static/icons/duotone/mug-hot.svg (100%) rename {client/src => src}/static/icons/duotone/mug-marshmallows.svg (100%) rename {client/src => src}/static/icons/duotone/mug-tea.svg (100%) rename {client/src => src}/static/icons/duotone/mug.svg (100%) rename {client/src => src}/static/icons/duotone/music-alt-slash.svg (100%) rename {client/src => src}/static/icons/duotone/music-alt.svg (100%) rename {client/src => src}/static/icons/duotone/music-slash.svg (100%) rename {client/src => src}/static/icons/duotone/music.svg (100%) rename {client/src => src}/static/icons/duotone/narwhal.svg (100%) rename {client/src => src}/static/icons/duotone/network-wired.svg (100%) rename {client/src => src}/static/icons/duotone/neuter.svg (100%) rename {client/src => src}/static/icons/duotone/newspaper.svg (100%) rename {client/src => src}/static/icons/duotone/not-equal.svg (100%) rename {client/src => src}/static/icons/duotone/notes-medical.svg (100%) rename {client/src => src}/static/icons/duotone/object-group.svg (100%) rename {client/src => src}/static/icons/duotone/object-ungroup.svg (100%) rename {client/src => src}/static/icons/duotone/octagon.svg (100%) rename {client/src => src}/static/icons/duotone/oil-can.svg (100%) rename {client/src => src}/static/icons/duotone/oil-temp.svg (100%) rename {client/src => src}/static/icons/duotone/om.svg (100%) rename {client/src => src}/static/icons/duotone/omega.svg (100%) rename {client/src => src}/static/icons/duotone/ornament.svg (100%) rename {client/src => src}/static/icons/duotone/otter.svg (100%) rename {client/src => src}/static/icons/duotone/outdent.svg (100%) rename {client/src => src}/static/icons/duotone/outlet.svg (100%) rename {client/src => src}/static/icons/duotone/oven.svg (100%) rename {client/src => src}/static/icons/duotone/overline.svg (100%) rename {client/src => src}/static/icons/duotone/page-break.svg (100%) rename {client/src => src}/static/icons/duotone/pager.svg (100%) rename {client/src => src}/static/icons/duotone/paint-brush-alt.svg (100%) rename {client/src => src}/static/icons/duotone/paint-brush.svg (100%) rename {client/src => src}/static/icons/duotone/paint-roller.svg (100%) rename {client/src => src}/static/icons/duotone/palette.svg (100%) rename {client/src => src}/static/icons/duotone/pallet-alt.svg (100%) rename {client/src => src}/static/icons/duotone/pallet.svg (100%) rename {client/src => src}/static/icons/duotone/paper-plane.svg (100%) rename {client/src => src}/static/icons/duotone/paperclip.svg (100%) rename {client/src => src}/static/icons/duotone/parachute-box.svg (100%) rename {client/src => src}/static/icons/duotone/paragraph-rtl.svg (100%) rename {client/src => src}/static/icons/duotone/paragraph.svg (100%) rename {client/src => src}/static/icons/duotone/parking-circle-slash.svg (100%) rename {client/src => src}/static/icons/duotone/parking-circle.svg (100%) rename {client/src => src}/static/icons/duotone/parking-slash.svg (100%) rename {client/src => src}/static/icons/duotone/parking.svg (100%) rename {client/src => src}/static/icons/duotone/passport.svg (100%) rename {client/src => src}/static/icons/duotone/pastafarianism.svg (100%) rename {client/src => src}/static/icons/duotone/paste.svg (100%) rename {client/src => src}/static/icons/duotone/pause-circle.svg (100%) rename {client/src => src}/static/icons/duotone/pause.svg (100%) rename {client/src => src}/static/icons/duotone/paw-alt.svg (100%) rename {client/src => src}/static/icons/duotone/paw-claws.svg (100%) rename {client/src => src}/static/icons/duotone/paw.svg (100%) rename {client/src => src}/static/icons/duotone/peace.svg (100%) rename {client/src => src}/static/icons/duotone/pegasus.svg (100%) rename {client/src => src}/static/icons/duotone/pen-alt.svg (100%) rename {client/src => src}/static/icons/duotone/pen-fancy.svg (100%) rename {client/src => src}/static/icons/duotone/pen-nib.svg (100%) rename {client/src => src}/static/icons/duotone/pen-square.svg (100%) rename {client/src => src}/static/icons/duotone/pen.svg (100%) rename {client/src => src}/static/icons/duotone/pencil-alt.svg (100%) rename {client/src => src}/static/icons/duotone/pencil-paintbrush.svg (100%) rename {client/src => src}/static/icons/duotone/pencil-ruler.svg (100%) rename {client/src => src}/static/icons/duotone/pencil.svg (100%) rename {client/src => src}/static/icons/duotone/pennant.svg (100%) rename {client/src => src}/static/icons/duotone/people-carry.svg (100%) rename {client/src => src}/static/icons/duotone/pepper-hot.svg (100%) rename {client/src => src}/static/icons/duotone/percent.svg (100%) rename {client/src => src}/static/icons/duotone/percentage.svg (100%) rename {client/src => src}/static/icons/duotone/person-booth.svg (100%) rename {client/src => src}/static/icons/duotone/person-carry.svg (100%) rename {client/src => src}/static/icons/duotone/person-dolly-empty.svg (100%) rename {client/src => src}/static/icons/duotone/person-dolly.svg (100%) rename {client/src => src}/static/icons/duotone/person-sign.svg (100%) rename {client/src => src}/static/icons/duotone/phone-alt.svg (100%) rename {client/src => src}/static/icons/duotone/phone-laptop.svg (100%) rename {client/src => src}/static/icons/duotone/phone-office.svg (100%) rename {client/src => src}/static/icons/duotone/phone-plus.svg (100%) rename {client/src => src}/static/icons/duotone/phone-rotary.svg (100%) rename {client/src => src}/static/icons/duotone/phone-slash.svg (100%) rename {client/src => src}/static/icons/duotone/phone-square-alt.svg (100%) rename {client/src => src}/static/icons/duotone/phone-square.svg (100%) rename {client/src => src}/static/icons/duotone/phone-volume.svg (100%) rename {client/src => src}/static/icons/duotone/phone.svg (100%) rename {client/src => src}/static/icons/duotone/photo-video.svg (100%) rename {client/src => src}/static/icons/duotone/pi.svg (100%) rename {client/src => src}/static/icons/duotone/piano-keyboard.svg (100%) rename {client/src => src}/static/icons/duotone/piano.svg (100%) rename {client/src => src}/static/icons/duotone/pie.svg (100%) rename {client/src => src}/static/icons/duotone/pig.svg (100%) rename {client/src => src}/static/icons/duotone/piggy-bank.svg (100%) rename {client/src => src}/static/icons/duotone/pills.svg (100%) rename {client/src => src}/static/icons/duotone/pizza-slice.svg (100%) rename {client/src => src}/static/icons/duotone/pizza.svg (100%) rename {client/src => src}/static/icons/duotone/place-of-worship.svg (100%) rename {client/src => src}/static/icons/duotone/plane-alt.svg (100%) rename {client/src => src}/static/icons/duotone/plane-arrival.svg (100%) rename {client/src => src}/static/icons/duotone/plane-departure.svg (100%) rename {client/src => src}/static/icons/duotone/plane.svg (100%) rename {client/src => src}/static/icons/duotone/planet-moon.svg (100%) rename {client/src => src}/static/icons/duotone/planet-ringed.svg (100%) rename {client/src => src}/static/icons/duotone/play-circle.svg (100%) rename {client/src => src}/static/icons/duotone/play.svg (100%) rename {client/src => src}/static/icons/duotone/plug.svg (100%) rename {client/src => src}/static/icons/duotone/plus-circle.svg (100%) rename {client/src => src}/static/icons/duotone/plus-hexagon.svg (100%) rename {client/src => src}/static/icons/duotone/plus-octagon.svg (100%) rename {client/src => src}/static/icons/duotone/plus-square.svg (100%) rename {client/src => src}/static/icons/duotone/plus.svg (100%) rename {client/src => src}/static/icons/duotone/podcast.svg (100%) rename {client/src => src}/static/icons/duotone/podium-star.svg (100%) rename {client/src => src}/static/icons/duotone/podium.svg (100%) rename {client/src => src}/static/icons/duotone/police-box.svg (100%) rename {client/src => src}/static/icons/duotone/poll-h.svg (100%) rename {client/src => src}/static/icons/duotone/poll-people.svg (100%) rename {client/src => src}/static/icons/duotone/poll.svg (100%) rename {client/src => src}/static/icons/duotone/poo-storm.svg (100%) rename {client/src => src}/static/icons/duotone/poo.svg (100%) rename {client/src => src}/static/icons/duotone/poop.svg (100%) rename {client/src => src}/static/icons/duotone/popcorn.svg (100%) rename {client/src => src}/static/icons/duotone/portal-enter.svg (100%) rename {client/src => src}/static/icons/duotone/portal-exit.svg (100%) rename {client/src => src}/static/icons/duotone/portrait.svg (100%) rename {client/src => src}/static/icons/duotone/pound-sign.svg (100%) rename {client/src => src}/static/icons/duotone/power-off.svg (100%) rename {client/src => src}/static/icons/duotone/pray.svg (100%) rename {client/src => src}/static/icons/duotone/praying-hands.svg (100%) rename {client/src => src}/static/icons/duotone/prescription-bottle-alt.svg (100%) rename {client/src => src}/static/icons/duotone/prescription-bottle.svg (100%) rename {client/src => src}/static/icons/duotone/prescription.svg (100%) rename {client/src => src}/static/icons/duotone/presentation.svg (100%) rename {client/src => src}/static/icons/duotone/print-search.svg (100%) rename {client/src => src}/static/icons/duotone/print-slash.svg (100%) rename {client/src => src}/static/icons/duotone/print.svg (100%) rename {client/src => src}/static/icons/duotone/procedures.svg (100%) rename {client/src => src}/static/icons/duotone/project-diagram.svg (100%) rename {client/src => src}/static/icons/duotone/projector.svg (100%) rename {client/src => src}/static/icons/duotone/pumpkin.svg (100%) rename {client/src => src}/static/icons/duotone/puzzle-piece.svg (100%) rename {client/src => src}/static/icons/duotone/qrcode.svg (100%) rename {client/src => src}/static/icons/duotone/question-circle.svg (100%) rename {client/src => src}/static/icons/duotone/question-square.svg (100%) rename {client/src => src}/static/icons/duotone/question.svg (100%) rename {client/src => src}/static/icons/duotone/quidditch.svg (100%) rename {client/src => src}/static/icons/duotone/quote-left.svg (100%) rename {client/src => src}/static/icons/duotone/quote-right.svg (100%) rename {client/src => src}/static/icons/duotone/quran.svg (100%) rename {client/src => src}/static/icons/duotone/rabbit-fast.svg (100%) rename {client/src => src}/static/icons/duotone/rabbit.svg (100%) rename {client/src => src}/static/icons/duotone/racquet.svg (100%) rename {client/src => src}/static/icons/duotone/radar.svg (100%) rename {client/src => src}/static/icons/duotone/radiation-alt.svg (100%) rename {client/src => src}/static/icons/duotone/radiation.svg (100%) rename {client/src => src}/static/icons/duotone/radio-alt.svg (100%) rename {client/src => src}/static/icons/duotone/radio.svg (100%) rename {client/src => src}/static/icons/duotone/rainbow.svg (100%) rename {client/src => src}/static/icons/duotone/raindrops.svg (100%) rename {client/src => src}/static/icons/duotone/ram.svg (100%) rename {client/src => src}/static/icons/duotone/ramp-loading.svg (100%) rename {client/src => src}/static/icons/duotone/random.svg (100%) rename {client/src => src}/static/icons/duotone/raygun.svg (100%) rename {client/src => src}/static/icons/duotone/receipt.svg (100%) rename {client/src => src}/static/icons/duotone/record-vinyl.svg (100%) rename {client/src => src}/static/icons/duotone/rectangle-landscape.svg (100%) rename {client/src => src}/static/icons/duotone/rectangle-portrait.svg (100%) rename {client/src => src}/static/icons/duotone/rectangle-wide.svg (100%) rename {client/src => src}/static/icons/duotone/recycle.svg (100%) rename {client/src => src}/static/icons/duotone/redo-alt.svg (100%) rename {client/src => src}/static/icons/duotone/redo.svg (100%) rename {client/src => src}/static/icons/duotone/refrigerator.svg (100%) rename {client/src => src}/static/icons/duotone/registered.svg (100%) rename {client/src => src}/static/icons/duotone/remove-format.svg (100%) rename {client/src => src}/static/icons/duotone/repeat-1-alt.svg (100%) rename {client/src => src}/static/icons/duotone/repeat-1.svg (100%) rename {client/src => src}/static/icons/duotone/repeat-alt.svg (100%) rename {client/src => src}/static/icons/duotone/repeat.svg (100%) rename {client/src => src}/static/icons/duotone/reply-all.svg (100%) rename {client/src => src}/static/icons/duotone/reply.svg (100%) rename {client/src => src}/static/icons/duotone/republican.svg (100%) rename {client/src => src}/static/icons/duotone/restroom.svg (100%) rename {client/src => src}/static/icons/duotone/retweet-alt.svg (100%) rename {client/src => src}/static/icons/duotone/retweet.svg (100%) rename {client/src => src}/static/icons/duotone/ribbon.svg (100%) rename {client/src => src}/static/icons/duotone/ring.svg (100%) rename {client/src => src}/static/icons/duotone/rings-wedding.svg (100%) rename {client/src => src}/static/icons/duotone/road.svg (100%) rename {client/src => src}/static/icons/duotone/robot.svg (100%) rename {client/src => src}/static/icons/duotone/rocket-launch.svg (100%) rename {client/src => src}/static/icons/duotone/rocket.svg (100%) rename {client/src => src}/static/icons/duotone/route-highway.svg (100%) rename {client/src => src}/static/icons/duotone/route-interstate.svg (100%) rename {client/src => src}/static/icons/duotone/route.svg (100%) rename {client/src => src}/static/icons/duotone/router.svg (100%) rename {client/src => src}/static/icons/duotone/rss-square.svg (100%) rename {client/src => src}/static/icons/duotone/rss.svg (100%) rename {client/src => src}/static/icons/duotone/ruble-sign.svg (100%) rename {client/src => src}/static/icons/duotone/ruler-combined.svg (100%) rename {client/src => src}/static/icons/duotone/ruler-horizontal.svg (100%) rename {client/src => src}/static/icons/duotone/ruler-triangle.svg (100%) rename {client/src => src}/static/icons/duotone/ruler-vertical.svg (100%) rename {client/src => src}/static/icons/duotone/ruler.svg (100%) rename {client/src => src}/static/icons/duotone/running.svg (100%) rename {client/src => src}/static/icons/duotone/rupee-sign.svg (100%) rename {client/src => src}/static/icons/duotone/rv.svg (100%) rename {client/src => src}/static/icons/duotone/sack-dollar.svg (100%) rename {client/src => src}/static/icons/duotone/sack.svg (100%) rename {client/src => src}/static/icons/duotone/sad-cry.svg (100%) rename {client/src => src}/static/icons/duotone/sad-tear.svg (100%) rename {client/src => src}/static/icons/duotone/salad.svg (100%) rename {client/src => src}/static/icons/duotone/sandwich.svg (100%) rename {client/src => src}/static/icons/duotone/satellite-dish.svg (100%) rename {client/src => src}/static/icons/duotone/satellite.svg (100%) rename {client/src => src}/static/icons/duotone/sausage.svg (100%) rename {client/src => src}/static/icons/duotone/save.svg (100%) rename {client/src => src}/static/icons/duotone/sax-hot.svg (100%) rename {client/src => src}/static/icons/duotone/saxophone.svg (100%) rename {client/src => src}/static/icons/duotone/scalpel-path.svg (100%) rename {client/src => src}/static/icons/duotone/scalpel.svg (100%) rename {client/src => src}/static/icons/duotone/scanner-image.svg (100%) rename {client/src => src}/static/icons/duotone/scanner-keyboard.svg (100%) rename {client/src => src}/static/icons/duotone/scanner-touchscreen.svg (100%) rename {client/src => src}/static/icons/duotone/scanner.svg (100%) rename {client/src => src}/static/icons/duotone/scarecrow.svg (100%) rename {client/src => src}/static/icons/duotone/scarf.svg (100%) rename {client/src => src}/static/icons/duotone/school.svg (100%) rename {client/src => src}/static/icons/duotone/screwdriver.svg (100%) rename {client/src => src}/static/icons/duotone/scroll-old.svg (100%) rename {client/src => src}/static/icons/duotone/scroll.svg (100%) rename {client/src => src}/static/icons/duotone/scrubber.svg (100%) rename {client/src => src}/static/icons/duotone/scythe.svg (100%) rename {client/src => src}/static/icons/duotone/sd-card.svg (100%) rename {client/src => src}/static/icons/duotone/search-dollar.svg (100%) rename {client/src => src}/static/icons/duotone/search-location.svg (100%) rename {client/src => src}/static/icons/duotone/search-minus.svg (100%) rename {client/src => src}/static/icons/duotone/search-plus.svg (100%) rename {client/src => src}/static/icons/duotone/search.svg (100%) rename {client/src => src}/static/icons/duotone/seedling.svg (100%) rename {client/src => src}/static/icons/duotone/send-back.svg (100%) rename {client/src => src}/static/icons/duotone/send-backward.svg (100%) rename {client/src => src}/static/icons/duotone/sensor-alert.svg (100%) rename {client/src => src}/static/icons/duotone/sensor-fire.svg (100%) rename {client/src => src}/static/icons/duotone/sensor-on.svg (100%) rename {client/src => src}/static/icons/duotone/sensor-smoke.svg (100%) rename {client/src => src}/static/icons/duotone/sensor.svg (100%) rename {client/src => src}/static/icons/duotone/server.svg (100%) rename {client/src => src}/static/icons/duotone/shapes.svg (100%) rename {client/src => src}/static/icons/duotone/share-all.svg (100%) rename {client/src => src}/static/icons/duotone/share-alt-square.svg (100%) rename {client/src => src}/static/icons/duotone/share-alt.svg (100%) rename {client/src => src}/static/icons/duotone/share-square.svg (100%) rename {client/src => src}/static/icons/duotone/share.svg (100%) rename {client/src => src}/static/icons/duotone/sheep.svg (100%) rename {client/src => src}/static/icons/duotone/shekel-sign.svg (100%) rename {client/src => src}/static/icons/duotone/shield-alt.svg (100%) rename {client/src => src}/static/icons/duotone/shield-check.svg (100%) rename {client/src => src}/static/icons/duotone/shield-cross.svg (100%) rename {client/src => src}/static/icons/duotone/shield.svg (100%) rename {client/src => src}/static/icons/duotone/ship.svg (100%) rename {client/src => src}/static/icons/duotone/shipping-fast.svg (100%) rename {client/src => src}/static/icons/duotone/shipping-timed.svg (100%) rename {client/src => src}/static/icons/duotone/shish-kebab.svg (100%) rename {client/src => src}/static/icons/duotone/shoe-prints.svg (100%) rename {client/src => src}/static/icons/duotone/shopping-bag.svg (100%) rename {client/src => src}/static/icons/duotone/shopping-basket.svg (100%) rename {client/src => src}/static/icons/duotone/shopping-cart.svg (100%) rename {client/src => src}/static/icons/duotone/shovel-snow.svg (100%) rename {client/src => src}/static/icons/duotone/shovel.svg (100%) rename {client/src => src}/static/icons/duotone/shower.svg (100%) rename {client/src => src}/static/icons/duotone/shredder.svg (100%) rename {client/src => src}/static/icons/duotone/shuttle-van.svg (100%) rename {client/src => src}/static/icons/duotone/shuttlecock.svg (100%) rename {client/src => src}/static/icons/duotone/sickle.svg (100%) rename {client/src => src}/static/icons/duotone/sigma.svg (100%) rename {client/src => src}/static/icons/duotone/sign-in-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sign-in.svg (100%) rename {client/src => src}/static/icons/duotone/sign-language.svg (100%) rename {client/src => src}/static/icons/duotone/sign-out-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sign-out.svg (100%) rename {client/src => src}/static/icons/duotone/sign.svg (100%) rename {client/src => src}/static/icons/duotone/signal-1.svg (100%) rename {client/src => src}/static/icons/duotone/signal-2.svg (100%) rename {client/src => src}/static/icons/duotone/signal-3.svg (100%) rename {client/src => src}/static/icons/duotone/signal-4.svg (100%) rename {client/src => src}/static/icons/duotone/signal-alt-1.svg (100%) rename {client/src => src}/static/icons/duotone/signal-alt-2.svg (100%) rename {client/src => src}/static/icons/duotone/signal-alt-3.svg (100%) rename {client/src => src}/static/icons/duotone/signal-alt-slash.svg (100%) rename {client/src => src}/static/icons/duotone/signal-alt.svg (100%) rename {client/src => src}/static/icons/duotone/signal-slash.svg (100%) rename {client/src => src}/static/icons/duotone/signal-stream.svg (100%) rename {client/src => src}/static/icons/duotone/signal.svg (100%) rename {client/src => src}/static/icons/duotone/signature.svg (100%) rename {client/src => src}/static/icons/duotone/sim-card.svg (100%) rename {client/src => src}/static/icons/duotone/siren-on.svg (100%) rename {client/src => src}/static/icons/duotone/siren.svg (100%) rename {client/src => src}/static/icons/duotone/sitemap.svg (100%) rename {client/src => src}/static/icons/duotone/skating.svg (100%) rename {client/src => src}/static/icons/duotone/skeleton.svg (100%) rename {client/src => src}/static/icons/duotone/ski-jump.svg (100%) rename {client/src => src}/static/icons/duotone/ski-lift.svg (100%) rename {client/src => src}/static/icons/duotone/skiing-nordic.svg (100%) rename {client/src => src}/static/icons/duotone/skiing.svg (100%) rename {client/src => src}/static/icons/duotone/skull-cow.svg (100%) rename {client/src => src}/static/icons/duotone/skull-crossbones.svg (100%) rename {client/src => src}/static/icons/duotone/skull.svg (100%) rename {client/src => src}/static/icons/duotone/slash.svg (100%) rename {client/src => src}/static/icons/duotone/sledding.svg (100%) rename {client/src => src}/static/icons/duotone/sleigh.svg (100%) rename {client/src => src}/static/icons/duotone/sliders-h-square.svg (100%) rename {client/src => src}/static/icons/duotone/sliders-h.svg (100%) rename {client/src => src}/static/icons/duotone/sliders-v-square.svg (100%) rename {client/src => src}/static/icons/duotone/sliders-v.svg (100%) rename {client/src => src}/static/icons/duotone/smile-beam.svg (100%) rename {client/src => src}/static/icons/duotone/smile-plus.svg (100%) rename {client/src => src}/static/icons/duotone/smile-wink.svg (100%) rename {client/src => src}/static/icons/duotone/smile.svg (100%) rename {client/src => src}/static/icons/duotone/smog.svg (100%) rename {client/src => src}/static/icons/duotone/smoke.svg (100%) rename {client/src => src}/static/icons/duotone/smoking-ban.svg (100%) rename {client/src => src}/static/icons/duotone/smoking.svg (100%) rename {client/src => src}/static/icons/duotone/sms.svg (100%) rename {client/src => src}/static/icons/duotone/snake.svg (100%) rename {client/src => src}/static/icons/duotone/snooze.svg (100%) rename {client/src => src}/static/icons/duotone/snow-blowing.svg (100%) rename {client/src => src}/static/icons/duotone/snowboarding.svg (100%) rename {client/src => src}/static/icons/duotone/snowflake.svg (100%) rename {client/src => src}/static/icons/duotone/snowflakes.svg (100%) rename {client/src => src}/static/icons/duotone/snowman.svg (100%) rename {client/src => src}/static/icons/duotone/snowmobile.svg (100%) rename {client/src => src}/static/icons/duotone/snowplow.svg (100%) rename {client/src => src}/static/icons/duotone/socks.svg (100%) rename {client/src => src}/static/icons/duotone/solar-panel.svg (100%) rename {client/src => src}/static/icons/duotone/solar-system.svg (100%) rename {client/src => src}/static/icons/duotone/sort-alpha-down-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sort-alpha-down.svg (100%) rename {client/src => src}/static/icons/duotone/sort-alpha-up-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sort-alpha-up.svg (100%) rename {client/src => src}/static/icons/duotone/sort-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sort-amount-down-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sort-amount-down.svg (100%) rename {client/src => src}/static/icons/duotone/sort-amount-up-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sort-amount-up.svg (100%) rename {client/src => src}/static/icons/duotone/sort-circle-down.svg (100%) rename {client/src => src}/static/icons/duotone/sort-circle-up.svg (100%) rename {client/src => src}/static/icons/duotone/sort-circle.svg (100%) rename {client/src => src}/static/icons/duotone/sort-down.svg (100%) rename {client/src => src}/static/icons/duotone/sort-numeric-down-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sort-numeric-down.svg (100%) rename {client/src => src}/static/icons/duotone/sort-numeric-up-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sort-numeric-up.svg (100%) rename {client/src => src}/static/icons/duotone/sort-shapes-down-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sort-shapes-down.svg (100%) rename {client/src => src}/static/icons/duotone/sort-shapes-up-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sort-shapes-up.svg (100%) rename {client/src => src}/static/icons/duotone/sort-size-down-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sort-size-down.svg (100%) rename {client/src => src}/static/icons/duotone/sort-size-up-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sort-size-up.svg (100%) rename {client/src => src}/static/icons/duotone/sort-up.svg (100%) rename {client/src => src}/static/icons/duotone/sort.svg (100%) rename {client/src => src}/static/icons/duotone/soup.svg (100%) rename {client/src => src}/static/icons/duotone/spa.svg (100%) rename {client/src => src}/static/icons/duotone/space-shuttle.svg (100%) rename {client/src => src}/static/icons/duotone/space-station-moon-alt.svg (100%) rename {client/src => src}/static/icons/duotone/space-station-moon.svg (100%) rename {client/src => src}/static/icons/duotone/spade.svg (100%) rename {client/src => src}/static/icons/duotone/sparkles.svg (100%) rename {client/src => src}/static/icons/duotone/speaker.svg (100%) rename {client/src => src}/static/icons/duotone/speakers.svg (100%) rename {client/src => src}/static/icons/duotone/spell-check.svg (100%) rename {client/src => src}/static/icons/duotone/spider-black-widow.svg (100%) rename {client/src => src}/static/icons/duotone/spider-web.svg (100%) rename {client/src => src}/static/icons/duotone/spider.svg (100%) rename {client/src => src}/static/icons/duotone/spinner-third.svg (100%) rename {client/src => src}/static/icons/duotone/spinner.svg (100%) rename {client/src => src}/static/icons/duotone/splotch.svg (100%) rename {client/src => src}/static/icons/duotone/spray-can.svg (100%) rename {client/src => src}/static/icons/duotone/sprinkler.svg (100%) rename {client/src => src}/static/icons/duotone/square-full.svg (100%) rename {client/src => src}/static/icons/duotone/square-root-alt.svg (100%) rename {client/src => src}/static/icons/duotone/square-root.svg (100%) rename {client/src => src}/static/icons/duotone/square.svg (100%) rename {client/src => src}/static/icons/duotone/squirrel.svg (100%) rename {client/src => src}/static/icons/duotone/staff.svg (100%) rename {client/src => src}/static/icons/duotone/stamp.svg (100%) rename {client/src => src}/static/icons/duotone/star-and-crescent.svg (100%) rename {client/src => src}/static/icons/duotone/star-christmas.svg (100%) rename {client/src => src}/static/icons/duotone/star-exclamation.svg (100%) rename {client/src => src}/static/icons/duotone/star-half-alt.svg (100%) rename {client/src => src}/static/icons/duotone/star-half.svg (100%) rename {client/src => src}/static/icons/duotone/star-of-david.svg (100%) rename {client/src => src}/static/icons/duotone/star-of-life.svg (100%) rename {client/src => src}/static/icons/duotone/star-shooting.svg (100%) rename {client/src => src}/static/icons/duotone/star.svg (100%) rename {client/src => src}/static/icons/duotone/starfighter-alt.svg (100%) rename {client/src => src}/static/icons/duotone/starfighter.svg (100%) rename {client/src => src}/static/icons/duotone/stars.svg (100%) rename {client/src => src}/static/icons/duotone/starship-freighter.svg (100%) rename {client/src => src}/static/icons/duotone/starship.svg (100%) rename {client/src => src}/static/icons/duotone/steak.svg (100%) rename {client/src => src}/static/icons/duotone/steering-wheel.svg (100%) rename {client/src => src}/static/icons/duotone/step-backward.svg (100%) rename {client/src => src}/static/icons/duotone/step-forward.svg (100%) rename {client/src => src}/static/icons/duotone/stethoscope.svg (100%) rename {client/src => src}/static/icons/duotone/sticky-note.svg (100%) rename {client/src => src}/static/icons/duotone/stocking.svg (100%) rename {client/src => src}/static/icons/duotone/stomach.svg (100%) rename {client/src => src}/static/icons/duotone/stop-circle.svg (100%) rename {client/src => src}/static/icons/duotone/stop.svg (100%) rename {client/src => src}/static/icons/duotone/stopwatch.svg (100%) rename {client/src => src}/static/icons/duotone/store-alt.svg (100%) rename {client/src => src}/static/icons/duotone/store.svg (100%) rename {client/src => src}/static/icons/duotone/stream.svg (100%) rename {client/src => src}/static/icons/duotone/street-view.svg (100%) rename {client/src => src}/static/icons/duotone/stretcher.svg (100%) rename {client/src => src}/static/icons/duotone/strikethrough.svg (100%) rename {client/src => src}/static/icons/duotone/stroopwafel.svg (100%) rename {client/src => src}/static/icons/duotone/subscript.svg (100%) rename {client/src => src}/static/icons/duotone/subway.svg (100%) rename {client/src => src}/static/icons/duotone/suitcase-rolling.svg (100%) rename {client/src => src}/static/icons/duotone/suitcase.svg (100%) rename {client/src => src}/static/icons/duotone/sun-cloud.svg (100%) rename {client/src => src}/static/icons/duotone/sun-dust.svg (100%) rename {client/src => src}/static/icons/duotone/sun-haze.svg (100%) rename {client/src => src}/static/icons/duotone/sun.svg (100%) rename {client/src => src}/static/icons/duotone/sunglasses.svg (100%) rename {client/src => src}/static/icons/duotone/sunrise.svg (100%) rename {client/src => src}/static/icons/duotone/sunset.svg (100%) rename {client/src => src}/static/icons/duotone/superscript.svg (100%) rename {client/src => src}/static/icons/duotone/surprise.svg (100%) rename {client/src => src}/static/icons/duotone/swatchbook.svg (100%) rename {client/src => src}/static/icons/duotone/swimmer.svg (100%) rename {client/src => src}/static/icons/duotone/swimming-pool.svg (100%) rename {client/src => src}/static/icons/duotone/sword-laser-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sword-laser.svg (100%) rename {client/src => src}/static/icons/duotone/sword.svg (100%) rename {client/src => src}/static/icons/duotone/swords-laser.svg (100%) rename {client/src => src}/static/icons/duotone/swords.svg (100%) rename {client/src => src}/static/icons/duotone/synagogue.svg (100%) rename {client/src => src}/static/icons/duotone/sync-alt.svg (100%) rename {client/src => src}/static/icons/duotone/sync.svg (100%) rename {client/src => src}/static/icons/duotone/syringe.svg (100%) rename {client/src => src}/static/icons/duotone/table-tennis.svg (100%) rename {client/src => src}/static/icons/duotone/table.svg (100%) rename {client/src => src}/static/icons/duotone/tablet-alt.svg (100%) rename {client/src => src}/static/icons/duotone/tablet-android-alt.svg (100%) rename {client/src => src}/static/icons/duotone/tablet-android.svg (100%) rename {client/src => src}/static/icons/duotone/tablet-rugged.svg (100%) rename {client/src => src}/static/icons/duotone/tablet.svg (100%) rename {client/src => src}/static/icons/duotone/tablets.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer-alt-average.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer-alt-fast.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer-alt-fastest.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer-alt-slow.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer-alt-slowest.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer-alt.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer-average.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer-fast.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer-fastest.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer-slow.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer-slowest.svg (100%) rename {client/src => src}/static/icons/duotone/tachometer.svg (100%) rename {client/src => src}/static/icons/duotone/taco.svg (100%) rename {client/src => src}/static/icons/duotone/tag.svg (100%) rename {client/src => src}/static/icons/duotone/tags.svg (100%) rename {client/src => src}/static/icons/duotone/tally.svg (100%) rename {client/src => src}/static/icons/duotone/tanakh.svg (100%) rename {client/src => src}/static/icons/duotone/tape.svg (100%) rename {client/src => src}/static/icons/duotone/tasks-alt.svg (100%) rename {client/src => src}/static/icons/duotone/tasks.svg (100%) rename {client/src => src}/static/icons/duotone/taxi.svg (100%) rename {client/src => src}/static/icons/duotone/teeth-open.svg (100%) rename {client/src => src}/static/icons/duotone/teeth.svg (100%) rename {client/src => src}/static/icons/duotone/telescope.svg (100%) rename {client/src => src}/static/icons/duotone/temperature-down.svg (100%) rename {client/src => src}/static/icons/duotone/temperature-frigid.svg (100%) rename {client/src => src}/static/icons/duotone/temperature-high.svg (100%) rename {client/src => src}/static/icons/duotone/temperature-hot.svg (100%) rename {client/src => src}/static/icons/duotone/temperature-low.svg (100%) rename {client/src => src}/static/icons/duotone/temperature-up.svg (100%) rename {client/src => src}/static/icons/duotone/tenge.svg (100%) rename {client/src => src}/static/icons/duotone/tennis-ball.svg (100%) rename {client/src => src}/static/icons/duotone/terminal.svg (100%) rename {client/src => src}/static/icons/duotone/text-height.svg (100%) rename {client/src => src}/static/icons/duotone/text-size.svg (100%) rename {client/src => src}/static/icons/duotone/text-width.svg (100%) rename {client/src => src}/static/icons/duotone/text.svg (100%) rename {client/src => src}/static/icons/duotone/th-large.svg (100%) rename {client/src => src}/static/icons/duotone/th-list.svg (100%) rename {client/src => src}/static/icons/duotone/th.svg (100%) rename {client/src => src}/static/icons/duotone/theater-masks.svg (100%) rename {client/src => src}/static/icons/duotone/thermometer-empty.svg (100%) rename {client/src => src}/static/icons/duotone/thermometer-full.svg (100%) rename {client/src => src}/static/icons/duotone/thermometer-half.svg (100%) rename {client/src => src}/static/icons/duotone/thermometer-quarter.svg (100%) rename {client/src => src}/static/icons/duotone/thermometer-three-quarters.svg (100%) rename {client/src => src}/static/icons/duotone/thermometer.svg (100%) rename {client/src => src}/static/icons/duotone/theta.svg (100%) rename {client/src => src}/static/icons/duotone/thumbs-down.svg (100%) rename {client/src => src}/static/icons/duotone/thumbs-up.svg (100%) rename {client/src => src}/static/icons/duotone/thumbtack.svg (100%) rename {client/src => src}/static/icons/duotone/thunderstorm-moon.svg (100%) rename {client/src => src}/static/icons/duotone/thunderstorm-sun.svg (100%) rename {client/src => src}/static/icons/duotone/thunderstorm.svg (100%) rename {client/src => src}/static/icons/duotone/ticket-alt.svg (100%) rename {client/src => src}/static/icons/duotone/ticket.svg (100%) rename {client/src => src}/static/icons/duotone/tilde.svg (100%) rename {client/src => src}/static/icons/duotone/times-circle.svg (100%) rename {client/src => src}/static/icons/duotone/times-hexagon.svg (100%) rename {client/src => src}/static/icons/duotone/times-octagon.svg (100%) rename {client/src => src}/static/icons/duotone/times-square.svg (100%) rename {client/src => src}/static/icons/duotone/times.svg (100%) rename {client/src => src}/static/icons/duotone/tint-slash.svg (100%) rename {client/src => src}/static/icons/duotone/tint.svg (100%) rename {client/src => src}/static/icons/duotone/tire-flat.svg (100%) rename {client/src => src}/static/icons/duotone/tire-pressure-warning.svg (100%) rename {client/src => src}/static/icons/duotone/tire-rugged.svg (100%) rename {client/src => src}/static/icons/duotone/tire.svg (100%) rename {client/src => src}/static/icons/duotone/tired.svg (100%) rename {client/src => src}/static/icons/duotone/toggle-off.svg (100%) rename {client/src => src}/static/icons/duotone/toggle-on.svg (100%) rename {client/src => src}/static/icons/duotone/toilet-paper-alt.svg (100%) rename {client/src => src}/static/icons/duotone/toilet-paper.svg (100%) rename {client/src => src}/static/icons/duotone/toilet.svg (100%) rename {client/src => src}/static/icons/duotone/tombstone-alt.svg (100%) rename {client/src => src}/static/icons/duotone/tombstone.svg (100%) rename {client/src => src}/static/icons/duotone/toolbox.svg (100%) rename {client/src => src}/static/icons/duotone/tools.svg (100%) rename {client/src => src}/static/icons/duotone/tooth.svg (100%) rename {client/src => src}/static/icons/duotone/toothbrush.svg (100%) rename {client/src => src}/static/icons/duotone/torah.svg (100%) rename {client/src => src}/static/icons/duotone/torii-gate.svg (100%) rename {client/src => src}/static/icons/duotone/tornado.svg (100%) rename {client/src => src}/static/icons/duotone/tractor.svg (100%) rename {client/src => src}/static/icons/duotone/trademark.svg (100%) rename {client/src => src}/static/icons/duotone/traffic-cone.svg (100%) rename {client/src => src}/static/icons/duotone/traffic-light-go.svg (100%) rename {client/src => src}/static/icons/duotone/traffic-light-slow.svg (100%) rename {client/src => src}/static/icons/duotone/traffic-light-stop.svg (100%) rename {client/src => src}/static/icons/duotone/traffic-light.svg (100%) rename {client/src => src}/static/icons/duotone/trailer.svg (100%) rename {client/src => src}/static/icons/duotone/train.svg (100%) rename {client/src => src}/static/icons/duotone/tram.svg (100%) rename {client/src => src}/static/icons/duotone/transgender-alt.svg (100%) rename {client/src => src}/static/icons/duotone/transgender.svg (100%) rename {client/src => src}/static/icons/duotone/transporter-1.svg (100%) rename {client/src => src}/static/icons/duotone/transporter-2.svg (100%) rename {client/src => src}/static/icons/duotone/transporter-3.svg (100%) rename {client/src => src}/static/icons/duotone/transporter-empty.svg (100%) rename {client/src => src}/static/icons/duotone/transporter.svg (100%) rename {client/src => src}/static/icons/duotone/trash-alt.svg (100%) rename {client/src => src}/static/icons/duotone/trash-restore-alt.svg (100%) rename {client/src => src}/static/icons/duotone/trash-restore.svg (100%) rename {client/src => src}/static/icons/duotone/trash-undo-alt.svg (100%) rename {client/src => src}/static/icons/duotone/trash-undo.svg (100%) rename {client/src => src}/static/icons/duotone/trash.svg (100%) rename {client/src => src}/static/icons/duotone/treasure-chest.svg (100%) rename {client/src => src}/static/icons/duotone/tree-alt.svg (100%) rename {client/src => src}/static/icons/duotone/tree-christmas.svg (100%) rename {client/src => src}/static/icons/duotone/tree-decorated.svg (100%) rename {client/src => src}/static/icons/duotone/tree-large.svg (100%) rename {client/src => src}/static/icons/duotone/tree-palm.svg (100%) rename {client/src => src}/static/icons/duotone/tree.svg (100%) rename {client/src => src}/static/icons/duotone/trees.svg (100%) rename {client/src => src}/static/icons/duotone/triangle-music.svg (100%) rename {client/src => src}/static/icons/duotone/triangle.svg (100%) rename {client/src => src}/static/icons/duotone/trophy-alt.svg (100%) rename {client/src => src}/static/icons/duotone/trophy.svg (100%) rename {client/src => src}/static/icons/duotone/truck-container.svg (100%) rename {client/src => src}/static/icons/duotone/truck-couch.svg (100%) rename {client/src => src}/static/icons/duotone/truck-loading.svg (100%) rename {client/src => src}/static/icons/duotone/truck-monster.svg (100%) rename {client/src => src}/static/icons/duotone/truck-moving.svg (100%) rename {client/src => src}/static/icons/duotone/truck-pickup.svg (100%) rename {client/src => src}/static/icons/duotone/truck-plow.svg (100%) rename {client/src => src}/static/icons/duotone/truck-ramp.svg (100%) rename {client/src => src}/static/icons/duotone/truck.svg (100%) rename {client/src => src}/static/icons/duotone/trumpet.svg (100%) rename {client/src => src}/static/icons/duotone/tshirt.svg (100%) rename {client/src => src}/static/icons/duotone/tty.svg (100%) rename {client/src => src}/static/icons/duotone/turkey.svg (100%) rename {client/src => src}/static/icons/duotone/turntable.svg (100%) rename {client/src => src}/static/icons/duotone/turtle.svg (100%) rename {client/src => src}/static/icons/duotone/tv-alt.svg (100%) rename {client/src => src}/static/icons/duotone/tv-music.svg (100%) rename {client/src => src}/static/icons/duotone/tv-retro.svg (100%) rename {client/src => src}/static/icons/duotone/tv.svg (100%) rename {client/src => src}/static/icons/duotone/typewriter.svg (100%) rename {client/src => src}/static/icons/duotone/ufo-beam.svg (100%) rename {client/src => src}/static/icons/duotone/ufo.svg (100%) rename {client/src => src}/static/icons/duotone/umbrella-beach.svg (100%) rename {client/src => src}/static/icons/duotone/umbrella.svg (100%) rename {client/src => src}/static/icons/duotone/underline.svg (100%) rename {client/src => src}/static/icons/duotone/undo-alt.svg (100%) rename {client/src => src}/static/icons/duotone/undo.svg (100%) rename {client/src => src}/static/icons/duotone/unicorn.svg (100%) rename {client/src => src}/static/icons/duotone/union.svg (100%) rename {client/src => src}/static/icons/duotone/universal-access.svg (100%) rename {client/src => src}/static/icons/duotone/university.svg (100%) rename {client/src => src}/static/icons/duotone/unlink.svg (100%) rename {client/src => src}/static/icons/duotone/unlock-alt.svg (100%) rename {client/src => src}/static/icons/duotone/unlock.svg (100%) rename {client/src => src}/static/icons/duotone/upload.svg (100%) rename {client/src => src}/static/icons/duotone/usb-drive.svg (100%) rename {client/src => src}/static/icons/duotone/usd-circle.svg (100%) rename {client/src => src}/static/icons/duotone/usd-square.svg (100%) rename {client/src => src}/static/icons/duotone/user-alien.svg (100%) rename {client/src => src}/static/icons/duotone/user-alt-slash.svg (100%) rename {client/src => src}/static/icons/duotone/user-alt.svg (100%) rename {client/src => src}/static/icons/duotone/user-astronaut.svg (100%) rename {client/src => src}/static/icons/duotone/user-chart.svg (100%) rename {client/src => src}/static/icons/duotone/user-check.svg (100%) rename {client/src => src}/static/icons/duotone/user-circle.svg (100%) rename {client/src => src}/static/icons/duotone/user-clock.svg (100%) rename {client/src => src}/static/icons/duotone/user-cog.svg (100%) rename {client/src => src}/static/icons/duotone/user-cowboy.svg (100%) rename {client/src => src}/static/icons/duotone/user-crown.svg (100%) rename {client/src => src}/static/icons/duotone/user-edit.svg (100%) rename {client/src => src}/static/icons/duotone/user-friends.svg (100%) rename {client/src => src}/static/icons/duotone/user-graduate.svg (100%) rename {client/src => src}/static/icons/duotone/user-hard-hat.svg (100%) rename {client/src => src}/static/icons/duotone/user-headset.svg (100%) rename {client/src => src}/static/icons/duotone/user-injured.svg (100%) rename {client/src => src}/static/icons/duotone/user-lock.svg (100%) rename {client/src => src}/static/icons/duotone/user-md-chat.svg (100%) rename {client/src => src}/static/icons/duotone/user-md.svg (100%) rename {client/src => src}/static/icons/duotone/user-minus.svg (100%) rename {client/src => src}/static/icons/duotone/user-music.svg (100%) rename {client/src => src}/static/icons/duotone/user-ninja.svg (100%) rename {client/src => src}/static/icons/duotone/user-nurse.svg (100%) rename {client/src => src}/static/icons/duotone/user-plus.svg (100%) rename {client/src => src}/static/icons/duotone/user-robot.svg (100%) rename {client/src => src}/static/icons/duotone/user-secret.svg (100%) rename {client/src => src}/static/icons/duotone/user-shield.svg (100%) rename {client/src => src}/static/icons/duotone/user-slash.svg (100%) rename {client/src => src}/static/icons/duotone/user-tag.svg (100%) rename {client/src => src}/static/icons/duotone/user-tie.svg (100%) rename {client/src => src}/static/icons/duotone/user-times.svg (100%) rename {client/src => src}/static/icons/duotone/user-visor.svg (100%) rename {client/src => src}/static/icons/duotone/user.svg (100%) rename {client/src => src}/static/icons/duotone/users-class.svg (100%) rename {client/src => src}/static/icons/duotone/users-cog.svg (100%) rename {client/src => src}/static/icons/duotone/users-crown.svg (100%) rename {client/src => src}/static/icons/duotone/users-medical.svg (100%) rename {client/src => src}/static/icons/duotone/users.svg (100%) rename {client/src => src}/static/icons/duotone/utensil-fork.svg (100%) rename {client/src => src}/static/icons/duotone/utensil-knife.svg (100%) rename {client/src => src}/static/icons/duotone/utensil-spoon.svg (100%) rename {client/src => src}/static/icons/duotone/utensils-alt.svg (100%) rename {client/src => src}/static/icons/duotone/utensils.svg (100%) rename {client/src => src}/static/icons/duotone/vacuum-robot.svg (100%) rename {client/src => src}/static/icons/duotone/vacuum.svg (100%) rename {client/src => src}/static/icons/duotone/value-absolute.svg (100%) rename {client/src => src}/static/icons/duotone/vector-square.svg (100%) rename {client/src => src}/static/icons/duotone/venus-double.svg (100%) rename {client/src => src}/static/icons/duotone/venus-mars.svg (100%) rename {client/src => src}/static/icons/duotone/venus.svg (100%) rename {client/src => src}/static/icons/duotone/vhs.svg (100%) rename {client/src => src}/static/icons/duotone/vial.svg (100%) rename {client/src => src}/static/icons/duotone/vials.svg (100%) rename {client/src => src}/static/icons/duotone/video-plus.svg (100%) rename {client/src => src}/static/icons/duotone/video-slash.svg (100%) rename {client/src => src}/static/icons/duotone/video.svg (100%) rename {client/src => src}/static/icons/duotone/vihara.svg (100%) rename {client/src => src}/static/icons/duotone/violin.svg (100%) rename {client/src => src}/static/icons/duotone/voicemail.svg (100%) rename {client/src => src}/static/icons/duotone/volcano.svg (100%) rename {client/src => src}/static/icons/duotone/volleyball-ball.svg (100%) rename {client/src => src}/static/icons/duotone/volume-down.svg (100%) rename {client/src => src}/static/icons/duotone/volume-mute.svg (100%) rename {client/src => src}/static/icons/duotone/volume-off.svg (100%) rename {client/src => src}/static/icons/duotone/volume-slash.svg (100%) rename {client/src => src}/static/icons/duotone/volume-up.svg (100%) rename {client/src => src}/static/icons/duotone/volume.svg (100%) rename {client/src => src}/static/icons/duotone/vote-nay.svg (100%) rename {client/src => src}/static/icons/duotone/vote-yea.svg (100%) rename {client/src => src}/static/icons/duotone/vr-cardboard.svg (100%) rename {client/src => src}/static/icons/duotone/wagon-covered.svg (100%) rename {client/src => src}/static/icons/duotone/walker.svg (100%) rename {client/src => src}/static/icons/duotone/walkie-talkie.svg (100%) rename {client/src => src}/static/icons/duotone/walking.svg (100%) rename {client/src => src}/static/icons/duotone/wallet.svg (100%) rename {client/src => src}/static/icons/duotone/wand-magic.svg (100%) rename {client/src => src}/static/icons/duotone/wand.svg (100%) rename {client/src => src}/static/icons/duotone/warehouse-alt.svg (100%) rename {client/src => src}/static/icons/duotone/warehouse.svg (100%) rename {client/src => src}/static/icons/duotone/washer.svg (100%) rename {client/src => src}/static/icons/duotone/watch-calculator.svg (100%) rename {client/src => src}/static/icons/duotone/watch-fitness.svg (100%) rename {client/src => src}/static/icons/duotone/watch.svg (100%) rename {client/src => src}/static/icons/duotone/water-lower.svg (100%) rename {client/src => src}/static/icons/duotone/water-rise.svg (100%) rename {client/src => src}/static/icons/duotone/water.svg (100%) rename {client/src => src}/static/icons/duotone/wave-sine.svg (100%) rename {client/src => src}/static/icons/duotone/wave-square.svg (100%) rename {client/src => src}/static/icons/duotone/wave-triangle.svg (100%) rename {client/src => src}/static/icons/duotone/waveform-path.svg (100%) rename {client/src => src}/static/icons/duotone/waveform.svg (100%) rename {client/src => src}/static/icons/duotone/webcam-slash.svg (100%) rename {client/src => src}/static/icons/duotone/webcam.svg (100%) rename {client/src => src}/static/icons/duotone/weight-hanging.svg (100%) rename {client/src => src}/static/icons/duotone/weight.svg (100%) rename {client/src => src}/static/icons/duotone/whale.svg (100%) rename {client/src => src}/static/icons/duotone/wheat.svg (100%) rename {client/src => src}/static/icons/duotone/wheelchair.svg (100%) rename {client/src => src}/static/icons/duotone/whistle.svg (100%) rename {client/src => src}/static/icons/duotone/wifi-1.svg (100%) rename {client/src => src}/static/icons/duotone/wifi-2.svg (100%) rename {client/src => src}/static/icons/duotone/wifi-slash.svg (100%) rename {client/src => src}/static/icons/duotone/wifi.svg (100%) rename {client/src => src}/static/icons/duotone/wind-turbine.svg (100%) rename {client/src => src}/static/icons/duotone/wind-warning.svg (100%) rename {client/src => src}/static/icons/duotone/wind.svg (100%) rename {client/src => src}/static/icons/duotone/window-alt.svg (100%) rename {client/src => src}/static/icons/duotone/window-close.svg (100%) rename {client/src => src}/static/icons/duotone/window-frame-open.svg (100%) rename {client/src => src}/static/icons/duotone/window-frame.svg (100%) rename {client/src => src}/static/icons/duotone/window-maximize.svg (100%) rename {client/src => src}/static/icons/duotone/window-minimize.svg (100%) rename {client/src => src}/static/icons/duotone/window-restore.svg (100%) rename {client/src => src}/static/icons/duotone/window.svg (100%) rename {client/src => src}/static/icons/duotone/windsock.svg (100%) rename {client/src => src}/static/icons/duotone/wine-bottle.svg (100%) rename {client/src => src}/static/icons/duotone/wine-glass-alt.svg (100%) rename {client/src => src}/static/icons/duotone/wine-glass.svg (100%) rename {client/src => src}/static/icons/duotone/won-sign.svg (100%) rename {client/src => src}/static/icons/duotone/wreath.svg (100%) rename {client/src => src}/static/icons/duotone/wrench.svg (100%) rename {client/src => src}/static/icons/duotone/x-ray.svg (100%) rename {client/src => src}/static/icons/duotone/yen-sign.svg (100%) rename {client/src => src}/static/icons/duotone/yin-yang.svg (100%) rename {client/src => src}/static/icons/light/abacus.svg (100%) rename {client/src => src}/static/icons/light/acorn.svg (100%) rename {client/src => src}/static/icons/light/ad.svg (100%) rename {client/src => src}/static/icons/light/address-book.svg (100%) rename {client/src => src}/static/icons/light/address-card.svg (100%) rename {client/src => src}/static/icons/light/adjust.svg (100%) rename {client/src => src}/static/icons/light/air-conditioner.svg (100%) rename {client/src => src}/static/icons/light/air-freshener.svg (100%) rename {client/src => src}/static/icons/light/alarm-clock.svg (100%) rename {client/src => src}/static/icons/light/alarm-exclamation.svg (100%) rename {client/src => src}/static/icons/light/alarm-plus.svg (100%) rename {client/src => src}/static/icons/light/alarm-snooze.svg (100%) rename {client/src => src}/static/icons/light/album-collection.svg (100%) rename {client/src => src}/static/icons/light/album.svg (100%) rename {client/src => src}/static/icons/light/alicorn.svg (100%) rename {client/src => src}/static/icons/light/alien-monster.svg (100%) rename {client/src => src}/static/icons/light/alien.svg (100%) rename {client/src => src}/static/icons/light/align-center.svg (100%) rename {client/src => src}/static/icons/light/align-justify.svg (100%) rename {client/src => src}/static/icons/light/align-left.svg (100%) rename {client/src => src}/static/icons/light/align-right.svg (100%) rename {client/src => src}/static/icons/light/align-slash.svg (100%) rename {client/src => src}/static/icons/light/allergies.svg (100%) rename {client/src => src}/static/icons/light/ambulance.svg (100%) rename {client/src => src}/static/icons/light/american-sign-language-interpreting.svg (100%) rename {client/src => src}/static/icons/light/amp-guitar.svg (100%) rename {client/src => src}/static/icons/light/analytics.svg (100%) rename {client/src => src}/static/icons/light/anchor.svg (100%) rename {client/src => src}/static/icons/light/angel.svg (100%) rename {client/src => src}/static/icons/light/angle-double-down.svg (100%) rename {client/src => src}/static/icons/light/angle-double-left.svg (100%) rename {client/src => src}/static/icons/light/angle-double-right.svg (100%) rename {client/src => src}/static/icons/light/angle-double-up.svg (100%) rename {client/src => src}/static/icons/light/angle-down.svg (100%) rename {client/src => src}/static/icons/light/angle-left.svg (100%) rename {client/src => src}/static/icons/light/angle-right.svg (100%) rename {client/src => src}/static/icons/light/angle-up.svg (100%) rename {client/src => src}/static/icons/light/angry.svg (100%) rename {client/src => src}/static/icons/light/ankh.svg (100%) rename {client/src => src}/static/icons/light/apple-alt.svg (100%) rename {client/src => src}/static/icons/light/apple-crate.svg (100%) rename {client/src => src}/static/icons/light/archive.svg (100%) rename {client/src => src}/static/icons/light/archway.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-circle-down.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-circle-left.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-circle-right.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-circle-up.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-down.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-from-bottom.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-from-left.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-from-right.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-from-top.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-left.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-right.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-square-down.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-square-left.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-square-right.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-square-up.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-to-bottom.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-to-left.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-to-right.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-to-top.svg (100%) rename {client/src => src}/static/icons/light/arrow-alt-up.svg (100%) rename {client/src => src}/static/icons/light/arrow-circle-down.svg (100%) rename {client/src => src}/static/icons/light/arrow-circle-left.svg (100%) rename {client/src => src}/static/icons/light/arrow-circle-right.svg (100%) rename {client/src => src}/static/icons/light/arrow-circle-up.svg (100%) rename {client/src => src}/static/icons/light/arrow-down.svg (100%) rename {client/src => src}/static/icons/light/arrow-from-bottom.svg (100%) rename {client/src => src}/static/icons/light/arrow-from-left.svg (100%) rename {client/src => src}/static/icons/light/arrow-from-right.svg (100%) rename {client/src => src}/static/icons/light/arrow-from-top.svg (100%) rename {client/src => src}/static/icons/light/arrow-left.svg (100%) rename {client/src => src}/static/icons/light/arrow-right.svg (100%) rename {client/src => src}/static/icons/light/arrow-square-down.svg (100%) rename {client/src => src}/static/icons/light/arrow-square-left.svg (100%) rename {client/src => src}/static/icons/light/arrow-square-right.svg (100%) rename {client/src => src}/static/icons/light/arrow-square-up.svg (100%) rename {client/src => src}/static/icons/light/arrow-to-bottom.svg (100%) rename {client/src => src}/static/icons/light/arrow-to-left.svg (100%) rename {client/src => src}/static/icons/light/arrow-to-right.svg (100%) rename {client/src => src}/static/icons/light/arrow-to-top.svg (100%) rename {client/src => src}/static/icons/light/arrow-up.svg (100%) rename {client/src => src}/static/icons/light/arrows-alt-h.svg (100%) rename {client/src => src}/static/icons/light/arrows-alt-v.svg (100%) rename {client/src => src}/static/icons/light/arrows-alt.svg (100%) rename {client/src => src}/static/icons/light/arrows-h.svg (100%) rename {client/src => src}/static/icons/light/arrows-v.svg (100%) rename {client/src => src}/static/icons/light/arrows.svg (100%) rename {client/src => src}/static/icons/light/assistive-listening-systems.svg (100%) rename {client/src => src}/static/icons/light/asterisk.svg (100%) rename {client/src => src}/static/icons/light/at.svg (100%) rename {client/src => src}/static/icons/light/atlas.svg (100%) rename {client/src => src}/static/icons/light/atom-alt.svg (100%) rename {client/src => src}/static/icons/light/atom.svg (100%) rename {client/src => src}/static/icons/light/audio-description.svg (100%) rename {client/src => src}/static/icons/light/award.svg (100%) rename {client/src => src}/static/icons/light/axe-battle.svg (100%) rename {client/src => src}/static/icons/light/axe.svg (100%) rename {client/src => src}/static/icons/light/baby-carriage.svg (100%) rename {client/src => src}/static/icons/light/baby.svg (100%) rename {client/src => src}/static/icons/light/backpack.svg (100%) rename {client/src => src}/static/icons/light/backspace.svg (100%) rename {client/src => src}/static/icons/light/backward.svg (100%) rename {client/src => src}/static/icons/light/bacon.svg (100%) rename {client/src => src}/static/icons/light/badge-check.svg (100%) rename {client/src => src}/static/icons/light/badge-dollar.svg (100%) rename {client/src => src}/static/icons/light/badge-percent.svg (100%) rename {client/src => src}/static/icons/light/badge-sheriff.svg (100%) rename {client/src => src}/static/icons/light/badge.svg (100%) rename {client/src => src}/static/icons/light/badger-honey.svg (100%) rename {client/src => src}/static/icons/light/bags-shopping.svg (100%) rename {client/src => src}/static/icons/light/bahai.svg (100%) rename {client/src => src}/static/icons/light/balance-scale-left.svg (100%) rename {client/src => src}/static/icons/light/balance-scale-right.svg (100%) rename {client/src => src}/static/icons/light/balance-scale.svg (100%) rename {client/src => src}/static/icons/light/ball-pile.svg (100%) rename {client/src => src}/static/icons/light/ballot-check.svg (100%) rename {client/src => src}/static/icons/light/ballot.svg (100%) rename {client/src => src}/static/icons/light/ban.svg (100%) rename {client/src => src}/static/icons/light/band-aid.svg (100%) rename {client/src => src}/static/icons/light/banjo.svg (100%) rename {client/src => src}/static/icons/light/barcode-alt.svg (100%) rename {client/src => src}/static/icons/light/barcode-read.svg (100%) rename {client/src => src}/static/icons/light/barcode-scan.svg (100%) rename {client/src => src}/static/icons/light/barcode.svg (100%) rename {client/src => src}/static/icons/light/bars.svg (100%) rename {client/src => src}/static/icons/light/baseball-ball.svg (100%) rename {client/src => src}/static/icons/light/baseball.svg (100%) rename {client/src => src}/static/icons/light/basketball-ball.svg (100%) rename {client/src => src}/static/icons/light/basketball-hoop.svg (100%) rename {client/src => src}/static/icons/light/bat.svg (100%) rename {client/src => src}/static/icons/light/bath.svg (100%) rename {client/src => src}/static/icons/light/battery-bolt.svg (100%) rename {client/src => src}/static/icons/light/battery-empty.svg (100%) rename {client/src => src}/static/icons/light/battery-full.svg (100%) rename {client/src => src}/static/icons/light/battery-half.svg (100%) rename {client/src => src}/static/icons/light/battery-quarter.svg (100%) rename {client/src => src}/static/icons/light/battery-slash.svg (100%) rename {client/src => src}/static/icons/light/battery-three-quarters.svg (100%) rename {client/src => src}/static/icons/light/bed-alt.svg (100%) rename {client/src => src}/static/icons/light/bed-bunk.svg (100%) rename {client/src => src}/static/icons/light/bed-empty.svg (100%) rename {client/src => src}/static/icons/light/bed.svg (100%) rename {client/src => src}/static/icons/light/beer.svg (100%) rename {client/src => src}/static/icons/light/bell-exclamation.svg (100%) rename {client/src => src}/static/icons/light/bell-on.svg (100%) rename {client/src => src}/static/icons/light/bell-plus.svg (100%) rename {client/src => src}/static/icons/light/bell-school-slash.svg (100%) rename {client/src => src}/static/icons/light/bell-school.svg (100%) rename {client/src => src}/static/icons/light/bell-slash.svg (100%) rename {client/src => src}/static/icons/light/bell.svg (100%) rename {client/src => src}/static/icons/light/bells.svg (100%) rename {client/src => src}/static/icons/light/betamax.svg (100%) rename {client/src => src}/static/icons/light/bezier-curve.svg (100%) rename {client/src => src}/static/icons/light/bible.svg (100%) rename {client/src => src}/static/icons/light/bicycle.svg (100%) rename {client/src => src}/static/icons/light/biking-mountain.svg (100%) rename {client/src => src}/static/icons/light/biking.svg (100%) rename {client/src => src}/static/icons/light/binoculars.svg (100%) rename {client/src => src}/static/icons/light/biohazard.svg (100%) rename {client/src => src}/static/icons/light/birthday-cake.svg (100%) rename {client/src => src}/static/icons/light/blanket.svg (100%) rename {client/src => src}/static/icons/light/blender-phone.svg (100%) rename {client/src => src}/static/icons/light/blender.svg (100%) rename {client/src => src}/static/icons/light/blind.svg (100%) rename {client/src => src}/static/icons/light/blinds-open.svg (100%) rename {client/src => src}/static/icons/light/blinds-raised.svg (100%) rename {client/src => src}/static/icons/light/blinds.svg (100%) rename {client/src => src}/static/icons/light/blog.svg (100%) rename {client/src => src}/static/icons/light/bold.svg (100%) rename {client/src => src}/static/icons/light/bolt.svg (100%) rename {client/src => src}/static/icons/light/bomb.svg (100%) rename {client/src => src}/static/icons/light/bone-break.svg (100%) rename {client/src => src}/static/icons/light/bone.svg (100%) rename {client/src => src}/static/icons/light/bong.svg (100%) rename {client/src => src}/static/icons/light/book-alt.svg (100%) rename {client/src => src}/static/icons/light/book-dead.svg (100%) rename {client/src => src}/static/icons/light/book-heart.svg (100%) rename {client/src => src}/static/icons/light/book-medical.svg (100%) rename {client/src => src}/static/icons/light/book-open.svg (100%) rename {client/src => src}/static/icons/light/book-reader.svg (100%) rename {client/src => src}/static/icons/light/book-spells.svg (100%) rename {client/src => src}/static/icons/light/book-user.svg (100%) rename {client/src => src}/static/icons/light/book.svg (100%) rename {client/src => src}/static/icons/light/bookmark.svg (100%) rename {client/src => src}/static/icons/light/books-medical.svg (100%) rename {client/src => src}/static/icons/light/books.svg (100%) rename {client/src => src}/static/icons/light/boombox.svg (100%) rename {client/src => src}/static/icons/light/boot.svg (100%) rename {client/src => src}/static/icons/light/booth-curtain.svg (100%) rename {client/src => src}/static/icons/light/border-all.svg (100%) rename {client/src => src}/static/icons/light/border-bottom.svg (100%) rename {client/src => src}/static/icons/light/border-center-h.svg (100%) rename {client/src => src}/static/icons/light/border-center-v.svg (100%) rename {client/src => src}/static/icons/light/border-inner.svg (100%) rename {client/src => src}/static/icons/light/border-left.svg (100%) rename {client/src => src}/static/icons/light/border-none.svg (100%) rename {client/src => src}/static/icons/light/border-outer.svg (100%) rename {client/src => src}/static/icons/light/border-right.svg (100%) rename {client/src => src}/static/icons/light/border-style-alt.svg (100%) rename {client/src => src}/static/icons/light/border-style.svg (100%) rename {client/src => src}/static/icons/light/border-top.svg (100%) rename {client/src => src}/static/icons/light/bow-arrow.svg (100%) rename {client/src => src}/static/icons/light/bowling-ball.svg (100%) rename {client/src => src}/static/icons/light/bowling-pins.svg (100%) rename {client/src => src}/static/icons/light/box-alt.svg (100%) rename {client/src => src}/static/icons/light/box-ballot.svg (100%) rename {client/src => src}/static/icons/light/box-check.svg (100%) rename {client/src => src}/static/icons/light/box-fragile.svg (100%) rename {client/src => src}/static/icons/light/box-full.svg (100%) rename {client/src => src}/static/icons/light/box-heart.svg (100%) rename {client/src => src}/static/icons/light/box-open.svg (100%) rename {client/src => src}/static/icons/light/box-up.svg (100%) rename {client/src => src}/static/icons/light/box-usd.svg (100%) rename {client/src => src}/static/icons/light/box.svg (100%) rename {client/src => src}/static/icons/light/boxes-alt.svg (100%) rename {client/src => src}/static/icons/light/boxes.svg (100%) rename {client/src => src}/static/icons/light/boxing-glove.svg (100%) rename {client/src => src}/static/icons/light/brackets-curly.svg (100%) rename {client/src => src}/static/icons/light/brackets.svg (100%) rename {client/src => src}/static/icons/light/braille.svg (100%) rename {client/src => src}/static/icons/light/brain.svg (100%) rename {client/src => src}/static/icons/light/bread-loaf.svg (100%) rename {client/src => src}/static/icons/light/bread-slice.svg (100%) rename {client/src => src}/static/icons/light/briefcase-medical.svg (100%) rename {client/src => src}/static/icons/light/briefcase.svg (100%) rename {client/src => src}/static/icons/light/bring-forward.svg (100%) rename {client/src => src}/static/icons/light/bring-front.svg (100%) rename {client/src => src}/static/icons/light/broadcast-tower.svg (100%) rename {client/src => src}/static/icons/light/broom.svg (100%) rename {client/src => src}/static/icons/light/browser.svg (100%) rename {client/src => src}/static/icons/light/brush.svg (100%) rename {client/src => src}/static/icons/light/bug.svg (100%) rename {client/src => src}/static/icons/light/building.svg (100%) rename {client/src => src}/static/icons/light/bullhorn.svg (100%) rename {client/src => src}/static/icons/light/bullseye-arrow.svg (100%) rename {client/src => src}/static/icons/light/bullseye-pointer.svg (100%) rename {client/src => src}/static/icons/light/bullseye.svg (100%) rename {client/src => src}/static/icons/light/burger-soda.svg (100%) rename {client/src => src}/static/icons/light/burn.svg (100%) rename {client/src => src}/static/icons/light/burrito.svg (100%) rename {client/src => src}/static/icons/light/bus-alt.svg (100%) rename {client/src => src}/static/icons/light/bus-school.svg (100%) rename {client/src => src}/static/icons/light/bus.svg (100%) rename {client/src => src}/static/icons/light/business-time.svg (100%) rename {client/src => src}/static/icons/light/cabinet-filing.svg (100%) rename {client/src => src}/static/icons/light/cactus.svg (100%) rename {client/src => src}/static/icons/light/calculator-alt.svg (100%) rename {client/src => src}/static/icons/light/calculator.svg (100%) rename {client/src => src}/static/icons/light/calendar-alt.svg (100%) rename {client/src => src}/static/icons/light/calendar-check.svg (100%) rename {client/src => src}/static/icons/light/calendar-day.svg (100%) rename {client/src => src}/static/icons/light/calendar-edit.svg (100%) rename {client/src => src}/static/icons/light/calendar-exclamation.svg (100%) rename {client/src => src}/static/icons/light/calendar-minus.svg (100%) rename {client/src => src}/static/icons/light/calendar-plus.svg (100%) rename {client/src => src}/static/icons/light/calendar-star.svg (100%) rename {client/src => src}/static/icons/light/calendar-times.svg (100%) rename {client/src => src}/static/icons/light/calendar-week.svg (100%) rename {client/src => src}/static/icons/light/calendar.svg (100%) rename {client/src => src}/static/icons/light/camcorder.svg (100%) rename {client/src => src}/static/icons/light/camera-alt.svg (100%) rename {client/src => src}/static/icons/light/camera-home.svg (100%) rename {client/src => src}/static/icons/light/camera-movie.svg (100%) rename {client/src => src}/static/icons/light/camera-polaroid.svg (100%) rename {client/src => src}/static/icons/light/camera-retro.svg (100%) rename {client/src => src}/static/icons/light/camera.svg (100%) rename {client/src => src}/static/icons/light/campfire.svg (100%) rename {client/src => src}/static/icons/light/campground.svg (100%) rename {client/src => src}/static/icons/light/candle-holder.svg (100%) rename {client/src => src}/static/icons/light/candy-cane.svg (100%) rename {client/src => src}/static/icons/light/candy-corn.svg (100%) rename {client/src => src}/static/icons/light/cannabis.svg (100%) rename {client/src => src}/static/icons/light/capsules.svg (100%) rename {client/src => src}/static/icons/light/car-alt.svg (100%) rename {client/src => src}/static/icons/light/car-battery.svg (100%) rename {client/src => src}/static/icons/light/car-building.svg (100%) rename {client/src => src}/static/icons/light/car-bump.svg (100%) rename {client/src => src}/static/icons/light/car-bus.svg (100%) rename {client/src => src}/static/icons/light/car-crash.svg (100%) rename {client/src => src}/static/icons/light/car-garage.svg (100%) rename {client/src => src}/static/icons/light/car-mechanic.svg (100%) rename {client/src => src}/static/icons/light/car-side.svg (100%) rename {client/src => src}/static/icons/light/car-tilt.svg (100%) rename {client/src => src}/static/icons/light/car-wash.svg (100%) rename {client/src => src}/static/icons/light/car.svg (100%) rename {client/src => src}/static/icons/light/caravan-alt.svg (100%) rename {client/src => src}/static/icons/light/caravan.svg (100%) rename {client/src => src}/static/icons/light/caret-circle-down.svg (100%) rename {client/src => src}/static/icons/light/caret-circle-left.svg (100%) rename {client/src => src}/static/icons/light/caret-circle-right.svg (100%) rename {client/src => src}/static/icons/light/caret-circle-up.svg (100%) rename {client/src => src}/static/icons/light/caret-down.svg (100%) rename {client/src => src}/static/icons/light/caret-left.svg (100%) rename {client/src => src}/static/icons/light/caret-right.svg (100%) rename {client/src => src}/static/icons/light/caret-square-down.svg (100%) rename {client/src => src}/static/icons/light/caret-square-left.svg (100%) rename {client/src => src}/static/icons/light/caret-square-right.svg (100%) rename {client/src => src}/static/icons/light/caret-square-up.svg (100%) rename {client/src => src}/static/icons/light/caret-up.svg (100%) rename {client/src => src}/static/icons/light/carrot.svg (100%) rename {client/src => src}/static/icons/light/cars.svg (100%) rename {client/src => src}/static/icons/light/cart-arrow-down.svg (100%) rename {client/src => src}/static/icons/light/cart-plus.svg (100%) rename {client/src => src}/static/icons/light/cash-register.svg (100%) rename {client/src => src}/static/icons/light/cassette-tape.svg (100%) rename {client/src => src}/static/icons/light/cat-space.svg (100%) rename {client/src => src}/static/icons/light/cat.svg (100%) rename {client/src => src}/static/icons/light/cauldron.svg (100%) rename {client/src => src}/static/icons/light/cctv.svg (100%) rename {client/src => src}/static/icons/light/certificate.svg (100%) rename {client/src => src}/static/icons/light/chair-office.svg (100%) rename {client/src => src}/static/icons/light/chair.svg (100%) rename {client/src => src}/static/icons/light/chalkboard-teacher.svg (100%) rename {client/src => src}/static/icons/light/chalkboard.svg (100%) rename {client/src => src}/static/icons/light/charging-station.svg (100%) rename {client/src => src}/static/icons/light/chart-area.svg (100%) rename {client/src => src}/static/icons/light/chart-bar.svg (100%) rename {client/src => src}/static/icons/light/chart-line-down.svg (100%) rename {client/src => src}/static/icons/light/chart-line.svg (100%) rename {client/src => src}/static/icons/light/chart-network.svg (100%) rename {client/src => src}/static/icons/light/chart-pie-alt.svg (100%) rename {client/src => src}/static/icons/light/chart-pie.svg (100%) rename {client/src => src}/static/icons/light/chart-scatter.svg (100%) rename {client/src => src}/static/icons/light/check-circle.svg (100%) rename {client/src => src}/static/icons/light/check-double.svg (100%) rename {client/src => src}/static/icons/light/check-square.svg (100%) rename {client/src => src}/static/icons/light/check.svg (100%) rename {client/src => src}/static/icons/light/cheese-swiss.svg (100%) rename {client/src => src}/static/icons/light/cheese.svg (100%) rename {client/src => src}/static/icons/light/cheeseburger.svg (100%) rename {client/src => src}/static/icons/light/chess-bishop-alt.svg (100%) rename {client/src => src}/static/icons/light/chess-bishop.svg (100%) rename {client/src => src}/static/icons/light/chess-board.svg (100%) rename {client/src => src}/static/icons/light/chess-clock-alt.svg (100%) rename {client/src => src}/static/icons/light/chess-clock.svg (100%) rename {client/src => src}/static/icons/light/chess-king-alt.svg (100%) rename {client/src => src}/static/icons/light/chess-king.svg (100%) rename {client/src => src}/static/icons/light/chess-knight-alt.svg (100%) rename {client/src => src}/static/icons/light/chess-knight.svg (100%) rename {client/src => src}/static/icons/light/chess-pawn-alt.svg (100%) rename {client/src => src}/static/icons/light/chess-pawn.svg (100%) rename {client/src => src}/static/icons/light/chess-queen-alt.svg (100%) rename {client/src => src}/static/icons/light/chess-queen.svg (100%) rename {client/src => src}/static/icons/light/chess-rook-alt.svg (100%) rename {client/src => src}/static/icons/light/chess-rook.svg (100%) rename {client/src => src}/static/icons/light/chess.svg (100%) rename {client/src => src}/static/icons/light/chevron-circle-down.svg (100%) rename {client/src => src}/static/icons/light/chevron-circle-left.svg (100%) rename {client/src => src}/static/icons/light/chevron-circle-right.svg (100%) rename {client/src => src}/static/icons/light/chevron-circle-up.svg (100%) rename {client/src => src}/static/icons/light/chevron-double-down.svg (100%) rename {client/src => src}/static/icons/light/chevron-double-left.svg (100%) rename {client/src => src}/static/icons/light/chevron-double-right.svg (100%) rename {client/src => src}/static/icons/light/chevron-double-up.svg (100%) rename {client/src => src}/static/icons/light/chevron-down.svg (100%) rename {client/src => src}/static/icons/light/chevron-left.svg (100%) rename {client/src => src}/static/icons/light/chevron-right.svg (100%) rename {client/src => src}/static/icons/light/chevron-square-down.svg (100%) rename {client/src => src}/static/icons/light/chevron-square-left.svg (100%) rename {client/src => src}/static/icons/light/chevron-square-right.svg (100%) rename {client/src => src}/static/icons/light/chevron-square-up.svg (100%) rename {client/src => src}/static/icons/light/chevron-up.svg (100%) rename {client/src => src}/static/icons/light/child.svg (100%) rename {client/src => src}/static/icons/light/chimney.svg (100%) rename {client/src => src}/static/icons/light/church.svg (100%) rename {client/src => src}/static/icons/light/circle-notch.svg (100%) rename {client/src => src}/static/icons/light/circle.svg (100%) rename {client/src => src}/static/icons/light/city.svg (100%) rename {client/src => src}/static/icons/light/clarinet.svg (100%) rename {client/src => src}/static/icons/light/claw-marks.svg (100%) rename {client/src => src}/static/icons/light/clinic-medical.svg (100%) rename {client/src => src}/static/icons/light/clipboard-check.svg (100%) rename {client/src => src}/static/icons/light/clipboard-list-check.svg (100%) rename {client/src => src}/static/icons/light/clipboard-list.svg (100%) rename {client/src => src}/static/icons/light/clipboard-prescription.svg (100%) rename {client/src => src}/static/icons/light/clipboard-user.svg (100%) rename {client/src => src}/static/icons/light/clipboard.svg (100%) rename {client/src => src}/static/icons/light/clock.svg (100%) rename {client/src => src}/static/icons/light/clone.svg (100%) rename {client/src => src}/static/icons/light/closed-captioning.svg (100%) rename {client/src => src}/static/icons/light/cloud-download-alt.svg (100%) rename {client/src => src}/static/icons/light/cloud-download.svg (100%) rename {client/src => src}/static/icons/light/cloud-drizzle.svg (100%) rename {client/src => src}/static/icons/light/cloud-hail-mixed.svg (100%) rename {client/src => src}/static/icons/light/cloud-hail.svg (100%) rename {client/src => src}/static/icons/light/cloud-meatball.svg (100%) rename {client/src => src}/static/icons/light/cloud-moon-rain.svg (100%) rename {client/src => src}/static/icons/light/cloud-moon.svg (100%) rename {client/src => src}/static/icons/light/cloud-music.svg (100%) rename {client/src => src}/static/icons/light/cloud-rain.svg (100%) rename {client/src => src}/static/icons/light/cloud-rainbow.svg (100%) rename {client/src => src}/static/icons/light/cloud-showers-heavy.svg (100%) rename {client/src => src}/static/icons/light/cloud-showers.svg (100%) rename {client/src => src}/static/icons/light/cloud-sleet.svg (100%) rename {client/src => src}/static/icons/light/cloud-snow.svg (100%) rename {client/src => src}/static/icons/light/cloud-sun-rain.svg (100%) rename {client/src => src}/static/icons/light/cloud-sun.svg (100%) rename {client/src => src}/static/icons/light/cloud-upload-alt.svg (100%) rename {client/src => src}/static/icons/light/cloud-upload.svg (100%) rename {client/src => src}/static/icons/light/cloud.svg (100%) rename {client/src => src}/static/icons/light/clouds-moon.svg (100%) rename {client/src => src}/static/icons/light/clouds-sun.svg (100%) rename {client/src => src}/static/icons/light/clouds.svg (100%) rename {client/src => src}/static/icons/light/club.svg (100%) rename {client/src => src}/static/icons/light/cocktail.svg (100%) rename {client/src => src}/static/icons/light/code-branch.svg (100%) rename {client/src => src}/static/icons/light/code-commit.svg (100%) rename {client/src => src}/static/icons/light/code-merge.svg (100%) rename {client/src => src}/static/icons/light/code.svg (100%) rename {client/src => src}/static/icons/light/coffee-pot.svg (100%) rename {client/src => src}/static/icons/light/coffee-togo.svg (100%) rename {client/src => src}/static/icons/light/coffee.svg (100%) rename {client/src => src}/static/icons/light/coffin.svg (100%) rename {client/src => src}/static/icons/light/cog.svg (100%) rename {client/src => src}/static/icons/light/cogs.svg (100%) rename {client/src => src}/static/icons/light/coin.svg (100%) rename {client/src => src}/static/icons/light/coins.svg (100%) rename {client/src => src}/static/icons/light/columns.svg (100%) rename {client/src => src}/static/icons/light/comet.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-check.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-dollar.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-dots.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-edit.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-exclamation.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-lines.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-medical.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-minus.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-music.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-plus.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-slash.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-smile.svg (100%) rename {client/src => src}/static/icons/light/comment-alt-times.svg (100%) rename {client/src => src}/static/icons/light/comment-alt.svg (100%) rename {client/src => src}/static/icons/light/comment-check.svg (100%) rename {client/src => src}/static/icons/light/comment-dollar.svg (100%) rename {client/src => src}/static/icons/light/comment-dots.svg (100%) rename {client/src => src}/static/icons/light/comment-edit.svg (100%) rename {client/src => src}/static/icons/light/comment-exclamation.svg (100%) rename {client/src => src}/static/icons/light/comment-lines.svg (100%) rename {client/src => src}/static/icons/light/comment-medical.svg (100%) rename {client/src => src}/static/icons/light/comment-minus.svg (100%) rename {client/src => src}/static/icons/light/comment-music.svg (100%) rename {client/src => src}/static/icons/light/comment-plus.svg (100%) rename {client/src => src}/static/icons/light/comment-slash.svg (100%) rename {client/src => src}/static/icons/light/comment-smile.svg (100%) rename {client/src => src}/static/icons/light/comment-times.svg (100%) rename {client/src => src}/static/icons/light/comment.svg (100%) rename {client/src => src}/static/icons/light/comments-alt-dollar.svg (100%) rename {client/src => src}/static/icons/light/comments-alt.svg (100%) rename {client/src => src}/static/icons/light/comments-dollar.svg (100%) rename {client/src => src}/static/icons/light/comments.svg (100%) rename {client/src => src}/static/icons/light/compact-disc.svg (100%) rename {client/src => src}/static/icons/light/compass-slash.svg (100%) rename {client/src => src}/static/icons/light/compass.svg (100%) rename {client/src => src}/static/icons/light/compress-alt.svg (100%) rename {client/src => src}/static/icons/light/compress-arrows-alt.svg (100%) rename {client/src => src}/static/icons/light/compress-wide.svg (100%) rename {client/src => src}/static/icons/light/compress.svg (100%) rename {client/src => src}/static/icons/light/computer-classic.svg (100%) rename {client/src => src}/static/icons/light/computer-speaker.svg (100%) rename {client/src => src}/static/icons/light/concierge-bell.svg (100%) rename {client/src => src}/static/icons/light/construction.svg (100%) rename {client/src => src}/static/icons/light/container-storage.svg (100%) rename {client/src => src}/static/icons/light/conveyor-belt-alt.svg (100%) rename {client/src => src}/static/icons/light/conveyor-belt.svg (100%) rename {client/src => src}/static/icons/light/cookie-bite.svg (100%) rename {client/src => src}/static/icons/light/cookie.svg (100%) rename {client/src => src}/static/icons/light/copy.svg (100%) rename {client/src => src}/static/icons/light/copyright.svg (100%) rename {client/src => src}/static/icons/light/corn.svg (100%) rename {client/src => src}/static/icons/light/couch.svg (100%) rename {client/src => src}/static/icons/light/cow.svg (100%) rename {client/src => src}/static/icons/light/cowbell-more.svg (100%) rename {client/src => src}/static/icons/light/cowbell.svg (100%) rename {client/src => src}/static/icons/light/credit-card-blank.svg (100%) rename {client/src => src}/static/icons/light/credit-card-front.svg (100%) rename {client/src => src}/static/icons/light/credit-card.svg (100%) rename {client/src => src}/static/icons/light/cricket.svg (100%) rename {client/src => src}/static/icons/light/croissant.svg (100%) rename {client/src => src}/static/icons/light/crop-alt.svg (100%) rename {client/src => src}/static/icons/light/crop.svg (100%) rename {client/src => src}/static/icons/light/cross.svg (100%) rename {client/src => src}/static/icons/light/crosshairs.svg (100%) rename {client/src => src}/static/icons/light/crow.svg (100%) rename {client/src => src}/static/icons/light/crown.svg (100%) rename {client/src => src}/static/icons/light/crutch.svg (100%) rename {client/src => src}/static/icons/light/crutches.svg (100%) rename {client/src => src}/static/icons/light/cube.svg (100%) rename {client/src => src}/static/icons/light/cubes.svg (100%) rename {client/src => src}/static/icons/light/curling.svg (100%) rename {client/src => src}/static/icons/light/cut.svg (100%) rename {client/src => src}/static/icons/light/dagger.svg (100%) rename {client/src => src}/static/icons/light/database.svg (100%) rename {client/src => src}/static/icons/light/deaf.svg (100%) rename {client/src => src}/static/icons/light/debug.svg (100%) rename {client/src => src}/static/icons/light/deer-rudolph.svg (100%) rename {client/src => src}/static/icons/light/deer.svg (100%) rename {client/src => src}/static/icons/light/democrat.svg (100%) rename {client/src => src}/static/icons/light/desktop-alt.svg (100%) rename {client/src => src}/static/icons/light/desktop.svg (100%) rename {client/src => src}/static/icons/light/dewpoint.svg (100%) rename {client/src => src}/static/icons/light/dharmachakra.svg (100%) rename {client/src => src}/static/icons/light/diagnoses.svg (100%) rename {client/src => src}/static/icons/light/diamond.svg (100%) rename {client/src => src}/static/icons/light/dice-d10.svg (100%) rename {client/src => src}/static/icons/light/dice-d12.svg (100%) rename {client/src => src}/static/icons/light/dice-d20.svg (100%) rename {client/src => src}/static/icons/light/dice-d4.svg (100%) rename {client/src => src}/static/icons/light/dice-d6.svg (100%) rename {client/src => src}/static/icons/light/dice-d8.svg (100%) rename {client/src => src}/static/icons/light/dice-five.svg (100%) rename {client/src => src}/static/icons/light/dice-four.svg (100%) rename {client/src => src}/static/icons/light/dice-one.svg (100%) rename {client/src => src}/static/icons/light/dice-six.svg (100%) rename {client/src => src}/static/icons/light/dice-three.svg (100%) rename {client/src => src}/static/icons/light/dice-two.svg (100%) rename {client/src => src}/static/icons/light/dice.svg (100%) rename {client/src => src}/static/icons/light/digging.svg (100%) rename {client/src => src}/static/icons/light/digital-tachograph.svg (100%) rename {client/src => src}/static/icons/light/diploma.svg (100%) rename {client/src => src}/static/icons/light/directions.svg (100%) rename {client/src => src}/static/icons/light/disc-drive.svg (100%) rename {client/src => src}/static/icons/light/disease.svg (100%) rename {client/src => src}/static/icons/light/divide.svg (100%) rename {client/src => src}/static/icons/light/dizzy.svg (100%) rename {client/src => src}/static/icons/light/dna.svg (100%) rename {client/src => src}/static/icons/light/do-not-enter.svg (100%) rename {client/src => src}/static/icons/light/dog-leashed.svg (100%) rename {client/src => src}/static/icons/light/dog.svg (100%) rename {client/src => src}/static/icons/light/dollar-sign.svg (100%) rename {client/src => src}/static/icons/light/dolly-empty.svg (100%) rename {client/src => src}/static/icons/light/dolly-flatbed-alt.svg (100%) rename {client/src => src}/static/icons/light/dolly-flatbed-empty.svg (100%) rename {client/src => src}/static/icons/light/dolly-flatbed.svg (100%) rename {client/src => src}/static/icons/light/dolly.svg (100%) rename {client/src => src}/static/icons/light/donate.svg (100%) rename {client/src => src}/static/icons/light/door-closed.svg (100%) rename {client/src => src}/static/icons/light/door-open.svg (100%) rename {client/src => src}/static/icons/light/dot-circle.svg (100%) rename {client/src => src}/static/icons/light/dove.svg (100%) rename {client/src => src}/static/icons/light/download.svg (100%) rename {client/src => src}/static/icons/light/drafting-compass.svg (100%) rename {client/src => src}/static/icons/light/dragon.svg (100%) rename {client/src => src}/static/icons/light/draw-circle.svg (100%) rename {client/src => src}/static/icons/light/draw-polygon.svg (100%) rename {client/src => src}/static/icons/light/draw-square.svg (100%) rename {client/src => src}/static/icons/light/dreidel.svg (100%) rename {client/src => src}/static/icons/light/drone-alt.svg (100%) rename {client/src => src}/static/icons/light/drone.svg (100%) rename {client/src => src}/static/icons/light/drum-steelpan.svg (100%) rename {client/src => src}/static/icons/light/drum.svg (100%) rename {client/src => src}/static/icons/light/drumstick-bite.svg (100%) rename {client/src => src}/static/icons/light/drumstick.svg (100%) rename {client/src => src}/static/icons/light/dryer-alt.svg (100%) rename {client/src => src}/static/icons/light/dryer.svg (100%) rename {client/src => src}/static/icons/light/duck.svg (100%) rename {client/src => src}/static/icons/light/dumbbell.svg (100%) rename {client/src => src}/static/icons/light/dumpster-fire.svg (100%) rename {client/src => src}/static/icons/light/dumpster.svg (100%) rename {client/src => src}/static/icons/light/dungeon.svg (100%) rename {client/src => src}/static/icons/light/ear-muffs.svg (100%) rename {client/src => src}/static/icons/light/ear.svg (100%) rename {client/src => src}/static/icons/light/eclipse-alt.svg (100%) rename {client/src => src}/static/icons/light/eclipse.svg (100%) rename {client/src => src}/static/icons/light/edit.svg (100%) rename {client/src => src}/static/icons/light/egg-fried.svg (100%) rename {client/src => src}/static/icons/light/egg.svg (100%) rename {client/src => src}/static/icons/light/eject.svg (100%) rename {client/src => src}/static/icons/light/elephant.svg (100%) rename {client/src => src}/static/icons/light/ellipsis-h-alt.svg (100%) rename {client/src => src}/static/icons/light/ellipsis-h.svg (100%) rename {client/src => src}/static/icons/light/ellipsis-v-alt.svg (100%) rename {client/src => src}/static/icons/light/ellipsis-v.svg (100%) rename {client/src => src}/static/icons/light/empty-set.svg (100%) rename {client/src => src}/static/icons/light/engine-warning.svg (100%) rename {client/src => src}/static/icons/light/envelope-open-dollar.svg (100%) rename {client/src => src}/static/icons/light/envelope-open-text.svg (100%) rename {client/src => src}/static/icons/light/envelope-open.svg (100%) rename {client/src => src}/static/icons/light/envelope-square.svg (100%) rename {client/src => src}/static/icons/light/envelope.svg (100%) rename {client/src => src}/static/icons/light/equals.svg (100%) rename {client/src => src}/static/icons/light/eraser.svg (100%) rename {client/src => src}/static/icons/light/ethernet.svg (100%) rename {client/src => src}/static/icons/light/euro-sign.svg (100%) rename {client/src => src}/static/icons/light/exchange-alt.svg (100%) rename {client/src => src}/static/icons/light/exchange.svg (100%) rename {client/src => src}/static/icons/light/exclamation-circle.svg (100%) rename {client/src => src}/static/icons/light/exclamation-square.svg (100%) rename {client/src => src}/static/icons/light/exclamation-triangle.svg (100%) rename {client/src => src}/static/icons/light/exclamation.svg (100%) rename {client/src => src}/static/icons/light/expand-alt.svg (100%) rename {client/src => src}/static/icons/light/expand-arrows-alt.svg (100%) rename {client/src => src}/static/icons/light/expand-arrows.svg (100%) rename {client/src => src}/static/icons/light/expand-wide.svg (100%) rename {client/src => src}/static/icons/light/expand.svg (100%) rename {client/src => src}/static/icons/light/external-link-alt.svg (100%) rename {client/src => src}/static/icons/light/external-link-square-alt.svg (100%) rename {client/src => src}/static/icons/light/external-link-square.svg (100%) rename {client/src => src}/static/icons/light/external-link.svg (100%) rename {client/src => src}/static/icons/light/eye-dropper.svg (100%) rename {client/src => src}/static/icons/light/eye-evil.svg (100%) rename {client/src => src}/static/icons/light/eye-slash.svg (100%) rename {client/src => src}/static/icons/light/eye.svg (100%) rename {client/src => src}/static/icons/light/fan-table.svg (100%) rename {client/src => src}/static/icons/light/fan.svg (100%) rename {client/src => src}/static/icons/light/farm.svg (100%) rename {client/src => src}/static/icons/light/fast-backward.svg (100%) rename {client/src => src}/static/icons/light/fast-forward.svg (100%) rename {client/src => src}/static/icons/light/faucet-drip.svg (100%) rename {client/src => src}/static/icons/light/faucet.svg (100%) rename {client/src => src}/static/icons/light/fax.svg (100%) rename {client/src => src}/static/icons/light/feather-alt.svg (100%) rename {client/src => src}/static/icons/light/feather.svg (100%) rename {client/src => src}/static/icons/light/female.svg (100%) rename {client/src => src}/static/icons/light/field-hockey.svg (100%) rename {client/src => src}/static/icons/light/fighter-jet.svg (100%) rename {client/src => src}/static/icons/light/file-alt.svg (100%) rename {client/src => src}/static/icons/light/file-archive.svg (100%) rename {client/src => src}/static/icons/light/file-audio.svg (100%) rename {client/src => src}/static/icons/light/file-certificate.svg (100%) rename {client/src => src}/static/icons/light/file-chart-line.svg (100%) rename {client/src => src}/static/icons/light/file-chart-pie.svg (100%) rename {client/src => src}/static/icons/light/file-check.svg (100%) rename {client/src => src}/static/icons/light/file-code.svg (100%) rename {client/src => src}/static/icons/light/file-contract.svg (100%) rename {client/src => src}/static/icons/light/file-csv.svg (100%) rename {client/src => src}/static/icons/light/file-download.svg (100%) rename {client/src => src}/static/icons/light/file-edit.svg (100%) rename {client/src => src}/static/icons/light/file-excel.svg (100%) rename {client/src => src}/static/icons/light/file-exclamation.svg (100%) rename {client/src => src}/static/icons/light/file-export.svg (100%) rename {client/src => src}/static/icons/light/file-image.svg (100%) rename {client/src => src}/static/icons/light/file-import.svg (100%) rename {client/src => src}/static/icons/light/file-invoice-dollar.svg (100%) rename {client/src => src}/static/icons/light/file-invoice.svg (100%) rename {client/src => src}/static/icons/light/file-medical-alt.svg (100%) rename {client/src => src}/static/icons/light/file-medical.svg (100%) rename {client/src => src}/static/icons/light/file-minus.svg (100%) rename {client/src => src}/static/icons/light/file-music.svg (100%) rename {client/src => src}/static/icons/light/file-pdf.svg (100%) rename {client/src => src}/static/icons/light/file-plus.svg (100%) rename {client/src => src}/static/icons/light/file-powerpoint.svg (100%) rename {client/src => src}/static/icons/light/file-prescription.svg (100%) rename {client/src => src}/static/icons/light/file-search.svg (100%) rename {client/src => src}/static/icons/light/file-signature.svg (100%) rename {client/src => src}/static/icons/light/file-spreadsheet.svg (100%) rename {client/src => src}/static/icons/light/file-times.svg (100%) rename {client/src => src}/static/icons/light/file-upload.svg (100%) rename {client/src => src}/static/icons/light/file-user.svg (100%) rename {client/src => src}/static/icons/light/file-video.svg (100%) rename {client/src => src}/static/icons/light/file-word.svg (100%) rename {client/src => src}/static/icons/light/file.svg (100%) rename {client/src => src}/static/icons/light/files-medical.svg (100%) rename {client/src => src}/static/icons/light/fill-drip.svg (100%) rename {client/src => src}/static/icons/light/fill.svg (100%) rename {client/src => src}/static/icons/light/film-alt.svg (100%) rename {client/src => src}/static/icons/light/film-canister.svg (100%) rename {client/src => src}/static/icons/light/film.svg (100%) rename {client/src => src}/static/icons/light/filter.svg (100%) rename {client/src => src}/static/icons/light/fingerprint.svg (100%) rename {client/src => src}/static/icons/light/fire-alt.svg (100%) rename {client/src => src}/static/icons/light/fire-extinguisher.svg (100%) rename {client/src => src}/static/icons/light/fire-smoke.svg (100%) rename {client/src => src}/static/icons/light/fire.svg (100%) rename {client/src => src}/static/icons/light/fireplace.svg (100%) rename {client/src => src}/static/icons/light/first-aid.svg (100%) rename {client/src => src}/static/icons/light/fish-cooked.svg (100%) rename {client/src => src}/static/icons/light/fish.svg (100%) rename {client/src => src}/static/icons/light/fist-raised.svg (100%) rename {client/src => src}/static/icons/light/flag-alt.svg (100%) rename {client/src => src}/static/icons/light/flag-checkered.svg (100%) rename {client/src => src}/static/icons/light/flag-usa.svg (100%) rename {client/src => src}/static/icons/light/flag.svg (100%) rename {client/src => src}/static/icons/light/flame.svg (100%) rename {client/src => src}/static/icons/light/flashlight.svg (100%) rename {client/src => src}/static/icons/light/flask-poison.svg (100%) rename {client/src => src}/static/icons/light/flask-potion.svg (100%) rename {client/src => src}/static/icons/light/flask.svg (100%) rename {client/src => src}/static/icons/light/flower-daffodil.svg (100%) rename {client/src => src}/static/icons/light/flower-tulip.svg (100%) rename {client/src => src}/static/icons/light/flower.svg (100%) rename {client/src => src}/static/icons/light/flushed.svg (100%) rename {client/src => src}/static/icons/light/flute.svg (100%) rename {client/src => src}/static/icons/light/flux-capacitor.svg (100%) rename {client/src => src}/static/icons/light/fog.svg (100%) rename {client/src => src}/static/icons/light/folder-minus.svg (100%) rename {client/src => src}/static/icons/light/folder-open.svg (100%) rename {client/src => src}/static/icons/light/folder-plus.svg (100%) rename {client/src => src}/static/icons/light/folder-times.svg (100%) rename {client/src => src}/static/icons/light/folder-tree.svg (100%) rename {client/src => src}/static/icons/light/folder.svg (100%) rename {client/src => src}/static/icons/light/folders.svg (100%) rename {client/src => src}/static/icons/light/font-awesome-logo-full.svg (100%) rename {client/src => src}/static/icons/light/font-case.svg (100%) rename {client/src => src}/static/icons/light/font.svg (100%) rename {client/src => src}/static/icons/light/football-ball.svg (100%) rename {client/src => src}/static/icons/light/football-helmet.svg (100%) rename {client/src => src}/static/icons/light/forklift.svg (100%) rename {client/src => src}/static/icons/light/forward.svg (100%) rename {client/src => src}/static/icons/light/fragile.svg (100%) rename {client/src => src}/static/icons/light/french-fries.svg (100%) rename {client/src => src}/static/icons/light/frog.svg (100%) rename {client/src => src}/static/icons/light/frosty-head.svg (100%) rename {client/src => src}/static/icons/light/frown-open.svg (100%) rename {client/src => src}/static/icons/light/frown.svg (100%) rename {client/src => src}/static/icons/light/function.svg (100%) rename {client/src => src}/static/icons/light/funnel-dollar.svg (100%) rename {client/src => src}/static/icons/light/futbol.svg (100%) rename {client/src => src}/static/icons/light/galaxy.svg (100%) rename {client/src => src}/static/icons/light/game-board-alt.svg (100%) rename {client/src => src}/static/icons/light/game-board.svg (100%) rename {client/src => src}/static/icons/light/game-console-handheld.svg (100%) rename {client/src => src}/static/icons/light/gamepad-alt.svg (100%) rename {client/src => src}/static/icons/light/gamepad.svg (100%) rename {client/src => src}/static/icons/light/garage-car.svg (100%) rename {client/src => src}/static/icons/light/garage-open.svg (100%) rename {client/src => src}/static/icons/light/garage.svg (100%) rename {client/src => src}/static/icons/light/gas-pump-slash.svg (100%) rename {client/src => src}/static/icons/light/gas-pump.svg (100%) rename {client/src => src}/static/icons/light/gavel.svg (100%) rename {client/src => src}/static/icons/light/gem.svg (100%) rename {client/src => src}/static/icons/light/genderless.svg (100%) rename {client/src => src}/static/icons/light/ghost.svg (100%) rename {client/src => src}/static/icons/light/gift-card.svg (100%) rename {client/src => src}/static/icons/light/gift.svg (100%) rename {client/src => src}/static/icons/light/gifts.svg (100%) rename {client/src => src}/static/icons/light/gingerbread-man.svg (100%) rename {client/src => src}/static/icons/light/glass-champagne.svg (100%) rename {client/src => src}/static/icons/light/glass-cheers.svg (100%) rename {client/src => src}/static/icons/light/glass-citrus.svg (100%) rename {client/src => src}/static/icons/light/glass-martini-alt.svg (100%) rename {client/src => src}/static/icons/light/glass-martini.svg (100%) rename {client/src => src}/static/icons/light/glass-whiskey-rocks.svg (100%) rename {client/src => src}/static/icons/light/glass-whiskey.svg (100%) rename {client/src => src}/static/icons/light/glass.svg (100%) rename {client/src => src}/static/icons/light/glasses-alt.svg (100%) rename {client/src => src}/static/icons/light/glasses.svg (100%) rename {client/src => src}/static/icons/light/globe-africa.svg (100%) rename {client/src => src}/static/icons/light/globe-americas.svg (100%) rename {client/src => src}/static/icons/light/globe-asia.svg (100%) rename {client/src => src}/static/icons/light/globe-europe.svg (100%) rename {client/src => src}/static/icons/light/globe-snow.svg (100%) rename {client/src => src}/static/icons/light/globe-stand.svg (100%) rename {client/src => src}/static/icons/light/globe.svg (100%) rename {client/src => src}/static/icons/light/golf-ball.svg (100%) rename {client/src => src}/static/icons/light/golf-club.svg (100%) rename {client/src => src}/static/icons/light/gopuram.svg (100%) rename {client/src => src}/static/icons/light/graduation-cap.svg (100%) rename {client/src => src}/static/icons/light/gramophone.svg (100%) rename {client/src => src}/static/icons/light/greater-than-equal.svg (100%) rename {client/src => src}/static/icons/light/greater-than.svg (100%) rename {client/src => src}/static/icons/light/grimace.svg (100%) rename {client/src => src}/static/icons/light/grin-alt.svg (100%) rename {client/src => src}/static/icons/light/grin-beam-sweat.svg (100%) rename {client/src => src}/static/icons/light/grin-beam.svg (100%) rename {client/src => src}/static/icons/light/grin-hearts.svg (100%) rename {client/src => src}/static/icons/light/grin-squint-tears.svg (100%) rename {client/src => src}/static/icons/light/grin-squint.svg (100%) rename {client/src => src}/static/icons/light/grin-stars.svg (100%) rename {client/src => src}/static/icons/light/grin-tears.svg (100%) rename {client/src => src}/static/icons/light/grin-tongue-squint.svg (100%) rename {client/src => src}/static/icons/light/grin-tongue-wink.svg (100%) rename {client/src => src}/static/icons/light/grin-tongue.svg (100%) rename {client/src => src}/static/icons/light/grin-wink.svg (100%) rename {client/src => src}/static/icons/light/grin.svg (100%) rename {client/src => src}/static/icons/light/grip-horizontal.svg (100%) rename {client/src => src}/static/icons/light/grip-lines-vertical.svg (100%) rename {client/src => src}/static/icons/light/grip-lines.svg (100%) rename {client/src => src}/static/icons/light/grip-vertical.svg (100%) rename {client/src => src}/static/icons/light/guitar-electric.svg (100%) rename {client/src => src}/static/icons/light/guitar.svg (100%) rename {client/src => src}/static/icons/light/guitars.svg (100%) rename {client/src => src}/static/icons/light/h-square.svg (100%) rename {client/src => src}/static/icons/light/h1.svg (100%) rename {client/src => src}/static/icons/light/h2.svg (100%) rename {client/src => src}/static/icons/light/h3.svg (100%) rename {client/src => src}/static/icons/light/h4.svg (100%) rename {client/src => src}/static/icons/light/hamburger.svg (100%) rename {client/src => src}/static/icons/light/hammer-war.svg (100%) rename {client/src => src}/static/icons/light/hammer.svg (100%) rename {client/src => src}/static/icons/light/hamsa.svg (100%) rename {client/src => src}/static/icons/light/hand-heart.svg (100%) rename {client/src => src}/static/icons/light/hand-holding-box.svg (100%) rename {client/src => src}/static/icons/light/hand-holding-heart.svg (100%) rename {client/src => src}/static/icons/light/hand-holding-magic.svg (100%) rename {client/src => src}/static/icons/light/hand-holding-seedling.svg (100%) rename {client/src => src}/static/icons/light/hand-holding-usd.svg (100%) rename {client/src => src}/static/icons/light/hand-holding-water.svg (100%) rename {client/src => src}/static/icons/light/hand-holding.svg (100%) rename {client/src => src}/static/icons/light/hand-lizard.svg (100%) rename {client/src => src}/static/icons/light/hand-middle-finger.svg (100%) rename {client/src => src}/static/icons/light/hand-paper.svg (100%) rename {client/src => src}/static/icons/light/hand-peace.svg (100%) rename {client/src => src}/static/icons/light/hand-point-down.svg (100%) rename {client/src => src}/static/icons/light/hand-point-left.svg (100%) rename {client/src => src}/static/icons/light/hand-point-right.svg (100%) rename {client/src => src}/static/icons/light/hand-point-up.svg (100%) rename {client/src => src}/static/icons/light/hand-pointer.svg (100%) rename {client/src => src}/static/icons/light/hand-receiving.svg (100%) rename {client/src => src}/static/icons/light/hand-rock.svg (100%) rename {client/src => src}/static/icons/light/hand-scissors.svg (100%) rename {client/src => src}/static/icons/light/hand-spock.svg (100%) rename {client/src => src}/static/icons/light/hands-heart.svg (100%) rename {client/src => src}/static/icons/light/hands-helping.svg (100%) rename {client/src => src}/static/icons/light/hands-usd.svg (100%) rename {client/src => src}/static/icons/light/hands.svg (100%) rename {client/src => src}/static/icons/light/handshake-alt.svg (100%) rename {client/src => src}/static/icons/light/handshake.svg (100%) rename {client/src => src}/static/icons/light/hanukiah.svg (100%) rename {client/src => src}/static/icons/light/hard-hat.svg (100%) rename {client/src => src}/static/icons/light/hashtag.svg (100%) rename {client/src => src}/static/icons/light/hat-chef.svg (100%) rename {client/src => src}/static/icons/light/hat-cowboy-side.svg (100%) rename {client/src => src}/static/icons/light/hat-cowboy.svg (100%) rename {client/src => src}/static/icons/light/hat-santa.svg (100%) rename {client/src => src}/static/icons/light/hat-winter.svg (100%) rename {client/src => src}/static/icons/light/hat-witch.svg (100%) rename {client/src => src}/static/icons/light/hat-wizard.svg (100%) rename {client/src => src}/static/icons/light/hdd.svg (100%) rename {client/src => src}/static/icons/light/head-side-brain.svg (100%) rename {client/src => src}/static/icons/light/head-side-headphones.svg (100%) rename {client/src => src}/static/icons/light/head-side-medical.svg (100%) rename {client/src => src}/static/icons/light/head-side.svg (100%) rename {client/src => src}/static/icons/light/head-vr.svg (100%) rename {client/src => src}/static/icons/light/heading.svg (100%) rename {client/src => src}/static/icons/light/headphones-alt.svg (100%) rename {client/src => src}/static/icons/light/headphones.svg (100%) rename {client/src => src}/static/icons/light/headset.svg (100%) rename {client/src => src}/static/icons/light/heart-broken.svg (100%) rename {client/src => src}/static/icons/light/heart-circle.svg (100%) rename {client/src => src}/static/icons/light/heart-rate.svg (100%) rename {client/src => src}/static/icons/light/heart-square.svg (100%) rename {client/src => src}/static/icons/light/heart.svg (100%) rename {client/src => src}/static/icons/light/heartbeat.svg (100%) rename {client/src => src}/static/icons/light/heat.svg (100%) rename {client/src => src}/static/icons/light/helicopter.svg (100%) rename {client/src => src}/static/icons/light/helmet-battle.svg (100%) rename {client/src => src}/static/icons/light/hexagon.svg (100%) rename {client/src => src}/static/icons/light/highlighter.svg (100%) rename {client/src => src}/static/icons/light/hiking.svg (100%) rename {client/src => src}/static/icons/light/hippo.svg (100%) rename {client/src => src}/static/icons/light/history.svg (100%) rename {client/src => src}/static/icons/light/hockey-mask.svg (100%) rename {client/src => src}/static/icons/light/hockey-puck.svg (100%) rename {client/src => src}/static/icons/light/hockey-sticks.svg (100%) rename {client/src => src}/static/icons/light/holly-berry.svg (100%) rename {client/src => src}/static/icons/light/home-alt.svg (100%) rename {client/src => src}/static/icons/light/home-heart.svg (100%) rename {client/src => src}/static/icons/light/home-lg-alt.svg (100%) rename {client/src => src}/static/icons/light/home-lg.svg (100%) rename {client/src => src}/static/icons/light/home.svg (100%) rename {client/src => src}/static/icons/light/hood-cloak.svg (100%) rename {client/src => src}/static/icons/light/horizontal-rule.svg (100%) rename {client/src => src}/static/icons/light/horse-head.svg (100%) rename {client/src => src}/static/icons/light/horse-saddle.svg (100%) rename {client/src => src}/static/icons/light/horse.svg (100%) rename {client/src => src}/static/icons/light/hospital-alt.svg (100%) rename {client/src => src}/static/icons/light/hospital-symbol.svg (100%) rename {client/src => src}/static/icons/light/hospital-user.svg (100%) rename {client/src => src}/static/icons/light/hospital.svg (100%) rename {client/src => src}/static/icons/light/hospitals.svg (100%) rename {client/src => src}/static/icons/light/hot-tub.svg (100%) rename {client/src => src}/static/icons/light/hotdog.svg (100%) rename {client/src => src}/static/icons/light/hotel.svg (100%) rename {client/src => src}/static/icons/light/hourglass-end.svg (100%) rename {client/src => src}/static/icons/light/hourglass-half.svg (100%) rename {client/src => src}/static/icons/light/hourglass-start.svg (100%) rename {client/src => src}/static/icons/light/hourglass.svg (100%) rename {client/src => src}/static/icons/light/house-damage.svg (100%) rename {client/src => src}/static/icons/light/house-day.svg (100%) rename {client/src => src}/static/icons/light/house-flood.svg (100%) rename {client/src => src}/static/icons/light/house-leave.svg (100%) rename {client/src => src}/static/icons/light/house-night.svg (100%) rename {client/src => src}/static/icons/light/house-return.svg (100%) rename {client/src => src}/static/icons/light/house-signal.svg (100%) rename {client/src => src}/static/icons/light/house.svg (100%) rename {client/src => src}/static/icons/light/hryvnia.svg (100%) rename {client/src => src}/static/icons/light/humidity.svg (100%) rename {client/src => src}/static/icons/light/hurricane.svg (100%) rename {client/src => src}/static/icons/light/i-cursor.svg (100%) rename {client/src => src}/static/icons/light/ice-cream.svg (100%) rename {client/src => src}/static/icons/light/ice-skate.svg (100%) rename {client/src => src}/static/icons/light/icicles.svg (100%) rename {client/src => src}/static/icons/light/icons-alt.svg (100%) rename {client/src => src}/static/icons/light/icons.svg (100%) rename {client/src => src}/static/icons/light/id-badge.svg (100%) rename {client/src => src}/static/icons/light/id-card-alt.svg (100%) rename {client/src => src}/static/icons/light/id-card.svg (100%) rename {client/src => src}/static/icons/light/igloo.svg (100%) rename {client/src => src}/static/icons/light/image-polaroid.svg (100%) rename {client/src => src}/static/icons/light/image.svg (100%) rename {client/src => src}/static/icons/light/images.svg (100%) rename {client/src => src}/static/icons/light/inbox-in.svg (100%) rename {client/src => src}/static/icons/light/inbox-out.svg (100%) rename {client/src => src}/static/icons/light/inbox.svg (100%) rename {client/src => src}/static/icons/light/indent.svg (100%) rename {client/src => src}/static/icons/light/industry-alt.svg (100%) rename {client/src => src}/static/icons/light/industry.svg (100%) rename {client/src => src}/static/icons/light/infinity.svg (100%) rename {client/src => src}/static/icons/light/info-circle.svg (100%) rename {client/src => src}/static/icons/light/info-square.svg (100%) rename {client/src => src}/static/icons/light/info.svg (100%) rename {client/src => src}/static/icons/light/inhaler.svg (100%) rename {client/src => src}/static/icons/light/integral.svg (100%) rename {client/src => src}/static/icons/light/intersection.svg (100%) rename {client/src => src}/static/icons/light/inventory.svg (100%) rename {client/src => src}/static/icons/light/island-tropical.svg (100%) rename {client/src => src}/static/icons/light/italic.svg (100%) rename {client/src => src}/static/icons/light/jack-o-lantern.svg (100%) rename {client/src => src}/static/icons/light/jedi.svg (100%) rename {client/src => src}/static/icons/light/joint.svg (100%) rename {client/src => src}/static/icons/light/journal-whills.svg (100%) rename {client/src => src}/static/icons/light/joystick.svg (100%) rename {client/src => src}/static/icons/light/jug.svg (100%) rename {client/src => src}/static/icons/light/kaaba.svg (100%) rename {client/src => src}/static/icons/light/kazoo.svg (100%) rename {client/src => src}/static/icons/light/kerning.svg (100%) rename {client/src => src}/static/icons/light/key-skeleton.svg (100%) rename {client/src => src}/static/icons/light/key.svg (100%) rename {client/src => src}/static/icons/light/keyboard.svg (100%) rename {client/src => src}/static/icons/light/keynote.svg (100%) rename {client/src => src}/static/icons/light/khanda.svg (100%) rename {client/src => src}/static/icons/light/kidneys.svg (100%) rename {client/src => src}/static/icons/light/kiss-beam.svg (100%) rename {client/src => src}/static/icons/light/kiss-wink-heart.svg (100%) rename {client/src => src}/static/icons/light/kiss.svg (100%) rename {client/src => src}/static/icons/light/kite.svg (100%) rename {client/src => src}/static/icons/light/kiwi-bird.svg (100%) rename {client/src => src}/static/icons/light/knife-kitchen.svg (100%) rename {client/src => src}/static/icons/light/lambda.svg (100%) rename {client/src => src}/static/icons/light/lamp-desk.svg (100%) rename {client/src => src}/static/icons/light/lamp-floor.svg (100%) rename {client/src => src}/static/icons/light/lamp.svg (100%) rename {client/src => src}/static/icons/light/landmark-alt.svg (100%) rename {client/src => src}/static/icons/light/landmark.svg (100%) rename {client/src => src}/static/icons/light/language.svg (100%) rename {client/src => src}/static/icons/light/laptop-code.svg (100%) rename {client/src => src}/static/icons/light/laptop-medical.svg (100%) rename {client/src => src}/static/icons/light/laptop.svg (100%) rename {client/src => src}/static/icons/light/lasso.svg (100%) rename {client/src => src}/static/icons/light/laugh-beam.svg (100%) rename {client/src => src}/static/icons/light/laugh-squint.svg (100%) rename {client/src => src}/static/icons/light/laugh-wink.svg (100%) rename {client/src => src}/static/icons/light/laugh.svg (100%) rename {client/src => src}/static/icons/light/layer-group.svg (100%) rename {client/src => src}/static/icons/light/layer-minus.svg (100%) rename {client/src => src}/static/icons/light/layer-plus.svg (100%) rename {client/src => src}/static/icons/light/leaf-heart.svg (100%) rename {client/src => src}/static/icons/light/leaf-maple.svg (100%) rename {client/src => src}/static/icons/light/leaf-oak.svg (100%) rename {client/src => src}/static/icons/light/leaf.svg (100%) rename {client/src => src}/static/icons/light/lemon.svg (100%) rename {client/src => src}/static/icons/light/less-than-equal.svg (100%) rename {client/src => src}/static/icons/light/less-than.svg (100%) rename {client/src => src}/static/icons/light/level-down-alt.svg (100%) rename {client/src => src}/static/icons/light/level-down.svg (100%) rename {client/src => src}/static/icons/light/level-up-alt.svg (100%) rename {client/src => src}/static/icons/light/level-up.svg (100%) rename {client/src => src}/static/icons/light/life-ring.svg (100%) rename {client/src => src}/static/icons/light/light-ceiling.svg (100%) rename {client/src => src}/static/icons/light/light-switch-off.svg (100%) rename {client/src => src}/static/icons/light/light-switch-on.svg (100%) rename {client/src => src}/static/icons/light/light-switch.svg (100%) rename {client/src => src}/static/icons/light/lightbulb-dollar.svg (100%) rename {client/src => src}/static/icons/light/lightbulb-exclamation.svg (100%) rename {client/src => src}/static/icons/light/lightbulb-on.svg (100%) rename {client/src => src}/static/icons/light/lightbulb-slash.svg (100%) rename {client/src => src}/static/icons/light/lightbulb.svg (100%) rename {client/src => src}/static/icons/light/lights-holiday.svg (100%) rename {client/src => src}/static/icons/light/line-columns.svg (100%) rename {client/src => src}/static/icons/light/line-height.svg (100%) rename {client/src => src}/static/icons/light/link.svg (100%) rename {client/src => src}/static/icons/light/lips.svg (100%) rename {client/src => src}/static/icons/light/lira-sign.svg (100%) rename {client/src => src}/static/icons/light/list-alt.svg (100%) rename {client/src => src}/static/icons/light/list-music.svg (100%) rename {client/src => src}/static/icons/light/list-ol.svg (100%) rename {client/src => src}/static/icons/light/list-ul.svg (100%) rename {client/src => src}/static/icons/light/list.svg (100%) rename {client/src => src}/static/icons/light/location-arrow.svg (100%) rename {client/src => src}/static/icons/light/location-circle.svg (100%) rename {client/src => src}/static/icons/light/location-slash.svg (100%) rename {client/src => src}/static/icons/light/location.svg (100%) rename {client/src => src}/static/icons/light/lock-alt.svg (100%) rename {client/src => src}/static/icons/light/lock-open-alt.svg (100%) rename {client/src => src}/static/icons/light/lock-open.svg (100%) rename {client/src => src}/static/icons/light/lock.svg (100%) rename {client/src => src}/static/icons/light/long-arrow-alt-down.svg (100%) rename {client/src => src}/static/icons/light/long-arrow-alt-left.svg (100%) rename {client/src => src}/static/icons/light/long-arrow-alt-right.svg (100%) rename {client/src => src}/static/icons/light/long-arrow-alt-up.svg (100%) rename {client/src => src}/static/icons/light/long-arrow-down.svg (100%) rename {client/src => src}/static/icons/light/long-arrow-left.svg (100%) rename {client/src => src}/static/icons/light/long-arrow-right.svg (100%) rename {client/src => src}/static/icons/light/long-arrow-up.svg (100%) rename {client/src => src}/static/icons/light/loveseat.svg (100%) rename {client/src => src}/static/icons/light/low-vision.svg (100%) rename {client/src => src}/static/icons/light/luchador.svg (100%) rename {client/src => src}/static/icons/light/luggage-cart.svg (100%) rename {client/src => src}/static/icons/light/lungs.svg (100%) rename {client/src => src}/static/icons/light/mace.svg (100%) rename {client/src => src}/static/icons/light/magic.svg (100%) rename {client/src => src}/static/icons/light/magnet.svg (100%) rename {client/src => src}/static/icons/light/mail-bulk.svg (100%) rename {client/src => src}/static/icons/light/mailbox.svg (100%) rename {client/src => src}/static/icons/light/male.svg (100%) rename {client/src => src}/static/icons/light/mandolin.svg (100%) rename {client/src => src}/static/icons/light/map-marked-alt.svg (100%) rename {client/src => src}/static/icons/light/map-marked.svg (100%) rename {client/src => src}/static/icons/light/map-marker-alt-slash.svg (100%) rename {client/src => src}/static/icons/light/map-marker-alt.svg (100%) rename {client/src => src}/static/icons/light/map-marker-check.svg (100%) rename {client/src => src}/static/icons/light/map-marker-edit.svg (100%) rename {client/src => src}/static/icons/light/map-marker-exclamation.svg (100%) rename {client/src => src}/static/icons/light/map-marker-minus.svg (100%) rename {client/src => src}/static/icons/light/map-marker-plus.svg (100%) rename {client/src => src}/static/icons/light/map-marker-question.svg (100%) rename {client/src => src}/static/icons/light/map-marker-slash.svg (100%) rename {client/src => src}/static/icons/light/map-marker-smile.svg (100%) rename {client/src => src}/static/icons/light/map-marker-times.svg (100%) rename {client/src => src}/static/icons/light/map-marker.svg (100%) rename {client/src => src}/static/icons/light/map-pin.svg (100%) rename {client/src => src}/static/icons/light/map-signs.svg (100%) rename {client/src => src}/static/icons/light/map.svg (100%) rename {client/src => src}/static/icons/light/marker.svg (100%) rename {client/src => src}/static/icons/light/mars-double.svg (100%) rename {client/src => src}/static/icons/light/mars-stroke-h.svg (100%) rename {client/src => src}/static/icons/light/mars-stroke-v.svg (100%) rename {client/src => src}/static/icons/light/mars-stroke.svg (100%) rename {client/src => src}/static/icons/light/mars.svg (100%) rename {client/src => src}/static/icons/light/mask.svg (100%) rename {client/src => src}/static/icons/light/meat.svg (100%) rename {client/src => src}/static/icons/light/medal.svg (100%) rename {client/src => src}/static/icons/light/medkit.svg (100%) rename {client/src => src}/static/icons/light/megaphone.svg (100%) rename {client/src => src}/static/icons/light/meh-blank.svg (100%) rename {client/src => src}/static/icons/light/meh-rolling-eyes.svg (100%) rename {client/src => src}/static/icons/light/meh.svg (100%) rename {client/src => src}/static/icons/light/memory.svg (100%) rename {client/src => src}/static/icons/light/menorah.svg (100%) rename {client/src => src}/static/icons/light/mercury.svg (100%) rename {client/src => src}/static/icons/light/meteor.svg (100%) rename {client/src => src}/static/icons/light/microchip.svg (100%) rename {client/src => src}/static/icons/light/microphone-alt-slash.svg (100%) rename {client/src => src}/static/icons/light/microphone-alt.svg (100%) rename {client/src => src}/static/icons/light/microphone-slash.svg (100%) rename {client/src => src}/static/icons/light/microphone-stand.svg (100%) rename {client/src => src}/static/icons/light/microphone.svg (100%) rename {client/src => src}/static/icons/light/microscope.svg (100%) rename {client/src => src}/static/icons/light/microwave.svg (100%) rename {client/src => src}/static/icons/light/mind-share.svg (100%) rename {client/src => src}/static/icons/light/minus-circle.svg (100%) rename {client/src => src}/static/icons/light/minus-hexagon.svg (100%) rename {client/src => src}/static/icons/light/minus-octagon.svg (100%) rename {client/src => src}/static/icons/light/minus-square.svg (100%) rename {client/src => src}/static/icons/light/minus.svg (100%) rename {client/src => src}/static/icons/light/mistletoe.svg (100%) rename {client/src => src}/static/icons/light/mitten.svg (100%) rename {client/src => src}/static/icons/light/mobile-alt.svg (100%) rename {client/src => src}/static/icons/light/mobile-android-alt.svg (100%) rename {client/src => src}/static/icons/light/mobile-android.svg (100%) rename {client/src => src}/static/icons/light/mobile.svg (100%) rename {client/src => src}/static/icons/light/money-bill-alt.svg (100%) rename {client/src => src}/static/icons/light/money-bill-wave-alt.svg (100%) rename {client/src => src}/static/icons/light/money-bill-wave.svg (100%) rename {client/src => src}/static/icons/light/money-bill.svg (100%) rename {client/src => src}/static/icons/light/money-check-alt.svg (100%) rename {client/src => src}/static/icons/light/money-check-edit-alt.svg (100%) rename {client/src => src}/static/icons/light/money-check-edit.svg (100%) rename {client/src => src}/static/icons/light/money-check.svg (100%) rename {client/src => src}/static/icons/light/monitor-heart-rate.svg (100%) rename {client/src => src}/static/icons/light/monkey.svg (100%) rename {client/src => src}/static/icons/light/monument.svg (100%) rename {client/src => src}/static/icons/light/moon-cloud.svg (100%) rename {client/src => src}/static/icons/light/moon-stars.svg (100%) rename {client/src => src}/static/icons/light/moon.svg (100%) rename {client/src => src}/static/icons/light/mortar-pestle.svg (100%) rename {client/src => src}/static/icons/light/mosque.svg (100%) rename {client/src => src}/static/icons/light/motorcycle.svg (100%) rename {client/src => src}/static/icons/light/mountain.svg (100%) rename {client/src => src}/static/icons/light/mountains.svg (100%) rename {client/src => src}/static/icons/light/mouse-alt.svg (100%) rename {client/src => src}/static/icons/light/mouse-pointer.svg (100%) rename {client/src => src}/static/icons/light/mouse.svg (100%) rename {client/src => src}/static/icons/light/mp3-player.svg (100%) rename {client/src => src}/static/icons/light/mug-hot.svg (100%) rename {client/src => src}/static/icons/light/mug-marshmallows.svg (100%) rename {client/src => src}/static/icons/light/mug-tea.svg (100%) rename {client/src => src}/static/icons/light/mug.svg (100%) rename {client/src => src}/static/icons/light/music-alt-slash.svg (100%) rename {client/src => src}/static/icons/light/music-alt.svg (100%) rename {client/src => src}/static/icons/light/music-slash.svg (100%) rename {client/src => src}/static/icons/light/music.svg (100%) rename {client/src => src}/static/icons/light/narwhal.svg (100%) rename {client/src => src}/static/icons/light/network-wired.svg (100%) rename {client/src => src}/static/icons/light/neuter.svg (100%) rename {client/src => src}/static/icons/light/newspaper.svg (100%) rename {client/src => src}/static/icons/light/not-equal.svg (100%) rename {client/src => src}/static/icons/light/notes-medical.svg (100%) rename {client/src => src}/static/icons/light/object-group.svg (100%) rename {client/src => src}/static/icons/light/object-ungroup.svg (100%) rename {client/src => src}/static/icons/light/octagon.svg (100%) rename {client/src => src}/static/icons/light/oil-can.svg (100%) rename {client/src => src}/static/icons/light/oil-temp.svg (100%) rename {client/src => src}/static/icons/light/om.svg (100%) rename {client/src => src}/static/icons/light/omega.svg (100%) rename {client/src => src}/static/icons/light/ornament.svg (100%) rename {client/src => src}/static/icons/light/otter.svg (100%) rename {client/src => src}/static/icons/light/outdent.svg (100%) rename {client/src => src}/static/icons/light/outlet.svg (100%) rename {client/src => src}/static/icons/light/oven.svg (100%) rename {client/src => src}/static/icons/light/overline.svg (100%) rename {client/src => src}/static/icons/light/page-break.svg (100%) rename {client/src => src}/static/icons/light/pager.svg (100%) rename {client/src => src}/static/icons/light/paint-brush-alt.svg (100%) rename {client/src => src}/static/icons/light/paint-brush.svg (100%) rename {client/src => src}/static/icons/light/paint-roller.svg (100%) rename {client/src => src}/static/icons/light/palette.svg (100%) rename {client/src => src}/static/icons/light/pallet-alt.svg (100%) rename {client/src => src}/static/icons/light/pallet.svg (100%) rename {client/src => src}/static/icons/light/paper-plane.svg (100%) rename {client/src => src}/static/icons/light/paperclip.svg (100%) rename {client/src => src}/static/icons/light/parachute-box.svg (100%) rename {client/src => src}/static/icons/light/paragraph-rtl.svg (100%) rename {client/src => src}/static/icons/light/paragraph.svg (100%) rename {client/src => src}/static/icons/light/parking-circle-slash.svg (100%) rename {client/src => src}/static/icons/light/parking-circle.svg (100%) rename {client/src => src}/static/icons/light/parking-slash.svg (100%) rename {client/src => src}/static/icons/light/parking.svg (100%) rename {client/src => src}/static/icons/light/passport.svg (100%) rename {client/src => src}/static/icons/light/pastafarianism.svg (100%) rename {client/src => src}/static/icons/light/paste.svg (100%) rename {client/src => src}/static/icons/light/pause-circle.svg (100%) rename {client/src => src}/static/icons/light/pause.svg (100%) rename {client/src => src}/static/icons/light/paw-alt.svg (100%) rename {client/src => src}/static/icons/light/paw-claws.svg (100%) rename {client/src => src}/static/icons/light/paw.svg (100%) rename {client/src => src}/static/icons/light/peace.svg (100%) rename {client/src => src}/static/icons/light/pegasus.svg (100%) rename {client/src => src}/static/icons/light/pen-alt.svg (100%) rename {client/src => src}/static/icons/light/pen-fancy.svg (100%) rename {client/src => src}/static/icons/light/pen-nib.svg (100%) rename {client/src => src}/static/icons/light/pen-square.svg (100%) rename {client/src => src}/static/icons/light/pen.svg (100%) rename {client/src => src}/static/icons/light/pencil-alt.svg (100%) rename {client/src => src}/static/icons/light/pencil-paintbrush.svg (100%) rename {client/src => src}/static/icons/light/pencil-ruler.svg (100%) rename {client/src => src}/static/icons/light/pencil.svg (100%) rename {client/src => src}/static/icons/light/pennant.svg (100%) rename {client/src => src}/static/icons/light/people-carry.svg (100%) rename {client/src => src}/static/icons/light/pepper-hot.svg (100%) rename {client/src => src}/static/icons/light/percent.svg (100%) rename {client/src => src}/static/icons/light/percentage.svg (100%) rename {client/src => src}/static/icons/light/person-booth.svg (100%) rename {client/src => src}/static/icons/light/person-carry.svg (100%) rename {client/src => src}/static/icons/light/person-dolly-empty.svg (100%) rename {client/src => src}/static/icons/light/person-dolly.svg (100%) rename {client/src => src}/static/icons/light/person-sign.svg (100%) rename {client/src => src}/static/icons/light/phone-alt.svg (100%) rename {client/src => src}/static/icons/light/phone-laptop.svg (100%) rename {client/src => src}/static/icons/light/phone-office.svg (100%) rename {client/src => src}/static/icons/light/phone-plus.svg (100%) rename {client/src => src}/static/icons/light/phone-rotary.svg (100%) rename {client/src => src}/static/icons/light/phone-slash.svg (100%) rename {client/src => src}/static/icons/light/phone-square-alt.svg (100%) rename {client/src => src}/static/icons/light/phone-square.svg (100%) rename {client/src => src}/static/icons/light/phone-volume.svg (100%) rename {client/src => src}/static/icons/light/phone.svg (100%) rename {client/src => src}/static/icons/light/photo-video.svg (100%) rename {client/src => src}/static/icons/light/pi.svg (100%) rename {client/src => src}/static/icons/light/piano-keyboard.svg (100%) rename {client/src => src}/static/icons/light/piano.svg (100%) rename {client/src => src}/static/icons/light/pie.svg (100%) rename {client/src => src}/static/icons/light/pig.svg (100%) rename {client/src => src}/static/icons/light/piggy-bank.svg (100%) rename {client/src => src}/static/icons/light/pills.svg (100%) rename {client/src => src}/static/icons/light/pizza-slice.svg (100%) rename {client/src => src}/static/icons/light/pizza.svg (100%) rename {client/src => src}/static/icons/light/place-of-worship.svg (100%) rename {client/src => src}/static/icons/light/plane-alt.svg (100%) rename {client/src => src}/static/icons/light/plane-arrival.svg (100%) rename {client/src => src}/static/icons/light/plane-departure.svg (100%) rename {client/src => src}/static/icons/light/plane.svg (100%) rename {client/src => src}/static/icons/light/planet-moon.svg (100%) rename {client/src => src}/static/icons/light/planet-ringed.svg (100%) rename {client/src => src}/static/icons/light/play-circle.svg (100%) rename {client/src => src}/static/icons/light/play.svg (100%) rename {client/src => src}/static/icons/light/plug.svg (100%) rename {client/src => src}/static/icons/light/plus-circle.svg (100%) rename {client/src => src}/static/icons/light/plus-hexagon.svg (100%) rename {client/src => src}/static/icons/light/plus-octagon.svg (100%) rename {client/src => src}/static/icons/light/plus-square.svg (100%) rename {client/src => src}/static/icons/light/plus.svg (100%) rename {client/src => src}/static/icons/light/podcast.svg (100%) rename {client/src => src}/static/icons/light/podium-star.svg (100%) rename {client/src => src}/static/icons/light/podium.svg (100%) rename {client/src => src}/static/icons/light/police-box.svg (100%) rename {client/src => src}/static/icons/light/poll-h.svg (100%) rename {client/src => src}/static/icons/light/poll-people.svg (100%) rename {client/src => src}/static/icons/light/poll.svg (100%) rename {client/src => src}/static/icons/light/poo-storm.svg (100%) rename {client/src => src}/static/icons/light/poo.svg (100%) rename {client/src => src}/static/icons/light/poop.svg (100%) rename {client/src => src}/static/icons/light/popcorn.svg (100%) rename {client/src => src}/static/icons/light/portal-enter.svg (100%) rename {client/src => src}/static/icons/light/portal-exit.svg (100%) rename {client/src => src}/static/icons/light/portrait.svg (100%) rename {client/src => src}/static/icons/light/pound-sign.svg (100%) rename {client/src => src}/static/icons/light/power-off.svg (100%) rename {client/src => src}/static/icons/light/pray.svg (100%) rename {client/src => src}/static/icons/light/praying-hands.svg (100%) rename {client/src => src}/static/icons/light/prescription-bottle-alt.svg (100%) rename {client/src => src}/static/icons/light/prescription-bottle.svg (100%) rename {client/src => src}/static/icons/light/prescription.svg (100%) rename {client/src => src}/static/icons/light/presentation.svg (100%) rename {client/src => src}/static/icons/light/print-search.svg (100%) rename {client/src => src}/static/icons/light/print-slash.svg (100%) rename {client/src => src}/static/icons/light/print.svg (100%) rename {client/src => src}/static/icons/light/procedures.svg (100%) rename {client/src => src}/static/icons/light/project-diagram.svg (100%) rename {client/src => src}/static/icons/light/projector.svg (100%) rename {client/src => src}/static/icons/light/pumpkin.svg (100%) rename {client/src => src}/static/icons/light/puzzle-piece.svg (100%) rename {client/src => src}/static/icons/light/qrcode.svg (100%) rename {client/src => src}/static/icons/light/question-circle.svg (100%) rename {client/src => src}/static/icons/light/question-square.svg (100%) rename {client/src => src}/static/icons/light/question.svg (100%) rename {client/src => src}/static/icons/light/quidditch.svg (100%) rename {client/src => src}/static/icons/light/quote-left.svg (100%) rename {client/src => src}/static/icons/light/quote-right.svg (100%) rename {client/src => src}/static/icons/light/quran.svg (100%) rename {client/src => src}/static/icons/light/rabbit-fast.svg (100%) rename {client/src => src}/static/icons/light/rabbit.svg (100%) rename {client/src => src}/static/icons/light/racquet.svg (100%) rename {client/src => src}/static/icons/light/radar.svg (100%) rename {client/src => src}/static/icons/light/radiation-alt.svg (100%) rename {client/src => src}/static/icons/light/radiation.svg (100%) rename {client/src => src}/static/icons/light/radio-alt.svg (100%) rename {client/src => src}/static/icons/light/radio.svg (100%) rename {client/src => src}/static/icons/light/rainbow.svg (100%) rename {client/src => src}/static/icons/light/raindrops.svg (100%) rename {client/src => src}/static/icons/light/ram.svg (100%) rename {client/src => src}/static/icons/light/ramp-loading.svg (100%) rename {client/src => src}/static/icons/light/random.svg (100%) rename {client/src => src}/static/icons/light/raygun.svg (100%) rename {client/src => src}/static/icons/light/receipt.svg (100%) rename {client/src => src}/static/icons/light/record-vinyl.svg (100%) rename {client/src => src}/static/icons/light/rectangle-landscape.svg (100%) rename {client/src => src}/static/icons/light/rectangle-portrait.svg (100%) rename {client/src => src}/static/icons/light/rectangle-wide.svg (100%) rename {client/src => src}/static/icons/light/recycle.svg (100%) rename {client/src => src}/static/icons/light/redo-alt.svg (100%) rename {client/src => src}/static/icons/light/redo.svg (100%) rename {client/src => src}/static/icons/light/refrigerator.svg (100%) rename {client/src => src}/static/icons/light/registered.svg (100%) rename {client/src => src}/static/icons/light/remove-format.svg (100%) rename {client/src => src}/static/icons/light/repeat-1-alt.svg (100%) rename {client/src => src}/static/icons/light/repeat-1.svg (100%) rename {client/src => src}/static/icons/light/repeat-alt.svg (100%) rename {client/src => src}/static/icons/light/repeat.svg (100%) rename {client/src => src}/static/icons/light/reply-all.svg (100%) rename {client/src => src}/static/icons/light/reply.svg (100%) rename {client/src => src}/static/icons/light/republican.svg (100%) rename {client/src => src}/static/icons/light/restroom.svg (100%) rename {client/src => src}/static/icons/light/retweet-alt.svg (100%) rename {client/src => src}/static/icons/light/retweet.svg (100%) rename {client/src => src}/static/icons/light/ribbon.svg (100%) rename {client/src => src}/static/icons/light/ring.svg (100%) rename {client/src => src}/static/icons/light/rings-wedding.svg (100%) rename {client/src => src}/static/icons/light/road.svg (100%) rename {client/src => src}/static/icons/light/robot.svg (100%) rename {client/src => src}/static/icons/light/rocket-launch.svg (100%) rename {client/src => src}/static/icons/light/rocket.svg (100%) rename {client/src => src}/static/icons/light/route-highway.svg (100%) rename {client/src => src}/static/icons/light/route-interstate.svg (100%) rename {client/src => src}/static/icons/light/route.svg (100%) rename {client/src => src}/static/icons/light/router.svg (100%) rename {client/src => src}/static/icons/light/rss-square.svg (100%) rename {client/src => src}/static/icons/light/rss.svg (100%) rename {client/src => src}/static/icons/light/ruble-sign.svg (100%) rename {client/src => src}/static/icons/light/ruler-combined.svg (100%) rename {client/src => src}/static/icons/light/ruler-horizontal.svg (100%) rename {client/src => src}/static/icons/light/ruler-triangle.svg (100%) rename {client/src => src}/static/icons/light/ruler-vertical.svg (100%) rename {client/src => src}/static/icons/light/ruler.svg (100%) rename {client/src => src}/static/icons/light/running.svg (100%) rename {client/src => src}/static/icons/light/rupee-sign.svg (100%) rename {client/src => src}/static/icons/light/rv.svg (100%) rename {client/src => src}/static/icons/light/sack-dollar.svg (100%) rename {client/src => src}/static/icons/light/sack.svg (100%) rename {client/src => src}/static/icons/light/sad-cry.svg (100%) rename {client/src => src}/static/icons/light/sad-tear.svg (100%) rename {client/src => src}/static/icons/light/salad.svg (100%) rename {client/src => src}/static/icons/light/sandwich.svg (100%) rename {client/src => src}/static/icons/light/satellite-dish.svg (100%) rename {client/src => src}/static/icons/light/satellite.svg (100%) rename {client/src => src}/static/icons/light/sausage.svg (100%) rename {client/src => src}/static/icons/light/save.svg (100%) rename {client/src => src}/static/icons/light/sax-hot.svg (100%) rename {client/src => src}/static/icons/light/saxophone.svg (100%) rename {client/src => src}/static/icons/light/scalpel-path.svg (100%) rename {client/src => src}/static/icons/light/scalpel.svg (100%) rename {client/src => src}/static/icons/light/scanner-image.svg (100%) rename {client/src => src}/static/icons/light/scanner-keyboard.svg (100%) rename {client/src => src}/static/icons/light/scanner-touchscreen.svg (100%) rename {client/src => src}/static/icons/light/scanner.svg (100%) rename {client/src => src}/static/icons/light/scarecrow.svg (100%) rename {client/src => src}/static/icons/light/scarf.svg (100%) rename {client/src => src}/static/icons/light/school.svg (100%) rename {client/src => src}/static/icons/light/screwdriver.svg (100%) rename {client/src => src}/static/icons/light/scroll-old.svg (100%) rename {client/src => src}/static/icons/light/scroll.svg (100%) rename {client/src => src}/static/icons/light/scrubber.svg (100%) rename {client/src => src}/static/icons/light/scythe.svg (100%) rename {client/src => src}/static/icons/light/sd-card.svg (100%) rename {client/src => src}/static/icons/light/search-dollar.svg (100%) rename {client/src => src}/static/icons/light/search-location.svg (100%) rename {client/src => src}/static/icons/light/search-minus.svg (100%) rename {client/src => src}/static/icons/light/search-plus.svg (100%) rename {client/src => src}/static/icons/light/search.svg (100%) rename {client/src => src}/static/icons/light/seedling.svg (100%) rename {client/src => src}/static/icons/light/send-back.svg (100%) rename {client/src => src}/static/icons/light/send-backward.svg (100%) rename {client/src => src}/static/icons/light/sensor-alert.svg (100%) rename {client/src => src}/static/icons/light/sensor-fire.svg (100%) rename {client/src => src}/static/icons/light/sensor-on.svg (100%) rename {client/src => src}/static/icons/light/sensor-smoke.svg (100%) rename {client/src => src}/static/icons/light/sensor.svg (100%) rename {client/src => src}/static/icons/light/server.svg (100%) rename {client/src => src}/static/icons/light/shapes.svg (100%) rename {client/src => src}/static/icons/light/share-all.svg (100%) rename {client/src => src}/static/icons/light/share-alt-square.svg (100%) rename {client/src => src}/static/icons/light/share-alt.svg (100%) rename {client/src => src}/static/icons/light/share-square.svg (100%) rename {client/src => src}/static/icons/light/share.svg (100%) rename {client/src => src}/static/icons/light/sheep.svg (100%) rename {client/src => src}/static/icons/light/shekel-sign.svg (100%) rename {client/src => src}/static/icons/light/shield-alt.svg (100%) rename {client/src => src}/static/icons/light/shield-check.svg (100%) rename {client/src => src}/static/icons/light/shield-cross.svg (100%) rename {client/src => src}/static/icons/light/shield.svg (100%) rename {client/src => src}/static/icons/light/ship.svg (100%) rename {client/src => src}/static/icons/light/shipping-fast.svg (100%) rename {client/src => src}/static/icons/light/shipping-timed.svg (100%) rename {client/src => src}/static/icons/light/shish-kebab.svg (100%) rename {client/src => src}/static/icons/light/shoe-prints.svg (100%) rename {client/src => src}/static/icons/light/shopping-bag.svg (100%) rename {client/src => src}/static/icons/light/shopping-basket.svg (100%) rename {client/src => src}/static/icons/light/shopping-cart.svg (100%) rename {client/src => src}/static/icons/light/shovel-snow.svg (100%) rename {client/src => src}/static/icons/light/shovel.svg (100%) rename {client/src => src}/static/icons/light/shower.svg (100%) rename {client/src => src}/static/icons/light/shredder.svg (100%) rename {client/src => src}/static/icons/light/shuttle-van.svg (100%) rename {client/src => src}/static/icons/light/shuttlecock.svg (100%) rename {client/src => src}/static/icons/light/sickle.svg (100%) rename {client/src => src}/static/icons/light/sigma.svg (100%) rename {client/src => src}/static/icons/light/sign-in-alt.svg (100%) rename {client/src => src}/static/icons/light/sign-in.svg (100%) rename {client/src => src}/static/icons/light/sign-language.svg (100%) rename {client/src => src}/static/icons/light/sign-out-alt.svg (100%) rename {client/src => src}/static/icons/light/sign-out.svg (100%) rename {client/src => src}/static/icons/light/sign.svg (100%) rename {client/src => src}/static/icons/light/signal-1.svg (100%) rename {client/src => src}/static/icons/light/signal-2.svg (100%) rename {client/src => src}/static/icons/light/signal-3.svg (100%) rename {client/src => src}/static/icons/light/signal-4.svg (100%) rename {client/src => src}/static/icons/light/signal-alt-1.svg (100%) rename {client/src => src}/static/icons/light/signal-alt-2.svg (100%) rename {client/src => src}/static/icons/light/signal-alt-3.svg (100%) rename {client/src => src}/static/icons/light/signal-alt-slash.svg (100%) rename {client/src => src}/static/icons/light/signal-alt.svg (100%) rename {client/src => src}/static/icons/light/signal-slash.svg (100%) rename {client/src => src}/static/icons/light/signal-stream.svg (100%) rename {client/src => src}/static/icons/light/signal.svg (100%) rename {client/src => src}/static/icons/light/signature.svg (100%) rename {client/src => src}/static/icons/light/sim-card.svg (100%) rename {client/src => src}/static/icons/light/siren-on.svg (100%) rename {client/src => src}/static/icons/light/siren.svg (100%) rename {client/src => src}/static/icons/light/sitemap.svg (100%) rename {client/src => src}/static/icons/light/skating.svg (100%) rename {client/src => src}/static/icons/light/skeleton.svg (100%) rename {client/src => src}/static/icons/light/ski-jump.svg (100%) rename {client/src => src}/static/icons/light/ski-lift.svg (100%) rename {client/src => src}/static/icons/light/skiing-nordic.svg (100%) rename {client/src => src}/static/icons/light/skiing.svg (100%) rename {client/src => src}/static/icons/light/skull-cow.svg (100%) rename {client/src => src}/static/icons/light/skull-crossbones.svg (100%) rename {client/src => src}/static/icons/light/skull.svg (100%) rename {client/src => src}/static/icons/light/slash.svg (100%) rename {client/src => src}/static/icons/light/sledding.svg (100%) rename {client/src => src}/static/icons/light/sleigh.svg (100%) rename {client/src => src}/static/icons/light/sliders-h-square.svg (100%) rename {client/src => src}/static/icons/light/sliders-h.svg (100%) rename {client/src => src}/static/icons/light/sliders-v-square.svg (100%) rename {client/src => src}/static/icons/light/sliders-v.svg (100%) rename {client/src => src}/static/icons/light/smile-beam.svg (100%) rename {client/src => src}/static/icons/light/smile-plus.svg (100%) rename {client/src => src}/static/icons/light/smile-wink.svg (100%) rename {client/src => src}/static/icons/light/smile.svg (100%) rename {client/src => src}/static/icons/light/smog.svg (100%) rename {client/src => src}/static/icons/light/smoke.svg (100%) rename {client/src => src}/static/icons/light/smoking-ban.svg (100%) rename {client/src => src}/static/icons/light/smoking.svg (100%) rename {client/src => src}/static/icons/light/sms.svg (100%) rename {client/src => src}/static/icons/light/snake.svg (100%) rename {client/src => src}/static/icons/light/snooze.svg (100%) rename {client/src => src}/static/icons/light/snow-blowing.svg (100%) rename {client/src => src}/static/icons/light/snowboarding.svg (100%) rename {client/src => src}/static/icons/light/snowflake.svg (100%) rename {client/src => src}/static/icons/light/snowflakes.svg (100%) rename {client/src => src}/static/icons/light/snowman.svg (100%) rename {client/src => src}/static/icons/light/snowmobile.svg (100%) rename {client/src => src}/static/icons/light/snowplow.svg (100%) rename {client/src => src}/static/icons/light/socks.svg (100%) rename {client/src => src}/static/icons/light/solar-panel.svg (100%) rename {client/src => src}/static/icons/light/solar-system.svg (100%) rename {client/src => src}/static/icons/light/sort-alpha-down-alt.svg (100%) rename {client/src => src}/static/icons/light/sort-alpha-down.svg (100%) rename {client/src => src}/static/icons/light/sort-alpha-up-alt.svg (100%) rename {client/src => src}/static/icons/light/sort-alpha-up.svg (100%) rename {client/src => src}/static/icons/light/sort-alt.svg (100%) rename {client/src => src}/static/icons/light/sort-amount-down-alt.svg (100%) rename {client/src => src}/static/icons/light/sort-amount-down.svg (100%) rename {client/src => src}/static/icons/light/sort-amount-up-alt.svg (100%) rename {client/src => src}/static/icons/light/sort-amount-up.svg (100%) rename {client/src => src}/static/icons/light/sort-circle-down.svg (100%) rename {client/src => src}/static/icons/light/sort-circle-up.svg (100%) rename {client/src => src}/static/icons/light/sort-circle.svg (100%) rename {client/src => src}/static/icons/light/sort-down.svg (100%) rename {client/src => src}/static/icons/light/sort-numeric-down-alt.svg (100%) rename {client/src => src}/static/icons/light/sort-numeric-down.svg (100%) rename {client/src => src}/static/icons/light/sort-numeric-up-alt.svg (100%) rename {client/src => src}/static/icons/light/sort-numeric-up.svg (100%) rename {client/src => src}/static/icons/light/sort-shapes-down-alt.svg (100%) rename {client/src => src}/static/icons/light/sort-shapes-down.svg (100%) rename {client/src => src}/static/icons/light/sort-shapes-up-alt.svg (100%) rename {client/src => src}/static/icons/light/sort-shapes-up.svg (100%) rename {client/src => src}/static/icons/light/sort-size-down-alt.svg (100%) rename {client/src => src}/static/icons/light/sort-size-down.svg (100%) rename {client/src => src}/static/icons/light/sort-size-up-alt.svg (100%) rename {client/src => src}/static/icons/light/sort-size-up.svg (100%) rename {client/src => src}/static/icons/light/sort-up.svg (100%) rename {client/src => src}/static/icons/light/sort.svg (100%) rename {client/src => src}/static/icons/light/soup.svg (100%) rename {client/src => src}/static/icons/light/spa.svg (100%) rename {client/src => src}/static/icons/light/space-shuttle.svg (100%) rename {client/src => src}/static/icons/light/space-station-moon-alt.svg (100%) rename {client/src => src}/static/icons/light/space-station-moon.svg (100%) rename {client/src => src}/static/icons/light/spade.svg (100%) rename {client/src => src}/static/icons/light/sparkles.svg (100%) rename {client/src => src}/static/icons/light/speaker.svg (100%) rename {client/src => src}/static/icons/light/speakers.svg (100%) rename {client/src => src}/static/icons/light/spell-check.svg (100%) rename {client/src => src}/static/icons/light/spider-black-widow.svg (100%) rename {client/src => src}/static/icons/light/spider-web.svg (100%) rename {client/src => src}/static/icons/light/spider.svg (100%) rename {client/src => src}/static/icons/light/spinner-third.svg (100%) rename {client/src => src}/static/icons/light/spinner.svg (100%) rename {client/src => src}/static/icons/light/splotch.svg (100%) rename {client/src => src}/static/icons/light/spray-can.svg (100%) rename {client/src => src}/static/icons/light/sprinkler.svg (100%) rename {client/src => src}/static/icons/light/square-full.svg (100%) rename {client/src => src}/static/icons/light/square-root-alt.svg (100%) rename {client/src => src}/static/icons/light/square-root.svg (100%) rename {client/src => src}/static/icons/light/square.svg (100%) rename {client/src => src}/static/icons/light/squirrel.svg (100%) rename {client/src => src}/static/icons/light/staff.svg (100%) rename {client/src => src}/static/icons/light/stamp.svg (100%) rename {client/src => src}/static/icons/light/star-and-crescent.svg (100%) rename {client/src => src}/static/icons/light/star-christmas.svg (100%) rename {client/src => src}/static/icons/light/star-exclamation.svg (100%) rename {client/src => src}/static/icons/light/star-half-alt.svg (100%) rename {client/src => src}/static/icons/light/star-half.svg (100%) rename {client/src => src}/static/icons/light/star-of-david.svg (100%) rename {client/src => src}/static/icons/light/star-of-life.svg (100%) rename {client/src => src}/static/icons/light/star-shooting.svg (100%) rename {client/src => src}/static/icons/light/star.svg (100%) rename {client/src => src}/static/icons/light/starfighter-alt.svg (100%) rename {client/src => src}/static/icons/light/starfighter.svg (100%) rename {client/src => src}/static/icons/light/stars.svg (100%) rename {client/src => src}/static/icons/light/starship-freighter.svg (100%) rename {client/src => src}/static/icons/light/starship.svg (100%) rename {client/src => src}/static/icons/light/steak.svg (100%) rename {client/src => src}/static/icons/light/steering-wheel.svg (100%) rename {client/src => src}/static/icons/light/step-backward.svg (100%) rename {client/src => src}/static/icons/light/step-forward.svg (100%) rename {client/src => src}/static/icons/light/stethoscope.svg (100%) rename {client/src => src}/static/icons/light/sticky-note.svg (100%) rename {client/src => src}/static/icons/light/stocking.svg (100%) rename {client/src => src}/static/icons/light/stomach.svg (100%) rename {client/src => src}/static/icons/light/stop-circle.svg (100%) rename {client/src => src}/static/icons/light/stop.svg (100%) rename {client/src => src}/static/icons/light/stopwatch.svg (100%) rename {client/src => src}/static/icons/light/store-alt.svg (100%) rename {client/src => src}/static/icons/light/store.svg (100%) rename {client/src => src}/static/icons/light/stream.svg (100%) rename {client/src => src}/static/icons/light/street-view.svg (100%) rename {client/src => src}/static/icons/light/stretcher.svg (100%) rename {client/src => src}/static/icons/light/strikethrough.svg (100%) rename {client/src => src}/static/icons/light/stroopwafel.svg (100%) rename {client/src => src}/static/icons/light/subscript.svg (100%) rename {client/src => src}/static/icons/light/subway.svg (100%) rename {client/src => src}/static/icons/light/suitcase-rolling.svg (100%) rename {client/src => src}/static/icons/light/suitcase.svg (100%) rename {client/src => src}/static/icons/light/sun-cloud.svg (100%) rename {client/src => src}/static/icons/light/sun-dust.svg (100%) rename {client/src => src}/static/icons/light/sun-haze.svg (100%) rename {client/src => src}/static/icons/light/sun.svg (100%) rename {client/src => src}/static/icons/light/sunglasses.svg (100%) rename {client/src => src}/static/icons/light/sunrise.svg (100%) rename {client/src => src}/static/icons/light/sunset.svg (100%) rename {client/src => src}/static/icons/light/superscript.svg (100%) rename {client/src => src}/static/icons/light/surprise.svg (100%) rename {client/src => src}/static/icons/light/swatchbook.svg (100%) rename {client/src => src}/static/icons/light/swimmer.svg (100%) rename {client/src => src}/static/icons/light/swimming-pool.svg (100%) rename {client/src => src}/static/icons/light/sword-laser-alt.svg (100%) rename {client/src => src}/static/icons/light/sword-laser.svg (100%) rename {client/src => src}/static/icons/light/sword.svg (100%) rename {client/src => src}/static/icons/light/swords-laser.svg (100%) rename {client/src => src}/static/icons/light/swords.svg (100%) rename {client/src => src}/static/icons/light/synagogue.svg (100%) rename {client/src => src}/static/icons/light/sync-alt.svg (100%) rename {client/src => src}/static/icons/light/sync.svg (100%) rename {client/src => src}/static/icons/light/syringe.svg (100%) rename {client/src => src}/static/icons/light/table-tennis.svg (100%) rename {client/src => src}/static/icons/light/table.svg (100%) rename {client/src => src}/static/icons/light/tablet-alt.svg (100%) rename {client/src => src}/static/icons/light/tablet-android-alt.svg (100%) rename {client/src => src}/static/icons/light/tablet-android.svg (100%) rename {client/src => src}/static/icons/light/tablet-rugged.svg (100%) rename {client/src => src}/static/icons/light/tablet.svg (100%) rename {client/src => src}/static/icons/light/tablets.svg (100%) rename {client/src => src}/static/icons/light/tachometer-alt-average.svg (100%) rename {client/src => src}/static/icons/light/tachometer-alt-fast.svg (100%) rename {client/src => src}/static/icons/light/tachometer-alt-fastest.svg (100%) rename {client/src => src}/static/icons/light/tachometer-alt-slow.svg (100%) rename {client/src => src}/static/icons/light/tachometer-alt-slowest.svg (100%) rename {client/src => src}/static/icons/light/tachometer-alt.svg (100%) rename {client/src => src}/static/icons/light/tachometer-average.svg (100%) rename {client/src => src}/static/icons/light/tachometer-fast.svg (100%) rename {client/src => src}/static/icons/light/tachometer-fastest.svg (100%) rename {client/src => src}/static/icons/light/tachometer-slow.svg (100%) rename {client/src => src}/static/icons/light/tachometer-slowest.svg (100%) rename {client/src => src}/static/icons/light/tachometer.svg (100%) rename {client/src => src}/static/icons/light/taco.svg (100%) rename {client/src => src}/static/icons/light/tag.svg (100%) rename {client/src => src}/static/icons/light/tags.svg (100%) rename {client/src => src}/static/icons/light/tally.svg (100%) rename {client/src => src}/static/icons/light/tanakh.svg (100%) rename {client/src => src}/static/icons/light/tape.svg (100%) rename {client/src => src}/static/icons/light/tasks-alt.svg (100%) rename {client/src => src}/static/icons/light/tasks.svg (100%) rename {client/src => src}/static/icons/light/taxi.svg (100%) rename {client/src => src}/static/icons/light/teeth-open.svg (100%) rename {client/src => src}/static/icons/light/teeth.svg (100%) rename {client/src => src}/static/icons/light/telescope.svg (100%) rename {client/src => src}/static/icons/light/temperature-down.svg (100%) rename {client/src => src}/static/icons/light/temperature-frigid.svg (100%) rename {client/src => src}/static/icons/light/temperature-high.svg (100%) rename {client/src => src}/static/icons/light/temperature-hot.svg (100%) rename {client/src => src}/static/icons/light/temperature-low.svg (100%) rename {client/src => src}/static/icons/light/temperature-up.svg (100%) rename {client/src => src}/static/icons/light/tenge.svg (100%) rename {client/src => src}/static/icons/light/tennis-ball.svg (100%) rename {client/src => src}/static/icons/light/terminal.svg (100%) rename {client/src => src}/static/icons/light/text-height.svg (100%) rename {client/src => src}/static/icons/light/text-size.svg (100%) rename {client/src => src}/static/icons/light/text-width.svg (100%) rename {client/src => src}/static/icons/light/text.svg (100%) rename {client/src => src}/static/icons/light/th-large.svg (100%) rename {client/src => src}/static/icons/light/th-list.svg (100%) rename {client/src => src}/static/icons/light/th.svg (100%) rename {client/src => src}/static/icons/light/theater-masks.svg (100%) rename {client/src => src}/static/icons/light/thermometer-empty.svg (100%) rename {client/src => src}/static/icons/light/thermometer-full.svg (100%) rename {client/src => src}/static/icons/light/thermometer-half.svg (100%) rename {client/src => src}/static/icons/light/thermometer-quarter.svg (100%) rename {client/src => src}/static/icons/light/thermometer-three-quarters.svg (100%) rename {client/src => src}/static/icons/light/thermometer.svg (100%) rename {client/src => src}/static/icons/light/theta.svg (100%) rename {client/src => src}/static/icons/light/thumbs-down.svg (100%) rename {client/src => src}/static/icons/light/thumbs-up.svg (100%) rename {client/src => src}/static/icons/light/thumbtack.svg (100%) rename {client/src => src}/static/icons/light/thunderstorm-moon.svg (100%) rename {client/src => src}/static/icons/light/thunderstorm-sun.svg (100%) rename {client/src => src}/static/icons/light/thunderstorm.svg (100%) rename {client/src => src}/static/icons/light/ticket-alt.svg (100%) rename {client/src => src}/static/icons/light/ticket.svg (100%) rename {client/src => src}/static/icons/light/tilde.svg (100%) rename {client/src => src}/static/icons/light/times-circle.svg (100%) rename {client/src => src}/static/icons/light/times-hexagon.svg (100%) rename {client/src => src}/static/icons/light/times-octagon.svg (100%) rename {client/src => src}/static/icons/light/times-square.svg (100%) rename {client/src => src}/static/icons/light/times.svg (100%) rename {client/src => src}/static/icons/light/tint-slash.svg (100%) rename {client/src => src}/static/icons/light/tint.svg (100%) rename {client/src => src}/static/icons/light/tire-flat.svg (100%) rename {client/src => src}/static/icons/light/tire-pressure-warning.svg (100%) rename {client/src => src}/static/icons/light/tire-rugged.svg (100%) rename {client/src => src}/static/icons/light/tire.svg (100%) rename {client/src => src}/static/icons/light/tired.svg (100%) rename {client/src => src}/static/icons/light/toggle-off.svg (100%) rename {client/src => src}/static/icons/light/toggle-on.svg (100%) rename {client/src => src}/static/icons/light/toilet-paper-alt.svg (100%) rename {client/src => src}/static/icons/light/toilet-paper.svg (100%) rename {client/src => src}/static/icons/light/toilet.svg (100%) rename {client/src => src}/static/icons/light/tombstone-alt.svg (100%) rename {client/src => src}/static/icons/light/tombstone.svg (100%) rename {client/src => src}/static/icons/light/toolbox.svg (100%) rename {client/src => src}/static/icons/light/tools.svg (100%) rename {client/src => src}/static/icons/light/tooth.svg (100%) rename {client/src => src}/static/icons/light/toothbrush.svg (100%) rename {client/src => src}/static/icons/light/torah.svg (100%) rename {client/src => src}/static/icons/light/torii-gate.svg (100%) rename {client/src => src}/static/icons/light/tornado.svg (100%) rename {client/src => src}/static/icons/light/tractor.svg (100%) rename {client/src => src}/static/icons/light/trademark.svg (100%) rename {client/src => src}/static/icons/light/traffic-cone.svg (100%) rename {client/src => src}/static/icons/light/traffic-light-go.svg (100%) rename {client/src => src}/static/icons/light/traffic-light-slow.svg (100%) rename {client/src => src}/static/icons/light/traffic-light-stop.svg (100%) rename {client/src => src}/static/icons/light/traffic-light.svg (100%) rename {client/src => src}/static/icons/light/trailer.svg (100%) rename {client/src => src}/static/icons/light/train.svg (100%) rename {client/src => src}/static/icons/light/tram.svg (100%) rename {client/src => src}/static/icons/light/transgender-alt.svg (100%) rename {client/src => src}/static/icons/light/transgender.svg (100%) rename {client/src => src}/static/icons/light/transporter-1.svg (100%) rename {client/src => src}/static/icons/light/transporter-2.svg (100%) rename {client/src => src}/static/icons/light/transporter-3.svg (100%) rename {client/src => src}/static/icons/light/transporter-empty.svg (100%) rename {client/src => src}/static/icons/light/transporter.svg (100%) rename {client/src => src}/static/icons/light/trash-alt.svg (100%) rename {client/src => src}/static/icons/light/trash-restore-alt.svg (100%) rename {client/src => src}/static/icons/light/trash-restore.svg (100%) rename {client/src => src}/static/icons/light/trash-undo-alt.svg (100%) rename {client/src => src}/static/icons/light/trash-undo.svg (100%) rename {client/src => src}/static/icons/light/trash.svg (100%) rename {client/src => src}/static/icons/light/treasure-chest.svg (100%) rename {client/src => src}/static/icons/light/tree-alt.svg (100%) rename {client/src => src}/static/icons/light/tree-christmas.svg (100%) rename {client/src => src}/static/icons/light/tree-decorated.svg (100%) rename {client/src => src}/static/icons/light/tree-large.svg (100%) rename {client/src => src}/static/icons/light/tree-palm.svg (100%) rename {client/src => src}/static/icons/light/tree.svg (100%) rename {client/src => src}/static/icons/light/trees.svg (100%) rename {client/src => src}/static/icons/light/triangle-music.svg (100%) rename {client/src => src}/static/icons/light/triangle.svg (100%) rename {client/src => src}/static/icons/light/trophy-alt.svg (100%) rename {client/src => src}/static/icons/light/trophy.svg (100%) rename {client/src => src}/static/icons/light/truck-container.svg (100%) rename {client/src => src}/static/icons/light/truck-couch.svg (100%) rename {client/src => src}/static/icons/light/truck-loading.svg (100%) rename {client/src => src}/static/icons/light/truck-monster.svg (100%) rename {client/src => src}/static/icons/light/truck-moving.svg (100%) rename {client/src => src}/static/icons/light/truck-pickup.svg (100%) rename {client/src => src}/static/icons/light/truck-plow.svg (100%) rename {client/src => src}/static/icons/light/truck-ramp.svg (100%) rename {client/src => src}/static/icons/light/truck.svg (100%) rename {client/src => src}/static/icons/light/trumpet.svg (100%) rename {client/src => src}/static/icons/light/tshirt.svg (100%) rename {client/src => src}/static/icons/light/tty.svg (100%) rename {client/src => src}/static/icons/light/turkey.svg (100%) rename {client/src => src}/static/icons/light/turntable.svg (100%) rename {client/src => src}/static/icons/light/turtle.svg (100%) rename {client/src => src}/static/icons/light/tv-alt.svg (100%) rename {client/src => src}/static/icons/light/tv-music.svg (100%) rename {client/src => src}/static/icons/light/tv-retro.svg (100%) rename {client/src => src}/static/icons/light/tv.svg (100%) rename {client/src => src}/static/icons/light/typewriter.svg (100%) rename {client/src => src}/static/icons/light/ufo-beam.svg (100%) rename {client/src => src}/static/icons/light/ufo.svg (100%) rename {client/src => src}/static/icons/light/umbrella-beach.svg (100%) rename {client/src => src}/static/icons/light/umbrella.svg (100%) rename {client/src => src}/static/icons/light/underline.svg (100%) rename {client/src => src}/static/icons/light/undo-alt.svg (100%) rename {client/src => src}/static/icons/light/undo.svg (100%) rename {client/src => src}/static/icons/light/unicorn.svg (100%) rename {client/src => src}/static/icons/light/union.svg (100%) rename {client/src => src}/static/icons/light/universal-access.svg (100%) rename {client/src => src}/static/icons/light/university.svg (100%) rename {client/src => src}/static/icons/light/unlink.svg (100%) rename {client/src => src}/static/icons/light/unlock-alt.svg (100%) rename {client/src => src}/static/icons/light/unlock.svg (100%) rename {client/src => src}/static/icons/light/upload.svg (100%) rename {client/src => src}/static/icons/light/usb-drive.svg (100%) rename {client/src => src}/static/icons/light/usd-circle.svg (100%) rename {client/src => src}/static/icons/light/usd-square.svg (100%) rename {client/src => src}/static/icons/light/user-alien.svg (100%) rename {client/src => src}/static/icons/light/user-alt-slash.svg (100%) rename {client/src => src}/static/icons/light/user-alt.svg (100%) rename {client/src => src}/static/icons/light/user-astronaut.svg (100%) rename {client/src => src}/static/icons/light/user-chart.svg (100%) rename {client/src => src}/static/icons/light/user-check.svg (100%) rename {client/src => src}/static/icons/light/user-circle.svg (100%) rename {client/src => src}/static/icons/light/user-clock.svg (100%) rename {client/src => src}/static/icons/light/user-cog.svg (100%) rename {client/src => src}/static/icons/light/user-cowboy.svg (100%) rename {client/src => src}/static/icons/light/user-crown.svg (100%) rename {client/src => src}/static/icons/light/user-edit.svg (100%) rename {client/src => src}/static/icons/light/user-friends.svg (100%) rename {client/src => src}/static/icons/light/user-graduate.svg (100%) rename {client/src => src}/static/icons/light/user-hard-hat.svg (100%) rename {client/src => src}/static/icons/light/user-headset.svg (100%) rename {client/src => src}/static/icons/light/user-injured.svg (100%) rename {client/src => src}/static/icons/light/user-lock.svg (100%) rename {client/src => src}/static/icons/light/user-md-chat.svg (100%) rename {client/src => src}/static/icons/light/user-md.svg (100%) rename {client/src => src}/static/icons/light/user-minus.svg (100%) rename {client/src => src}/static/icons/light/user-music.svg (100%) rename {client/src => src}/static/icons/light/user-ninja.svg (100%) rename {client/src => src}/static/icons/light/user-nurse.svg (100%) rename {client/src => src}/static/icons/light/user-plus.svg (100%) rename {client/src => src}/static/icons/light/user-robot.svg (100%) rename {client/src => src}/static/icons/light/user-secret.svg (100%) rename {client/src => src}/static/icons/light/user-shield.svg (100%) rename {client/src => src}/static/icons/light/user-slash.svg (100%) rename {client/src => src}/static/icons/light/user-tag.svg (100%) rename {client/src => src}/static/icons/light/user-tie.svg (100%) rename {client/src => src}/static/icons/light/user-times.svg (100%) rename {client/src => src}/static/icons/light/user-visor.svg (100%) rename {client/src => src}/static/icons/light/user.svg (100%) rename {client/src => src}/static/icons/light/users-class.svg (100%) rename {client/src => src}/static/icons/light/users-cog.svg (100%) rename {client/src => src}/static/icons/light/users-crown.svg (100%) rename {client/src => src}/static/icons/light/users-medical.svg (100%) rename {client/src => src}/static/icons/light/users.svg (100%) rename {client/src => src}/static/icons/light/utensil-fork.svg (100%) rename {client/src => src}/static/icons/light/utensil-knife.svg (100%) rename {client/src => src}/static/icons/light/utensil-spoon.svg (100%) rename {client/src => src}/static/icons/light/utensils-alt.svg (100%) rename {client/src => src}/static/icons/light/utensils.svg (100%) rename {client/src => src}/static/icons/light/vacuum-robot.svg (100%) rename {client/src => src}/static/icons/light/vacuum.svg (100%) rename {client/src => src}/static/icons/light/value-absolute.svg (100%) rename {client/src => src}/static/icons/light/vector-square.svg (100%) rename {client/src => src}/static/icons/light/venus-double.svg (100%) rename {client/src => src}/static/icons/light/venus-mars.svg (100%) rename {client/src => src}/static/icons/light/venus.svg (100%) rename {client/src => src}/static/icons/light/vhs.svg (100%) rename {client/src => src}/static/icons/light/vial.svg (100%) rename {client/src => src}/static/icons/light/vials.svg (100%) rename {client/src => src}/static/icons/light/video-plus.svg (100%) rename {client/src => src}/static/icons/light/video-slash.svg (100%) rename {client/src => src}/static/icons/light/video.svg (100%) rename {client/src => src}/static/icons/light/vihara.svg (100%) rename {client/src => src}/static/icons/light/violin.svg (100%) rename {client/src => src}/static/icons/light/voicemail.svg (100%) rename {client/src => src}/static/icons/light/volcano.svg (100%) rename {client/src => src}/static/icons/light/volleyball-ball.svg (100%) rename {client/src => src}/static/icons/light/volume-down.svg (100%) rename {client/src => src}/static/icons/light/volume-mute.svg (100%) rename {client/src => src}/static/icons/light/volume-off.svg (100%) rename {client/src => src}/static/icons/light/volume-slash.svg (100%) rename {client/src => src}/static/icons/light/volume-up.svg (100%) rename {client/src => src}/static/icons/light/volume.svg (100%) rename {client/src => src}/static/icons/light/vote-nay.svg (100%) rename {client/src => src}/static/icons/light/vote-yea.svg (100%) rename {client/src => src}/static/icons/light/vr-cardboard.svg (100%) rename {client/src => src}/static/icons/light/wagon-covered.svg (100%) rename {client/src => src}/static/icons/light/walker.svg (100%) rename {client/src => src}/static/icons/light/walkie-talkie.svg (100%) rename {client/src => src}/static/icons/light/walking.svg (100%) rename {client/src => src}/static/icons/light/wallet.svg (100%) rename {client/src => src}/static/icons/light/wand-magic.svg (100%) rename {client/src => src}/static/icons/light/wand.svg (100%) rename {client/src => src}/static/icons/light/warehouse-alt.svg (100%) rename {client/src => src}/static/icons/light/warehouse.svg (100%) rename {client/src => src}/static/icons/light/washer.svg (100%) rename {client/src => src}/static/icons/light/watch-calculator.svg (100%) rename {client/src => src}/static/icons/light/watch-fitness.svg (100%) rename {client/src => src}/static/icons/light/watch.svg (100%) rename {client/src => src}/static/icons/light/water-lower.svg (100%) rename {client/src => src}/static/icons/light/water-rise.svg (100%) rename {client/src => src}/static/icons/light/water.svg (100%) rename {client/src => src}/static/icons/light/wave-sine.svg (100%) rename {client/src => src}/static/icons/light/wave-square.svg (100%) rename {client/src => src}/static/icons/light/wave-triangle.svg (100%) rename {client/src => src}/static/icons/light/waveform-path.svg (100%) rename {client/src => src}/static/icons/light/waveform.svg (100%) rename {client/src => src}/static/icons/light/webcam-slash.svg (100%) rename {client/src => src}/static/icons/light/webcam.svg (100%) rename {client/src => src}/static/icons/light/weight-hanging.svg (100%) rename {client/src => src}/static/icons/light/weight.svg (100%) rename {client/src => src}/static/icons/light/whale.svg (100%) rename {client/src => src}/static/icons/light/wheat.svg (100%) rename {client/src => src}/static/icons/light/wheelchair.svg (100%) rename {client/src => src}/static/icons/light/whistle.svg (100%) rename {client/src => src}/static/icons/light/wifi-1.svg (100%) rename {client/src => src}/static/icons/light/wifi-2.svg (100%) rename {client/src => src}/static/icons/light/wifi-slash.svg (100%) rename {client/src => src}/static/icons/light/wifi.svg (100%) rename {client/src => src}/static/icons/light/wind-turbine.svg (100%) rename {client/src => src}/static/icons/light/wind-warning.svg (100%) rename {client/src => src}/static/icons/light/wind.svg (100%) rename {client/src => src}/static/icons/light/window-alt.svg (100%) rename {client/src => src}/static/icons/light/window-close.svg (100%) rename {client/src => src}/static/icons/light/window-frame-open.svg (100%) rename {client/src => src}/static/icons/light/window-frame.svg (100%) rename {client/src => src}/static/icons/light/window-maximize.svg (100%) rename {client/src => src}/static/icons/light/window-minimize.svg (100%) rename {client/src => src}/static/icons/light/window-restore.svg (100%) rename {client/src => src}/static/icons/light/window.svg (100%) rename {client/src => src}/static/icons/light/windsock.svg (100%) rename {client/src => src}/static/icons/light/wine-bottle.svg (100%) rename {client/src => src}/static/icons/light/wine-glass-alt.svg (100%) rename {client/src => src}/static/icons/light/wine-glass.svg (100%) rename {client/src => src}/static/icons/light/won-sign.svg (100%) rename {client/src => src}/static/icons/light/wreath.svg (100%) rename {client/src => src}/static/icons/light/wrench.svg (100%) rename {client/src => src}/static/icons/light/x-ray.svg (100%) rename {client/src => src}/static/icons/light/yen-sign.svg (100%) rename {client/src => src}/static/icons/light/yin-yang.svg (100%) rename {client/src => src}/static/icons/regular/abacus.svg (100%) rename {client/src => src}/static/icons/regular/acorn.svg (100%) rename {client/src => src}/static/icons/regular/ad.svg (100%) rename {client/src => src}/static/icons/regular/address-book.svg (100%) rename {client/src => src}/static/icons/regular/address-card.svg (100%) rename {client/src => src}/static/icons/regular/adjust.svg (100%) rename {client/src => src}/static/icons/regular/air-conditioner.svg (100%) rename {client/src => src}/static/icons/regular/air-freshener.svg (100%) rename {client/src => src}/static/icons/regular/alarm-clock.svg (100%) rename {client/src => src}/static/icons/regular/alarm-exclamation.svg (100%) rename {client/src => src}/static/icons/regular/alarm-plus.svg (100%) rename {client/src => src}/static/icons/regular/alarm-snooze.svg (100%) rename {client/src => src}/static/icons/regular/album-collection.svg (100%) rename {client/src => src}/static/icons/regular/album.svg (100%) rename {client/src => src}/static/icons/regular/alicorn.svg (100%) rename {client/src => src}/static/icons/regular/alien-monster.svg (100%) rename {client/src => src}/static/icons/regular/alien.svg (100%) rename {client/src => src}/static/icons/regular/align-center.svg (100%) rename {client/src => src}/static/icons/regular/align-justify.svg (100%) rename {client/src => src}/static/icons/regular/align-left.svg (100%) rename {client/src => src}/static/icons/regular/align-right.svg (100%) rename {client/src => src}/static/icons/regular/align-slash.svg (100%) rename {client/src => src}/static/icons/regular/allergies.svg (100%) rename {client/src => src}/static/icons/regular/ambulance.svg (100%) rename {client/src => src}/static/icons/regular/american-sign-language-interpreting.svg (100%) rename {client/src => src}/static/icons/regular/amp-guitar.svg (100%) rename {client/src => src}/static/icons/regular/analytics.svg (100%) rename {client/src => src}/static/icons/regular/anchor.svg (100%) rename {client/src => src}/static/icons/regular/angel.svg (100%) rename {client/src => src}/static/icons/regular/angle-double-down.svg (100%) rename {client/src => src}/static/icons/regular/angle-double-left.svg (100%) rename {client/src => src}/static/icons/regular/angle-double-right.svg (100%) rename {client/src => src}/static/icons/regular/angle-double-up.svg (100%) rename {client/src => src}/static/icons/regular/angle-down.svg (100%) rename {client/src => src}/static/icons/regular/angle-left.svg (100%) rename {client/src => src}/static/icons/regular/angle-right.svg (100%) rename {client/src => src}/static/icons/regular/angle-up.svg (100%) rename {client/src => src}/static/icons/regular/angry.svg (100%) rename {client/src => src}/static/icons/regular/ankh.svg (100%) rename {client/src => src}/static/icons/regular/apple-alt.svg (100%) rename {client/src => src}/static/icons/regular/apple-crate.svg (100%) rename {client/src => src}/static/icons/regular/archive.svg (100%) rename {client/src => src}/static/icons/regular/archway.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-circle-down.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-circle-left.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-circle-right.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-circle-up.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-down.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-from-bottom.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-from-left.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-from-right.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-from-top.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-left.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-right.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-square-down.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-square-left.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-square-right.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-square-up.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-to-bottom.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-to-left.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-to-right.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-to-top.svg (100%) rename {client/src => src}/static/icons/regular/arrow-alt-up.svg (100%) rename {client/src => src}/static/icons/regular/arrow-circle-down.svg (100%) rename {client/src => src}/static/icons/regular/arrow-circle-left.svg (100%) rename {client/src => src}/static/icons/regular/arrow-circle-right.svg (100%) rename {client/src => src}/static/icons/regular/arrow-circle-up.svg (100%) rename {client/src => src}/static/icons/regular/arrow-down.svg (100%) rename {client/src => src}/static/icons/regular/arrow-from-bottom.svg (100%) rename {client/src => src}/static/icons/regular/arrow-from-left.svg (100%) rename {client/src => src}/static/icons/regular/arrow-from-right.svg (100%) rename {client/src => src}/static/icons/regular/arrow-from-top.svg (100%) rename {client/src => src}/static/icons/regular/arrow-left.svg (100%) rename {client/src => src}/static/icons/regular/arrow-right.svg (100%) rename {client/src => src}/static/icons/regular/arrow-square-down.svg (100%) rename {client/src => src}/static/icons/regular/arrow-square-left.svg (100%) rename {client/src => src}/static/icons/regular/arrow-square-right.svg (100%) rename {client/src => src}/static/icons/regular/arrow-square-up.svg (100%) rename {client/src => src}/static/icons/regular/arrow-to-bottom.svg (100%) rename {client/src => src}/static/icons/regular/arrow-to-left.svg (100%) rename {client/src => src}/static/icons/regular/arrow-to-right.svg (100%) rename {client/src => src}/static/icons/regular/arrow-to-top.svg (100%) rename {client/src => src}/static/icons/regular/arrow-up.svg (100%) rename {client/src => src}/static/icons/regular/arrows-alt-h.svg (100%) rename {client/src => src}/static/icons/regular/arrows-alt-v.svg (100%) rename {client/src => src}/static/icons/regular/arrows-alt.svg (100%) rename {client/src => src}/static/icons/regular/arrows-h.svg (100%) rename {client/src => src}/static/icons/regular/arrows-v.svg (100%) rename {client/src => src}/static/icons/regular/arrows.svg (100%) rename {client/src => src}/static/icons/regular/assistive-listening-systems.svg (100%) rename {client/src => src}/static/icons/regular/asterisk.svg (100%) rename {client/src => src}/static/icons/regular/at.svg (100%) rename {client/src => src}/static/icons/regular/atlas.svg (100%) rename {client/src => src}/static/icons/regular/atom-alt.svg (100%) rename {client/src => src}/static/icons/regular/atom.svg (100%) rename {client/src => src}/static/icons/regular/audio-description.svg (100%) rename {client/src => src}/static/icons/regular/award.svg (100%) rename {client/src => src}/static/icons/regular/axe-battle.svg (100%) rename {client/src => src}/static/icons/regular/axe.svg (100%) rename {client/src => src}/static/icons/regular/baby-carriage.svg (100%) rename {client/src => src}/static/icons/regular/baby.svg (100%) rename {client/src => src}/static/icons/regular/backpack.svg (100%) rename {client/src => src}/static/icons/regular/backspace.svg (100%) rename {client/src => src}/static/icons/regular/backward.svg (100%) rename {client/src => src}/static/icons/regular/bacon.svg (100%) rename {client/src => src}/static/icons/regular/badge-check.svg (100%) rename {client/src => src}/static/icons/regular/badge-dollar.svg (100%) rename {client/src => src}/static/icons/regular/badge-percent.svg (100%) rename {client/src => src}/static/icons/regular/badge-sheriff.svg (100%) rename {client/src => src}/static/icons/regular/badge.svg (100%) rename {client/src => src}/static/icons/regular/badger-honey.svg (100%) rename {client/src => src}/static/icons/regular/bags-shopping.svg (100%) rename {client/src => src}/static/icons/regular/bahai.svg (100%) rename {client/src => src}/static/icons/regular/balance-scale-left.svg (100%) rename {client/src => src}/static/icons/regular/balance-scale-right.svg (100%) rename {client/src => src}/static/icons/regular/balance-scale.svg (100%) rename {client/src => src}/static/icons/regular/ball-pile.svg (100%) rename {client/src => src}/static/icons/regular/ballot-check.svg (100%) rename {client/src => src}/static/icons/regular/ballot.svg (100%) rename {client/src => src}/static/icons/regular/ban.svg (100%) rename {client/src => src}/static/icons/regular/band-aid.svg (100%) rename {client/src => src}/static/icons/regular/banjo.svg (100%) rename {client/src => src}/static/icons/regular/barcode-alt.svg (100%) rename {client/src => src}/static/icons/regular/barcode-read.svg (100%) rename {client/src => src}/static/icons/regular/barcode-scan.svg (100%) rename {client/src => src}/static/icons/regular/barcode.svg (100%) rename {client/src => src}/static/icons/regular/bars.svg (100%) rename {client/src => src}/static/icons/regular/baseball-ball.svg (100%) rename {client/src => src}/static/icons/regular/baseball.svg (100%) rename {client/src => src}/static/icons/regular/basketball-ball.svg (100%) rename {client/src => src}/static/icons/regular/basketball-hoop.svg (100%) rename {client/src => src}/static/icons/regular/bat.svg (100%) rename {client/src => src}/static/icons/regular/bath.svg (100%) rename {client/src => src}/static/icons/regular/battery-bolt.svg (100%) rename {client/src => src}/static/icons/regular/battery-empty.svg (100%) rename {client/src => src}/static/icons/regular/battery-full.svg (100%) rename {client/src => src}/static/icons/regular/battery-half.svg (100%) rename {client/src => src}/static/icons/regular/battery-quarter.svg (100%) rename {client/src => src}/static/icons/regular/battery-slash.svg (100%) rename {client/src => src}/static/icons/regular/battery-three-quarters.svg (100%) rename {client/src => src}/static/icons/regular/bed-alt.svg (100%) rename {client/src => src}/static/icons/regular/bed-bunk.svg (100%) rename {client/src => src}/static/icons/regular/bed-empty.svg (100%) rename {client/src => src}/static/icons/regular/bed.svg (100%) rename {client/src => src}/static/icons/regular/beer.svg (100%) rename {client/src => src}/static/icons/regular/bell-exclamation.svg (100%) rename {client/src => src}/static/icons/regular/bell-on.svg (100%) rename {client/src => src}/static/icons/regular/bell-plus.svg (100%) rename {client/src => src}/static/icons/regular/bell-school-slash.svg (100%) rename {client/src => src}/static/icons/regular/bell-school.svg (100%) rename {client/src => src}/static/icons/regular/bell-slash.svg (100%) rename {client/src => src}/static/icons/regular/bell.svg (100%) rename {client/src => src}/static/icons/regular/bells.svg (100%) rename {client/src => src}/static/icons/regular/betamax.svg (100%) rename {client/src => src}/static/icons/regular/bezier-curve.svg (100%) rename {client/src => src}/static/icons/regular/bible.svg (100%) rename {client/src => src}/static/icons/regular/bicycle.svg (100%) rename {client/src => src}/static/icons/regular/biking-mountain.svg (100%) rename {client/src => src}/static/icons/regular/biking.svg (100%) rename {client/src => src}/static/icons/regular/binoculars.svg (100%) rename {client/src => src}/static/icons/regular/biohazard.svg (100%) rename {client/src => src}/static/icons/regular/birthday-cake.svg (100%) rename {client/src => src}/static/icons/regular/blanket.svg (100%) rename {client/src => src}/static/icons/regular/blender-phone.svg (100%) rename {client/src => src}/static/icons/regular/blender.svg (100%) rename {client/src => src}/static/icons/regular/blind.svg (100%) rename {client/src => src}/static/icons/regular/blinds-open.svg (100%) rename {client/src => src}/static/icons/regular/blinds-raised.svg (100%) rename {client/src => src}/static/icons/regular/blinds.svg (100%) rename {client/src => src}/static/icons/regular/blog.svg (100%) rename {client/src => src}/static/icons/regular/bold.svg (100%) rename {client/src => src}/static/icons/regular/bolt.svg (100%) rename {client/src => src}/static/icons/regular/bomb.svg (100%) rename {client/src => src}/static/icons/regular/bone-break.svg (100%) rename {client/src => src}/static/icons/regular/bone.svg (100%) rename {client/src => src}/static/icons/regular/bong.svg (100%) rename {client/src => src}/static/icons/regular/book-alt.svg (100%) rename {client/src => src}/static/icons/regular/book-dead.svg (100%) rename {client/src => src}/static/icons/regular/book-heart.svg (100%) rename {client/src => src}/static/icons/regular/book-medical.svg (100%) rename {client/src => src}/static/icons/regular/book-open.svg (100%) rename {client/src => src}/static/icons/regular/book-reader.svg (100%) rename {client/src => src}/static/icons/regular/book-spells.svg (100%) rename {client/src => src}/static/icons/regular/book-user.svg (100%) rename {client/src => src}/static/icons/regular/book.svg (100%) rename {client/src => src}/static/icons/regular/bookmark.svg (100%) rename {client/src => src}/static/icons/regular/books-medical.svg (100%) rename {client/src => src}/static/icons/regular/books.svg (100%) rename {client/src => src}/static/icons/regular/boombox.svg (100%) rename {client/src => src}/static/icons/regular/boot.svg (100%) rename {client/src => src}/static/icons/regular/booth-curtain.svg (100%) rename {client/src => src}/static/icons/regular/border-all.svg (100%) rename {client/src => src}/static/icons/regular/border-bottom.svg (100%) rename {client/src => src}/static/icons/regular/border-center-h.svg (100%) rename {client/src => src}/static/icons/regular/border-center-v.svg (100%) rename {client/src => src}/static/icons/regular/border-inner.svg (100%) rename {client/src => src}/static/icons/regular/border-left.svg (100%) rename {client/src => src}/static/icons/regular/border-none.svg (100%) rename {client/src => src}/static/icons/regular/border-outer.svg (100%) rename {client/src => src}/static/icons/regular/border-right.svg (100%) rename {client/src => src}/static/icons/regular/border-style-alt.svg (100%) rename {client/src => src}/static/icons/regular/border-style.svg (100%) rename {client/src => src}/static/icons/regular/border-top.svg (100%) rename {client/src => src}/static/icons/regular/bow-arrow.svg (100%) rename {client/src => src}/static/icons/regular/bowling-ball.svg (100%) rename {client/src => src}/static/icons/regular/bowling-pins.svg (100%) rename {client/src => src}/static/icons/regular/box-alt.svg (100%) rename {client/src => src}/static/icons/regular/box-ballot.svg (100%) rename {client/src => src}/static/icons/regular/box-check.svg (100%) rename {client/src => src}/static/icons/regular/box-fragile.svg (100%) rename {client/src => src}/static/icons/regular/box-full.svg (100%) rename {client/src => src}/static/icons/regular/box-heart.svg (100%) rename {client/src => src}/static/icons/regular/box-open.svg (100%) rename {client/src => src}/static/icons/regular/box-up.svg (100%) rename {client/src => src}/static/icons/regular/box-usd.svg (100%) rename {client/src => src}/static/icons/regular/box.svg (100%) rename {client/src => src}/static/icons/regular/boxes-alt.svg (100%) rename {client/src => src}/static/icons/regular/boxes.svg (100%) rename {client/src => src}/static/icons/regular/boxing-glove.svg (100%) rename {client/src => src}/static/icons/regular/brackets-curly.svg (100%) rename {client/src => src}/static/icons/regular/brackets.svg (100%) rename {client/src => src}/static/icons/regular/braille.svg (100%) rename {client/src => src}/static/icons/regular/brain.svg (100%) rename {client/src => src}/static/icons/regular/bread-loaf.svg (100%) rename {client/src => src}/static/icons/regular/bread-slice.svg (100%) rename {client/src => src}/static/icons/regular/briefcase-medical.svg (100%) rename {client/src => src}/static/icons/regular/briefcase.svg (100%) rename {client/src => src}/static/icons/regular/bring-forward.svg (100%) rename {client/src => src}/static/icons/regular/bring-front.svg (100%) rename {client/src => src}/static/icons/regular/broadcast-tower.svg (100%) rename {client/src => src}/static/icons/regular/broom.svg (100%) rename {client/src => src}/static/icons/regular/browser.svg (100%) rename {client/src => src}/static/icons/regular/brush.svg (100%) rename {client/src => src}/static/icons/regular/bug.svg (100%) rename {client/src => src}/static/icons/regular/building.svg (100%) rename {client/src => src}/static/icons/regular/bullhorn.svg (100%) rename {client/src => src}/static/icons/regular/bullseye-arrow.svg (100%) rename {client/src => src}/static/icons/regular/bullseye-pointer.svg (100%) rename {client/src => src}/static/icons/regular/bullseye.svg (100%) rename {client/src => src}/static/icons/regular/burger-soda.svg (100%) rename {client/src => src}/static/icons/regular/burn.svg (100%) rename {client/src => src}/static/icons/regular/burrito.svg (100%) rename {client/src => src}/static/icons/regular/bus-alt.svg (100%) rename {client/src => src}/static/icons/regular/bus-school.svg (100%) rename {client/src => src}/static/icons/regular/bus.svg (100%) rename {client/src => src}/static/icons/regular/business-time.svg (100%) rename {client/src => src}/static/icons/regular/cabinet-filing.svg (100%) rename {client/src => src}/static/icons/regular/cactus.svg (100%) rename {client/src => src}/static/icons/regular/calculator-alt.svg (100%) rename {client/src => src}/static/icons/regular/calculator.svg (100%) rename {client/src => src}/static/icons/regular/calendar-alt.svg (100%) rename {client/src => src}/static/icons/regular/calendar-check.svg (100%) rename {client/src => src}/static/icons/regular/calendar-day.svg (100%) rename {client/src => src}/static/icons/regular/calendar-edit.svg (100%) rename {client/src => src}/static/icons/regular/calendar-exclamation.svg (100%) rename {client/src => src}/static/icons/regular/calendar-minus.svg (100%) rename {client/src => src}/static/icons/regular/calendar-plus.svg (100%) rename {client/src => src}/static/icons/regular/calendar-star.svg (100%) rename {client/src => src}/static/icons/regular/calendar-times.svg (100%) rename {client/src => src}/static/icons/regular/calendar-week.svg (100%) rename {client/src => src}/static/icons/regular/calendar.svg (100%) rename {client/src => src}/static/icons/regular/camcorder.svg (100%) rename {client/src => src}/static/icons/regular/camera-alt.svg (100%) rename {client/src => src}/static/icons/regular/camera-home.svg (100%) rename {client/src => src}/static/icons/regular/camera-movie.svg (100%) rename {client/src => src}/static/icons/regular/camera-polaroid.svg (100%) rename {client/src => src}/static/icons/regular/camera-retro.svg (100%) rename {client/src => src}/static/icons/regular/camera.svg (100%) rename {client/src => src}/static/icons/regular/campfire.svg (100%) rename {client/src => src}/static/icons/regular/campground.svg (100%) rename {client/src => src}/static/icons/regular/candle-holder.svg (100%) rename {client/src => src}/static/icons/regular/candy-cane.svg (100%) rename {client/src => src}/static/icons/regular/candy-corn.svg (100%) rename {client/src => src}/static/icons/regular/cannabis.svg (100%) rename {client/src => src}/static/icons/regular/capsules.svg (100%) rename {client/src => src}/static/icons/regular/car-alt.svg (100%) rename {client/src => src}/static/icons/regular/car-battery.svg (100%) rename {client/src => src}/static/icons/regular/car-building.svg (100%) rename {client/src => src}/static/icons/regular/car-bump.svg (100%) rename {client/src => src}/static/icons/regular/car-bus.svg (100%) rename {client/src => src}/static/icons/regular/car-crash.svg (100%) rename {client/src => src}/static/icons/regular/car-garage.svg (100%) rename {client/src => src}/static/icons/regular/car-mechanic.svg (100%) rename {client/src => src}/static/icons/regular/car-side.svg (100%) rename {client/src => src}/static/icons/regular/car-tilt.svg (100%) rename {client/src => src}/static/icons/regular/car-wash.svg (100%) rename {client/src => src}/static/icons/regular/car.svg (100%) rename {client/src => src}/static/icons/regular/caravan-alt.svg (100%) rename {client/src => src}/static/icons/regular/caravan.svg (100%) rename {client/src => src}/static/icons/regular/caret-circle-down.svg (100%) rename {client/src => src}/static/icons/regular/caret-circle-left.svg (100%) rename {client/src => src}/static/icons/regular/caret-circle-right.svg (100%) rename {client/src => src}/static/icons/regular/caret-circle-up.svg (100%) rename {client/src => src}/static/icons/regular/caret-down.svg (100%) rename {client/src => src}/static/icons/regular/caret-left.svg (100%) rename {client/src => src}/static/icons/regular/caret-right.svg (100%) rename {client/src => src}/static/icons/regular/caret-square-down.svg (100%) rename {client/src => src}/static/icons/regular/caret-square-left.svg (100%) rename {client/src => src}/static/icons/regular/caret-square-right.svg (100%) rename {client/src => src}/static/icons/regular/caret-square-up.svg (100%) rename {client/src => src}/static/icons/regular/caret-up.svg (100%) rename {client/src => src}/static/icons/regular/carrot.svg (100%) rename {client/src => src}/static/icons/regular/cars.svg (100%) rename {client/src => src}/static/icons/regular/cart-arrow-down.svg (100%) rename {client/src => src}/static/icons/regular/cart-plus.svg (100%) rename {client/src => src}/static/icons/regular/cash-register.svg (100%) rename {client/src => src}/static/icons/regular/cassette-tape.svg (100%) rename {client/src => src}/static/icons/regular/cat-space.svg (100%) rename {client/src => src}/static/icons/regular/cat.svg (100%) rename {client/src => src}/static/icons/regular/cauldron.svg (100%) rename {client/src => src}/static/icons/regular/cctv.svg (100%) rename {client/src => src}/static/icons/regular/certificate.svg (100%) rename {client/src => src}/static/icons/regular/chair-office.svg (100%) rename {client/src => src}/static/icons/regular/chair.svg (100%) rename {client/src => src}/static/icons/regular/chalkboard-teacher.svg (100%) rename {client/src => src}/static/icons/regular/chalkboard.svg (100%) rename {client/src => src}/static/icons/regular/charging-station.svg (100%) rename {client/src => src}/static/icons/regular/chart-area.svg (100%) rename {client/src => src}/static/icons/regular/chart-bar.svg (100%) rename {client/src => src}/static/icons/regular/chart-line-down.svg (100%) rename {client/src => src}/static/icons/regular/chart-line.svg (100%) rename {client/src => src}/static/icons/regular/chart-network.svg (100%) rename {client/src => src}/static/icons/regular/chart-pie-alt.svg (100%) rename {client/src => src}/static/icons/regular/chart-pie.svg (100%) rename {client/src => src}/static/icons/regular/chart-scatter.svg (100%) rename {client/src => src}/static/icons/regular/check-circle.svg (100%) rename {client/src => src}/static/icons/regular/check-double.svg (100%) rename {client/src => src}/static/icons/regular/check-square.svg (100%) rename {client/src => src}/static/icons/regular/check.svg (100%) rename {client/src => src}/static/icons/regular/cheese-swiss.svg (100%) rename {client/src => src}/static/icons/regular/cheese.svg (100%) rename {client/src => src}/static/icons/regular/cheeseburger.svg (100%) rename {client/src => src}/static/icons/regular/chess-bishop-alt.svg (100%) rename {client/src => src}/static/icons/regular/chess-bishop.svg (100%) rename {client/src => src}/static/icons/regular/chess-board.svg (100%) rename {client/src => src}/static/icons/regular/chess-clock-alt.svg (100%) rename {client/src => src}/static/icons/regular/chess-clock.svg (100%) rename {client/src => src}/static/icons/regular/chess-king-alt.svg (100%) rename {client/src => src}/static/icons/regular/chess-king.svg (100%) rename {client/src => src}/static/icons/regular/chess-knight-alt.svg (100%) rename {client/src => src}/static/icons/regular/chess-knight.svg (100%) rename {client/src => src}/static/icons/regular/chess-pawn-alt.svg (100%) rename {client/src => src}/static/icons/regular/chess-pawn.svg (100%) rename {client/src => src}/static/icons/regular/chess-queen-alt.svg (100%) rename {client/src => src}/static/icons/regular/chess-queen.svg (100%) rename {client/src => src}/static/icons/regular/chess-rook-alt.svg (100%) rename {client/src => src}/static/icons/regular/chess-rook.svg (100%) rename {client/src => src}/static/icons/regular/chess.svg (100%) rename {client/src => src}/static/icons/regular/chevron-circle-down.svg (100%) rename {client/src => src}/static/icons/regular/chevron-circle-left.svg (100%) rename {client/src => src}/static/icons/regular/chevron-circle-right.svg (100%) rename {client/src => src}/static/icons/regular/chevron-circle-up.svg (100%) rename {client/src => src}/static/icons/regular/chevron-double-down.svg (100%) rename {client/src => src}/static/icons/regular/chevron-double-left.svg (100%) rename {client/src => src}/static/icons/regular/chevron-double-right.svg (100%) rename {client/src => src}/static/icons/regular/chevron-double-up.svg (100%) rename {client/src => src}/static/icons/regular/chevron-down.svg (100%) rename {client/src => src}/static/icons/regular/chevron-left.svg (100%) rename {client/src => src}/static/icons/regular/chevron-right.svg (100%) rename {client/src => src}/static/icons/regular/chevron-square-down.svg (100%) rename {client/src => src}/static/icons/regular/chevron-square-left.svg (100%) rename {client/src => src}/static/icons/regular/chevron-square-right.svg (100%) rename {client/src => src}/static/icons/regular/chevron-square-up.svg (100%) rename {client/src => src}/static/icons/regular/chevron-up.svg (100%) rename {client/src => src}/static/icons/regular/child.svg (100%) rename {client/src => src}/static/icons/regular/chimney.svg (100%) rename {client/src => src}/static/icons/regular/church.svg (100%) rename {client/src => src}/static/icons/regular/circle-notch.svg (100%) rename {client/src => src}/static/icons/regular/circle.svg (100%) rename {client/src => src}/static/icons/regular/city.svg (100%) rename {client/src => src}/static/icons/regular/clarinet.svg (100%) rename {client/src => src}/static/icons/regular/claw-marks.svg (100%) rename {client/src => src}/static/icons/regular/clinic-medical.svg (100%) rename {client/src => src}/static/icons/regular/clipboard-check.svg (100%) rename {client/src => src}/static/icons/regular/clipboard-list-check.svg (100%) rename {client/src => src}/static/icons/regular/clipboard-list.svg (100%) rename {client/src => src}/static/icons/regular/clipboard-prescription.svg (100%) rename {client/src => src}/static/icons/regular/clipboard-user.svg (100%) rename {client/src => src}/static/icons/regular/clipboard.svg (100%) rename {client/src => src}/static/icons/regular/clock.svg (100%) rename {client/src => src}/static/icons/regular/clone.svg (100%) rename {client/src => src}/static/icons/regular/closed-captioning.svg (100%) rename {client/src => src}/static/icons/regular/cloud-download-alt.svg (100%) rename {client/src => src}/static/icons/regular/cloud-download.svg (100%) rename {client/src => src}/static/icons/regular/cloud-drizzle.svg (100%) rename {client/src => src}/static/icons/regular/cloud-hail-mixed.svg (100%) rename {client/src => src}/static/icons/regular/cloud-hail.svg (100%) rename {client/src => src}/static/icons/regular/cloud-meatball.svg (100%) rename {client/src => src}/static/icons/regular/cloud-moon-rain.svg (100%) rename {client/src => src}/static/icons/regular/cloud-moon.svg (100%) rename {client/src => src}/static/icons/regular/cloud-music.svg (100%) rename {client/src => src}/static/icons/regular/cloud-rain.svg (100%) rename {client/src => src}/static/icons/regular/cloud-rainbow.svg (100%) rename {client/src => src}/static/icons/regular/cloud-showers-heavy.svg (100%) rename {client/src => src}/static/icons/regular/cloud-showers.svg (100%) rename {client/src => src}/static/icons/regular/cloud-sleet.svg (100%) rename {client/src => src}/static/icons/regular/cloud-snow.svg (100%) rename {client/src => src}/static/icons/regular/cloud-sun-rain.svg (100%) rename {client/src => src}/static/icons/regular/cloud-sun.svg (100%) rename {client/src => src}/static/icons/regular/cloud-upload-alt.svg (100%) rename {client/src => src}/static/icons/regular/cloud-upload.svg (100%) rename {client/src => src}/static/icons/regular/cloud.svg (100%) rename {client/src => src}/static/icons/regular/clouds-moon.svg (100%) rename {client/src => src}/static/icons/regular/clouds-sun.svg (100%) rename {client/src => src}/static/icons/regular/clouds.svg (100%) rename {client/src => src}/static/icons/regular/club.svg (100%) rename {client/src => src}/static/icons/regular/cocktail.svg (100%) rename {client/src => src}/static/icons/regular/code-branch.svg (100%) rename {client/src => src}/static/icons/regular/code-commit.svg (100%) rename {client/src => src}/static/icons/regular/code-merge.svg (100%) rename {client/src => src}/static/icons/regular/code.svg (100%) rename {client/src => src}/static/icons/regular/coffee-pot.svg (100%) rename {client/src => src}/static/icons/regular/coffee-togo.svg (100%) rename {client/src => src}/static/icons/regular/coffee.svg (100%) rename {client/src => src}/static/icons/regular/coffin.svg (100%) rename {client/src => src}/static/icons/regular/cog.svg (100%) rename {client/src => src}/static/icons/regular/cogs.svg (100%) rename {client/src => src}/static/icons/regular/coin.svg (100%) rename {client/src => src}/static/icons/regular/coins.svg (100%) rename {client/src => src}/static/icons/regular/columns.svg (100%) rename {client/src => src}/static/icons/regular/comet.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-check.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-dollar.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-dots.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-edit.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-exclamation.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-lines.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-medical.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-minus.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-music.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-plus.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-slash.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-smile.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt-times.svg (100%) rename {client/src => src}/static/icons/regular/comment-alt.svg (100%) rename {client/src => src}/static/icons/regular/comment-check.svg (100%) rename {client/src => src}/static/icons/regular/comment-dollar.svg (100%) rename {client/src => src}/static/icons/regular/comment-dots.svg (100%) rename {client/src => src}/static/icons/regular/comment-edit.svg (100%) rename {client/src => src}/static/icons/regular/comment-exclamation.svg (100%) rename {client/src => src}/static/icons/regular/comment-lines.svg (100%) rename {client/src => src}/static/icons/regular/comment-medical.svg (100%) rename {client/src => src}/static/icons/regular/comment-minus.svg (100%) rename {client/src => src}/static/icons/regular/comment-music.svg (100%) rename {client/src => src}/static/icons/regular/comment-plus.svg (100%) rename {client/src => src}/static/icons/regular/comment-slash.svg (100%) rename {client/src => src}/static/icons/regular/comment-smile.svg (100%) rename {client/src => src}/static/icons/regular/comment-times.svg (100%) rename {client/src => src}/static/icons/regular/comment.svg (100%) rename {client/src => src}/static/icons/regular/comments-alt-dollar.svg (100%) rename {client/src => src}/static/icons/regular/comments-alt.svg (100%) rename {client/src => src}/static/icons/regular/comments-dollar.svg (100%) rename {client/src => src}/static/icons/regular/comments.svg (100%) rename {client/src => src}/static/icons/regular/compact-disc.svg (100%) rename {client/src => src}/static/icons/regular/compass-slash.svg (100%) rename {client/src => src}/static/icons/regular/compass.svg (100%) rename {client/src => src}/static/icons/regular/compress-alt.svg (100%) rename {client/src => src}/static/icons/regular/compress-arrows-alt.svg (100%) rename {client/src => src}/static/icons/regular/compress-wide.svg (100%) rename {client/src => src}/static/icons/regular/compress.svg (100%) rename {client/src => src}/static/icons/regular/computer-classic.svg (100%) rename {client/src => src}/static/icons/regular/computer-speaker.svg (100%) rename {client/src => src}/static/icons/regular/concierge-bell.svg (100%) rename {client/src => src}/static/icons/regular/construction.svg (100%) rename {client/src => src}/static/icons/regular/container-storage.svg (100%) rename {client/src => src}/static/icons/regular/conveyor-belt-alt.svg (100%) rename {client/src => src}/static/icons/regular/conveyor-belt.svg (100%) rename {client/src => src}/static/icons/regular/cookie-bite.svg (100%) rename {client/src => src}/static/icons/regular/cookie.svg (100%) rename {client/src => src}/static/icons/regular/copy.svg (100%) rename {client/src => src}/static/icons/regular/copyright.svg (100%) rename {client/src => src}/static/icons/regular/corn.svg (100%) rename {client/src => src}/static/icons/regular/couch.svg (100%) rename {client/src => src}/static/icons/regular/cow.svg (100%) rename {client/src => src}/static/icons/regular/cowbell-more.svg (100%) rename {client/src => src}/static/icons/regular/cowbell.svg (100%) rename {client/src => src}/static/icons/regular/credit-card-blank.svg (100%) rename {client/src => src}/static/icons/regular/credit-card-front.svg (100%) rename {client/src => src}/static/icons/regular/credit-card.svg (100%) rename {client/src => src}/static/icons/regular/cricket.svg (100%) rename {client/src => src}/static/icons/regular/croissant.svg (100%) rename {client/src => src}/static/icons/regular/crop-alt.svg (100%) rename {client/src => src}/static/icons/regular/crop.svg (100%) rename {client/src => src}/static/icons/regular/cross.svg (100%) rename {client/src => src}/static/icons/regular/crosshairs.svg (100%) rename {client/src => src}/static/icons/regular/crow.svg (100%) rename {client/src => src}/static/icons/regular/crown.svg (100%) rename {client/src => src}/static/icons/regular/crutch.svg (100%) rename {client/src => src}/static/icons/regular/crutches.svg (100%) rename {client/src => src}/static/icons/regular/cube.svg (100%) rename {client/src => src}/static/icons/regular/cubes.svg (100%) rename {client/src => src}/static/icons/regular/curling.svg (100%) rename {client/src => src}/static/icons/regular/cut.svg (100%) rename {client/src => src}/static/icons/regular/dagger.svg (100%) rename {client/src => src}/static/icons/regular/database.svg (100%) rename {client/src => src}/static/icons/regular/deaf.svg (100%) rename {client/src => src}/static/icons/regular/debug.svg (100%) rename {client/src => src}/static/icons/regular/deer-rudolph.svg (100%) rename {client/src => src}/static/icons/regular/deer.svg (100%) rename {client/src => src}/static/icons/regular/democrat.svg (100%) rename {client/src => src}/static/icons/regular/desktop-alt.svg (100%) rename {client/src => src}/static/icons/regular/desktop.svg (100%) rename {client/src => src}/static/icons/regular/dewpoint.svg (100%) rename {client/src => src}/static/icons/regular/dharmachakra.svg (100%) rename {client/src => src}/static/icons/regular/diagnoses.svg (100%) rename {client/src => src}/static/icons/regular/diamond.svg (100%) rename {client/src => src}/static/icons/regular/dice-d10.svg (100%) rename {client/src => src}/static/icons/regular/dice-d12.svg (100%) rename {client/src => src}/static/icons/regular/dice-d20.svg (100%) rename {client/src => src}/static/icons/regular/dice-d4.svg (100%) rename {client/src => src}/static/icons/regular/dice-d6.svg (100%) rename {client/src => src}/static/icons/regular/dice-d8.svg (100%) rename {client/src => src}/static/icons/regular/dice-five.svg (100%) rename {client/src => src}/static/icons/regular/dice-four.svg (100%) rename {client/src => src}/static/icons/regular/dice-one.svg (100%) rename {client/src => src}/static/icons/regular/dice-six.svg (100%) rename {client/src => src}/static/icons/regular/dice-three.svg (100%) rename {client/src => src}/static/icons/regular/dice-two.svg (100%) rename {client/src => src}/static/icons/regular/dice.svg (100%) rename {client/src => src}/static/icons/regular/digging.svg (100%) rename {client/src => src}/static/icons/regular/digital-tachograph.svg (100%) rename {client/src => src}/static/icons/regular/diploma.svg (100%) rename {client/src => src}/static/icons/regular/directions.svg (100%) rename {client/src => src}/static/icons/regular/disc-drive.svg (100%) rename {client/src => src}/static/icons/regular/disease.svg (100%) rename {client/src => src}/static/icons/regular/divide.svg (100%) rename {client/src => src}/static/icons/regular/dizzy.svg (100%) rename {client/src => src}/static/icons/regular/dna.svg (100%) rename {client/src => src}/static/icons/regular/do-not-enter.svg (100%) rename {client/src => src}/static/icons/regular/dog-leashed.svg (100%) rename {client/src => src}/static/icons/regular/dog.svg (100%) rename {client/src => src}/static/icons/regular/dollar-sign.svg (100%) rename {client/src => src}/static/icons/regular/dolly-empty.svg (100%) rename {client/src => src}/static/icons/regular/dolly-flatbed-alt.svg (100%) rename {client/src => src}/static/icons/regular/dolly-flatbed-empty.svg (100%) rename {client/src => src}/static/icons/regular/dolly-flatbed.svg (100%) rename {client/src => src}/static/icons/regular/dolly.svg (100%) rename {client/src => src}/static/icons/regular/donate.svg (100%) rename {client/src => src}/static/icons/regular/door-closed.svg (100%) rename {client/src => src}/static/icons/regular/door-open.svg (100%) rename {client/src => src}/static/icons/regular/dot-circle.svg (100%) rename {client/src => src}/static/icons/regular/dove.svg (100%) rename {client/src => src}/static/icons/regular/download.svg (100%) rename {client/src => src}/static/icons/regular/drafting-compass.svg (100%) rename {client/src => src}/static/icons/regular/dragon.svg (100%) rename {client/src => src}/static/icons/regular/draw-circle.svg (100%) rename {client/src => src}/static/icons/regular/draw-polygon.svg (100%) rename {client/src => src}/static/icons/regular/draw-square.svg (100%) rename {client/src => src}/static/icons/regular/dreidel.svg (100%) rename {client/src => src}/static/icons/regular/drone-alt.svg (100%) rename {client/src => src}/static/icons/regular/drone.svg (100%) rename {client/src => src}/static/icons/regular/drum-steelpan.svg (100%) rename {client/src => src}/static/icons/regular/drum.svg (100%) rename {client/src => src}/static/icons/regular/drumstick-bite.svg (100%) rename {client/src => src}/static/icons/regular/drumstick.svg (100%) rename {client/src => src}/static/icons/regular/dryer-alt.svg (100%) rename {client/src => src}/static/icons/regular/dryer.svg (100%) rename {client/src => src}/static/icons/regular/duck.svg (100%) rename {client/src => src}/static/icons/regular/dumbbell.svg (100%) rename {client/src => src}/static/icons/regular/dumpster-fire.svg (100%) rename {client/src => src}/static/icons/regular/dumpster.svg (100%) rename {client/src => src}/static/icons/regular/dungeon.svg (100%) rename {client/src => src}/static/icons/regular/ear-muffs.svg (100%) rename {client/src => src}/static/icons/regular/ear.svg (100%) rename {client/src => src}/static/icons/regular/eclipse-alt.svg (100%) rename {client/src => src}/static/icons/regular/eclipse.svg (100%) rename {client/src => src}/static/icons/regular/edit.svg (100%) rename {client/src => src}/static/icons/regular/egg-fried.svg (100%) rename {client/src => src}/static/icons/regular/egg.svg (100%) rename {client/src => src}/static/icons/regular/eject.svg (100%) rename {client/src => src}/static/icons/regular/elephant.svg (100%) rename {client/src => src}/static/icons/regular/ellipsis-h-alt.svg (100%) rename {client/src => src}/static/icons/regular/ellipsis-h.svg (100%) rename {client/src => src}/static/icons/regular/ellipsis-v-alt.svg (100%) rename {client/src => src}/static/icons/regular/ellipsis-v.svg (100%) rename {client/src => src}/static/icons/regular/empty-set.svg (100%) rename {client/src => src}/static/icons/regular/engine-warning.svg (100%) rename {client/src => src}/static/icons/regular/envelope-open-dollar.svg (100%) rename {client/src => src}/static/icons/regular/envelope-open-text.svg (100%) rename {client/src => src}/static/icons/regular/envelope-open.svg (100%) rename {client/src => src}/static/icons/regular/envelope-square.svg (100%) rename {client/src => src}/static/icons/regular/envelope.svg (100%) rename {client/src => src}/static/icons/regular/equals.svg (100%) rename {client/src => src}/static/icons/regular/eraser.svg (100%) rename {client/src => src}/static/icons/regular/ethernet.svg (100%) rename {client/src => src}/static/icons/regular/euro-sign.svg (100%) rename {client/src => src}/static/icons/regular/exchange-alt.svg (100%) rename {client/src => src}/static/icons/regular/exchange.svg (100%) rename {client/src => src}/static/icons/regular/exclamation-circle.svg (100%) rename {client/src => src}/static/icons/regular/exclamation-square.svg (100%) rename {client/src => src}/static/icons/regular/exclamation-triangle.svg (100%) rename {client/src => src}/static/icons/regular/exclamation.svg (100%) rename {client/src => src}/static/icons/regular/expand-alt.svg (100%) rename {client/src => src}/static/icons/regular/expand-arrows-alt.svg (100%) rename {client/src => src}/static/icons/regular/expand-arrows.svg (100%) rename {client/src => src}/static/icons/regular/expand-wide.svg (100%) rename {client/src => src}/static/icons/regular/expand.svg (100%) rename {client/src => src}/static/icons/regular/external-link-alt.svg (100%) rename {client/src => src}/static/icons/regular/external-link-square-alt.svg (100%) rename {client/src => src}/static/icons/regular/external-link-square.svg (100%) rename {client/src => src}/static/icons/regular/external-link.svg (100%) rename {client/src => src}/static/icons/regular/eye-dropper.svg (100%) rename {client/src => src}/static/icons/regular/eye-evil.svg (100%) rename {client/src => src}/static/icons/regular/eye-slash.svg (100%) rename {client/src => src}/static/icons/regular/eye.svg (100%) rename {client/src => src}/static/icons/regular/fan-table.svg (100%) rename {client/src => src}/static/icons/regular/fan.svg (100%) rename {client/src => src}/static/icons/regular/farm.svg (100%) rename {client/src => src}/static/icons/regular/fast-backward.svg (100%) rename {client/src => src}/static/icons/regular/fast-forward.svg (100%) rename {client/src => src}/static/icons/regular/faucet-drip.svg (100%) rename {client/src => src}/static/icons/regular/faucet.svg (100%) rename {client/src => src}/static/icons/regular/fax.svg (100%) rename {client/src => src}/static/icons/regular/feather-alt.svg (100%) rename {client/src => src}/static/icons/regular/feather.svg (100%) rename {client/src => src}/static/icons/regular/female.svg (100%) rename {client/src => src}/static/icons/regular/field-hockey.svg (100%) rename {client/src => src}/static/icons/regular/fighter-jet.svg (100%) rename {client/src => src}/static/icons/regular/file-alt.svg (100%) rename {client/src => src}/static/icons/regular/file-archive.svg (100%) rename {client/src => src}/static/icons/regular/file-audio.svg (100%) rename {client/src => src}/static/icons/regular/file-certificate.svg (100%) rename {client/src => src}/static/icons/regular/file-chart-line.svg (100%) rename {client/src => src}/static/icons/regular/file-chart-pie.svg (100%) rename {client/src => src}/static/icons/regular/file-check.svg (100%) rename {client/src => src}/static/icons/regular/file-code.svg (100%) rename {client/src => src}/static/icons/regular/file-contract.svg (100%) rename {client/src => src}/static/icons/regular/file-csv.svg (100%) rename {client/src => src}/static/icons/regular/file-download.svg (100%) rename {client/src => src}/static/icons/regular/file-edit.svg (100%) rename {client/src => src}/static/icons/regular/file-excel.svg (100%) rename {client/src => src}/static/icons/regular/file-exclamation.svg (100%) rename {client/src => src}/static/icons/regular/file-export.svg (100%) rename {client/src => src}/static/icons/regular/file-image.svg (100%) rename {client/src => src}/static/icons/regular/file-import.svg (100%) rename {client/src => src}/static/icons/regular/file-invoice-dollar.svg (100%) rename {client/src => src}/static/icons/regular/file-invoice.svg (100%) rename {client/src => src}/static/icons/regular/file-medical-alt.svg (100%) rename {client/src => src}/static/icons/regular/file-medical.svg (100%) rename {client/src => src}/static/icons/regular/file-minus.svg (100%) rename {client/src => src}/static/icons/regular/file-music.svg (100%) rename {client/src => src}/static/icons/regular/file-pdf.svg (100%) rename {client/src => src}/static/icons/regular/file-plus.svg (100%) rename {client/src => src}/static/icons/regular/file-powerpoint.svg (100%) rename {client/src => src}/static/icons/regular/file-prescription.svg (100%) rename {client/src => src}/static/icons/regular/file-search.svg (100%) rename {client/src => src}/static/icons/regular/file-signature.svg (100%) rename {client/src => src}/static/icons/regular/file-spreadsheet.svg (100%) rename {client/src => src}/static/icons/regular/file-times.svg (100%) rename {client/src => src}/static/icons/regular/file-upload.svg (100%) rename {client/src => src}/static/icons/regular/file-user.svg (100%) rename {client/src => src}/static/icons/regular/file-video.svg (100%) rename {client/src => src}/static/icons/regular/file-word.svg (100%) rename {client/src => src}/static/icons/regular/file.svg (100%) rename {client/src => src}/static/icons/regular/files-medical.svg (100%) rename {client/src => src}/static/icons/regular/fill-drip.svg (100%) rename {client/src => src}/static/icons/regular/fill.svg (100%) rename {client/src => src}/static/icons/regular/film-alt.svg (100%) rename {client/src => src}/static/icons/regular/film-canister.svg (100%) rename {client/src => src}/static/icons/regular/film.svg (100%) rename {client/src => src}/static/icons/regular/filter.svg (100%) rename {client/src => src}/static/icons/regular/fingerprint.svg (100%) rename {client/src => src}/static/icons/regular/fire-alt.svg (100%) rename {client/src => src}/static/icons/regular/fire-extinguisher.svg (100%) rename {client/src => src}/static/icons/regular/fire-smoke.svg (100%) rename {client/src => src}/static/icons/regular/fire.svg (100%) rename {client/src => src}/static/icons/regular/fireplace.svg (100%) rename {client/src => src}/static/icons/regular/first-aid.svg (100%) rename {client/src => src}/static/icons/regular/fish-cooked.svg (100%) rename {client/src => src}/static/icons/regular/fish.svg (100%) rename {client/src => src}/static/icons/regular/fist-raised.svg (100%) rename {client/src => src}/static/icons/regular/flag-alt.svg (100%) rename {client/src => src}/static/icons/regular/flag-checkered.svg (100%) rename {client/src => src}/static/icons/regular/flag-usa.svg (100%) rename {client/src => src}/static/icons/regular/flag.svg (100%) rename {client/src => src}/static/icons/regular/flame.svg (100%) rename {client/src => src}/static/icons/regular/flashlight.svg (100%) rename {client/src => src}/static/icons/regular/flask-poison.svg (100%) rename {client/src => src}/static/icons/regular/flask-potion.svg (100%) rename {client/src => src}/static/icons/regular/flask.svg (100%) rename {client/src => src}/static/icons/regular/flower-daffodil.svg (100%) rename {client/src => src}/static/icons/regular/flower-tulip.svg (100%) rename {client/src => src}/static/icons/regular/flower.svg (100%) rename {client/src => src}/static/icons/regular/flushed.svg (100%) rename {client/src => src}/static/icons/regular/flute.svg (100%) rename {client/src => src}/static/icons/regular/flux-capacitor.svg (100%) rename {client/src => src}/static/icons/regular/fog.svg (100%) rename {client/src => src}/static/icons/regular/folder-minus.svg (100%) rename {client/src => src}/static/icons/regular/folder-open.svg (100%) rename {client/src => src}/static/icons/regular/folder-plus.svg (100%) rename {client/src => src}/static/icons/regular/folder-times.svg (100%) rename {client/src => src}/static/icons/regular/folder-tree.svg (100%) rename {client/src => src}/static/icons/regular/folder.svg (100%) rename {client/src => src}/static/icons/regular/folders.svg (100%) rename {client/src => src}/static/icons/regular/font-awesome-logo-full.svg (100%) rename {client/src => src}/static/icons/regular/font-case.svg (100%) rename {client/src => src}/static/icons/regular/font.svg (100%) rename {client/src => src}/static/icons/regular/football-ball.svg (100%) rename {client/src => src}/static/icons/regular/football-helmet.svg (100%) rename {client/src => src}/static/icons/regular/forklift.svg (100%) rename {client/src => src}/static/icons/regular/forward.svg (100%) rename {client/src => src}/static/icons/regular/fragile.svg (100%) rename {client/src => src}/static/icons/regular/french-fries.svg (100%) rename {client/src => src}/static/icons/regular/frog.svg (100%) rename {client/src => src}/static/icons/regular/frosty-head.svg (100%) rename {client/src => src}/static/icons/regular/frown-open.svg (100%) rename {client/src => src}/static/icons/regular/frown.svg (100%) rename {client/src => src}/static/icons/regular/function.svg (100%) rename {client/src => src}/static/icons/regular/funnel-dollar.svg (100%) rename {client/src => src}/static/icons/regular/futbol.svg (100%) rename {client/src => src}/static/icons/regular/galaxy.svg (100%) rename {client/src => src}/static/icons/regular/game-board-alt.svg (100%) rename {client/src => src}/static/icons/regular/game-board.svg (100%) rename {client/src => src}/static/icons/regular/game-console-handheld.svg (100%) rename {client/src => src}/static/icons/regular/gamepad-alt.svg (100%) rename {client/src => src}/static/icons/regular/gamepad.svg (100%) rename {client/src => src}/static/icons/regular/garage-car.svg (100%) rename {client/src => src}/static/icons/regular/garage-open.svg (100%) rename {client/src => src}/static/icons/regular/garage.svg (100%) rename {client/src => src}/static/icons/regular/gas-pump-slash.svg (100%) rename {client/src => src}/static/icons/regular/gas-pump.svg (100%) rename {client/src => src}/static/icons/regular/gavel.svg (100%) rename {client/src => src}/static/icons/regular/gem.svg (100%) rename {client/src => src}/static/icons/regular/genderless.svg (100%) rename {client/src => src}/static/icons/regular/ghost.svg (100%) rename {client/src => src}/static/icons/regular/gift-card.svg (100%) rename {client/src => src}/static/icons/regular/gift.svg (100%) rename {client/src => src}/static/icons/regular/gifts.svg (100%) rename {client/src => src}/static/icons/regular/gingerbread-man.svg (100%) rename {client/src => src}/static/icons/regular/glass-champagne.svg (100%) rename {client/src => src}/static/icons/regular/glass-cheers.svg (100%) rename {client/src => src}/static/icons/regular/glass-citrus.svg (100%) rename {client/src => src}/static/icons/regular/glass-martini-alt.svg (100%) rename {client/src => src}/static/icons/regular/glass-martini.svg (100%) rename {client/src => src}/static/icons/regular/glass-whiskey-rocks.svg (100%) rename {client/src => src}/static/icons/regular/glass-whiskey.svg (100%) rename {client/src => src}/static/icons/regular/glass.svg (100%) rename {client/src => src}/static/icons/regular/glasses-alt.svg (100%) rename {client/src => src}/static/icons/regular/glasses.svg (100%) rename {client/src => src}/static/icons/regular/globe-africa.svg (100%) rename {client/src => src}/static/icons/regular/globe-americas.svg (100%) rename {client/src => src}/static/icons/regular/globe-asia.svg (100%) rename {client/src => src}/static/icons/regular/globe-europe.svg (100%) rename {client/src => src}/static/icons/regular/globe-snow.svg (100%) rename {client/src => src}/static/icons/regular/globe-stand.svg (100%) rename {client/src => src}/static/icons/regular/globe.svg (100%) rename {client/src => src}/static/icons/regular/golf-ball.svg (100%) rename {client/src => src}/static/icons/regular/golf-club.svg (100%) rename {client/src => src}/static/icons/regular/gopuram.svg (100%) rename {client/src => src}/static/icons/regular/graduation-cap.svg (100%) rename {client/src => src}/static/icons/regular/gramophone.svg (100%) rename {client/src => src}/static/icons/regular/greater-than-equal.svg (100%) rename {client/src => src}/static/icons/regular/greater-than.svg (100%) rename {client/src => src}/static/icons/regular/grimace.svg (100%) rename {client/src => src}/static/icons/regular/grin-alt.svg (100%) rename {client/src => src}/static/icons/regular/grin-beam-sweat.svg (100%) rename {client/src => src}/static/icons/regular/grin-beam.svg (100%) rename {client/src => src}/static/icons/regular/grin-hearts.svg (100%) rename {client/src => src}/static/icons/regular/grin-squint-tears.svg (100%) rename {client/src => src}/static/icons/regular/grin-squint.svg (100%) rename {client/src => src}/static/icons/regular/grin-stars.svg (100%) rename {client/src => src}/static/icons/regular/grin-tears.svg (100%) rename {client/src => src}/static/icons/regular/grin-tongue-squint.svg (100%) rename {client/src => src}/static/icons/regular/grin-tongue-wink.svg (100%) rename {client/src => src}/static/icons/regular/grin-tongue.svg (100%) rename {client/src => src}/static/icons/regular/grin-wink.svg (100%) rename {client/src => src}/static/icons/regular/grin.svg (100%) rename {client/src => src}/static/icons/regular/grip-horizontal.svg (100%) rename {client/src => src}/static/icons/regular/grip-lines-vertical.svg (100%) rename {client/src => src}/static/icons/regular/grip-lines.svg (100%) rename {client/src => src}/static/icons/regular/grip-vertical.svg (100%) rename {client/src => src}/static/icons/regular/guitar-electric.svg (100%) rename {client/src => src}/static/icons/regular/guitar.svg (100%) rename {client/src => src}/static/icons/regular/guitars.svg (100%) rename {client/src => src}/static/icons/regular/h-square.svg (100%) rename {client/src => src}/static/icons/regular/h1.svg (100%) rename {client/src => src}/static/icons/regular/h2.svg (100%) rename {client/src => src}/static/icons/regular/h3.svg (100%) rename {client/src => src}/static/icons/regular/h4.svg (100%) rename {client/src => src}/static/icons/regular/hamburger.svg (100%) rename {client/src => src}/static/icons/regular/hammer-war.svg (100%) rename {client/src => src}/static/icons/regular/hammer.svg (100%) rename {client/src => src}/static/icons/regular/hamsa.svg (100%) rename {client/src => src}/static/icons/regular/hand-heart.svg (100%) rename {client/src => src}/static/icons/regular/hand-holding-box.svg (100%) rename {client/src => src}/static/icons/regular/hand-holding-heart.svg (100%) rename {client/src => src}/static/icons/regular/hand-holding-magic.svg (100%) rename {client/src => src}/static/icons/regular/hand-holding-seedling.svg (100%) rename {client/src => src}/static/icons/regular/hand-holding-usd.svg (100%) rename {client/src => src}/static/icons/regular/hand-holding-water.svg (100%) rename {client/src => src}/static/icons/regular/hand-holding.svg (100%) rename {client/src => src}/static/icons/regular/hand-lizard.svg (100%) rename {client/src => src}/static/icons/regular/hand-middle-finger.svg (100%) rename {client/src => src}/static/icons/regular/hand-paper.svg (100%) rename {client/src => src}/static/icons/regular/hand-peace.svg (100%) rename {client/src => src}/static/icons/regular/hand-point-down.svg (100%) rename {client/src => src}/static/icons/regular/hand-point-left.svg (100%) rename {client/src => src}/static/icons/regular/hand-point-right.svg (100%) rename {client/src => src}/static/icons/regular/hand-point-up.svg (100%) rename {client/src => src}/static/icons/regular/hand-pointer.svg (100%) rename {client/src => src}/static/icons/regular/hand-receiving.svg (100%) rename {client/src => src}/static/icons/regular/hand-rock.svg (100%) rename {client/src => src}/static/icons/regular/hand-scissors.svg (100%) rename {client/src => src}/static/icons/regular/hand-spock.svg (100%) rename {client/src => src}/static/icons/regular/hands-heart.svg (100%) rename {client/src => src}/static/icons/regular/hands-helping.svg (100%) rename {client/src => src}/static/icons/regular/hands-usd.svg (100%) rename {client/src => src}/static/icons/regular/hands.svg (100%) rename {client/src => src}/static/icons/regular/handshake-alt.svg (100%) rename {client/src => src}/static/icons/regular/handshake.svg (100%) rename {client/src => src}/static/icons/regular/hanukiah.svg (100%) rename {client/src => src}/static/icons/regular/hard-hat.svg (100%) rename {client/src => src}/static/icons/regular/hashtag.svg (100%) rename {client/src => src}/static/icons/regular/hat-chef.svg (100%) rename {client/src => src}/static/icons/regular/hat-cowboy-side.svg (100%) rename {client/src => src}/static/icons/regular/hat-cowboy.svg (100%) rename {client/src => src}/static/icons/regular/hat-santa.svg (100%) rename {client/src => src}/static/icons/regular/hat-winter.svg (100%) rename {client/src => src}/static/icons/regular/hat-witch.svg (100%) rename {client/src => src}/static/icons/regular/hat-wizard.svg (100%) rename {client/src => src}/static/icons/regular/hdd.svg (100%) rename {client/src => src}/static/icons/regular/head-side-brain.svg (100%) rename {client/src => src}/static/icons/regular/head-side-headphones.svg (100%) rename {client/src => src}/static/icons/regular/head-side-medical.svg (100%) rename {client/src => src}/static/icons/regular/head-side.svg (100%) rename {client/src => src}/static/icons/regular/head-vr.svg (100%) rename {client/src => src}/static/icons/regular/heading.svg (100%) rename {client/src => src}/static/icons/regular/headphones-alt.svg (100%) rename {client/src => src}/static/icons/regular/headphones.svg (100%) rename {client/src => src}/static/icons/regular/headset.svg (100%) rename {client/src => src}/static/icons/regular/heart-broken.svg (100%) rename {client/src => src}/static/icons/regular/heart-circle.svg (100%) rename {client/src => src}/static/icons/regular/heart-rate.svg (100%) rename {client/src => src}/static/icons/regular/heart-square.svg (100%) rename {client/src => src}/static/icons/regular/heart.svg (100%) rename {client/src => src}/static/icons/regular/heartbeat.svg (100%) rename {client/src => src}/static/icons/regular/heat.svg (100%) rename {client/src => src}/static/icons/regular/helicopter.svg (100%) rename {client/src => src}/static/icons/regular/helmet-battle.svg (100%) rename {client/src => src}/static/icons/regular/hexagon.svg (100%) rename {client/src => src}/static/icons/regular/highlighter.svg (100%) rename {client/src => src}/static/icons/regular/hiking.svg (100%) rename {client/src => src}/static/icons/regular/hippo.svg (100%) rename {client/src => src}/static/icons/regular/history.svg (100%) rename {client/src => src}/static/icons/regular/hockey-mask.svg (100%) rename {client/src => src}/static/icons/regular/hockey-puck.svg (100%) rename {client/src => src}/static/icons/regular/hockey-sticks.svg (100%) rename {client/src => src}/static/icons/regular/holly-berry.svg (100%) rename {client/src => src}/static/icons/regular/home-alt.svg (100%) rename {client/src => src}/static/icons/regular/home-heart.svg (100%) rename {client/src => src}/static/icons/regular/home-lg-alt.svg (100%) rename {client/src => src}/static/icons/regular/home-lg.svg (100%) rename {client/src => src}/static/icons/regular/home.svg (100%) rename {client/src => src}/static/icons/regular/hood-cloak.svg (100%) rename {client/src => src}/static/icons/regular/horizontal-rule.svg (100%) rename {client/src => src}/static/icons/regular/horse-head.svg (100%) rename {client/src => src}/static/icons/regular/horse-saddle.svg (100%) rename {client/src => src}/static/icons/regular/horse.svg (100%) rename {client/src => src}/static/icons/regular/hospital-alt.svg (100%) rename {client/src => src}/static/icons/regular/hospital-symbol.svg (100%) rename {client/src => src}/static/icons/regular/hospital-user.svg (100%) rename {client/src => src}/static/icons/regular/hospital.svg (100%) rename {client/src => src}/static/icons/regular/hospitals.svg (100%) rename {client/src => src}/static/icons/regular/hot-tub.svg (100%) rename {client/src => src}/static/icons/regular/hotdog.svg (100%) rename {client/src => src}/static/icons/regular/hotel.svg (100%) rename {client/src => src}/static/icons/regular/hourglass-end.svg (100%) rename {client/src => src}/static/icons/regular/hourglass-half.svg (100%) rename {client/src => src}/static/icons/regular/hourglass-start.svg (100%) rename {client/src => src}/static/icons/regular/hourglass.svg (100%) rename {client/src => src}/static/icons/regular/house-damage.svg (100%) rename {client/src => src}/static/icons/regular/house-day.svg (100%) rename {client/src => src}/static/icons/regular/house-flood.svg (100%) rename {client/src => src}/static/icons/regular/house-leave.svg (100%) rename {client/src => src}/static/icons/regular/house-night.svg (100%) rename {client/src => src}/static/icons/regular/house-return.svg (100%) rename {client/src => src}/static/icons/regular/house-signal.svg (100%) rename {client/src => src}/static/icons/regular/house.svg (100%) rename {client/src => src}/static/icons/regular/hryvnia.svg (100%) rename {client/src => src}/static/icons/regular/humidity.svg (100%) rename {client/src => src}/static/icons/regular/hurricane.svg (100%) rename {client/src => src}/static/icons/regular/i-cursor.svg (100%) rename {client/src => src}/static/icons/regular/ice-cream.svg (100%) rename {client/src => src}/static/icons/regular/ice-skate.svg (100%) rename {client/src => src}/static/icons/regular/icicles.svg (100%) rename {client/src => src}/static/icons/regular/icons-alt.svg (100%) rename {client/src => src}/static/icons/regular/icons.svg (100%) rename {client/src => src}/static/icons/regular/id-badge.svg (100%) rename {client/src => src}/static/icons/regular/id-card-alt.svg (100%) rename {client/src => src}/static/icons/regular/id-card.svg (100%) rename {client/src => src}/static/icons/regular/igloo.svg (100%) rename {client/src => src}/static/icons/regular/image-polaroid.svg (100%) rename {client/src => src}/static/icons/regular/image.svg (100%) rename {client/src => src}/static/icons/regular/images.svg (100%) rename {client/src => src}/static/icons/regular/inbox-in.svg (100%) rename {client/src => src}/static/icons/regular/inbox-out.svg (100%) rename {client/src => src}/static/icons/regular/inbox.svg (100%) rename {client/src => src}/static/icons/regular/indent.svg (100%) rename {client/src => src}/static/icons/regular/industry-alt.svg (100%) rename {client/src => src}/static/icons/regular/industry.svg (100%) rename {client/src => src}/static/icons/regular/infinity.svg (100%) rename {client/src => src}/static/icons/regular/info-circle.svg (100%) rename {client/src => src}/static/icons/regular/info-square.svg (100%) rename {client/src => src}/static/icons/regular/info.svg (100%) rename {client/src => src}/static/icons/regular/inhaler.svg (100%) rename {client/src => src}/static/icons/regular/integral.svg (100%) rename {client/src => src}/static/icons/regular/intersection.svg (100%) rename {client/src => src}/static/icons/regular/inventory.svg (100%) rename {client/src => src}/static/icons/regular/island-tropical.svg (100%) rename {client/src => src}/static/icons/regular/italic.svg (100%) rename {client/src => src}/static/icons/regular/jack-o-lantern.svg (100%) rename {client/src => src}/static/icons/regular/jedi.svg (100%) rename {client/src => src}/static/icons/regular/joint.svg (100%) rename {client/src => src}/static/icons/regular/journal-whills.svg (100%) rename {client/src => src}/static/icons/regular/joystick.svg (100%) rename {client/src => src}/static/icons/regular/jug.svg (100%) rename {client/src => src}/static/icons/regular/kaaba.svg (100%) rename {client/src => src}/static/icons/regular/kazoo.svg (100%) rename {client/src => src}/static/icons/regular/kerning.svg (100%) rename {client/src => src}/static/icons/regular/key-skeleton.svg (100%) rename {client/src => src}/static/icons/regular/key.svg (100%) rename {client/src => src}/static/icons/regular/keyboard.svg (100%) rename {client/src => src}/static/icons/regular/keynote.svg (100%) rename {client/src => src}/static/icons/regular/khanda.svg (100%) rename {client/src => src}/static/icons/regular/kidneys.svg (100%) rename {client/src => src}/static/icons/regular/kiss-beam.svg (100%) rename {client/src => src}/static/icons/regular/kiss-wink-heart.svg (100%) rename {client/src => src}/static/icons/regular/kiss.svg (100%) rename {client/src => src}/static/icons/regular/kite.svg (100%) rename {client/src => src}/static/icons/regular/kiwi-bird.svg (100%) rename {client/src => src}/static/icons/regular/knife-kitchen.svg (100%) rename {client/src => src}/static/icons/regular/lambda.svg (100%) rename {client/src => src}/static/icons/regular/lamp-desk.svg (100%) rename {client/src => src}/static/icons/regular/lamp-floor.svg (100%) rename {client/src => src}/static/icons/regular/lamp.svg (100%) rename {client/src => src}/static/icons/regular/landmark-alt.svg (100%) rename {client/src => src}/static/icons/regular/landmark.svg (100%) rename {client/src => src}/static/icons/regular/language.svg (100%) rename {client/src => src}/static/icons/regular/laptop-code.svg (100%) rename {client/src => src}/static/icons/regular/laptop-medical.svg (100%) rename {client/src => src}/static/icons/regular/laptop.svg (100%) rename {client/src => src}/static/icons/regular/lasso.svg (100%) rename {client/src => src}/static/icons/regular/laugh-beam.svg (100%) rename {client/src => src}/static/icons/regular/laugh-squint.svg (100%) rename {client/src => src}/static/icons/regular/laugh-wink.svg (100%) rename {client/src => src}/static/icons/regular/laugh.svg (100%) rename {client/src => src}/static/icons/regular/layer-group.svg (100%) rename {client/src => src}/static/icons/regular/layer-minus.svg (100%) rename {client/src => src}/static/icons/regular/layer-plus.svg (100%) rename {client/src => src}/static/icons/regular/leaf-heart.svg (100%) rename {client/src => src}/static/icons/regular/leaf-maple.svg (100%) rename {client/src => src}/static/icons/regular/leaf-oak.svg (100%) rename {client/src => src}/static/icons/regular/leaf.svg (100%) rename {client/src => src}/static/icons/regular/lemon.svg (100%) rename {client/src => src}/static/icons/regular/less-than-equal.svg (100%) rename {client/src => src}/static/icons/regular/less-than.svg (100%) rename {client/src => src}/static/icons/regular/level-down-alt.svg (100%) rename {client/src => src}/static/icons/regular/level-down.svg (100%) rename {client/src => src}/static/icons/regular/level-up-alt.svg (100%) rename {client/src => src}/static/icons/regular/level-up.svg (100%) rename {client/src => src}/static/icons/regular/life-ring.svg (100%) rename {client/src => src}/static/icons/regular/light-ceiling.svg (100%) rename {client/src => src}/static/icons/regular/light-switch-off.svg (100%) rename {client/src => src}/static/icons/regular/light-switch-on.svg (100%) rename {client/src => src}/static/icons/regular/light-switch.svg (100%) rename {client/src => src}/static/icons/regular/lightbulb-dollar.svg (100%) rename {client/src => src}/static/icons/regular/lightbulb-exclamation.svg (100%) rename {client/src => src}/static/icons/regular/lightbulb-on.svg (100%) rename {client/src => src}/static/icons/regular/lightbulb-slash.svg (100%) rename {client/src => src}/static/icons/regular/lightbulb.svg (100%) rename {client/src => src}/static/icons/regular/lights-holiday.svg (100%) rename {client/src => src}/static/icons/regular/line-columns.svg (100%) rename {client/src => src}/static/icons/regular/line-height.svg (100%) rename {client/src => src}/static/icons/regular/link.svg (100%) rename {client/src => src}/static/icons/regular/lips.svg (100%) rename {client/src => src}/static/icons/regular/lira-sign.svg (100%) rename {client/src => src}/static/icons/regular/list-alt.svg (100%) rename {client/src => src}/static/icons/regular/list-music.svg (100%) rename {client/src => src}/static/icons/regular/list-ol.svg (100%) rename {client/src => src}/static/icons/regular/list-ul.svg (100%) rename {client/src => src}/static/icons/regular/list.svg (100%) rename {client/src => src}/static/icons/regular/location-arrow.svg (100%) rename {client/src => src}/static/icons/regular/location-circle.svg (100%) rename {client/src => src}/static/icons/regular/location-slash.svg (100%) rename {client/src => src}/static/icons/regular/location.svg (100%) rename {client/src => src}/static/icons/regular/lock-alt.svg (100%) rename {client/src => src}/static/icons/regular/lock-open-alt.svg (100%) rename {client/src => src}/static/icons/regular/lock-open.svg (100%) rename {client/src => src}/static/icons/regular/lock.svg (100%) rename {client/src => src}/static/icons/regular/long-arrow-alt-down.svg (100%) rename {client/src => src}/static/icons/regular/long-arrow-alt-left.svg (100%) rename {client/src => src}/static/icons/regular/long-arrow-alt-right.svg (100%) rename {client/src => src}/static/icons/regular/long-arrow-alt-up.svg (100%) rename {client/src => src}/static/icons/regular/long-arrow-down.svg (100%) rename {client/src => src}/static/icons/regular/long-arrow-left.svg (100%) rename {client/src => src}/static/icons/regular/long-arrow-right.svg (100%) rename {client/src => src}/static/icons/regular/long-arrow-up.svg (100%) rename {client/src => src}/static/icons/regular/loveseat.svg (100%) rename {client/src => src}/static/icons/regular/low-vision.svg (100%) rename {client/src => src}/static/icons/regular/luchador.svg (100%) rename {client/src => src}/static/icons/regular/luggage-cart.svg (100%) rename {client/src => src}/static/icons/regular/lungs.svg (100%) rename {client/src => src}/static/icons/regular/mace.svg (100%) rename {client/src => src}/static/icons/regular/magic.svg (100%) rename {client/src => src}/static/icons/regular/magnet.svg (100%) rename {client/src => src}/static/icons/regular/mail-bulk.svg (100%) rename {client/src => src}/static/icons/regular/mailbox.svg (100%) rename {client/src => src}/static/icons/regular/male.svg (100%) rename {client/src => src}/static/icons/regular/mandolin.svg (100%) rename {client/src => src}/static/icons/regular/map-marked-alt.svg (100%) rename {client/src => src}/static/icons/regular/map-marked.svg (100%) rename {client/src => src}/static/icons/regular/map-marker-alt-slash.svg (100%) rename {client/src => src}/static/icons/regular/map-marker-alt.svg (100%) rename {client/src => src}/static/icons/regular/map-marker-check.svg (100%) rename {client/src => src}/static/icons/regular/map-marker-edit.svg (100%) rename {client/src => src}/static/icons/regular/map-marker-exclamation.svg (100%) rename {client/src => src}/static/icons/regular/map-marker-minus.svg (100%) rename {client/src => src}/static/icons/regular/map-marker-plus.svg (100%) rename {client/src => src}/static/icons/regular/map-marker-question.svg (100%) rename {client/src => src}/static/icons/regular/map-marker-slash.svg (100%) rename {client/src => src}/static/icons/regular/map-marker-smile.svg (100%) rename {client/src => src}/static/icons/regular/map-marker-times.svg (100%) rename {client/src => src}/static/icons/regular/map-marker.svg (100%) rename {client/src => src}/static/icons/regular/map-pin.svg (100%) rename {client/src => src}/static/icons/regular/map-signs.svg (100%) rename {client/src => src}/static/icons/regular/map.svg (100%) rename {client/src => src}/static/icons/regular/marker.svg (100%) rename {client/src => src}/static/icons/regular/mars-double.svg (100%) rename {client/src => src}/static/icons/regular/mars-stroke-h.svg (100%) rename {client/src => src}/static/icons/regular/mars-stroke-v.svg (100%) rename {client/src => src}/static/icons/regular/mars-stroke.svg (100%) rename {client/src => src}/static/icons/regular/mars.svg (100%) rename {client/src => src}/static/icons/regular/mask.svg (100%) rename {client/src => src}/static/icons/regular/meat.svg (100%) rename {client/src => src}/static/icons/regular/medal.svg (100%) rename {client/src => src}/static/icons/regular/medkit.svg (100%) rename {client/src => src}/static/icons/regular/megaphone.svg (100%) rename {client/src => src}/static/icons/regular/meh-blank.svg (100%) rename {client/src => src}/static/icons/regular/meh-rolling-eyes.svg (100%) rename {client/src => src}/static/icons/regular/meh.svg (100%) rename {client/src => src}/static/icons/regular/memory.svg (100%) rename {client/src => src}/static/icons/regular/menorah.svg (100%) rename {client/src => src}/static/icons/regular/mercury.svg (100%) rename {client/src => src}/static/icons/regular/meteor.svg (100%) rename {client/src => src}/static/icons/regular/microchip.svg (100%) rename {client/src => src}/static/icons/regular/microphone-alt-slash.svg (100%) rename {client/src => src}/static/icons/regular/microphone-alt.svg (100%) rename {client/src => src}/static/icons/regular/microphone-slash.svg (100%) rename {client/src => src}/static/icons/regular/microphone-stand.svg (100%) rename {client/src => src}/static/icons/regular/microphone.svg (100%) rename {client/src => src}/static/icons/regular/microscope.svg (100%) rename {client/src => src}/static/icons/regular/microwave.svg (100%) rename {client/src => src}/static/icons/regular/mind-share.svg (100%) rename {client/src => src}/static/icons/regular/minus-circle.svg (100%) rename {client/src => src}/static/icons/regular/minus-hexagon.svg (100%) rename {client/src => src}/static/icons/regular/minus-octagon.svg (100%) rename {client/src => src}/static/icons/regular/minus-square.svg (100%) rename {client/src => src}/static/icons/regular/minus.svg (100%) rename {client/src => src}/static/icons/regular/mistletoe.svg (100%) rename {client/src => src}/static/icons/regular/mitten.svg (100%) rename {client/src => src}/static/icons/regular/mobile-alt.svg (100%) rename {client/src => src}/static/icons/regular/mobile-android-alt.svg (100%) rename {client/src => src}/static/icons/regular/mobile-android.svg (100%) rename {client/src => src}/static/icons/regular/mobile.svg (100%) rename {client/src => src}/static/icons/regular/money-bill-alt.svg (100%) rename {client/src => src}/static/icons/regular/money-bill-wave-alt.svg (100%) rename {client/src => src}/static/icons/regular/money-bill-wave.svg (100%) rename {client/src => src}/static/icons/regular/money-bill.svg (100%) rename {client/src => src}/static/icons/regular/money-check-alt.svg (100%) rename {client/src => src}/static/icons/regular/money-check-edit-alt.svg (100%) rename {client/src => src}/static/icons/regular/money-check-edit.svg (100%) rename {client/src => src}/static/icons/regular/money-check.svg (100%) rename {client/src => src}/static/icons/regular/monitor-heart-rate.svg (100%) rename {client/src => src}/static/icons/regular/monkey.svg (100%) rename {client/src => src}/static/icons/regular/monument.svg (100%) rename {client/src => src}/static/icons/regular/moon-cloud.svg (100%) rename {client/src => src}/static/icons/regular/moon-stars.svg (100%) rename {client/src => src}/static/icons/regular/moon.svg (100%) rename {client/src => src}/static/icons/regular/mortar-pestle.svg (100%) rename {client/src => src}/static/icons/regular/mosque.svg (100%) rename {client/src => src}/static/icons/regular/motorcycle.svg (100%) rename {client/src => src}/static/icons/regular/mountain.svg (100%) rename {client/src => src}/static/icons/regular/mountains.svg (100%) rename {client/src => src}/static/icons/regular/mouse-alt.svg (100%) rename {client/src => src}/static/icons/regular/mouse-pointer.svg (100%) rename {client/src => src}/static/icons/regular/mouse.svg (100%) rename {client/src => src}/static/icons/regular/mp3-player.svg (100%) rename {client/src => src}/static/icons/regular/mug-hot.svg (100%) rename {client/src => src}/static/icons/regular/mug-marshmallows.svg (100%) rename {client/src => src}/static/icons/regular/mug-tea.svg (100%) rename {client/src => src}/static/icons/regular/mug.svg (100%) rename {client/src => src}/static/icons/regular/music-alt-slash.svg (100%) rename {client/src => src}/static/icons/regular/music-alt.svg (100%) rename {client/src => src}/static/icons/regular/music-slash.svg (100%) rename {client/src => src}/static/icons/regular/music.svg (100%) rename {client/src => src}/static/icons/regular/narwhal.svg (100%) rename {client/src => src}/static/icons/regular/network-wired.svg (100%) rename {client/src => src}/static/icons/regular/neuter.svg (100%) rename {client/src => src}/static/icons/regular/newspaper.svg (100%) rename {client/src => src}/static/icons/regular/not-equal.svg (100%) rename {client/src => src}/static/icons/regular/notes-medical.svg (100%) rename {client/src => src}/static/icons/regular/object-group.svg (100%) rename {client/src => src}/static/icons/regular/object-ungroup.svg (100%) rename {client/src => src}/static/icons/regular/octagon.svg (100%) rename {client/src => src}/static/icons/regular/oil-can.svg (100%) rename {client/src => src}/static/icons/regular/oil-temp.svg (100%) rename {client/src => src}/static/icons/regular/om.svg (100%) rename {client/src => src}/static/icons/regular/omega.svg (100%) rename {client/src => src}/static/icons/regular/ornament.svg (100%) rename {client/src => src}/static/icons/regular/otter.svg (100%) rename {client/src => src}/static/icons/regular/outdent.svg (100%) rename {client/src => src}/static/icons/regular/outlet.svg (100%) rename {client/src => src}/static/icons/regular/oven.svg (100%) rename {client/src => src}/static/icons/regular/overline.svg (100%) rename {client/src => src}/static/icons/regular/page-break.svg (100%) rename {client/src => src}/static/icons/regular/pager.svg (100%) rename {client/src => src}/static/icons/regular/paint-brush-alt.svg (100%) rename {client/src => src}/static/icons/regular/paint-brush.svg (100%) rename {client/src => src}/static/icons/regular/paint-roller.svg (100%) rename {client/src => src}/static/icons/regular/palette.svg (100%) rename {client/src => src}/static/icons/regular/pallet-alt.svg (100%) rename {client/src => src}/static/icons/regular/pallet.svg (100%) rename {client/src => src}/static/icons/regular/paper-plane.svg (100%) rename {client/src => src}/static/icons/regular/paperclip.svg (100%) rename {client/src => src}/static/icons/regular/parachute-box.svg (100%) rename {client/src => src}/static/icons/regular/paragraph-rtl.svg (100%) rename {client/src => src}/static/icons/regular/paragraph.svg (100%) rename {client/src => src}/static/icons/regular/parking-circle-slash.svg (100%) rename {client/src => src}/static/icons/regular/parking-circle.svg (100%) rename {client/src => src}/static/icons/regular/parking-slash.svg (100%) rename {client/src => src}/static/icons/regular/parking.svg (100%) rename {client/src => src}/static/icons/regular/passport.svg (100%) rename {client/src => src}/static/icons/regular/pastafarianism.svg (100%) rename {client/src => src}/static/icons/regular/paste.svg (100%) rename {client/src => src}/static/icons/regular/pause-circle.svg (100%) rename {client/src => src}/static/icons/regular/pause.svg (100%) rename {client/src => src}/static/icons/regular/paw-alt.svg (100%) rename {client/src => src}/static/icons/regular/paw-claws.svg (100%) rename {client/src => src}/static/icons/regular/paw.svg (100%) rename {client/src => src}/static/icons/regular/peace.svg (100%) rename {client/src => src}/static/icons/regular/pegasus.svg (100%) rename {client/src => src}/static/icons/regular/pen-alt.svg (100%) rename {client/src => src}/static/icons/regular/pen-fancy.svg (100%) rename {client/src => src}/static/icons/regular/pen-nib.svg (100%) rename {client/src => src}/static/icons/regular/pen-square.svg (100%) rename {client/src => src}/static/icons/regular/pen.svg (100%) rename {client/src => src}/static/icons/regular/pencil-alt.svg (100%) rename {client/src => src}/static/icons/regular/pencil-paintbrush.svg (100%) rename {client/src => src}/static/icons/regular/pencil-ruler.svg (100%) rename {client/src => src}/static/icons/regular/pencil.svg (100%) rename {client/src => src}/static/icons/regular/pennant.svg (100%) rename {client/src => src}/static/icons/regular/people-carry.svg (100%) rename {client/src => src}/static/icons/regular/pepper-hot.svg (100%) rename {client/src => src}/static/icons/regular/percent.svg (100%) rename {client/src => src}/static/icons/regular/percentage.svg (100%) rename {client/src => src}/static/icons/regular/person-booth.svg (100%) rename {client/src => src}/static/icons/regular/person-carry.svg (100%) rename {client/src => src}/static/icons/regular/person-dolly-empty.svg (100%) rename {client/src => src}/static/icons/regular/person-dolly.svg (100%) rename {client/src => src}/static/icons/regular/person-sign.svg (100%) rename {client/src => src}/static/icons/regular/phone-alt.svg (100%) rename {client/src => src}/static/icons/regular/phone-laptop.svg (100%) rename {client/src => src}/static/icons/regular/phone-office.svg (100%) rename {client/src => src}/static/icons/regular/phone-plus.svg (100%) rename {client/src => src}/static/icons/regular/phone-rotary.svg (100%) rename {client/src => src}/static/icons/regular/phone-slash.svg (100%) rename {client/src => src}/static/icons/regular/phone-square-alt.svg (100%) rename {client/src => src}/static/icons/regular/phone-square.svg (100%) rename {client/src => src}/static/icons/regular/phone-volume.svg (100%) rename {client/src => src}/static/icons/regular/phone.svg (100%) rename {client/src => src}/static/icons/regular/photo-video.svg (100%) rename {client/src => src}/static/icons/regular/pi.svg (100%) rename {client/src => src}/static/icons/regular/piano-keyboard.svg (100%) rename {client/src => src}/static/icons/regular/piano.svg (100%) rename {client/src => src}/static/icons/regular/pie.svg (100%) rename {client/src => src}/static/icons/regular/pig.svg (100%) rename {client/src => src}/static/icons/regular/piggy-bank.svg (100%) rename {client/src => src}/static/icons/regular/pills.svg (100%) rename {client/src => src}/static/icons/regular/pizza-slice.svg (100%) rename {client/src => src}/static/icons/regular/pizza.svg (100%) rename {client/src => src}/static/icons/regular/place-of-worship.svg (100%) rename {client/src => src}/static/icons/regular/plane-alt.svg (100%) rename {client/src => src}/static/icons/regular/plane-arrival.svg (100%) rename {client/src => src}/static/icons/regular/plane-departure.svg (100%) rename {client/src => src}/static/icons/regular/plane.svg (100%) rename {client/src => src}/static/icons/regular/planet-moon.svg (100%) rename {client/src => src}/static/icons/regular/planet-ringed.svg (100%) rename {client/src => src}/static/icons/regular/play-circle.svg (100%) rename {client/src => src}/static/icons/regular/play.svg (100%) rename {client/src => src}/static/icons/regular/plug.svg (100%) rename {client/src => src}/static/icons/regular/plus-circle.svg (100%) rename {client/src => src}/static/icons/regular/plus-hexagon.svg (100%) rename {client/src => src}/static/icons/regular/plus-octagon.svg (100%) rename {client/src => src}/static/icons/regular/plus-square.svg (100%) rename {client/src => src}/static/icons/regular/plus.svg (100%) rename {client/src => src}/static/icons/regular/podcast.svg (100%) rename {client/src => src}/static/icons/regular/podium-star.svg (100%) rename {client/src => src}/static/icons/regular/podium.svg (100%) rename {client/src => src}/static/icons/regular/police-box.svg (100%) rename {client/src => src}/static/icons/regular/poll-h.svg (100%) rename {client/src => src}/static/icons/regular/poll-people.svg (100%) rename {client/src => src}/static/icons/regular/poll.svg (100%) rename {client/src => src}/static/icons/regular/poo-storm.svg (100%) rename {client/src => src}/static/icons/regular/poo.svg (100%) rename {client/src => src}/static/icons/regular/poop.svg (100%) rename {client/src => src}/static/icons/regular/popcorn.svg (100%) rename {client/src => src}/static/icons/regular/portal-enter.svg (100%) rename {client/src => src}/static/icons/regular/portal-exit.svg (100%) rename {client/src => src}/static/icons/regular/portrait.svg (100%) rename {client/src => src}/static/icons/regular/pound-sign.svg (100%) rename {client/src => src}/static/icons/regular/power-off.svg (100%) rename {client/src => src}/static/icons/regular/pray.svg (100%) rename {client/src => src}/static/icons/regular/praying-hands.svg (100%) rename {client/src => src}/static/icons/regular/prescription-bottle-alt.svg (100%) rename {client/src => src}/static/icons/regular/prescription-bottle.svg (100%) rename {client/src => src}/static/icons/regular/prescription.svg (100%) rename {client/src => src}/static/icons/regular/presentation.svg (100%) rename {client/src => src}/static/icons/regular/print-search.svg (100%) rename {client/src => src}/static/icons/regular/print-slash.svg (100%) rename {client/src => src}/static/icons/regular/print.svg (100%) rename {client/src => src}/static/icons/regular/procedures.svg (100%) rename {client/src => src}/static/icons/regular/project-diagram.svg (100%) rename {client/src => src}/static/icons/regular/projector.svg (100%) rename {client/src => src}/static/icons/regular/pumpkin.svg (100%) rename {client/src => src}/static/icons/regular/puzzle-piece.svg (100%) rename {client/src => src}/static/icons/regular/qrcode.svg (100%) rename {client/src => src}/static/icons/regular/question-circle.svg (100%) rename {client/src => src}/static/icons/regular/question-square.svg (100%) rename {client/src => src}/static/icons/regular/question.svg (100%) rename {client/src => src}/static/icons/regular/quidditch.svg (100%) rename {client/src => src}/static/icons/regular/quote-left.svg (100%) rename {client/src => src}/static/icons/regular/quote-right.svg (100%) rename {client/src => src}/static/icons/regular/quran.svg (100%) rename {client/src => src}/static/icons/regular/rabbit-fast.svg (100%) rename {client/src => src}/static/icons/regular/rabbit.svg (100%) rename {client/src => src}/static/icons/regular/racquet.svg (100%) rename {client/src => src}/static/icons/regular/radar.svg (100%) rename {client/src => src}/static/icons/regular/radiation-alt.svg (100%) rename {client/src => src}/static/icons/regular/radiation.svg (100%) rename {client/src => src}/static/icons/regular/radio-alt.svg (100%) rename {client/src => src}/static/icons/regular/radio.svg (100%) rename {client/src => src}/static/icons/regular/rainbow.svg (100%) rename {client/src => src}/static/icons/regular/raindrops.svg (100%) rename {client/src => src}/static/icons/regular/ram.svg (100%) rename {client/src => src}/static/icons/regular/ramp-loading.svg (100%) rename {client/src => src}/static/icons/regular/random.svg (100%) rename {client/src => src}/static/icons/regular/raygun.svg (100%) rename {client/src => src}/static/icons/regular/receipt.svg (100%) rename {client/src => src}/static/icons/regular/record-vinyl.svg (100%) rename {client/src => src}/static/icons/regular/rectangle-landscape.svg (100%) rename {client/src => src}/static/icons/regular/rectangle-portrait.svg (100%) rename {client/src => src}/static/icons/regular/rectangle-wide.svg (100%) rename {client/src => src}/static/icons/regular/recycle.svg (100%) rename {client/src => src}/static/icons/regular/redo-alt.svg (100%) rename {client/src => src}/static/icons/regular/redo.svg (100%) rename {client/src => src}/static/icons/regular/refrigerator.svg (100%) rename {client/src => src}/static/icons/regular/registered.svg (100%) rename {client/src => src}/static/icons/regular/remove-format.svg (100%) rename {client/src => src}/static/icons/regular/repeat-1-alt.svg (100%) rename {client/src => src}/static/icons/regular/repeat-1.svg (100%) rename {client/src => src}/static/icons/regular/repeat-alt.svg (100%) rename {client/src => src}/static/icons/regular/repeat.svg (100%) rename {client/src => src}/static/icons/regular/reply-all.svg (100%) rename {client/src => src}/static/icons/regular/reply.svg (100%) rename {client/src => src}/static/icons/regular/republican.svg (100%) rename {client/src => src}/static/icons/regular/restroom.svg (100%) rename {client/src => src}/static/icons/regular/retweet-alt.svg (100%) rename {client/src => src}/static/icons/regular/retweet.svg (100%) rename {client/src => src}/static/icons/regular/ribbon.svg (100%) rename {client/src => src}/static/icons/regular/ring.svg (100%) rename {client/src => src}/static/icons/regular/rings-wedding.svg (100%) rename {client/src => src}/static/icons/regular/road.svg (100%) rename {client/src => src}/static/icons/regular/robot.svg (100%) rename {client/src => src}/static/icons/regular/rocket-launch.svg (100%) rename {client/src => src}/static/icons/regular/rocket.svg (100%) rename {client/src => src}/static/icons/regular/route-highway.svg (100%) rename {client/src => src}/static/icons/regular/route-interstate.svg (100%) rename {client/src => src}/static/icons/regular/route.svg (100%) rename {client/src => src}/static/icons/regular/router.svg (100%) rename {client/src => src}/static/icons/regular/rss-square.svg (100%) rename {client/src => src}/static/icons/regular/rss.svg (100%) rename {client/src => src}/static/icons/regular/ruble-sign.svg (100%) rename {client/src => src}/static/icons/regular/ruler-combined.svg (100%) rename {client/src => src}/static/icons/regular/ruler-horizontal.svg (100%) rename {client/src => src}/static/icons/regular/ruler-triangle.svg (100%) rename {client/src => src}/static/icons/regular/ruler-vertical.svg (100%) rename {client/src => src}/static/icons/regular/ruler.svg (100%) rename {client/src => src}/static/icons/regular/running.svg (100%) rename {client/src => src}/static/icons/regular/rupee-sign.svg (100%) rename {client/src => src}/static/icons/regular/rv.svg (100%) rename {client/src => src}/static/icons/regular/sack-dollar.svg (100%) rename {client/src => src}/static/icons/regular/sack.svg (100%) rename {client/src => src}/static/icons/regular/sad-cry.svg (100%) rename {client/src => src}/static/icons/regular/sad-tear.svg (100%) rename {client/src => src}/static/icons/regular/salad.svg (100%) rename {client/src => src}/static/icons/regular/sandwich.svg (100%) rename {client/src => src}/static/icons/regular/satellite-dish.svg (100%) rename {client/src => src}/static/icons/regular/satellite.svg (100%) rename {client/src => src}/static/icons/regular/sausage.svg (100%) rename {client/src => src}/static/icons/regular/save.svg (100%) rename {client/src => src}/static/icons/regular/sax-hot.svg (100%) rename {client/src => src}/static/icons/regular/saxophone.svg (100%) rename {client/src => src}/static/icons/regular/scalpel-path.svg (100%) rename {client/src => src}/static/icons/regular/scalpel.svg (100%) rename {client/src => src}/static/icons/regular/scanner-image.svg (100%) rename {client/src => src}/static/icons/regular/scanner-keyboard.svg (100%) rename {client/src => src}/static/icons/regular/scanner-touchscreen.svg (100%) rename {client/src => src}/static/icons/regular/scanner.svg (100%) rename {client/src => src}/static/icons/regular/scarecrow.svg (100%) rename {client/src => src}/static/icons/regular/scarf.svg (100%) rename {client/src => src}/static/icons/regular/school.svg (100%) rename {client/src => src}/static/icons/regular/screwdriver.svg (100%) rename {client/src => src}/static/icons/regular/scroll-old.svg (100%) rename {client/src => src}/static/icons/regular/scroll.svg (100%) rename {client/src => src}/static/icons/regular/scrubber.svg (100%) rename {client/src => src}/static/icons/regular/scythe.svg (100%) rename {client/src => src}/static/icons/regular/sd-card.svg (100%) rename {client/src => src}/static/icons/regular/search-dollar.svg (100%) rename {client/src => src}/static/icons/regular/search-location.svg (100%) rename {client/src => src}/static/icons/regular/search-minus.svg (100%) rename {client/src => src}/static/icons/regular/search-plus.svg (100%) rename {client/src => src}/static/icons/regular/search.svg (100%) rename {client/src => src}/static/icons/regular/seedling.svg (100%) rename {client/src => src}/static/icons/regular/send-back.svg (100%) rename {client/src => src}/static/icons/regular/send-backward.svg (100%) rename {client/src => src}/static/icons/regular/sensor-alert.svg (100%) rename {client/src => src}/static/icons/regular/sensor-fire.svg (100%) rename {client/src => src}/static/icons/regular/sensor-on.svg (100%) rename {client/src => src}/static/icons/regular/sensor-smoke.svg (100%) rename {client/src => src}/static/icons/regular/sensor.svg (100%) rename {client/src => src}/static/icons/regular/server.svg (100%) rename {client/src => src}/static/icons/regular/shapes.svg (100%) rename {client/src => src}/static/icons/regular/share-all.svg (100%) rename {client/src => src}/static/icons/regular/share-alt-square.svg (100%) rename {client/src => src}/static/icons/regular/share-alt.svg (100%) rename {client/src => src}/static/icons/regular/share-square.svg (100%) rename {client/src => src}/static/icons/regular/share.svg (100%) rename {client/src => src}/static/icons/regular/sheep.svg (100%) rename {client/src => src}/static/icons/regular/shekel-sign.svg (100%) rename {client/src => src}/static/icons/regular/shield-alt.svg (100%) rename {client/src => src}/static/icons/regular/shield-check.svg (100%) rename {client/src => src}/static/icons/regular/shield-cross.svg (100%) rename {client/src => src}/static/icons/regular/shield.svg (100%) rename {client/src => src}/static/icons/regular/ship.svg (100%) rename {client/src => src}/static/icons/regular/shipping-fast.svg (100%) rename {client/src => src}/static/icons/regular/shipping-timed.svg (100%) rename {client/src => src}/static/icons/regular/shish-kebab.svg (100%) rename {client/src => src}/static/icons/regular/shoe-prints.svg (100%) rename {client/src => src}/static/icons/regular/shopping-bag.svg (100%) rename {client/src => src}/static/icons/regular/shopping-basket.svg (100%) rename {client/src => src}/static/icons/regular/shopping-cart.svg (100%) rename {client/src => src}/static/icons/regular/shovel-snow.svg (100%) rename {client/src => src}/static/icons/regular/shovel.svg (100%) rename {client/src => src}/static/icons/regular/shower.svg (100%) rename {client/src => src}/static/icons/regular/shredder.svg (100%) rename {client/src => src}/static/icons/regular/shuttle-van.svg (100%) rename {client/src => src}/static/icons/regular/shuttlecock.svg (100%) rename {client/src => src}/static/icons/regular/sickle.svg (100%) rename {client/src => src}/static/icons/regular/sigma.svg (100%) rename {client/src => src}/static/icons/regular/sign-in-alt.svg (100%) rename {client/src => src}/static/icons/regular/sign-in.svg (100%) rename {client/src => src}/static/icons/regular/sign-language.svg (100%) rename {client/src => src}/static/icons/regular/sign-out-alt.svg (100%) rename {client/src => src}/static/icons/regular/sign-out.svg (100%) rename {client/src => src}/static/icons/regular/sign.svg (100%) rename {client/src => src}/static/icons/regular/signal-1.svg (100%) rename {client/src => src}/static/icons/regular/signal-2.svg (100%) rename {client/src => src}/static/icons/regular/signal-3.svg (100%) rename {client/src => src}/static/icons/regular/signal-4.svg (100%) rename {client/src => src}/static/icons/regular/signal-alt-1.svg (100%) rename {client/src => src}/static/icons/regular/signal-alt-2.svg (100%) rename {client/src => src}/static/icons/regular/signal-alt-3.svg (100%) rename {client/src => src}/static/icons/regular/signal-alt-slash.svg (100%) rename {client/src => src}/static/icons/regular/signal-alt.svg (100%) rename {client/src => src}/static/icons/regular/signal-slash.svg (100%) rename {client/src => src}/static/icons/regular/signal-stream.svg (100%) rename {client/src => src}/static/icons/regular/signal.svg (100%) rename {client/src => src}/static/icons/regular/signature.svg (100%) rename {client/src => src}/static/icons/regular/sim-card.svg (100%) rename {client/src => src}/static/icons/regular/siren-on.svg (100%) rename {client/src => src}/static/icons/regular/siren.svg (100%) rename {client/src => src}/static/icons/regular/sitemap.svg (100%) rename {client/src => src}/static/icons/regular/skating.svg (100%) rename {client/src => src}/static/icons/regular/skeleton.svg (100%) rename {client/src => src}/static/icons/regular/ski-jump.svg (100%) rename {client/src => src}/static/icons/regular/ski-lift.svg (100%) rename {client/src => src}/static/icons/regular/skiing-nordic.svg (100%) rename {client/src => src}/static/icons/regular/skiing.svg (100%) rename {client/src => src}/static/icons/regular/skull-cow.svg (100%) rename {client/src => src}/static/icons/regular/skull-crossbones.svg (100%) rename {client/src => src}/static/icons/regular/skull.svg (100%) rename {client/src => src}/static/icons/regular/slash.svg (100%) rename {client/src => src}/static/icons/regular/sledding.svg (100%) rename {client/src => src}/static/icons/regular/sleigh.svg (100%) rename {client/src => src}/static/icons/regular/sliders-h-square.svg (100%) rename {client/src => src}/static/icons/regular/sliders-h.svg (100%) rename {client/src => src}/static/icons/regular/sliders-v-square.svg (100%) rename {client/src => src}/static/icons/regular/sliders-v.svg (100%) rename {client/src => src}/static/icons/regular/smile-beam.svg (100%) rename {client/src => src}/static/icons/regular/smile-plus.svg (100%) rename {client/src => src}/static/icons/regular/smile-wink.svg (100%) rename {client/src => src}/static/icons/regular/smile.svg (100%) rename {client/src => src}/static/icons/regular/smog.svg (100%) rename {client/src => src}/static/icons/regular/smoke.svg (100%) rename {client/src => src}/static/icons/regular/smoking-ban.svg (100%) rename {client/src => src}/static/icons/regular/smoking.svg (100%) rename {client/src => src}/static/icons/regular/sms.svg (100%) rename {client/src => src}/static/icons/regular/snake.svg (100%) rename {client/src => src}/static/icons/regular/snooze.svg (100%) rename {client/src => src}/static/icons/regular/snow-blowing.svg (100%) rename {client/src => src}/static/icons/regular/snowboarding.svg (100%) rename {client/src => src}/static/icons/regular/snowflake.svg (100%) rename {client/src => src}/static/icons/regular/snowflakes.svg (100%) rename {client/src => src}/static/icons/regular/snowman.svg (100%) rename {client/src => src}/static/icons/regular/snowmobile.svg (100%) rename {client/src => src}/static/icons/regular/snowplow.svg (100%) rename {client/src => src}/static/icons/regular/socks.svg (100%) rename {client/src => src}/static/icons/regular/solar-panel.svg (100%) rename {client/src => src}/static/icons/regular/solar-system.svg (100%) rename {client/src => src}/static/icons/regular/sort-alpha-down-alt.svg (100%) rename {client/src => src}/static/icons/regular/sort-alpha-down.svg (100%) rename {client/src => src}/static/icons/regular/sort-alpha-up-alt.svg (100%) rename {client/src => src}/static/icons/regular/sort-alpha-up.svg (100%) rename {client/src => src}/static/icons/regular/sort-alt.svg (100%) rename {client/src => src}/static/icons/regular/sort-amount-down-alt.svg (100%) rename {client/src => src}/static/icons/regular/sort-amount-down.svg (100%) rename {client/src => src}/static/icons/regular/sort-amount-up-alt.svg (100%) rename {client/src => src}/static/icons/regular/sort-amount-up.svg (100%) rename {client/src => src}/static/icons/regular/sort-circle-down.svg (100%) rename {client/src => src}/static/icons/regular/sort-circle-up.svg (100%) rename {client/src => src}/static/icons/regular/sort-circle.svg (100%) rename {client/src => src}/static/icons/regular/sort-down.svg (100%) rename {client/src => src}/static/icons/regular/sort-numeric-down-alt.svg (100%) rename {client/src => src}/static/icons/regular/sort-numeric-down.svg (100%) rename {client/src => src}/static/icons/regular/sort-numeric-up-alt.svg (100%) rename {client/src => src}/static/icons/regular/sort-numeric-up.svg (100%) rename {client/src => src}/static/icons/regular/sort-shapes-down-alt.svg (100%) rename {client/src => src}/static/icons/regular/sort-shapes-down.svg (100%) rename {client/src => src}/static/icons/regular/sort-shapes-up-alt.svg (100%) rename {client/src => src}/static/icons/regular/sort-shapes-up.svg (100%) rename {client/src => src}/static/icons/regular/sort-size-down-alt.svg (100%) rename {client/src => src}/static/icons/regular/sort-size-down.svg (100%) rename {client/src => src}/static/icons/regular/sort-size-up-alt.svg (100%) rename {client/src => src}/static/icons/regular/sort-size-up.svg (100%) rename {client/src => src}/static/icons/regular/sort-up.svg (100%) rename {client/src => src}/static/icons/regular/sort.svg (100%) rename {client/src => src}/static/icons/regular/soup.svg (100%) rename {client/src => src}/static/icons/regular/spa.svg (100%) rename {client/src => src}/static/icons/regular/space-shuttle.svg (100%) rename {client/src => src}/static/icons/regular/space-station-moon-alt.svg (100%) rename {client/src => src}/static/icons/regular/space-station-moon.svg (100%) rename {client/src => src}/static/icons/regular/spade.svg (100%) rename {client/src => src}/static/icons/regular/sparkles.svg (100%) rename {client/src => src}/static/icons/regular/speaker.svg (100%) rename {client/src => src}/static/icons/regular/speakers.svg (100%) rename {client/src => src}/static/icons/regular/spell-check.svg (100%) rename {client/src => src}/static/icons/regular/spider-black-widow.svg (100%) rename {client/src => src}/static/icons/regular/spider-web.svg (100%) rename {client/src => src}/static/icons/regular/spider.svg (100%) rename {client/src => src}/static/icons/regular/spinner-third.svg (100%) rename {client/src => src}/static/icons/regular/spinner.svg (100%) rename {client/src => src}/static/icons/regular/splotch.svg (100%) rename {client/src => src}/static/icons/regular/spray-can.svg (100%) rename {client/src => src}/static/icons/regular/sprinkler.svg (100%) rename {client/src => src}/static/icons/regular/square-full.svg (100%) rename {client/src => src}/static/icons/regular/square-root-alt.svg (100%) rename {client/src => src}/static/icons/regular/square-root.svg (100%) rename {client/src => src}/static/icons/regular/square.svg (100%) rename {client/src => src}/static/icons/regular/squirrel.svg (100%) rename {client/src => src}/static/icons/regular/staff.svg (100%) rename {client/src => src}/static/icons/regular/stamp.svg (100%) rename {client/src => src}/static/icons/regular/star-and-crescent.svg (100%) rename {client/src => src}/static/icons/regular/star-christmas.svg (100%) rename {client/src => src}/static/icons/regular/star-exclamation.svg (100%) rename {client/src => src}/static/icons/regular/star-half-alt.svg (100%) rename {client/src => src}/static/icons/regular/star-half.svg (100%) rename {client/src => src}/static/icons/regular/star-of-david.svg (100%) rename {client/src => src}/static/icons/regular/star-of-life.svg (100%) rename {client/src => src}/static/icons/regular/star-shooting.svg (100%) rename {client/src => src}/static/icons/regular/star.svg (100%) rename {client/src => src}/static/icons/regular/starfighter-alt.svg (100%) rename {client/src => src}/static/icons/regular/starfighter.svg (100%) rename {client/src => src}/static/icons/regular/stars.svg (100%) rename {client/src => src}/static/icons/regular/starship-freighter.svg (100%) rename {client/src => src}/static/icons/regular/starship.svg (100%) rename {client/src => src}/static/icons/regular/steak.svg (100%) rename {client/src => src}/static/icons/regular/steering-wheel.svg (100%) rename {client/src => src}/static/icons/regular/step-backward.svg (100%) rename {client/src => src}/static/icons/regular/step-forward.svg (100%) rename {client/src => src}/static/icons/regular/stethoscope.svg (100%) rename {client/src => src}/static/icons/regular/sticky-note.svg (100%) rename {client/src => src}/static/icons/regular/stocking.svg (100%) rename {client/src => src}/static/icons/regular/stomach.svg (100%) rename {client/src => src}/static/icons/regular/stop-circle.svg (100%) rename {client/src => src}/static/icons/regular/stop.svg (100%) rename {client/src => src}/static/icons/regular/stopwatch.svg (100%) rename {client/src => src}/static/icons/regular/store-alt.svg (100%) rename {client/src => src}/static/icons/regular/store.svg (100%) rename {client/src => src}/static/icons/regular/stream.svg (100%) rename {client/src => src}/static/icons/regular/street-view.svg (100%) rename {client/src => src}/static/icons/regular/stretcher.svg (100%) rename {client/src => src}/static/icons/regular/strikethrough.svg (100%) rename {client/src => src}/static/icons/regular/stroopwafel.svg (100%) rename {client/src => src}/static/icons/regular/subscript.svg (100%) rename {client/src => src}/static/icons/regular/subway.svg (100%) rename {client/src => src}/static/icons/regular/suitcase-rolling.svg (100%) rename {client/src => src}/static/icons/regular/suitcase.svg (100%) rename {client/src => src}/static/icons/regular/sun-cloud.svg (100%) rename {client/src => src}/static/icons/regular/sun-dust.svg (100%) rename {client/src => src}/static/icons/regular/sun-haze.svg (100%) rename {client/src => src}/static/icons/regular/sun.svg (100%) rename {client/src => src}/static/icons/regular/sunglasses.svg (100%) rename {client/src => src}/static/icons/regular/sunrise.svg (100%) rename {client/src => src}/static/icons/regular/sunset.svg (100%) rename {client/src => src}/static/icons/regular/superscript.svg (100%) rename {client/src => src}/static/icons/regular/surprise.svg (100%) rename {client/src => src}/static/icons/regular/swatchbook.svg (100%) rename {client/src => src}/static/icons/regular/swimmer.svg (100%) rename {client/src => src}/static/icons/regular/swimming-pool.svg (100%) rename {client/src => src}/static/icons/regular/sword-laser-alt.svg (100%) rename {client/src => src}/static/icons/regular/sword-laser.svg (100%) rename {client/src => src}/static/icons/regular/sword.svg (100%) rename {client/src => src}/static/icons/regular/swords-laser.svg (100%) rename {client/src => src}/static/icons/regular/swords.svg (100%) rename {client/src => src}/static/icons/regular/synagogue.svg (100%) rename {client/src => src}/static/icons/regular/sync-alt.svg (100%) rename {client/src => src}/static/icons/regular/sync.svg (100%) rename {client/src => src}/static/icons/regular/syringe.svg (100%) rename {client/src => src}/static/icons/regular/table-tennis.svg (100%) rename {client/src => src}/static/icons/regular/table.svg (100%) rename {client/src => src}/static/icons/regular/tablet-alt.svg (100%) rename {client/src => src}/static/icons/regular/tablet-android-alt.svg (100%) rename {client/src => src}/static/icons/regular/tablet-android.svg (100%) rename {client/src => src}/static/icons/regular/tablet-rugged.svg (100%) rename {client/src => src}/static/icons/regular/tablet.svg (100%) rename {client/src => src}/static/icons/regular/tablets.svg (100%) rename {client/src => src}/static/icons/regular/tachometer-alt-average.svg (100%) rename {client/src => src}/static/icons/regular/tachometer-alt-fast.svg (100%) rename {client/src => src}/static/icons/regular/tachometer-alt-fastest.svg (100%) rename {client/src => src}/static/icons/regular/tachometer-alt-slow.svg (100%) rename {client/src => src}/static/icons/regular/tachometer-alt-slowest.svg (100%) rename {client/src => src}/static/icons/regular/tachometer-alt.svg (100%) rename {client/src => src}/static/icons/regular/tachometer-average.svg (100%) rename {client/src => src}/static/icons/regular/tachometer-fast.svg (100%) rename {client/src => src}/static/icons/regular/tachometer-fastest.svg (100%) rename {client/src => src}/static/icons/regular/tachometer-slow.svg (100%) rename {client/src => src}/static/icons/regular/tachometer-slowest.svg (100%) rename {client/src => src}/static/icons/regular/tachometer.svg (100%) rename {client/src => src}/static/icons/regular/taco.svg (100%) rename {client/src => src}/static/icons/regular/tag.svg (100%) rename {client/src => src}/static/icons/regular/tags.svg (100%) rename {client/src => src}/static/icons/regular/tally.svg (100%) rename {client/src => src}/static/icons/regular/tanakh.svg (100%) rename {client/src => src}/static/icons/regular/tape.svg (100%) rename {client/src => src}/static/icons/regular/tasks-alt.svg (100%) rename {client/src => src}/static/icons/regular/tasks.svg (100%) rename {client/src => src}/static/icons/regular/taxi.svg (100%) rename {client/src => src}/static/icons/regular/teeth-open.svg (100%) rename {client/src => src}/static/icons/regular/teeth.svg (100%) rename {client/src => src}/static/icons/regular/telescope.svg (100%) rename {client/src => src}/static/icons/regular/temperature-down.svg (100%) rename {client/src => src}/static/icons/regular/temperature-frigid.svg (100%) rename {client/src => src}/static/icons/regular/temperature-high.svg (100%) rename {client/src => src}/static/icons/regular/temperature-hot.svg (100%) rename {client/src => src}/static/icons/regular/temperature-low.svg (100%) rename {client/src => src}/static/icons/regular/temperature-up.svg (100%) rename {client/src => src}/static/icons/regular/tenge.svg (100%) rename {client/src => src}/static/icons/regular/tennis-ball.svg (100%) rename {client/src => src}/static/icons/regular/terminal.svg (100%) rename {client/src => src}/static/icons/regular/text-height.svg (100%) rename {client/src => src}/static/icons/regular/text-size.svg (100%) rename {client/src => src}/static/icons/regular/text-width.svg (100%) rename {client/src => src}/static/icons/regular/text.svg (100%) rename {client/src => src}/static/icons/regular/th-large.svg (100%) rename {client/src => src}/static/icons/regular/th-list.svg (100%) rename {client/src => src}/static/icons/regular/th.svg (100%) rename {client/src => src}/static/icons/regular/theater-masks.svg (100%) rename {client/src => src}/static/icons/regular/thermometer-empty.svg (100%) rename {client/src => src}/static/icons/regular/thermometer-full.svg (100%) rename {client/src => src}/static/icons/regular/thermometer-half.svg (100%) rename {client/src => src}/static/icons/regular/thermometer-quarter.svg (100%) rename {client/src => src}/static/icons/regular/thermometer-three-quarters.svg (100%) rename {client/src => src}/static/icons/regular/thermometer.svg (100%) rename {client/src => src}/static/icons/regular/theta.svg (100%) rename {client/src => src}/static/icons/regular/thumbs-down.svg (100%) rename {client/src => src}/static/icons/regular/thumbs-up.svg (100%) rename {client/src => src}/static/icons/regular/thumbtack.svg (100%) rename {client/src => src}/static/icons/regular/thunderstorm-moon.svg (100%) rename {client/src => src}/static/icons/regular/thunderstorm-sun.svg (100%) rename {client/src => src}/static/icons/regular/thunderstorm.svg (100%) rename {client/src => src}/static/icons/regular/ticket-alt.svg (100%) rename {client/src => src}/static/icons/regular/ticket.svg (100%) rename {client/src => src}/static/icons/regular/tilde.svg (100%) rename {client/src => src}/static/icons/regular/times-circle.svg (100%) rename {client/src => src}/static/icons/regular/times-hexagon.svg (100%) rename {client/src => src}/static/icons/regular/times-octagon.svg (100%) rename {client/src => src}/static/icons/regular/times-square.svg (100%) rename {client/src => src}/static/icons/regular/times.svg (100%) rename {client/src => src}/static/icons/regular/tint-slash.svg (100%) rename {client/src => src}/static/icons/regular/tint.svg (100%) rename {client/src => src}/static/icons/regular/tire-flat.svg (100%) rename {client/src => src}/static/icons/regular/tire-pressure-warning.svg (100%) rename {client/src => src}/static/icons/regular/tire-rugged.svg (100%) rename {client/src => src}/static/icons/regular/tire.svg (100%) rename {client/src => src}/static/icons/regular/tired.svg (100%) rename {client/src => src}/static/icons/regular/toggle-off.svg (100%) rename {client/src => src}/static/icons/regular/toggle-on.svg (100%) rename {client/src => src}/static/icons/regular/toilet-paper-alt.svg (100%) rename {client/src => src}/static/icons/regular/toilet-paper.svg (100%) rename {client/src => src}/static/icons/regular/toilet.svg (100%) rename {client/src => src}/static/icons/regular/tombstone-alt.svg (100%) rename {client/src => src}/static/icons/regular/tombstone.svg (100%) rename {client/src => src}/static/icons/regular/toolbox.svg (100%) rename {client/src => src}/static/icons/regular/tools.svg (100%) rename {client/src => src}/static/icons/regular/tooth.svg (100%) rename {client/src => src}/static/icons/regular/toothbrush.svg (100%) rename {client/src => src}/static/icons/regular/torah.svg (100%) rename {client/src => src}/static/icons/regular/torii-gate.svg (100%) rename {client/src => src}/static/icons/regular/tornado.svg (100%) rename {client/src => src}/static/icons/regular/tractor.svg (100%) rename {client/src => src}/static/icons/regular/trademark.svg (100%) rename {client/src => src}/static/icons/regular/traffic-cone.svg (100%) rename {client/src => src}/static/icons/regular/traffic-light-go.svg (100%) rename {client/src => src}/static/icons/regular/traffic-light-slow.svg (100%) rename {client/src => src}/static/icons/regular/traffic-light-stop.svg (100%) rename {client/src => src}/static/icons/regular/traffic-light.svg (100%) rename {client/src => src}/static/icons/regular/trailer.svg (100%) rename {client/src => src}/static/icons/regular/train.svg (100%) rename {client/src => src}/static/icons/regular/tram.svg (100%) rename {client/src => src}/static/icons/regular/transgender-alt.svg (100%) rename {client/src => src}/static/icons/regular/transgender.svg (100%) rename {client/src => src}/static/icons/regular/transporter-1.svg (100%) rename {client/src => src}/static/icons/regular/transporter-2.svg (100%) rename {client/src => src}/static/icons/regular/transporter-3.svg (100%) rename {client/src => src}/static/icons/regular/transporter-empty.svg (100%) rename {client/src => src}/static/icons/regular/transporter.svg (100%) rename {client/src => src}/static/icons/regular/trash-alt.svg (100%) rename {client/src => src}/static/icons/regular/trash-restore-alt.svg (100%) rename {client/src => src}/static/icons/regular/trash-restore.svg (100%) rename {client/src => src}/static/icons/regular/trash-undo-alt.svg (100%) rename {client/src => src}/static/icons/regular/trash-undo.svg (100%) rename {client/src => src}/static/icons/regular/trash.svg (100%) rename {client/src => src}/static/icons/regular/treasure-chest.svg (100%) rename {client/src => src}/static/icons/regular/tree-alt.svg (100%) rename {client/src => src}/static/icons/regular/tree-christmas.svg (100%) rename {client/src => src}/static/icons/regular/tree-decorated.svg (100%) rename {client/src => src}/static/icons/regular/tree-large.svg (100%) rename {client/src => src}/static/icons/regular/tree-palm.svg (100%) rename {client/src => src}/static/icons/regular/tree.svg (100%) rename {client/src => src}/static/icons/regular/trees.svg (100%) rename {client/src => src}/static/icons/regular/triangle-music.svg (100%) rename {client/src => src}/static/icons/regular/triangle.svg (100%) rename {client/src => src}/static/icons/regular/trophy-alt.svg (100%) rename {client/src => src}/static/icons/regular/trophy.svg (100%) rename {client/src => src}/static/icons/regular/truck-container.svg (100%) rename {client/src => src}/static/icons/regular/truck-couch.svg (100%) rename {client/src => src}/static/icons/regular/truck-loading.svg (100%) rename {client/src => src}/static/icons/regular/truck-monster.svg (100%) rename {client/src => src}/static/icons/regular/truck-moving.svg (100%) rename {client/src => src}/static/icons/regular/truck-pickup.svg (100%) rename {client/src => src}/static/icons/regular/truck-plow.svg (100%) rename {client/src => src}/static/icons/regular/truck-ramp.svg (100%) rename {client/src => src}/static/icons/regular/truck.svg (100%) rename {client/src => src}/static/icons/regular/trumpet.svg (100%) rename {client/src => src}/static/icons/regular/tshirt.svg (100%) rename {client/src => src}/static/icons/regular/tty.svg (100%) rename {client/src => src}/static/icons/regular/turkey.svg (100%) rename {client/src => src}/static/icons/regular/turntable.svg (100%) rename {client/src => src}/static/icons/regular/turtle.svg (100%) rename {client/src => src}/static/icons/regular/tv-alt.svg (100%) rename {client/src => src}/static/icons/regular/tv-music.svg (100%) rename {client/src => src}/static/icons/regular/tv-retro.svg (100%) rename {client/src => src}/static/icons/regular/tv.svg (100%) rename {client/src => src}/static/icons/regular/typewriter.svg (100%) rename {client/src => src}/static/icons/regular/ufo-beam.svg (100%) rename {client/src => src}/static/icons/regular/ufo.svg (100%) rename {client/src => src}/static/icons/regular/umbrella-beach.svg (100%) rename {client/src => src}/static/icons/regular/umbrella.svg (100%) rename {client/src => src}/static/icons/regular/underline.svg (100%) rename {client/src => src}/static/icons/regular/undo-alt.svg (100%) rename {client/src => src}/static/icons/regular/undo.svg (100%) rename {client/src => src}/static/icons/regular/unicorn.svg (100%) rename {client/src => src}/static/icons/regular/union.svg (100%) rename {client/src => src}/static/icons/regular/universal-access.svg (100%) rename {client/src => src}/static/icons/regular/university.svg (100%) rename {client/src => src}/static/icons/regular/unlink.svg (100%) rename {client/src => src}/static/icons/regular/unlock-alt.svg (100%) rename {client/src => src}/static/icons/regular/unlock.svg (100%) rename {client/src => src}/static/icons/regular/upload.svg (100%) rename {client/src => src}/static/icons/regular/usb-drive.svg (100%) rename {client/src => src}/static/icons/regular/usd-circle.svg (100%) rename {client/src => src}/static/icons/regular/usd-square.svg (100%) rename {client/src => src}/static/icons/regular/user-alien.svg (100%) rename {client/src => src}/static/icons/regular/user-alt-slash.svg (100%) rename {client/src => src}/static/icons/regular/user-alt.svg (100%) rename {client/src => src}/static/icons/regular/user-astronaut.svg (100%) rename {client/src => src}/static/icons/regular/user-chart.svg (100%) rename {client/src => src}/static/icons/regular/user-check.svg (100%) rename {client/src => src}/static/icons/regular/user-circle.svg (100%) rename {client/src => src}/static/icons/regular/user-clock.svg (100%) rename {client/src => src}/static/icons/regular/user-cog.svg (100%) rename {client/src => src}/static/icons/regular/user-cowboy.svg (100%) rename {client/src => src}/static/icons/regular/user-crown.svg (100%) rename {client/src => src}/static/icons/regular/user-edit.svg (100%) rename {client/src => src}/static/icons/regular/user-friends.svg (100%) rename {client/src => src}/static/icons/regular/user-graduate.svg (100%) rename {client/src => src}/static/icons/regular/user-hard-hat.svg (100%) rename {client/src => src}/static/icons/regular/user-headset.svg (100%) rename {client/src => src}/static/icons/regular/user-injured.svg (100%) rename {client/src => src}/static/icons/regular/user-lock.svg (100%) rename {client/src => src}/static/icons/regular/user-md-chat.svg (100%) rename {client/src => src}/static/icons/regular/user-md.svg (100%) rename {client/src => src}/static/icons/regular/user-minus.svg (100%) rename {client/src => src}/static/icons/regular/user-music.svg (100%) rename {client/src => src}/static/icons/regular/user-ninja.svg (100%) rename {client/src => src}/static/icons/regular/user-nurse.svg (100%) rename {client/src => src}/static/icons/regular/user-plus.svg (100%) rename {client/src => src}/static/icons/regular/user-robot.svg (100%) rename {client/src => src}/static/icons/regular/user-secret.svg (100%) rename {client/src => src}/static/icons/regular/user-shield.svg (100%) rename {client/src => src}/static/icons/regular/user-slash.svg (100%) rename {client/src => src}/static/icons/regular/user-tag.svg (100%) rename {client/src => src}/static/icons/regular/user-tie.svg (100%) rename {client/src => src}/static/icons/regular/user-times.svg (100%) rename {client/src => src}/static/icons/regular/user-visor.svg (100%) rename {client/src => src}/static/icons/regular/user.svg (100%) rename {client/src => src}/static/icons/regular/users-class.svg (100%) rename {client/src => src}/static/icons/regular/users-cog.svg (100%) rename {client/src => src}/static/icons/regular/users-crown.svg (100%) rename {client/src => src}/static/icons/regular/users-medical.svg (100%) rename {client/src => src}/static/icons/regular/users.svg (100%) rename {client/src => src}/static/icons/regular/utensil-fork.svg (100%) rename {client/src => src}/static/icons/regular/utensil-knife.svg (100%) rename {client/src => src}/static/icons/regular/utensil-spoon.svg (100%) rename {client/src => src}/static/icons/regular/utensils-alt.svg (100%) rename {client/src => src}/static/icons/regular/utensils.svg (100%) rename {client/src => src}/static/icons/regular/vacuum-robot.svg (100%) rename {client/src => src}/static/icons/regular/vacuum.svg (100%) rename {client/src => src}/static/icons/regular/value-absolute.svg (100%) rename {client/src => src}/static/icons/regular/vector-square.svg (100%) rename {client/src => src}/static/icons/regular/venus-double.svg (100%) rename {client/src => src}/static/icons/regular/venus-mars.svg (100%) rename {client/src => src}/static/icons/regular/venus.svg (100%) rename {client/src => src}/static/icons/regular/vhs.svg (100%) rename {client/src => src}/static/icons/regular/vial.svg (100%) rename {client/src => src}/static/icons/regular/vials.svg (100%) rename {client/src => src}/static/icons/regular/video-plus.svg (100%) rename {client/src => src}/static/icons/regular/video-slash.svg (100%) rename {client/src => src}/static/icons/regular/video.svg (100%) rename {client/src => src}/static/icons/regular/vihara.svg (100%) rename {client/src => src}/static/icons/regular/violin.svg (100%) rename {client/src => src}/static/icons/regular/voicemail.svg (100%) rename {client/src => src}/static/icons/regular/volcano.svg (100%) rename {client/src => src}/static/icons/regular/volleyball-ball.svg (100%) rename {client/src => src}/static/icons/regular/volume-down.svg (100%) rename {client/src => src}/static/icons/regular/volume-mute.svg (100%) rename {client/src => src}/static/icons/regular/volume-off.svg (100%) rename {client/src => src}/static/icons/regular/volume-slash.svg (100%) rename {client/src => src}/static/icons/regular/volume-up.svg (100%) rename {client/src => src}/static/icons/regular/volume.svg (100%) rename {client/src => src}/static/icons/regular/vote-nay.svg (100%) rename {client/src => src}/static/icons/regular/vote-yea.svg (100%) rename {client/src => src}/static/icons/regular/vr-cardboard.svg (100%) rename {client/src => src}/static/icons/regular/wagon-covered.svg (100%) rename {client/src => src}/static/icons/regular/walker.svg (100%) rename {client/src => src}/static/icons/regular/walkie-talkie.svg (100%) rename {client/src => src}/static/icons/regular/walking.svg (100%) rename {client/src => src}/static/icons/regular/wallet.svg (100%) rename {client/src => src}/static/icons/regular/wand-magic.svg (100%) rename {client/src => src}/static/icons/regular/wand.svg (100%) rename {client/src => src}/static/icons/regular/warehouse-alt.svg (100%) rename {client/src => src}/static/icons/regular/warehouse.svg (100%) rename {client/src => src}/static/icons/regular/washer.svg (100%) rename {client/src => src}/static/icons/regular/watch-calculator.svg (100%) rename {client/src => src}/static/icons/regular/watch-fitness.svg (100%) rename {client/src => src}/static/icons/regular/watch.svg (100%) rename {client/src => src}/static/icons/regular/water-lower.svg (100%) rename {client/src => src}/static/icons/regular/water-rise.svg (100%) rename {client/src => src}/static/icons/regular/water.svg (100%) rename {client/src => src}/static/icons/regular/wave-sine.svg (100%) rename {client/src => src}/static/icons/regular/wave-square.svg (100%) rename {client/src => src}/static/icons/regular/wave-triangle.svg (100%) rename {client/src => src}/static/icons/regular/waveform-path.svg (100%) rename {client/src => src}/static/icons/regular/waveform.svg (100%) rename {client/src => src}/static/icons/regular/webcam-slash.svg (100%) rename {client/src => src}/static/icons/regular/webcam.svg (100%) rename {client/src => src}/static/icons/regular/weight-hanging.svg (100%) rename {client/src => src}/static/icons/regular/weight.svg (100%) rename {client/src => src}/static/icons/regular/whale.svg (100%) rename {client/src => src}/static/icons/regular/wheat.svg (100%) rename {client/src => src}/static/icons/regular/wheelchair.svg (100%) rename {client/src => src}/static/icons/regular/whistle.svg (100%) rename {client/src => src}/static/icons/regular/wifi-1.svg (100%) rename {client/src => src}/static/icons/regular/wifi-2.svg (100%) rename {client/src => src}/static/icons/regular/wifi-slash.svg (100%) rename {client/src => src}/static/icons/regular/wifi.svg (100%) rename {client/src => src}/static/icons/regular/wind-turbine.svg (100%) rename {client/src => src}/static/icons/regular/wind-warning.svg (100%) rename {client/src => src}/static/icons/regular/wind.svg (100%) rename {client/src => src}/static/icons/regular/window-alt.svg (100%) rename {client/src => src}/static/icons/regular/window-close.svg (100%) rename {client/src => src}/static/icons/regular/window-frame-open.svg (100%) rename {client/src => src}/static/icons/regular/window-frame.svg (100%) rename {client/src => src}/static/icons/regular/window-maximize.svg (100%) rename {client/src => src}/static/icons/regular/window-minimize.svg (100%) rename {client/src => src}/static/icons/regular/window-restore.svg (100%) rename {client/src => src}/static/icons/regular/window.svg (100%) rename {client/src => src}/static/icons/regular/windsock.svg (100%) rename {client/src => src}/static/icons/regular/wine-bottle.svg (100%) rename {client/src => src}/static/icons/regular/wine-glass-alt.svg (100%) rename {client/src => src}/static/icons/regular/wine-glass.svg (100%) rename {client/src => src}/static/icons/regular/won-sign.svg (100%) rename {client/src => src}/static/icons/regular/wreath.svg (100%) rename {client/src => src}/static/icons/regular/wrench.svg (100%) rename {client/src => src}/static/icons/regular/x-ray.svg (100%) rename {client/src => src}/static/icons/regular/yen-sign.svg (100%) rename {client/src => src}/static/icons/regular/yin-yang.svg (100%) rename {client/src => src}/static/icons/solid/abacus.svg (100%) rename {client/src => src}/static/icons/solid/acorn.svg (100%) rename {client/src => src}/static/icons/solid/ad.svg (100%) rename {client/src => src}/static/icons/solid/address-book.svg (100%) rename {client/src => src}/static/icons/solid/address-card.svg (100%) rename {client/src => src}/static/icons/solid/adjust.svg (100%) rename {client/src => src}/static/icons/solid/air-conditioner.svg (100%) rename {client/src => src}/static/icons/solid/air-freshener.svg (100%) rename {client/src => src}/static/icons/solid/alarm-clock.svg (100%) rename {client/src => src}/static/icons/solid/alarm-exclamation.svg (100%) rename {client/src => src}/static/icons/solid/alarm-plus.svg (100%) rename {client/src => src}/static/icons/solid/alarm-snooze.svg (100%) rename {client/src => src}/static/icons/solid/album-collection.svg (100%) rename {client/src => src}/static/icons/solid/album.svg (100%) rename {client/src => src}/static/icons/solid/alicorn.svg (100%) rename {client/src => src}/static/icons/solid/alien-monster.svg (100%) rename {client/src => src}/static/icons/solid/alien.svg (100%) rename {client/src => src}/static/icons/solid/align-center.svg (100%) rename {client/src => src}/static/icons/solid/align-justify.svg (100%) rename {client/src => src}/static/icons/solid/align-left.svg (100%) rename {client/src => src}/static/icons/solid/align-right.svg (100%) rename {client/src => src}/static/icons/solid/align-slash.svg (100%) rename {client/src => src}/static/icons/solid/allergies.svg (100%) rename {client/src => src}/static/icons/solid/ambulance.svg (100%) rename {client/src => src}/static/icons/solid/american-sign-language-interpreting.svg (100%) rename {client/src => src}/static/icons/solid/amp-guitar.svg (100%) rename {client/src => src}/static/icons/solid/analytics.svg (100%) rename {client/src => src}/static/icons/solid/anchor.svg (100%) rename {client/src => src}/static/icons/solid/angel.svg (100%) rename {client/src => src}/static/icons/solid/angle-double-down.svg (100%) rename {client/src => src}/static/icons/solid/angle-double-left.svg (100%) rename {client/src => src}/static/icons/solid/angle-double-right.svg (100%) rename {client/src => src}/static/icons/solid/angle-double-up.svg (100%) rename {client/src => src}/static/icons/solid/angle-down.svg (100%) rename {client/src => src}/static/icons/solid/angle-left.svg (100%) rename {client/src => src}/static/icons/solid/angle-right.svg (100%) rename {client/src => src}/static/icons/solid/angle-up.svg (100%) rename {client/src => src}/static/icons/solid/angry.svg (100%) rename {client/src => src}/static/icons/solid/ankh.svg (100%) rename {client/src => src}/static/icons/solid/apple-alt.svg (100%) rename {client/src => src}/static/icons/solid/apple-crate.svg (100%) rename {client/src => src}/static/icons/solid/archive.svg (100%) rename {client/src => src}/static/icons/solid/archway.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-circle-down.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-circle-left.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-circle-right.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-circle-up.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-down.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-from-bottom.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-from-left.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-from-right.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-from-top.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-left.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-right.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-square-down.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-square-left.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-square-right.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-square-up.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-to-bottom.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-to-left.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-to-right.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-to-top.svg (100%) rename {client/src => src}/static/icons/solid/arrow-alt-up.svg (100%) rename {client/src => src}/static/icons/solid/arrow-circle-down.svg (100%) rename {client/src => src}/static/icons/solid/arrow-circle-left.svg (100%) rename {client/src => src}/static/icons/solid/arrow-circle-right.svg (100%) rename {client/src => src}/static/icons/solid/arrow-circle-up.svg (100%) rename {client/src => src}/static/icons/solid/arrow-down.svg (100%) rename {client/src => src}/static/icons/solid/arrow-from-bottom.svg (100%) rename {client/src => src}/static/icons/solid/arrow-from-left.svg (100%) rename {client/src => src}/static/icons/solid/arrow-from-right.svg (100%) rename {client/src => src}/static/icons/solid/arrow-from-top.svg (100%) rename {client/src => src}/static/icons/solid/arrow-left.svg (100%) rename {client/src => src}/static/icons/solid/arrow-right.svg (100%) rename {client/src => src}/static/icons/solid/arrow-square-down.svg (100%) rename {client/src => src}/static/icons/solid/arrow-square-left.svg (100%) rename {client/src => src}/static/icons/solid/arrow-square-right.svg (100%) rename {client/src => src}/static/icons/solid/arrow-square-up.svg (100%) rename {client/src => src}/static/icons/solid/arrow-to-bottom.svg (100%) rename {client/src => src}/static/icons/solid/arrow-to-left.svg (100%) rename {client/src => src}/static/icons/solid/arrow-to-right.svg (100%) rename {client/src => src}/static/icons/solid/arrow-to-top.svg (100%) rename {client/src => src}/static/icons/solid/arrow-up.svg (100%) rename {client/src => src}/static/icons/solid/arrows-alt-h.svg (100%) rename {client/src => src}/static/icons/solid/arrows-alt-v.svg (100%) rename {client/src => src}/static/icons/solid/arrows-alt.svg (100%) rename {client/src => src}/static/icons/solid/arrows-h.svg (100%) rename {client/src => src}/static/icons/solid/arrows-v.svg (100%) rename {client/src => src}/static/icons/solid/arrows.svg (100%) rename {client/src => src}/static/icons/solid/assistive-listening-systems.svg (100%) rename {client/src => src}/static/icons/solid/asterisk.svg (100%) rename {client/src => src}/static/icons/solid/at.svg (100%) rename {client/src => src}/static/icons/solid/atlas.svg (100%) rename {client/src => src}/static/icons/solid/atom-alt.svg (100%) rename {client/src => src}/static/icons/solid/atom.svg (100%) rename {client/src => src}/static/icons/solid/audio-description.svg (100%) rename {client/src => src}/static/icons/solid/award.svg (100%) rename {client/src => src}/static/icons/solid/axe-battle.svg (100%) rename {client/src => src}/static/icons/solid/axe.svg (100%) rename {client/src => src}/static/icons/solid/baby-carriage.svg (100%) rename {client/src => src}/static/icons/solid/baby.svg (100%) rename {client/src => src}/static/icons/solid/backpack.svg (100%) rename {client/src => src}/static/icons/solid/backspace.svg (100%) rename {client/src => src}/static/icons/solid/backward.svg (100%) rename {client/src => src}/static/icons/solid/bacon.svg (100%) rename {client/src => src}/static/icons/solid/badge-check.svg (100%) rename {client/src => src}/static/icons/solid/badge-dollar.svg (100%) rename {client/src => src}/static/icons/solid/badge-percent.svg (100%) rename {client/src => src}/static/icons/solid/badge-sheriff.svg (100%) rename {client/src => src}/static/icons/solid/badge.svg (100%) rename {client/src => src}/static/icons/solid/badger-honey.svg (100%) rename {client/src => src}/static/icons/solid/bags-shopping.svg (100%) rename {client/src => src}/static/icons/solid/bahai.svg (100%) rename {client/src => src}/static/icons/solid/balance-scale-left.svg (100%) rename {client/src => src}/static/icons/solid/balance-scale-right.svg (100%) rename {client/src => src}/static/icons/solid/balance-scale.svg (100%) rename {client/src => src}/static/icons/solid/ball-pile.svg (100%) rename {client/src => src}/static/icons/solid/ballot-check.svg (100%) rename {client/src => src}/static/icons/solid/ballot.svg (100%) rename {client/src => src}/static/icons/solid/ban.svg (100%) rename {client/src => src}/static/icons/solid/band-aid.svg (100%) rename {client/src => src}/static/icons/solid/banjo.svg (100%) rename {client/src => src}/static/icons/solid/barcode-alt.svg (100%) rename {client/src => src}/static/icons/solid/barcode-read.svg (100%) rename {client/src => src}/static/icons/solid/barcode-scan.svg (100%) rename {client/src => src}/static/icons/solid/barcode.svg (100%) rename {client/src => src}/static/icons/solid/bars.svg (100%) rename {client/src => src}/static/icons/solid/baseball-ball.svg (100%) rename {client/src => src}/static/icons/solid/baseball.svg (100%) rename {client/src => src}/static/icons/solid/basketball-ball.svg (100%) rename {client/src => src}/static/icons/solid/basketball-hoop.svg (100%) rename {client/src => src}/static/icons/solid/bat.svg (100%) rename {client/src => src}/static/icons/solid/bath.svg (100%) rename {client/src => src}/static/icons/solid/battery-bolt.svg (100%) rename {client/src => src}/static/icons/solid/battery-empty.svg (100%) rename {client/src => src}/static/icons/solid/battery-full.svg (100%) rename {client/src => src}/static/icons/solid/battery-half.svg (100%) rename {client/src => src}/static/icons/solid/battery-quarter.svg (100%) rename {client/src => src}/static/icons/solid/battery-slash.svg (100%) rename {client/src => src}/static/icons/solid/battery-three-quarters.svg (100%) rename {client/src => src}/static/icons/solid/bed-alt.svg (100%) rename {client/src => src}/static/icons/solid/bed-bunk.svg (100%) rename {client/src => src}/static/icons/solid/bed-empty.svg (100%) rename {client/src => src}/static/icons/solid/bed.svg (100%) rename {client/src => src}/static/icons/solid/beer.svg (100%) rename {client/src => src}/static/icons/solid/bell-exclamation.svg (100%) rename {client/src => src}/static/icons/solid/bell-on.svg (100%) rename {client/src => src}/static/icons/solid/bell-plus.svg (100%) rename {client/src => src}/static/icons/solid/bell-school-slash.svg (100%) rename {client/src => src}/static/icons/solid/bell-school.svg (100%) rename {client/src => src}/static/icons/solid/bell-slash.svg (100%) rename {client/src => src}/static/icons/solid/bell.svg (100%) rename {client/src => src}/static/icons/solid/bells.svg (100%) rename {client/src => src}/static/icons/solid/betamax.svg (100%) rename {client/src => src}/static/icons/solid/bezier-curve.svg (100%) rename {client/src => src}/static/icons/solid/bible.svg (100%) rename {client/src => src}/static/icons/solid/bicycle.svg (100%) rename {client/src => src}/static/icons/solid/biking-mountain.svg (100%) rename {client/src => src}/static/icons/solid/biking.svg (100%) rename {client/src => src}/static/icons/solid/binoculars.svg (100%) rename {client/src => src}/static/icons/solid/biohazard.svg (100%) rename {client/src => src}/static/icons/solid/birthday-cake.svg (100%) rename {client/src => src}/static/icons/solid/blanket.svg (100%) rename {client/src => src}/static/icons/solid/blender-phone.svg (100%) rename {client/src => src}/static/icons/solid/blender.svg (100%) rename {client/src => src}/static/icons/solid/blind.svg (100%) rename {client/src => src}/static/icons/solid/blinds-open.svg (100%) rename {client/src => src}/static/icons/solid/blinds-raised.svg (100%) rename {client/src => src}/static/icons/solid/blinds.svg (100%) rename {client/src => src}/static/icons/solid/blog.svg (100%) rename {client/src => src}/static/icons/solid/bold.svg (100%) rename {client/src => src}/static/icons/solid/bolt.svg (100%) rename {client/src => src}/static/icons/solid/bomb.svg (100%) rename {client/src => src}/static/icons/solid/bone-break.svg (100%) rename {client/src => src}/static/icons/solid/bone.svg (100%) rename {client/src => src}/static/icons/solid/bong.svg (100%) rename {client/src => src}/static/icons/solid/book-alt.svg (100%) rename {client/src => src}/static/icons/solid/book-dead.svg (100%) rename {client/src => src}/static/icons/solid/book-heart.svg (100%) rename {client/src => src}/static/icons/solid/book-medical.svg (100%) rename {client/src => src}/static/icons/solid/book-open.svg (100%) rename {client/src => src}/static/icons/solid/book-reader.svg (100%) rename {client/src => src}/static/icons/solid/book-spells.svg (100%) rename {client/src => src}/static/icons/solid/book-user.svg (100%) rename {client/src => src}/static/icons/solid/book.svg (100%) rename {client/src => src}/static/icons/solid/bookmark.svg (100%) rename {client/src => src}/static/icons/solid/books-medical.svg (100%) rename {client/src => src}/static/icons/solid/books.svg (100%) rename {client/src => src}/static/icons/solid/boombox.svg (100%) rename {client/src => src}/static/icons/solid/boot.svg (100%) rename {client/src => src}/static/icons/solid/booth-curtain.svg (100%) rename {client/src => src}/static/icons/solid/border-all.svg (100%) rename {client/src => src}/static/icons/solid/border-bottom.svg (100%) rename {client/src => src}/static/icons/solid/border-center-h.svg (100%) rename {client/src => src}/static/icons/solid/border-center-v.svg (100%) rename {client/src => src}/static/icons/solid/border-inner.svg (100%) rename {client/src => src}/static/icons/solid/border-left.svg (100%) rename {client/src => src}/static/icons/solid/border-none.svg (100%) rename {client/src => src}/static/icons/solid/border-outer.svg (100%) rename {client/src => src}/static/icons/solid/border-right.svg (100%) rename {client/src => src}/static/icons/solid/border-style-alt.svg (100%) rename {client/src => src}/static/icons/solid/border-style.svg (100%) rename {client/src => src}/static/icons/solid/border-top.svg (100%) rename {client/src => src}/static/icons/solid/bow-arrow.svg (100%) rename {client/src => src}/static/icons/solid/bowling-ball.svg (100%) rename {client/src => src}/static/icons/solid/bowling-pins.svg (100%) rename {client/src => src}/static/icons/solid/box-alt.svg (100%) rename {client/src => src}/static/icons/solid/box-ballot.svg (100%) rename {client/src => src}/static/icons/solid/box-check.svg (100%) rename {client/src => src}/static/icons/solid/box-fragile.svg (100%) rename {client/src => src}/static/icons/solid/box-full.svg (100%) rename {client/src => src}/static/icons/solid/box-heart.svg (100%) rename {client/src => src}/static/icons/solid/box-open.svg (100%) rename {client/src => src}/static/icons/solid/box-up.svg (100%) rename {client/src => src}/static/icons/solid/box-usd.svg (100%) rename {client/src => src}/static/icons/solid/box.svg (100%) rename {client/src => src}/static/icons/solid/boxes-alt.svg (100%) rename {client/src => src}/static/icons/solid/boxes.svg (100%) rename {client/src => src}/static/icons/solid/boxing-glove.svg (100%) rename {client/src => src}/static/icons/solid/brackets-curly.svg (100%) rename {client/src => src}/static/icons/solid/brackets.svg (100%) rename {client/src => src}/static/icons/solid/braille.svg (100%) rename {client/src => src}/static/icons/solid/brain.svg (100%) rename {client/src => src}/static/icons/solid/bread-loaf.svg (100%) rename {client/src => src}/static/icons/solid/bread-slice.svg (100%) rename {client/src => src}/static/icons/solid/briefcase-medical.svg (100%) rename {client/src => src}/static/icons/solid/briefcase.svg (100%) rename {client/src => src}/static/icons/solid/bring-forward.svg (100%) rename {client/src => src}/static/icons/solid/bring-front.svg (100%) rename {client/src => src}/static/icons/solid/broadcast-tower.svg (100%) rename {client/src => src}/static/icons/solid/broom.svg (100%) rename {client/src => src}/static/icons/solid/browser.svg (100%) rename {client/src => src}/static/icons/solid/brush.svg (100%) rename {client/src => src}/static/icons/solid/bug.svg (100%) rename {client/src => src}/static/icons/solid/building.svg (100%) rename {client/src => src}/static/icons/solid/bullhorn.svg (100%) rename {client/src => src}/static/icons/solid/bullseye-arrow.svg (100%) rename {client/src => src}/static/icons/solid/bullseye-pointer.svg (100%) rename {client/src => src}/static/icons/solid/bullseye.svg (100%) rename {client/src => src}/static/icons/solid/burger-soda.svg (100%) rename {client/src => src}/static/icons/solid/burn.svg (100%) rename {client/src => src}/static/icons/solid/burrito.svg (100%) rename {client/src => src}/static/icons/solid/bus-alt.svg (100%) rename {client/src => src}/static/icons/solid/bus-school.svg (100%) rename {client/src => src}/static/icons/solid/bus.svg (100%) rename {client/src => src}/static/icons/solid/business-time.svg (100%) rename {client/src => src}/static/icons/solid/cabinet-filing.svg (100%) rename {client/src => src}/static/icons/solid/cactus.svg (100%) rename {client/src => src}/static/icons/solid/calculator-alt.svg (100%) rename {client/src => src}/static/icons/solid/calculator.svg (100%) rename {client/src => src}/static/icons/solid/calendar-alt.svg (100%) rename {client/src => src}/static/icons/solid/calendar-check.svg (100%) rename {client/src => src}/static/icons/solid/calendar-day.svg (100%) rename {client/src => src}/static/icons/solid/calendar-edit.svg (100%) rename {client/src => src}/static/icons/solid/calendar-exclamation.svg (100%) rename {client/src => src}/static/icons/solid/calendar-minus.svg (100%) rename {client/src => src}/static/icons/solid/calendar-plus.svg (100%) rename {client/src => src}/static/icons/solid/calendar-star.svg (100%) rename {client/src => src}/static/icons/solid/calendar-times.svg (100%) rename {client/src => src}/static/icons/solid/calendar-week.svg (100%) rename {client/src => src}/static/icons/solid/calendar.svg (100%) rename {client/src => src}/static/icons/solid/camcorder.svg (100%) rename {client/src => src}/static/icons/solid/camera-alt.svg (100%) rename {client/src => src}/static/icons/solid/camera-home.svg (100%) rename {client/src => src}/static/icons/solid/camera-movie.svg (100%) rename {client/src => src}/static/icons/solid/camera-polaroid.svg (100%) rename {client/src => src}/static/icons/solid/camera-retro.svg (100%) rename {client/src => src}/static/icons/solid/camera.svg (100%) rename {client/src => src}/static/icons/solid/campfire.svg (100%) rename {client/src => src}/static/icons/solid/campground.svg (100%) rename {client/src => src}/static/icons/solid/candle-holder.svg (100%) rename {client/src => src}/static/icons/solid/candy-cane.svg (100%) rename {client/src => src}/static/icons/solid/candy-corn.svg (100%) rename {client/src => src}/static/icons/solid/cannabis.svg (100%) rename {client/src => src}/static/icons/solid/capsules.svg (100%) rename {client/src => src}/static/icons/solid/car-alt.svg (100%) rename {client/src => src}/static/icons/solid/car-battery.svg (100%) rename {client/src => src}/static/icons/solid/car-building.svg (100%) rename {client/src => src}/static/icons/solid/car-bump.svg (100%) rename {client/src => src}/static/icons/solid/car-bus.svg (100%) rename {client/src => src}/static/icons/solid/car-crash.svg (100%) rename {client/src => src}/static/icons/solid/car-garage.svg (100%) rename {client/src => src}/static/icons/solid/car-mechanic.svg (100%) rename {client/src => src}/static/icons/solid/car-side.svg (100%) rename {client/src => src}/static/icons/solid/car-tilt.svg (100%) rename {client/src => src}/static/icons/solid/car-wash.svg (100%) rename {client/src => src}/static/icons/solid/car.svg (100%) rename {client/src => src}/static/icons/solid/caravan-alt.svg (100%) rename {client/src => src}/static/icons/solid/caravan.svg (100%) rename {client/src => src}/static/icons/solid/caret-circle-down.svg (100%) rename {client/src => src}/static/icons/solid/caret-circle-left.svg (100%) rename {client/src => src}/static/icons/solid/caret-circle-right.svg (100%) rename {client/src => src}/static/icons/solid/caret-circle-up.svg (100%) rename {client/src => src}/static/icons/solid/caret-down.svg (100%) rename {client/src => src}/static/icons/solid/caret-left.svg (100%) rename {client/src => src}/static/icons/solid/caret-right.svg (100%) rename {client/src => src}/static/icons/solid/caret-square-down.svg (100%) rename {client/src => src}/static/icons/solid/caret-square-left.svg (100%) rename {client/src => src}/static/icons/solid/caret-square-right.svg (100%) rename {client/src => src}/static/icons/solid/caret-square-up.svg (100%) rename {client/src => src}/static/icons/solid/caret-up.svg (100%) rename {client/src => src}/static/icons/solid/carrot.svg (100%) rename {client/src => src}/static/icons/solid/cars.svg (100%) rename {client/src => src}/static/icons/solid/cart-arrow-down.svg (100%) rename {client/src => src}/static/icons/solid/cart-plus.svg (100%) rename {client/src => src}/static/icons/solid/cash-register.svg (100%) rename {client/src => src}/static/icons/solid/cassette-tape.svg (100%) rename {client/src => src}/static/icons/solid/cat-space.svg (100%) rename {client/src => src}/static/icons/solid/cat.svg (100%) rename {client/src => src}/static/icons/solid/cauldron.svg (100%) rename {client/src => src}/static/icons/solid/cctv.svg (100%) rename {client/src => src}/static/icons/solid/certificate.svg (100%) rename {client/src => src}/static/icons/solid/chair-office.svg (100%) rename {client/src => src}/static/icons/solid/chair.svg (100%) rename {client/src => src}/static/icons/solid/chalkboard-teacher.svg (100%) rename {client/src => src}/static/icons/solid/chalkboard.svg (100%) rename {client/src => src}/static/icons/solid/charging-station.svg (100%) rename {client/src => src}/static/icons/solid/chart-area.svg (100%) rename {client/src => src}/static/icons/solid/chart-bar.svg (100%) rename {client/src => src}/static/icons/solid/chart-line-down.svg (100%) rename {client/src => src}/static/icons/solid/chart-line.svg (100%) rename {client/src => src}/static/icons/solid/chart-network.svg (100%) rename {client/src => src}/static/icons/solid/chart-pie-alt.svg (100%) rename {client/src => src}/static/icons/solid/chart-pie.svg (100%) rename {client/src => src}/static/icons/solid/chart-scatter.svg (100%) rename {client/src => src}/static/icons/solid/check-circle.svg (100%) rename {client/src => src}/static/icons/solid/check-double.svg (100%) rename {client/src => src}/static/icons/solid/check-square.svg (100%) rename {client/src => src}/static/icons/solid/check.svg (100%) rename {client/src => src}/static/icons/solid/cheese-swiss.svg (100%) rename {client/src => src}/static/icons/solid/cheese.svg (100%) rename {client/src => src}/static/icons/solid/cheeseburger.svg (100%) rename {client/src => src}/static/icons/solid/chess-bishop-alt.svg (100%) rename {client/src => src}/static/icons/solid/chess-bishop.svg (100%) rename {client/src => src}/static/icons/solid/chess-board.svg (100%) rename {client/src => src}/static/icons/solid/chess-clock-alt.svg (100%) rename {client/src => src}/static/icons/solid/chess-clock.svg (100%) rename {client/src => src}/static/icons/solid/chess-king-alt.svg (100%) rename {client/src => src}/static/icons/solid/chess-king.svg (100%) rename {client/src => src}/static/icons/solid/chess-knight-alt.svg (100%) rename {client/src => src}/static/icons/solid/chess-knight.svg (100%) rename {client/src => src}/static/icons/solid/chess-pawn-alt.svg (100%) rename {client/src => src}/static/icons/solid/chess-pawn.svg (100%) rename {client/src => src}/static/icons/solid/chess-queen-alt.svg (100%) rename {client/src => src}/static/icons/solid/chess-queen.svg (100%) rename {client/src => src}/static/icons/solid/chess-rook-alt.svg (100%) rename {client/src => src}/static/icons/solid/chess-rook.svg (100%) rename {client/src => src}/static/icons/solid/chess.svg (100%) rename {client/src => src}/static/icons/solid/chevron-circle-down.svg (100%) rename {client/src => src}/static/icons/solid/chevron-circle-left.svg (100%) rename {client/src => src}/static/icons/solid/chevron-circle-right.svg (100%) rename {client/src => src}/static/icons/solid/chevron-circle-up.svg (100%) rename {client/src => src}/static/icons/solid/chevron-double-down.svg (100%) rename {client/src => src}/static/icons/solid/chevron-double-left.svg (100%) rename {client/src => src}/static/icons/solid/chevron-double-right.svg (100%) rename {client/src => src}/static/icons/solid/chevron-double-up.svg (100%) rename {client/src => src}/static/icons/solid/chevron-down.svg (100%) rename {client/src => src}/static/icons/solid/chevron-left.svg (100%) rename {client/src => src}/static/icons/solid/chevron-right.svg (100%) rename {client/src => src}/static/icons/solid/chevron-square-down.svg (100%) rename {client/src => src}/static/icons/solid/chevron-square-left.svg (100%) rename {client/src => src}/static/icons/solid/chevron-square-right.svg (100%) rename {client/src => src}/static/icons/solid/chevron-square-up.svg (100%) rename {client/src => src}/static/icons/solid/chevron-up.svg (100%) rename {client/src => src}/static/icons/solid/child.svg (100%) rename {client/src => src}/static/icons/solid/chimney.svg (100%) rename {client/src => src}/static/icons/solid/church.svg (100%) rename {client/src => src}/static/icons/solid/circle-notch.svg (100%) rename {client/src => src}/static/icons/solid/circle.svg (100%) rename {client/src => src}/static/icons/solid/city.svg (100%) rename {client/src => src}/static/icons/solid/clarinet.svg (100%) rename {client/src => src}/static/icons/solid/claw-marks.svg (100%) rename {client/src => src}/static/icons/solid/clinic-medical.svg (100%) rename {client/src => src}/static/icons/solid/clipboard-check.svg (100%) rename {client/src => src}/static/icons/solid/clipboard-list-check.svg (100%) rename {client/src => src}/static/icons/solid/clipboard-list.svg (100%) rename {client/src => src}/static/icons/solid/clipboard-prescription.svg (100%) rename {client/src => src}/static/icons/solid/clipboard-user.svg (100%) rename {client/src => src}/static/icons/solid/clipboard.svg (100%) rename {client/src => src}/static/icons/solid/clock.svg (100%) rename {client/src => src}/static/icons/solid/clone.svg (100%) rename {client/src => src}/static/icons/solid/closed-captioning.svg (100%) rename {client/src => src}/static/icons/solid/cloud-download-alt.svg (100%) rename {client/src => src}/static/icons/solid/cloud-download.svg (100%) rename {client/src => src}/static/icons/solid/cloud-drizzle.svg (100%) rename {client/src => src}/static/icons/solid/cloud-hail-mixed.svg (100%) rename {client/src => src}/static/icons/solid/cloud-hail.svg (100%) rename {client/src => src}/static/icons/solid/cloud-meatball.svg (100%) rename {client/src => src}/static/icons/solid/cloud-moon-rain.svg (100%) rename {client/src => src}/static/icons/solid/cloud-moon.svg (100%) rename {client/src => src}/static/icons/solid/cloud-music.svg (100%) rename {client/src => src}/static/icons/solid/cloud-rain.svg (100%) rename {client/src => src}/static/icons/solid/cloud-rainbow.svg (100%) rename {client/src => src}/static/icons/solid/cloud-showers-heavy.svg (100%) rename {client/src => src}/static/icons/solid/cloud-showers.svg (100%) rename {client/src => src}/static/icons/solid/cloud-sleet.svg (100%) rename {client/src => src}/static/icons/solid/cloud-snow.svg (100%) rename {client/src => src}/static/icons/solid/cloud-sun-rain.svg (100%) rename {client/src => src}/static/icons/solid/cloud-sun.svg (100%) rename {client/src => src}/static/icons/solid/cloud-upload-alt.svg (100%) rename {client/src => src}/static/icons/solid/cloud-upload.svg (100%) rename {client/src => src}/static/icons/solid/cloud.svg (100%) rename {client/src => src}/static/icons/solid/clouds-moon.svg (100%) rename {client/src => src}/static/icons/solid/clouds-sun.svg (100%) rename {client/src => src}/static/icons/solid/clouds.svg (100%) rename {client/src => src}/static/icons/solid/club.svg (100%) rename {client/src => src}/static/icons/solid/cocktail.svg (100%) rename {client/src => src}/static/icons/solid/code-branch.svg (100%) rename {client/src => src}/static/icons/solid/code-commit.svg (100%) rename {client/src => src}/static/icons/solid/code-merge.svg (100%) rename {client/src => src}/static/icons/solid/code.svg (100%) rename {client/src => src}/static/icons/solid/coffee-pot.svg (100%) rename {client/src => src}/static/icons/solid/coffee-togo.svg (100%) rename {client/src => src}/static/icons/solid/coffee.svg (100%) rename {client/src => src}/static/icons/solid/coffin.svg (100%) rename {client/src => src}/static/icons/solid/cog.svg (100%) rename {client/src => src}/static/icons/solid/cogs.svg (100%) rename {client/src => src}/static/icons/solid/coin.svg (100%) rename {client/src => src}/static/icons/solid/coins.svg (100%) rename {client/src => src}/static/icons/solid/columns.svg (100%) rename {client/src => src}/static/icons/solid/comet.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-check.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-dollar.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-dots.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-edit.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-exclamation.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-lines.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-medical.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-minus.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-music.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-plus.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-slash.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-smile.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt-times.svg (100%) rename {client/src => src}/static/icons/solid/comment-alt.svg (100%) rename {client/src => src}/static/icons/solid/comment-check.svg (100%) rename {client/src => src}/static/icons/solid/comment-dollar.svg (100%) rename {client/src => src}/static/icons/solid/comment-dots.svg (100%) rename {client/src => src}/static/icons/solid/comment-edit.svg (100%) rename {client/src => src}/static/icons/solid/comment-exclamation.svg (100%) rename {client/src => src}/static/icons/solid/comment-lines.svg (100%) rename {client/src => src}/static/icons/solid/comment-medical.svg (100%) rename {client/src => src}/static/icons/solid/comment-minus.svg (100%) rename {client/src => src}/static/icons/solid/comment-music.svg (100%) rename {client/src => src}/static/icons/solid/comment-plus.svg (100%) rename {client/src => src}/static/icons/solid/comment-slash.svg (100%) rename {client/src => src}/static/icons/solid/comment-smile.svg (100%) rename {client/src => src}/static/icons/solid/comment-times.svg (100%) rename {client/src => src}/static/icons/solid/comment.svg (100%) rename {client/src => src}/static/icons/solid/comments-alt-dollar.svg (100%) rename {client/src => src}/static/icons/solid/comments-alt.svg (100%) rename {client/src => src}/static/icons/solid/comments-dollar.svg (100%) rename {client/src => src}/static/icons/solid/comments.svg (100%) rename {client/src => src}/static/icons/solid/compact-disc.svg (100%) rename {client/src => src}/static/icons/solid/compass-slash.svg (100%) rename {client/src => src}/static/icons/solid/compass.svg (100%) rename {client/src => src}/static/icons/solid/compress-alt.svg (100%) rename {client/src => src}/static/icons/solid/compress-arrows-alt.svg (100%) rename {client/src => src}/static/icons/solid/compress-wide.svg (100%) rename {client/src => src}/static/icons/solid/compress.svg (100%) rename {client/src => src}/static/icons/solid/computer-classic.svg (100%) rename {client/src => src}/static/icons/solid/computer-speaker.svg (100%) rename {client/src => src}/static/icons/solid/concierge-bell.svg (100%) rename {client/src => src}/static/icons/solid/construction.svg (100%) rename {client/src => src}/static/icons/solid/container-storage.svg (100%) rename {client/src => src}/static/icons/solid/conveyor-belt-alt.svg (100%) rename {client/src => src}/static/icons/solid/conveyor-belt.svg (100%) rename {client/src => src}/static/icons/solid/cookie-bite.svg (100%) rename {client/src => src}/static/icons/solid/cookie.svg (100%) rename {client/src => src}/static/icons/solid/copy.svg (100%) rename {client/src => src}/static/icons/solid/copyright.svg (100%) rename {client/src => src}/static/icons/solid/corn.svg (100%) rename {client/src => src}/static/icons/solid/couch.svg (100%) rename {client/src => src}/static/icons/solid/cow.svg (100%) rename {client/src => src}/static/icons/solid/cowbell-more.svg (100%) rename {client/src => src}/static/icons/solid/cowbell.svg (100%) rename {client/src => src}/static/icons/solid/credit-card-blank.svg (100%) rename {client/src => src}/static/icons/solid/credit-card-front.svg (100%) rename {client/src => src}/static/icons/solid/credit-card.svg (100%) rename {client/src => src}/static/icons/solid/cricket.svg (100%) rename {client/src => src}/static/icons/solid/croissant.svg (100%) rename {client/src => src}/static/icons/solid/crop-alt.svg (100%) rename {client/src => src}/static/icons/solid/crop.svg (100%) rename {client/src => src}/static/icons/solid/cross.svg (100%) rename {client/src => src}/static/icons/solid/crosshairs.svg (100%) rename {client/src => src}/static/icons/solid/crow.svg (100%) rename {client/src => src}/static/icons/solid/crown.svg (100%) rename {client/src => src}/static/icons/solid/crutch.svg (100%) rename {client/src => src}/static/icons/solid/crutches.svg (100%) rename {client/src => src}/static/icons/solid/cube.svg (100%) rename {client/src => src}/static/icons/solid/cubes.svg (100%) rename {client/src => src}/static/icons/solid/curling.svg (100%) rename {client/src => src}/static/icons/solid/cut.svg (100%) rename {client/src => src}/static/icons/solid/dagger.svg (100%) rename {client/src => src}/static/icons/solid/database.svg (100%) rename {client/src => src}/static/icons/solid/deaf.svg (100%) rename {client/src => src}/static/icons/solid/debug.svg (100%) rename {client/src => src}/static/icons/solid/deer-rudolph.svg (100%) rename {client/src => src}/static/icons/solid/deer.svg (100%) rename {client/src => src}/static/icons/solid/democrat.svg (100%) rename {client/src => src}/static/icons/solid/desktop-alt.svg (100%) rename {client/src => src}/static/icons/solid/desktop.svg (100%) rename {client/src => src}/static/icons/solid/dewpoint.svg (100%) rename {client/src => src}/static/icons/solid/dharmachakra.svg (100%) rename {client/src => src}/static/icons/solid/diagnoses.svg (100%) rename {client/src => src}/static/icons/solid/diamond.svg (100%) rename {client/src => src}/static/icons/solid/dice-d10.svg (100%) rename {client/src => src}/static/icons/solid/dice-d12.svg (100%) rename {client/src => src}/static/icons/solid/dice-d20.svg (100%) rename {client/src => src}/static/icons/solid/dice-d4.svg (100%) rename {client/src => src}/static/icons/solid/dice-d6.svg (100%) rename {client/src => src}/static/icons/solid/dice-d8.svg (100%) rename {client/src => src}/static/icons/solid/dice-five.svg (100%) rename {client/src => src}/static/icons/solid/dice-four.svg (100%) rename {client/src => src}/static/icons/solid/dice-one.svg (100%) rename {client/src => src}/static/icons/solid/dice-six.svg (100%) rename {client/src => src}/static/icons/solid/dice-three.svg (100%) rename {client/src => src}/static/icons/solid/dice-two.svg (100%) rename {client/src => src}/static/icons/solid/dice.svg (100%) rename {client/src => src}/static/icons/solid/digging.svg (100%) rename {client/src => src}/static/icons/solid/digital-tachograph.svg (100%) rename {client/src => src}/static/icons/solid/diploma.svg (100%) rename {client/src => src}/static/icons/solid/directions.svg (100%) rename {client/src => src}/static/icons/solid/disc-drive.svg (100%) rename {client/src => src}/static/icons/solid/disease.svg (100%) rename {client/src => src}/static/icons/solid/divide.svg (100%) rename {client/src => src}/static/icons/solid/dizzy.svg (100%) rename {client/src => src}/static/icons/solid/dna.svg (100%) rename {client/src => src}/static/icons/solid/do-not-enter.svg (100%) rename {client/src => src}/static/icons/solid/dog-leashed.svg (100%) rename {client/src => src}/static/icons/solid/dog.svg (100%) rename {client/src => src}/static/icons/solid/dollar-sign.svg (100%) rename {client/src => src}/static/icons/solid/dolly-empty.svg (100%) rename {client/src => src}/static/icons/solid/dolly-flatbed-alt.svg (100%) rename {client/src => src}/static/icons/solid/dolly-flatbed-empty.svg (100%) rename {client/src => src}/static/icons/solid/dolly-flatbed.svg (100%) rename {client/src => src}/static/icons/solid/dolly.svg (100%) rename {client/src => src}/static/icons/solid/donate.svg (100%) rename {client/src => src}/static/icons/solid/door-closed.svg (100%) rename {client/src => src}/static/icons/solid/door-open.svg (100%) rename {client/src => src}/static/icons/solid/dot-circle.svg (100%) rename {client/src => src}/static/icons/solid/dove.svg (100%) rename {client/src => src}/static/icons/solid/download.svg (100%) rename {client/src => src}/static/icons/solid/drafting-compass.svg (100%) rename {client/src => src}/static/icons/solid/dragon.svg (100%) rename {client/src => src}/static/icons/solid/draw-circle.svg (100%) rename {client/src => src}/static/icons/solid/draw-polygon.svg (100%) rename {client/src => src}/static/icons/solid/draw-square.svg (100%) rename {client/src => src}/static/icons/solid/dreidel.svg (100%) rename {client/src => src}/static/icons/solid/drone-alt.svg (100%) rename {client/src => src}/static/icons/solid/drone.svg (100%) rename {client/src => src}/static/icons/solid/drum-steelpan.svg (100%) rename {client/src => src}/static/icons/solid/drum.svg (100%) rename {client/src => src}/static/icons/solid/drumstick-bite.svg (100%) rename {client/src => src}/static/icons/solid/drumstick.svg (100%) rename {client/src => src}/static/icons/solid/dryer-alt.svg (100%) rename {client/src => src}/static/icons/solid/dryer.svg (100%) rename {client/src => src}/static/icons/solid/duck.svg (100%) rename {client/src => src}/static/icons/solid/dumbbell.svg (100%) rename {client/src => src}/static/icons/solid/dumpster-fire.svg (100%) rename {client/src => src}/static/icons/solid/dumpster.svg (100%) rename {client/src => src}/static/icons/solid/dungeon.svg (100%) rename {client/src => src}/static/icons/solid/ear-muffs.svg (100%) rename {client/src => src}/static/icons/solid/ear.svg (100%) rename {client/src => src}/static/icons/solid/eclipse-alt.svg (100%) rename {client/src => src}/static/icons/solid/eclipse.svg (100%) rename {client/src => src}/static/icons/solid/edit.svg (100%) rename {client/src => src}/static/icons/solid/egg-fried.svg (100%) rename {client/src => src}/static/icons/solid/egg.svg (100%) rename {client/src => src}/static/icons/solid/eject.svg (100%) rename {client/src => src}/static/icons/solid/elephant.svg (100%) rename {client/src => src}/static/icons/solid/ellipsis-h-alt.svg (100%) rename {client/src => src}/static/icons/solid/ellipsis-h.svg (100%) rename {client/src => src}/static/icons/solid/ellipsis-v-alt.svg (100%) rename {client/src => src}/static/icons/solid/ellipsis-v.svg (100%) rename {client/src => src}/static/icons/solid/empty-set.svg (100%) rename {client/src => src}/static/icons/solid/engine-warning.svg (100%) rename {client/src => src}/static/icons/solid/envelope-open-dollar.svg (100%) rename {client/src => src}/static/icons/solid/envelope-open-text.svg (100%) rename {client/src => src}/static/icons/solid/envelope-open.svg (100%) rename {client/src => src}/static/icons/solid/envelope-square.svg (100%) rename {client/src => src}/static/icons/solid/envelope.svg (100%) rename {client/src => src}/static/icons/solid/equals.svg (100%) rename {client/src => src}/static/icons/solid/eraser.svg (100%) rename {client/src => src}/static/icons/solid/ethernet.svg (100%) rename {client/src => src}/static/icons/solid/euro-sign.svg (100%) rename {client/src => src}/static/icons/solid/exchange-alt.svg (100%) rename {client/src => src}/static/icons/solid/exchange.svg (100%) rename {client/src => src}/static/icons/solid/exclamation-circle.svg (100%) rename {client/src => src}/static/icons/solid/exclamation-square.svg (100%) rename {client/src => src}/static/icons/solid/exclamation-triangle.svg (100%) rename {client/src => src}/static/icons/solid/exclamation.svg (100%) rename {client/src => src}/static/icons/solid/expand-alt.svg (100%) rename {client/src => src}/static/icons/solid/expand-arrows-alt.svg (100%) rename {client/src => src}/static/icons/solid/expand-arrows.svg (100%) rename {client/src => src}/static/icons/solid/expand-wide.svg (100%) rename {client/src => src}/static/icons/solid/expand.svg (100%) rename {client/src => src}/static/icons/solid/external-link-alt.svg (100%) rename {client/src => src}/static/icons/solid/external-link-square-alt.svg (100%) rename {client/src => src}/static/icons/solid/external-link-square.svg (100%) rename {client/src => src}/static/icons/solid/external-link.svg (100%) rename {client/src => src}/static/icons/solid/eye-dropper.svg (100%) rename {client/src => src}/static/icons/solid/eye-evil.svg (100%) rename {client/src => src}/static/icons/solid/eye-slash.svg (100%) rename {client/src => src}/static/icons/solid/eye.svg (100%) rename {client/src => src}/static/icons/solid/fan-table.svg (100%) rename {client/src => src}/static/icons/solid/fan.svg (100%) rename {client/src => src}/static/icons/solid/farm.svg (100%) rename {client/src => src}/static/icons/solid/fast-backward.svg (100%) rename {client/src => src}/static/icons/solid/fast-forward.svg (100%) rename {client/src => src}/static/icons/solid/faucet-drip.svg (100%) rename {client/src => src}/static/icons/solid/faucet.svg (100%) rename {client/src => src}/static/icons/solid/fax.svg (100%) rename {client/src => src}/static/icons/solid/feather-alt.svg (100%) rename {client/src => src}/static/icons/solid/feather.svg (100%) rename {client/src => src}/static/icons/solid/female.svg (100%) rename {client/src => src}/static/icons/solid/field-hockey.svg (100%) rename {client/src => src}/static/icons/solid/fighter-jet.svg (100%) rename {client/src => src}/static/icons/solid/file-alt.svg (100%) rename {client/src => src}/static/icons/solid/file-archive.svg (100%) rename {client/src => src}/static/icons/solid/file-audio.svg (100%) rename {client/src => src}/static/icons/solid/file-certificate.svg (100%) rename {client/src => src}/static/icons/solid/file-chart-line.svg (100%) rename {client/src => src}/static/icons/solid/file-chart-pie.svg (100%) rename {client/src => src}/static/icons/solid/file-check.svg (100%) rename {client/src => src}/static/icons/solid/file-code.svg (100%) rename {client/src => src}/static/icons/solid/file-contract.svg (100%) rename {client/src => src}/static/icons/solid/file-csv.svg (100%) rename {client/src => src}/static/icons/solid/file-download.svg (100%) rename {client/src => src}/static/icons/solid/file-edit.svg (100%) rename {client/src => src}/static/icons/solid/file-excel.svg (100%) rename {client/src => src}/static/icons/solid/file-exclamation.svg (100%) rename {client/src => src}/static/icons/solid/file-export.svg (100%) rename {client/src => src}/static/icons/solid/file-image.svg (100%) rename {client/src => src}/static/icons/solid/file-import.svg (100%) rename {client/src => src}/static/icons/solid/file-invoice-dollar.svg (100%) rename {client/src => src}/static/icons/solid/file-invoice.svg (100%) rename {client/src => src}/static/icons/solid/file-medical-alt.svg (100%) rename {client/src => src}/static/icons/solid/file-medical.svg (100%) rename {client/src => src}/static/icons/solid/file-minus.svg (100%) rename {client/src => src}/static/icons/solid/file-music.svg (100%) rename {client/src => src}/static/icons/solid/file-pdf.svg (100%) rename {client/src => src}/static/icons/solid/file-plus.svg (100%) rename {client/src => src}/static/icons/solid/file-powerpoint.svg (100%) rename {client/src => src}/static/icons/solid/file-prescription.svg (100%) rename {client/src => src}/static/icons/solid/file-search.svg (100%) rename {client/src => src}/static/icons/solid/file-signature.svg (100%) rename {client/src => src}/static/icons/solid/file-spreadsheet.svg (100%) rename {client/src => src}/static/icons/solid/file-times.svg (100%) rename {client/src => src}/static/icons/solid/file-upload.svg (100%) rename {client/src => src}/static/icons/solid/file-user.svg (100%) rename {client/src => src}/static/icons/solid/file-video.svg (100%) rename {client/src => src}/static/icons/solid/file-word.svg (100%) rename {client/src => src}/static/icons/solid/file.svg (100%) rename {client/src => src}/static/icons/solid/files-medical.svg (100%) rename {client/src => src}/static/icons/solid/fill-drip.svg (100%) rename {client/src => src}/static/icons/solid/fill.svg (100%) rename {client/src => src}/static/icons/solid/film-alt.svg (100%) rename {client/src => src}/static/icons/solid/film-canister.svg (100%) rename {client/src => src}/static/icons/solid/film.svg (100%) rename {client/src => src}/static/icons/solid/filter.svg (100%) rename {client/src => src}/static/icons/solid/fingerprint.svg (100%) rename {client/src => src}/static/icons/solid/fire-alt.svg (100%) rename {client/src => src}/static/icons/solid/fire-extinguisher.svg (100%) rename {client/src => src}/static/icons/solid/fire-smoke.svg (100%) rename {client/src => src}/static/icons/solid/fire.svg (100%) rename {client/src => src}/static/icons/solid/fireplace.svg (100%) rename {client/src => src}/static/icons/solid/first-aid.svg (100%) rename {client/src => src}/static/icons/solid/fish-cooked.svg (100%) rename {client/src => src}/static/icons/solid/fish.svg (100%) rename {client/src => src}/static/icons/solid/fist-raised.svg (100%) rename {client/src => src}/static/icons/solid/flag-alt.svg (100%) rename {client/src => src}/static/icons/solid/flag-checkered.svg (100%) rename {client/src => src}/static/icons/solid/flag-usa.svg (100%) rename {client/src => src}/static/icons/solid/flag.svg (100%) rename {client/src => src}/static/icons/solid/flame.svg (100%) rename {client/src => src}/static/icons/solid/flashlight.svg (100%) rename {client/src => src}/static/icons/solid/flask-poison.svg (100%) rename {client/src => src}/static/icons/solid/flask-potion.svg (100%) rename {client/src => src}/static/icons/solid/flask.svg (100%) rename {client/src => src}/static/icons/solid/flower-daffodil.svg (100%) rename {client/src => src}/static/icons/solid/flower-tulip.svg (100%) rename {client/src => src}/static/icons/solid/flower.svg (100%) rename {client/src => src}/static/icons/solid/flushed.svg (100%) rename {client/src => src}/static/icons/solid/flute.svg (100%) rename {client/src => src}/static/icons/solid/flux-capacitor.svg (100%) rename {client/src => src}/static/icons/solid/fog.svg (100%) rename {client/src => src}/static/icons/solid/folder-minus.svg (100%) rename {client/src => src}/static/icons/solid/folder-open.svg (100%) rename {client/src => src}/static/icons/solid/folder-plus.svg (100%) rename {client/src => src}/static/icons/solid/folder-times.svg (100%) rename {client/src => src}/static/icons/solid/folder-tree.svg (100%) rename {client/src => src}/static/icons/solid/folder.svg (100%) rename {client/src => src}/static/icons/solid/folders.svg (100%) rename {client/src => src}/static/icons/solid/font-awesome-logo-full.svg (100%) rename {client/src => src}/static/icons/solid/font-case.svg (100%) rename {client/src => src}/static/icons/solid/font.svg (100%) rename {client/src => src}/static/icons/solid/football-ball.svg (100%) rename {client/src => src}/static/icons/solid/football-helmet.svg (100%) rename {client/src => src}/static/icons/solid/forklift.svg (100%) rename {client/src => src}/static/icons/solid/forward.svg (100%) rename {client/src => src}/static/icons/solid/fragile.svg (100%) rename {client/src => src}/static/icons/solid/french-fries.svg (100%) rename {client/src => src}/static/icons/solid/frog.svg (100%) rename {client/src => src}/static/icons/solid/frosty-head.svg (100%) rename {client/src => src}/static/icons/solid/frown-open.svg (100%) rename {client/src => src}/static/icons/solid/frown.svg (100%) rename {client/src => src}/static/icons/solid/function.svg (100%) rename {client/src => src}/static/icons/solid/funnel-dollar.svg (100%) rename {client/src => src}/static/icons/solid/futbol.svg (100%) rename {client/src => src}/static/icons/solid/galaxy.svg (100%) rename {client/src => src}/static/icons/solid/game-board-alt.svg (100%) rename {client/src => src}/static/icons/solid/game-board.svg (100%) rename {client/src => src}/static/icons/solid/game-console-handheld.svg (100%) rename {client/src => src}/static/icons/solid/gamepad-alt.svg (100%) rename {client/src => src}/static/icons/solid/gamepad.svg (100%) rename {client/src => src}/static/icons/solid/garage-car.svg (100%) rename {client/src => src}/static/icons/solid/garage-open.svg (100%) rename {client/src => src}/static/icons/solid/garage.svg (100%) rename {client/src => src}/static/icons/solid/gas-pump-slash.svg (100%) rename {client/src => src}/static/icons/solid/gas-pump.svg (100%) rename {client/src => src}/static/icons/solid/gavel.svg (100%) rename {client/src => src}/static/icons/solid/gem.svg (100%) rename {client/src => src}/static/icons/solid/genderless.svg (100%) rename {client/src => src}/static/icons/solid/ghost.svg (100%) rename {client/src => src}/static/icons/solid/gift-card.svg (100%) rename {client/src => src}/static/icons/solid/gift.svg (100%) rename {client/src => src}/static/icons/solid/gifts.svg (100%) rename {client/src => src}/static/icons/solid/gingerbread-man.svg (100%) rename {client/src => src}/static/icons/solid/glass-champagne.svg (100%) rename {client/src => src}/static/icons/solid/glass-cheers.svg (100%) rename {client/src => src}/static/icons/solid/glass-citrus.svg (100%) rename {client/src => src}/static/icons/solid/glass-martini-alt.svg (100%) rename {client/src => src}/static/icons/solid/glass-martini.svg (100%) rename {client/src => src}/static/icons/solid/glass-whiskey-rocks.svg (100%) rename {client/src => src}/static/icons/solid/glass-whiskey.svg (100%) rename {client/src => src}/static/icons/solid/glass.svg (100%) rename {client/src => src}/static/icons/solid/glasses-alt.svg (100%) rename {client/src => src}/static/icons/solid/glasses.svg (100%) rename {client/src => src}/static/icons/solid/globe-africa.svg (100%) rename {client/src => src}/static/icons/solid/globe-americas.svg (100%) rename {client/src => src}/static/icons/solid/globe-asia.svg (100%) rename {client/src => src}/static/icons/solid/globe-europe.svg (100%) rename {client/src => src}/static/icons/solid/globe-snow.svg (100%) rename {client/src => src}/static/icons/solid/globe-stand.svg (100%) rename {client/src => src}/static/icons/solid/globe.svg (100%) rename {client/src => src}/static/icons/solid/golf-ball.svg (100%) rename {client/src => src}/static/icons/solid/golf-club.svg (100%) rename {client/src => src}/static/icons/solid/gopuram.svg (100%) rename {client/src => src}/static/icons/solid/graduation-cap.svg (100%) rename {client/src => src}/static/icons/solid/gramophone.svg (100%) rename {client/src => src}/static/icons/solid/greater-than-equal.svg (100%) rename {client/src => src}/static/icons/solid/greater-than.svg (100%) rename {client/src => src}/static/icons/solid/grimace.svg (100%) rename {client/src => src}/static/icons/solid/grin-alt.svg (100%) rename {client/src => src}/static/icons/solid/grin-beam-sweat.svg (100%) rename {client/src => src}/static/icons/solid/grin-beam.svg (100%) rename {client/src => src}/static/icons/solid/grin-hearts.svg (100%) rename {client/src => src}/static/icons/solid/grin-squint-tears.svg (100%) rename {client/src => src}/static/icons/solid/grin-squint.svg (100%) rename {client/src => src}/static/icons/solid/grin-stars.svg (100%) rename {client/src => src}/static/icons/solid/grin-tears.svg (100%) rename {client/src => src}/static/icons/solid/grin-tongue-squint.svg (100%) rename {client/src => src}/static/icons/solid/grin-tongue-wink.svg (100%) rename {client/src => src}/static/icons/solid/grin-tongue.svg (100%) rename {client/src => src}/static/icons/solid/grin-wink.svg (100%) rename {client/src => src}/static/icons/solid/grin.svg (100%) rename {client/src => src}/static/icons/solid/grip-horizontal.svg (100%) rename {client/src => src}/static/icons/solid/grip-lines-vertical.svg (100%) rename {client/src => src}/static/icons/solid/grip-lines.svg (100%) rename {client/src => src}/static/icons/solid/grip-vertical.svg (100%) rename {client/src => src}/static/icons/solid/guitar-electric.svg (100%) rename {client/src => src}/static/icons/solid/guitar.svg (100%) rename {client/src => src}/static/icons/solid/guitars.svg (100%) rename {client/src => src}/static/icons/solid/h-square.svg (100%) rename {client/src => src}/static/icons/solid/h1.svg (100%) rename {client/src => src}/static/icons/solid/h2.svg (100%) rename {client/src => src}/static/icons/solid/h3.svg (100%) rename {client/src => src}/static/icons/solid/h4.svg (100%) rename {client/src => src}/static/icons/solid/hamburger.svg (100%) rename {client/src => src}/static/icons/solid/hammer-war.svg (100%) rename {client/src => src}/static/icons/solid/hammer.svg (100%) rename {client/src => src}/static/icons/solid/hamsa.svg (100%) rename {client/src => src}/static/icons/solid/hand-heart.svg (100%) rename {client/src => src}/static/icons/solid/hand-holding-box.svg (100%) rename {client/src => src}/static/icons/solid/hand-holding-heart.svg (100%) rename {client/src => src}/static/icons/solid/hand-holding-magic.svg (100%) rename {client/src => src}/static/icons/solid/hand-holding-seedling.svg (100%) rename {client/src => src}/static/icons/solid/hand-holding-usd.svg (100%) rename {client/src => src}/static/icons/solid/hand-holding-water.svg (100%) rename {client/src => src}/static/icons/solid/hand-holding.svg (100%) rename {client/src => src}/static/icons/solid/hand-lizard.svg (100%) rename {client/src => src}/static/icons/solid/hand-middle-finger.svg (100%) rename {client/src => src}/static/icons/solid/hand-paper.svg (100%) rename {client/src => src}/static/icons/solid/hand-peace.svg (100%) rename {client/src => src}/static/icons/solid/hand-point-down.svg (100%) rename {client/src => src}/static/icons/solid/hand-point-left.svg (100%) rename {client/src => src}/static/icons/solid/hand-point-right.svg (100%) rename {client/src => src}/static/icons/solid/hand-point-up.svg (100%) rename {client/src => src}/static/icons/solid/hand-pointer.svg (100%) rename {client/src => src}/static/icons/solid/hand-receiving.svg (100%) rename {client/src => src}/static/icons/solid/hand-rock.svg (100%) rename {client/src => src}/static/icons/solid/hand-scissors.svg (100%) rename {client/src => src}/static/icons/solid/hand-spock.svg (100%) rename {client/src => src}/static/icons/solid/hands-heart.svg (100%) rename {client/src => src}/static/icons/solid/hands-helping.svg (100%) rename {client/src => src}/static/icons/solid/hands-usd.svg (100%) rename {client/src => src}/static/icons/solid/hands.svg (100%) rename {client/src => src}/static/icons/solid/handshake-alt.svg (100%) rename {client/src => src}/static/icons/solid/handshake.svg (100%) rename {client/src => src}/static/icons/solid/hanukiah.svg (100%) rename {client/src => src}/static/icons/solid/hard-hat.svg (100%) rename {client/src => src}/static/icons/solid/hashtag.svg (100%) rename {client/src => src}/static/icons/solid/hat-chef.svg (100%) rename {client/src => src}/static/icons/solid/hat-cowboy-side.svg (100%) rename {client/src => src}/static/icons/solid/hat-cowboy.svg (100%) rename {client/src => src}/static/icons/solid/hat-santa.svg (100%) rename {client/src => src}/static/icons/solid/hat-winter.svg (100%) rename {client/src => src}/static/icons/solid/hat-witch.svg (100%) rename {client/src => src}/static/icons/solid/hat-wizard.svg (100%) rename {client/src => src}/static/icons/solid/hdd.svg (100%) rename {client/src => src}/static/icons/solid/head-side-brain.svg (100%) rename {client/src => src}/static/icons/solid/head-side-headphones.svg (100%) rename {client/src => src}/static/icons/solid/head-side-medical.svg (100%) rename {client/src => src}/static/icons/solid/head-side.svg (100%) rename {client/src => src}/static/icons/solid/head-vr.svg (100%) rename {client/src => src}/static/icons/solid/heading.svg (100%) rename {client/src => src}/static/icons/solid/headphones-alt.svg (100%) rename {client/src => src}/static/icons/solid/headphones.svg (100%) rename {client/src => src}/static/icons/solid/headset.svg (100%) rename {client/src => src}/static/icons/solid/heart-broken.svg (100%) rename {client/src => src}/static/icons/solid/heart-circle.svg (100%) rename {client/src => src}/static/icons/solid/heart-rate.svg (100%) rename {client/src => src}/static/icons/solid/heart-square.svg (100%) rename {client/src => src}/static/icons/solid/heart.svg (100%) rename {client/src => src}/static/icons/solid/heartbeat.svg (100%) rename {client/src => src}/static/icons/solid/heat.svg (100%) rename {client/src => src}/static/icons/solid/helicopter.svg (100%) rename {client/src => src}/static/icons/solid/helmet-battle.svg (100%) rename {client/src => src}/static/icons/solid/hexagon.svg (100%) rename {client/src => src}/static/icons/solid/highlighter.svg (100%) rename {client/src => src}/static/icons/solid/hiking.svg (100%) rename {client/src => src}/static/icons/solid/hippo.svg (100%) rename {client/src => src}/static/icons/solid/history.svg (100%) rename {client/src => src}/static/icons/solid/hockey-mask.svg (100%) rename {client/src => src}/static/icons/solid/hockey-puck.svg (100%) rename {client/src => src}/static/icons/solid/hockey-sticks.svg (100%) rename {client/src => src}/static/icons/solid/holly-berry.svg (100%) rename {client/src => src}/static/icons/solid/home-alt.svg (100%) rename {client/src => src}/static/icons/solid/home-heart.svg (100%) rename {client/src => src}/static/icons/solid/home-lg-alt.svg (100%) rename {client/src => src}/static/icons/solid/home-lg.svg (100%) rename {client/src => src}/static/icons/solid/home.svg (100%) rename {client/src => src}/static/icons/solid/hood-cloak.svg (100%) rename {client/src => src}/static/icons/solid/horizontal-rule.svg (100%) rename {client/src => src}/static/icons/solid/horse-head.svg (100%) rename {client/src => src}/static/icons/solid/horse-saddle.svg (100%) rename {client/src => src}/static/icons/solid/horse.svg (100%) rename {client/src => src}/static/icons/solid/hospital-alt.svg (100%) rename {client/src => src}/static/icons/solid/hospital-symbol.svg (100%) rename {client/src => src}/static/icons/solid/hospital-user.svg (100%) rename {client/src => src}/static/icons/solid/hospital.svg (100%) rename {client/src => src}/static/icons/solid/hospitals.svg (100%) rename {client/src => src}/static/icons/solid/hot-tub.svg (100%) rename {client/src => src}/static/icons/solid/hotdog.svg (100%) rename {client/src => src}/static/icons/solid/hotel.svg (100%) rename {client/src => src}/static/icons/solid/hourglass-end.svg (100%) rename {client/src => src}/static/icons/solid/hourglass-half.svg (100%) rename {client/src => src}/static/icons/solid/hourglass-start.svg (100%) rename {client/src => src}/static/icons/solid/hourglass.svg (100%) rename {client/src => src}/static/icons/solid/house-damage.svg (100%) rename {client/src => src}/static/icons/solid/house-day.svg (100%) rename {client/src => src}/static/icons/solid/house-flood.svg (100%) rename {client/src => src}/static/icons/solid/house-leave.svg (100%) rename {client/src => src}/static/icons/solid/house-night.svg (100%) rename {client/src => src}/static/icons/solid/house-return.svg (100%) rename {client/src => src}/static/icons/solid/house-signal.svg (100%) rename {client/src => src}/static/icons/solid/house.svg (100%) rename {client/src => src}/static/icons/solid/hryvnia.svg (100%) rename {client/src => src}/static/icons/solid/humidity.svg (100%) rename {client/src => src}/static/icons/solid/hurricane.svg (100%) rename {client/src => src}/static/icons/solid/i-cursor.svg (100%) rename {client/src => src}/static/icons/solid/ice-cream.svg (100%) rename {client/src => src}/static/icons/solid/ice-skate.svg (100%) rename {client/src => src}/static/icons/solid/icicles.svg (100%) rename {client/src => src}/static/icons/solid/icons-alt.svg (100%) rename {client/src => src}/static/icons/solid/icons.svg (100%) rename {client/src => src}/static/icons/solid/id-badge.svg (100%) rename {client/src => src}/static/icons/solid/id-card-alt.svg (100%) rename {client/src => src}/static/icons/solid/id-card.svg (100%) rename {client/src => src}/static/icons/solid/igloo.svg (100%) rename {client/src => src}/static/icons/solid/image-polaroid.svg (100%) rename {client/src => src}/static/icons/solid/image.svg (100%) rename {client/src => src}/static/icons/solid/images.svg (100%) rename {client/src => src}/static/icons/solid/inbox-in.svg (100%) rename {client/src => src}/static/icons/solid/inbox-out.svg (100%) rename {client/src => src}/static/icons/solid/inbox.svg (100%) rename {client/src => src}/static/icons/solid/indent.svg (100%) rename {client/src => src}/static/icons/solid/industry-alt.svg (100%) rename {client/src => src}/static/icons/solid/industry.svg (100%) rename {client/src => src}/static/icons/solid/infinity.svg (100%) rename {client/src => src}/static/icons/solid/info-circle.svg (100%) rename {client/src => src}/static/icons/solid/info-square.svg (100%) rename {client/src => src}/static/icons/solid/info.svg (100%) rename {client/src => src}/static/icons/solid/inhaler.svg (100%) rename {client/src => src}/static/icons/solid/integral.svg (100%) rename {client/src => src}/static/icons/solid/intersection.svg (100%) rename {client/src => src}/static/icons/solid/inventory.svg (100%) rename {client/src => src}/static/icons/solid/island-tropical.svg (100%) rename {client/src => src}/static/icons/solid/italic.svg (100%) rename {client/src => src}/static/icons/solid/jack-o-lantern.svg (100%) rename {client/src => src}/static/icons/solid/jedi.svg (100%) rename {client/src => src}/static/icons/solid/joint.svg (100%) rename {client/src => src}/static/icons/solid/journal-whills.svg (100%) rename {client/src => src}/static/icons/solid/joystick.svg (100%) rename {client/src => src}/static/icons/solid/jug.svg (100%) rename {client/src => src}/static/icons/solid/kaaba.svg (100%) rename {client/src => src}/static/icons/solid/kazoo.svg (100%) rename {client/src => src}/static/icons/solid/kerning.svg (100%) rename {client/src => src}/static/icons/solid/key-skeleton.svg (100%) rename {client/src => src}/static/icons/solid/key.svg (100%) rename {client/src => src}/static/icons/solid/keyboard.svg (100%) rename {client/src => src}/static/icons/solid/keynote.svg (100%) rename {client/src => src}/static/icons/solid/khanda.svg (100%) rename {client/src => src}/static/icons/solid/kidneys.svg (100%) rename {client/src => src}/static/icons/solid/kiss-beam.svg (100%) rename {client/src => src}/static/icons/solid/kiss-wink-heart.svg (100%) rename {client/src => src}/static/icons/solid/kiss.svg (100%) rename {client/src => src}/static/icons/solid/kite.svg (100%) rename {client/src => src}/static/icons/solid/kiwi-bird.svg (100%) rename {client/src => src}/static/icons/solid/knife-kitchen.svg (100%) rename {client/src => src}/static/icons/solid/lambda.svg (100%) rename {client/src => src}/static/icons/solid/lamp-desk.svg (100%) rename {client/src => src}/static/icons/solid/lamp-floor.svg (100%) rename {client/src => src}/static/icons/solid/lamp.svg (100%) rename {client/src => src}/static/icons/solid/landmark-alt.svg (100%) rename {client/src => src}/static/icons/solid/landmark.svg (100%) rename {client/src => src}/static/icons/solid/language.svg (100%) rename {client/src => src}/static/icons/solid/laptop-code.svg (100%) rename {client/src => src}/static/icons/solid/laptop-medical.svg (100%) rename {client/src => src}/static/icons/solid/laptop.svg (100%) rename {client/src => src}/static/icons/solid/lasso.svg (100%) rename {client/src => src}/static/icons/solid/laugh-beam.svg (100%) rename {client/src => src}/static/icons/solid/laugh-squint.svg (100%) rename {client/src => src}/static/icons/solid/laugh-wink.svg (100%) rename {client/src => src}/static/icons/solid/laugh.svg (100%) rename {client/src => src}/static/icons/solid/layer-group.svg (100%) rename {client/src => src}/static/icons/solid/layer-minus.svg (100%) rename {client/src => src}/static/icons/solid/layer-plus.svg (100%) rename {client/src => src}/static/icons/solid/leaf-heart.svg (100%) rename {client/src => src}/static/icons/solid/leaf-maple.svg (100%) rename {client/src => src}/static/icons/solid/leaf-oak.svg (100%) rename {client/src => src}/static/icons/solid/leaf.svg (100%) rename {client/src => src}/static/icons/solid/lemon.svg (100%) rename {client/src => src}/static/icons/solid/less-than-equal.svg (100%) rename {client/src => src}/static/icons/solid/less-than.svg (100%) rename {client/src => src}/static/icons/solid/level-down-alt.svg (100%) rename {client/src => src}/static/icons/solid/level-down.svg (100%) rename {client/src => src}/static/icons/solid/level-up-alt.svg (100%) rename {client/src => src}/static/icons/solid/level-up.svg (100%) rename {client/src => src}/static/icons/solid/life-ring.svg (100%) rename {client/src => src}/static/icons/solid/light-ceiling.svg (100%) rename {client/src => src}/static/icons/solid/light-switch-off.svg (100%) rename {client/src => src}/static/icons/solid/light-switch-on.svg (100%) rename {client/src => src}/static/icons/solid/light-switch.svg (100%) rename {client/src => src}/static/icons/solid/lightbulb-dollar.svg (100%) rename {client/src => src}/static/icons/solid/lightbulb-exclamation.svg (100%) rename {client/src => src}/static/icons/solid/lightbulb-on.svg (100%) rename {client/src => src}/static/icons/solid/lightbulb-slash.svg (100%) rename {client/src => src}/static/icons/solid/lightbulb.svg (100%) rename {client/src => src}/static/icons/solid/lights-holiday.svg (100%) rename {client/src => src}/static/icons/solid/line-columns.svg (100%) rename {client/src => src}/static/icons/solid/line-height.svg (100%) rename {client/src => src}/static/icons/solid/link.svg (100%) rename {client/src => src}/static/icons/solid/lips.svg (100%) rename {client/src => src}/static/icons/solid/lira-sign.svg (100%) rename {client/src => src}/static/icons/solid/list-alt.svg (100%) rename {client/src => src}/static/icons/solid/list-music.svg (100%) rename {client/src => src}/static/icons/solid/list-ol.svg (100%) rename {client/src => src}/static/icons/solid/list-ul.svg (100%) rename {client/src => src}/static/icons/solid/list.svg (100%) rename {client/src => src}/static/icons/solid/location-arrow.svg (100%) rename {client/src => src}/static/icons/solid/location-circle.svg (100%) rename {client/src => src}/static/icons/solid/location-slash.svg (100%) rename {client/src => src}/static/icons/solid/location.svg (100%) rename {client/src => src}/static/icons/solid/lock-alt.svg (100%) rename {client/src => src}/static/icons/solid/lock-open-alt.svg (100%) rename {client/src => src}/static/icons/solid/lock-open.svg (100%) rename {client/src => src}/static/icons/solid/lock.svg (100%) rename {client/src => src}/static/icons/solid/long-arrow-alt-down.svg (100%) rename {client/src => src}/static/icons/solid/long-arrow-alt-left.svg (100%) rename {client/src => src}/static/icons/solid/long-arrow-alt-right.svg (100%) rename {client/src => src}/static/icons/solid/long-arrow-alt-up.svg (100%) rename {client/src => src}/static/icons/solid/long-arrow-down.svg (100%) rename {client/src => src}/static/icons/solid/long-arrow-left.svg (100%) rename {client/src => src}/static/icons/solid/long-arrow-right.svg (100%) rename {client/src => src}/static/icons/solid/long-arrow-up.svg (100%) rename {client/src => src}/static/icons/solid/loveseat.svg (100%) rename {client/src => src}/static/icons/solid/low-vision.svg (100%) rename {client/src => src}/static/icons/solid/luchador.svg (100%) rename {client/src => src}/static/icons/solid/luggage-cart.svg (100%) rename {client/src => src}/static/icons/solid/lungs.svg (100%) rename {client/src => src}/static/icons/solid/mace.svg (100%) rename {client/src => src}/static/icons/solid/magic.svg (100%) rename {client/src => src}/static/icons/solid/magnet.svg (100%) rename {client/src => src}/static/icons/solid/mail-bulk.svg (100%) rename {client/src => src}/static/icons/solid/mailbox.svg (100%) rename {client/src => src}/static/icons/solid/male.svg (100%) rename {client/src => src}/static/icons/solid/mandolin.svg (100%) rename {client/src => src}/static/icons/solid/map-marked-alt.svg (100%) rename {client/src => src}/static/icons/solid/map-marked.svg (100%) rename {client/src => src}/static/icons/solid/map-marker-alt-slash.svg (100%) rename {client/src => src}/static/icons/solid/map-marker-alt.svg (100%) rename {client/src => src}/static/icons/solid/map-marker-check.svg (100%) rename {client/src => src}/static/icons/solid/map-marker-edit.svg (100%) rename {client/src => src}/static/icons/solid/map-marker-exclamation.svg (100%) rename {client/src => src}/static/icons/solid/map-marker-minus.svg (100%) rename {client/src => src}/static/icons/solid/map-marker-plus.svg (100%) rename {client/src => src}/static/icons/solid/map-marker-question.svg (100%) rename {client/src => src}/static/icons/solid/map-marker-slash.svg (100%) rename {client/src => src}/static/icons/solid/map-marker-smile.svg (100%) rename {client/src => src}/static/icons/solid/map-marker-times.svg (100%) rename {client/src => src}/static/icons/solid/map-marker.svg (100%) rename {client/src => src}/static/icons/solid/map-pin.svg (100%) rename {client/src => src}/static/icons/solid/map-signs.svg (100%) rename {client/src => src}/static/icons/solid/map.svg (100%) rename {client/src => src}/static/icons/solid/marker.svg (100%) rename {client/src => src}/static/icons/solid/mars-double.svg (100%) rename {client/src => src}/static/icons/solid/mars-stroke-h.svg (100%) rename {client/src => src}/static/icons/solid/mars-stroke-v.svg (100%) rename {client/src => src}/static/icons/solid/mars-stroke.svg (100%) rename {client/src => src}/static/icons/solid/mars.svg (100%) rename {client/src => src}/static/icons/solid/mask.svg (100%) rename {client/src => src}/static/icons/solid/meat.svg (100%) rename {client/src => src}/static/icons/solid/medal.svg (100%) rename {client/src => src}/static/icons/solid/medkit.svg (100%) rename {client/src => src}/static/icons/solid/megaphone.svg (100%) rename {client/src => src}/static/icons/solid/meh-blank.svg (100%) rename {client/src => src}/static/icons/solid/meh-rolling-eyes.svg (100%) rename {client/src => src}/static/icons/solid/meh.svg (100%) rename {client/src => src}/static/icons/solid/memory.svg (100%) rename {client/src => src}/static/icons/solid/menorah.svg (100%) rename {client/src => src}/static/icons/solid/mercury.svg (100%) rename {client/src => src}/static/icons/solid/meteor.svg (100%) rename {client/src => src}/static/icons/solid/microchip.svg (100%) rename {client/src => src}/static/icons/solid/microphone-alt-slash.svg (100%) rename {client/src => src}/static/icons/solid/microphone-alt.svg (100%) rename {client/src => src}/static/icons/solid/microphone-slash.svg (100%) rename {client/src => src}/static/icons/solid/microphone-stand.svg (100%) rename {client/src => src}/static/icons/solid/microphone.svg (100%) rename {client/src => src}/static/icons/solid/microscope.svg (100%) rename {client/src => src}/static/icons/solid/microwave.svg (100%) rename {client/src => src}/static/icons/solid/mind-share.svg (100%) rename {client/src => src}/static/icons/solid/minus-circle.svg (100%) rename {client/src => src}/static/icons/solid/minus-hexagon.svg (100%) rename {client/src => src}/static/icons/solid/minus-octagon.svg (100%) rename {client/src => src}/static/icons/solid/minus-square.svg (100%) rename {client/src => src}/static/icons/solid/minus.svg (100%) rename {client/src => src}/static/icons/solid/mistletoe.svg (100%) rename {client/src => src}/static/icons/solid/mitten.svg (100%) rename {client/src => src}/static/icons/solid/mobile-alt.svg (100%) rename {client/src => src}/static/icons/solid/mobile-android-alt.svg (100%) rename {client/src => src}/static/icons/solid/mobile-android.svg (100%) rename {client/src => src}/static/icons/solid/mobile.svg (100%) rename {client/src => src}/static/icons/solid/money-bill-alt.svg (100%) rename {client/src => src}/static/icons/solid/money-bill-wave-alt.svg (100%) rename {client/src => src}/static/icons/solid/money-bill-wave.svg (100%) rename {client/src => src}/static/icons/solid/money-bill.svg (100%) rename {client/src => src}/static/icons/solid/money-check-alt.svg (100%) rename {client/src => src}/static/icons/solid/money-check-edit-alt.svg (100%) rename {client/src => src}/static/icons/solid/money-check-edit.svg (100%) rename {client/src => src}/static/icons/solid/money-check.svg (100%) rename {client/src => src}/static/icons/solid/monitor-heart-rate.svg (100%) rename {client/src => src}/static/icons/solid/monkey.svg (100%) rename {client/src => src}/static/icons/solid/monument.svg (100%) rename {client/src => src}/static/icons/solid/moon-cloud.svg (100%) rename {client/src => src}/static/icons/solid/moon-stars.svg (100%) rename {client/src => src}/static/icons/solid/moon.svg (100%) rename {client/src => src}/static/icons/solid/mortar-pestle.svg (100%) rename {client/src => src}/static/icons/solid/mosque.svg (100%) rename {client/src => src}/static/icons/solid/motorcycle.svg (100%) rename {client/src => src}/static/icons/solid/mountain.svg (100%) rename {client/src => src}/static/icons/solid/mountains.svg (100%) rename {client/src => src}/static/icons/solid/mouse-alt.svg (100%) rename {client/src => src}/static/icons/solid/mouse-pointer.svg (100%) rename {client/src => src}/static/icons/solid/mouse.svg (100%) rename {client/src => src}/static/icons/solid/mp3-player.svg (100%) rename {client/src => src}/static/icons/solid/mug-hot.svg (100%) rename {client/src => src}/static/icons/solid/mug-marshmallows.svg (100%) rename {client/src => src}/static/icons/solid/mug-tea.svg (100%) rename {client/src => src}/static/icons/solid/mug.svg (100%) rename {client/src => src}/static/icons/solid/music-alt-slash.svg (100%) rename {client/src => src}/static/icons/solid/music-alt.svg (100%) rename {client/src => src}/static/icons/solid/music-slash.svg (100%) rename {client/src => src}/static/icons/solid/music.svg (100%) rename {client/src => src}/static/icons/solid/narwhal.svg (100%) rename {client/src => src}/static/icons/solid/network-wired.svg (100%) rename {client/src => src}/static/icons/solid/neuter.svg (100%) rename {client/src => src}/static/icons/solid/newspaper.svg (100%) rename {client/src => src}/static/icons/solid/not-equal.svg (100%) rename {client/src => src}/static/icons/solid/notes-medical.svg (100%) rename {client/src => src}/static/icons/solid/object-group.svg (100%) rename {client/src => src}/static/icons/solid/object-ungroup.svg (100%) rename {client/src => src}/static/icons/solid/octagon.svg (100%) rename {client/src => src}/static/icons/solid/oil-can.svg (100%) rename {client/src => src}/static/icons/solid/oil-temp.svg (100%) rename {client/src => src}/static/icons/solid/om.svg (100%) rename {client/src => src}/static/icons/solid/omega.svg (100%) rename {client/src => src}/static/icons/solid/ornament.svg (100%) rename {client/src => src}/static/icons/solid/otter.svg (100%) rename {client/src => src}/static/icons/solid/outdent.svg (100%) rename {client/src => src}/static/icons/solid/outlet.svg (100%) rename {client/src => src}/static/icons/solid/oven.svg (100%) rename {client/src => src}/static/icons/solid/overline.svg (100%) rename {client/src => src}/static/icons/solid/page-break.svg (100%) rename {client/src => src}/static/icons/solid/pager.svg (100%) rename {client/src => src}/static/icons/solid/paint-brush-alt.svg (100%) rename {client/src => src}/static/icons/solid/paint-brush.svg (100%) rename {client/src => src}/static/icons/solid/paint-roller.svg (100%) rename {client/src => src}/static/icons/solid/palette.svg (100%) rename {client/src => src}/static/icons/solid/pallet-alt.svg (100%) rename {client/src => src}/static/icons/solid/pallet.svg (100%) rename {client/src => src}/static/icons/solid/paper-plane.svg (100%) rename {client/src => src}/static/icons/solid/paperclip.svg (100%) rename {client/src => src}/static/icons/solid/parachute-box.svg (100%) rename {client/src => src}/static/icons/solid/paragraph-rtl.svg (100%) rename {client/src => src}/static/icons/solid/paragraph.svg (100%) rename {client/src => src}/static/icons/solid/parking-circle-slash.svg (100%) rename {client/src => src}/static/icons/solid/parking-circle.svg (100%) rename {client/src => src}/static/icons/solid/parking-slash.svg (100%) rename {client/src => src}/static/icons/solid/parking.svg (100%) rename {client/src => src}/static/icons/solid/passport.svg (100%) rename {client/src => src}/static/icons/solid/pastafarianism.svg (100%) rename {client/src => src}/static/icons/solid/paste.svg (100%) rename {client/src => src}/static/icons/solid/pause-circle.svg (100%) rename {client/src => src}/static/icons/solid/pause.svg (100%) rename {client/src => src}/static/icons/solid/paw-alt.svg (100%) rename {client/src => src}/static/icons/solid/paw-claws.svg (100%) rename {client/src => src}/static/icons/solid/paw.svg (100%) rename {client/src => src}/static/icons/solid/peace.svg (100%) rename {client/src => src}/static/icons/solid/pegasus.svg (100%) rename {client/src => src}/static/icons/solid/pen-alt.svg (100%) rename {client/src => src}/static/icons/solid/pen-fancy.svg (100%) rename {client/src => src}/static/icons/solid/pen-nib.svg (100%) rename {client/src => src}/static/icons/solid/pen-square.svg (100%) rename {client/src => src}/static/icons/solid/pen.svg (100%) rename {client/src => src}/static/icons/solid/pencil-alt.svg (100%) rename {client/src => src}/static/icons/solid/pencil-paintbrush.svg (100%) rename {client/src => src}/static/icons/solid/pencil-ruler.svg (100%) rename {client/src => src}/static/icons/solid/pencil.svg (100%) rename {client/src => src}/static/icons/solid/pennant.svg (100%) rename {client/src => src}/static/icons/solid/people-carry.svg (100%) rename {client/src => src}/static/icons/solid/pepper-hot.svg (100%) rename {client/src => src}/static/icons/solid/percent.svg (100%) rename {client/src => src}/static/icons/solid/percentage.svg (100%) rename {client/src => src}/static/icons/solid/person-booth.svg (100%) rename {client/src => src}/static/icons/solid/person-carry.svg (100%) rename {client/src => src}/static/icons/solid/person-dolly-empty.svg (100%) rename {client/src => src}/static/icons/solid/person-dolly.svg (100%) rename {client/src => src}/static/icons/solid/person-sign.svg (100%) rename {client/src => src}/static/icons/solid/phone-alt.svg (100%) rename {client/src => src}/static/icons/solid/phone-laptop.svg (100%) rename {client/src => src}/static/icons/solid/phone-office.svg (100%) rename {client/src => src}/static/icons/solid/phone-plus.svg (100%) rename {client/src => src}/static/icons/solid/phone-rotary.svg (100%) rename {client/src => src}/static/icons/solid/phone-slash.svg (100%) rename {client/src => src}/static/icons/solid/phone-square-alt.svg (100%) rename {client/src => src}/static/icons/solid/phone-square.svg (100%) rename {client/src => src}/static/icons/solid/phone-volume.svg (100%) rename {client/src => src}/static/icons/solid/phone.svg (100%) rename {client/src => src}/static/icons/solid/photo-video.svg (100%) rename {client/src => src}/static/icons/solid/pi.svg (100%) rename {client/src => src}/static/icons/solid/piano-keyboard.svg (100%) rename {client/src => src}/static/icons/solid/piano.svg (100%) rename {client/src => src}/static/icons/solid/pie.svg (100%) rename {client/src => src}/static/icons/solid/pig.svg (100%) rename {client/src => src}/static/icons/solid/piggy-bank.svg (100%) rename {client/src => src}/static/icons/solid/pills.svg (100%) rename {client/src => src}/static/icons/solid/pizza-slice.svg (100%) rename {client/src => src}/static/icons/solid/pizza.svg (100%) rename {client/src => src}/static/icons/solid/place-of-worship.svg (100%) rename {client/src => src}/static/icons/solid/plane-alt.svg (100%) rename {client/src => src}/static/icons/solid/plane-arrival.svg (100%) rename {client/src => src}/static/icons/solid/plane-departure.svg (100%) rename {client/src => src}/static/icons/solid/plane.svg (100%) rename {client/src => src}/static/icons/solid/planet-moon.svg (100%) rename {client/src => src}/static/icons/solid/planet-ringed.svg (100%) rename {client/src => src}/static/icons/solid/play-circle.svg (100%) rename {client/src => src}/static/icons/solid/play.svg (100%) rename {client/src => src}/static/icons/solid/plug.svg (100%) rename {client/src => src}/static/icons/solid/plus-circle.svg (100%) rename {client/src => src}/static/icons/solid/plus-hexagon.svg (100%) rename {client/src => src}/static/icons/solid/plus-octagon.svg (100%) rename {client/src => src}/static/icons/solid/plus-square.svg (100%) rename {client/src => src}/static/icons/solid/plus.svg (100%) rename {client/src => src}/static/icons/solid/podcast.svg (100%) rename {client/src => src}/static/icons/solid/podium-star.svg (100%) rename {client/src => src}/static/icons/solid/podium.svg (100%) rename {client/src => src}/static/icons/solid/police-box.svg (100%) rename {client/src => src}/static/icons/solid/poll-h.svg (100%) rename {client/src => src}/static/icons/solid/poll-people.svg (100%) rename {client/src => src}/static/icons/solid/poll.svg (100%) rename {client/src => src}/static/icons/solid/poo-storm.svg (100%) rename {client/src => src}/static/icons/solid/poo.svg (100%) rename {client/src => src}/static/icons/solid/poop.svg (100%) rename {client/src => src}/static/icons/solid/popcorn.svg (100%) rename {client/src => src}/static/icons/solid/portal-enter.svg (100%) rename {client/src => src}/static/icons/solid/portal-exit.svg (100%) rename {client/src => src}/static/icons/solid/portrait.svg (100%) rename {client/src => src}/static/icons/solid/pound-sign.svg (100%) rename {client/src => src}/static/icons/solid/power-off.svg (100%) rename {client/src => src}/static/icons/solid/pray.svg (100%) rename {client/src => src}/static/icons/solid/praying-hands.svg (100%) rename {client/src => src}/static/icons/solid/prescription-bottle-alt.svg (100%) rename {client/src => src}/static/icons/solid/prescription-bottle.svg (100%) rename {client/src => src}/static/icons/solid/prescription.svg (100%) rename {client/src => src}/static/icons/solid/presentation.svg (100%) rename {client/src => src}/static/icons/solid/print-search.svg (100%) rename {client/src => src}/static/icons/solid/print-slash.svg (100%) rename {client/src => src}/static/icons/solid/print.svg (100%) rename {client/src => src}/static/icons/solid/procedures.svg (100%) rename {client/src => src}/static/icons/solid/project-diagram.svg (100%) rename {client/src => src}/static/icons/solid/projector.svg (100%) rename {client/src => src}/static/icons/solid/pumpkin.svg (100%) rename {client/src => src}/static/icons/solid/puzzle-piece.svg (100%) rename {client/src => src}/static/icons/solid/qrcode.svg (100%) rename {client/src => src}/static/icons/solid/question-circle.svg (100%) rename {client/src => src}/static/icons/solid/question-square.svg (100%) rename {client/src => src}/static/icons/solid/question.svg (100%) rename {client/src => src}/static/icons/solid/quidditch.svg (100%) rename {client/src => src}/static/icons/solid/quote-left.svg (100%) rename {client/src => src}/static/icons/solid/quote-right.svg (100%) rename {client/src => src}/static/icons/solid/quran.svg (100%) rename {client/src => src}/static/icons/solid/rabbit-fast.svg (100%) rename {client/src => src}/static/icons/solid/rabbit.svg (100%) rename {client/src => src}/static/icons/solid/racquet.svg (100%) rename {client/src => src}/static/icons/solid/radar.svg (100%) rename {client/src => src}/static/icons/solid/radiation-alt.svg (100%) rename {client/src => src}/static/icons/solid/radiation.svg (100%) rename {client/src => src}/static/icons/solid/radio-alt.svg (100%) rename {client/src => src}/static/icons/solid/radio.svg (100%) rename {client/src => src}/static/icons/solid/rainbow.svg (100%) rename {client/src => src}/static/icons/solid/raindrops.svg (100%) rename {client/src => src}/static/icons/solid/ram.svg (100%) rename {client/src => src}/static/icons/solid/ramp-loading.svg (100%) rename {client/src => src}/static/icons/solid/random.svg (100%) rename {client/src => src}/static/icons/solid/raygun.svg (100%) rename {client/src => src}/static/icons/solid/receipt.svg (100%) rename {client/src => src}/static/icons/solid/record-vinyl.svg (100%) rename {client/src => src}/static/icons/solid/rectangle-landscape.svg (100%) rename {client/src => src}/static/icons/solid/rectangle-portrait.svg (100%) rename {client/src => src}/static/icons/solid/rectangle-wide.svg (100%) rename {client/src => src}/static/icons/solid/recycle.svg (100%) rename {client/src => src}/static/icons/solid/redo-alt.svg (100%) rename {client/src => src}/static/icons/solid/redo.svg (100%) rename {client/src => src}/static/icons/solid/refrigerator.svg (100%) rename {client/src => src}/static/icons/solid/registered.svg (100%) rename {client/src => src}/static/icons/solid/remove-format.svg (100%) rename {client/src => src}/static/icons/solid/repeat-1-alt.svg (100%) rename {client/src => src}/static/icons/solid/repeat-1.svg (100%) rename {client/src => src}/static/icons/solid/repeat-alt.svg (100%) rename {client/src => src}/static/icons/solid/repeat.svg (100%) rename {client/src => src}/static/icons/solid/reply-all.svg (100%) rename {client/src => src}/static/icons/solid/reply.svg (100%) rename {client/src => src}/static/icons/solid/republican.svg (100%) rename {client/src => src}/static/icons/solid/restroom.svg (100%) rename {client/src => src}/static/icons/solid/retweet-alt.svg (100%) rename {client/src => src}/static/icons/solid/retweet.svg (100%) rename {client/src => src}/static/icons/solid/ribbon.svg (100%) rename {client/src => src}/static/icons/solid/ring.svg (100%) rename {client/src => src}/static/icons/solid/rings-wedding.svg (100%) rename {client/src => src}/static/icons/solid/road.svg (100%) rename {client/src => src}/static/icons/solid/robot.svg (100%) rename {client/src => src}/static/icons/solid/rocket-launch.svg (100%) rename {client/src => src}/static/icons/solid/rocket.svg (100%) rename {client/src => src}/static/icons/solid/route-highway.svg (100%) rename {client/src => src}/static/icons/solid/route-interstate.svg (100%) rename {client/src => src}/static/icons/solid/route.svg (100%) rename {client/src => src}/static/icons/solid/router.svg (100%) rename {client/src => src}/static/icons/solid/rss-square.svg (100%) rename {client/src => src}/static/icons/solid/rss.svg (100%) rename {client/src => src}/static/icons/solid/ruble-sign.svg (100%) rename {client/src => src}/static/icons/solid/ruler-combined.svg (100%) rename {client/src => src}/static/icons/solid/ruler-horizontal.svg (100%) rename {client/src => src}/static/icons/solid/ruler-triangle.svg (100%) rename {client/src => src}/static/icons/solid/ruler-vertical.svg (100%) rename {client/src => src}/static/icons/solid/ruler.svg (100%) rename {client/src => src}/static/icons/solid/running.svg (100%) rename {client/src => src}/static/icons/solid/rupee-sign.svg (100%) rename {client/src => src}/static/icons/solid/rv.svg (100%) rename {client/src => src}/static/icons/solid/sack-dollar.svg (100%) rename {client/src => src}/static/icons/solid/sack.svg (100%) rename {client/src => src}/static/icons/solid/sad-cry.svg (100%) rename {client/src => src}/static/icons/solid/sad-tear.svg (100%) rename {client/src => src}/static/icons/solid/salad.svg (100%) rename {client/src => src}/static/icons/solid/sandwich.svg (100%) rename {client/src => src}/static/icons/solid/satellite-dish.svg (100%) rename {client/src => src}/static/icons/solid/satellite.svg (100%) rename {client/src => src}/static/icons/solid/sausage.svg (100%) rename {client/src => src}/static/icons/solid/save.svg (100%) rename {client/src => src}/static/icons/solid/sax-hot.svg (100%) rename {client/src => src}/static/icons/solid/saxophone.svg (100%) rename {client/src => src}/static/icons/solid/scalpel-path.svg (100%) rename {client/src => src}/static/icons/solid/scalpel.svg (100%) rename {client/src => src}/static/icons/solid/scanner-image.svg (100%) rename {client/src => src}/static/icons/solid/scanner-keyboard.svg (100%) rename {client/src => src}/static/icons/solid/scanner-touchscreen.svg (100%) rename {client/src => src}/static/icons/solid/scanner.svg (100%) rename {client/src => src}/static/icons/solid/scarecrow.svg (100%) rename {client/src => src}/static/icons/solid/scarf.svg (100%) rename {client/src => src}/static/icons/solid/school.svg (100%) rename {client/src => src}/static/icons/solid/screwdriver.svg (100%) rename {client/src => src}/static/icons/solid/scroll-old.svg (100%) rename {client/src => src}/static/icons/solid/scroll.svg (100%) rename {client/src => src}/static/icons/solid/scrubber.svg (100%) rename {client/src => src}/static/icons/solid/scythe.svg (100%) rename {client/src => src}/static/icons/solid/sd-card.svg (100%) rename {client/src => src}/static/icons/solid/search-dollar.svg (100%) rename {client/src => src}/static/icons/solid/search-location.svg (100%) rename {client/src => src}/static/icons/solid/search-minus.svg (100%) rename {client/src => src}/static/icons/solid/search-plus.svg (100%) rename {client/src => src}/static/icons/solid/search.svg (100%) rename {client/src => src}/static/icons/solid/seedling.svg (100%) rename {client/src => src}/static/icons/solid/send-back.svg (100%) rename {client/src => src}/static/icons/solid/send-backward.svg (100%) rename {client/src => src}/static/icons/solid/sensor-alert.svg (100%) rename {client/src => src}/static/icons/solid/sensor-fire.svg (100%) rename {client/src => src}/static/icons/solid/sensor-on.svg (100%) rename {client/src => src}/static/icons/solid/sensor-smoke.svg (100%) rename {client/src => src}/static/icons/solid/sensor.svg (100%) rename {client/src => src}/static/icons/solid/server.svg (100%) rename {client/src => src}/static/icons/solid/shapes.svg (100%) rename {client/src => src}/static/icons/solid/share-all.svg (100%) rename {client/src => src}/static/icons/solid/share-alt-square.svg (100%) rename {client/src => src}/static/icons/solid/share-alt.svg (100%) rename {client/src => src}/static/icons/solid/share-square.svg (100%) rename {client/src => src}/static/icons/solid/share.svg (100%) rename {client/src => src}/static/icons/solid/sheep.svg (100%) rename {client/src => src}/static/icons/solid/shekel-sign.svg (100%) rename {client/src => src}/static/icons/solid/shield-alt.svg (100%) rename {client/src => src}/static/icons/solid/shield-check.svg (100%) rename {client/src => src}/static/icons/solid/shield-cross.svg (100%) rename {client/src => src}/static/icons/solid/shield.svg (100%) rename {client/src => src}/static/icons/solid/ship.svg (100%) rename {client/src => src}/static/icons/solid/shipping-fast.svg (100%) rename {client/src => src}/static/icons/solid/shipping-timed.svg (100%) rename {client/src => src}/static/icons/solid/shish-kebab.svg (100%) rename {client/src => src}/static/icons/solid/shoe-prints.svg (100%) rename {client/src => src}/static/icons/solid/shopping-bag.svg (100%) rename {client/src => src}/static/icons/solid/shopping-basket.svg (100%) rename {client/src => src}/static/icons/solid/shopping-cart.svg (100%) rename {client/src => src}/static/icons/solid/shovel-snow.svg (100%) rename {client/src => src}/static/icons/solid/shovel.svg (100%) rename {client/src => src}/static/icons/solid/shower.svg (100%) rename {client/src => src}/static/icons/solid/shredder.svg (100%) rename {client/src => src}/static/icons/solid/shuttle-van.svg (100%) rename {client/src => src}/static/icons/solid/shuttlecock.svg (100%) rename {client/src => src}/static/icons/solid/sickle.svg (100%) rename {client/src => src}/static/icons/solid/sigma.svg (100%) rename {client/src => src}/static/icons/solid/sign-in-alt.svg (100%) rename {client/src => src}/static/icons/solid/sign-in.svg (100%) rename {client/src => src}/static/icons/solid/sign-language.svg (100%) rename {client/src => src}/static/icons/solid/sign-out-alt.svg (100%) rename {client/src => src}/static/icons/solid/sign-out.svg (100%) rename {client/src => src}/static/icons/solid/sign.svg (100%) rename {client/src => src}/static/icons/solid/signal-1.svg (100%) rename {client/src => src}/static/icons/solid/signal-2.svg (100%) rename {client/src => src}/static/icons/solid/signal-3.svg (100%) rename {client/src => src}/static/icons/solid/signal-4.svg (100%) rename {client/src => src}/static/icons/solid/signal-alt-1.svg (100%) rename {client/src => src}/static/icons/solid/signal-alt-2.svg (100%) rename {client/src => src}/static/icons/solid/signal-alt-3.svg (100%) rename {client/src => src}/static/icons/solid/signal-alt-slash.svg (100%) rename {client/src => src}/static/icons/solid/signal-alt.svg (100%) rename {client/src => src}/static/icons/solid/signal-slash.svg (100%) rename {client/src => src}/static/icons/solid/signal-stream.svg (100%) rename {client/src => src}/static/icons/solid/signal.svg (100%) rename {client/src => src}/static/icons/solid/signature.svg (100%) rename {client/src => src}/static/icons/solid/sim-card.svg (100%) rename {client/src => src}/static/icons/solid/siren-on.svg (100%) rename {client/src => src}/static/icons/solid/siren.svg (100%) rename {client/src => src}/static/icons/solid/sitemap.svg (100%) rename {client/src => src}/static/icons/solid/skating.svg (100%) rename {client/src => src}/static/icons/solid/skeleton.svg (100%) rename {client/src => src}/static/icons/solid/ski-jump.svg (100%) rename {client/src => src}/static/icons/solid/ski-lift.svg (100%) rename {client/src => src}/static/icons/solid/skiing-nordic.svg (100%) rename {client/src => src}/static/icons/solid/skiing.svg (100%) rename {client/src => src}/static/icons/solid/skull-cow.svg (100%) rename {client/src => src}/static/icons/solid/skull-crossbones.svg (100%) rename {client/src => src}/static/icons/solid/skull.svg (100%) rename {client/src => src}/static/icons/solid/slash.svg (100%) rename {client/src => src}/static/icons/solid/sledding.svg (100%) rename {client/src => src}/static/icons/solid/sleigh.svg (100%) rename {client/src => src}/static/icons/solid/sliders-h-square.svg (100%) rename {client/src => src}/static/icons/solid/sliders-h.svg (100%) rename {client/src => src}/static/icons/solid/sliders-v-square.svg (100%) rename {client/src => src}/static/icons/solid/sliders-v.svg (100%) rename {client/src => src}/static/icons/solid/smile-beam.svg (100%) rename {client/src => src}/static/icons/solid/smile-plus.svg (100%) rename {client/src => src}/static/icons/solid/smile-wink.svg (100%) rename {client/src => src}/static/icons/solid/smile.svg (100%) rename {client/src => src}/static/icons/solid/smog.svg (100%) rename {client/src => src}/static/icons/solid/smoke.svg (100%) rename {client/src => src}/static/icons/solid/smoking-ban.svg (100%) rename {client/src => src}/static/icons/solid/smoking.svg (100%) rename {client/src => src}/static/icons/solid/sms.svg (100%) rename {client/src => src}/static/icons/solid/snake.svg (100%) rename {client/src => src}/static/icons/solid/snooze.svg (100%) rename {client/src => src}/static/icons/solid/snow-blowing.svg (100%) rename {client/src => src}/static/icons/solid/snowboarding.svg (100%) rename {client/src => src}/static/icons/solid/snowflake.svg (100%) rename {client/src => src}/static/icons/solid/snowflakes.svg (100%) rename {client/src => src}/static/icons/solid/snowman.svg (100%) rename {client/src => src}/static/icons/solid/snowmobile.svg (100%) rename {client/src => src}/static/icons/solid/snowplow.svg (100%) rename {client/src => src}/static/icons/solid/socks.svg (100%) rename {client/src => src}/static/icons/solid/solar-panel.svg (100%) rename {client/src => src}/static/icons/solid/solar-system.svg (100%) rename {client/src => src}/static/icons/solid/sort-alpha-down-alt.svg (100%) rename {client/src => src}/static/icons/solid/sort-alpha-down.svg (100%) rename {client/src => src}/static/icons/solid/sort-alpha-up-alt.svg (100%) rename {client/src => src}/static/icons/solid/sort-alpha-up.svg (100%) rename {client/src => src}/static/icons/solid/sort-alt.svg (100%) rename {client/src => src}/static/icons/solid/sort-amount-down-alt.svg (100%) rename {client/src => src}/static/icons/solid/sort-amount-down.svg (100%) rename {client/src => src}/static/icons/solid/sort-amount-up-alt.svg (100%) rename {client/src => src}/static/icons/solid/sort-amount-up.svg (100%) rename {client/src => src}/static/icons/solid/sort-circle-down.svg (100%) rename {client/src => src}/static/icons/solid/sort-circle-up.svg (100%) rename {client/src => src}/static/icons/solid/sort-circle.svg (100%) rename {client/src => src}/static/icons/solid/sort-down.svg (100%) rename {client/src => src}/static/icons/solid/sort-numeric-down-alt.svg (100%) rename {client/src => src}/static/icons/solid/sort-numeric-down.svg (100%) rename {client/src => src}/static/icons/solid/sort-numeric-up-alt.svg (100%) rename {client/src => src}/static/icons/solid/sort-numeric-up.svg (100%) rename {client/src => src}/static/icons/solid/sort-shapes-down-alt.svg (100%) rename {client/src => src}/static/icons/solid/sort-shapes-down.svg (100%) rename {client/src => src}/static/icons/solid/sort-shapes-up-alt.svg (100%) rename {client/src => src}/static/icons/solid/sort-shapes-up.svg (100%) rename {client/src => src}/static/icons/solid/sort-size-down-alt.svg (100%) rename {client/src => src}/static/icons/solid/sort-size-down.svg (100%) rename {client/src => src}/static/icons/solid/sort-size-up-alt.svg (100%) rename {client/src => src}/static/icons/solid/sort-size-up.svg (100%) rename {client/src => src}/static/icons/solid/sort-up.svg (100%) rename {client/src => src}/static/icons/solid/sort.svg (100%) rename {client/src => src}/static/icons/solid/soup.svg (100%) rename {client/src => src}/static/icons/solid/spa.svg (100%) rename {client/src => src}/static/icons/solid/space-shuttle.svg (100%) rename {client/src => src}/static/icons/solid/space-station-moon-alt.svg (100%) rename {client/src => src}/static/icons/solid/space-station-moon.svg (100%) rename {client/src => src}/static/icons/solid/spade.svg (100%) rename {client/src => src}/static/icons/solid/sparkles.svg (100%) rename {client/src => src}/static/icons/solid/speaker.svg (100%) rename {client/src => src}/static/icons/solid/speakers.svg (100%) rename {client/src => src}/static/icons/solid/spell-check.svg (100%) rename {client/src => src}/static/icons/solid/spider-black-widow.svg (100%) rename {client/src => src}/static/icons/solid/spider-web.svg (100%) rename {client/src => src}/static/icons/solid/spider.svg (100%) rename {client/src => src}/static/icons/solid/spinner-third.svg (100%) rename {client/src => src}/static/icons/solid/spinner.svg (100%) rename {client/src => src}/static/icons/solid/splotch.svg (100%) rename {client/src => src}/static/icons/solid/spray-can.svg (100%) rename {client/src => src}/static/icons/solid/sprinkler.svg (100%) rename {client/src => src}/static/icons/solid/square-full.svg (100%) rename {client/src => src}/static/icons/solid/square-root-alt.svg (100%) rename {client/src => src}/static/icons/solid/square-root.svg (100%) rename {client/src => src}/static/icons/solid/square.svg (100%) rename {client/src => src}/static/icons/solid/squirrel.svg (100%) rename {client/src => src}/static/icons/solid/staff.svg (100%) rename {client/src => src}/static/icons/solid/stamp.svg (100%) rename {client/src => src}/static/icons/solid/star-and-crescent.svg (100%) rename {client/src => src}/static/icons/solid/star-christmas.svg (100%) rename {client/src => src}/static/icons/solid/star-exclamation.svg (100%) rename {client/src => src}/static/icons/solid/star-half-alt.svg (100%) rename {client/src => src}/static/icons/solid/star-half.svg (100%) rename {client/src => src}/static/icons/solid/star-of-david.svg (100%) rename {client/src => src}/static/icons/solid/star-of-life.svg (100%) rename {client/src => src}/static/icons/solid/star-shooting.svg (100%) rename {client/src => src}/static/icons/solid/star.svg (100%) rename {client/src => src}/static/icons/solid/starfighter-alt.svg (100%) rename {client/src => src}/static/icons/solid/starfighter.svg (100%) rename {client/src => src}/static/icons/solid/stars.svg (100%) rename {client/src => src}/static/icons/solid/starship-freighter.svg (100%) rename {client/src => src}/static/icons/solid/starship.svg (100%) rename {client/src => src}/static/icons/solid/steak.svg (100%) rename {client/src => src}/static/icons/solid/steering-wheel.svg (100%) rename {client/src => src}/static/icons/solid/step-backward.svg (100%) rename {client/src => src}/static/icons/solid/step-forward.svg (100%) rename {client/src => src}/static/icons/solid/stethoscope.svg (100%) rename {client/src => src}/static/icons/solid/sticky-note.svg (100%) rename {client/src => src}/static/icons/solid/stocking.svg (100%) rename {client/src => src}/static/icons/solid/stomach.svg (100%) rename {client/src => src}/static/icons/solid/stop-circle.svg (100%) rename {client/src => src}/static/icons/solid/stop.svg (100%) rename {client/src => src}/static/icons/solid/stopwatch.svg (100%) rename {client/src => src}/static/icons/solid/store-alt.svg (100%) rename {client/src => src}/static/icons/solid/store.svg (100%) rename {client/src => src}/static/icons/solid/stream.svg (100%) rename {client/src => src}/static/icons/solid/street-view.svg (100%) rename {client/src => src}/static/icons/solid/stretcher.svg (100%) rename {client/src => src}/static/icons/solid/strikethrough.svg (100%) rename {client/src => src}/static/icons/solid/stroopwafel.svg (100%) rename {client/src => src}/static/icons/solid/subscript.svg (100%) rename {client/src => src}/static/icons/solid/subway.svg (100%) rename {client/src => src}/static/icons/solid/suitcase-rolling.svg (100%) rename {client/src => src}/static/icons/solid/suitcase.svg (100%) rename {client/src => src}/static/icons/solid/sun-cloud.svg (100%) rename {client/src => src}/static/icons/solid/sun-dust.svg (100%) rename {client/src => src}/static/icons/solid/sun-haze.svg (100%) rename {client/src => src}/static/icons/solid/sun.svg (100%) rename {client/src => src}/static/icons/solid/sunglasses.svg (100%) rename {client/src => src}/static/icons/solid/sunrise.svg (100%) rename {client/src => src}/static/icons/solid/sunset.svg (100%) rename {client/src => src}/static/icons/solid/superscript.svg (100%) rename {client/src => src}/static/icons/solid/surprise.svg (100%) rename {client/src => src}/static/icons/solid/swatchbook.svg (100%) rename {client/src => src}/static/icons/solid/swimmer.svg (100%) rename {client/src => src}/static/icons/solid/swimming-pool.svg (100%) rename {client/src => src}/static/icons/solid/sword-laser-alt.svg (100%) rename {client/src => src}/static/icons/solid/sword-laser.svg (100%) rename {client/src => src}/static/icons/solid/sword.svg (100%) rename {client/src => src}/static/icons/solid/swords-laser.svg (100%) rename {client/src => src}/static/icons/solid/swords.svg (100%) rename {client/src => src}/static/icons/solid/synagogue.svg (100%) rename {client/src => src}/static/icons/solid/sync-alt.svg (100%) rename {client/src => src}/static/icons/solid/sync.svg (100%) rename {client/src => src}/static/icons/solid/syringe.svg (100%) rename {client/src => src}/static/icons/solid/table-tennis.svg (100%) rename {client/src => src}/static/icons/solid/table.svg (100%) rename {client/src => src}/static/icons/solid/tablet-alt.svg (100%) rename {client/src => src}/static/icons/solid/tablet-android-alt.svg (100%) rename {client/src => src}/static/icons/solid/tablet-android.svg (100%) rename {client/src => src}/static/icons/solid/tablet-rugged.svg (100%) rename {client/src => src}/static/icons/solid/tablet.svg (100%) rename {client/src => src}/static/icons/solid/tablets.svg (100%) rename {client/src => src}/static/icons/solid/tachometer-alt-average.svg (100%) rename {client/src => src}/static/icons/solid/tachometer-alt-fast.svg (100%) rename {client/src => src}/static/icons/solid/tachometer-alt-fastest.svg (100%) rename {client/src => src}/static/icons/solid/tachometer-alt-slow.svg (100%) rename {client/src => src}/static/icons/solid/tachometer-alt-slowest.svg (100%) rename {client/src => src}/static/icons/solid/tachometer-alt.svg (100%) rename {client/src => src}/static/icons/solid/tachometer-average.svg (100%) rename {client/src => src}/static/icons/solid/tachometer-fast.svg (100%) rename {client/src => src}/static/icons/solid/tachometer-fastest.svg (100%) rename {client/src => src}/static/icons/solid/tachometer-slow.svg (100%) rename {client/src => src}/static/icons/solid/tachometer-slowest.svg (100%) rename {client/src => src}/static/icons/solid/tachometer.svg (100%) rename {client/src => src}/static/icons/solid/taco.svg (100%) rename {client/src => src}/static/icons/solid/tag.svg (100%) rename {client/src => src}/static/icons/solid/tags.svg (100%) rename {client/src => src}/static/icons/solid/tally.svg (100%) rename {client/src => src}/static/icons/solid/tanakh.svg (100%) rename {client/src => src}/static/icons/solid/tape.svg (100%) rename {client/src => src}/static/icons/solid/tasks-alt.svg (100%) rename {client/src => src}/static/icons/solid/tasks.svg (100%) rename {client/src => src}/static/icons/solid/taxi.svg (100%) rename {client/src => src}/static/icons/solid/teeth-open.svg (100%) rename {client/src => src}/static/icons/solid/teeth.svg (100%) rename {client/src => src}/static/icons/solid/telescope.svg (100%) rename {client/src => src}/static/icons/solid/temperature-down.svg (100%) rename {client/src => src}/static/icons/solid/temperature-frigid.svg (100%) rename {client/src => src}/static/icons/solid/temperature-high.svg (100%) rename {client/src => src}/static/icons/solid/temperature-hot.svg (100%) rename {client/src => src}/static/icons/solid/temperature-low.svg (100%) rename {client/src => src}/static/icons/solid/temperature-up.svg (100%) rename {client/src => src}/static/icons/solid/tenge.svg (100%) rename {client/src => src}/static/icons/solid/tennis-ball.svg (100%) rename {client/src => src}/static/icons/solid/terminal.svg (100%) rename {client/src => src}/static/icons/solid/text-height.svg (100%) rename {client/src => src}/static/icons/solid/text-size.svg (100%) rename {client/src => src}/static/icons/solid/text-width.svg (100%) rename {client/src => src}/static/icons/solid/text.svg (100%) rename {client/src => src}/static/icons/solid/th-large.svg (100%) rename {client/src => src}/static/icons/solid/th-list.svg (100%) rename {client/src => src}/static/icons/solid/th.svg (100%) rename {client/src => src}/static/icons/solid/theater-masks.svg (100%) rename {client/src => src}/static/icons/solid/thermometer-empty.svg (100%) rename {client/src => src}/static/icons/solid/thermometer-full.svg (100%) rename {client/src => src}/static/icons/solid/thermometer-half.svg (100%) rename {client/src => src}/static/icons/solid/thermometer-quarter.svg (100%) rename {client/src => src}/static/icons/solid/thermometer-three-quarters.svg (100%) rename {client/src => src}/static/icons/solid/thermometer.svg (100%) rename {client/src => src}/static/icons/solid/theta.svg (100%) rename {client/src => src}/static/icons/solid/thumbs-down.svg (100%) rename {client/src => src}/static/icons/solid/thumbs-up.svg (100%) rename {client/src => src}/static/icons/solid/thumbtack.svg (100%) rename {client/src => src}/static/icons/solid/thunderstorm-moon.svg (100%) rename {client/src => src}/static/icons/solid/thunderstorm-sun.svg (100%) rename {client/src => src}/static/icons/solid/thunderstorm.svg (100%) rename {client/src => src}/static/icons/solid/ticket-alt.svg (100%) rename {client/src => src}/static/icons/solid/ticket.svg (100%) rename {client/src => src}/static/icons/solid/tilde.svg (100%) rename {client/src => src}/static/icons/solid/times-circle.svg (100%) rename {client/src => src}/static/icons/solid/times-hexagon.svg (100%) rename {client/src => src}/static/icons/solid/times-octagon.svg (100%) rename {client/src => src}/static/icons/solid/times-square.svg (100%) rename {client/src => src}/static/icons/solid/times.svg (100%) rename {client/src => src}/static/icons/solid/tint-slash.svg (100%) rename {client/src => src}/static/icons/solid/tint.svg (100%) rename {client/src => src}/static/icons/solid/tire-flat.svg (100%) rename {client/src => src}/static/icons/solid/tire-pressure-warning.svg (100%) rename {client/src => src}/static/icons/solid/tire-rugged.svg (100%) rename {client/src => src}/static/icons/solid/tire.svg (100%) rename {client/src => src}/static/icons/solid/tired.svg (100%) rename {client/src => src}/static/icons/solid/toggle-off.svg (100%) rename {client/src => src}/static/icons/solid/toggle-on.svg (100%) rename {client/src => src}/static/icons/solid/toilet-paper-alt.svg (100%) rename {client/src => src}/static/icons/solid/toilet-paper.svg (100%) rename {client/src => src}/static/icons/solid/toilet.svg (100%) rename {client/src => src}/static/icons/solid/tombstone-alt.svg (100%) rename {client/src => src}/static/icons/solid/tombstone.svg (100%) rename {client/src => src}/static/icons/solid/toolbox.svg (100%) rename {client/src => src}/static/icons/solid/tools.svg (100%) rename {client/src => src}/static/icons/solid/tooth.svg (100%) rename {client/src => src}/static/icons/solid/toothbrush.svg (100%) rename {client/src => src}/static/icons/solid/torah.svg (100%) rename {client/src => src}/static/icons/solid/torii-gate.svg (100%) rename {client/src => src}/static/icons/solid/tornado.svg (100%) rename {client/src => src}/static/icons/solid/tractor.svg (100%) rename {client/src => src}/static/icons/solid/trademark.svg (100%) rename {client/src => src}/static/icons/solid/traffic-cone.svg (100%) rename {client/src => src}/static/icons/solid/traffic-light-go.svg (100%) rename {client/src => src}/static/icons/solid/traffic-light-slow.svg (100%) rename {client/src => src}/static/icons/solid/traffic-light-stop.svg (100%) rename {client/src => src}/static/icons/solid/traffic-light.svg (100%) rename {client/src => src}/static/icons/solid/trailer.svg (100%) rename {client/src => src}/static/icons/solid/train.svg (100%) rename {client/src => src}/static/icons/solid/tram.svg (100%) rename {client/src => src}/static/icons/solid/transgender-alt.svg (100%) rename {client/src => src}/static/icons/solid/transgender.svg (100%) rename {client/src => src}/static/icons/solid/transporter-1.svg (100%) rename {client/src => src}/static/icons/solid/transporter-2.svg (100%) rename {client/src => src}/static/icons/solid/transporter-3.svg (100%) rename {client/src => src}/static/icons/solid/transporter-empty.svg (100%) rename {client/src => src}/static/icons/solid/transporter.svg (100%) rename {client/src => src}/static/icons/solid/trash-alt.svg (100%) rename {client/src => src}/static/icons/solid/trash-restore-alt.svg (100%) rename {client/src => src}/static/icons/solid/trash-restore.svg (100%) rename {client/src => src}/static/icons/solid/trash-undo-alt.svg (100%) rename {client/src => src}/static/icons/solid/trash-undo.svg (100%) rename {client/src => src}/static/icons/solid/trash.svg (100%) rename {client/src => src}/static/icons/solid/treasure-chest.svg (100%) rename {client/src => src}/static/icons/solid/tree-alt.svg (100%) rename {client/src => src}/static/icons/solid/tree-christmas.svg (100%) rename {client/src => src}/static/icons/solid/tree-decorated.svg (100%) rename {client/src => src}/static/icons/solid/tree-large.svg (100%) rename {client/src => src}/static/icons/solid/tree-palm.svg (100%) rename {client/src => src}/static/icons/solid/tree.svg (100%) rename {client/src => src}/static/icons/solid/trees.svg (100%) rename {client/src => src}/static/icons/solid/triangle-music.svg (100%) rename {client/src => src}/static/icons/solid/triangle.svg (100%) rename {client/src => src}/static/icons/solid/trophy-alt.svg (100%) rename {client/src => src}/static/icons/solid/trophy.svg (100%) rename {client/src => src}/static/icons/solid/truck-container.svg (100%) rename {client/src => src}/static/icons/solid/truck-couch.svg (100%) rename {client/src => src}/static/icons/solid/truck-loading.svg (100%) rename {client/src => src}/static/icons/solid/truck-monster.svg (100%) rename {client/src => src}/static/icons/solid/truck-moving.svg (100%) rename {client/src => src}/static/icons/solid/truck-pickup.svg (100%) rename {client/src => src}/static/icons/solid/truck-plow.svg (100%) rename {client/src => src}/static/icons/solid/truck-ramp.svg (100%) rename {client/src => src}/static/icons/solid/truck.svg (100%) rename {client/src => src}/static/icons/solid/trumpet.svg (100%) rename {client/src => src}/static/icons/solid/tshirt.svg (100%) rename {client/src => src}/static/icons/solid/tty.svg (100%) rename {client/src => src}/static/icons/solid/turkey.svg (100%) rename {client/src => src}/static/icons/solid/turntable.svg (100%) rename {client/src => src}/static/icons/solid/turtle.svg (100%) rename {client/src => src}/static/icons/solid/tv-alt.svg (100%) rename {client/src => src}/static/icons/solid/tv-music.svg (100%) rename {client/src => src}/static/icons/solid/tv-retro.svg (100%) rename {client/src => src}/static/icons/solid/tv.svg (100%) rename {client/src => src}/static/icons/solid/typewriter.svg (100%) rename {client/src => src}/static/icons/solid/ufo-beam.svg (100%) rename {client/src => src}/static/icons/solid/ufo.svg (100%) rename {client/src => src}/static/icons/solid/umbrella-beach.svg (100%) rename {client/src => src}/static/icons/solid/umbrella.svg (100%) rename {client/src => src}/static/icons/solid/underline.svg (100%) rename {client/src => src}/static/icons/solid/undo-alt.svg (100%) rename {client/src => src}/static/icons/solid/undo.svg (100%) rename {client/src => src}/static/icons/solid/unicorn.svg (100%) rename {client/src => src}/static/icons/solid/union.svg (100%) rename {client/src => src}/static/icons/solid/universal-access.svg (100%) rename {client/src => src}/static/icons/solid/university.svg (100%) rename {client/src => src}/static/icons/solid/unlink.svg (100%) rename {client/src => src}/static/icons/solid/unlock-alt.svg (100%) rename {client/src => src}/static/icons/solid/unlock.svg (100%) rename {client/src => src}/static/icons/solid/upload.svg (100%) rename {client/src => src}/static/icons/solid/usb-drive.svg (100%) rename {client/src => src}/static/icons/solid/usd-circle.svg (100%) rename {client/src => src}/static/icons/solid/usd-square.svg (100%) rename {client/src => src}/static/icons/solid/user-alien.svg (100%) rename {client/src => src}/static/icons/solid/user-alt-slash.svg (100%) rename {client/src => src}/static/icons/solid/user-alt.svg (100%) rename {client/src => src}/static/icons/solid/user-astronaut.svg (100%) rename {client/src => src}/static/icons/solid/user-chart.svg (100%) rename {client/src => src}/static/icons/solid/user-check.svg (100%) rename {client/src => src}/static/icons/solid/user-circle.svg (100%) rename {client/src => src}/static/icons/solid/user-clock.svg (100%) rename {client/src => src}/static/icons/solid/user-cog.svg (100%) rename {client/src => src}/static/icons/solid/user-cowboy.svg (100%) rename {client/src => src}/static/icons/solid/user-crown.svg (100%) rename {client/src => src}/static/icons/solid/user-edit.svg (100%) rename {client/src => src}/static/icons/solid/user-friends.svg (100%) rename {client/src => src}/static/icons/solid/user-graduate.svg (100%) rename {client/src => src}/static/icons/solid/user-hard-hat.svg (100%) rename {client/src => src}/static/icons/solid/user-headset.svg (100%) rename {client/src => src}/static/icons/solid/user-injured.svg (100%) rename {client/src => src}/static/icons/solid/user-lock.svg (100%) rename {client/src => src}/static/icons/solid/user-md-chat.svg (100%) rename {client/src => src}/static/icons/solid/user-md.svg (100%) rename {client/src => src}/static/icons/solid/user-minus.svg (100%) rename {client/src => src}/static/icons/solid/user-music.svg (100%) rename {client/src => src}/static/icons/solid/user-ninja.svg (100%) rename {client/src => src}/static/icons/solid/user-nurse.svg (100%) rename {client/src => src}/static/icons/solid/user-plus.svg (100%) rename {client/src => src}/static/icons/solid/user-robot.svg (100%) rename {client/src => src}/static/icons/solid/user-secret.svg (100%) rename {client/src => src}/static/icons/solid/user-shield.svg (100%) rename {client/src => src}/static/icons/solid/user-slash.svg (100%) rename {client/src => src}/static/icons/solid/user-tag.svg (100%) rename {client/src => src}/static/icons/solid/user-tie.svg (100%) rename {client/src => src}/static/icons/solid/user-times.svg (100%) rename {client/src => src}/static/icons/solid/user-visor.svg (100%) rename {client/src => src}/static/icons/solid/user.svg (100%) rename {client/src => src}/static/icons/solid/users-class.svg (100%) rename {client/src => src}/static/icons/solid/users-cog.svg (100%) rename {client/src => src}/static/icons/solid/users-crown.svg (100%) rename {client/src => src}/static/icons/solid/users-medical.svg (100%) rename {client/src => src}/static/icons/solid/users.svg (100%) rename {client/src => src}/static/icons/solid/utensil-fork.svg (100%) rename {client/src => src}/static/icons/solid/utensil-knife.svg (100%) rename {client/src => src}/static/icons/solid/utensil-spoon.svg (100%) rename {client/src => src}/static/icons/solid/utensils-alt.svg (100%) rename {client/src => src}/static/icons/solid/utensils.svg (100%) rename {client/src => src}/static/icons/solid/vacuum-robot.svg (100%) rename {client/src => src}/static/icons/solid/vacuum.svg (100%) rename {client/src => src}/static/icons/solid/value-absolute.svg (100%) rename {client/src => src}/static/icons/solid/vector-square.svg (100%) rename {client/src => src}/static/icons/solid/venus-double.svg (100%) rename {client/src => src}/static/icons/solid/venus-mars.svg (100%) rename {client/src => src}/static/icons/solid/venus.svg (100%) rename {client/src => src}/static/icons/solid/vhs.svg (100%) rename {client/src => src}/static/icons/solid/vial.svg (100%) rename {client/src => src}/static/icons/solid/vials.svg (100%) rename {client/src => src}/static/icons/solid/video-plus.svg (100%) rename {client/src => src}/static/icons/solid/video-slash.svg (100%) rename {client/src => src}/static/icons/solid/video.svg (100%) rename {client/src => src}/static/icons/solid/vihara.svg (100%) rename {client/src => src}/static/icons/solid/violin.svg (100%) rename {client/src => src}/static/icons/solid/voicemail.svg (100%) rename {client/src => src}/static/icons/solid/volcano.svg (100%) rename {client/src => src}/static/icons/solid/volleyball-ball.svg (100%) rename {client/src => src}/static/icons/solid/volume-down.svg (100%) rename {client/src => src}/static/icons/solid/volume-mute.svg (100%) rename {client/src => src}/static/icons/solid/volume-off.svg (100%) rename {client/src => src}/static/icons/solid/volume-slash.svg (100%) rename {client/src => src}/static/icons/solid/volume-up.svg (100%) rename {client/src => src}/static/icons/solid/volume.svg (100%) rename {client/src => src}/static/icons/solid/vote-nay.svg (100%) rename {client/src => src}/static/icons/solid/vote-yea.svg (100%) rename {client/src => src}/static/icons/solid/vr-cardboard.svg (100%) rename {client/src => src}/static/icons/solid/wagon-covered.svg (100%) rename {client/src => src}/static/icons/solid/walker.svg (100%) rename {client/src => src}/static/icons/solid/walkie-talkie.svg (100%) rename {client/src => src}/static/icons/solid/walking.svg (100%) rename {client/src => src}/static/icons/solid/wallet.svg (100%) rename {client/src => src}/static/icons/solid/wand-magic.svg (100%) rename {client/src => src}/static/icons/solid/wand.svg (100%) rename {client/src => src}/static/icons/solid/warehouse-alt.svg (100%) rename {client/src => src}/static/icons/solid/warehouse.svg (100%) rename {client/src => src}/static/icons/solid/washer.svg (100%) rename {client/src => src}/static/icons/solid/watch-calculator.svg (100%) rename {client/src => src}/static/icons/solid/watch-fitness.svg (100%) rename {client/src => src}/static/icons/solid/watch.svg (100%) rename {client/src => src}/static/icons/solid/water-lower.svg (100%) rename {client/src => src}/static/icons/solid/water-rise.svg (100%) rename {client/src => src}/static/icons/solid/water.svg (100%) rename {client/src => src}/static/icons/solid/wave-sine.svg (100%) rename {client/src => src}/static/icons/solid/wave-square.svg (100%) rename {client/src => src}/static/icons/solid/wave-triangle.svg (100%) rename {client/src => src}/static/icons/solid/waveform-path.svg (100%) rename {client/src => src}/static/icons/solid/waveform.svg (100%) rename {client/src => src}/static/icons/solid/webcam-slash.svg (100%) rename {client/src => src}/static/icons/solid/webcam.svg (100%) rename {client/src => src}/static/icons/solid/weight-hanging.svg (100%) rename {client/src => src}/static/icons/solid/weight.svg (100%) rename {client/src => src}/static/icons/solid/whale.svg (100%) rename {client/src => src}/static/icons/solid/wheat.svg (100%) rename {client/src => src}/static/icons/solid/wheelchair.svg (100%) rename {client/src => src}/static/icons/solid/whistle.svg (100%) rename {client/src => src}/static/icons/solid/wifi-1.svg (100%) rename {client/src => src}/static/icons/solid/wifi-2.svg (100%) rename {client/src => src}/static/icons/solid/wifi-slash.svg (100%) rename {client/src => src}/static/icons/solid/wifi.svg (100%) rename {client/src => src}/static/icons/solid/wind-turbine.svg (100%) rename {client/src => src}/static/icons/solid/wind-warning.svg (100%) rename {client/src => src}/static/icons/solid/wind.svg (100%) rename {client/src => src}/static/icons/solid/window-alt.svg (100%) rename {client/src => src}/static/icons/solid/window-close.svg (100%) rename {client/src => src}/static/icons/solid/window-frame-open.svg (100%) rename {client/src => src}/static/icons/solid/window-frame.svg (100%) rename {client/src => src}/static/icons/solid/window-maximize.svg (100%) rename {client/src => src}/static/icons/solid/window-minimize.svg (100%) rename {client/src => src}/static/icons/solid/window-restore.svg (100%) rename {client/src => src}/static/icons/solid/window.svg (100%) rename {client/src => src}/static/icons/solid/windsock.svg (100%) rename {client/src => src}/static/icons/solid/wine-bottle.svg (100%) rename {client/src => src}/static/icons/solid/wine-glass-alt.svg (100%) rename {client/src => src}/static/icons/solid/wine-glass.svg (100%) rename {client/src => src}/static/icons/solid/won-sign.svg (100%) rename {client/src => src}/static/icons/solid/wreath.svg (100%) rename {client/src => src}/static/icons/solid/wrench.svg (100%) rename {client/src => src}/static/icons/solid/x-ray.svg (100%) rename {client/src => src}/static/icons/solid/yen-sign.svg (100%) rename {client/src => src}/static/icons/solid/yin-yang.svg (100%) rename {client/src => src}/static/json/icons.js (100%) rename {client/src => src}/store/Bills/bills.actions.js (100%) rename {client/src => src}/store/Bills/bills.reducer.js (100%) rename {client/src => src}/store/Bills/bills.selectors.js (100%) rename {client/src => src}/store/Bills/bills.type.js (100%) rename {client/src => src}/store/Estimate/estimates.actions.js (100%) rename {client/src => src}/store/Estimate/estimates.reducer.js (100%) rename {client/src => src}/store/Estimate/estimates.selectors.js (100%) rename {client/src => src}/store/Estimate/estimates.types.js (100%) rename {client/src => src}/store/ExchangeRate/exchange.actions.js (100%) rename {client/src => src}/store/ExchangeRate/exchange.reducer.js (100%) rename {client/src => src}/store/ExchangeRate/exchange.selector.js (100%) rename {client/src => src}/store/ExchangeRate/exchange.type.js (100%) rename {client/src => src}/store/Invoice/invoices.actions.js (100%) rename {client/src => src}/store/Invoice/invoices.reducer.js (100%) rename {client/src => src}/store/Invoice/invoices.selector.js (100%) rename {client/src => src}/store/Invoice/invoices.types.js (100%) rename {client/src => src}/store/PaymentMades/paymentMades.actions.js (100%) rename {client/src => src}/store/PaymentMades/paymentMades.reducer.js (100%) rename {client/src => src}/store/PaymentMades/paymentMades.selector.js (100%) rename {client/src => src}/store/PaymentMades/paymentMades.type.js (100%) rename {client/src => src}/store/PaymentReceives/paymentReceives.actions.js (100%) rename {client/src => src}/store/PaymentReceives/paymentReceives.reducer.js (100%) rename {client/src => src}/store/PaymentReceives/paymentReceives.selector.js (100%) rename {client/src => src}/store/PaymentReceives/paymentReceives.type.js (100%) rename {client/src => src}/store/ResetMiddleware.js (100%) rename {client/src => src}/store/accounts/accounts.actions.js (100%) rename {client/src => src}/store/accounts/accounts.reducer.js (100%) rename {client/src => src}/store/accounts/accounts.selectors.js (100%) rename {client/src => src}/store/accounts/accounts.types.js (100%) rename {client/src => src}/store/authentication/authentication.actions.js (100%) rename {client/src => src}/store/authentication/authentication.reducer.js (100%) rename {client/src => src}/store/authentication/authentication.selectors.js (100%) rename {client/src => src}/store/authentication/authentication.types.js (100%) rename {client/src => src}/store/billing/Billing.action.js (100%) rename {client/src => src}/store/billing/Billing.type.js (100%) rename {client/src => src}/store/createStore.js (100%) rename {client/src => src}/store/currencies/currencies.actions.js (100%) rename {client/src => src}/store/currencies/currencies.reducer.js (100%) rename {client/src => src}/store/currencies/currencies.selector.js (100%) rename {client/src => src}/store/currencies/currencies.types.js (100%) rename {client/src => src}/store/customFields/customFields.actions.js (100%) rename {client/src => src}/store/customFields/customFields.reducer.js (100%) rename {client/src => src}/store/customFields/customFields.types.js (100%) rename {client/src => src}/store/customViews/customViews.actions.js (100%) rename {client/src => src}/store/customViews/customViews.reducer.js (100%) rename {client/src => src}/store/customViews/customViews.selectors.js (100%) rename {client/src => src}/store/customViews/customViews.types.js (100%) rename {client/src => src}/store/customers/customers.actions.js (100%) rename {client/src => src}/store/customers/customers.reducer.js (100%) rename {client/src => src}/store/customers/customers.selectors.js (100%) rename {client/src => src}/store/customers/customers.type.js (100%) rename {client/src => src}/store/dashboard/dashboard.actions.js (100%) rename {client/src => src}/store/dashboard/dashboard.reducer.js (100%) rename {client/src => src}/store/dashboard/dashboard.selectors.js (100%) rename {client/src => src}/store/dashboard/dashboard.types.js (100%) rename {client/src => src}/store/enhancers/monitorReducer.js (100%) rename {client/src => src}/store/expenses/expenses.actions.js (100%) rename {client/src => src}/store/expenses/expenses.reducer.js (100%) rename {client/src => src}/store/expenses/expenses.selectors.js (100%) rename {client/src => src}/store/expenses/expenses.types.js (100%) rename {client/src => src}/store/financialStatement/financialStatements.actions.js (100%) rename {client/src => src}/store/financialStatement/financialStatements.mappers.js (100%) rename {client/src => src}/store/financialStatement/financialStatements.reducer.js (100%) rename {client/src => src}/store/financialStatement/financialStatements.selectors.js (100%) rename {client/src => src}/store/financialStatement/financialStatements.types.js (100%) rename {client/src => src}/store/globalErrors/globalErrors.actions.js (100%) rename {client/src => src}/store/globalErrors/globalErrors.reducer.js (100%) rename {client/src => src}/store/inventoryAdjustments/inventoryAdjustment.actions.js (100%) rename {client/src => src}/store/inventoryAdjustments/inventoryAdjustment.reducer.js (100%) rename {client/src => src}/store/inventoryAdjustments/inventoryAdjustment.selector.js (100%) rename {client/src => src}/store/inventoryAdjustments/inventoryAdjustment.type.js (100%) rename {client/src => src}/store/itemCategories/ItemsCategories.selectors.js (100%) rename {client/src => src}/store/itemCategories/itemsCategory.actions.js (100%) rename {client/src => src}/store/itemCategories/itemsCategory.reducer.js (100%) rename {client/src => src}/store/itemCategories/itemsCategory.type.js (100%) rename {client/src => src}/store/itemCategories/itemsCateory.reducer.js (100%) rename {client/src => src}/store/items/items.actions.js (100%) rename {client/src => src}/store/items/items.reducer.js (100%) rename {client/src => src}/store/items/items.selectors.js (100%) rename {client/src => src}/store/items/items.types.js (100%) rename {client/src => src}/store/journalNumber.reducer.js (100%) rename {client/src => src}/store/localStorage.js (100%) rename {client/src => src}/store/manualJournals/manualJournals.actions.js (100%) rename {client/src => src}/store/manualJournals/manualJournals.reducers.js (100%) rename {client/src => src}/store/manualJournals/manualJournals.selectors.js (100%) rename {client/src => src}/store/manualJournals/manualJournals.types.js (100%) rename {client/src => src}/store/media/media.actions.js (100%) rename {client/src => src}/store/media/media.reducers.js (100%) rename {client/src => src}/store/media/media.types.js (100%) rename {client/src => src}/store/organizations/organizations.actions.js (100%) rename {client/src => src}/store/organizations/organizations.reducers.js (100%) rename {client/src => src}/store/organizations/organizations.selectors.js (100%) rename {client/src => src}/store/organizations/organizations.types.js (100%) rename {client/src => src}/store/organizations/withSetupWizard.js (100%) rename {client/src => src}/store/paginator.reducer.js (100%) rename {client/src => src}/store/plans/plans.actions.js (100%) rename {client/src => src}/store/plans/plans.reducer.js (100%) rename {client/src => src}/store/plans/plans.selectors.js (100%) rename {client/src => src}/store/plans/plans.types.js (100%) rename {client/src => src}/store/preferences/preferences.actions.js (100%) rename {client/src => src}/store/preferences/preferences.reducer.js (100%) rename {client/src => src}/store/preferences/preferences.types.js (100%) rename {client/src => src}/store/queryReducers.js (100%) rename {client/src => src}/store/receipts/receipts.actions.js (100%) rename {client/src => src}/store/receipts/receipts.reducer.js (100%) rename {client/src => src}/store/receipts/receipts.selector.js (100%) rename {client/src => src}/store/receipts/receipts.type.js (100%) rename {client/src => src}/store/reducers.js (100%) rename {client/src => src}/store/registers/register.action.js (100%) rename {client/src => src}/store/registers/register.reducer.js (100%) rename {client/src => src}/store/registers/register.type.js (100%) rename {client/src => src}/store/resetPassword/resetPassword.action.js (100%) rename {client/src => src}/store/resources/resource.types.js (100%) rename {client/src => src}/store/resources/resources.actions.js (100%) rename {client/src => src}/store/resources/resources.reducer.js (100%) rename {client/src => src}/store/resources/resources.selectors.js (100%) rename {client/src => src}/store/search/search.actions.js (100%) rename {client/src => src}/store/search/search.reducer.js (100%) rename {client/src => src}/store/search/search.type.js (100%) rename {client/src => src}/store/selectors.js (100%) rename {client/src => src}/store/settings/settings.actions.js (100%) rename {client/src => src}/store/settings/settings.reducer.js (100%) rename {client/src => src}/store/settings/settings.selectors.js (100%) rename {client/src => src}/store/settings/settings.type.js (100%) rename {client/src => src}/store/subscription/subscription.actions.js (100%) rename {client/src => src}/store/subscription/subscription.reducer.js (100%) rename {client/src => src}/store/subscription/subscription.selectors.js (100%) rename {client/src => src}/store/subscription/subscription.types.js (100%) rename {client/src => src}/store/tableState.reducer.js (100%) rename {client/src => src}/store/types.js (100%) rename {client/src => src}/store/users/users.actions.js (100%) rename {client/src => src}/store/users/users.reducer.js (100%) rename {client/src => src}/store/users/users.selectors.js (100%) rename {client/src => src}/store/users/users.types.js (100%) rename {client/src => src}/store/vendors/vendors.actions.js (100%) rename {client/src => src}/store/vendors/vendors.reducer.js (100%) rename {client/src => src}/store/vendors/vendors.selectors.js (100%) rename {client/src => src}/store/vendors/vendors.types.js (100%) rename {client/src => src}/style/App.scss (100%) rename {client/src => src}/style/Base.scss (100%) rename {client/src => src}/style/components/Alert.scss (100%) rename {client/src => src}/style/components/BigAmount.scss (100%) rename {client/src => src}/style/components/BigcapitalLoading.scss (100%) rename {client/src => src}/style/components/Card.scss (100%) rename {client/src => src}/style/components/CloudSpinner.scss (100%) rename {client/src => src}/style/components/CustomScrollbar.scss (100%) rename {client/src => src}/style/components/DataTable/DataTable.scss (100%) rename {client/src => src}/style/components/DataTable/DataTableEditable.scss (100%) rename {client/src => src}/style/components/DataTable/DataTableEmptyStatus.module.scss (100%) rename {client/src => src}/style/components/DataTable/Pagination.scss (100%) rename {client/src => src}/style/components/Details.scss (100%) rename {client/src => src}/style/components/Dialog/Dialog.scss (100%) rename {client/src => src}/style/components/Drawer.scss (100%) rename {client/src => src}/style/components/Drawers/AccountDrawer.scss (100%) rename {client/src => src}/style/components/Drawers/BillDrawer.module.scss (100%) rename {client/src => src}/style/components/Drawers/DrawerTemplate.scss (100%) rename {client/src => src}/style/components/Drawers/EstimateDetails.module.scss (100%) rename {client/src => src}/style/components/Drawers/ExpenseDrawer.scss (100%) rename {client/src => src}/style/components/Drawers/InventoryAdjustmentDrawer.module.scss (100%) rename {client/src => src}/style/components/Drawers/InvoiceDrawer.module.scss (100%) rename {client/src => src}/style/components/Drawers/ItemDrawer.scss (100%) rename {client/src => src}/style/components/Drawers/ManualJournalDrawer.scss (100%) rename {client/src => src}/style/components/Drawers/ReceiptDrawer.module.scss (100%) rename {client/src => src}/style/components/Drawers/ViewDetail/ViewDetail.scss (100%) rename {client/src => src}/style/components/Hint.scss (100%) rename {client/src => src}/style/components/MaterialProgressBar.scss (100%) rename {client/src => src}/style/components/Menu.scss (100%) rename {client/src => src}/style/components/Overlay.scss (100%) rename {client/src => src}/style/components/PageForm.scss (100%) rename {client/src => src}/style/components/Postbox.scss (100%) rename {client/src => src}/style/components/SidebarOverlay.scss (100%) rename {client/src => src}/style/components/Skeleton.scss (100%) rename {client/src => src}/style/components/Toast.scss (100%) rename {client/src => src}/style/components/Tooltip.scss (100%) rename {client/src => src}/style/components/UniversalSearch.scss (100%) rename {client/src => src}/style/components/dragzone.scss (100%) rename {client/src => src}/style/components/resizer.scss (100%) rename {client/src => src}/style/components/tabs.scss (100%) rename {client/src => src}/style/containers/Dashboard/Sidebar.scss (100%) rename {client/src => src}/style/containers/FinancialStatements/DrawerHeader.scss (100%) rename {client/src => src}/style/containers/FinancialStatements/FinancialSheet.scss (100%) rename {client/src => src}/style/fonts/NotoSans-Black.woff (100%) rename {client/src => src}/style/fonts/NotoSans-Medium.woff (100%) rename {client/src => src}/style/fonts/NotoSans-Regular.woff (100%) rename {client/src => src}/style/fonts/NotoSans-SemiBold.woff (100%) rename {client/src => src}/style/fonts/NotoSansArabicUI-SemiCondensed.woff (100%) rename {client/src => src}/style/fonts/NotoSansArabicUI-SemiCondensedBlack.woff (100%) rename {client/src => src}/style/fonts/NotoSansArabicUI-SemiCondensedMedium.woff (100%) rename {client/src => src}/style/fonts/NotoSansArabicUI-SemiCondensedSemiBold.woff (100%) rename {client/src => src}/style/fonts/SegoeArabicUI-Bold.woff2 (100%) rename {client/src => src}/style/fonts/SegoeArabicUI-Light.woff2 (100%) rename {client/src => src}/style/fonts/SegoeArabicUI-Regular.woff2 (100%) rename {client/src => src}/style/fonts/SegoeArabicUI-SemiBold.woff2 (100%) rename {client/src => src}/style/functions.scss (100%) rename {client/src => src}/style/normalize.scss (100%) rename {client/src => src}/style/objects/Bigcapital.scss (100%) rename {client/src => src}/style/objects/buttons.scss (100%) rename {client/src => src}/style/objects/form.scss (100%) rename {client/src => src}/style/objects/typography.scss (100%) rename {client/src => src}/style/pages/Accounts/AccountFormDialog.scss (100%) rename {client/src => src}/style/pages/Accounts/List.scss (100%) rename {client/src => src}/style/pages/AllocateLandedCost/AllocateLandedCostForm.scss (100%) rename {client/src => src}/style/pages/Authentication/Auth.scss (100%) rename {client/src => src}/style/pages/Billing/BillingPage.scss (100%) rename {client/src => src}/style/pages/Bills/List.scss (100%) rename {client/src => src}/style/pages/Bills/PageForm.scss (100%) rename {client/src => src}/style/pages/ContactDuplicate/ContactDuplicateDialog.scss (100%) rename {client/src => src}/style/pages/Currency/CurrencyFormDialog.scss (100%) rename {client/src => src}/style/pages/Customers/List.scss (100%) rename {client/src => src}/style/pages/Customers/PageForm.scss (100%) rename {client/src => src}/style/pages/Dashboard/Dashboard.scss (100%) rename {client/src => src}/style/pages/ExchangeRate/ExchangeRateDialog.scss (100%) rename {client/src => src}/style/pages/Expense/List.scss (100%) rename {client/src => src}/style/pages/Expense/PageForm.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/APAgingSummary.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/ARAgingSummary.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/BalanceSheet.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/CashFlowStatement.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/ContactsBalanceSummary.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/ContactsTransactions.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/FinancialReportPage.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/FinancialSheet.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/FinancialSheets.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/GeneralLedger.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/InventoryItemDetails.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/Journal.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/NumberFormatDropdown.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/ProfitLossSheet.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/SalesAndPurchasesSheet.scss (100%) rename {client/src => src}/style/pages/FinancialStatements/TrialBalanceSheet.scss (100%) rename {client/src => src}/style/pages/HomePage/HomePage.scss (100%) rename {client/src => src}/style/pages/InventoryAdjustments/List.scss (100%) rename {client/src => src}/style/pages/ItemCategory/ItemCategoryDialog.scss (100%) rename {client/src => src}/style/pages/Items/ItemAdjustmentDialog.scss (100%) rename {client/src => src}/style/pages/Items/List.scss (100%) rename {client/src => src}/style/pages/Items/PageForm.scss (100%) rename {client/src => src}/style/pages/ItemsCategories/List.scss (100%) rename {client/src => src}/style/pages/JournalEntries/List.scss (100%) rename {client/src => src}/style/pages/ManualJournal/JournalNumberDialog.scss (100%) rename {client/src => src}/style/pages/ManualJournal/List.scss (100%) rename {client/src => src}/style/pages/ManualJournal/MakeJournal.scss (100%) rename {client/src => src}/style/pages/PaymentMade/List.scss (100%) rename {client/src => src}/style/pages/PaymentMade/PageForm.scss (100%) rename {client/src => src}/style/pages/PaymentReceive/List.scss (100%) rename {client/src => src}/style/pages/PaymentReceive/PageForm.scss (100%) rename {client/src => src}/style/pages/PaymentReceive/QuickPaymentReceiveDialog.scss (100%) rename {client/src => src}/style/pages/Preferences/Accounting.scss (100%) rename {client/src => src}/style/pages/Preferences/CurrenciesList.scss (100%) rename {client/src => src}/style/pages/Preferences/GeneralForm.scss (100%) rename {client/src => src}/style/pages/Preferences/Page.scss (100%) rename {client/src => src}/style/pages/Preferences/Sidebar.scss (100%) rename {client/src => src}/style/pages/Preferences/Topbar.scss (100%) rename {client/src => src}/style/pages/Preferences/Users.scss (100%) rename {client/src => src}/style/pages/ReferenceNumber/ReferenceNumber.scss (100%) rename {client/src => src}/style/pages/SaleEstimate/List.scss (100%) rename {client/src => src}/style/pages/SaleEstimate/PageForm.scss (100%) rename {client/src => src}/style/pages/SaleInvoice/List.scss (100%) rename {client/src => src}/style/pages/SaleInvoice/PageForm.scss (100%) rename {client/src => src}/style/pages/SaleReceipt/List.scss (100%) rename {client/src => src}/style/pages/SaleReceipt/PageForm.scss (100%) rename {client/src => src}/style/pages/Setup/Congrats.scss (100%) rename {client/src => src}/style/pages/Setup/Initializing.scss (100%) rename {client/src => src}/style/pages/Setup/Organization.scss (100%) rename {client/src => src}/style/pages/Setup/PaymentViaVoucherDialog.scss (100%) rename {client/src => src}/style/pages/Setup/SetupPage.scss (100%) rename {client/src => src}/style/pages/Setup/Subscription.scss (100%) rename {client/src => src}/style/pages/Subscription/BillingPlans.scss (100%) rename {client/src => src}/style/pages/Subscription/PlanPeriodRadio.scss (100%) rename {client/src => src}/style/pages/Subscription/PlanRadio.scss (100%) rename {client/src => src}/style/pages/Users/InviteFormDialog.scss (100%) rename {client/src => src}/style/pages/Users/UserFormDialog.scss (100%) rename {client/src => src}/style/pages/Vendors/List.scss (100%) rename {client/src => src}/style/pages/Vendors/PageForm.scss (100%) rename {client/src => src}/style/pages/authentication.scss (100%) rename {client/src => src}/style/pages/fonts.scss (100%) rename {client/src => src}/style/pages/keyboardShortcuts/KeyboardShortcutDialog.scss (100%) rename {client/src => src}/style/pages/register-organizaton.scss (100%) rename {client/src => src}/style/pages/view-form.scss (100%) rename {client/src => src}/style/variables.scss (100%) rename {client/src => src}/style/views/filter-dropdown.scss (100%) rename {client/src => src}/utils.js (100%) rename client/tsconfig.json => tsconfig.json (100%) diff --git a/client/CHANGELOG.md b/CHANGELOG.md similarity index 100% rename from client/CHANGELOG.md rename to CHANGELOG.md diff --git a/client/Dockerfile b/Dockerfile similarity index 100% rename from client/Dockerfile rename to Dockerfile diff --git a/README.md b/README.md index e69de29bb..54ef09430 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,68 @@ +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.
+You will also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.
+It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.
+Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting + +### Analyzing the Bundle Size + +This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size + +### Making a Progressive Web App + +This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app + +### Advanced Configuration + +This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration + +### Deployment + +This section has moved here: https://facebook.github.io/create-react-app/docs/deployment + +### `npm run build` fails to minify + +This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify diff --git a/client/.dockerignore b/client/.dockerignore deleted file mode 100644 index 5bb840aea..000000000 --- a/client/.dockerignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -build - -.env* diff --git a/client/.flowconfig b/client/.flowconfig deleted file mode 100644 index 1fed44533..000000000 --- a/client/.flowconfig +++ /dev/null @@ -1,11 +0,0 @@ -[ignore] - -[include] - -[libs] - -[lints] - -[options] - -[strict] diff --git a/client/.gitignore b/client/.gitignore deleted file mode 100644 index 4d29575de..000000000 --- a/client/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/client/.prettierrc b/client/.prettierrc deleted file mode 100644 index 168c3f294..000000000 --- a/client/.prettierrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "arrowParens": "always", - "bracketSpacing": true, - "printWidth": 80, - "semi": true, - "singleQuote": true, - "trailingComma": "all", - "tabWidth": 2, - "useTabs": false, -} diff --git a/client/README.md b/client/README.md deleted file mode 100644 index 54ef09430..000000000 --- a/client/README.md +++ /dev/null @@ -1,68 +0,0 @@ -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
-You will also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.
-It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). - -### Code Splitting - -This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting - -### Analyzing the Bundle Size - -This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size - -### Making a Progressive Web App - -This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app - -### Advanced Configuration - -This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration - -### Deployment - -This section has moved here: https://facebook.github.io/create-react-app/docs/deployment - -### `npm run build` fails to minify - -This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify diff --git a/client/package-lock.json b/client/package-lock.json deleted file mode 100644 index 58d3dd2d7..000000000 --- a/client/package-lock.json +++ /dev/null @@ -1,17658 +0,0 @@ -{ - "name": "client", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/compat-data": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.5.tgz", - "integrity": "sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg==", - "requires": { - "browserslist": "^4.8.5", - "invariant": "^2.2.4", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/core": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz", - "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", - "@babel/helpers": "^7.8.4", - "@babel/parser": "^7.8.4", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/generator": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", - "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", - "requires": { - "@babel/types": "^7.8.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz", - "integrity": "sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ==", - "requires": { - "@babel/types": "^7.8.3", - "esutils": "^2.0.0" - } - }, - "@babel/helper-call-delegate": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz", - "integrity": "sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A==", - "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz", - "integrity": "sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg==", - "requires": { - "@babel/compat-data": "^7.8.4", - "browserslist": "^4.8.5", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz", - "integrity": "sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA==", - "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz", - "integrity": "sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q==", - "requires": { - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.6.0" - } - }, - "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", - "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", - "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-module-transforms": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz", - "integrity": "sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q==", - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==" - }, - "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", - "requires": { - "lodash": "^4.17.13" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-replace-supers": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz", - "integrity": "sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", - "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", - "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helpers": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", - "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", - "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==" - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", - "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz", - "integrity": "sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-decorators": "^7.8.3" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz", - "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz", - "integrity": "sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz", - "integrity": "sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz", - "integrity": "sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-json-strings": { - "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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", - "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "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==", - "requires": { - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz", - "integrity": "sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz", - "integrity": "sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz", - "integrity": "sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.3.tgz", - "integrity": "sha512-g/6WTWG/xbdd2exBBzMfygjX/zw4eyNC4X8pRaq7aRHRoDUCzAIu3kGYIXviOv8BjCuWm8vDBwjHcjiRNgXrPA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-flow": "^7.8.3" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz", - "integrity": "sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", - "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz", - "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==", - "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz", - "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==", - "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz", - "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==", - "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz", - "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==", - "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz", - "integrity": "sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA==", - "requires": { - "@babel/helper-call-delegate": "^7.8.3", - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.8.3.tgz", - "integrity": "sha512-glrzN2U+egwRfkNFtL34xIBYTxbbUF2qJTP8HD3qETBBqzAWSeNB821X0GjU06+dNpq/UyCIjI72FmGE5NNkQQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", - "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz", - "integrity": "sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g==", - "requires": { - "@babel/helper-builder-react-jsx": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3" - } - }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.3.tgz", - "integrity": "sha512-01OT7s5oa0XTLf2I8XGsL8+KqV9lx3EZV+jxn/L2LQ97CGKila2YMroTkCEIE0HV/FF7CMSRsIAybopdN9NTdg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3" - } - }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.3.tgz", - "integrity": "sha512-PLMgdMGuVDtRS/SzjNEQYUT8f4z1xb2BAT54vM1X5efkVuYBf5WyGUMbpmARcfq3NaglIwz08UVQK4HHHbC6ag==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz", - "integrity": "sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA==", - "requires": { - "regenerator-transform": "^0.14.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz", - "integrity": "sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ==", - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "resolve": "^1.8.1", - "semver": "^5.5.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.3.tgz", - "integrity": "sha512-Ebj230AxcrKGZPKIp4g4TdQLrqX95TobLUWKd/CwG7X1XHUH1ZpkpFvXuXqWbtGRWb7uuEWNlrl681wsOArAdQ==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-typescript": "^7.8.3" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/preset-env": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.4.tgz", - "integrity": "sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w==", - "requires": { - "@babel/compat-data": "^7.8.4", - "@babel/helper-compilation-targets": "^7.8.4", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.8.3", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.8.3", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@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.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.8.3", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.8.4", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.8.3", - "@babel/plugin-transform-modules-commonjs": "^7.8.3", - "@babel/plugin-transform-modules-systemjs": "^7.8.3", - "@babel/plugin-transform-modules-umd": "^7.8.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.4", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.3", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", - "@babel/types": "^7.8.3", - "browserslist": "^4.8.5", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/preset-flow": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.9.0.tgz", - "integrity": "sha512-88uSmlshIrlmPkNkEcx3UpSZ6b8n0UGBq0/0ZMZCF/uxAW0XIAUuDHBhIOAh0pvweafH4RxOwi/H3rWhtqOYPA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-transform-flow-strip-types": "^7.9.0" - }, - "dependencies": { - "@babel/plugin-transform-flow-strip-types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", - "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-flow": "^7.8.3" - } - } - } - }, - "@babel/preset-react": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.8.3.tgz", - "integrity": "sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-transform-react-display-name": "^7.8.3", - "@babel/plugin-transform-react-jsx": "^7.8.3", - "@babel/plugin-transform-react-jsx-self": "^7.8.3", - "@babel/plugin-transform-react-jsx-source": "^7.8.3" - } - }, - "@babel/preset-typescript": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.8.3.tgz", - "integrity": "sha512-qee5LgPGui9zQ0jR1TeU5/fP9L+ovoArklEqY12ek8P/wV5ZeM/VYSQYwICeoT6FfpJTekG9Ilay5PhwsOpMHA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-transform-typescript": "^7.8.3" - } - }, - "@babel/runtime": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", - "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", - "requires": { - "regenerator-runtime": "^0.13.2" - } - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/traverse": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", - "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.4", - "@babel/types": "^7.8.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "@blueprintjs/core": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-3.38.1.tgz", - "integrity": "sha512-ZBqVfMgeIrXiuprsRxBnLM/MPgPSCRf27uckyhMFHRocyEtFS7zrOGmQeJb1Va0nZ/ufNsYk7EiHVxulb1KkSg==", - "requires": { - "@blueprintjs/icons": "^3.24.0", - "@types/dom4": "^2.0.1", - "classnames": "^2.2", - "dom4": "^2.1.5", - "normalize.css": "^8.0.1", - "popper.js": "^1.16.1", - "react-lifecycles-compat": "^3.0.4", - "react-popper": "^1.3.7", - "react-transition-group": "^2.9.0", - "resize-observer-polyfill": "^1.5.1", - "tslib": "~1.13.0" - }, - "dependencies": { - "dom-helpers": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", - "requires": { - "@babel/runtime": "^7.1.2" - } - }, - "react-transition-group": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", - "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", - "requires": { - "dom-helpers": "^3.4.0", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2", - "react-lifecycles-compat": "^3.0.4" - } - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" - } - } - }, - "@blueprintjs/datetime": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/@blueprintjs/datetime/-/datetime-3.15.2.tgz", - "integrity": "sha512-FQw1BqbO9RBKzLWiXHkSVFxyGFRXHaugG5ST4go+p2IibrxuRDjD6YvrFXo+FLEzi+MsftMo6FkPNm2xApfmHw==", - "requires": { - "@blueprintjs/core": "^3.23.0", - "classnames": "^2.2", - "react-day-picker": "7.3.2", - "tslib": "~1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - } - } - }, - "@blueprintjs/icons": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-3.24.0.tgz", - "integrity": "sha512-OvDDI5EUueS1Y3t594iS8LAGoHhLhYjC2GuN/01a85n+ASLSp0jf0/+uix2JeCOj41iTdRRCINbWuRwVQNNGPw==", - "requires": { - "classnames": "^2.2", - "tslib": "~1.13.0" - }, - "dependencies": { - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" - } - } - }, - "@blueprintjs/popover2": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@blueprintjs/popover2/-/popover2-0.11.1.tgz", - "integrity": "sha512-Uo3oEydB/XoxZ1rzyehgnI0hd7r4bAOiNHbuqrNssASzujTm86Y6o5WvCx3TrsOGqs+YyqS+KtLMm2BioHSKyw==", - "requires": { - "@blueprintjs/core": "^3.47.0", - "@popperjs/core": "^2.5.4", - "classnames": "^2.2", - "dom4": "^2.1.5", - "react-popper": "^2.2.4", - "resize-observer-polyfill": "^1.5.1", - "tslib": "~1.13.0" - }, - "dependencies": { - "@blueprintjs/core": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-3.47.0.tgz", - "integrity": "sha512-u+bfmCyPXwKZMnwY4+e/iWjO2vDUvr8hA8ydmV0afyvcEe7Sh85UPEorIgQ/CBuRIbVMNm8FpLsFzDxgkfrCNA==", - "requires": { - "@blueprintjs/icons": "^3.27.0", - "@types/dom4": "^2.0.1", - "classnames": "^2.2", - "dom4": "^2.1.5", - "normalize.css": "^8.0.1", - "popper.js": "^1.16.1", - "react-lifecycles-compat": "^3.0.4", - "react-popper": "^1.3.7", - "react-transition-group": "^2.9.0", - "resize-observer-polyfill": "^1.5.1", - "tslib": "~1.13.0" - }, - "dependencies": { - "react-popper": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", - "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", - "requires": { - "@babel/runtime": "^7.1.2", - "@hypnosphi/create-react-context": "^0.3.1", - "deep-equal": "^1.1.1", - "popper.js": "^1.14.4", - "prop-types": "^15.6.1", - "typed-styles": "^0.0.7", - "warning": "^4.0.2" - } - } - } - }, - "@blueprintjs/icons": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-3.27.0.tgz", - "integrity": "sha512-ItRioyrr2s70chclj5q38HS9omKOa15b3JZXv9JcMIFz+6w6rAcoAH7DA+5xIs27bFjax/SdAZp/eYXSw0+QpA==", - "requires": { - "classnames": "^2.2", - "tslib": "~1.13.0" - } - }, - "dom-helpers": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", - "requires": { - "@babel/runtime": "^7.1.2" - } - }, - "react-fast-compare": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", - "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" - }, - "react-popper": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz", - "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==", - "requires": { - "react-fast-compare": "^3.0.1", - "warning": "^4.0.2" - } - }, - "react-transition-group": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", - "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", - "requires": { - "dom-helpers": "^3.4.0", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2", - "react-lifecycles-compat": "^3.0.4" - } - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" - } - } - }, - "@blueprintjs/select": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/@blueprintjs/select/-/select-3.11.2.tgz", - "integrity": "sha512-fU0Km6QI/ayWhzYeu9N1gTj0+L0XUO4KB3u2LfJXgj648UGY8F4HX2ETdJ+XPdtsu6TesrIL7ghMQhtLcvafBg==", - "requires": { - "@blueprintjs/core": "^3.20.0", - "classnames": "^2.2", - "tslib": "~1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - } - } - }, - "@blueprintjs/table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/@blueprintjs/table/-/table-3.8.3.tgz", - "integrity": "sha512-ppyXy/8USvTe+HHl6VGJk+GqJalwzutTJNAiZMgpTJh8UglH8/245IpDpIlAYlyNW98RhMtloB+5UuBWHpxmhA==", - "requires": { - "@blueprintjs/core": "^3.23.1", - "classnames": "^2.2", - "prop-types": "^15.6.0", - "react-lifecycles-compat": "^3.0.4", - "tslib": "~1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - } - } - }, - "@blueprintjs/timezone": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@blueprintjs/timezone/-/timezone-3.6.4.tgz", - "integrity": "sha512-plgz27yR9xxxqy926iFUCHW/wjjDabxG5Kg7DzvzMR2QyKT1P0mtIFJTIo+51+I9OCZxwGrEcfRv/M0iMqN4yw==", - "requires": { - "@blueprintjs/core": "^3.27.0", - "@blueprintjs/select": "^3.13.0", - "classnames": "^2.2", - "moment": "^2.24.0", - "moment-timezone": "^0.5.27", - "tslib": "~1.10.0" - }, - "dependencies": { - "@blueprintjs/core": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-3.27.0.tgz", - "integrity": "sha512-ZzwXENczeC9FnzTJ2XiDR+6YNzb68u1fj2HstKarvfrepW/C+0g4Eojo5vi2KWlNw5+RUu/MG7sZc8i7698pQw==", - "requires": { - "@blueprintjs/icons": "^3.17.0", - "@types/dom4": "^2.0.1", - "classnames": "^2.2", - "dom4": "^2.1.5", - "normalize.css": "^8.0.1", - "popper.js": "^1.15.0", - "react-lifecycles-compat": "^3.0.4", - "react-popper": "^1.3.7", - "react-transition-group": "^2.9.0", - "resize-observer-polyfill": "^1.5.1", - "tslib": "~1.10.0" - }, - "dependencies": { - "react-transition-group": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", - "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", - "requires": { - "dom-helpers": "^3.4.0", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2", - "react-lifecycles-compat": "^3.0.4" - } - } - } - }, - "@blueprintjs/icons": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-3.17.0.tgz", - "integrity": "sha512-DRUIxVe0V7eeKYxKFl9bEmQvdpqmMbSUsJjKl9ACgXUQ1wksd2oaFTNLBQEToui/RAWpybWLCl39AG3rlJQeYQ==", - "requires": { - "classnames": "^2.2", - "tslib": "~1.10.0" - } - }, - "@blueprintjs/select": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@blueprintjs/select/-/select-3.13.0.tgz", - "integrity": "sha512-DwLEpZee95xeO1tyCs8SLgP6yb9mp2l/B34N2MOsRL7eXZb+EiILR8fxnCzwx6/D7JL+WKsPP9UHhCOLaTbYug==", - "requires": { - "@blueprintjs/core": "^3.27.0", - "classnames": "^2.2", - "tslib": "~1.10.0" - } - }, - "dom-helpers": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", - "requires": { - "@babel/runtime": "^7.1.2" - } - } - } - }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, - "@csstools/convert-colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", - "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" - }, - "@csstools/normalize.css": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", - "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" - }, - "@formatjs/intl-unified-numberformat": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/intl-unified-numberformat/-/intl-unified-numberformat-3.2.0.tgz", - "integrity": "sha512-SZMTV/tR0h7nYhS2x69S7zhHXaBmE0ZTR2OIiakt8W7uYWVgcRhu/LgUeVtGzpwPI2ChcOjNMtX/k6y1M9aDNA==", - "requires": { - "@formatjs/intl-utils": "^2.2.0" - } - }, - "@formatjs/intl-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/intl-utils/-/intl-utils-2.2.0.tgz", - "integrity": "sha512-+Az7tR1av1DHZu9668D8uh9atT6vp+FFmEF8BrEssv0OqzpVjpVBGVmcgPzQP8k2PQjVlm/h2w8cTt0knn132w==" - }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" - }, - "@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" - }, - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" - }, - "@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "requires": { - "@hapi/hoek": "^8.3.0" - } - }, - "@hypnosphi/create-react-context": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", - "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", - "requires": { - "gud": "^1.0.0", - "warning": "^4.0.3" - } - }, - "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", - "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" - } - }, - "@jest/core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", - "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", - "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - } - } - }, - "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", - "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", - "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/reporters": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", - "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.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==" - } - } - }, - "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", - "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" - } - }, - "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.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==" - } - } - }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "@popperjs/core": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz", - "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==" - }, - "@reduxjs/toolkit": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.2.5.tgz", - "integrity": "sha512-/OWoW5mniUXAomw4+3ZhhWodcs1/SRvK2HKyxLXdW6vKgmJhiBiSHe/huHARlKWujEmGaJrkafx548GE494bCQ==", - "requires": { - "immer": "^4.0.1", - "redux": "^4.0.0", - "redux-devtools-extension": "^2.13.8", - "redux-immutable-state-invariant": "^2.1.0", - "redux-thunk": "^2.3.0", - "reselect": "^4.0.0" - }, - "dependencies": { - "immer": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/immer/-/immer-4.0.2.tgz", - "integrity": "sha512-Q/tm+yKqnKy4RIBmmtISBlhXuSDrB69e9EKTYiIenIKQkXBQir43w+kN/eGiax3wt1J0O1b2fYcNqLSbEcXA7w==" - } - } - }, - "@rehooks/local-storage": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@rehooks/local-storage/-/local-storage-2.4.3.tgz", - "integrity": "sha512-/Ohn+SnJm1eE3uXv3gsXLE4G6EYT3baqi4V/syyKfbyLoXmTn8h5ciY2ELug3xslzFNUMWyTGY3Ow47gl6k3kA==" - }, - "@sheerun/mutationobserver-shim": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz", - "integrity": "sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q==" - }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", - "integrity": "sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig==" - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz", - "integrity": "sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ==" - }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz", - "integrity": "sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w==" - }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz", - "integrity": "sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w==" - }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz", - "integrity": "sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w==" - }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz", - "integrity": "sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w==" - }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz", - "integrity": "sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw==" - }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz", - "integrity": "sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw==" - }, - "@svgr/babel-preset": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz", - "integrity": "sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A==", - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^4.2.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^4.2.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^4.2.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^4.2.0", - "@svgr/babel-plugin-svg-dynamic-title": "^4.3.3", - "@svgr/babel-plugin-svg-em-dimensions": "^4.2.0", - "@svgr/babel-plugin-transform-react-native-svg": "^4.2.0", - "@svgr/babel-plugin-transform-svg-component": "^4.2.0" - } - }, - "@svgr/core": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz", - "integrity": "sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w==", - "requires": { - "@svgr/plugin-jsx": "^4.3.3", - "camelcase": "^5.3.1", - "cosmiconfig": "^5.2.1" - } - }, - "@svgr/hast-util-to-babel-ast": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz", - "integrity": "sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg==", - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@svgr/plugin-jsx": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz", - "integrity": "sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w==", - "requires": { - "@babel/core": "^7.4.5", - "@svgr/babel-preset": "^4.3.3", - "@svgr/hast-util-to-babel-ast": "^4.3.2", - "svg-parser": "^2.0.0" - } - }, - "@svgr/plugin-svgo": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz", - "integrity": "sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w==", - "requires": { - "cosmiconfig": "^5.2.1", - "merge-deep": "^3.0.2", - "svgo": "^1.2.2" - } - }, - "@svgr/webpack": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz", - "integrity": "sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg==", - "requires": { - "@babel/core": "^7.4.5", - "@babel/plugin-transform-react-constant-elements": "^7.0.0", - "@babel/preset-env": "^7.4.5", - "@babel/preset-react": "^7.0.0", - "@svgr/core": "^4.3.3", - "@svgr/plugin-jsx": "^4.3.3", - "@svgr/plugin-svgo": "^4.3.1", - "loader-utils": "^1.2.3" - } - }, - "@tanem/react-nprogress": { - "version": "3.0.26", - "resolved": "https://registry.npmjs.org/@tanem/react-nprogress/-/react-nprogress-3.0.26.tgz", - "integrity": "sha512-cuKuMBkqu33FmKeLifq5EWnrNlMSmXj3b4qII/sEDpet+cO+7ibMd7vkm2MWlW5Hmt+zfdPNaGRWqQJ4UBZJvg==", - "requires": { - "@babel/runtime": "^7.9.6", - "hoist-non-react-statics": "^3.3.2", - "prop-types": "^15.7.2", - "react-use": "^14.2.0" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", - "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@types/js-cookie": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz", - "integrity": "sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw==" - }, - "@xobotyi/scrollbar-width": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz", - "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==" - }, - "react-use": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/react-use/-/react-use-14.3.0.tgz", - "integrity": "sha512-Jx7Zl0k8dHA0UKpTVwYUThC5/V+Dt6JzCGiMHPNIhsxJGkiKuB1AQ7J7pNq4zj3l37ABd/RF+jRGThw0czrJXA==", - "requires": { - "@types/js-cookie": "2.2.6", - "@xobotyi/scrollbar-width": "1.9.5", - "copy-to-clipboard": "^3.2.0", - "fast-deep-equal": "^3.1.1", - "fast-shallow-equal": "^1.0.0", - "js-cookie": "^2.2.1", - "nano-css": "^5.2.1", - "react-universal-interface": "^0.6.0", - "resize-observer-polyfill": "^1.5.1", - "screenfull": "^5.0.0", - "set-harmonic-interval": "^1.0.1", - "throttle-debounce": "^2.1.0", - "ts-easing": "^0.2.0", - "tslib": "^1.10.0" - } - }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" - } - } - }, - "@testing-library/dom": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.12.2.tgz", - "integrity": "sha512-KCnvHra5fV+wDxg3wJObGvZFxq7v1DJt829GNFLuRDjKxVNc/B5AdsylNF5PMHFbWMXDsHwM26d2NZcZO9KjbQ==", - "requires": { - "@babel/runtime": "^7.6.2", - "@sheerun/mutationobserver-shim": "^0.3.2", - "@types/testing-library__dom": "^6.0.0", - "aria-query": "3.0.0", - "pretty-format": "^24.9.0", - "wait-for-expect": "^3.0.0" - } - }, - "@testing-library/jest-dom": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz", - "integrity": "sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg==", - "requires": { - "@babel/runtime": "^7.5.1", - "chalk": "^2.4.1", - "css": "^2.2.3", - "css.escape": "^1.5.1", - "jest-diff": "^24.0.0", - "jest-matcher-utils": "^24.0.0", - "lodash": "^4.17.11", - "pretty-format": "^24.0.0", - "redent": "^3.0.0" - } - }, - "@testing-library/react": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.4.0.tgz", - "integrity": "sha512-XdhDWkI4GktUPsz0AYyeQ8M9qS/JFie06kcSnUVcpgOwFjAu9vhwR83qBl+lw9yZWkbECjL8Hd+n5hH6C0oWqg==", - "requires": { - "@babel/runtime": "^7.7.6", - "@testing-library/dom": "^6.11.0", - "@types/testing-library__react": "^9.1.2" - } - }, - "@testing-library/user-event": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-7.2.1.tgz", - "integrity": "sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA==" - }, - "@types/babel__core": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.4.tgz", - "integrity": "sha512-c/5MuRz5HM4aizqL5ViYfW4iEnmfPcfbH4Xa6GgLT21dMc1NGeNnuS6egHheOmP+kCJ9CAzC4pv4SDCWTnRkbg==", - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", - "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", - "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.8.tgz", - "integrity": "sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==", - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/dom4": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/dom4/-/dom4-2.0.1.tgz", - "integrity": "sha512-kSkVAvWmMZiCYtvqjqQEwOmvKwcH+V4uiv3qPQ8pAh1Xl39xggGEo8gHUqV4waYGHezdFw0rKBR8Jt0CrQSDZA==" - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" - }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/history": { - "version": "4.7.9", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.9.tgz", - "integrity": "sha512-MUc6zSmU3tEVnkQ78q0peeEjKWPUADMlC/t++2bI8WnAG2tvYRPIgHG8lWkXwqc8MsUF6Z2MOf+Mh5sazOmhiQ==", - "dev": true - }, - "@types/http-proxy": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.3.tgz", - "integrity": "sha512-wIPqXANye5BbORbuh74exbwNzj+UWCwWyeEFJzUQ7Fq3W2NSAy+7x7nX1fgbEypr2/TdKqpeuxLnXWgzN533/Q==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==" - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "26.0.15", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.15.tgz", - "integrity": "sha512-s2VMReFXRg9XXxV+CW9e5Nz8fH2K1aEhwgjUqPPbQd7g95T0laAcvLv032EhFHIa5GHsZ8W7iJEQVaJq6k3Gog==", - "dev": true, - "requires": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - } - }, - "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "15.0.10", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.10.tgz", - "integrity": "sha512-z8PNtlhrj7eJNLmrAivM7rjBESG6JwC5xP3RVk12i/8HVP7Xnx/sEmERnRImyEuUaJfO942X0qMOYsoupaJbZQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "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" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.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 - }, - "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true - }, - "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 - }, - "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, - "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true - }, - "pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - } - }, - "react-is": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", - "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==", - "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" - } - } - } - }, - "@types/js-cookie": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.4.tgz", - "integrity": "sha512-WTfSE1Eauak/Nrg6cA9FgPTFvVawejsai6zXoq0QYTQ3mxONeRtGhKxa7wMlUzWWmzrmTeV+rwLjHgsCntdrsA==" - }, - "@types/json-schema": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", - "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==" - }, - "@types/lodash": { - "version": "4.14.172", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.172.tgz", - "integrity": "sha512-/BHF5HAx3em7/KkzVKm3LrsD6HZAXuXO1AJZQ3cRRBZj4oHZDviWPYu0aEplAqDFNHZPW6d3G7KN+ONcCCC7pw==" - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" - }, - "@types/node": { - "version": "14.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.9.tgz", - "integrity": "sha512-JsoLXFppG62tWTklIoO4knA+oDTYsmqWxHRvd4lpmfQRNhX6osheUOWETP2jMoV/2bEHuMra8Pp3Dmo/stBFcw==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" - }, - "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" - }, - "@types/react": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.0.tgz", - "integrity": "sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw==", - "requires": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", - "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==" - } - } - }, - "@types/react-dom": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.0.tgz", - "integrity": "sha512-lUqY7OlkF/RbNtD5nIq7ot8NquXrdFrjSOR6+w9a9RFQevGi1oZO1dcJbXMeONAPKtZ2UrZOEJ5UOCVsxbLk/g==", - "requires": { - "@types/react": "*" - } - }, - "@types/react-router": { - "version": "5.1.16", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.16.tgz", - "integrity": "sha512-8d7nR/fNSqlTFGHti0R3F9WwIertOaaA1UEB8/jr5l5mDMOs4CidEgvvYMw4ivqrBK+vtVLxyTj2P+Pr/dtgzg==", - "dev": true, - "requires": { - "@types/history": "*", - "@types/react": "*" - } - }, - "@types/react-router-dom": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.8.tgz", - "integrity": "sha512-03xHyncBzG0PmDmf8pf3rehtjY0NpUj7TIN46FrT5n1ZWHPZvXz32gUyNboJ+xsL8cpg8bQVLcllptcQHvocrw==", - "dev": true, - "requires": { - "@types/history": "*", - "@types/react": "*", - "@types/react-router": "*" - } - }, - "@types/sortablejs": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.10.2.tgz", - "integrity": "sha512-aWK2oTpbjNmLyexl95L4ttd0kFIvbMIf1JR2YbNhUwIk9Y1cOwfAfyvfxBBmtg1ZDy64gpbgEdFjyqnzjh+3/A==" - }, - "@types/stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" - }, - "@types/testing-library__dom": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.12.1.tgz", - "integrity": "sha512-cgqnEjxKk31tQt29j4baSWaZPNjQf3bHalj2gcHQTpW5SuHRal76gOpF0vypeEo6o+sS5inOvvNdzLY0B3FB2A==", - "requires": { - "pretty-format": "^24.3.0" - } - }, - "@types/testing-library__react": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.2.tgz", - "integrity": "sha512-CYaMqrswQ+cJACy268jsLAw355DZtPZGt3Jwmmotlcu8O/tkoXBI6AeZ84oZBJsIsesozPKzWzmv/0TIU+1E9Q==", - "requires": { - "@types/react-dom": "*", - "@types/testing-library__dom": "*" - } - }, - "@types/yargs": { - "version": "13.0.8", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", - "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" - }, - "@types/yup": { - "version": "0.29.13", - "resolved": "https://registry.npmjs.org/@types/yup/-/yup-0.29.13.tgz", - "integrity": "sha512-qRyuv+P/1t1JK1rA+elmK1MmCL1BapEzKKfbEhDBV/LMMse4lmhZ/XbgETI39JveDJRpLjmToOI6uFtMW/WR2g==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "2.19.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.19.2.tgz", - "integrity": "sha512-HX2qOq2GOV04HNrmKnTpSIpHjfl7iwdXe3u/Nvt+/cpmdvzYvY0NHSiTkYN257jHnq4OM/yo+OsFgati+7LqJA==", - "requires": { - "@typescript-eslint/experimental-utils": "2.19.2", - "eslint-utils": "^1.4.3", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "2.19.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.19.2.tgz", - "integrity": "sha512-B88QuwT1wMJR750YvTJBNjMZwmiPpbmKYLm1yI7PCc3x0NariqPwqaPsoJRwU9DmUi0cd9dkhz1IqEnwfD+P1A==", - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.19.2", - "eslint-scope": "^5.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "2.19.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.19.2.tgz", - "integrity": "sha512-8uwnYGKqX9wWHGPGdLB9sk9+12sjcdqEEYKGgbS8A0IvYX59h01o8os5qXUHMq2na8vpDRaV0suTLM7S8wraTA==", - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.19.2", - "@typescript-eslint/typescript-estree": "2.19.2", - "eslint-visitor-keys": "^1.1.0" - } - }, - "@typescript-eslint/typescript-estree": { - "version": "2.19.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.19.2.tgz", - "integrity": "sha512-Xu/qa0MDk6upQWqE4Qy2X16Xg8Vi32tQS2PR0AvnT/ZYS4YGDvtn2MStOh5y8Zy2mg4NuL06KUHlvCh95j9C6Q==", - "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^6.3.0", - "tsutils": "^3.17.1" - } - }, - "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", - "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" - } - }, - "@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==" - }, - "@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==" - }, - "@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==" - }, - "@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==", - "requires": { - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@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==" - }, - "@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==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" - } - }, - "@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==" - }, - "@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==", - "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/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", - "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==", - "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==" - }, - "@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==", - "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/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", - "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/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", - "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/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==", - "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/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==", - "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", - "@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==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "@welldone-software/why-did-you-render": { - "version": "6.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@welldone-software/why-did-you-render/-/why-did-you-render-6.0.0-rc.1.tgz", - "integrity": "sha512-qQe5w89tYnYtwRqlhdF33ivWjsQlGXkan5lFzNwpAoMEUFIbDuwvFiBUAbE76Lfz63GabSaf1vyuCusgJ7Rtqg==", - "dev": true, - "requires": { - "lodash": "^4" - } - }, - "@xobotyi/scrollbar-width": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.0.tgz", - "integrity": "sha512-W8oNXd3HkW9eQHxk+47iRx4aqd0yIV9NoeykUTd0uE0sYx3LOAQE7rfHOd8xtMP7IADfLIdG0o0H1sXvHUF7dw==" - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "abab": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", - "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "accounting": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/accounting/-/accounting-0.4.1.tgz", - "integrity": "sha1-h91BA+/39EYPHhhvXGd+1s9WaIM=" - }, - "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==" - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" - } - } - }, - "acorn-jsx": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", - "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==" - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" - }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - }, - "adjust-sourcemap-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", - "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", - "requires": { - "assert": "1.4.1", - "camelcase": "5.0.0", - "loader-utils": "1.2.3", - "object-path": "0.11.4", - "regex-parser": "2.2.10" - }, - "dependencies": { - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" - } - } - }, - "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", - "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", - "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-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" - }, - "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" - }, - "ansi-escapes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", - "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", - "requires": { - "type-fest": "^0.8.1" - } - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "ansi-styles": { - "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==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, - "arity-n": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", - "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=" - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - }, - "array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "array.prototype.flat": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", - "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "requires": { - "util": "0.10.3" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "attr-accept": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.1.0.tgz", - "integrity": "sha512-sLzVM3zCCmmDtDNhI0i96k6PUztkotSOXqE4kDGQt/6iDi5M+H0srjeF+QC6jN581l4X/Zq3Zu/tgcErEssavg==" - }, - "autoprefixer": { - "version": "9.7.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", - "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", - "requires": { - "browserslist": "^4.8.3", - "caniuse-lite": "^1.0.30001020", - "chalk": "^2.4.2", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.26", - "postcss-value-parser": "^4.0.2" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" - }, - "axios": { - "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" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "axobject-query": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.1.2.tgz", - "integrity": "sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ==" - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "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" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^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=" - } - } - }, - "babel-eslint": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", - "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - } - }, - "babel-extract-comments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", - "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", - "requires": { - "babylon": "^6.18.0" - } - }, - "babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", - "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - } - }, - "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", - "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } - } - }, - "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==", - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - } - }, - "babel-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", - "requires": { - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "requires": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } - } - }, - "babel-plugin-named-asset-import": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz", - "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==" - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, - "babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" - }, - "babel-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", - "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" - } - }, - "babel-preset-react-app": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.1.tgz", - "integrity": "sha512-YkWP2UwY//TLltNlEBRngDOrYhvSLb+CA330G7T9M5UhGEMWe+JK/8IXJc5p2fDTSfSiETf+PY0+PYXFMix81Q==", - "requires": { - "@babel/core": "7.8.4", - "@babel/plugin-proposal-class-properties": "7.8.3", - "@babel/plugin-proposal-decorators": "7.8.3", - "@babel/plugin-proposal-numeric-separator": "7.8.3", - "@babel/plugin-transform-flow-strip-types": "7.8.3", - "@babel/plugin-transform-react-display-name": "7.8.3", - "@babel/plugin-transform-runtime": "7.8.3", - "@babel/preset-env": "7.8.4", - "@babel/preset-react": "7.8.3", - "@babel/preset-typescript": "7.8.3", - "@babel/runtime": "7.8.4", - "babel-plugin-macros": "2.8.0", - "babel-plugin-transform-react-remove-prop-types": "0.4.24" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - }, - "basscss": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/basscss/-/basscss-8.0.2.tgz", - "integrity": "sha1-4FK1qpXuTV6hGAG8djudco9MAfY=", - "requires": { - "basscss-align": "^1.0.2", - "basscss-border": "^4.0.2", - "basscss-flexbox": "^1.0.1", - "basscss-grid": "^2.0.0", - "basscss-hide": "^1.0.1", - "basscss-layout": "^3.1.0", - "basscss-margin": "^1.0.7", - "basscss-padding": "^1.1.3", - "basscss-position": "^2.0.3", - "basscss-type-scale": "^1.0.5", - "basscss-typography": "^3.0.3" - } - }, - "basscss-align": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/basscss-align/-/basscss-align-1.0.2.tgz", - "integrity": "sha1-KUqmidb5nahuSvTFwokocIVcHDc=" - }, - "basscss-border": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/basscss-border/-/basscss-border-4.0.2.tgz", - "integrity": "sha1-FLRQYym5DLFKvl9NNHPp/pIC3y4=" - }, - "basscss-flexbox": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/basscss-flexbox/-/basscss-flexbox-1.0.2.tgz", - "integrity": "sha512-AtG6yBmmza2nPo3x9X4/7rbW22gLmiSvYvirFs7Aspt1zp5FHwpRBz3BD2v/a3qPdmVM8OvOLVNWISGM6O50MA==" - }, - "basscss-grid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/basscss-grid/-/basscss-grid-2.0.0.tgz", - "integrity": "sha1-b0wxmOeGo4Up+DYrw7O85SVME2k=" - }, - "basscss-hide": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/basscss-hide/-/basscss-hide-1.0.1.tgz", - "integrity": "sha1-NLwTi7qGfGxJq4aCphDvSV5H11A=" - }, - "basscss-layout": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/basscss-layout/-/basscss-layout-3.1.0.tgz", - "integrity": "sha1-+fOS5IDaZmV9n+XenKTAfFecOk4=" - }, - "basscss-margin": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/basscss-margin/-/basscss-margin-1.0.9.tgz", - "integrity": "sha512-wpF8tXrtzU+iMtLvfSgYJlpkIxChOlay3YumoI+yJ6IiOe5uMmEGUG8FWAIkC8QalkKDAURAqHmQ4nbuyUvyag==" - }, - "basscss-padding": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/basscss-padding/-/basscss-padding-1.1.3.tgz", - "integrity": "sha1-adt5lBTm3Vi+2Dd2lSzCmeLmh04=" - }, - "basscss-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/basscss-position/-/basscss-position-2.0.3.tgz", - "integrity": "sha1-RnGAofjzhukHLtjQgpTSpuC6QwU=" - }, - "basscss-type-scale": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/basscss-type-scale/-/basscss-type-scale-1.0.6.tgz", - "integrity": "sha512-93KOVRr5iX0e38d6+k2pQ8WW1IA5DigQhJextts4rwbSt2+cr+XrokGJ74HB8LevO54HMoc3VJ8M6oOR2puc8A==" - }, - "basscss-typography": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/basscss-typography/-/basscss-typography-3.0.4.tgz", - "integrity": "sha512-PMCxUfYPpAj8gQV8qI09lfNp7eWNrKtQFkCN2fZjLyReSY/wnw8QP8irpvbJ67vSEhlkA6ZP8j7vmTDoxkyu8g==" - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "requires": { - "inherits": "~2.0.0" - } - }, - "bluebird": { - "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==" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "bowser": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz", - "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" - } - } - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "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" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.8.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.7.tgz", - "integrity": "sha512-gFOnZNYBHrEyUML0xr5NJ6edFaaKbTFX9S9kQHlYfCP0Rit/boRIz4G+Avq6/4haEKJXdGGUnoolx+5MWW2BoA==", - "requires": { - "caniuse-lite": "^1.0.30001027", - "electron-to-chromium": "^1.3.349", - "node-releases": "^1.1.49" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "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.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^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", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - } - } - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001027", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001027.tgz", - "integrity": "sha512-7xvKeErvXZFtUItTHgNtLgS9RJpVnwBlWX8jSo/BO8VsF6deszemZSkJJJA1KOKrXuzZH4WALpAJdq5EyfgMLg==" - }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "requires": { - "rsvp": "^4.8.4" - } - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", - "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "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" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", - "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.3.0" - }, - "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "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==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "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==", - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" - }, - "clean-css": { - "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==", - "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==" - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "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=" - }, - "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==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "clone-deep": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", - "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", - "requires": { - "for-own": "^0.1.3", - "is-plain-object": "^2.0.1", - "kind-of": "^3.0.2", - "lazy-cache": "^1.0.3", - "shallow-clone": "^0.1.2" - } - }, - "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" - }, - "cnbuilder": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/cnbuilder/-/cnbuilder-1.3.2.tgz", - "integrity": "sha512-4WygslpZg+W4uVGF4dzN/Vbz0q4arACdMfgPJlx2EZA6+/OhfRT7KFIX6MuN3P+0MUwx8R7sNe+xOKINatwJrg==" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "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=" - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", - "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==", - "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=" - }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colors": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.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==" - }, - "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "compose-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", - "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", - "requires": { - "arity-n": "^1.0.4" - } - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "compression-webpack-plugin": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-6.1.0.tgz", - "integrity": "sha512-RK/bBW3JwQpb7tH91trro7ulNa0ynSTPxQO48rn/oS1Y2nGUYuX6CWIOqbhUF2+b+2clqJeDGIYYckvg6WKabA==", - "dev": true, - "requires": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" - }, - "dependencies": { - "@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", - "dev": true - }, - "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": { - "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 - }, - "cacache": { - "version": "15.0.6", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.6.tgz", - "integrity": "sha512-g1WYDMct/jzW+JdWEyjaX2zoBkZ6ZT9VpOyp2I/VMtDsNLffNat3kqPFfi1eDRSK9/SuKGyORDHcQMcPF8sQ/w==", - "dev": true, - "requires": { - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "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": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "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" - } - }, - "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" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.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" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "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" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.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" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "confusing-browser-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", - "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==" - }, - "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", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "console-polyfill": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.3.0.tgz", - "integrity": "sha512-w+JSDZS7XML43Xnwo2x5O5vxB0ID7T5BdqDtyqT6uiCAX2kZAgcWxNaGqT97tZfSHzfOcvrfsDAodKcJ3UvnXQ==" - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "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==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "copy-to-clipboard": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", - "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", - "requires": { - "toggle-selection": "^1.0.6" - } - }, - "core-js": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", - "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" - }, - "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", - "requires": { - "browserslist": "^4.8.3", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" - } - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "create-react-context": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", - "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", - "requires": { - "gud": "^1.0.0", - "warning": "^4.0.3" - } - }, - "cross-env": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.2.tgz", - "integrity": "sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==", - "requires": { - "cross-spawn": "^7.0.1" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "requires": { - "inherits": "^2.0.3", - "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==" - } - } - }, - "css-blank-pseudo": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", - "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", - "requires": { - "postcss": "^7.0.5" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-has-pseudo": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", - "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^5.0.0-rc.4" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "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==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "css-in-js-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", - "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", - "requires": { - "hyphenate-style-name": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "css-loader": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", - "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", - "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.23", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.1.1", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.2", - "schema-utils": "^2.6.0" - }, - "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - } - } - }, - "css-prefers-color-scheme": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", - "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", - "requires": { - "postcss": "^7.0.5" - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, - "css-tree": { - "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==", - "requires": { - "mdn-data": "2.0.4", - "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==" - } - } - }, - "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=" - }, - "css-what": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==" - }, - "css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" - }, - "cssdb": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", - "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" - }, - "csso": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", - "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", - "requires": { - "css-tree": "1.0.0-alpha.37" - } - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "requires": { - "cssom": "0.3.x" - } - }, - "csstype": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.9.tgz", - "integrity": "sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q==" - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "damerau-levenshtein": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", - "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "deep-map-keys": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/deep-map-keys/-/deep-map-keys-2.0.1.tgz", - "integrity": "sha512-hvsUEzDow++fTMwM2f2S7ttG39Y20mprBGwsydPpgmHwPQGwG10KJW44JgYVImJtXlDY983jIiqU9W2+DS2yzg==", - "requires": { - "es6-weak-map": "^2.0.1", - "lodash": "^4.13.1" - } - }, - "deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" - }, - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" - }, - "detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "requires": { - "utila": "~0.4" - } - }, - "dom-helpers": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz", - "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "csstype": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.3.tgz", - "integrity": "sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag==" - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - } - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "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==" - } - } - }, - "dom4": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/dom4/-/dom4-2.1.5.tgz", - "integrity": "sha512-gJbnVGq5zaBUY0lUh0LUEVGYrtN75Ks8ZwpwOYvnVFrKy/qzXK4R/1WuLIFExWj/tBxbRAkTzZUGJHXmqsBNjQ==" - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.3.351", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.351.tgz", - "integrity": "sha512-L8zhV8k7Znp2q3wWXYDzCyfTBeGauEX0rX/FtgmnDgmvHRqwu9NVN614wOkXx9sDZmJZpNMBaEFMXTu/vbr+Kg==" - }, - "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "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==" - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "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==", - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-stack-parser": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", - "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", - "requires": { - "stackframe": "^1.1.1" - } - }, - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "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==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "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=" - }, - "escodegen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", - "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "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==", - "optional": true - } - } - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "globals": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", - "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", - "requires": { - "type-fest": "^0.8.1" - } - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } - } - }, - "eslint-config-react-app": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.0.tgz", - "integrity": "sha512-WrHjoGpKr1kLLiWDD81tme9jMM0hk5cMxasLSdyno6DdPt+IfLOrDJBVo6jN7tn4y1nzhs43TmUaZWO6Sf0blw==", - "requires": { - "confusing-browser-globals": "^1.0.9" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", - "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", - "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "eslint-loader": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", - "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", - "requires": { - "fs-extra": "^8.1.0", - "loader-fs-cache": "^1.0.2", - "loader-utils": "^1.2.3", - "object-hash": "^2.0.1", - "schema-utils": "^2.6.1" - } - }, - "eslint-module-utils": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", - "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", - "requires": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "requires": { - "find-up": "^2.1.0" - } - } - } - }, - "eslint-plugin-flowtype": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz", - "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==", - "requires": { - "lodash": "^4.17.15" - } - }, - "eslint-plugin-import": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz", - "integrity": "sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ==", - "requires": { - "array-includes": "^3.0.3", - "array.prototype.flat": "^1.2.1", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.1", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.0", - "read-pkg-up": "^2.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", - "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", - "requires": { - "@babel/runtime": "^7.4.5", - "aria-query": "^3.0.0", - "array-includes": "^3.0.3", - "ast-types-flow": "^0.0.7", - "axobject-query": "^2.0.2", - "damerau-levenshtein": "^1.0.4", - "emoji-regex": "^7.0.2", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.1" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - } - } - }, - "eslint-plugin-react": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.18.0.tgz", - "integrity": "sha512-p+PGoGeV4SaZRDsXqdj9OWcOrOpZn8gXoGPcIQTzo2IDMbAKhNDnME9myZWqO3Ic4R3YmwAZ1lDjWl2R2hMUVQ==", - "requires": { - "array-includes": "^3.1.1", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.14.2" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "requires": { - "esutils": "^2.0.2" - } - } - } - }, - "eslint-plugin-react-hooks": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" - }, - "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "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==" - }, - "espree": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", - "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", - "requires": { - "acorn": "^7.1.0", - "acorn-jsx": "^5.1.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz", - "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==", - "requires": { - "estraverse": "^4.0.0" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==" - }, - "events": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" - }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "exec-sh": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", - "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==" - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "expect": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", - "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", - "requires": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" - } - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "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==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "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==" - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } - } - }, - "fast-json-stable-stringify": { - "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==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "fast-shallow-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz", - "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==" - }, - "fastest-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz", - "integrity": "sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg=" - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "requires": { - "bser": "2.1.1" - } - }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" - }, - "figures": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", - "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", - "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" - } - }, - "file-selector": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.1.12.tgz", - "integrity": "sha512-Kx7RTzxyQipHuiqyZGf+Nz4vY9R1XGxuQl/hLoJwq+J4avk/9wxxgZyHKtbyIPJmbD4A66DWGYfyykWNpcYutQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "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==", - "optional": true - }, - "filesize": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", - "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==" - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "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==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "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==", - "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==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "findup": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz", - "integrity": "sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs=", - "requires": { - "colors": "~0.6.0-1", - "commander": "~2.1.0" - }, - "dependencies": { - "commander": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=" - } - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" - }, - "flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" - }, - "flow-bin": { - "version": "0.123.0", - "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.123.0.tgz", - "integrity": "sha512-Ylcf8YDIM/KrqtxkPuq+f8O+6sdYA2Nuz5f+sWHlp539DatZz3YMcsO1EiXaf1C11HJgpT/3YGYe7xZ9/UZmvQ==" - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=" - }, - "follow-redirects": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.10.0.tgz", - "integrity": "sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ==", - "requires": { - "debug": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "fork-ts-checker-webpack-plugin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", - "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", - "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^3.3.0", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "formik": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/formik/-/formik-2.2.5.tgz", - "integrity": "sha512-KkOsyYmh5xsow+wlbdL9QSkqvbiHSb1RIToBKiooCFW4lyypn+ZlHGjTuuOqUWBqZaI5nCEupeI275Mo6tFBzg==", - "requires": { - "deepmerge": "^2.1.1", - "hoist-non-react-statics": "^3.3.0", - "lodash": "^4.17.14", - "lodash-es": "^4.17.14", - "react-fast-compare": "^2.0.1", - "tiny-warning": "^1.0.2", - "tslib": "^1.10.0" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.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==", - "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", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "optional": true - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "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" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "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=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "requires": { - "globule": "^1.0.0" - } - }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" - }, - "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==" - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "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", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globby": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", - "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - } - } - }, - "globule": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", - "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.12", - "minimatch": "~3.0.2" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" - }, - "gud": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } - } - }, - "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==" - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "harmony-reflect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", - "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "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==" - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "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==" - }, - "history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "requires": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } - }, - "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" - }, - "hotkeys-js": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.8.1.tgz", - "integrity": "sha512-YlhVQtyG9f1b7GhtzdhR0Pl+cImD1ZrKI6zYUa7QLd0zuThiL7RzZ+ANJyy7z+kmcCpNYBf5PjBa3CjiQ5PFpw==" - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" - }, - "html-escaper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", - "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==" - }, - "html-minifier-terser": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.0.3.tgz", - "integrity": "sha512-It4No3H1V3Dhd/O0MePFdo0oX/M6u6YZTMw4My/010mT6vxdbqge7+0RoxGAmeSbKok6gjYZoP0p4rpZ2+J2yw==", - "requires": { - "camel-case": "^3.0.0", - "clean-css": "^4.2.1", - "commander": "^4.0.0", - "he": "^1.2.0", - "param-case": "^2.1.1", - "relateurl": "^0.2.7", - "terser": "^4.3.9" - }, - "dependencies": { - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - } - } - }, - "html-webpack-plugin": { - "version": "4.0.0-beta.11", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz", - "integrity": "sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg==", - "requires": { - "html-minifier-terser": "^5.0.1", - "loader-utils": "^1.2.3", - "lodash": "^4.17.15", - "pretty-error": "^2.1.1", - "tapable": "^1.1.3", - "util.promisify": "1.0.0" - }, - "dependencies": { - "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==", - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" - }, - "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==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "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=" - }, - "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==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.0.0.tgz", - "integrity": "sha512-1yM4gD7R/U9R5AwA6STkoj8JfjnMeZIUrd8e23Yc14A7xVVLUWlAikgvidklwq1UOroJ07sc6NWNULeOJMYOeQ==", - "dev": true, - "requires": { - "@types/http-proxy": "^1.17.3", - "http-proxy": "^1.18.0", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "micromatch": "^4.0.2" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "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, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "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 - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "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, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - }, - "hyphenate-style-name": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", - "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "requires": { - "postcss": "^7.0.14" - } - }, - "identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", - "requires": { - "harmony-reflect": "^1.4.6" - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, - "immer": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", - "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==" - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "requires": { - "resolve-from": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" - }, - "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==" - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "inline-style-prefixer": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-4.0.2.tgz", - "integrity": "sha512-N8nVhwfYga9MiV9jWlwfdj1UDIaZlBFu4cJSJkIr7tZX7sHpHhGR5su1qdpW+7KPL8ISTvCIkcaFi/JdBknvPg==", - "requires": { - "bowser": "^1.7.3", - "css-in-js-utils": "^2.0.0" - } - }, - "inquirer": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", - "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - } - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } - }, - "intl": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/intl/-/intl-1.2.5.tgz", - "integrity": "sha1-giRKIZDE5Bn4Nx9ao02qNCDiq94=" - }, - "intl-format-cache": { - "version": "4.2.21", - "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-4.2.21.tgz", - "integrity": "sha512-6pZlBdqTRUuuwRWywPItHY1JQwzQxWcpBHv6w4M8T6bGzAsiL/QmI+XsdOhsqJLaL4ZmTATn1kIkNlMk4VzSLQ==" - }, - "intl-messageformat": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-7.8.4.tgz", - "integrity": "sha512-yS0cLESCKCYjseCOGXuV4pxJm/buTfyCJ1nzQjryHmSehlptbZbn9fnlk1I9peLopZGGbjj46yHHiTAEZ1qOTA==", - "requires": { - "intl-format-cache": "^4.2.21", - "intl-messageformat-parser": "^3.6.4" - } - }, - "intl-messageformat-parser": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-3.6.4.tgz", - "integrity": "sha512-RgPGwue0mJtoX2Ax8EmMzJzttxjnva7gx0Q7mKJ4oALrTZvtmCeAw5Msz2PcjW4dtCh/h7vN/8GJCxZO1uv+OA==", - "requires": { - "@formatjs/intl-unified-numberformat": "^3.2.0" - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.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==" - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" - }, - "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==" - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "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==", - "requires": { - "binary-extensions": "^2.0.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==" - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-date-object": { - "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==" - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" - }, - "is-docker": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", - "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==" - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" - }, - "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==" - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "requires": { - "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=" - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "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=" - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "requires": { - "has": "^1.0.3" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - }, - "is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - } - }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", - "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "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==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "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==" - } - } - }, - "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", - "requires": { - "html-escaper": "^2.0.0" - } - }, - "jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", - "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", - "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" - }, - "dependencies": { - "jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", - "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - } - } - } - }, - "jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", - "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" - } - }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - } - }, - "jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", - "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", - "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", - "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-environment-jsdom": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" - } - }, - "jest-environment-jsdom-fourteen": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz", - "integrity": "sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q==", - "requires": { - "@jest/environment": "^24.3.0", - "@jest/fake-timers": "^24.3.0", - "@jest/types": "^24.3.0", - "jest-mock": "^24.0.0", - "jest-util": "^24.0.0", - "jsdom": "^14.1.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" - } - }, - "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" - }, - "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", - "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "dependencies": { - "fsevents": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", - "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": false, - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "optional": true - }, - "aproba": { - "version": "1.2.0", - "resolved": false, - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": false, - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": false, - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.3", - "resolved": false, - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": false, - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": false, - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": false, - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true - }, - "debug": { - "version": "3.2.6", - "resolved": false, - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": false, - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "optional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": false, - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": false, - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "optional": true - }, - "gauge": { - "version": "2.7.4", - "resolved": false, - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "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.6", - "resolved": false, - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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=", - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": false, - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "resolved": false, - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": false, - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": false, - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "optional": true - }, - "ini": { - "version": "1.3.5", - "resolved": false, - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": false, - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": false, - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "optional": true - }, - "minipass": { - "version": "2.9.0", - "resolved": false, - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": false, - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": false, - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.2", - "resolved": false, - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "optional": true - }, - "needle": { - "version": "2.4.0", - "resolved": false, - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "resolved": false, - "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", - "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.4.2" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": false, - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": false, - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "optional": true - }, - "npm-packlist": { - "version": "1.4.7", - "resolved": false, - "integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==", - "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==", - "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=", - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": false, - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": false, - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "optional": true - }, - "osenv": { - "version": "0.1.5", - "resolved": false, - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "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=", - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": false, - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "optional": true - }, - "rc": { - "version": "1.2.8", - "resolved": false, - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "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=", - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": false, - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "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.7.1", - "resolved": false, - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": false, - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": false, - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "optional": true - }, - "sax": { - "version": "1.2.4", - "resolved": false, - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "optional": true - }, - "semver": { - "version": "5.7.1", - "resolved": false, - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": false, - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": false, - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "optional": true - }, - "string-width": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "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==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": false, - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": false, - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "optional": true - }, - "tar": { - "version": "4.4.13", - "resolved": false, - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": false, - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "optional": true - }, - "yallist": { - "version": "3.1.1", - "resolved": false, - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "optional": true - } - } - } - } - }, - "jest-jasmine2": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", - "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" - } - }, - "jest-leak-detector": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", - "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", - "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-matcher-utils": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", - "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", - "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" - } - }, - "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", - "requires": { - "@jest/types": "^24.9.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==" - }, - "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==" - }, - "jest-resolve": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", - "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", - "requires": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" - } - }, - "jest-resolve-dependencies": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", - "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", - "requires": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" - } - }, - "jest-runner": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", - "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" - } - }, - "jest-runtime": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", - "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" - } - }, - "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==" - }, - "jest-snapshot": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", - "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" - } - }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", - "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" - } - }, - "jest-watch-typeahead": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz", - "integrity": "sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.1", - "jest-regex-util": "^24.9.0", - "jest-watcher": "^24.3.0", - "slash": "^3.0.0", - "string-length": "^3.1.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "string-length": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", - "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^5.2.0" - } - } - } - }, - "jest-watcher": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", - "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", - "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - } - } - }, - "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "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==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "js-base64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", - "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==" - }, - "js-cookie": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", - "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" - }, - "js-money": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/js-money/-/js-money-0.6.3.tgz", - "integrity": "sha1-ILj6m5WNrH9XuY2QJyUuQI6Y1P0=", - "requires": { - "lodash": "4.x.x" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "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==" - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "~0.0.0" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" - }, - "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", - "requires": { - "minimist": "^1.2.0" - } - }, - "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" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jsx-ast-utils": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", - "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", - "requires": { - "array-includes": "^3.0.3", - "object.assign": "^4.1.0" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - }, - "last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "requires": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "requires": { - "leven": "^3.1.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "loader-fs-cache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", - "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", - "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=", - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^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=", - "requires": { - "find-up": "^1.0.0" - } - } - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", - "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "loglevel": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", - "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" - }, - "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==", - "requires": { - "yallist": "^3.0.2" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "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==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "requires": { - "tmpl": "1.0.x" - } - }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" - }, - "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==", - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "match-sorter": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-4.1.0.tgz", - "integrity": "sha512-DCzT9JVO2FWVOTfsKqIqVhu/skFa3bK0lQom70j6Co9yKX9bPn2gRtn9BFD9ykkM8F/USjTQeId+nlFfTVvz+w==", - "dev": true, - "requires": { - "@babel/runtime": "^7.9.2", - "remove-accents": "0.4.2" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.4.tgz", - "integrity": "sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true - } - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { - "get-stdin": "^4.0.1" - } - } - } - }, - "merge-deep": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", - "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", - "requires": { - "arr-union": "^3.1.0", - "clone-deep": "^0.2.4", - "kind-of": "^3.0.2" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "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==" - }, - "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "microevent.ts": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", - "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" - }, - "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" - }, - "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", - "requires": { - "mime-db": "1.43.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "min-indent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", - "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=" - }, - "mini-create-react-context": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "requires": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - } - } - }, - "mini-css-extract-plugin": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", - "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "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==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", - "requires": { - "yallist": "^4.0.0" - } - }, - "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==", - "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==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", - "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "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==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } - }, - "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" - }, - "moment-timezone": { - "version": "0.5.33", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", - "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", - "requires": { - "moment": ">= 2.9.0" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" - }, - "nano-css": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.3.0.tgz", - "integrity": "sha512-uM/9NGK9/E9/sTpbIZ/bQ9xOLOIHZwrrb/CRlbDHBU/GFS7Gshl24v/WJhwsVViWkpOXUmiZ66XO7fSB4Wd92Q==", - "requires": { - "css-tree": "^1.0.0-alpha.28", - "csstype": "^2.5.5", - "fastest-stable-stringify": "^1.0.1", - "inline-style-prefixer": "^4.0.0", - "rtl-css-js": "^1.9.0", - "sourcemap-codec": "^1.4.1", - "stacktrace-js": "^2.0.0", - "stylis": "3.5.0" - } - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "requires": { - "lower-case": "^1.1.1" - } - }, - "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==" - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" - } - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - }, - "dependencies": { - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - } - } - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" - }, - "node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", - "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "node-releases": { - "version": "1.1.49", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.49.tgz", - "integrity": "sha512-xH8t0LS0disN0mtRCh+eByxFPie+msJUBL/lJDBuap53QGiYPa9joh83K4pCZgWJ+2L4b9h88vCVdXQ60NO2bg==", - "requires": { - "semver": "^6.3.0" - } - }, - "node-sass": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz", - "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==", - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash": "^4.17.15", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.13.2", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "^2.2.4", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "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" - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "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==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^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=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "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=", - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - }, - "dependencies": { - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "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=" - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" - }, - "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=" - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-hash": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.2.tgz", - "integrity": "sha512-b+2AKjAf6uQlxxv8ChHdM+VT4eeX+ZSwv+pk2xIXZWbo+yxn4/En1iC+GHe/OFYa9on0AhFF2PvuAcFHoiiHaA==" - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" - }, - "object-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object-path": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", - "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.entries": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", - "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "object.fromentries": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", - "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.2.tgz", - "integrity": "sha512-70E/pFTPr7nZ9nLDPNTcj3IVqnNvKuP4VsBmoKV9YGTnChe0mlS3C4qM7qKarhZ8rGaHKLfo+vBTHXDp6ZSyLQ==", - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "dependencies": { - "is-wsl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==" - } - } - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "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==", - "requires": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "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==", - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" - }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", - "requires": { - "p-reduce": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "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==" - }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "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==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "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==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "requires": { - "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==" - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "requires": { - "no-case": "^2.2.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - } - } - }, - "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", - "requires": { - "asn1.js": "^4.0.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=", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "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=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "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==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "picomatch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", - "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "requires": { - "node-modules-regexp": "^1.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==", - "requires": { - "find-up": "^3.0.0" - } - }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "requires": { - "find-up": "^3.0.0" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "pnp-webpack-plugin": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.0.tgz", - "integrity": "sha512-ZcMGn/xF/fCOq+9kWMP9vVVxjIkMCja72oy3lziR7UHy0hHFZ57iVpQ71OtveVbmzeCmphBg8pxNdk/hlK99aQ==", - "requires": { - "ts-pnp": "^1.1.2" - } - }, - "popper.js": { - "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.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "postcss": { - "version": "7.0.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", - "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.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==" - }, - "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==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-attribute-case-insensitive": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", - "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^6.0.2" - } - }, - "postcss-browser-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz", - "integrity": "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==", - "requires": { - "postcss": "^7" - } - }, - "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", - "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" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "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==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "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==" - } - } - }, - "postcss-color-functional-notation": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", - "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-color-gray": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", - "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-color-hex-alpha": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", - "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", - "requires": { - "postcss": "^7.0.14", - "postcss-values-parser": "^2.0.1" - } - }, - "postcss-color-mod-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", - "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-color-rebeccapurple": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", - "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "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==" - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "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==" - } - } - }, - "postcss-custom-media": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", - "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", - "requires": { - "postcss": "^7.0.14" - } - }, - "postcss-custom-properties": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", - "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", - "requires": { - "postcss": "^7.0.17", - "postcss-values-parser": "^2.0.1" - } - }, - "postcss-custom-selectors": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", - "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "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==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-dir-pseudo-class": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", - "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "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==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-double-position-gradients": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", - "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", - "requires": { - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-env-function": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", - "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-flexbugs-fixes": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz", - "integrity": "sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-focus-visible": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", - "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-focus-within": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", - "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-font-variant": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", - "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-gap-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", - "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-image-set-function": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", - "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-initial": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", - "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", - "requires": { - "lodash.template": "^4.5.0", - "postcss": "^7.0.2" - } - }, - "postcss-lab-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", - "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "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==", - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "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==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "postcss-logical": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", - "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-media-minmax": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", - "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "requires": { - "css-color-names": "0.0.4", - "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==" - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "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==", - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "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==" - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "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==" - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "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==" - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "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==", - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "requires": { - "postcss": "^7.0.5" - } - }, - "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", - "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.16", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" - } - }, - "postcss-modules-scope": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz", - "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==", - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - } - }, - "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", - "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "postcss-nesting": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", - "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-normalize": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz", - "integrity": "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==", - "requires": { - "@csstools/normalize.css": "^10.1.0", - "browserslist": "^4.6.2", - "postcss": "^7.0.17", - "postcss-browser-comments": "^3.0.0", - "sanitize.css": "^10.0.0" - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "requires": { - "cssnano-util-get-match": "^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==" - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "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==" - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^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==" - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "requires": { - "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==" - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "requires": { - "cssnano-util-get-match": "^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==" - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "requires": { - "browserslist": "^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==" - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - }, - "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==" - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "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==" - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "requires": { - "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==" - } - } - }, - "postcss-overflow-shorthand": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", - "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-page-break": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", - "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-place": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", - "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-preset-env": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", - "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", - "requires": { - "autoprefixer": "^9.6.1", - "browserslist": "^4.6.4", - "caniuse-lite": "^1.0.30000981", - "css-blank-pseudo": "^0.1.4", - "css-has-pseudo": "^0.10.0", - "css-prefers-color-scheme": "^3.1.1", - "cssdb": "^4.4.0", - "postcss": "^7.0.17", - "postcss-attribute-case-insensitive": "^4.0.1", - "postcss-color-functional-notation": "^2.0.1", - "postcss-color-gray": "^5.0.0", - "postcss-color-hex-alpha": "^5.0.3", - "postcss-color-mod-function": "^3.0.3", - "postcss-color-rebeccapurple": "^4.0.1", - "postcss-custom-media": "^7.0.8", - "postcss-custom-properties": "^8.0.11", - "postcss-custom-selectors": "^5.1.2", - "postcss-dir-pseudo-class": "^5.0.0", - "postcss-double-position-gradients": "^1.0.0", - "postcss-env-function": "^2.0.2", - "postcss-focus-visible": "^4.0.0", - "postcss-focus-within": "^3.0.0", - "postcss-font-variant": "^4.0.0", - "postcss-gap-properties": "^2.0.0", - "postcss-image-set-function": "^3.0.1", - "postcss-initial": "^3.0.0", - "postcss-lab-function": "^2.0.1", - "postcss-logical": "^3.0.0", - "postcss-media-minmax": "^4.0.0", - "postcss-nesting": "^7.0.0", - "postcss-overflow-shorthand": "^2.0.0", - "postcss-page-break": "^2.0.0", - "postcss-place": "^4.0.1", - "postcss-pseudo-class-any-link": "^6.0.0", - "postcss-replace-overflow-wrap": "^3.0.0", - "postcss-selector-matches": "^4.0.0", - "postcss-selector-not": "^4.0.0" - } - }, - "postcss-pseudo-class-any-link": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", - "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "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==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "requires": { - "cssnano-util-get-match": "^4.0.0", - "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==" - } - } - }, - "postcss-replace-overflow-wrap": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", - "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-rtl": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/postcss-rtl/-/postcss-rtl-1.7.3.tgz", - "integrity": "sha512-PMwlrQSeZKChNJQGtWz9Xfk3rY1W7P5Jp4sFRXVufczQIH6vRhTNSc5gnEwKHaWrU8SMoZMi2VY7ihOmwVvW7g==", - "requires": { - "rtlcss": "2.5.0" - } - }, - "postcss-rtlcss": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/postcss-rtlcss/-/postcss-rtlcss-1.7.2.tgz", - "integrity": "sha512-YTzE/dJwEgkofCVj2iu2FEF+Th+7Yzz/FIuT8elxftP6BQb44vlH4EaYVyM75dbcVd1WQBzP4c7ZmWMB7rmNMw==", - "dev": true, - "requires": { - "rtlcss": "^2.6.0" - }, - "dependencies": { - "@choojs/findup": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", - "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", - "dev": true, - "requires": { - "commander": "^2.15.1" - } - }, - "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" - } - }, - "rtlcss": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.6.2.tgz", - "integrity": "sha512-06LFAr+GAPo+BvaynsXRfoYTJvSaWRyOhURCQ7aeI1MKph9meM222F+Zkt3bDamyHHJuGi3VPtiRkpyswmQbGA==", - "dev": true, - "requires": { - "@choojs/findup": "^0.2.1", - "chalk": "^2.4.2", - "mkdirp": "^0.5.1", - "postcss": "^6.0.23", - "strip-json-comments": "^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 - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - } - } - }, - "postcss-safe-parser": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", - "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-selector-matches": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", - "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", - "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - } - }, - "postcss-selector-not": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", - "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", - "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - } - }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "requires": { - "is-svg": "^3.0.0", - "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==" - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.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==" - }, - "postcss-values-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", - "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "pretty-bytes": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", - "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==" - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.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==" - } - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, - "promise": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.3.tgz", - "integrity": "sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw==", - "requires": { - "asap": "~2.0.6" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" - }, - "prompts": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.1.tgz", - "integrity": "sha512-qIP2lQyCwYbdzcqHIUi2HAxiWixhoM9OdLCWf8txXsapC/X9YdsCoeyRIXE/GP+Q0J37Q7+XN/MFqbUa7IzXNA==", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.4" - } - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "property-expr": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", - "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==" - }, - "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==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "psl": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", - "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==" - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - }, - "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" - }, - "raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "requires": { - "performance-now": "^2.1.0" - } - }, - "ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "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==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - } - } - }, - "react": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.12.0.tgz", - "integrity": "sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-app-polyfill": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz", - "integrity": "sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g==", - "requires": { - "core-js": "^3.5.0", - "object-assign": "^4.1.1", - "promise": "^8.0.3", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.3", - "whatwg-fetch": "^3.0.0" - } - }, - "react-body-classname": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/react-body-classname/-/react-body-classname-1.3.1.tgz", - "integrity": "sha512-PxskbhmoV8kzIyspjiIc/smQkyyBOQHeUsrh1oj9CC5O1Kg/4gvHWPKsYGWEIq0X51TtCT941u/ulM1dTZ/bOw==", - "requires": { - "prop-types": "^15.5.6", - "react-side-effect": "^1.1.0 || ^2.1.0" - } - }, - "react-content-loader": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/react-content-loader/-/react-content-loader-6.0.1.tgz", - "integrity": "sha512-djJUgGNze7YdWzJA1kYO1eKXAMpP+Z4sMulmEuTVi6vEXzfuQCJs6yD8hhgWj23vvJPZL5b8NyabxteyF8Hq/g==" - }, - "react-day-picker": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-7.3.2.tgz", - "integrity": "sha512-mij2j2Un/v2V2ow+hf/hFBMdl6Eis/C/YhBtlI6Xpbvh3Q6WMix78zEkCdw6i9GldafOrpnupWKofv/h5oSI4g==", - "requires": { - "prop-types": "^15.6.2" - } - }, - "react-dev-utils": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.0.tgz", - "integrity": "sha512-MwrvQW2TFjLblhqpDNeqCXHBkz3G5vc7k4wntgutAJZX4ia3o07eGKo6uYGhUOeJ0hfOxcpJFNFk7+4XCc1S8g==", - "requires": { - "@babel/code-frame": "7.8.3", - "address": "1.1.2", - "browserslist": "4.8.6", - "chalk": "2.4.2", - "cross-spawn": "7.0.1", - "detect-port-alt": "1.1.6", - "escape-string-regexp": "2.0.0", - "filesize": "6.0.1", - "find-up": "4.1.0", - "fork-ts-checker-webpack-plugin": "3.1.1", - "global-modules": "2.0.0", - "globby": "8.0.2", - "gzip-size": "5.1.1", - "immer": "1.10.0", - "inquirer": "7.0.4", - "is-root": "2.1.0", - "loader-utils": "1.2.3", - "open": "^7.0.2", - "pkg-up": "3.1.0", - "react-error-overlay": "^6.0.6", - "recursive-readdir": "2.2.2", - "shell-quote": "1.7.2", - "strip-ansi": "6.0.0", - "text-table": "0.2.0" - }, - "dependencies": { - "browserslist": { - "version": "4.8.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.6.tgz", - "integrity": "sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==", - "requires": { - "caniuse-lite": "^1.0.30001023", - "electron-to-chromium": "^1.3.341", - "node-releases": "^1.1.47" - } - }, - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "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==", - "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==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "react-dom": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.12.0.tgz", - "integrity": "sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.18.0" - } - }, - "react-draggable": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-3.3.2.tgz", - "integrity": "sha512-oaz8a6enjbPtx5qb0oDWxtDNuybOylvto1QLydsXgKmwT7e3GXC2eMVDwEMIUYJIFqVG72XpOv673UuuAq6LhA==", - "requires": { - "classnames": "^2.2.5", - "prop-types": "^15.6.0" - } - }, - "react-dropzone": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.0.1.tgz", - "integrity": "sha512-x/6wqRHaR8jsrNiu/boVMIPYuoxb83Vyfv77hO7/3ZRn8Pr+KH5onsCsB8MLBa3zdJl410C5FXPUINbu16XIzw==", - "requires": { - "attr-accept": "^2.0.0", - "file-selector": "^0.1.12", - "prop-types": "^15.7.2" - } - }, - "react-error-boundary": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.0.2.tgz", - "integrity": "sha512-KVzCusRTFpUYG0OFJbzbdRuxNQOBiGXVCqyNpBXM9z5NFsFLzMjUXMjx8gTja6M6WH+D2PvP3yKz4d8gD1PRaA==", - "requires": { - "@babel/runtime": "^7.11.2" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - } - } - }, - "react-error-overlay": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.6.tgz", - "integrity": "sha512-Yzpno3enVzSrSCnnljmr4b/2KUQSMZaPuqmS26t9k4nW7uwJk6STWmH9heNjPuvqUTO3jOSPkHoKgO4+Dw7uIw==" - }, - "react-fast-compare": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", - "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" - }, - "react-hotkeys-hook": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-3.0.3.tgz", - "integrity": "sha512-kbnb820AUITXxK3qRHq612ivoNvMidIEaVAG7rUDuJMBTlJdSniJjjFl0jddL4iSKJK1d0Vqgn80uPW+spq6yQ==", - "requires": { - "hotkeys-js": "3.8.1" - } - }, - "react-intl-universal": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/react-intl-universal/-/react-intl-universal-2.4.7.tgz", - "integrity": "sha512-2uRqUw4MEIPn+4ivqlMjMqnmSEBO3pMuIw+3Sxy8DGC4nSzL39ZT2p9o/Vj8qpbw+cKb5nuDGMCHRXBBqqDTmw==", - "requires": { - "console-polyfill": "^0.3.0", - "cookie": "^0.3.1", - "escape-html": "^1.0.3", - "intl": "^1.2.5", - "intl-messageformat": "^7.8.4", - "invariant": "^2.2.2", - "lodash.merge": "^4.6.2", - "object-keys": "^1.0.11", - "querystring": "^0.2.0" - }, - "dependencies": { - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - } - } - }, - "react-is": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", - "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==" - }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "react-loadable": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz", - "integrity": "sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==", - "requires": { - "prop-types": "^15.5.0" - } - }, - "react-popper": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.7.tgz", - "integrity": "sha512-nmqYTx7QVjCm3WUZLeuOomna138R1luC4EqkW3hxJUrAe+3eNz3oFCLYdnPwILfn0mX1Ew2c3wctrjlUMYYUww==", - "requires": { - "@babel/runtime": "^7.1.2", - "create-react-context": "^0.3.0", - "deep-equal": "^1.1.1", - "popper.js": "^1.14.4", - "prop-types": "^15.6.1", - "typed-styles": "^0.0.7", - "warning": "^4.0.2" - } - }, - "react-query": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.6.0.tgz", - "integrity": "sha512-39ptLt4qaKO1DE+ta6SpPutweEgDvUQj/KlebC+okJ9Nxbs5ExxKV8RYlLeop6vdDFyiMmwYrt1POiF8oWGh1A==", - "requires": { - "@babel/runtime": "^7.5.5", - "match-sorter": "^6.0.2" - }, - "dependencies": { - "match-sorter": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.1.0.tgz", - "integrity": "sha512-sKPMf4kbF7Dm5Crx0bbfLpokK68PUJ/0STUIOPa1ZmTZEA3lCaPK3gapQR573oLmvdkTfGojzySkIwuq6Z6xRQ==", - "requires": { - "@babel/runtime": "^7.12.5", - "remove-accents": "0.4.2" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - } - } - }, - "react-query-devtools": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/react-query-devtools/-/react-query-devtools-2.1.1.tgz", - "integrity": "sha512-zbszioKYFvy77Y7WMjXBUQ0/JWgyISQR8qemvGUv1Qkd4V4+0DOty9IaHIQYN4HVZuBNX3dX/JwfJMkJMspBVg==", - "dev": true, - "requires": { - "match-sorter": "^4.1.0" - } - }, - "react-redux": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.1.3.tgz", - "integrity": "sha512-uI1wca+ECG9RoVkWQFF4jDMqmaw0/qnvaSvOoL/GA4dNxf6LoV8sUAcNDvE5NWKs4hFpn0t6wswNQnY3f7HT3w==", - "requires": { - "@babel/runtime": "^7.5.5", - "hoist-non-react-statics": "^3.3.0", - "invariant": "^2.2.4", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^16.9.0" - } - }, - "react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", - "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "requires": { - "isarray": "0.0.1" - } - } - } - }, - "react-router-breadcrumbs-hoc": { - "version": "3.2.10", - "resolved": "https://registry.npmjs.org/react-router-breadcrumbs-hoc/-/react-router-breadcrumbs-hoc-3.2.10.tgz", - "integrity": "sha512-bXCKkm1fJ81bctl9j9UOmjOWe66oc+D5/RnRpmEdooFRydoE+T5yu4gC8a3j0+17QVszzzNxGkzFl2Z2EE3u0A==" - }, - "react-router-dom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", - "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - } - }, - "react-scroll-sync": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/react-scroll-sync/-/react-scroll-sync-0.7.1.tgz", - "integrity": "sha512-8NH4yvcbEkmdwOk5BxmKxBHIUO89wGpqIS+2xMmxJ+XiFTbnBcrG+qU4lcRyS3wVnD3XwbuMo8zjN4FGp8xW0Q==" - }, - "react-scrollbars-custom": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/react-scrollbars-custom/-/react-scrollbars-custom-4.0.21.tgz", - "integrity": "sha512-EwIVXBYsZG91Wm90a8ajSjpclXMu3XehcSGz+QbnLDQbmc+Rj/Uj+gP9bgbhyvQTKlhfjoka77VEWu9/DxOwBg==", - "requires": { - "cnbuilder": "^1.1.7", - "react-draggable": "^3.3.2", - "zoom-level": "^1.2.4" - } - }, - "react-side-effect": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.0.tgz", - "integrity": "sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg==" - }, - "react-sortablejs": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/react-sortablejs/-/react-sortablejs-2.0.11.tgz", - "integrity": "sha512-Id44yygU6H/fNRp0uWkGZnKGuBF8GF/Ts6gKX5NfwmzceRjH0e0XHsmBuQ6WXhBIVnMM+XgkEPub851mdti0TA==", - "requires": { - "@types/sortablejs": "^1.10.0", - "classnames": "^2.2.6", - "sortablejs": "1.10.1", - "tiny-invariant": "^1.0.6" - }, - "dependencies": { - "sortablejs": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.1.tgz", - "integrity": "sha512-N6r7GrVmO8RW1rn0cTdvK3JR0BcqecAJ0PmYMCL3ZuqTH3pY+9QyqkmJSkkLyyDvd+AJnwaxTP22Ybr/83V9hQ==" - } - } - }, - "react-split-pane": { - "version": "0.1.91", - "resolved": "https://registry.npmjs.org/react-split-pane/-/react-split-pane-0.1.91.tgz", - "integrity": "sha512-8U56HOKQGFlvXXT1PaHbijjYy2W8g0iQaHC99Q2aV4yYfvUURcRGyfPKN3scGkbYN2pvy3qyoEwHyewUmR1VbQ==", - "requires": { - "prop-types": "^15.7.2", - "react-lifecycles-compat": "^3.0.4", - "react-style-proptype": "^3.2.2" - } - }, - "react-style-proptype": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/react-style-proptype/-/react-style-proptype-3.2.2.tgz", - "integrity": "sha512-ywYLSjNkxKHiZOqNlso9PZByNEY+FTyh3C+7uuziK0xFXu9xzdyfHwg4S9iyiRRoPCR4k2LqaBBsWVmSBwCWYQ==", - "requires": { - "prop-types": "^15.5.4" - } - }, - "react-table": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.6.3.tgz", - "integrity": "sha512-hfPF13zDLxPMpLKzIKCE8RZud9T/XrRTsaCIf8zXpWZIZ2juCl7qrGpo3AQw9eAetXV5DP7s2GDm+hht7qq5Dw==" - }, - "react-table-sticky": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-table-sticky/-/react-table-sticky-1.1.2.tgz", - "integrity": "sha512-XnVB4Yf6r8L10YC0Ccu2GrY57IxVWofy19m7s8+q5xzZOudYvyADXsBj6+EenHOvBWTYSviLe8RfaLFIp1lC9w==" - }, - "react-transition-group": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", - "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, - "react-universal-interface": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.0.tgz", - "integrity": "sha512-PzApKKWfd7gvDi1sU/D07jUqnLvFxYqvJi+GEtLvBO5tXJjKr2Sa8ETVHkMA7Jcvdwt7ttbPq7Sed1JpFdNqBQ==", - "requires": { - "tslib": "^1.9.3" - } - }, - "react-use": { - "version": "13.26.1", - "resolved": "https://registry.npmjs.org/react-use/-/react-use-13.26.1.tgz", - "integrity": "sha512-hDc4s8w4WI8G7c1BX+IsrdQFcZPfCHE/6oLpGPtcIPoxVhwj4QvVmNE8RnsnddBJ57HN8Xvkc3jp/8Z/4OB53w==", - "requires": { - "@types/js-cookie": "2.2.4", - "@xobotyi/scrollbar-width": "1.9.0", - "copy-to-clipboard": "^3.2.0", - "fast-deep-equal": "^3.1.1", - "fast-shallow-equal": "^1.0.0", - "js-cookie": "^2.2.1", - "nano-css": "^5.2.1", - "resize-observer-polyfill": "^1.5.1", - "screenfull": "^5.0.0", - "set-harmonic-interval": "^1.0.1", - "throttle-debounce": "^2.1.0", - "ts-easing": "^0.2.0", - "tslib": "^1.10.0" - } - }, - "react-use-context-menu": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/react-use-context-menu/-/react-use-context-menu-0.1.4.tgz", - "integrity": "sha512-3/IC2CTUErMrtcv1IU1Nt9NL2J4YHBiiSBV66wGdPsZzeFK4qhUwQmLg8hUk58Pi5oa8ts3+M3kVKl10HW4o4w==" - }, - "react-virtualized": { - "version": "9.22.3", - "resolved": "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.22.3.tgz", - "integrity": "sha512-MKovKMxWTcwPSxE1kK1HcheQTWfuCxAuBoSTf2gwyMM21NdX/PXUhnoP8Uc5dRKd+nKm8v41R36OellhdCpkrw==", - "requires": { - "@babel/runtime": "^7.7.2", - "clsx": "^1.0.4", - "dom-helpers": "^5.1.3", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-lifecycles-compat": "^3.0.4" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } - }, - "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==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", - "requires": { - "picomatch": "^2.0.7" - } - }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "requires": { - "util.promisify": "^1.0.0" - } - }, - "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "requires": { - "minimatch": "3.0.4" - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "redux": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", - "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", - "requires": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" - } - }, - "redux-cookies-middleware": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/redux-cookies-middleware/-/redux-cookies-middleware-0.2.1.tgz", - "integrity": "sha512-0tWO8Qz0xLoWeti04oAUQvliDNaLpJSEwHkRPBOQT89EVjE17dTRpaXKGkKbHkab37+3n6Nm9IWID7DoTubWLA==", - "requires": { - "js-cookie": "^2.1.4", - "lodash": "^4.17.15" - } - }, - "redux-devtools": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/redux-devtools/-/redux-devtools-3.5.0.tgz", - "integrity": "sha512-pGU8TZNvWxPaCCE432AGm6H6alQbAz80gQM5CzM3SjX9/oSNu/HPF17xFdPQJOXasqyih1Gv167kZDTRe7r0iQ==", - "dev": true, - "requires": { - "lodash": "^4.2.0", - "prop-types": "^15.5.7", - "redux-devtools-instrument": "^1.9.0" - } - }, - "redux-devtools-extension": { - "version": "2.13.8", - "resolved": "https://registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.8.tgz", - "integrity": "sha512-8qlpooP2QqPtZHQZRhx3x3OP5skEV1py/zUdMY28WNAocbafxdG2tRD1MWE7sp8obGMNYuLWanhhQ7EQvT1FBg==" - }, - "redux-devtools-instrument": { - "version": "1.9.6", - "resolved": "https://registry.npmjs.org/redux-devtools-instrument/-/redux-devtools-instrument-1.9.6.tgz", - "integrity": "sha512-MwvY4cLEB2tIfWWBzrUR02UM9qRG2i7daNzywRvabOSVdvAY7s9BxSwMmVRH1Y/7QWjplNtOwgT0apKhHg2Qew==", - "dev": true, - "requires": { - "lodash": "^4.2.0", - "symbol-observable": "^1.0.2" - } - }, - "redux-immutable-state-invariant": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/redux-immutable-state-invariant/-/redux-immutable-state-invariant-2.1.0.tgz", - "integrity": "sha512-3czbDKs35FwiBRsx/3KabUk5zSOoTXC+cgVofGkpBNv3jQcqIe5JrHcF5AmVt7B/4hyJ8MijBIpCJ8cife6yJg==", - "requires": { - "invariant": "^2.1.0", - "json-stringify-safe": "^5.0.1" - } - }, - "redux-persist": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", - "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==" - }, - "redux-thunk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", - "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==" - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" - }, - "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==", - "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==" - }, - "regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", - "requires": { - "private": "^0.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regex-parser": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", - "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==" - }, - "regexp.prototype.flags": { - "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==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "regexpp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", - "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==" - }, - "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", - "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.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" - }, - "regjsparser": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz", - "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==", - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" - }, - "remove-accents": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", - "integrity": "sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U=" - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", - "requires": { - "css-select": "^1.1.0", - "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "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==" - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", - "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", - "requires": { - "lodash": "^4.17.15" - } - }, - "request-promise-native": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", - "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", - "requires": { - "request-promise-core": "1.1.3", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "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==" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "reselect": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", - "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" - }, - "resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - }, - "resolve": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", - "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - }, - "resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "resolve-url-loader": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", - "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", - "requires": { - "adjust-sourcemap-loader": "2.0.0", - "camelcase": "5.3.1", - "compose-function": "3.0.3", - "convert-source-map": "1.7.0", - "es6-iterator": "2.0.3", - "loader-utils": "1.2.3", - "postcss": "7.0.21", - "rework": "1.0.1", - "rework-visit": "1.0.0", - "source-map": "0.6.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", - "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==" - }, - "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==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" - }, - "rework": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", - "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", - "requires": { - "convert-source-map": "^0.3.3", - "css": "^2.0.0" - }, - "dependencies": { - "convert-source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", - "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" - } - } - }, - "rework-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", - "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" - }, - "rtl-css-js": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.14.0.tgz", - "integrity": "sha512-Dl5xDTeN3e7scU1cWX8c9b6/Nqz3u/HgR4gePc1kWXYiQWVQbKCEyK6+Hxve9LbcJ5EieHy1J9nJCN3grTtGwg==", - "requires": { - "@babel/runtime": "^7.1.2" - } - }, - "rtl-detect": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.3.tgz", - "integrity": "sha512-2sMcZO60tL9YDEFe24gqddg3hJ+xSmJFN8IExcQUxeHxQzydQrN6GHPL+yAWgzItXSI7es53hcZC9pJneuZDKA==" - }, - "rtlcss": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.5.0.tgz", - "integrity": "sha512-NCVdF45w70/3CQeqVvQ84bu2HN8agNn+CDjw+RxXaiWb7mPOmEvltdd1z4qzm9kin4Jnu9ShFBIx28yvWerZ2g==", - "requires": { - "chalk": "^2.4.2", - "findup": "^0.1.5", - "mkdirp": "^0.5.1", - "postcss": "^6.0.23", - "strip-json-comments": "^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==", - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "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==" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - } - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - } - }, - "sanitize.css": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", - "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" - }, - "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", - "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "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==" - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "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=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "^1.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "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=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "requires": { - "camelcase": "^3.0.0" - } - } - } - }, - "sass-loader": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", - "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", - "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.2.3", - "neo-async": "^2.6.1", - "schema-utils": "^2.6.1", - "semver": "^6.3.0" - }, - "dependencies": { - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "requires": { - "kind-of": "^6.0.2" - } - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "requires": { - "xmlchars": "^2.1.1" - } - }, - "scheduler": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz", - "integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", - "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - } - }, - "screenfull": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.0.2.tgz", - "integrity": "sha512-cCF2b+L/mnEiORLN5xSAz6H3t18i2oHh9BA8+CQlAh5DRw2+NFAGQJOSYbcGw8B2k04g/lVvFcfZ83b3ysH5UQ==" - }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" - }, - "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", - "requires": { - "node-forge": "0.9.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "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==", - "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=" - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "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==" - } - } - }, - "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - } - } - }, - "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==", - "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", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-harmonic-interval": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz", - "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==" - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^2.0.1", - "lazy-cache": "^0.2.3", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "requires": { - "is-buffer": "^1.0.2" - } - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "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==" - } - } - }, - "sisteransi": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz", - "integrity": "sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==" - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "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=" - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - } - }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" - } - }, - "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "requires": { - "websocket-driver": ">=0.5.1" - } - } - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "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==", - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "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==" - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" - }, - "spdy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", - "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", - "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "stack-generator": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.5.tgz", - "integrity": "sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q==", - "requires": { - "stackframe": "^1.1.1" - } - }, - "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" - }, - "stackframe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz", - "integrity": "sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ==" - }, - "stacktrace-gps": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.0.4.tgz", - "integrity": "sha512-qIr8x41yZVSldqdqe6jciXEaSCKw1U8XTXpjDuy0ki/apyTn/r3w9hDAAQOhZdxvsC93H+WwwEu5cq5VemzYeg==", - "requires": { - "source-map": "0.5.6", - "stackframe": "^1.1.1" - }, - "dependencies": { - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" - } - } - }, - "stacktrace-js": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz", - "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==", - "requires": { - "error-stack-parser": "^2.0.6", - "stack-generator": "^2.0.5", - "stacktrace-gps": "^3.0.4" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "requires": { - "readable-stream": "^2.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "requires": { - "astral-regex": "^1.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=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "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==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" - } - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "dependencies": { - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - } - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.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==" - } - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-comments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", - "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", - "requires": { - "babel-extract-comments": "^1.0.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==" - }, - "style-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", - "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "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==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "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==", - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "stylis": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.0.tgz", - "integrity": "sha512-pP7yXN6dwMzAR29Q0mBrabPCe0/mNO1MSr93bhay+hcZondvMMTpeGyd8nbhYJdyperNT2DRxONQuUGcJr5iPw==" - }, - "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" - } - }, - "svg-parser": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.3.tgz", - "integrity": "sha512-fnCWiifNhK8i2Z7b9R5tbNahpxrRdAaQbnoxKlT2KrSCj9Kq/yBSgulCRgBJRhy1dPnSY5slg5ehPUnzpEcHlg==" - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "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.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - }, - "synchronous-promise": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.10.tgz", - "integrity": "sha512-6PC+JRGmNjiG3kJ56ZMNWDPL8hjyghF5cMXIFOKg+NiwwEZZIvxTWd0pinWKyD227odg9ygF8xVhhz7gb8Uq7A==" - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "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=" - }, - "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==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, - "terser": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz", - "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "terser-webpack-plugin": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.4.tgz", - "integrity": "sha512-Nv96Nws2R2nrFOpbzF6IxRDpIkkIfmhvOws+IqMvYdFLO7o6wAILWFKONFgaYy8+T4LVz77DQW0f7wOeDEAjrg==", - "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.2.0", - "jest-worker": "^25.1.0", - "p-limit": "^2.2.2", - "schema-utils": "^2.6.4", - "serialize-javascript": "^2.1.2", - "source-map": "^0.6.1", - "terser": "^4.4.3", - "webpack-sources": "^1.4.3" - }, - "dependencies": { - "find-cache-dir": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", - "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.0", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "jest-worker": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", - "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", - "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==", - "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==" - }, - "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==", - "requires": { - "find-up": "^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==" - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", - "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" - }, - "throttle-debounce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.1.0.tgz", - "integrity": "sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg==" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - }, - "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==", - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" - }, - "tiny-invariant": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", - "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" - }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "requires": { - "glob": "^7.1.2" - } - }, - "ts-easing": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz", - "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==" - }, - "ts-pnp": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.5.tgz", - "integrity": "sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA==" - }, - "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "requires": { - "tslib": "^1.8.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-styles": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", - "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "typescript": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", - "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "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==" - }, - "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==" - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" - }, - "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==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "url-loader": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", - "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", - "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" - } - }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "wait-for-expect": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz", - "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==" - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "requires": { - "makeerror": "1.0.x" - } - }, - "warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "dependencies": { - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fsevents": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", - "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": false, - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "optional": true - }, - "aproba": { - "version": "1.2.0", - "resolved": false, - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": false, - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": false, - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.3", - "resolved": false, - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": false, - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": false, - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": false, - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true - }, - "debug": { - "version": "3.2.6", - "resolved": false, - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": false, - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "optional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": false, - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": false, - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "optional": true - }, - "gauge": { - "version": "2.7.4", - "resolved": false, - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "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.6", - "resolved": false, - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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=", - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": false, - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "resolved": false, - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": false, - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": false, - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "optional": true - }, - "ini": { - "version": "1.3.5", - "resolved": false, - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": false, - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": false, - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "optional": true - }, - "minipass": { - "version": "2.9.0", - "resolved": false, - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": false, - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": false, - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.2", - "resolved": false, - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "optional": true - }, - "needle": { - "version": "2.4.0", - "resolved": false, - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "resolved": false, - "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", - "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.4.2" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": false, - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": false, - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "optional": true - }, - "npm-packlist": { - "version": "1.4.7", - "resolved": false, - "integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==", - "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==", - "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=", - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": false, - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": false, - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "optional": true - }, - "osenv": { - "version": "0.1.5", - "resolved": false, - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "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=", - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": false, - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "optional": true - }, - "rc": { - "version": "1.2.8", - "resolved": false, - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "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=", - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": false, - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "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.7.1", - "resolved": false, - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": false, - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": false, - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "optional": true - }, - "sax": { - "version": "1.2.4", - "resolved": false, - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "optional": true - }, - "semver": { - "version": "5.7.1", - "resolved": false, - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": false, - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": false, - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "optional": true - }, - "string-width": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "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==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": false, - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": false, - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "optional": true - }, - "tar": { - "version": "4.4.13", - "resolved": false, - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": false, - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "optional": true - }, - "yallist": { - "version": "3.1.1", - "resolved": false, - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "optional": true - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "webpack": { - "version": "4.41.5", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.5.tgz", - "integrity": "sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw==", - "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", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.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", - "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.3", - "watchpack": "^1.6.0", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" - }, - "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", - "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" - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "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==", - "requires": { - "ajv": "^6.1.0", - "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==" - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - } - } - } - }, - "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, - "webpack-dev-server": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.2.tgz", - "integrity": "sha512-pxZKPYb+n77UN8u9YxXT4IaIrGcNtijh/mi8TXbErHmczw0DtPnMTTjHj+eNjkqLOaAZM/qD7V59j/qJsEiaZA==", - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.2.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.6", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.25", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.4.0", - "spdy": "^4.0.1", - "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" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^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=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "fsevents": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", - "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": false, - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "optional": true - }, - "aproba": { - "version": "1.2.0", - "resolved": false, - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": false, - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": false, - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.3", - "resolved": false, - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": false, - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": false, - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": false, - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true - }, - "debug": { - "version": "3.2.6", - "resolved": false, - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": false, - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "optional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": false, - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": false, - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "optional": true - }, - "gauge": { - "version": "2.7.4", - "resolved": false, - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "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.6", - "resolved": false, - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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=", - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": false, - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "resolved": false, - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": false, - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": false, - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "optional": true - }, - "ini": { - "version": "1.3.5", - "resolved": false, - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": false, - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": false, - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "optional": true - }, - "minipass": { - "version": "2.9.0", - "resolved": false, - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": false, - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": false, - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.2", - "resolved": false, - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "optional": true - }, - "needle": { - "version": "2.4.0", - "resolved": false, - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "resolved": false, - "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", - "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.4.2" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": false, - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": false, - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "optional": true - }, - "npm-packlist": { - "version": "1.4.7", - "resolved": false, - "integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==", - "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==", - "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=", - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": false, - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": false, - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "optional": true - }, - "osenv": { - "version": "0.1.5", - "resolved": false, - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "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=", - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": false, - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "optional": true - }, - "rc": { - "version": "1.2.8", - "resolved": false, - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "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=", - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": false, - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "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.7.1", - "resolved": false, - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": false, - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": false, - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "optional": true - }, - "sax": { - "version": "1.2.4", - "resolved": false, - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "optional": true - }, - "semver": { - "version": "5.7.1", - "resolved": false, - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": false, - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": false, - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "optional": true - }, - "string-width": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "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==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": false, - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": false, - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "optional": true - }, - "tar": { - "version": "4.4.13", - "resolved": false, - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": false, - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "optional": true - }, - "yallist": { - "version": "3.1.1", - "resolved": false, - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "optional": 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==" - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, - "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==" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "^1.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=" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "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=" - }, - "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==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "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=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.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==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "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=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "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==", - "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==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-manifest-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", - "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", - "requires": { - "fs-extra": "^7.0.0", - "lodash": ">=3.5 <5", - "object.entries": "^1.1.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "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==" - } - } - }, - "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", - "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==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", - "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "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=" - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "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=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "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=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - }, - "workbox-background-sync": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", - "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-broadcast-update": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", - "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-build": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", - "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", - "requires": { - "@babel/runtime": "^7.3.4", - "@hapi/joi": "^15.0.0", - "common-tags": "^1.8.0", - "fs-extra": "^4.0.2", - "glob": "^7.1.3", - "lodash.template": "^4.4.0", - "pretty-bytes": "^5.1.0", - "stringify-object": "^3.3.0", - "strip-comments": "^1.0.2", - "workbox-background-sync": "^4.3.1", - "workbox-broadcast-update": "^4.3.1", - "workbox-cacheable-response": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-expiration": "^4.3.1", - "workbox-google-analytics": "^4.3.1", - "workbox-navigation-preload": "^4.3.1", - "workbox-precaching": "^4.3.1", - "workbox-range-requests": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1", - "workbox-streams": "^4.3.1", - "workbox-sw": "^4.3.1", - "workbox-window": "^4.3.1" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "workbox-cacheable-response": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", - "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-core": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", - "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==" - }, - "workbox-expiration": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", - "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-google-analytics": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", - "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", - "requires": { - "workbox-background-sync": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1" - } - }, - "workbox-navigation-preload": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", - "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-precaching": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", - "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-range-requests": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", - "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-routing": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", - "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-strategies": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", - "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-streams": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", - "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-sw": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", - "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==" - }, - "workbox-webpack-plugin": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz", - "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==", - "requires": { - "@babel/runtime": "^7.0.0", - "json-stable-stringify": "^1.0.1", - "workbox-build": "^4.3.1" - } - }, - "workbox-window": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", - "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "requires": { - "errno": "~0.1.7" - } - }, - "worker-rpc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", - "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", - "requires": { - "microevent.ts": "~0.1.1" - } - }, - "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==", - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "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=" - }, - "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==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "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==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", - "integrity": "sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==", - "requires": { - "@babel/runtime": "^7.6.3" - } - }, - "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.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": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "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=" - }, - "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==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.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==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yup": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/yup/-/yup-0.28.1.tgz", - "integrity": "sha512-xSHMZA7UyecSG/CCTDCtnYZMjBrYDR/C7hu0fMsZ6UcS/ngko4qCVFbw+CAmNtHlbItKkvQ3YXITODeTj/dUkw==", - "requires": { - "@babel/runtime": "^7.0.0", - "fn-name": "~2.0.1", - "lodash": "^4.17.11", - "lodash-es": "^4.17.11", - "property-expr": "^1.5.0", - "synchronous-promise": "^2.0.6", - "toposort": "^2.0.2" - } - }, - "zoom-level": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/zoom-level/-/zoom-level-1.2.4.tgz", - "integrity": "sha512-nGFUhyU3Y4jWh6l+hYCVVUxu3vrD0i/RkumJRzYGU0COMWMs2Szs84mltacd64R9zJcxwKckWQN/KKbfB1btVA==" - } - } -} diff --git a/client/config/env.js b/config/env.js similarity index 100% rename from client/config/env.js rename to config/env.js diff --git a/client/config/getHttpsConfig.js b/config/getHttpsConfig.js similarity index 100% rename from client/config/getHttpsConfig.js rename to config/getHttpsConfig.js diff --git a/client/config/jest/cssTransform.js b/config/jest/cssTransform.js similarity index 100% rename from client/config/jest/cssTransform.js rename to config/jest/cssTransform.js diff --git a/client/config/jest/fileTransform.js b/config/jest/fileTransform.js similarity index 100% rename from client/config/jest/fileTransform.js rename to config/jest/fileTransform.js diff --git a/client/config/modules.js b/config/modules.js similarity index 100% rename from client/config/modules.js rename to config/modules.js diff --git a/client/config/paths.js b/config/paths.js similarity index 100% rename from client/config/paths.js rename to config/paths.js diff --git a/client/config/pnpTs.js b/config/pnpTs.js similarity index 100% rename from client/config/pnpTs.js rename to config/pnpTs.js diff --git a/client/config/webpack.config.js b/config/webpack.config.js similarity index 100% rename from client/config/webpack.config.js rename to config/webpack.config.js diff --git a/client/config/webpackDevServer.config.js b/config/webpackDevServer.config.js similarity index 100% rename from client/config/webpackDevServer.config.js rename to config/webpackDevServer.config.js diff --git a/docker/.gitignore b/docker/.gitignore deleted file mode 100644 index b1fa53357..000000000 --- a/docker/.gitignore +++ /dev/null @@ -1,41 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules -jspm_packages - -# Optional npm cache directory -.npm - -# Optional REPL history -.node_repl_history - -# Project Specific -data -./docker-compose.override.yml diff --git a/docker/LICENSE b/docker/LICENSE deleted file mode 100644 index 13fc9d7bf..000000000 --- a/docker/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 Osedea - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/docker/README.md b/docker/README.md deleted file mode 100644 index a0702a20f..000000000 --- a/docker/README.md +++ /dev/null @@ -1,385 +0,0 @@ -![NoDock](https://raw.githubusercontent.com/Osedea/nodock/master/docs/images/logo.png) - -Docker Compose for Node projects with Node, MySQL, MongoDB, NGINX, Memcached, Redis, Certbot and RabbitMQ images - -![Node + Docker](https://raw.githubusercontent.com/Osedea/nodock/master/docs/images/nodock.jpg) - - -## Why NoDock? - -The [docker Node.js](https://github.com/nodejs/docker-node) image is very simple, you give it an entrypoint and it runs it. This is fine for very simple/small scripts but for larger projects you'll probably want something a bit more robust. - -The goal of NoDock is to provide a complete environment for your node project: Node.js service(s), databases, web servers, queues, etc. while doing the "wiring" for you. - -You can use NoDock for simple projects by using one of the [examples](#Examples) or you can build upon them. - -## Contents - -- [Requirements](#Requirements) -- [Installation](#Installation) -- [Usage](#Usage) -- [Examples](#Examples) -- [Workspace](#Workspace) -- [HTTPS](#HTTPS) - - [Self-signed certificates](#SelfSigned) - - [Certbot](#Certbot) -- [Non-web project](#Non-Web) -- [Multiple Node containers](#Multi-Node) -- [More options](#More-Options) - - [Use Yarn](#Use-Yarn) - - [Change Node entrypoint](#Node-Entrypoint) - - [Change Node environment](#Node-Environment) - - [Change Node version](#Node-Version) - - [Change Node project location](#Node-Project-Path) - - [Change MySQL database/user/password](#MySQL-Database-User) - - [Change PostgreSQL database/user/password](#PostgreSQL-Database-User) - - [Change NGINX reverse proxy port](#NGINX-Reverse-Proxy-Port) - - [Change the timezone](#Change-the-timezone) - - [Use RabbitMQ plugins](#Use-RabbitMQ-plugins) - - [Change the RabbitMQ user/password](#Change-RabbitMQ-User) - - [Modify Redis config](#Modify-Redis-Config) -- [Contributing](#Contributing) -- [License](#License) -- [Credits](#credits) - - -## Requirements - -* [Docker Engine 17.06+](https://docs.docker.com/engine/installation/) -* [Docker Compose 1.8+](https://docs.docker.com/compose/install/) - - -## Installation -As a git submodule: -```bash -git submodule add https://github.com/Osedea/nodock.git -``` - -Clone into your project: -```bash -git clone https://github.com/Osedea/nodock.git -``` - -We recommend you [fork this repository](https://github.com/Osedea/nodock#fork-destination-box) if you intend to add project specific scripts/configurations. - - -## Usage -```bash -cd nodock -# Run "node" and "nginx" -docker-compose up -d node nginx -``` - -To overwrite the `docker-compose.yml` file you can use a `docker-compose.override.yml` - -```yaml -# docker-compose.override.yml - -version: '3' - -services: - [...] -``` - -## Examples -We provide examples of configurations you might use for a specific stack. Each example has it's own README file with instructions. - -* [Simple Web with Apache](https://github.com/Osedea/nodock/tree/master/_examples/apache) - Node + Apache -* [Simple Web with Nginx](https://github.com/Osedea/nodock/tree/master/_examples/nginx) - Node + NGINX -* [MySQL](https://github.com/Osedea/nodock/tree/master/_examples/mysql) - MySQL + Node + NGINX -* [PostgreSQL](https://github.com/Osedea/nodock/tree/master/_examples/postgresql) - PostgreSQL + Node + NGINX -* [Mongo](https://github.com/Osedea/nodock/tree/master/_examples/mongo) - MongoDB + Node + NGINX -* [RabbitMQ](https://github.com/Osedea/nodock/tree/master/_examples/rabbitmq) - RabbitMQ + Node + NGINX -* [Memcached](https://github.com/Osedea/nodock/tree/master/_examples/memcached) - Memcached + Node + NGINX -* [Redis](https://github.com/Osedea/nodock/tree/master/_examples/redis) - Redis + Node + NGINX -* [RethinkDB](https://github.com/Osedea/nodock/tree/master/_examples/rethinkdb) - RethinkDB + Node + NGINX -* [2 Node Apps](https://github.com/Osedea/nodock/tree/master/_examples/2-nodes) - Node + Node + NGINX - - -## Workspace -The `workspace` container is where you want to be manually running commands for `NoDock`. You can use this container to initialize your project, for task-automation, for [cronjobs](#Cronjobs), etc. - - -## Using HTTPS -By default HTTPS is disabled. To enable it, you may use the following settings - -```yaml -# docker-compose.override.yml -[...] - nginx: - build: - args: - - WEB_SSL=true -``` -Add your certificate to `nginx/certs/cacert.pem` and the private key to `nginx/certs/privkey.pem`. - -#### Generate and use a self-signed cert -`SELF_SIGNED: "true"` will generate the necessary files, do note that `SELF_SIGNED: "true"` as no effect if `WEB_SSL: "false"` - -```yaml -# docker-compose.override.yml -[...] - nginx: - build: - args: - - WEB_SSL=true - - SELF_SIGNED=true -``` - -#### Use Certbot (Let's Encrypt) to generate the cert -`CN` must be a publicly accessible address and `EMAIL` should be the server admin contact email. - -```yaml -# docker-compose.override.yml -[...] - nginx: - build: - args: - - WEB_SSL=true - certbot: - environment: - - CN=example.com - - EMAIL=fake@gmail.com -``` -Don't forget to bring up the container if you plan on using certbot (`docker-compose up -d certbot`). - -## Running a single non-web container -The default NGINX server block configuration is aimed at web projects but if you want to have a single non-web container you can do something similar to the following configuration. - -```yaml -# docker-compose.override.yml -[...] - nginx: - build: - args: - -NO_DEFAULT=true - ports: - - "10000:10000" -``` - -Do note that using `NO_DEFAULT` makes `WEB_REVERSE_PROXY_PORT`, `WEB_SSL` and `SELF_SIGNED` have no effect. - -You will then have to provide your own NGINX server block like so - -``` -# nginx/sites/custom-node.conf - -server { - listen 10000 default_server; - - location / { - proxy_pass http://node:5000; - } -} -``` - -## Running multiple node containers -To add more node containers, simply add the following to your `docker-compose.override.yml` or environment specific docker-compose file. - -```yaml -# docker-compose.override.yml -[...] - node2: # name of new container - build: # reuse the same values from the node service, cannot use extends in docker-compose 3+ - context: ./node - args: - - NODE_VERSION=latest - - PROJECT_PATH=/opt/app/ - - NODE_ENV=production - - YARN=false - volumes: - - ../:/opt/app - entrypoint: run-nodock "node alternate.js" # the entrypoint for the "node2" container - nginx: - ports: - - "10000:10000" # the port(s) to forward for the "node2" container - links: - - node2 # link "nginx" to "node2" -``` - -You'll also need to add a server block for "node2". -``` -# nginx/sites/node2.conf - -server { - listen 10000 default_server; - - location / { - proxy_pass http://node2:8000; - } -} -``` - - -## Cronjobs -You can run cronjobs in the [Workspace](#Workspace) by storing them in the `workspace/crontab/root` file. -``` -# workspace/crontab/root - -* * * * * echo "Every Minute" >> /var/log/cron.log -``` - - -## More Options -To customize the NoDock installation, either add a `docker-compose.override.yml` in the NoDock directory or store environment specific configurations. - -```bash -docker-compose -f nodock/docker-compose.yml -f docker-compose.dev.yml up -d -``` - -#### Use Yarn -Set the `YARN` argument to `true`. -```yaml -# docker-compose.override.yml -[...] - node: - build: - args: - - YARN=true -``` - -#### Change the node entrypoint -Use `main.js` instead of `index.js` -```yaml -# docker-compose.override.yml -[...] - node: - entrypoint: run-nodock "node main.js" -``` - -#### Change the Node Environment -The default `NODE_ENV` value is `production`, you can change it to development by doing the following -```yaml -# docker-compose.override.yml -[...] - node: - build: - args: - - NODE_ENV=development -``` - -#### Use a specific Node version -The default node version is `latest`, this is **NOT** advisable for production -```yaml -# docker-compose.override.yml -[...] - node: - build: - args: - - NODE_VERSION=4.6.0 -``` - -#### Change the Node project path -You can specify a `PROJECT_PATH` to change the directory in which `npm` will perform it's `install` command and the directory in which `run-nodock` will run the entrypoint script. This is most desirable when running more than one Node project at a time since they are bound to each have their own `package.json` file. -```yaml -# docker-compose.override.yml -[...] - node: - build: - args: - PROJECT_PATH: somefolder # note that this is the same as "/opt/app/somefolder" - -``` - -#### Change the MySQL database/user/password -```yaml -# docker-compose.override.yml -[...] - mysql: - build: - args: - - MYSQL_DATABASE=default_database - - MYSQL_USER=default_user - - MYSQL_PASSWORD=secret -``` - -#### Change the PostgreSQL database/user/password -```yaml -# docker-compose.override.yml -[...] - postgresql: - build: - args: - - POSTGRES_DB=default_db - - POSTGRES_USER=default_user - - POSTGRES_PASSWORD=secret -``` - - - - -#### Change the NGINX reverse proxy port -Use port `8080` instead of `8000` to bind your Node server -```yaml -# docker-compose.override.yml -[...] - nginx: - build: - args: - - WEB_REVERSE_PROXY_PORT=8080 -``` - -#### Change the timezone - -To change the timezone for the `workspace` container, modify the `TZ` build argument in the Docker Compose file to one in the [TZ database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). - -For example, if I want the timezone to be `New York`: -```yaml -# docker-compose.override.yml -[...] - workspace: - build: - context: ./workspace - args: - - TZ="America/New_York" -``` - -#### Use RabbitMQ plugins -At the moment, NoDock supports 2 plugins: [Management](https://www.rabbitmq.com/management.html) and [Federation](https://www.rabbitmq.com/federation.html). - -To activate them, change their values to `true` in your docker-compose file: -```yaml -# docker-compose.override.yml -[...] - rabbitmq: - build: - args: - - MANAGEMENT=true - - FEDERATION=true -``` - -#### Change the RabbitMQ user/password -```yaml -# docker-compose.override.yml -[...] - rabbitmq: - build: - args: - - RABBITMQ_DEFAULT_USER=custom_user - - RABBITMQ_DEFAULT_PASS=custom_pass -``` - -#### Modify the Redis config -You can edit `redis/redis.conf` to modify the redis config. - - -## Contributing -Do not hesitate to contribute to NoDock by creating an issue, fixing a bug or bringing a new idea to the table. - -To fix a bug or introduce a new feature, please create a PR, we will merge it in to the `master` branch after review. - -We thank you in advance for contributing. - -## License -[MIT License](https://github.com/laradock/laradock/blob/master/LICENSE) (MIT) - -## Credits -NoDock uses Open Source components. You can find the source code of their open source projects along with license information below. We acknowledge and are grateful to these developers for their contributions to open source. - -Project: LaraDock https://github.com/LaraDock/laradock
-Copyright (c) 2016 Mahmoud Zalt (mahmoud@zalt.me)
-License (MIT) https://github.com/LaraDock/laradock/blob/master/LICENSE
- -Project: baseimage-docker https://github.com/phusion/baseimage-docker
-Copyright (c) 2013-2015 Phusion Holding B.V.
-License (MIT) https://github.com/phusion/baseimage-docker/blob/master/LICENSE.txt
diff --git a/docker/apache/Dockerfile b/docker/apache/Dockerfile deleted file mode 100644 index d1d19979a..000000000 --- a/docker/apache/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -FROM httpd:2.4 - -# openssl not installed in image -RUN apt-get update && apt-get install openssl - -RUN mkdir /usr/local/apache2/templates \ - && mkdir /usr/local/apache2/sites-available \ - && rm /usr/local/apache2/conf/httpd.conf \ - && rm /usr/local/apache2/conf/extra/*.conf - -COPY httpd.conf /usr/local/apache2/conf/httpd.conf - -COPY scripts /root/scripts/ -COPY certs /etc/ssl/ - -COPY sites /usr/local/apache2/templates - -ARG WEB_REVERSE_PROXY_PORT=8000 -ARG WEB_SSL=false -ARG SELF_SIGNED=false -ARG NO_DEFAULT=false - -ENV WEB_REVERSE_PROXY_PORT=$WEB_REVERSE_PROXY_PORT -ENV WEB_SSL=$WEB_SSL -ENV SELF_SIGNED=$SELF_SIGNED -ENV NO_DEFAULT=$NO_DEFAULT - -RUN /bin/bash /root/scripts/build-apache.sh - -CMD ["apachectl", "-D", "FOREGROUND"] diff --git a/docker/apache/certs/.gitkeep b/docker/apache/certs/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/apache/httpd.conf b/docker/apache/httpd.conf deleted file mode 100644 index fe0f4b232..000000000 --- a/docker/apache/httpd.conf +++ /dev/null @@ -1,100 +0,0 @@ -ServerRoot "/usr/local/apache2" - -LoadModule mpm_event_module modules/mod_mpm_event.so -LoadModule authn_file_module modules/mod_authn_file.so -LoadModule authn_core_module modules/mod_authn_core.so -LoadModule authz_host_module modules/mod_authz_host.so -LoadModule authz_groupfile_module modules/mod_authz_groupfile.so -LoadModule authz_user_module modules/mod_authz_user.so -LoadModule authz_core_module modules/mod_authz_core.so -LoadModule access_compat_module modules/mod_access_compat.so -LoadModule auth_basic_module modules/mod_auth_basic.so -LoadModule reqtimeout_module modules/mod_reqtimeout.so -LoadModule filter_module modules/mod_filter.so -LoadModule mime_module modules/mod_mime.so -LoadModule log_config_module modules/mod_log_config.so -LoadModule env_module modules/mod_env.so -LoadModule headers_module modules/mod_headers.so -LoadModule setenvif_module modules/mod_setenvif.so -LoadModule version_module modules/mod_version.so -LoadModule proxy_module modules/mod_proxy.so -LoadModule proxy_http_module modules/mod_proxy_http.so -LoadModule ssl_module modules/mod_ssl.so -LoadModule unixd_module modules/mod_unixd.so -LoadModule status_module modules/mod_status.so -LoadModule autoindex_module modules/mod_autoindex.so -LoadModule dir_module modules/mod_dir.so -LoadModule alias_module modules/mod_alias.so - - -User www-data -Group www-data - - -ServerAdmin you@example.com - - - AllowOverride none - Require all denied - - -DocumentRoot "/usr/local/apache2/htdocs" - - Options Indexes FollowSymLinks - AllowOverride None - Require all granted - - - - DirectoryIndex index.html - - - - Require all denied - - -ErrorLog /proc/self/fd/2 -LogLevel warn - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - LogFormat "%h %l %u %t \"%r\" %>s %b" common - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio - - - CustomLog /proc/self/fd/1 common - - - - - ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" - - - - AllowOverride None - Options None - Require all granted - - - - RequestHeader unset Proxy early - - - - TypesConfig conf/mime.types - AddType application/x-compress .Z - AddType application/x-gzip .gz .tgz - - -Include sites-available/*.conf - - - Include conf/extra/proxy-html.conf - - - - SSLRandomSeed startup builtin - SSLRandomSeed connect builtin - diff --git a/docker/apache/scripts/build-apache.sh b/docker/apache/scripts/build-apache.sh deleted file mode 100644 index c39c1fdf7..000000000 --- a/docker/apache/scripts/build-apache.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -for conf in /usr/local/apache2/templates/*.conf; do - mv $conf "/usr/local/apache2/sites-available/"$(basename $conf) > /dev/null -done - -for template in /usr/local/apache2/templates/*.template; do - mv $template "/usr/local/apache2/sites-available/"$(basename $template)".conf" > /dev/null -done - -if [[ "$NO_DEFAULT" = true ]]; then - rm /usr/local/apache2/sites-available/node.template.conf - rm /usr/local/apache2/sites-available/node-https.template.conf -else - if [[ "$WEB_SSL" = false ]]; then - rm /usr/local/apache2/sites-available/node-https.template.conf - fi -fi - -. /root/scripts/run-openssl.sh \ No newline at end of file diff --git a/docker/apache/scripts/run-openssl.sh b/docker/apache/scripts/run-openssl.sh deleted file mode 100644 index 4b2decd84..000000000 --- a/docker/apache/scripts/run-openssl.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -if [[ "$WEB_SSL" = true && "$NO_DEFAULT" = false ]]; then - if [[ "$SELF_SIGNED" = true ]]; then - echo "---------------------------------------------------------" - echo "APACHE: Generating certificates" - echo "---------------------------------------------------------" - openssl req \ - -new \ - -newkey rsa:4096 \ - -days 1095 \ - -nodes \ - -x509 \ - -subj "/C=FK/ST=Fake/L=Fake/O=Fake/CN=0.0.0.0" \ - -keyout /etc/ssl/privkey1.pem \ - -out /etc/ssl/cert1.pem - chown www-data:www-data /etc/ssl/cert1.pem - chown www-data:www-data /etc/ssl/privkey1.pem - else - echo "---------------------------------------------------------" - echo "APACHE: Using certificates in 'nodock/apache/certs/'" - echo "---------------------------------------------------------" - if [ -e /var/certs/cert1.pem ]; then - cp /var/certs/cert1.pem /etc/ssl/cert1.pem - fi - if [ -e /var/certs/privkey1.pem ]; then - cp /var/certs/privkey1.pem /etc/ssl/privkey1.pem - fi - fi -fi - diff --git a/docker/apache/sites/node-https.template b/docker/apache/sites/node-https.template deleted file mode 100644 index df85899a3..000000000 --- a/docker/apache/sites/node-https.template +++ /dev/null @@ -1,17 +0,0 @@ -# environment variables -# WEB_REVERSE_PROXY_PORT ${WEB_REVERSE_PROXY_PORT} - -Listen 443 - - - - SSLEngine on - SSLCertificateFile /etc/ssl/cert1.pem - SSLCertificateKeyFile /etc/ssl/privkey1.pem - - ProxyPass / http://node:${WEB_REVERSE_PROXY_PORT} - - ErrorLog logs/https-error.log - CustomLog logs/https-access.log common - - \ No newline at end of file diff --git a/docker/apache/sites/node.template b/docker/apache/sites/node.template deleted file mode 100644 index 139d2d1b2..000000000 --- a/docker/apache/sites/node.template +++ /dev/null @@ -1,14 +0,0 @@ -# environment variables -# WEB_REVERSE_PROXY_PORT ${WEB_REVERSE_PROXY_PORT} - -Listen 80 - - - - ProxyPass / http://node:${WEB_REVERSE_PROXY_PORT} - # ProxyPassReverse / http://node:${WEB_REVERSE_PROXY_PORT} - - ErrorLog logs/http-error.log - CustomLog logs/http-access.log common - - \ No newline at end of file diff --git a/docker/certbot/Dockerfile b/docker/certbot/Dockerfile deleted file mode 100644 index f6c161116..000000000 --- a/docker/certbot/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ -FROM phusion/baseimage:0.9.19 - -COPY scripts /root/scripts/ - -RUN apt-get update -RUN apt-get install -y letsencrypt - -ENTRYPOINT bash -c "bash /root/scripts/run-certbot.sh && sleep infinity" diff --git a/docker/certbot/certs/.gitignore b/docker/certbot/certs/.gitignore deleted file mode 100644 index cfaad7611..000000000 --- a/docker/certbot/certs/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.pem diff --git a/docker/certbot/certs/.gitkeep b/docker/certbot/certs/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/certbot/letsencrypt/.gitkeep b/docker/certbot/letsencrypt/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/certbot/letsencrypt/.well-known/.gitkeep b/docker/certbot/letsencrypt/.well-known/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/certbot/scripts/run-certbot.sh b/docker/certbot/scripts/run-certbot.sh deleted file mode 100644 index 26be75c75..000000000 --- a/docker/certbot/scripts/run-certbot.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -letsencrypt certonly --webroot -w /var/www/letsencrypt -d "$CN" --agree-tos --email "$EMAIL" --non-interactive --text - -cp /etc/letsencrypt/archive/"$CN"/cert1.pem /var/certs/cert1.pem -cp /etc/letsencrypt/archive/"$CN"/privkey1.pem /var/certs/privkey1.pem diff --git a/docker/composehub.yml b/docker/composehub.yml deleted file mode 100644 index 7725bbe2e..000000000 --- a/docker/composehub.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: NoDock -blurb: NoDock is the Docker solution for Node. Open-source full-stack environment for your Node projects -description: | - Framework Agnostic: MEAN, Meteor, Sails, etc. Run the stack you choose, the way you want. Totally unopinionated, fully customizable. Better, Faster & Stronger: Docker + Docker Compose ensures your environment is fast and stable for development, testing and production. Focus on Code: Plug-and-play configurations allow you to get started in minutes. Reduce the learning curve for new developers. -email: philippe.trepanier@osedea.com -repo_url: https://github.com/Osedea/nodock -tags: node,docker,nginx,apache,mysql,certbot,yarn,mongodb,memcached,rabbitmq -private: false -cmd: diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index e0d4576cd..000000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,75 +0,0 @@ -version: '3.3' - -services: - node: - build: - context: ./node - args: - - NODE_VERSION=latest - - PROJECT_PATH=/opt/app/ - - NODE_ENV=production - - YARN=false - volumes: - - ../server:/opt/app - entrypoint: run-nodock "knex migrate:latest && node build/bundle.js" - ports: - - "3000:3000" - expose: - - "3000" - tty: true - - mysql: - build: - context: ./mysql - - volumes: - - ../data/mysql/:/var/lib/mysql - expose: - - "3306" - ports: - - 3306:3306 - - nginx: - build: - context: ./nginx - args: - - WEB_REVERSE_PROXY_PORT=3000 - - WEB_SSL=false - - SELF_SIGNED=false - - NO_DEFAULT=false - volumes: - - ../data/logs/nginx/:/var/log/nginx - - ./certbot/certs/:/var/certs - - ../client/dist/:/var/www/moosher - ports: - - "80:80" - - "443:443" - tty: true - - certbot: - build: - context: ./certbot - links: - - nginx - volumes: - - ./certbot/letsencrypt/:/var/www/letsencrypt - - ./certbot/certs/:/var/certs - - browserless: - image: browserless/chrome:latest - container_name: "browserless_bigcapital" - restart: always - environment: - - PREBOOT_CHROME=true - - MAX_CONCURRENT_SESSIONS=1 - ports: - - "4080:3000" - - mongo: - build: ./mongo - expose: - - "27017" - volumes: - - ./data/mongo/:/var/lib/mongodb - ports: - - "27017:27017" \ No newline at end of file diff --git a/docker/docs/CNAME b/docker/docs/CNAME deleted file mode 100644 index 7b868c2e6..000000000 --- a/docker/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -nodock.io \ No newline at end of file diff --git a/docker/docs/css/styles.css b/docker/docs/css/styles.css deleted file mode 100644 index 8beb1e147..000000000 --- a/docker/docs/css/styles.css +++ /dev/null @@ -1,190 +0,0 @@ -html, body { - color: #666666; - font-family: 'Roboto', sans-serif; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-size: 15px; -} - -code, pre { - text-align: left; -} - -h3 { - font-size: 20px; - color: #4A4A4A; - position: relative; -} - -.uppercase { - text-transform: uppercase; -} - -h3 img { - position: absolute; - display: none; -} - -.lightning-icon { - left: -34px; -} - -.box-icon { - left: -43px; -} - -h5 { - font-size: 14px; - color: #9B9B9B; - margin: 10px 0 18px 0; -} - -.gist { - font-size: 13px; - line-height: 18px; - margin-bottom: 30px; - width: 100%; -} - -.gist pre { - font-family: Menlo, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', monospace !important; -} - -.gist .gist-file { - border-bottom: none !important; - background-color: #FBFBFB !important; -} - -.gist-meta { - display: none; -} - -.top-section { - background-color: #FBFBFB; - border-bottom: 1px solid #E0E0E0; -} - -.middle-section { - padding: 60px 0 0 0; -} - -.middle-section .container { - margin-bottom: 60px; -} - -.logo { - margin: 80px auto; - display: block; -} - -.intro { - font-weight: 300; - margin: 120px auto 60px auto; - font-size: 21px; - text-align: center; -} - -.intro span { - font-size: 16px; -} - -.tech-logos { - margin: 30px auto 0 auto; - width: 100%; -} - -footer { - height: 120px; - background-color: #000; - padding: 30px 0; -} - -.osedea-logo { - margin: 0 auto; - display: block; -} - -.cta { - height: 40px; - border: 1px solid #EE4028; - border-radius: 8px; - color: #EE4028; - font-size: 15px; - width: 300px; - margin: 90px auto; - display: block; - line-height: 40px; - text-align: center; - background-color: #FFF; - transition: background-color 0.3s ease; - transition: color 0.3s ease; -} - -.cta:hover { - background-color: #EE4028; - color: #FFF; - text-decoration: none; - transition: background-color 0.3s ease; - transition: color 0.3s ease; -} - -.middle-container:last-child { - margin-bottom: 0; -} - -copyright { - color: #FFF; - font-size: 12px; - position: initial; - text-align: center; - display: block; - padding-top: 15px; -} - -copyright a { - color: #FFF; - text-decoration: underline; -} - -copyright a:hover { - color: #FFF; -} - -@media (min-width: 768px) { - .intro { - font-size: 30px; - margin: 140px auto 0 auto; - } - - .intro span { - font-size: 22px; - } - - footer { - height: 80px; - } - - .osedea-logo { - margin: 0; - display: inline; - } - - copyright { - position: relative; - top: 3px; - text-align: right; - } -} - -@media (min-width: 860px) { - h3 img { - display: block; - } -} - -@media (min-width: 820px) { - .container{ - max-width: 820px !important; - } -} \ No newline at end of file diff --git a/docker/docs/images/box-icon.png b/docker/docs/images/box-icon.png deleted file mode 100644 index 11c6061d0f97e97ba7def5b674fd3c9d491599a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 974 zcmV;<12O!GP)Sg700004XF*Lt006O% z3;baP000ApNklWv;`2^Ioevy$J z+6e^vkx&pqj15if8R111$f^3`&+}-*}O>pyYNV{TNbeA&|9syqz#}f5{?!Goe zBniMjvzvg}nuy+^l;1}AqO>y%SUNd7{0WUY3s?5ROixjC^h`iD>9=KK5^;_y!Ozq1W45)PBET>PKp|FC7bRa`tHiQi#CEm591cTx&bdZ(Qq_ zLAWsU7jZr8!sp2fq_%y>9<$r~m)}07*qoM6N<$f{Jt8DgXcg diff --git a/docker/docs/images/favicon.png b/docker/docs/images/favicon.png deleted file mode 100644 index 173056604b4a8f91b923f75910205ff2484242ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 zcmZ`%%SyvQ6ulKICB>x(f;dEQ*GyY=(U2ButZBG9j7L=&FdDF2t>% z-ypcvt-m1n3F6kBxbRLJ>jNCfJWkF%=iWOrtW~#Xr3DE9X3INz9oLxn5;Hh2%{>lr znLaF5iU4<)$qyrrXJYQuD*&e}0E2UYcZ3En0KGK8YYRZV0+{!1?)Np+d9oW#-mL7Z zCUX>{!`hY-Ivz#JRx4Q<2Yv{}cPmuXPz`*frla%PzNkG>f9Mk=y@_NK2!l@E?sBcX@huFo#^_#fe@@7@P-DsVC0z2rk6aWAK diff --git a/docker/docs/images/lightning-icon.png b/docker/docs/images/lightning-icon.png deleted file mode 100644 index 7ab239702d3481620c5e40856b127f760fae591b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 724 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 IM6N<$f=6;0ApigX diff --git a/docker/docs/images/nodock.jpg b/docker/docs/images/nodock.jpg deleted file mode 100644 index 8196bb1a9608661318f4c81dfafefe78fee23edd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85665 zcmeFXbyQs4wkKLR1PdPA-QC>_cZWc5OK_JEB)Ge~YXOBra3{D!aCi5|cTT_iopXEi zeRsV6vwKyIJ?7d=e!o5U+)L(~ZwqgK03U%;vQhvD2nc}8`w#H83=sb-_rI0?>g0c` zgTETTbpz1gA>5(lp&-xzkZ2H4Xb^9`03rYc00IgI0`PZ2fPjOCgoc6r0QFu@`2HXe zFz?O(E{A}GdM|~8M|fKTAVEO@AU{HV1OOniyZ)~7f4Y=M4~!>;?lTwp?K_UTNJzJG0$R_BiSO-)RgnASq-b$p4FpS+dJf%WnCF*htV&>)KF!x$VEx zoJM^sFPoJp`41Si;LihplHF@`O;#u4BQ@#C>i>6pWcX{Jj0XnrGdA-63Q`Th}9X(AOtonkU*nE(RK7OIMHO z`F^f_xxZb#cef&+DxFXLI03f~{SEk3Dkt%IW)tf-G5nM-LZ~={hC@5rW)S)T72+{ zpUN{_6p`q4!Rr0qG%k(}#eWHs2Z@hVV^}-}2D-Nq&JHde_&S?9-kmcFC6{co zKa9<~wnW7@USsVT$!;^YmXg`9s(;^0pYrCqe1W?dUmBOzeDFH6+S&C=!-}cEAo*Xz zL2^4bT==ctH}2k2m4biU9WxOt>`}NN<5-QJG~4w{QPn%IIdz`3Q$r?8@A0pV*mHwK zMwsxIsFHQsD+a|UxbyD|w;%Dh@Op5b#Sh!cud;0p^^mEBgBnLO?az2Gu7s}sD|D8+ zo7#|LV%ogQSxq-ruC|~j{m2mkO_b??vAt{E!EHyERzVAcWv2#$#1TP6rI~570iUuo z4I7%a@`J^Z$s4N}k}aMc8m&P5Ob?(zJE#$9N7q^Z)hp z1K_(y=K6`NpNrK`ts7cvLEB#^hcv#1b}ydmJm02s-#zfH7J;fy7MJX$T73}JW-S*T zT0`l;2}By#$2~br2?enyEWmzHlN3TzY+y@3N`JE5hlX0w7YbR8UFPaswck%T?AzL_3Grq3-JU6

|Yet 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 diff --git a/docker/docs/images/osedea-logo.png b/docker/docs/images/osedea-logo.png deleted file mode 100644 index ba98ecd531d9035856263208f9ba1e9421e71b7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2205 zcmV;O2x9k%P)F1N700004XF*Lt006O% z3;baP000P7Nkl1o!>lvI`h*yaOR%<-1pAA z%e(VR?HUB@)~(x*(1(FLf%CvGOQq5Z+QLAL9vJro{|3Lte@B7Inb-6=*O_#S!5eZuH8@vvA+a*wD7GZ z*CZSdLbhv=AHcQl9%LEYJ|#r9kI0J@t_$|}iO*lq!@;o>ei_NTLf;JD2s%8Bd=h%I zb-2d~+Rwm&=zqYj1bsJXF$^r8J-Lq?Qv=RLzN&^U^+2iVIl@@3{@_s1ANKR<)1~xn zyx2u@6oMC{u*|Qc{UD(`Iw3QW$tTy){VS$Zoj{u^9iIAEo2D?dHA-Pb$`XU|Y6NXJ zB?IWrL8mv+rloDcZ^haH71L(Q7MsgJg(+%>B2JrEslEtJjQcc! z(6^@i{Yg^YU>JMS9bR*yg|>IljSIZ96P+lx2MT|v&_+&Io~Qgzc7YtI@VWyp4Vbot<2^F|Cc{9VLJcn!PD*H_>Hes(5>eQ5-3v+T`RcA}*Jx z!|Cw0!vELFIAuN@F1Tv+RTPh#WxLF6#OWiU8%i>g{vd%qZ3n^M)zGAyS8y%P0=o7N zxKg^P`b=C=JS2laoeo|S=Vp+1lEjMWFpLMv`t*MQ9eLAvm~DxfAs4RtOdN|hK#Xm( z@~rR;C+YBflIXjhJxF6I;IR!)-i8Uv%fnI9g%8WL?zpRp*Ipcq>?!;zZsscCn?;T! z(FvgMdUt?+o(nvV{@8R<6zmwwPG};GBF@w(Yyf{P`BR&!Y2=T~f!%jq-@RyFMC)Ex z;@M^`--pEF?I9QOjnGXa>6{%93?ZSNKpap`Y&)$<$WKIH?{uW>((Y_0Li;v+Gm2*; zNk@}+V^4@!JYCOh#`C>~7twvqE-zj_ZE|A{Mxn)=<{r&%DbNyf+Ra}kxsQOhL+iZH zqTA9*of7A8{n@UY_G>Oo?}6G?6wA&E6(%XuY?_XLMWHSvubry+lyV029boeK4Y|Uj zF#2BRI(yM?23VfiiA0|yWIFP6sx(vMeF;&!isJQ`pf+@05WY=F3OJPlUPbb;(t+EM zy@l=#k)_C+uqislru;WnHi7())eFM4*qUy$ibI?#jrZd9#h$Pwt51GPZnOqifq@>+ zn7&PbevBir{iEPeg0KVJ|H|~)o9odND*I#jdq;HF`i0Zlk=%jK>ka7QLfW}PZw};b zbV5g3FZe;5L&r8jA1bCo;_VLFDVO7}AxCbX6^|<0pRZc|_k%;5vWz}^VZ9DqBOQrr zw5YZyvSJfbpy#>0?=CM2PR|9t%~=XKn}_UmI&ylsGiSgfUO)f0c?VnHfqWzp;#DxU zP7XtE@4g1Py%+D~_44f37Q@NHH-)4SJCmpjxIMU-qAX1$eg&Bq&raYwgFhwgwg?f| zybB$*S2Ty`xbCN&@fJJVk9hHV!*7k<8ejADkI-eUc$%}_k0+zGO+^Z#T&KZFIM{p5 zY;a7<8QH=hxAmc!pi7JPy|sO?B&UT^;40yMk7qF8lMbkLaB2=LGFSW{B0oH#FMYp0|7&`Gx;ES*?2cwZ(>{%*XHkuqp z;bT)o2GCZ_p=H*Z_k>Q7+u>s$Ev3-c`jnr4?BsrX5aTiop9;p~10UJ;F?Te8*O3=T zS2S1sdOs3;06MgK9w)#U4cz0#Y6ci?NbzQ3-@|>qMOLJEmy7+G zp@Y3#muj&+E!g+9X;a_eXQv#C$e5RH^U)K05Y*{U-50|Q#@43LDk#S|3dO`K<$8f_ zjD}!0GNIqlSws6+#CH)n?R~2+`4_Y@|1|Nl>vUKNQSaV=gpKyIw|yHw2w~T9lyP)y zMVW4OLrj~}27vp4_Jl71ZGC&4_}0<7Kn!~j>;jJjOQ7vWU&Q}s+A6@l6T-u*6lsC| z(LBRd_;!On#QD(v4*vu8x?u<=*+;)N5RM1+bwcgzyx2b7&w!jAA?(@=7NM(qB#Do` fB6P_-*qQzVmLJ!%GBOYo00000NkvXXu0mjfHw8+* diff --git a/docker/docs/images/tech-logos.png b/docker/docs/images/tech-logos.png deleted file mode 100644 index 8f9c7fc0c510c9bd16f9dfde30d55e569fc3f0be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29346 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,d#;Y(JM^a|cOU0h=-+GZFF%bG z449&c0xH2uHyu9!!mGhpRvcJ*xy%~#P`f$jRff6y#X+s%{BpP0>KJGz7dR&g(_NEkc01q z(Kx;xOYE^k_Zq?KQ@$v-jI_RlD5dc^py+ z{_P9LRZSx$>G7?TnAjr-vy}(>U^am>ACOZ>c}YFn$5*tK?B#QR8U! z$#KZ&lJ|nr2;OMXko-mu)gGPOK@oUUgPmZ|$myx}Zh>R=g{PFeto7++P~zhVSS++V zGPx?UNML?r^mMKBDqt2sVTE2+ZHFN09#E&=R~^%?s-F-MK+CLpDD+AaYwXF|gPn#nT>JzvS6_7KM#e;5q#&GlzS7vxxXIkifJ%@W7i7?>Kfb zpWQ^PAacPKTcQ5c@DK5s%cBK1Lgc?LZ9>u%H;B5r9`MTiMp>Ng{QWETwb0W5^@}T~ zLyK>Xst)RNY%1IEL<^d`vehd_)jT>mWv;u(p0~a6QR_{`x)D>k{BtMoF(0d7p zBSSeU52o{g4}5bQ%jd^c26K`&i+4wL3FS-PA9Tv_8$PV-qyxL-&TdahfYTO1gBMoaK_=Ge_2p6L=KKt=kJ-> zd2KH%%X1gBmgU$-Z|X$&t=@*O~vYDPPVTy3%cyz8D;HHt6|m zQmQc`X{s`z=oiyw9VyHP#AOShG(6kP4nRq16U8kKM($v6((bqA8PKKcQr!HT$VV_7 z2U-mBF60X@2=_rHn^T~Trw!2Mx&5(5C|aXPdSiYz`1j;*mKR&0W+gw*V;>g3YDGmw zGb{OU`dv0kia*NYhqm=SOc@?_AnvUU;6vWG7zDM=?L>MPm3PUki0CuaLA?`MTX%Q- zJH>E#Qu{qY6vhKpXla*?@3=^o_xm&AtkQ!Z%Utgd3n34xEtFXt%qp-vAz@*&jyvlb z#+iefk{3KP0lCd#ZkxuX@~-%Vyy#~U-!BHK{_x(Zl%Fx+=inXS9~7@kX}um0fcNPY z4L8EX8kAn;PqS_90#4%XfVarVUu+QCf;->4Zd}>5Gs=(Co{(ykRy&gETnVYL$6t|r zZ>udAZCY0dCA5TsJ}DKcqB8afWlAIbd|tfL%ARTdccJL7p_^9UqGuG^5TssXX6!icFG~u@O_Wrd6bm`ycr#Xcp*mbU{wy zZCvDKg>@lEYoS|nb8&Ylpp1`=rPziLg2H#sHQ4(Lek?Ks`X1t=iEy~|zs|5t>*6ZJ z%l7xo^1L#0^gPd%i`Sq_!>0c(5+eYcRC`cXh3qQo1A4>u z{#8Y!&Dzv8=XJ|Hi=F8I8i;@hlzmKv96+?A@|0cj=K5G+DL-mhdQBvild-nzD!fZh zs+#BghTl=luX4jX2&FSTyF3*Ig4qJj5DF(49HRUthW~t&eb|5YyNwmSgH+r_KObG| z2_y-b{Tt{d1n=pUq3$a9SHHKv^($JXt^Bi%uBpzmTh5%e1;!@`SV~=n97(nxuC4XG zwxoq0xHU#dqind3=z8~D)ouj)X&wd0V@@g^;iqT_y1~8$?=rP8Td60Jz&D))$Vw_n Jlz%k*`hPBHMH&DA diff --git a/docker/docs/index.html b/docker/docs/index.html deleted file mode 100644 index eba46df2a..000000000 --- a/docker/docs/index.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - NoDock - - - - - - - - - - - - - - - - - - - - - - Fork me on GitHub -

-
-
-
- - - -

NoDock is the Docker solution for Node
Open-source full-stack environment for your Node projects

-
- -
-
-
-
-
-
-
-

Framework Agnostic

-

- MEAN, Meteor, Sails, etc. Run the stack you choose, the way you want. Totally unopinionated, fully customizable. -

-
-
-

Better, Faster & Stronger

-

- Docker + Docker Compose v3 ensures your environment is fast and stable for development, testing and production. -

-
-
-

Focus on Code

-

- Plug-and-play configurations allow you to get started in minutes. Reduce the learning curve for new developers. -

-
-
-
-
-
-
-

Box IconEasy to set up

-
It takes 2 minutes to get an app up:
- -
Et voilà! You can see the example up on localhost.
-
-
-
-
-
-
-

Lightning IconCurrently supports

- Tech Logo -
... with more coming!
-
- -
-
-
- - - diff --git a/docker/memcached/Dockerfile b/docker/memcached/Dockerfile deleted file mode 100644 index a882c10ef..000000000 --- a/docker/memcached/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM memcached:1.4 - -CMD memcached diff --git a/docker/mongo/Dockerfile b/docker/mongo/Dockerfile deleted file mode 100644 index b0779e3ca..000000000 --- a/docker/mongo/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM mongo:3.3 - -# Add mongo user -RUN groupadd -r mongo &&\ - useradd -r -g mongo mongo - -USER mongo - -CMD mongod --dbpath=/var/lib/mongodb \ No newline at end of file diff --git a/docker/mysql/Dockerfile b/docker/mysql/Dockerfile deleted file mode 100644 index c5a4376de..000000000 --- a/docker/mysql/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM mysql:5.7 - -ADD my.cnf /etc/mysql/conf.d/my.cnf - -RUN chown -R mysql:root /var/lib/mysql/ - -ARG MYSQL_DATABASE=bigcapital_system -ARG MYSQL_USER=root -ARG MYSQL_PASSWORD=root -ARG MYSQL_ROOT_PASSWORD=root - -ENV MYSQL_DATABASE=$MYSQL_DATABASE -ENV MYSQL_USER=$MYSQL_USER -ENV MYSQL_PASSWORD=$MYSQL_PASSWORD -ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD - -CMD ["mysqld"] -EXPOSE 3306 diff --git a/docker/mysql/my.cnf b/docker/mysql/my.cnf deleted file mode 100644 index f759a4963..000000000 --- a/docker/mysql/my.cnf +++ /dev/null @@ -1,2 +0,0 @@ -[mysqld] -bind-address = 0.0.0.0 diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile deleted file mode 100644 index f0ab253ad..000000000 --- a/docker/nginx/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM nginx:1.11 - -RUN mkdir /etc/nginx/sites-available && rm /etc/nginx/conf.d/default.conf -ADD nginx.conf /etc/nginx/ - -COPY scripts /root/scripts/ -COPY certs /etc/ssl/ - -COPY sites /etc/nginx/templates - -ARG WEB_REVERSE_PROXY_PORT=3000 -ARG WEB_SSL=false -ARG SELF_SIGNED=false -ARG NO_DEFAULT=false - -ENV WEB_REVERSE_PROXY_PORT=$WEB_REVERSE_PROXY_PORT -ENV WEB_SSL=$WEB_SSL -ENV SELF_SIGNED=$SELF_SIGNED -ENV NO_DEFAULT=$NO_DEFAULT - -RUN /bin/bash /root/scripts/build-nginx.sh - -CMD nginx diff --git a/docker/nginx/certs/.gitkeep b/docker/nginx/certs/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf deleted file mode 100644 index 3c277f2ac..000000000 --- a/docker/nginx/nginx.conf +++ /dev/null @@ -1,33 +0,0 @@ -user www-data; -worker_processes auto; -pid /run/nginx.pid; -daemon off; - -events { - worker_connections 2048; - use epoll; -} - -http { - server_tokens off; - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 15; - types_hash_max_size 2048; - client_max_body_size 20M; - open_file_cache max=100; - gzip on; - gzip_disable "msie6"; - - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - include /etc/nginx/conf.d/*.conf; - include /etc/nginx/sites-available/*; - access_log /var/log/nginx/access.log; - error_log /var/log/nginx/error.log; -} diff --git a/docker/nginx/scripts/build-nginx.sh b/docker/nginx/scripts/build-nginx.sh deleted file mode 100644 index 73021023b..000000000 --- a/docker/nginx/scripts/build-nginx.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -for conf in /etc/nginx/templates/*.conf; do - mv $conf "/etc/nginx/sites-available/"$(basename $conf) > /dev/null -done - -for template in /etc/nginx/templates/*.template; do - envsubst < $template > "/etc/nginx/sites-available/"$(basename $template)".conf" -done - -if [[ "$NO_DEFAULT" = true ]]; then - rm /etc/nginx/sites-available/node.template.conf - rm /etc/nginx/sites-available/node-https.template.conf -else - if [[ "$WEB_SSL" = false ]]; then - rm /etc/nginx/sites-available/node-https.template.conf - fi -fi - -. /root/scripts/run-openssl.sh \ No newline at end of file diff --git a/docker/nginx/scripts/run-openssl.sh b/docker/nginx/scripts/run-openssl.sh deleted file mode 100644 index 4b2decd84..000000000 --- a/docker/nginx/scripts/run-openssl.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -if [[ "$WEB_SSL" = true && "$NO_DEFAULT" = false ]]; then - if [[ "$SELF_SIGNED" = true ]]; then - echo "---------------------------------------------------------" - echo "APACHE: Generating certificates" - echo "---------------------------------------------------------" - openssl req \ - -new \ - -newkey rsa:4096 \ - -days 1095 \ - -nodes \ - -x509 \ - -subj "/C=FK/ST=Fake/L=Fake/O=Fake/CN=0.0.0.0" \ - -keyout /etc/ssl/privkey1.pem \ - -out /etc/ssl/cert1.pem - chown www-data:www-data /etc/ssl/cert1.pem - chown www-data:www-data /etc/ssl/privkey1.pem - else - echo "---------------------------------------------------------" - echo "APACHE: Using certificates in 'nodock/apache/certs/'" - echo "---------------------------------------------------------" - if [ -e /var/certs/cert1.pem ]; then - cp /var/certs/cert1.pem /etc/ssl/cert1.pem - fi - if [ -e /var/certs/privkey1.pem ]; then - cp /var/certs/privkey1.pem /etc/ssl/privkey1.pem - fi - fi -fi - diff --git a/docker/nginx/sites/node-https.template b/docker/nginx/sites/node-https.template deleted file mode 100644 index cf07aade8..000000000 --- a/docker/nginx/sites/node-https.template +++ /dev/null @@ -1,13 +0,0 @@ -# environment variables -# WEB_REVERSE_PROXY_PORT ${WEB_REVERSE_PROXY_PORT} -server { - listen 443 default_server http2; - - ssl on; - ssl_certificate /etc/ssl/cert1.pem; - ssl_certificate_key /etc/ssl/privkey1.pem; - - location / { - proxy_pass http://node:${WEB_REVERSE_PROXY_PORT}; - } -} diff --git a/docker/nginx/sites/node.template b/docker/nginx/sites/node.template deleted file mode 100644 index 6db80bc37..000000000 --- a/docker/nginx/sites/node.template +++ /dev/null @@ -1,32 +0,0 @@ -# environment variables -# WEB_REVERSE_PROXY_PORT ${WEB_REVERSE_PROXY_PORT} -server { - listen 80 default_server; - - listen [::]:80 default_server; - - # SSL configuration - # - # listen 443 ssl default_server; - # listen [::]:443 ssl default_server; - # - # Note: You should disable gzip for SSL traffic. - # See: https://bugs.debian.org/773332 - # - # Read up on ssl_ciphers to ensure a secure configuration. - # See: https://bugs.debian.org/765782 - # - # Self signed certs generated by the ssl-cert package - # Don't use them in a production server! - # - # include snippets/snakeoil.conf; - - root /var/www/moosher; - - # Add index.php to the list if you are using PHP - index index.html index.htm index.nginx-debian.html; - - location /api { - proxy_pass http://node:${WEB_REVERSE_PROXY_PORT}; - } -} diff --git a/docker/node/Dockerfile b/docker/node/Dockerfile deleted file mode 100644 index 95f719d31..000000000 --- a/docker/node/Dockerfile +++ /dev/null @@ -1,38 +0,0 @@ -FROM phusion/baseimage:0.9.19 - -RUN apt-get update &&\ - apt-get install -y npm &&\ - npm install -g n - -ARG NODE_ENV=production -ARG NODE_VERSION=latest -ARG PROJECT_PATH=/opt/app/ -ARG YARN=false - -ENV YARN=$YARN -ENV PROJECT_PATH=$PROJECT_PATH -ENV NODE_ENV=$NODE_ENV - -# Add -RUN groupadd -r www-app &&\ - useradd -r -g www-app www-app - -RUN mkdir -p /home/www-app &&\ - chmod 777 /home/www-app -R - -# Install the specified NODE_VERSION or grab latest -RUN n "$NODE_VERSION" - -# Install Yarn -RUN if [ ${YARN} = true ]; then \ - npm install -g yarn \ -;fi - -COPY scripts/run-nodock.sh /usr/bin/run-nodock - -RUN chmod 700 /usr/bin/run-nodock - -RUN npm install webpack -g -RUN npm install knex -g - -WORKDIR /opt/app diff --git a/docker/node/scripts/run-nodock.sh b/docker/node/scripts/run-nodock.sh deleted file mode 100644 index a9ca22f06..000000000 --- a/docker/node/scripts/run-nodock.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -SCRIPT="$1" - -if [[ ${PROJECT_PATH:0:1} = "/" ]]; then - export PROJECT_PATH=$PROJECT_PATH -else - export PROJECT_PATH="/opt/app/"$PROJECT_PATH -fi - -cd $PROJECT_PATH - -if [[ $YARN = true ]]; then - su -c "cd $PROJECT_PATH; yarn" -s /bin/bash www-app -else - su -c "cd $PROJECT_PATH; npm i --force" -s /bin/bash www-app -fi - -chown -R www-app:www-app /opt/app - -su -c "cd $PROJECT_PATH; $SCRIPT" -s /bin/bash www-app diff --git a/docker/postgresql/Dockerfile b/docker/postgresql/Dockerfile deleted file mode 100644 index c974697a0..000000000 --- a/docker/postgresql/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM postgres:10.2 - -ARG POSTGRES_USER=default_user -ARG POSTGRES_PASSWORD=secret -ARG POSTGRES_DB=default_db - -ENV POSTGRES_USER=$POSTGRES_USER -ENV POSTGRES_PASSWORD=$POSTGRES_PASSWORD -ENV POSTGRES_DB=$POSTGRES_DB - -EXPOSE 5432 \ No newline at end of file diff --git a/docker/rabbitmq/Dockerfile b/docker/rabbitmq/Dockerfile deleted file mode 100644 index 999e9a4d4..000000000 --- a/docker/rabbitmq/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM rabbitmq - -COPY scripts /root/scripts/ - -ARG MANAGEMENT=false -ARG FEDERATION=false -ARG RABBITMQ_DEFAULT_USER=guest -ARG RABBITMQ_DEFAULT_PASS=guest - -ENV MANAGEMENT=$MANAGEMENT -ENV FEDERATION=$FEDERATION -ENV RABBITMQ_DEFAULT_USER=$RABBITMQ_DEFAULT_USER -ENV RABBITMQ_DEFAULT_PASS=$RABBITMQ_DEFAULT_PASS - -RUN /bin/bash /root/scripts/build-rabbitmq.sh diff --git a/docker/rabbitmq/scripts/build-rabbitmq.sh b/docker/rabbitmq/scripts/build-rabbitmq.sh deleted file mode 100644 index ba4da7083..000000000 --- a/docker/rabbitmq/scripts/build-rabbitmq.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -if [[ "$MANAGEMENT" = true ]]; then - rabbitmq-plugins enable --offline rabbitmq_management -fi - -if [[ "$FEDERATION" = true ]]; then - rabbitmq-plugins enable --offline rabbitmq_federation - if [[ "$MANAGEMENT" = true ]]; then - rabbitmq-plugins enable --offline rabbitmq_federation_management - fi -fi - diff --git a/docker/redis/Dockerfile b/docker/redis/Dockerfile deleted file mode 100644 index 09c81a915..000000000 --- a/docker/redis/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM redis:4.0 - -COPY redis.conf /usr/local/etc/redis/redis.conf - -CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ] diff --git a/docker/redis/redis.conf b/docker/redis/redis.conf deleted file mode 100644 index f4cda6f13..000000000 --- a/docker/redis/redis.conf +++ /dev/null @@ -1,48 +0,0 @@ -daemonize no -pidfile /var/run/redis.pid -port 6379 -tcp-backlog 511 -timeout 0 -tcp-keepalive 0 -loglevel notice -logfile "" -databases 16 -save 900 1 -save 300 10 -save 60 10000 -stop-writes-on-bgsave-error yes -rdbcompression yes -rdbchecksum yes -dbfilename dump.rdb -slave-serve-stale-data yes -slave-read-only yes -repl-diskless-sync no -repl-diskless-sync-delay 5 -repl-disable-tcp-nodelay no -slave-priority 100 -appendonly no -appendfilename "appendonly.aof" -appendfsync everysec -no-appendfsync-on-rewrite no -auto-aof-rewrite-percentage 100 -auto-aof-rewrite-min-size 64mb -aof-load-truncated yes -lua-time-limit 5000 -slowlog-log-slower-than 10000 -slowlog-max-len 128 -latency-monitor-threshold 0 -notify-keyspace-events "" -hash-max-ziplist-entries 512 -hash-max-ziplist-value 64 -list-max-ziplist-entries 512 -list-max-ziplist-value 64 -set-max-intset-entries 512 -zset-max-ziplist-entries 128 -zset-max-ziplist-value 64 -hll-sparse-max-bytes 3000 -activerehashing yes -client-output-buffer-limit normal 0 0 0 -client-output-buffer-limit slave 256mb 64mb 60 -client-output-buffer-limit pubsub 32mb 8mb 60 -hz 10 -aof-rewrite-incremental-fsync yes diff --git a/docker/rethinkdb/Dockerfile b/docker/rethinkdb/Dockerfile deleted file mode 100644 index 033c2dbbe..000000000 --- a/docker/rethinkdb/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM rethinkdb - -CMD ["rethinkdb", "--bind", "all"] diff --git a/docker/workspace/Dockerfile b/docker/workspace/Dockerfile deleted file mode 100644 index 19fe2fb11..000000000 --- a/docker/workspace/Dockerfile +++ /dev/null @@ -1,39 +0,0 @@ -FROM phusion/baseimage:0.9.19 - -RUN apt-get update && \ - apt-get install -y npm \ - mysql-client \ - sqlite3 \ - iputils-ping && \ - npm install -g n - -## -## Timezone -## - -ARG TZ=UTC -ENV TZ ${TZ} -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -## -## Node -## - -ARG NODE_VERSION=latest - -# Install the specified NODE_VERSION or grab latest -RUN n "$NODE_VERSION" - -# Install YARN -RUN npm i -g yarn - -## -## Cron -## - -COPY ./crontab /var/spool/cron/crontabs - -WORKDIR /opt/app - - -ENTRYPOINT sleep infinity \ No newline at end of file diff --git a/docker/workspace/crontab/root b/docker/workspace/crontab/root deleted file mode 100644 index db12163fc..000000000 --- a/docker/workspace/crontab/root +++ /dev/null @@ -1,2 +0,0 @@ -# This is the root crontab file -# * * * * * echo "Every Minute" >> /var/log/cron.log diff --git a/client/nginx/sites/default.conf b/nginx/sites/default.conf similarity index 100% rename from client/nginx/sites/default.conf rename to nginx/sites/default.conf diff --git a/package-lock.json b/package-lock.json index 58dc6cb26..58d3dd2d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,67 +1,17658 @@ { - "requires": true, + "name": "client", + "version": "0.1.0", "lockfileVersion": 1, + "requires": true, "dependencies": { - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.5.tgz", + "integrity": "sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg==", + "requires": { + "browserslist": "^4.8.5", + "invariant": "^2.2.4", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/core": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz", + "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helpers": "^7.8.4", + "@babel/parser": "^7.8.4", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/generator": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", + "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz", + "integrity": "sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ==", + "requires": { + "@babel/types": "^7.8.3", + "esutils": "^2.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz", + "integrity": "sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A==", + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz", + "integrity": "sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg==", + "requires": { + "@babel/compat-data": "^7.8.4", + "browserslist": "^4.8.5", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz", + "integrity": "sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz", + "integrity": "sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q==", + "requires": { + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.6.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz", + "integrity": "sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==" + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz", + "integrity": "sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", + "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", + "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz", + "integrity": "sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-decorators": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz", + "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz", + "integrity": "sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz", + "integrity": "sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz", + "integrity": "sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", + "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "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==", + "requires": { + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz", + "integrity": "sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz", + "integrity": "sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz", + "integrity": "sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.3.tgz", + "integrity": "sha512-g/6WTWG/xbdd2exBBzMfygjX/zw4eyNC4X8pRaq7aRHRoDUCzAIu3kGYIXviOv8BjCuWm8vDBwjHcjiRNgXrPA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-flow": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz", + "integrity": "sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz", + "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==", + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz", + "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==", + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz", + "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==", + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz", + "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==", + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz", + "integrity": "sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA==", + "requires": { + "@babel/helper-call-delegate": "^7.8.3", + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.8.3.tgz", + "integrity": "sha512-glrzN2U+egwRfkNFtL34xIBYTxbbUF2qJTP8HD3qETBBqzAWSeNB821X0GjU06+dNpq/UyCIjI72FmGE5NNkQQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", + "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz", + "integrity": "sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g==", + "requires": { + "@babel/helper-builder-react-jsx": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.3.tgz", + "integrity": "sha512-01OT7s5oa0XTLf2I8XGsL8+KqV9lx3EZV+jxn/L2LQ97CGKila2YMroTkCEIE0HV/FF7CMSRsIAybopdN9NTdg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.3.tgz", + "integrity": "sha512-PLMgdMGuVDtRS/SzjNEQYUT8f4z1xb2BAT54vM1X5efkVuYBf5WyGUMbpmARcfq3NaglIwz08UVQK4HHHbC6ag==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz", + "integrity": "sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA==", + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz", + "integrity": "sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.3.tgz", + "integrity": "sha512-Ebj230AxcrKGZPKIp4g4TdQLrqX95TobLUWKd/CwG7X1XHUH1ZpkpFvXuXqWbtGRWb7uuEWNlrl681wsOArAdQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-typescript": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.4.tgz", + "integrity": "sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w==", + "requires": { + "@babel/compat-data": "^7.8.4", + "@babel/helper-compilation-targets": "^7.8.4", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.8.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.8.3", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@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.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.8.3", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.8.4", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.8.3", + "@babel/plugin-transform-modules-commonjs": "^7.8.3", + "@babel/plugin-transform-modules-systemjs": "^7.8.3", + "@babel/plugin-transform-modules-umd": "^7.8.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.4", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.3", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/types": "^7.8.3", + "browserslist": "^4.8.5", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/preset-flow": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.9.0.tgz", + "integrity": "sha512-88uSmlshIrlmPkNkEcx3UpSZ6b8n0UGBq0/0ZMZCF/uxAW0XIAUuDHBhIOAh0pvweafH4RxOwi/H3rWhtqOYPA==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-flow-strip-types": "^7.9.0" + }, + "dependencies": { + "@babel/plugin-transform-flow-strip-types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", + "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-flow": "^7.8.3" + } + } + } + }, + "@babel/preset-react": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.8.3.tgz", + "integrity": "sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-react-display-name": "^7.8.3", + "@babel/plugin-transform-react-jsx": "^7.8.3", + "@babel/plugin-transform-react-jsx-self": "^7.8.3", + "@babel/plugin-transform-react-jsx-source": "^7.8.3" + } + }, + "@babel/preset-typescript": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.8.3.tgz", + "integrity": "sha512-qee5LgPGui9zQ0jR1TeU5/fP9L+ovoArklEqY12ek8P/wV5ZeM/VYSQYwICeoT6FfpJTekG9Ilay5PhwsOpMHA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-typescript": "^7.8.3" + } + }, + "@babel/runtime": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", + "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", + "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", + "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.4", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", + "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@blueprintjs/core": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-3.38.1.tgz", + "integrity": "sha512-ZBqVfMgeIrXiuprsRxBnLM/MPgPSCRf27uckyhMFHRocyEtFS7zrOGmQeJb1Va0nZ/ufNsYk7EiHVxulb1KkSg==", + "requires": { + "@blueprintjs/icons": "^3.24.0", + "@types/dom4": "^2.0.1", + "classnames": "^2.2", + "dom4": "^2.1.5", + "normalize.css": "^8.0.1", + "popper.js": "^1.16.1", + "react-lifecycles-compat": "^3.0.4", + "react-popper": "^1.3.7", + "react-transition-group": "^2.9.0", + "resize-observer-polyfill": "^1.5.1", + "tslib": "~1.13.0" + }, + "dependencies": { + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + } + } + }, + "@blueprintjs/datetime": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/@blueprintjs/datetime/-/datetime-3.15.2.tgz", + "integrity": "sha512-FQw1BqbO9RBKzLWiXHkSVFxyGFRXHaugG5ST4go+p2IibrxuRDjD6YvrFXo+FLEzi+MsftMo6FkPNm2xApfmHw==", + "requires": { + "@blueprintjs/core": "^3.23.0", + "classnames": "^2.2", + "react-day-picker": "7.3.2", + "tslib": "~1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + } + } + }, + "@blueprintjs/icons": { + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-3.24.0.tgz", + "integrity": "sha512-OvDDI5EUueS1Y3t594iS8LAGoHhLhYjC2GuN/01a85n+ASLSp0jf0/+uix2JeCOj41iTdRRCINbWuRwVQNNGPw==", + "requires": { + "classnames": "^2.2", + "tslib": "~1.13.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + } + } + }, + "@blueprintjs/popover2": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@blueprintjs/popover2/-/popover2-0.11.1.tgz", + "integrity": "sha512-Uo3oEydB/XoxZ1rzyehgnI0hd7r4bAOiNHbuqrNssASzujTm86Y6o5WvCx3TrsOGqs+YyqS+KtLMm2BioHSKyw==", + "requires": { + "@blueprintjs/core": "^3.47.0", + "@popperjs/core": "^2.5.4", + "classnames": "^2.2", + "dom4": "^2.1.5", + "react-popper": "^2.2.4", + "resize-observer-polyfill": "^1.5.1", + "tslib": "~1.13.0" + }, + "dependencies": { + "@blueprintjs/core": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-3.47.0.tgz", + "integrity": "sha512-u+bfmCyPXwKZMnwY4+e/iWjO2vDUvr8hA8ydmV0afyvcEe7Sh85UPEorIgQ/CBuRIbVMNm8FpLsFzDxgkfrCNA==", + "requires": { + "@blueprintjs/icons": "^3.27.0", + "@types/dom4": "^2.0.1", + "classnames": "^2.2", + "dom4": "^2.1.5", + "normalize.css": "^8.0.1", + "popper.js": "^1.16.1", + "react-lifecycles-compat": "^3.0.4", + "react-popper": "^1.3.7", + "react-transition-group": "^2.9.0", + "resize-observer-polyfill": "^1.5.1", + "tslib": "~1.13.0" + }, + "dependencies": { + "react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", + "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "requires": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + } + } + } + }, + "@blueprintjs/icons": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-3.27.0.tgz", + "integrity": "sha512-ItRioyrr2s70chclj5q38HS9omKOa15b3JZXv9JcMIFz+6w6rAcoAH7DA+5xIs27bFjax/SdAZp/eYXSw0+QpA==", + "requires": { + "classnames": "^2.2", + "tslib": "~1.13.0" + } + }, + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "react-popper": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz", + "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==", + "requires": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + } + }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + } + } + }, + "@blueprintjs/select": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@blueprintjs/select/-/select-3.11.2.tgz", + "integrity": "sha512-fU0Km6QI/ayWhzYeu9N1gTj0+L0XUO4KB3u2LfJXgj648UGY8F4HX2ETdJ+XPdtsu6TesrIL7ghMQhtLcvafBg==", + "requires": { + "@blueprintjs/core": "^3.20.0", + "classnames": "^2.2", + "tslib": "~1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + } + } + }, + "@blueprintjs/table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@blueprintjs/table/-/table-3.8.3.tgz", + "integrity": "sha512-ppyXy/8USvTe+HHl6VGJk+GqJalwzutTJNAiZMgpTJh8UglH8/245IpDpIlAYlyNW98RhMtloB+5UuBWHpxmhA==", + "requires": { + "@blueprintjs/core": "^3.23.1", + "classnames": "^2.2", + "prop-types": "^15.6.0", + "react-lifecycles-compat": "^3.0.4", + "tslib": "~1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + } + } + }, + "@blueprintjs/timezone": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@blueprintjs/timezone/-/timezone-3.6.4.tgz", + "integrity": "sha512-plgz27yR9xxxqy926iFUCHW/wjjDabxG5Kg7DzvzMR2QyKT1P0mtIFJTIo+51+I9OCZxwGrEcfRv/M0iMqN4yw==", + "requires": { + "@blueprintjs/core": "^3.27.0", + "@blueprintjs/select": "^3.13.0", + "classnames": "^2.2", + "moment": "^2.24.0", + "moment-timezone": "^0.5.27", + "tslib": "~1.10.0" + }, + "dependencies": { + "@blueprintjs/core": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-3.27.0.tgz", + "integrity": "sha512-ZzwXENczeC9FnzTJ2XiDR+6YNzb68u1fj2HstKarvfrepW/C+0g4Eojo5vi2KWlNw5+RUu/MG7sZc8i7698pQw==", + "requires": { + "@blueprintjs/icons": "^3.17.0", + "@types/dom4": "^2.0.1", + "classnames": "^2.2", + "dom4": "^2.1.5", + "normalize.css": "^8.0.1", + "popper.js": "^1.15.0", + "react-lifecycles-compat": "^3.0.4", + "react-popper": "^1.3.7", + "react-transition-group": "^2.9.0", + "resize-observer-polyfill": "^1.5.1", + "tslib": "~1.10.0" + }, + "dependencies": { + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + } + } + }, + "@blueprintjs/icons": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-3.17.0.tgz", + "integrity": "sha512-DRUIxVe0V7eeKYxKFl9bEmQvdpqmMbSUsJjKl9ACgXUQ1wksd2oaFTNLBQEToui/RAWpybWLCl39AG3rlJQeYQ==", + "requires": { + "classnames": "^2.2", + "tslib": "~1.10.0" + } + }, + "@blueprintjs/select": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@blueprintjs/select/-/select-3.13.0.tgz", + "integrity": "sha512-DwLEpZee95xeO1tyCs8SLgP6yb9mp2l/B34N2MOsRL7eXZb+EiILR8fxnCzwx6/D7JL+WKsPP9UHhCOLaTbYug==", + "requires": { + "@blueprintjs/core": "^3.27.0", + "classnames": "^2.2", + "tslib": "~1.10.0" + } + }, + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "requires": { + "@babel/runtime": "^7.1.2" + } + } + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" + }, + "@csstools/normalize.css": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", + "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" + }, + "@formatjs/intl-unified-numberformat": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-unified-numberformat/-/intl-unified-numberformat-3.2.0.tgz", + "integrity": "sha512-SZMTV/tR0h7nYhS2x69S7zhHXaBmE0ZTR2OIiakt8W7uYWVgcRhu/LgUeVtGzpwPI2ChcOjNMtX/k6y1M9aDNA==", + "requires": { + "@formatjs/intl-utils": "^2.2.0" + } + }, + "@formatjs/intl-utils": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-utils/-/intl-utils-2.2.0.tgz", + "integrity": "sha512-+Az7tR1av1DHZu9668D8uh9atT6vp+FFmEF8BrEssv0OqzpVjpVBGVmcgPzQP8k2PQjVlm/h2w8cTt0knn132w==" + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@hypnosphi/create-react-context": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", + "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", + "requires": { + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + } + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.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==" + } + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.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==" + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "@popperjs/core": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz", + "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==" + }, + "@reduxjs/toolkit": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.2.5.tgz", + "integrity": "sha512-/OWoW5mniUXAomw4+3ZhhWodcs1/SRvK2HKyxLXdW6vKgmJhiBiSHe/huHARlKWujEmGaJrkafx548GE494bCQ==", + "requires": { + "immer": "^4.0.1", + "redux": "^4.0.0", + "redux-devtools-extension": "^2.13.8", + "redux-immutable-state-invariant": "^2.1.0", + "redux-thunk": "^2.3.0", + "reselect": "^4.0.0" + }, + "dependencies": { + "immer": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/immer/-/immer-4.0.2.tgz", + "integrity": "sha512-Q/tm+yKqnKy4RIBmmtISBlhXuSDrB69e9EKTYiIenIKQkXBQir43w+kN/eGiax3wt1J0O1b2fYcNqLSbEcXA7w==" + } + } + }, + "@rehooks/local-storage": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@rehooks/local-storage/-/local-storage-2.4.3.tgz", + "integrity": "sha512-/Ohn+SnJm1eE3uXv3gsXLE4G6EYT3baqi4V/syyKfbyLoXmTn8h5ciY2ELug3xslzFNUMWyTGY3Ow47gl6k3kA==" + }, + "@sheerun/mutationobserver-shim": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz", + "integrity": "sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q==" + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", + "integrity": "sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig==" + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz", + "integrity": "sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ==" + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz", + "integrity": "sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w==" + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz", + "integrity": "sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w==" + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz", + "integrity": "sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w==" + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz", + "integrity": "sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w==" + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz", + "integrity": "sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw==" + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz", + "integrity": "sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw==" + }, + "@svgr/babel-preset": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz", + "integrity": "sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A==", + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^4.2.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^4.2.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^4.2.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^4.2.0", + "@svgr/babel-plugin-svg-dynamic-title": "^4.3.3", + "@svgr/babel-plugin-svg-em-dimensions": "^4.2.0", + "@svgr/babel-plugin-transform-react-native-svg": "^4.2.0", + "@svgr/babel-plugin-transform-svg-component": "^4.2.0" + } + }, + "@svgr/core": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz", + "integrity": "sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w==", + "requires": { + "@svgr/plugin-jsx": "^4.3.3", + "camelcase": "^5.3.1", + "cosmiconfig": "^5.2.1" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz", + "integrity": "sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg==", + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@svgr/plugin-jsx": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz", + "integrity": "sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w==", + "requires": { + "@babel/core": "^7.4.5", + "@svgr/babel-preset": "^4.3.3", + "@svgr/hast-util-to-babel-ast": "^4.3.2", + "svg-parser": "^2.0.0" + } + }, + "@svgr/plugin-svgo": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz", + "integrity": "sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w==", + "requires": { + "cosmiconfig": "^5.2.1", + "merge-deep": "^3.0.2", + "svgo": "^1.2.2" + } + }, + "@svgr/webpack": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz", + "integrity": "sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg==", + "requires": { + "@babel/core": "^7.4.5", + "@babel/plugin-transform-react-constant-elements": "^7.0.0", + "@babel/preset-env": "^7.4.5", + "@babel/preset-react": "^7.0.0", + "@svgr/core": "^4.3.3", + "@svgr/plugin-jsx": "^4.3.3", + "@svgr/plugin-svgo": "^4.3.1", + "loader-utils": "^1.2.3" + } + }, + "@tanem/react-nprogress": { + "version": "3.0.26", + "resolved": "https://registry.npmjs.org/@tanem/react-nprogress/-/react-nprogress-3.0.26.tgz", + "integrity": "sha512-cuKuMBkqu33FmKeLifq5EWnrNlMSmXj3b4qII/sEDpet+cO+7ibMd7vkm2MWlW5Hmt+zfdPNaGRWqQJ4UBZJvg==", + "requires": { + "@babel/runtime": "^7.9.6", + "hoist-non-react-statics": "^3.3.2", + "prop-types": "^15.7.2", + "react-use": "^14.2.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", + "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@types/js-cookie": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz", + "integrity": "sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw==" + }, + "@xobotyi/scrollbar-width": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz", + "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==" + }, + "react-use": { + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/react-use/-/react-use-14.3.0.tgz", + "integrity": "sha512-Jx7Zl0k8dHA0UKpTVwYUThC5/V+Dt6JzCGiMHPNIhsxJGkiKuB1AQ7J7pNq4zj3l37ABd/RF+jRGThw0czrJXA==", + "requires": { + "@types/js-cookie": "2.2.6", + "@xobotyi/scrollbar-width": "1.9.5", + "copy-to-clipboard": "^3.2.0", + "fast-deep-equal": "^3.1.1", + "fast-shallow-equal": "^1.0.0", + "js-cookie": "^2.2.1", + "nano-css": "^5.2.1", + "react-universal-interface": "^0.6.0", + "resize-observer-polyfill": "^1.5.1", + "screenfull": "^5.0.0", + "set-harmonic-interval": "^1.0.1", + "throttle-debounce": "^2.1.0", + "ts-easing": "^0.2.0", + "tslib": "^1.10.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" + } + } + }, + "@testing-library/dom": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.12.2.tgz", + "integrity": "sha512-KCnvHra5fV+wDxg3wJObGvZFxq7v1DJt829GNFLuRDjKxVNc/B5AdsylNF5PMHFbWMXDsHwM26d2NZcZO9KjbQ==", + "requires": { + "@babel/runtime": "^7.6.2", + "@sheerun/mutationobserver-shim": "^0.3.2", + "@types/testing-library__dom": "^6.0.0", + "aria-query": "3.0.0", + "pretty-format": "^24.9.0", + "wait-for-expect": "^3.0.0" + } + }, + "@testing-library/jest-dom": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz", + "integrity": "sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg==", + "requires": { + "@babel/runtime": "^7.5.1", + "chalk": "^2.4.1", + "css": "^2.2.3", + "css.escape": "^1.5.1", + "jest-diff": "^24.0.0", + "jest-matcher-utils": "^24.0.0", + "lodash": "^4.17.11", + "pretty-format": "^24.0.0", + "redent": "^3.0.0" + } + }, + "@testing-library/react": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.4.0.tgz", + "integrity": "sha512-XdhDWkI4GktUPsz0AYyeQ8M9qS/JFie06kcSnUVcpgOwFjAu9vhwR83qBl+lw9yZWkbECjL8Hd+n5hH6C0oWqg==", + "requires": { + "@babel/runtime": "^7.7.6", + "@testing-library/dom": "^6.11.0", + "@types/testing-library__react": "^9.1.2" + } + }, + "@testing-library/user-event": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-7.2.1.tgz", + "integrity": "sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA==" + }, + "@types/babel__core": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.4.tgz", + "integrity": "sha512-c/5MuRz5HM4aizqL5ViYfW4iEnmfPcfbH4Xa6GgLT21dMc1NGeNnuS6egHheOmP+kCJ9CAzC4pv4SDCWTnRkbg==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.8.tgz", + "integrity": "sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==", + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/dom4": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/dom4/-/dom4-2.0.1.tgz", + "integrity": "sha512-kSkVAvWmMZiCYtvqjqQEwOmvKwcH+V4uiv3qPQ8pAh1Xl39xggGEo8gHUqV4waYGHezdFw0rKBR8Jt0CrQSDZA==" + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/history": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.9.tgz", + "integrity": "sha512-MUc6zSmU3tEVnkQ78q0peeEjKWPUADMlC/t++2bI8WnAG2tvYRPIgHG8lWkXwqc8MsUF6Z2MOf+Mh5sazOmhiQ==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.3.tgz", + "integrity": "sha512-wIPqXANye5BbORbuh74exbwNzj+UWCwWyeEFJzUQ7Fq3W2NSAy+7x7nX1fgbEypr2/TdKqpeuxLnXWgzN533/Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.15", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.15.tgz", + "integrity": "sha512-s2VMReFXRg9XXxV+CW9e5Nz8fH2K1aEhwgjUqPPbQd7g95T0laAcvLv032EhFHIa5GHsZ8W7iJEQVaJq6k3Gog==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.10.tgz", + "integrity": "sha512-z8PNtlhrj7eJNLmrAivM7rjBESG6JwC5xP3RVk12i/8HVP7Xnx/sEmERnRImyEuUaJfO942X0qMOYsoupaJbZQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.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 + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "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 + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", + "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==", + "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" + } + } + } + }, + "@types/js-cookie": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.4.tgz", + "integrity": "sha512-WTfSE1Eauak/Nrg6cA9FgPTFvVawejsai6zXoq0QYTQ3mxONeRtGhKxa7wMlUzWWmzrmTeV+rwLjHgsCntdrsA==" + }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", + "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==" + }, + "@types/lodash": { + "version": "4.14.172", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.172.tgz", + "integrity": "sha512-/BHF5HAx3em7/KkzVKm3LrsD6HZAXuXO1AJZQ3cRRBZj4oHZDviWPYu0aEplAqDFNHZPW6d3G7KN+ONcCCC7pw==" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "@types/node": { + "version": "14.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.9.tgz", + "integrity": "sha512-JsoLXFppG62tWTklIoO4knA+oDTYsmqWxHRvd4lpmfQRNhX6osheUOWETP2jMoV/2bEHuMra8Pp3Dmo/stBFcw==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" + }, + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" + }, + "@types/react": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.0.tgz", + "integrity": "sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw==", + "requires": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + }, + "dependencies": { + "csstype": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", + "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==" + } + } + }, + "@types/react-dom": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.0.tgz", + "integrity": "sha512-lUqY7OlkF/RbNtD5nIq7ot8NquXrdFrjSOR6+w9a9RFQevGi1oZO1dcJbXMeONAPKtZ2UrZOEJ5UOCVsxbLk/g==", + "requires": { + "@types/react": "*" + } + }, + "@types/react-router": { + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.16.tgz", + "integrity": "sha512-8d7nR/fNSqlTFGHti0R3F9WwIertOaaA1UEB8/jr5l5mDMOs4CidEgvvYMw4ivqrBK+vtVLxyTj2P+Pr/dtgzg==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, + "@types/react-router-dom": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.8.tgz", + "integrity": "sha512-03xHyncBzG0PmDmf8pf3rehtjY0NpUj7TIN46FrT5n1ZWHPZvXz32gUyNboJ+xsL8cpg8bQVLcllptcQHvocrw==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "@types/sortablejs": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-aWK2oTpbjNmLyexl95L4ttd0kFIvbMIf1JR2YbNhUwIk9Y1cOwfAfyvfxBBmtg1ZDy64gpbgEdFjyqnzjh+3/A==" + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" + }, + "@types/testing-library__dom": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.12.1.tgz", + "integrity": "sha512-cgqnEjxKk31tQt29j4baSWaZPNjQf3bHalj2gcHQTpW5SuHRal76gOpF0vypeEo6o+sS5inOvvNdzLY0B3FB2A==", + "requires": { + "pretty-format": "^24.3.0" + } + }, + "@types/testing-library__react": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.2.tgz", + "integrity": "sha512-CYaMqrswQ+cJACy268jsLAw355DZtPZGt3Jwmmotlcu8O/tkoXBI6AeZ84oZBJsIsesozPKzWzmv/0TIU+1E9Q==", + "requires": { + "@types/react-dom": "*", + "@types/testing-library__dom": "*" + } + }, + "@types/yargs": { + "version": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" + }, + "@types/yup": { + "version": "0.29.13", + "resolved": "https://registry.npmjs.org/@types/yup/-/yup-0.29.13.tgz", + "integrity": "sha512-qRyuv+P/1t1JK1rA+elmK1MmCL1BapEzKKfbEhDBV/LMMse4lmhZ/XbgETI39JveDJRpLjmToOI6uFtMW/WR2g==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.19.2.tgz", + "integrity": "sha512-HX2qOq2GOV04HNrmKnTpSIpHjfl7iwdXe3u/Nvt+/cpmdvzYvY0NHSiTkYN257jHnq4OM/yo+OsFgati+7LqJA==", + "requires": { + "@typescript-eslint/experimental-utils": "2.19.2", + "eslint-utils": "^1.4.3", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.19.2.tgz", + "integrity": "sha512-B88QuwT1wMJR750YvTJBNjMZwmiPpbmKYLm1yI7PCc3x0NariqPwqaPsoJRwU9DmUi0cd9dkhz1IqEnwfD+P1A==", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.19.2", + "eslint-scope": "^5.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.19.2.tgz", + "integrity": "sha512-8uwnYGKqX9wWHGPGdLB9sk9+12sjcdqEEYKGgbS8A0IvYX59h01o8os5qXUHMq2na8vpDRaV0suTLM7S8wraTA==", + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.19.2", + "@typescript-eslint/typescript-estree": "2.19.2", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.19.2.tgz", + "integrity": "sha512-Xu/qa0MDk6upQWqE4Qy2X16Xg8Vi32tQS2PR0AvnT/ZYS4YGDvtn2MStOh5y8Zy2mg4NuL06KUHlvCh95j9C6Q==", + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^6.3.0", + "tsutils": "^3.17.1" + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@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==" + }, + "@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==" + }, + "@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==" + }, + "@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==", + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@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==" + }, + "@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==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@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==" + }, + "@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==", + "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/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "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==", + "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==" + }, + "@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==", + "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/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "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/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "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/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==", + "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/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==", + "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", + "@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==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@welldone-software/why-did-you-render": { + "version": "6.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@welldone-software/why-did-you-render/-/why-did-you-render-6.0.0-rc.1.tgz", + "integrity": "sha512-qQe5w89tYnYtwRqlhdF33ivWjsQlGXkan5lFzNwpAoMEUFIbDuwvFiBUAbE76Lfz63GabSaf1vyuCusgJ7Rtqg==", + "dev": true, + "requires": { + "lodash": "^4" + } + }, + "@xobotyi/scrollbar-width": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.0.tgz", + "integrity": "sha512-W8oNXd3HkW9eQHxk+47iRx4aqd0yIV9NoeykUTd0uE0sYx3LOAQE7rfHOd8xtMP7IADfLIdG0o0H1sXvHUF7dw==" + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "accounting": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/accounting/-/accounting-0.4.1.tgz", + "integrity": "sha1-h91BA+/39EYPHhhvXGd+1s9WaIM=" + }, + "acorn": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==" + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" + } + } + }, + "acorn-jsx": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==" + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" + }, + "adjust-sourcemap-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", + "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "requires": { + "assert": "1.4.1", + "camelcase": "5.0.0", + "loader-utils": "1.2.3", + "object-path": "0.11.4", + "regex-parser": "2.2.10" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" + } + } + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", + "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", + "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" } }, - "db-errors": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/db-errors/-/db-errors-0.2.3.tgz", - "integrity": "sha512-OOgqgDuCavHXjYSJoV2yGhv6SeG8nk42aoCSoyXLZUH7VwFG27rxbavU1z+VrZbZjphw5UkDQwUlD21MwZpUng==", - "dev": true + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "ansi-escapes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "attr-accept": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.1.0.tgz", + "integrity": "sha512-sLzVM3zCCmmDtDNhI0i96k6PUztkotSOXqE4kDGQt/6iDi5M+H0srjeF+QC6jN581l4X/Zq3Zu/tgcErEssavg==" + }, + "autoprefixer": { + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", + "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", + "requires": { + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.26", + "postcss-value-parser": "^4.0.2" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + }, + "axios": { + "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" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "axobject-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.1.2.tgz", + "integrity": "sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ==" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "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" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^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=" + } + } + }, + "babel-eslint": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", + "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-extract-comments": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", + "requires": { + "babylon": "^6.18.0" + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "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==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } + } + }, + "babel-plugin-named-asset-import": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz", + "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "babel-preset-react-app": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.1.tgz", + "integrity": "sha512-YkWP2UwY//TLltNlEBRngDOrYhvSLb+CA330G7T9M5UhGEMWe+JK/8IXJc5p2fDTSfSiETf+PY0+PYXFMix81Q==", + "requires": { + "@babel/core": "7.8.4", + "@babel/plugin-proposal-class-properties": "7.8.3", + "@babel/plugin-proposal-decorators": "7.8.3", + "@babel/plugin-proposal-numeric-separator": "7.8.3", + "@babel/plugin-transform-flow-strip-types": "7.8.3", + "@babel/plugin-transform-react-display-name": "7.8.3", + "@babel/plugin-transform-runtime": "7.8.3", + "@babel/preset-env": "7.8.4", + "@babel/preset-react": "7.8.3", + "@babel/preset-typescript": "7.8.3", + "@babel/runtime": "7.8.4", + "babel-plugin-macros": "2.8.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "basscss": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/basscss/-/basscss-8.0.2.tgz", + "integrity": "sha1-4FK1qpXuTV6hGAG8djudco9MAfY=", + "requires": { + "basscss-align": "^1.0.2", + "basscss-border": "^4.0.2", + "basscss-flexbox": "^1.0.1", + "basscss-grid": "^2.0.0", + "basscss-hide": "^1.0.1", + "basscss-layout": "^3.1.0", + "basscss-margin": "^1.0.7", + "basscss-padding": "^1.1.3", + "basscss-position": "^2.0.3", + "basscss-type-scale": "^1.0.5", + "basscss-typography": "^3.0.3" + } + }, + "basscss-align": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/basscss-align/-/basscss-align-1.0.2.tgz", + "integrity": "sha1-KUqmidb5nahuSvTFwokocIVcHDc=" + }, + "basscss-border": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/basscss-border/-/basscss-border-4.0.2.tgz", + "integrity": "sha1-FLRQYym5DLFKvl9NNHPp/pIC3y4=" + }, + "basscss-flexbox": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/basscss-flexbox/-/basscss-flexbox-1.0.2.tgz", + "integrity": "sha512-AtG6yBmmza2nPo3x9X4/7rbW22gLmiSvYvirFs7Aspt1zp5FHwpRBz3BD2v/a3qPdmVM8OvOLVNWISGM6O50MA==" + }, + "basscss-grid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/basscss-grid/-/basscss-grid-2.0.0.tgz", + "integrity": "sha1-b0wxmOeGo4Up+DYrw7O85SVME2k=" + }, + "basscss-hide": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/basscss-hide/-/basscss-hide-1.0.1.tgz", + "integrity": "sha1-NLwTi7qGfGxJq4aCphDvSV5H11A=" + }, + "basscss-layout": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/basscss-layout/-/basscss-layout-3.1.0.tgz", + "integrity": "sha1-+fOS5IDaZmV9n+XenKTAfFecOk4=" + }, + "basscss-margin": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/basscss-margin/-/basscss-margin-1.0.9.tgz", + "integrity": "sha512-wpF8tXrtzU+iMtLvfSgYJlpkIxChOlay3YumoI+yJ6IiOe5uMmEGUG8FWAIkC8QalkKDAURAqHmQ4nbuyUvyag==" + }, + "basscss-padding": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/basscss-padding/-/basscss-padding-1.1.3.tgz", + "integrity": "sha1-adt5lBTm3Vi+2Dd2lSzCmeLmh04=" + }, + "basscss-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/basscss-position/-/basscss-position-2.0.3.tgz", + "integrity": "sha1-RnGAofjzhukHLtjQgpTSpuC6QwU=" + }, + "basscss-type-scale": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/basscss-type-scale/-/basscss-type-scale-1.0.6.tgz", + "integrity": "sha512-93KOVRr5iX0e38d6+k2pQ8WW1IA5DigQhJextts4rwbSt2+cr+XrokGJ74HB8LevO54HMoc3VJ8M6oOR2puc8A==" + }, + "basscss-typography": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/basscss-typography/-/basscss-typography-3.0.4.tgz", + "integrity": "sha512-PMCxUfYPpAj8gQV8qI09lfNp7eWNrKtQFkCN2fZjLyReSY/wnw8QP8irpvbJ67vSEhlkA6ZP8j7vmTDoxkyu8g==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "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==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "bowser": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz", + "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "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" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.8.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.7.tgz", + "integrity": "sha512-gFOnZNYBHrEyUML0xr5NJ6edFaaKbTFX9S9kQHlYfCP0Rit/boRIz4G+Avq6/4haEKJXdGGUnoolx+5MWW2BoA==", + "requires": { + "caniuse-lite": "^1.0.30001027", + "electron-to-chromium": "^1.3.349", + "node-releases": "^1.1.49" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "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.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^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", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + } + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001027", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001027.tgz", + "integrity": "sha512-7xvKeErvXZFtUItTHgNtLgS9RJpVnwBlWX8jSo/BO8VsF6deszemZSkJJJA1KOKrXuzZH4WALpAJdq5EyfgMLg==" + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "requires": { + "rsvp": "^4.8.4" + } + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "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" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "chokidar": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "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.3.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "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==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, + "clean-css": { + "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==", + "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==" + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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=" + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "clone-deep": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "requires": { + "for-own": "^0.1.3", + "is-plain-object": "^2.0.1", + "kind-of": "^3.0.2", + "lazy-cache": "^1.0.3", + "shallow-clone": "^0.1.2" + } + }, + "clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + }, + "cnbuilder": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/cnbuilder/-/cnbuilder-1.3.2.tgz", + "integrity": "sha512-4WygslpZg+W4uVGF4dzN/Vbz0q4arACdMfgPJlx2EZA6+/OhfRT7KFIX6MuN3P+0MUwx8R7sNe+xOKINatwJrg==" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "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=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "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==", + "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=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.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==" + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "requires": { + "arity-n": "^1.0.4" + } + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "compression-webpack-plugin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-6.1.0.tgz", + "integrity": "sha512-RK/bBW3JwQpb7tH91trro7ulNa0ynSTPxQO48rn/oS1Y2nGUYuX6CWIOqbhUF2+b+2clqJeDGIYYckvg6WKabA==", + "dev": true, + "requires": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "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": { + "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 + }, + "cacache": { + "version": "15.0.6", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.6.tgz", + "integrity": "sha512-g1WYDMct/jzW+JdWEyjaX2zoBkZ6ZT9VpOyp2I/VMtDsNLffNat3kqPFfi1eDRSK9/SuKGyORDHcQMcPF8sQ/w==", + "dev": true, + "requires": { + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "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": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "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" + } + }, + "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" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.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" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "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" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.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" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "tar": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==" + }, + "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", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "console-polyfill": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.3.0.tgz", + "integrity": "sha512-w+JSDZS7XML43Xnwo2x5O5vxB0ID7T5BdqDtyqT6uiCAX2kZAgcWxNaGqT97tZfSHzfOcvrfsDAodKcJ3UvnXQ==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "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==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" + }, + "core-js-compat": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", + "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "create-react-context": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", + "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", + "requires": { + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, + "cross-env": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.2.tgz", + "integrity": "sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==", + "requires": { + "cross-spawn": "^7.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "requires": { + "inherits": "^2.0.3", + "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==" + } + } + }, + "css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "requires": { + "postcss": "^7.0.5" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-has-pseudo": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "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==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "css-in-js-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", + "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", + "requires": { + "hyphenate-style-name": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "css-loader": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", + "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.23", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.1.1", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.2", + "schema-utils": "^2.6.0" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + } + } + }, + "css-prefers-color-scheme": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", + "requires": { + "postcss": "^7.0.5" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-tree": { + "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==", + "requires": { + "mdn-data": "2.0.4", + "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==" + } + } + }, + "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=" + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==" + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" + }, + "cssdb": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + }, + "csso": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", + "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "requires": { + "css-tree": "1.0.0-alpha.37" + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "requires": { + "cssom": "0.3.x" + } + }, + "csstype": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.9.tgz", + "integrity": "sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q==" + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "deep-map-keys": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deep-map-keys/-/deep-map-keys-2.0.1.tgz", + "integrity": "sha512-hvsUEzDow++fTMwM2f2S7ttG39Y20mprBGwsydPpgmHwPQGwG10KJW44JgYVImJtXlDY983jIiqU9W2+DS2yzg==", + "requires": { + "es6-weak-map": "^2.0.1", + "lodash": "^4.13.1" + } + }, + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "requires": { + "utila": "~0.4" + } + }, + "dom-helpers": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz", + "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "csstype": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.3.tgz", + "integrity": "sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag==" + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + } + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "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==" + } + } + }, + "dom4": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/dom4/-/dom4-2.1.5.tgz", + "integrity": "sha512-gJbnVGq5zaBUY0lUh0LUEVGYrtN75Ks8ZwpwOYvnVFrKy/qzXK4R/1WuLIFExWj/tBxbRAkTzZUGJHXmqsBNjQ==" + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.351", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.351.tgz", + "integrity": "sha512-L8zhV8k7Znp2q3wWXYDzCyfTBeGauEX0rX/FtgmnDgmvHRqwu9NVN614wOkXx9sDZmJZpNMBaEFMXTu/vbr+Kg==" + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "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==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "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==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "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==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "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=" + }, + "escodegen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "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==", + "optional": true + } + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "globals": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } + } + }, + "eslint-config-react-app": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.0.tgz", + "integrity": "sha512-WrHjoGpKr1kLLiWDD81tme9jMM0hk5cMxasLSdyno6DdPt+IfLOrDJBVo6jN7tn4y1nzhs43TmUaZWO6Sf0blw==", + "requires": { + "confusing-browser-globals": "^1.0.9" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", + "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", + "requires": { + "fs-extra": "^8.1.0", + "loader-fs-cache": "^1.0.2", + "loader-utils": "^1.2.3", + "object-hash": "^2.0.1", + "schema-utils": "^2.6.1" + } + }, + "eslint-module-utils": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", + "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz", + "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==", + "requires": { + "lodash": "^4.17.15" + } + }, + "eslint-plugin-import": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz", + "integrity": "sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ==", + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", + "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", + "requires": { + "@babel/runtime": "^7.4.5", + "aria-query": "^3.0.0", + "array-includes": "^3.0.3", + "ast-types-flow": "^0.0.7", + "axobject-query": "^2.0.2", + "damerau-levenshtein": "^1.0.4", + "emoji-regex": "^7.0.2", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.1" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + } + } + }, + "eslint-plugin-react": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.18.0.tgz", + "integrity": "sha512-p+PGoGeV4SaZRDsXqdj9OWcOrOpZn8gXoGPcIQTzo2IDMbAKhNDnME9myZWqO3Ic4R3YmwAZ1lDjWl2R2hMUVQ==", + "requires": { + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.14.2" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "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==" + }, + "espree": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", + "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "requires": { + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz", + "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==", + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==" + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==" + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "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==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "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 + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } }, "fast-json-stable-stringify": { "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 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fast-shallow-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz", + "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==" + }, + "fastest-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz", + "integrity": "sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg=" + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "requires": { + "bser": "2.1.1" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" + }, + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", + "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, + "file-selector": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.1.12.tgz", + "integrity": "sha512-Kx7RTzxyQipHuiqyZGf+Nz4vY9R1XGxuQl/hLoJwq+J4avk/9wxxgZyHKtbyIPJmbD4A66DWGYfyykWNpcYutQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "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==", + "optional": true + }, + "filesize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", + "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "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==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "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==", + "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==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz", + "integrity": "sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs=", + "requires": { + "colors": "~0.6.0-1", + "commander": "~2.1.0" + }, + "dependencies": { + "commander": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=" + } + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" + }, + "flow-bin": { + "version": "0.123.0", + "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.123.0.tgz", + "integrity": "sha512-Ylcf8YDIM/KrqtxkPuq+f8O+6sdYA2Nuz5f+sWHlp539DatZz3YMcsO1EiXaf1C11HJgpT/3YGYe7xZ9/UZmvQ==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=" + }, + "follow-redirects": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.10.0.tgz", + "integrity": "sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ==", + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "formik": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.2.5.tgz", + "integrity": "sha512-KkOsyYmh5xsow+wlbdL9QSkqvbiHSb1RIToBKiooCFW4lyypn+ZlHGjTuuOqUWBqZaI5nCEupeI275Mo6tFBzg==", + "requires": { + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.14", + "lodash-es": "^4.17.14", + "react-fast-compare": "^2.0.1", + "tiny-warning": "^1.0.2", + "tslib": "^1.10.0" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.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==", + "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", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "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=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "requires": { + "globule": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "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==" + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "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", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + } + } + }, + "globule": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", + "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.12", + "minimatch": "~3.0.2" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "harmony-reflect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", + "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "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==" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "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==" + }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + }, + "hotkeys-js": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.8.1.tgz", + "integrity": "sha512-YlhVQtyG9f1b7GhtzdhR0Pl+cImD1ZrKI6zYUa7QLd0zuThiL7RzZ+ANJyy7z+kmcCpNYBf5PjBa3CjiQ5PFpw==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "html-escaper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", + "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==" + }, + "html-minifier-terser": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.0.3.tgz", + "integrity": "sha512-It4No3H1V3Dhd/O0MePFdo0oX/M6u6YZTMw4My/010mT6vxdbqge7+0RoxGAmeSbKok6gjYZoP0p4rpZ2+J2yw==", + "requires": { + "camel-case": "^3.0.0", + "clean-css": "^4.2.1", + "commander": "^4.0.0", + "he": "^1.2.0", + "param-case": "^2.1.1", + "relateurl": "^0.2.7", + "terser": "^4.3.9" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + } + } + }, + "html-webpack-plugin": { + "version": "4.0.0-beta.11", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz", + "integrity": "sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg==", + "requires": { + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "dependencies": { + "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==", + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "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==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "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=" + }, + "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==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.0.0.tgz", + "integrity": "sha512-1yM4gD7R/U9R5AwA6STkoj8JfjnMeZIUrd8e23Yc14A7xVVLUWlAikgvidklwq1UOroJ07sc6NWNULeOJMYOeQ==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.3", + "http-proxy": "^1.18.0", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "micromatch": "^4.0.2" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "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, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "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 + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "hyphenate-style-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", + "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "requires": { + "postcss": "^7.0.14" + } + }, + "identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "requires": { + "harmony-reflect": "^1.4.6" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "immer": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", + "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==" + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" + }, + "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==" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inline-style-prefixer": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-4.0.2.tgz", + "integrity": "sha512-N8nVhwfYga9MiV9jWlwfdj1UDIaZlBFu4cJSJkIr7tZX7sHpHhGR5su1qdpW+7KPL8ISTvCIkcaFi/JdBknvPg==", + "requires": { + "bowser": "^1.7.3", + "css-in-js-utils": "^2.0.0" + } + }, + "inquirer": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "intl": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/intl/-/intl-1.2.5.tgz", + "integrity": "sha1-giRKIZDE5Bn4Nx9ao02qNCDiq94=" + }, + "intl-format-cache": { + "version": "4.2.21", + "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-4.2.21.tgz", + "integrity": "sha512-6pZlBdqTRUuuwRWywPItHY1JQwzQxWcpBHv6w4M8T6bGzAsiL/QmI+XsdOhsqJLaL4ZmTATn1kIkNlMk4VzSLQ==" + }, + "intl-messageformat": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-7.8.4.tgz", + "integrity": "sha512-yS0cLESCKCYjseCOGXuV4pxJm/buTfyCJ1nzQjryHmSehlptbZbn9fnlk1I9peLopZGGbjj46yHHiTAEZ1qOTA==", + "requires": { + "intl-format-cache": "^4.2.21", + "intl-messageformat-parser": "^3.6.4" + } + }, + "intl-messageformat-parser": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-3.6.4.tgz", + "integrity": "sha512-RgPGwue0mJtoX2Ax8EmMzJzttxjnva7gx0Q7mKJ4oALrTZvtmCeAw5Msz2PcjW4dtCh/h7vN/8GJCxZO1uv+OA==", + "requires": { + "@formatjs/intl-unified-numberformat": "^3.2.0" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.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==" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "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==" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "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==", + "requires": { + "binary-extensions": "^2.0.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==" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "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==" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + }, + "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==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "requires": { + "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=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "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=" + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "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==" + } + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + }, + "dependencies": { + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-jsdom-fourteen": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz", + "integrity": "sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q==", + "requires": { + "@jest/environment": "^24.3.0", + "@jest/fake-timers": "^24.3.0", + "@jest/types": "^24.3.0", + "jest-mock": "^24.0.0", + "jest-util": "^24.0.0", + "jsdom": "^14.1.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "optional": true + }, + "aproba": { + "version": "1.2.0", + "resolved": false, + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": false, + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": false, + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "resolved": false, + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "debug": { + "version": "3.2.6", + "resolved": false, + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": false, + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": false, + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": false, + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": false, + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "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.6", + "resolved": false, + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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=", + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": false, + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": false, + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": false, + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "optional": true + }, + "ini": { + "version": "1.3.5", + "resolved": false, + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": false, + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "optional": true + }, + "minipass": { + "version": "2.9.0", + "resolved": false, + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": false, + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": false, + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "resolved": false, + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + }, + "needle": { + "version": "2.4.0", + "resolved": false, + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "resolved": false, + "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "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.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": false, + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "resolved": false, + "integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==", + "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==", + "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=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "osenv": { + "version": "0.1.5", + "resolved": false, + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "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=", + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "optional": true + }, + "rc": { + "version": "1.2.8", + "resolved": false, + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "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=", + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": false, + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "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.7.1", + "resolved": false, + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": false, + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": false, + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "sax": { + "version": "1.2.4", + "resolved": false, + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": false, + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "string-width": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "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==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "optional": true + }, + "tar": { + "version": "4.4.13", + "resolved": false, + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": false, + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "optional": true + }, + "yallist": { + "version": "3.1.1", + "resolved": false, + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "optional": true + } + } + } + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==" + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==" + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==" + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + } + }, + "jest-watch-typeahead": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz", + "integrity": "sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.1", + "jest-regex-util": "^24.9.0", + "jest-watcher": "^24.3.0", + "slash": "^3.0.0", + "string-length": "^3.1.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "string-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.0" + } + } + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + } + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-base64": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", + "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==" + }, + "js-cookie": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + }, + "js-money": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/js-money/-/js-money-0.6.3.tgz", + "integrity": "sha1-ILj6m5WNrH9XuY2QJyUuQI6Y1P0=", + "requires": { + "lodash": "4.x.x" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "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 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "objection": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/objection/-/objection-2.0.10.tgz", - "integrity": "sha512-mgt79CgmAJMmRr+fql60n1LRWJuHXjE1Wy3zZt0f+MJc8VB1lNZKHGqFFVgAJ61yjCL3WKta6HncYgl7Z17mKA==", + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" + }, + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", + "requires": { + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "requires": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-fs-cache": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", + "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", + "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=", + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^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=", + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash-es": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", + "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "loglevel": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", + "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "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==", + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "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==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.x" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" + }, + "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==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "match-sorter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-4.1.0.tgz", + "integrity": "sha512-DCzT9JVO2FWVOTfsKqIqVhu/skFa3bK0lQom70j6Co9yKX9bPn2gRtn9BFD9ykkM8F/USjTQeId+nlFfTVvz+w==", "dev": true, "requires": { - "ajv": "^6.10.2", - "db-errors": "^0.2.3" + "@babel/runtime": "^7.9.2", + "remove-accents": "0.4.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.4.tgz", + "integrity": "sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + } + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + } + } + }, + "merge-deep": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", + "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", + "requires": { + "arr-union": "^3.1.0", + "clone-deep": "^0.2.4", + "kind-of": "^3.0.2" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "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==" + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "min-indent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", + "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=" + }, + "mini-create-react-context": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", + "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", + "requires": { + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + } + } + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "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==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "requires": { + "yallist": "^4.0.0" + } + }, + "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==", + "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==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "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==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "moment-timezone": { + "version": "0.5.33", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", + "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "nano-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.3.0.tgz", + "integrity": "sha512-uM/9NGK9/E9/sTpbIZ/bQ9xOLOIHZwrrb/CRlbDHBU/GFS7Gshl24v/WJhwsVViWkpOXUmiZ66XO7fSB4Wd92Q==", + "requires": { + "css-tree": "^1.0.0-alpha.28", + "csstype": "^2.5.5", + "fastest-stable-stringify": "^1.0.1", + "inline-style-prefixer": "^4.0.0", + "rtl-css-js": "^1.9.0", + "sourcemap-codec": "^1.4.1", + "stacktrace-js": "^2.0.0", + "stylis": "3.5.0" + } + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + }, + "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==" + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "node-releases": { + "version": "1.1.49", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.49.tgz", + "integrity": "sha512-xH8t0LS0disN0mtRCh+eByxFPie+msJUBL/lJDBuap53QGiYPa9joh83K4pCZgWJ+2L4b9h88vCVdXQ60NO2bg==", + "requires": { + "semver": "^6.3.0" + } + }, + "node-sass": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz", + "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==", + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "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" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "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==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^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=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "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=", + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "dependencies": { + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "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=" + } + } + }, + "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", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "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=" + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-hash": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.2.tgz", + "integrity": "sha512-b+2AKjAf6uQlxxv8ChHdM+VT4eeX+ZSwv+pk2xIXZWbo+yxn4/En1iC+GHe/OFYa9on0AhFF2PvuAcFHoiiHaA==" + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.2.tgz", + "integrity": "sha512-70E/pFTPr7nZ9nLDPNTcj3IVqnNvKuP4VsBmoKV9YGTnChe0mlS3C4qM7qKarhZ8rGaHKLfo+vBTHXDp6ZSyLQ==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==" + } + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "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==", + "requires": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "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==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "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==" + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "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==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "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==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "requires": { + "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==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + } + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "requires": { + "asn1.js": "^4.0.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=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "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=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "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==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "requires": { + "node-modules-regexp": "^1.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==", + "requires": { + "find-up": "^3.0.0" + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "pnp-webpack-plugin": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.0.tgz", + "integrity": "sha512-ZcMGn/xF/fCOq+9kWMP9vVVxjIkMCja72oy3lziR7UHy0hHFZ57iVpQ71OtveVbmzeCmphBg8pxNdk/hlK99aQ==", + "requires": { + "ts-pnp": "^1.1.2" + } + }, + "popper.js": { + "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.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "7.0.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", + "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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==" + }, + "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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + } + }, + "postcss-browser-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz", + "integrity": "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==", + "requires": { + "postcss": "^7" + } + }, + "postcss-calc": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", + "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "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" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "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==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "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==" + } + } + }, + "postcss-color-functional-notation": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", + "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-gray": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", + "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-hex-alpha": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", + "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", + "requires": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", + "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "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==" + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "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==" + } + } + }, + "postcss-custom-media": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", + "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-custom-properties": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", + "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", + "requires": { + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-custom-selectors": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", + "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "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==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-dir-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", + "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "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==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-double-position-gradients": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", + "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", + "requires": { + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-env-function": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", + "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-flexbugs-fixes": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz", + "integrity": "sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-focus-visible": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", + "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-focus-within": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", + "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-font-variant": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", + "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-gap-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", + "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-image-set-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", + "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-initial": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", + "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", + "requires": { + "lodash.template": "^4.5.0", + "postcss": "^7.0.2" + } + }, + "postcss-lab-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", + "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "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==", + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "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==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-media-minmax": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", + "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "requires": { + "css-color-names": "0.0.4", + "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==" + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "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==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "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==" + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "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==" + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "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==" + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "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==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz", + "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==", + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-nesting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", + "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-normalize": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz", + "integrity": "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==", + "requires": { + "@csstools/normalize.css": "^10.1.0", + "browserslist": "^4.6.2", + "postcss": "^7.0.17", + "postcss-browser-comments": "^3.0.0", + "sanitize.css": "^10.0.0" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "requires": { + "cssnano-util-get-match": "^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==" + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "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==" + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^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==" + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "requires": { + "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==" + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "requires": { + "cssnano-util-get-match": "^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==" + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "requires": { + "browserslist": "^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==" + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "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==" + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "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==" + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "requires": { + "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==" + } + } + }, + "postcss-overflow-shorthand": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", + "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-page-break": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", + "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-place": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", + "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-preset-env": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", + "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "requires": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", + "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "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==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "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==" + } + } + }, + "postcss-replace-overflow-wrap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", + "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-rtl": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/postcss-rtl/-/postcss-rtl-1.7.3.tgz", + "integrity": "sha512-PMwlrQSeZKChNJQGtWz9Xfk3rY1W7P5Jp4sFRXVufczQIH6vRhTNSc5gnEwKHaWrU8SMoZMi2VY7ihOmwVvW7g==", + "requires": { + "rtlcss": "2.5.0" + } + }, + "postcss-rtlcss": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/postcss-rtlcss/-/postcss-rtlcss-1.7.2.tgz", + "integrity": "sha512-YTzE/dJwEgkofCVj2iu2FEF+Th+7Yzz/FIuT8elxftP6BQb44vlH4EaYVyM75dbcVd1WQBzP4c7ZmWMB7rmNMw==", + "dev": true, + "requires": { + "rtlcss": "^2.6.0" + }, + "dependencies": { + "@choojs/findup": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", + "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", + "dev": true, + "requires": { + "commander": "^2.15.1" + } + }, + "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" + } + }, + "rtlcss": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.6.2.tgz", + "integrity": "sha512-06LFAr+GAPo+BvaynsXRfoYTJvSaWRyOhURCQ7aeI1MKph9meM222F+Zkt3bDamyHHJuGi3VPtiRkpyswmQbGA==", + "dev": true, + "requires": { + "@choojs/findup": "^0.2.1", + "chalk": "^2.4.2", + "mkdirp": "^0.5.1", + "postcss": "^6.0.23", + "strip-json-comments": "^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 + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + } + } + }, + "postcss-safe-parser": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", + "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-matches": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", + "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-not": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", + "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "requires": { + "is-svg": "^3.0.0", + "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==" + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.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==" + }, + "postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "pretty-bytes": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", + "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==" + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.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==" + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.3.tgz", + "integrity": "sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw==", + "requires": { + "asap": "~2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "prompts": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.1.tgz", + "integrity": "sha512-qIP2lQyCwYbdzcqHIUi2HAxiWixhoM9OdLCWf8txXsapC/X9YdsCoeyRIXE/GP+Q0J37Q7+XN/MFqbUa7IzXNA==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.4" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "property-expr": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", + "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==" + }, + "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==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "psl": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } } }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "requires": { + "performance-now": "^2.1.0" + } + }, + "ramda": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", + "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "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==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + } + } + }, + "react": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.12.0.tgz", + "integrity": "sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-app-polyfill": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz", + "integrity": "sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g==", + "requires": { + "core-js": "^3.5.0", + "object-assign": "^4.1.1", + "promise": "^8.0.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.3", + "whatwg-fetch": "^3.0.0" + } + }, + "react-body-classname": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/react-body-classname/-/react-body-classname-1.3.1.tgz", + "integrity": "sha512-PxskbhmoV8kzIyspjiIc/smQkyyBOQHeUsrh1oj9CC5O1Kg/4gvHWPKsYGWEIq0X51TtCT941u/ulM1dTZ/bOw==", + "requires": { + "prop-types": "^15.5.6", + "react-side-effect": "^1.1.0 || ^2.1.0" + } + }, + "react-content-loader": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/react-content-loader/-/react-content-loader-6.0.1.tgz", + "integrity": "sha512-djJUgGNze7YdWzJA1kYO1eKXAMpP+Z4sMulmEuTVi6vEXzfuQCJs6yD8hhgWj23vvJPZL5b8NyabxteyF8Hq/g==" + }, + "react-day-picker": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-7.3.2.tgz", + "integrity": "sha512-mij2j2Un/v2V2ow+hf/hFBMdl6Eis/C/YhBtlI6Xpbvh3Q6WMix78zEkCdw6i9GldafOrpnupWKofv/h5oSI4g==", + "requires": { + "prop-types": "^15.6.2" + } + }, + "react-dev-utils": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.0.tgz", + "integrity": "sha512-MwrvQW2TFjLblhqpDNeqCXHBkz3G5vc7k4wntgutAJZX4ia3o07eGKo6uYGhUOeJ0hfOxcpJFNFk7+4XCc1S8g==", + "requires": { + "@babel/code-frame": "7.8.3", + "address": "1.1.2", + "browserslist": "4.8.6", + "chalk": "2.4.2", + "cross-spawn": "7.0.1", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "2.0.0", + "filesize": "6.0.1", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "3.1.1", + "global-modules": "2.0.0", + "globby": "8.0.2", + "gzip-size": "5.1.1", + "immer": "1.10.0", + "inquirer": "7.0.4", + "is-root": "2.1.0", + "loader-utils": "1.2.3", + "open": "^7.0.2", + "pkg-up": "3.1.0", + "react-error-overlay": "^6.0.6", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "strip-ansi": "6.0.0", + "text-table": "0.2.0" + }, + "dependencies": { + "browserslist": { + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.6.tgz", + "integrity": "sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==", + "requires": { + "caniuse-lite": "^1.0.30001023", + "electron-to-chromium": "^1.3.341", + "node-releases": "^1.1.47" + } + }, + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "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==", + "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==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "react-dom": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.12.0.tgz", + "integrity": "sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.18.0" + } + }, + "react-draggable": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-3.3.2.tgz", + "integrity": "sha512-oaz8a6enjbPtx5qb0oDWxtDNuybOylvto1QLydsXgKmwT7e3GXC2eMVDwEMIUYJIFqVG72XpOv673UuuAq6LhA==", + "requires": { + "classnames": "^2.2.5", + "prop-types": "^15.6.0" + } + }, + "react-dropzone": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.0.1.tgz", + "integrity": "sha512-x/6wqRHaR8jsrNiu/boVMIPYuoxb83Vyfv77hO7/3ZRn8Pr+KH5onsCsB8MLBa3zdJl410C5FXPUINbu16XIzw==", + "requires": { + "attr-accept": "^2.0.0", + "file-selector": "^0.1.12", + "prop-types": "^15.7.2" + } + }, + "react-error-boundary": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.0.2.tgz", + "integrity": "sha512-KVzCusRTFpUYG0OFJbzbdRuxNQOBiGXVCqyNpBXM9z5NFsFLzMjUXMjx8gTja6M6WH+D2PvP3yKz4d8gD1PRaA==", + "requires": { + "@babel/runtime": "^7.11.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + } + } + }, + "react-error-overlay": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.6.tgz", + "integrity": "sha512-Yzpno3enVzSrSCnnljmr4b/2KUQSMZaPuqmS26t9k4nW7uwJk6STWmH9heNjPuvqUTO3jOSPkHoKgO4+Dw7uIw==" + }, + "react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + }, + "react-hotkeys-hook": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-3.0.3.tgz", + "integrity": "sha512-kbnb820AUITXxK3qRHq612ivoNvMidIEaVAG7rUDuJMBTlJdSniJjjFl0jddL4iSKJK1d0Vqgn80uPW+spq6yQ==", + "requires": { + "hotkeys-js": "3.8.1" + } + }, + "react-intl-universal": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/react-intl-universal/-/react-intl-universal-2.4.7.tgz", + "integrity": "sha512-2uRqUw4MEIPn+4ivqlMjMqnmSEBO3pMuIw+3Sxy8DGC4nSzL39ZT2p9o/Vj8qpbw+cKb5nuDGMCHRXBBqqDTmw==", + "requires": { + "console-polyfill": "^0.3.0", + "cookie": "^0.3.1", + "escape-html": "^1.0.3", + "intl": "^1.2.5", + "intl-messageformat": "^7.8.4", + "invariant": "^2.2.2", + "lodash.merge": "^4.6.2", + "object-keys": "^1.0.11", + "querystring": "^0.2.0" + }, + "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + } + } + }, + "react-is": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", + "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-loadable": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz", + "integrity": "sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==", + "requires": { + "prop-types": "^15.5.0" + } + }, + "react-popper": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.7.tgz", + "integrity": "sha512-nmqYTx7QVjCm3WUZLeuOomna138R1luC4EqkW3hxJUrAe+3eNz3oFCLYdnPwILfn0mX1Ew2c3wctrjlUMYYUww==", + "requires": { + "@babel/runtime": "^7.1.2", + "create-react-context": "^0.3.0", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + } + }, + "react-query": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.6.0.tgz", + "integrity": "sha512-39ptLt4qaKO1DE+ta6SpPutweEgDvUQj/KlebC+okJ9Nxbs5ExxKV8RYlLeop6vdDFyiMmwYrt1POiF8oWGh1A==", + "requires": { + "@babel/runtime": "^7.5.5", + "match-sorter": "^6.0.2" + }, + "dependencies": { + "match-sorter": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.1.0.tgz", + "integrity": "sha512-sKPMf4kbF7Dm5Crx0bbfLpokK68PUJ/0STUIOPa1ZmTZEA3lCaPK3gapQR573oLmvdkTfGojzySkIwuq6Z6xRQ==", + "requires": { + "@babel/runtime": "^7.12.5", + "remove-accents": "0.4.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + } + } + }, + "react-query-devtools": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-query-devtools/-/react-query-devtools-2.1.1.tgz", + "integrity": "sha512-zbszioKYFvy77Y7WMjXBUQ0/JWgyISQR8qemvGUv1Qkd4V4+0DOty9IaHIQYN4HVZuBNX3dX/JwfJMkJMspBVg==", + "dev": true, + "requires": { + "match-sorter": "^4.1.0" + } + }, + "react-redux": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.1.3.tgz", + "integrity": "sha512-uI1wca+ECG9RoVkWQFF4jDMqmaw0/qnvaSvOoL/GA4dNxf6LoV8sUAcNDvE5NWKs4hFpn0t6wswNQnY3f7HT3w==", + "requires": { + "@babel/runtime": "^7.5.5", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^16.9.0" + } + }, + "react-router": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", + "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "react-router-breadcrumbs-hoc": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/react-router-breadcrumbs-hoc/-/react-router-breadcrumbs-hoc-3.2.10.tgz", + "integrity": "sha512-bXCKkm1fJ81bctl9j9UOmjOWe66oc+D5/RnRpmEdooFRydoE+T5yu4gC8a3j0+17QVszzzNxGkzFl2Z2EE3u0A==" + }, + "react-router-dom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", + "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, + "react-scroll-sync": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/react-scroll-sync/-/react-scroll-sync-0.7.1.tgz", + "integrity": "sha512-8NH4yvcbEkmdwOk5BxmKxBHIUO89wGpqIS+2xMmxJ+XiFTbnBcrG+qU4lcRyS3wVnD3XwbuMo8zjN4FGp8xW0Q==" + }, + "react-scrollbars-custom": { + "version": "4.0.21", + "resolved": "https://registry.npmjs.org/react-scrollbars-custom/-/react-scrollbars-custom-4.0.21.tgz", + "integrity": "sha512-EwIVXBYsZG91Wm90a8ajSjpclXMu3XehcSGz+QbnLDQbmc+Rj/Uj+gP9bgbhyvQTKlhfjoka77VEWu9/DxOwBg==", + "requires": { + "cnbuilder": "^1.1.7", + "react-draggable": "^3.3.2", + "zoom-level": "^1.2.4" + } + }, + "react-side-effect": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.0.tgz", + "integrity": "sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg==" + }, + "react-sortablejs": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/react-sortablejs/-/react-sortablejs-2.0.11.tgz", + "integrity": "sha512-Id44yygU6H/fNRp0uWkGZnKGuBF8GF/Ts6gKX5NfwmzceRjH0e0XHsmBuQ6WXhBIVnMM+XgkEPub851mdti0TA==", + "requires": { + "@types/sortablejs": "^1.10.0", + "classnames": "^2.2.6", + "sortablejs": "1.10.1", + "tiny-invariant": "^1.0.6" + }, + "dependencies": { + "sortablejs": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.1.tgz", + "integrity": "sha512-N6r7GrVmO8RW1rn0cTdvK3JR0BcqecAJ0PmYMCL3ZuqTH3pY+9QyqkmJSkkLyyDvd+AJnwaxTP22Ybr/83V9hQ==" + } + } + }, + "react-split-pane": { + "version": "0.1.91", + "resolved": "https://registry.npmjs.org/react-split-pane/-/react-split-pane-0.1.91.tgz", + "integrity": "sha512-8U56HOKQGFlvXXT1PaHbijjYy2W8g0iQaHC99Q2aV4yYfvUURcRGyfPKN3scGkbYN2pvy3qyoEwHyewUmR1VbQ==", + "requires": { + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.4", + "react-style-proptype": "^3.2.2" + } + }, + "react-style-proptype": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-style-proptype/-/react-style-proptype-3.2.2.tgz", + "integrity": "sha512-ywYLSjNkxKHiZOqNlso9PZByNEY+FTyh3C+7uuziK0xFXu9xzdyfHwg4S9iyiRRoPCR4k2LqaBBsWVmSBwCWYQ==", + "requires": { + "prop-types": "^15.5.4" + } + }, + "react-table": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.6.3.tgz", + "integrity": "sha512-hfPF13zDLxPMpLKzIKCE8RZud9T/XrRTsaCIf8zXpWZIZ2juCl7qrGpo3AQw9eAetXV5DP7s2GDm+hht7qq5Dw==" + }, + "react-table-sticky": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/react-table-sticky/-/react-table-sticky-1.1.2.tgz", + "integrity": "sha512-XnVB4Yf6r8L10YC0Ccu2GrY57IxVWofy19m7s8+q5xzZOudYvyADXsBj6+EenHOvBWTYSviLe8RfaLFIp1lC9w==" + }, + "react-transition-group": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", + "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, + "react-universal-interface": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.0.tgz", + "integrity": "sha512-PzApKKWfd7gvDi1sU/D07jUqnLvFxYqvJi+GEtLvBO5tXJjKr2Sa8ETVHkMA7Jcvdwt7ttbPq7Sed1JpFdNqBQ==", + "requires": { + "tslib": "^1.9.3" + } + }, + "react-use": { + "version": "13.26.1", + "resolved": "https://registry.npmjs.org/react-use/-/react-use-13.26.1.tgz", + "integrity": "sha512-hDc4s8w4WI8G7c1BX+IsrdQFcZPfCHE/6oLpGPtcIPoxVhwj4QvVmNE8RnsnddBJ57HN8Xvkc3jp/8Z/4OB53w==", + "requires": { + "@types/js-cookie": "2.2.4", + "@xobotyi/scrollbar-width": "1.9.0", + "copy-to-clipboard": "^3.2.0", + "fast-deep-equal": "^3.1.1", + "fast-shallow-equal": "^1.0.0", + "js-cookie": "^2.2.1", + "nano-css": "^5.2.1", + "resize-observer-polyfill": "^1.5.1", + "screenfull": "^5.0.0", + "set-harmonic-interval": "^1.0.1", + "throttle-debounce": "^2.1.0", + "ts-easing": "^0.2.0", + "tslib": "^1.10.0" + } + }, + "react-use-context-menu": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/react-use-context-menu/-/react-use-context-menu-0.1.4.tgz", + "integrity": "sha512-3/IC2CTUErMrtcv1IU1Nt9NL2J4YHBiiSBV66wGdPsZzeFK4qhUwQmLg8hUk58Pi5oa8ts3+M3kVKl10HW4o4w==" + }, + "react-virtualized": { + "version": "9.22.3", + "resolved": "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.22.3.tgz", + "integrity": "sha512-MKovKMxWTcwPSxE1kK1HcheQTWfuCxAuBoSTf2gwyMM21NdX/PXUhnoP8Uc5dRKd+nKm8v41R36OellhdCpkrw==", + "requires": { + "@babel/runtime": "^7.7.2", + "clsx": "^1.0.4", + "dom-helpers": "^5.1.3", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "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==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "requires": { + "picomatch": "^2.0.7" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "requires": { + "util.promisify": "^1.0.0" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "requires": { + "minimatch": "3.0.4" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "redux": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", + "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", + "requires": { + "loose-envify": "^1.4.0", + "symbol-observable": "^1.2.0" + } + }, + "redux-cookies-middleware": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/redux-cookies-middleware/-/redux-cookies-middleware-0.2.1.tgz", + "integrity": "sha512-0tWO8Qz0xLoWeti04oAUQvliDNaLpJSEwHkRPBOQT89EVjE17dTRpaXKGkKbHkab37+3n6Nm9IWID7DoTubWLA==", + "requires": { + "js-cookie": "^2.1.4", + "lodash": "^4.17.15" + } + }, + "redux-devtools": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/redux-devtools/-/redux-devtools-3.5.0.tgz", + "integrity": "sha512-pGU8TZNvWxPaCCE432AGm6H6alQbAz80gQM5CzM3SjX9/oSNu/HPF17xFdPQJOXasqyih1Gv167kZDTRe7r0iQ==", + "dev": true, + "requires": { + "lodash": "^4.2.0", + "prop-types": "^15.5.7", + "redux-devtools-instrument": "^1.9.0" + } + }, + "redux-devtools-extension": { + "version": "2.13.8", + "resolved": "https://registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.8.tgz", + "integrity": "sha512-8qlpooP2QqPtZHQZRhx3x3OP5skEV1py/zUdMY28WNAocbafxdG2tRD1MWE7sp8obGMNYuLWanhhQ7EQvT1FBg==" + }, + "redux-devtools-instrument": { + "version": "1.9.6", + "resolved": "https://registry.npmjs.org/redux-devtools-instrument/-/redux-devtools-instrument-1.9.6.tgz", + "integrity": "sha512-MwvY4cLEB2tIfWWBzrUR02UM9qRG2i7daNzywRvabOSVdvAY7s9BxSwMmVRH1Y/7QWjplNtOwgT0apKhHg2Qew==", + "dev": true, + "requires": { + "lodash": "^4.2.0", + "symbol-observable": "^1.0.2" + } + }, + "redux-immutable-state-invariant": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/redux-immutable-state-invariant/-/redux-immutable-state-invariant-2.1.0.tgz", + "integrity": "sha512-3czbDKs35FwiBRsx/3KabUk5zSOoTXC+cgVofGkpBNv3jQcqIe5JrHcF5AmVt7B/4hyJ8MijBIpCJ8cife6yJg==", + "requires": { + "invariant": "^2.1.0", + "json-stringify-safe": "^5.0.1" + } + }, + "redux-persist": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", + "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==" + }, + "redux-thunk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", + "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==" + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + }, + "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==", + "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==" + }, + "regenerator-transform": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regex-parser": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", + "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==" + }, + "regexp.prototype.flags": { + "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==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", + "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==" + }, + "regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "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.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" + }, + "regjsparser": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz", + "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remove-accents": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", + "integrity": "sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "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==" + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "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==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "reselect": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", + "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "resolve-url-loader": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", + "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", + "requires": { + "adjust-sourcemap-loader": "2.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "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==" + }, + "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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" + }, + "rtl-css-js": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.14.0.tgz", + "integrity": "sha512-Dl5xDTeN3e7scU1cWX8c9b6/Nqz3u/HgR4gePc1kWXYiQWVQbKCEyK6+Hxve9LbcJ5EieHy1J9nJCN3grTtGwg==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "rtl-detect": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.3.tgz", + "integrity": "sha512-2sMcZO60tL9YDEFe24gqddg3hJ+xSmJFN8IExcQUxeHxQzydQrN6GHPL+yAWgzItXSI7es53hcZC9pJneuZDKA==" + }, + "rtlcss": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.5.0.tgz", + "integrity": "sha512-NCVdF45w70/3CQeqVvQ84bu2HN8agNn+CDjw+RxXaiWb7mPOmEvltdd1z4qzm9kin4Jnu9ShFBIx28yvWerZ2g==", + "requires": { + "chalk": "^2.4.2", + "findup": "^0.1.5", + "mkdirp": "^0.5.1", + "postcss": "^6.0.23", + "strip-json-comments": "^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==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "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==" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + } + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, + "sanitize.css": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", + "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "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==" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "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=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "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=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "dependencies": { + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "requires": { + "xmlchars": "^2.1.1" + } + }, + "scheduler": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz", + "integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", + "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + }, + "screenfull": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.0.2.tgz", + "integrity": "sha512-cCF2b+L/mnEiORLN5xSAz6H3t18i2oHh9BA8+CQlAh5DRw2+NFAGQJOSYbcGw8B2k04g/lVvFcfZ83b3ysH5UQ==" + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "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==", + "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=" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "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==" + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + } + } + }, + "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==", + "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", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-harmonic-interval": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz", + "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^2.0.1", + "lazy-cache": "^0.2.3", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "requires": { + "is-buffer": "^1.0.2" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "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==" + } + } + }, + "sisteransi": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz", + "integrity": "sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "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=" + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "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==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "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==" + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "spdy": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", + "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stack-generator": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.5.tgz", + "integrity": "sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q==", + "requires": { + "stackframe": "^1.1.1" + } + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" + }, + "stackframe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz", + "integrity": "sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ==" + }, + "stacktrace-gps": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.0.4.tgz", + "integrity": "sha512-qIr8x41yZVSldqdqe6jciXEaSCKw1U8XTXpjDuy0ki/apyTn/r3w9hDAAQOhZdxvsC93H+WwwEu5cq5VemzYeg==", + "requires": { + "source-map": "0.5.6", + "stackframe": "^1.1.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" + } + } + }, + "stacktrace-js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz", + "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==", + "requires": { + "error-stack-parser": "^2.0.6", + "stack-generator": "^2.0.5", + "stacktrace-gps": "^3.0.4" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "requires": { + "astral-regex": "^1.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=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "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==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.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==" + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "requires": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==" + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "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==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "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==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "stylis": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.0.tgz", + "integrity": "sha512-pP7yXN6dwMzAR29Q0mBrabPCe0/mNO1MSr93bhay+hcZondvMMTpeGyd8nbhYJdyperNT2DRxONQuUGcJr5iPw==" + }, + "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" + } + }, + "svg-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.3.tgz", + "integrity": "sha512-fnCWiifNhK8i2Z7b9R5tbNahpxrRdAaQbnoxKlT2KrSCj9Kq/yBSgulCRgBJRhy1dPnSY5slg5ehPUnzpEcHlg==" + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "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.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "synchronous-promise": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.10.tgz", + "integrity": "sha512-6PC+JRGmNjiG3kJ56ZMNWDPL8hjyghF5cMXIFOKg+NiwwEZZIvxTWd0pinWKyD227odg9ygF8xVhhz7gb8Uq7A==" + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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=" + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "terser": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz", + "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.4.tgz", + "integrity": "sha512-Nv96Nws2R2nrFOpbzF6IxRDpIkkIfmhvOws+IqMvYdFLO7o6wAILWFKONFgaYy8+T4LVz77DQW0f7wOeDEAjrg==", + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", + "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-worker": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", + "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "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==", + "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==" + }, + "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==", + "requires": { + "find-up": "^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==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + }, + "throttle-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.1.0.tgz", + "integrity": "sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg==" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "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==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "requires": { + "glob": "^7.1.2" + } + }, + "ts-easing": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz", + "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==" + }, + "ts-pnp": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.5.tgz", + "integrity": "sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA==" + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typescript": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", + "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==", "dev": true }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "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==" + }, + "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==" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, "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==", - "dev": true, "requires": { "punycode": "^2.1.0" } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "wait-for-expect": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz", + "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==" + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.x" + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "dependencies": { + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "optional": true + }, + "aproba": { + "version": "1.2.0", + "resolved": false, + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": false, + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": false, + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "resolved": false, + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "debug": { + "version": "3.2.6", + "resolved": false, + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": false, + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": false, + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": false, + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": false, + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "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.6", + "resolved": false, + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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=", + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": false, + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": false, + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": false, + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "optional": true + }, + "ini": { + "version": "1.3.5", + "resolved": false, + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": false, + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "optional": true + }, + "minipass": { + "version": "2.9.0", + "resolved": false, + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": false, + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": false, + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "resolved": false, + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + }, + "needle": { + "version": "2.4.0", + "resolved": false, + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "resolved": false, + "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "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.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": false, + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "resolved": false, + "integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==", + "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==", + "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=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "osenv": { + "version": "0.1.5", + "resolved": false, + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "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=", + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "optional": true + }, + "rc": { + "version": "1.2.8", + "resolved": false, + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "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=", + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": false, + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "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.7.1", + "resolved": false, + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": false, + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": false, + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "sax": { + "version": "1.2.4", + "resolved": false, + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": false, + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "string-width": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "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==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "optional": true + }, + "tar": { + "version": "4.4.13", + "resolved": false, + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": false, + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "optional": true + }, + "yallist": { + "version": "3.1.1", + "resolved": false, + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "optional": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "webpack": { + "version": "4.41.5", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.5.tgz", + "integrity": "sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw==", + "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", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.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", + "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.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" + }, + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "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" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "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==", + "requires": { + "ajv": "^6.1.0", + "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==" + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.2.tgz", + "integrity": "sha512-pxZKPYb+n77UN8u9YxXT4IaIrGcNtijh/mi8TXbErHmczw0DtPnMTTjHj+eNjkqLOaAZM/qD7V59j/qJsEiaZA==", + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.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.6", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^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=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "optional": true + }, + "aproba": { + "version": "1.2.0", + "resolved": false, + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": false, + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": false, + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "resolved": false, + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "debug": { + "version": "3.2.6", + "resolved": false, + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": false, + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": false, + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": false, + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": false, + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "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.6", + "resolved": false, + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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=", + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": false, + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": false, + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": false, + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "optional": true + }, + "ini": { + "version": "1.3.5", + "resolved": false, + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": false, + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "optional": true + }, + "minipass": { + "version": "2.9.0", + "resolved": false, + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": false, + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": false, + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "resolved": false, + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + }, + "needle": { + "version": "2.4.0", + "resolved": false, + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "resolved": false, + "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "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.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": false, + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "resolved": false, + "integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==", + "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==", + "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=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "osenv": { + "version": "0.1.5", + "resolved": false, + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "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=", + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "optional": true + }, + "rc": { + "version": "1.2.8", + "resolved": false, + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "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=", + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": false, + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "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.7.1", + "resolved": false, + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": false, + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": false, + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "sax": { + "version": "1.2.4", + "resolved": false, + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": false, + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "string-width": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "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==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "optional": true + }, + "tar": { + "version": "4.4.13", + "resolved": false, + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": false, + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "optional": true + }, + "yallist": { + "version": "3.1.1", + "resolved": false, + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "optional": 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==" + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "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==" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.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=" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "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=" + }, + "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==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "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=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.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==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "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=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "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==", + "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==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-manifest-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", + "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", + "requires": { + "fs-extra": "^7.0.0", + "lodash": ">=3.5 <5", + "object.entries": "^1.1.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "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==" + } + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "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==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "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=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "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=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "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=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "workbox-background-sync": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", + "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-broadcast-update": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", + "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-build": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", + "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", + "requires": { + "@babel/runtime": "^7.3.4", + "@hapi/joi": "^15.0.0", + "common-tags": "^1.8.0", + "fs-extra": "^4.0.2", + "glob": "^7.1.3", + "lodash.template": "^4.4.0", + "pretty-bytes": "^5.1.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "workbox-background-sync": "^4.3.1", + "workbox-broadcast-update": "^4.3.1", + "workbox-cacheable-response": "^4.3.1", + "workbox-core": "^4.3.1", + "workbox-expiration": "^4.3.1", + "workbox-google-analytics": "^4.3.1", + "workbox-navigation-preload": "^4.3.1", + "workbox-precaching": "^4.3.1", + "workbox-range-requests": "^4.3.1", + "workbox-routing": "^4.3.1", + "workbox-strategies": "^4.3.1", + "workbox-streams": "^4.3.1", + "workbox-sw": "^4.3.1", + "workbox-window": "^4.3.1" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "workbox-cacheable-response": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", + "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-core": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", + "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==" + }, + "workbox-expiration": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", + "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-google-analytics": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", + "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", + "requires": { + "workbox-background-sync": "^4.3.1", + "workbox-core": "^4.3.1", + "workbox-routing": "^4.3.1", + "workbox-strategies": "^4.3.1" + } + }, + "workbox-navigation-preload": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", + "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-precaching": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", + "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-range-requests": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", + "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-routing": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", + "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-strategies": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", + "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-streams": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", + "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-sw": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", + "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==" + }, + "workbox-webpack-plugin": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz", + "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==", + "requires": { + "@babel/runtime": "^7.0.0", + "json-stable-stringify": "^1.0.1", + "workbox-build": "^4.3.1" + } + }, + "workbox-window": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", + "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "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==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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=" + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "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==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yaml": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", + "integrity": "sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==", + "requires": { + "@babel/runtime": "^7.6.3" + } + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.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": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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=" + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.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==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yup": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.28.1.tgz", + "integrity": "sha512-xSHMZA7UyecSG/CCTDCtnYZMjBrYDR/C7hu0fMsZ6UcS/ngko4qCVFbw+CAmNtHlbItKkvQ3YXITODeTj/dUkw==", + "requires": { + "@babel/runtime": "^7.0.0", + "fn-name": "~2.0.1", + "lodash": "^4.17.11", + "lodash-es": "^4.17.11", + "property-expr": "^1.5.0", + "synchronous-promise": "^2.0.6", + "toposort": "^2.0.2" + } + }, + "zoom-level": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/zoom-level/-/zoom-level-1.2.4.tgz", + "integrity": "sha512-nGFUhyU3Y4jWh6l+hYCVVUxu3vrD0i/RkumJRzYGU0COMWMs2Szs84mltacd64R9zJcxwKckWQN/KKbfB1btVA==" } } } diff --git a/client/package.json b/package.json similarity index 100% rename from client/package.json rename to package.json diff --git a/client/public/favicons/favicon-32.ico b/public/favicons/favicon-32.ico similarity index 100% rename from client/public/favicons/favicon-32.ico rename to public/favicons/favicon-32.ico diff --git a/client/public/index.html b/public/index.html similarity index 100% rename from client/public/index.html rename to public/index.html diff --git a/client/public/logo192.png b/public/logo192.png similarity index 100% rename from client/public/logo192.png rename to public/logo192.png diff --git a/client/public/logo512.png b/public/logo512.png similarity index 100% rename from client/public/logo512.png rename to public/logo512.png diff --git a/client/public/manifest.json b/public/manifest.json similarity index 100% rename from client/public/manifest.json rename to public/manifest.json diff --git a/client/public/robots.txt b/public/robots.txt similarity index 100% rename from client/public/robots.txt rename to public/robots.txt diff --git a/client/scripts/build.js b/scripts/build.js similarity index 100% rename from client/scripts/build.js rename to scripts/build.js diff --git a/client/scripts/start.js b/scripts/start.js similarity index 100% rename from client/scripts/start.js rename to scripts/start.js diff --git a/client/scripts/test.js b/scripts/test.js similarity index 100% rename from client/scripts/test.js rename to scripts/test.js diff --git a/server/.babelrc b/server/.babelrc deleted file mode 100644 index bc58410c6..000000000 --- a/server/.babelrc +++ /dev/null @@ -1,9 +0,0 @@ - -{ - "presets": ["@babel/preset-env"], - "retainLines": true, - "plugins": [ - "@babel/plugin-transform-runtime", - "@babel/plugin-syntax-dynamic-import" - ] -} \ No newline at end of file diff --git a/server/.env.example b/server/.env.example deleted file mode 100644 index 74ac4ba58..000000000 --- a/server/.env.example +++ /dev/null @@ -1,40 +0,0 @@ -MAIL_HOST=smtp.mailtrap.io -MAIL_USERNAME=842f331d3dc005 -MAIL_PASSWORD=172f97b34f1a17 -MAIL_PORT=587 -MAIL_SECURE=false - -SYSTEM_DB_CLIENT=mysql -SYSTEM_DB_HOST=127.0.0.1 -SYSTEM_DB_USER=root -SYSTEM_DB_PASSWORD=root -SYSTEM_DB_NAME=bigcapital_system -SYSTEM_MIGRATIONS_DIR=./src/system/migrations -SYSTEM_SEEDS_DIR=./src/system/seeds - -TENANT_DB_CLIENT=mysql -TENANT_DB_NAME_PERFIX=bigcapital_tenant_ -TENANT_DB_HOST=127.0.0.1 -TENANT_DB_PASSWORD=root -TENANT_DB_USER=root -TENANT_DB_CHARSET=utf8 -TENANT_MIGRATIONS_DIR=src/database/migrations -TENANT_SEEDS_DIR=src/database/seeds/core - -DB_MANAGER_SUPER_USER=root -DB_MANAGER_SUPER_PASSWORD=root - -MONGODB_DATABASE_URL=mongodb://localhost/bigcapital - - -JWT_SECRET=b0JDZW56RnV6aEthb0RGPXVEcUI - -CONTACT_US_MAIL=support@bigcapital.ly -BASE_URL=https://bigcapital.ly - -LICENSES_AUTH_USER=root -LICENSES_AUTH_PASSWORD=root - -AGENDASH_AUTH_USER=agendash -AGENDASH_AUTH_PASSWORD=123123 -BROWSER_WS_ENDPOINT=ws://localhost:4080/ \ No newline at end of file diff --git a/server/.eslintrc.js b/server/.eslintrc.js deleted file mode 100644 index 42c053d47..000000000 --- a/server/.eslintrc.js +++ /dev/null @@ -1,41 +0,0 @@ -module.exports = { - env: { - browser: false, - es6: true, - node: true, - mocha: true, - }, - extends: [ - 'airbnb-base', - ], - plugins: [ - 'import', - ], - globals: { - Atomics: 'readonly', - SharedArrayBuffer: 'readonly', - }, - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - rules: { - "no-unused-vars": [ - "error", - { - "varsIgnorePattern": "describe|afterEach|beforeEach" - } - ], - "import/no-extraneous-dependencies": [ - "error", {"devDependencies": true} - ], - }, - settings: { - 'import/resolver': { - node: {}, - webpack: { - config: 'webpack.config.js' - } - }, - }, -}; diff --git a/server/.gitignore b/server/.gitignore deleted file mode 100644 index 5207e9543..000000000 --- a/server/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -/node_modules/ -/.env -/storage -package-lock.json -stdout.log -/dist -/build \ No newline at end of file diff --git a/server/CHANGELOG.md b/server/CHANGELOG.md deleted file mode 100644 index d7c75e62a..000000000 --- a/server/CHANGELOG.md +++ /dev/null @@ -1,28 +0,0 @@ - -# Change Log -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](http://keepachangelog.com/) -and this project adheres to [Semantic Versioning](http://semver.org/). - -## [Unreleased] - yyyy-mm-dd - -Here we write upgrading notes for brands. It's a team effort to make them as -straightforward as possible. - -### Added -- Dynamic filter for resources list. -- Dynamic search for resources list. -- Dynamic resources to switch between active and inactive items. -- Add virtual computed attributes to sale invoice list and individual. -- This CHANGELOG file to hopefully serve as an evolving example of a - standardized open source project CHANGELOG. -- Remove subscription free trial. - -### Changed - - Redesigne organization tenant metadata table to depend on table on system - database instead of tenant database. - - - -### Fixed - \ No newline at end of file diff --git a/server/bin/bigcapital.js b/server/bin/bigcapital.js deleted file mode 100644 index 54a7c6014..000000000 --- a/server/bin/bigcapital.js +++ /dev/null @@ -1,203 +0,0 @@ -import commander from 'commander'; -import color from 'colorette'; -import argv from 'getopts' -import config from '../src/config'; -import { - initSystemKnex, - getAllSystemTenants, - initTenantKnex, - exit, - success, - log, -} from './utils'; - -// - bigcapital system:migrate:latest -// - bigcapital system:migrate:rollback -// - bigcapital tenants:migrate:latest -// - bigcapital tenants:migrate:latest --tenant_id=XXX -// - bigcapital tenants:migrate:rollback -// - bigcapital tenants:migrate:rollback --tenant_id=XXX -// - bigcapital tenants:migrate:make -// - bigcapital system:migrate:make -// - bigcapital tenants:list - -commander - .command('system:migrate:rollback') - .description('Migrate the system database of the application.') - .action(async () => { - try { - const sysKnex = await initSystemKnex(); - const [batchNo, _log] = await sysKnex.migrate.rollback(); - - if (_log.length === 0) { - success(color.cyan('Already at the base migration')); - } - success( - color.green( - `Batch ${batchNo} rolled back: ${_log.length} migrations` - ) + (argv.verbose ? `\n${color.cyan(_log.join('\n'))}` : '') - ); - } catch(error) { - exit(error); - } - }); - -commander - .command('system:migrate:latest') - .description('Rollback latest mgiration of the system database.') - .action(async () => { - try { - const sysKnex = await initSystemKnex(); - const [batchNo, log] = await sysKnex.migrate.latest(); - - if (log.length === 0) { - success(color.cyan('Already up to date')); - } - success( - color.green(`Batch ${batchNo} run: ${log.length} migrations`) + - (argv.verbose ? `\n${color.cyan(log.join('\n'))}` : '') - ); - } catch(error) { - exit(error); - } - }); - -commander - .command('system:migrate:make ') - .description('Created a named migration file to the system database.') - .action(async (name) => { - const sysKnex = await initSystemKnex(); - - sysKnex.migrate.make(name).then((name) => { - success(color.green(`Created Migration: ${name}`)); - }).catch(exit) - }); - -commander - .command('tenants:migrate:make ') - .description('Created a name migration file to the tenants databases.') - .action(async (name) => { - const sysKnex = await initTenantKnex(); - - sysKnex.migrate.make(name).then((name) => { - success(color.green(`Created Migration: ${name}`)); - }).catch(exit) - }); - -commander - .command('tenants:list') - .description('Retrieve a list of all system tenants databases.') - .action(async (cmd) => { - try{ - const sysKnex = await initSystemKnex(); - const tenants = await getAllSystemTenants(sysKnex); - - tenants.forEach((tenant) => { - const dbName = `${config.tenant.db_name_prefix}${tenant.organizationId}`; - console.log(`ID: ${tenant.id} | Organization ID: ${tenant.organizationId} | DB Name: ${dbName}`); - }); - } catch(error) { exit(error); }; - success('---'); - }); - -commander - .command('tenants:migrate:rollback') - .description('Rollback the last batch of tenants migrations.') - .option('-t, --tenant_id [tenant_id]', 'Which tenant id do you migrate.') - .action(async (cmd) => { - try { - const sysKnex = await initSystemKnex(); - const tenants = await getAllSystemTenants(sysKnex); - const tenantsOrgsIds = tenants.map((tenant) => tenant.organizationId); - - if (cmd.tenant_id && tenantsOrgsIds.indexOf(cmd.tenant_id) === -1) { - exit(`The given tenant id ${cmd.tenant_id} is not exists.`); - } - - const migrateOpers = []; - const migrateTenant = async (organizationId) => { - try { - const tenantKnex = await initTenantKnex(organizationId); - const [batchNo, _log] = await tenantKnex.migrate.rollback(); - const tenantDb = `${config.tenant.db_name_prefix}${organizationId}`; - - if (_log.length === 0) { - log(color.cyan('Already at the base migration')); - } - log( - color.green( - `Tenant: ${tenantDb} > Batch ${batchNo} rolled back: ${_log.length} migrations` - ) + (argv.verbose ? `\n${color.cyan(_log.join('\n'))}` : '') - ); - log('---------------'); - } catch (error) { exit(error); } - }; - - if (!cmd.tenant_id) { - tenants.forEach((tenant) => { - const oper = migrateTenant(tenant.organizationId); - migrateOpers.push(oper); - }); - } else { - const oper = migrateTenant(cmd.tenant_id); - migrateOpers.push(oper); - } - Promise.all(migrateOpers).then(() => { - success('All tenants are rollbacked.'); - }); - } catch (error) { exit(error); } - }); - -commander - .command('tenants:migrate:latest') - .description('Migrate all tenants or the given tenant id.') - .option('-t, --tenant_id [tenant_id]', 'Which tenant id do you migrate.') - .action(async (cmd) => { - try { - const sysKnex = await initSystemKnex(); - const tenants = await getAllSystemTenants(sysKnex); - const tenantsOrgsIds = tenants.map(tenant => tenant.organizationId); - - if (cmd.tenant_id && tenantsOrgsIds.indexOf(cmd.tenant_id) === -1) { - exit(`The given tenant id ${cmd.tenant_id} is not exists.`); - } - // Validate the tenant id exist first of all. - const migrateOpers = []; - const migrateTenant = async (organizationId) => { - try { - const tenantKnex = await initTenantKnex(organizationId); - const [batchNo, _log] = await tenantKnex.migrate.latest(); - - const tenantDb = `${config.tenant.db_name_prefix}${organizationId}`; - - if (_log.length === 0) { - log(color.cyan('Already up to date')); - } - log( - color.green(`Tenant ${tenantDb} > Batch ${batchNo} run: ${_log.length} migrations`) + - (argv.verbose ? `\n${color.cyan(log.join('\n'))}` : '') - ); - log('-------------------'); - } catch (error) { - log(error); - } - } - if (!cmd.tenant_id) { - tenants.forEach((tenant) => { - const oper = migrateTenant(tenant.organizationId); - migrateOpers.push(oper); - }); - } else { - const oper = migrateTenant(cmd.tenant_id); - migrateOpers.push(oper); - } - - Promise.all(migrateOpers).then(() => { - success('All tenants are migrated.'); - }); - } catch (error) { - exit(error); - } - }); - -commander.parse(process.argv); \ No newline at end of file diff --git a/server/bin/utils.js b/server/bin/utils.js deleted file mode 100644 index 3c3dff0e2..000000000 --- a/server/bin/utils.js +++ /dev/null @@ -1,94 +0,0 @@ -import Knex from 'knex'; -import { knexSnakeCaseMappers } from 'objection'; -import color from 'colorette'; -import config from '../src/config'; -// import { systemKnexConfig } from '../src/config/knexConfig'; - -function initSystemKnex() { - return Knex({ - client: config.system.db_client, - connection: { - host: config.system.db_host, - user: config.system.db_user, - password: config.system.db_password, - database: config.system.db_name, - charset: 'utf8', - }, - migrations: { - directory: config.system.migrations_dir, - }, - seeds: { - directory: config.system.seeds_dir, - }, - pool: { min: 0, max: 7 }, - ...knexSnakeCaseMappers({ upperCase: true }), - }); -} - -function getAllSystemTenants(knex) { - return knex('tenants'); -} - -function initTenantKnex(organizationId) { - return Knex({ - client: config.tenant.db_client, - connection: { - host: config.tenant.db_host, - user: config.tenant.db_user, - password: config.tenant.db_password, - database: `${config.tenant.db_name_prefix}${organizationId}`, - charset: config.tenant.charset, - }, - migrations: { - directory: config.tenant.migrations_dir, - }, - seeds: { - directory: config.tenant.seeds_dir, - }, - pool: { min: 0, max: 5 }, - ...knexSnakeCaseMappers({ upperCase: true }), - }) -} - -function exit(text) { - if (text instanceof Error) { - console.error( - color.red(`${text.detail ? `${text.detail}\n` : ''}${text.stack}`) - ); - } else { - console.error(color.red(text)); - } - process.exit(1); -} - -function success(text) { - console.log(text); - process.exit(0); -} - -function log(text) { - console.log(text); -} - -function getDeepValue(prop, obj) { - if (!Object.keys(obj).length) { return []; } - - return Object.entries(obj).reduce((acc, [key, val]) => { - if (key === prop) { - acc.push(val); - } else { - acc.push(Array.isArray(val) ? val.map(getIds).flat() : getIds(val)); - } - return acc.flat(); - }, []); -} - -export { - initTenantKnex, - initSystemKnex, - getAllSystemTenants, - exit, - success, - log, - getDeepValue, -} \ No newline at end of file diff --git a/server/nodemon.json b/server/nodemon.json deleted file mode 100644 index 346bc45eb..000000000 --- a/server/nodemon.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "restartable": "rs", - "watch": [ - "src", - ".env" - ], - "ignore": [ - ".git", - "src/**/*.spec.ts" - ], - "execMap": { - "ts": "node --inspect -r ts-node/register/transpile-only ./src/server.ts" - }, - "env": { - "NODE_ENV": "development" - } -} \ No newline at end of file diff --git a/server/package.json b/server/package.json deleted file mode 100644 index ca0605d7a..000000000 --- a/server/package.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "name": "bigcapital-server", - "version": "0.0.1", - "description": "", - "main": "src/server.ts", - "scripts": { - "start": "cross-env NODE_PATH=./src nodemon", - "inspect": "cross-env NODE_PATH=./src nodemon src/server.ts", - "copy-i18n": "cpy --cwd=src/locales --parents '**/*.json' ../../build/locales", - "clear": "rimraf build", - "build:ts": "tsc -p tsconfig.json", - "build:resources": "gulp --gulpfile=scripts/gulpfile.js styles styles-rtl", - "build": "npm-run-all clear build:ts copy-i18n" - }, - "author": "Ahmed Bouhuolia, ", - "license": "ISC", - "bin": { - "bigcapital": "./bin/bigcapital.js" - }, - "dependencies": { - "@hapi/boom": "^7.4.3", - "@types/i18n": "^0.8.7", - "@types/mathjs": "^6.0.12", - "accepts": "^1.3.7", - "accounting": "^0.4.1", - "agenda": "^3.1.0", - "agendash": "^1.0.0", - "app-root-path": "^3.0.0", - "async": "^3.2.0", - "axios": "^0.20.0", - "bcryptjs": "^2.4.3", - "bluebird": "^3.7.2", - "compression": "^1.7.4", - "country-codes-list": "^1.6.8", - "cpy": "^8.1.2", - "cpy-cli": "^3.1.1", - "crypto-random-string": "^3.2.0", - "csurf": "^1.10.0", - "deep-map": "^2.0.0", - "deepdash": "^5.3.7", - "dotenv": "^8.1.0", - "errorhandler": "^1.5.1", - "es6-weak-map": "^2.0.3", - "esm": "^3.2.25", - "event-dispatch": "^0.4.1", - "express": "^4.17.1", - "express-basic-auth": "^1.2.0", - "express-boom": "^3.0.0", - "express-fileupload": "^1.1.7-alpha.3", - "express-oauth-server": "^2.0.0", - "express-validator": "^6.8.0", - "gulp": "^4.0.2", - "gulp-sass": "^5.0.0", - "helmet": "^3.21.0", - "i18n": "^0.8.5", - "is-my-json-valid": "^2.20.5", - "js-money": "^0.6.3", - "jsonwebtoken": "^8.5.1", - "knex": "^0.20.3", - "knex-cleaner": "^1.3.0", - "knex-db-manager": "^0.6.1", - "libphonenumber-js": "^1.9.6", - "lodash": "^4.17.15", - "mathjs": "^9.4.0", - "memory-cache": "^0.2.0", - "moment": "^2.24.0", - "moment-range": "^4.0.2", - "mongoose": "^5.10.0", - "mustache": "^3.0.3", - "mysql": "^2.17.1", - "mysql2": "^1.6.5", - "node-cache": "^4.2.1", - "nodemailer": "^6.3.0", - "nodemon": "^1.19.1", - "object-hash": "^2.0.3", - "objection": "^2.0.10", - "objection-filter": "^4.0.1", - "objection-soft-delete": "^1.0.7", - "pluralize": "^8.0.0", - "pug": "^3.0.2", - "puppeteer": "^10.2.0", - "qim": "0.0.52", - "ramda": "^0.27.1", - "rate-limiter-flexible": "^2.1.14", - "reflect-metadata": "^0.1.13", - "rtl-detect": "^1.0.4", - "ts-transformer-keys": "^0.4.2", - "tsyringe": "^4.3.0", - "uniqid": "^5.2.0", - "winston": "^3.2.1" - }, - "devDependencies": { - "@types/lodash": "^4.14.158", - "chai": "^4.2.0", - "chai-http": "^4.3.0", - "chai-things": "^0.2.0", - "colorette": "^1.2.0", - "commander": "^5.0.0", - "cross-env": "^5.2.0", - "eslint": "^6.2.1", - "eslint-config-airbnb-base": "^14.0.0", - "eslint-friendly-formatter": "^4.0.1", - "eslint-import-resolver-webpack": "^0.11.1", - "eslint-loader": "^2.2.1", - "eslint-plugin-import": "^2.19.1", - "faker": "^4.1.0", - "getopts": "^2.2.5", - "gulp-postcss": "^9.0.0", - "gulp-rename": "^2.0.0", - "knex-factory": "0.0.6", - "merge-stream": "^2.0.0", - "mocha": "^5.2.0", - "module-alias": "^2.2.2", - "npm-run-all": "^4.1.5", - "nyc": "^14.1.1", - "regenerator-runtime": "^0.13.7", - "rimraf": "^3.0.2", - "rtlcss": "^3.3.0", - "sass": "^1.37.5", - "sinon": "^7.4.2", - "ts-node": "^9.0.0", - "typedi": "^0.8.0", - "typescript": "^3.9.7", - "webpack-cli": "^4.6.0" - }, - "_moduleAliases": { - "api": "build/api", - "collection": "build/collection", - "config": "build/config", - "data": "build/data", - "database": "build/database", - "decorators": "build/decorators", - "exceptions": "build/exceptions", - "interfaces": "build/interfaces", - "jobs": "build/jobs", - "lib": "build/lib", - "loaders": "build/loaders", - "locales": "build/locales", - "models": "build/models", - "repositories": "build/repositories", - "services": "build/services", - "subscribers": "build/subscribers", - "system": "build/system", - "utils": "build/utils" - }, - "_moduleAliases": {} -} \ No newline at end of file diff --git a/server/resources/css/modules/estimate-rtl.css b/server/resources/css/modules/estimate-rtl.css deleted file mode 100644 index ef97a4ce9..000000000 --- a/server/resources/css/modules/estimate-rtl.css +++ /dev/null @@ -1,552 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ -/* Document - ========================================================================== */ -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ -html { - line-height: 1.15; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ -} - -/* Sections - ========================================================================== */ -/** - * Remove the margin in all browsers. - */ -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ -hr { - box-sizing: content-box; - /* 1 */ - height: 0; - /* 1 */ - overflow: visible; - /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -pre { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ -/** - * Remove the gray background on active links in IE 10. - */ -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ -abbr[title] { - border-bottom: none; - /* 1 */ - text-decoration: underline; - /* 2 */ - text-decoration: underline dotted; - /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -code, -kbd, -samp { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ -/** - * Remove the border on images inside links in IE 10. - */ -img { - border-style: none; -} - -/* Forms - ========================================================================== */ -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - line-height: 1.15; - /* 1 */ - margin: 0; - /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ -button, -input { - /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ -button, -select { - /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ -button::-moz-focus-inner, -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ -button:-moz-focusring, -[type=button]:-moz-focusring, -[type=reset]:-moz-focusring, -[type=submit]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ -legend { - box-sizing: border-box; - /* 1 */ - color: inherit; - /* 2 */ - display: table; - /* 1 */ - max-width: 100%; - /* 1 */ - padding: 0; - /* 3 */ - white-space: normal; - /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ -[type=checkbox], -[type=radio] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ -[type=search] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* Interactive - ========================================================================== */ -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ -/** - * Add the correct display in IE 10+. - */ -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ -[hidden] { - display: none; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -th { - text-align: inherit; - text-align: -webkit-match-parent; -} - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; -} - -body { - margin: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - background-color: #fff; - direction: rtl; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: transparent; -} - -@font-face { - font-family: "Noto Sans"; - src: local("Noto Sans"), url(data:font/woff2;base64,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) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -@font-face { - font-family: "Segoe UI"; - src: local("Segoe UI"), url(data:application/x-font-woff;charset=utf-8;base64,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) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -body { - background: #f8f9fa; - text-align: right; -} -html[lang^=ar] body { - font-family: "Segoe UI"; -} -html[lang^=en] body { - font-family: "Noto Sans"; -} -@media print { - body { - background: #fff; - } -} - -.page { - background: white; - display: block; - margin: 0.5cm auto; - box-shadow: rgba(122, 136, 146, 0.15) 0px 1px 3px 1px; - width: 21cm; - height: 29.7cm; -} -@media print { - .page { - margin: 0; - box-shadow: 0 0 0; - width: 100%; - height: auto; - } -} -.page[size=A4] { - width: 21cm; - height: 29.7cm; -} -.page[size=A4][layout=landscape] { - width: 29.7cm; - height: 21cm; -} -.page[size=A3] { - width: 29.7cm; - height: 42cm; -} -.page[size=A3][layout=landscape] { - width: 42cm; - height: 29.7cm; -} -.page[size=A5] { - width: 14.8cm; - height: 21cm; -} -.page[size=A5][layout=landscape] { - width: 21cm; - height: 14.8cm; -} - -.estimate { - text-align: right; - padding: 45px; -} -.estimate__header { - display: flex; - align-items: center; - justify-content: space-between; - margin: 0 0 60px; -} -.estimate__header .organization .title { - margin: 0 0 10px; -} -.estimate__header .paper .title { - font-weight: 400; - text-transform: uppercase; - margin: 0 0 6px; - font-size: 26px; -} -.estimate__meta { - display: flex; - flex-wrap: wrap; - margin-bottom: 40px; -} -.estimate__meta-item { - flex: 0 1 25%; - padding-left: 10px; - font-size: 16px; - font-weight: 400; - line-height: 1.6rem; - margin-bottom: 20px; - display: flex; - flex-direction: column; -} -.estimate__meta-item .value { - color: #000; -} -.estimate__meta-item .label { - color: #555; - margin-bottom: 2px; -} -.estimate__meta-item--amount { - flex: 0 1 50%; -} -.estimate__meta-item--amount .value { - font-weight: bold; - font-size: 20px; -} -.estimate__meta-item--billed-to { - flex: 0 1 50%; -} -.estimate__table { - display: flex; - flex-direction: column; - margin-bottom: 60px; -} -.estimate__table table { - font-size: 15px; - color: #000; - border-top: 2px solid #000; - text-align: right; -} -.estimate__table table thead th, -.estimate__table table tbody tr td { - margin-bottom: 15px; - background: transparent; -} -.estimate__table table thead tr { - color: #000; -} -.estimate__table table thead th { - font-size: 16px; - font-weight: 400; - border-bottom: none; - padding: 10px; -} -.estimate__table table thead th:first-child { - padding-right: 0; -} -.estimate__table table thead th:last-child { - padding-left: 0; -} -.estimate__table table tbody tr td { - font-size: 15px; - padding: 10px; - border-bottom: 1px solid #cecbcb; -} -.estimate__table table tbody tr td:first-child { - padding-right: 0; -} -.estimate__table table tbody tr td::last-child { - padding-left: 0; -} -.estimate__table table thead tr th.item { - width: 45%; -} -.estimate__table table thead tr th.rate { - width: 18%; -} -.estimate__table table thead tr th.quantity { - width: 16%; -} -.estimate__table table thead tr th.total { - width: 21%; -} -.estimate__conditions__title { - color: #666; -} \ No newline at end of file diff --git a/server/resources/css/modules/estimate.css b/server/resources/css/modules/estimate.css deleted file mode 100644 index 0cb0abce2..000000000 --- a/server/resources/css/modules/estimate.css +++ /dev/null @@ -1,552 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ -/* Document - ========================================================================== */ -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ -html { - line-height: 1.15; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ -} - -/* Sections - ========================================================================== */ -/** - * Remove the margin in all browsers. - */ -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ -hr { - box-sizing: content-box; - /* 1 */ - height: 0; - /* 1 */ - overflow: visible; - /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -pre { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ -/** - * Remove the gray background on active links in IE 10. - */ -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ -abbr[title] { - border-bottom: none; - /* 1 */ - text-decoration: underline; - /* 2 */ - text-decoration: underline dotted; - /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -code, -kbd, -samp { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ -/** - * Remove the border on images inside links in IE 10. - */ -img { - border-style: none; -} - -/* Forms - ========================================================================== */ -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - line-height: 1.15; - /* 1 */ - margin: 0; - /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ -button, -input { - /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ -button, -select { - /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ -button::-moz-focus-inner, -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ -button:-moz-focusring, -[type=button]:-moz-focusring, -[type=reset]:-moz-focusring, -[type=submit]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ -legend { - box-sizing: border-box; - /* 1 */ - color: inherit; - /* 2 */ - display: table; - /* 1 */ - max-width: 100%; - /* 1 */ - padding: 0; - /* 3 */ - white-space: normal; - /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ -[type=checkbox], -[type=radio] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ -[type=search] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* Interactive - ========================================================================== */ -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ -/** - * Add the correct display in IE 10+. - */ -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ -[hidden] { - display: none; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -th { - text-align: inherit; - text-align: -webkit-match-parent; -} - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; -} - -body { - margin: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - background-color: #fff; - direction: ltr; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: transparent; -} - -@font-face { - font-family: "Noto Sans"; - src: local("Noto Sans"), url(data:font/woff2;base64,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) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -@font-face { - font-family: "Segoe UI"; - src: local("Segoe UI"), url(data:application/x-font-woff;charset=utf-8;base64,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) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -body { - background: #f8f9fa; - text-align: left; -} -html[lang^=ar] body { - font-family: "Segoe UI"; -} -html[lang^=en] body { - font-family: "Noto Sans"; -} -@media print { - body { - background: #fff; - } -} - -.page { - background: white; - display: block; - margin: 0.5cm auto; - box-shadow: rgba(122, 136, 146, 0.15) 0px 1px 3px 1px; - width: 21cm; - height: 29.7cm; -} -@media print { - .page { - margin: 0; - box-shadow: 0 0 0; - width: 100%; - height: auto; - } -} -.page[size=A4] { - width: 21cm; - height: 29.7cm; -} -.page[size=A4][layout=landscape] { - width: 29.7cm; - height: 21cm; -} -.page[size=A3] { - width: 29.7cm; - height: 42cm; -} -.page[size=A3][layout=landscape] { - width: 42cm; - height: 29.7cm; -} -.page[size=A5] { - width: 14.8cm; - height: 21cm; -} -.page[size=A5][layout=landscape] { - width: 21cm; - height: 14.8cm; -} - -.estimate { - text-align: left; - padding: 45px; -} -.estimate__header { - display: flex; - align-items: center; - justify-content: space-between; - margin: 0 0 60px; -} -.estimate__header .organization .title { - margin: 0 0 10px; -} -.estimate__header .paper .title { - font-weight: 400; - text-transform: uppercase; - margin: 0 0 6px; - font-size: 26px; -} -.estimate__meta { - display: flex; - flex-wrap: wrap; - margin-bottom: 40px; -} -.estimate__meta-item { - flex: 0 1 25%; - padding-right: 10px; - font-size: 16px; - font-weight: 400; - line-height: 1.6rem; - margin-bottom: 20px; - display: flex; - flex-direction: column; -} -.estimate__meta-item .value { - color: #000; -} -.estimate__meta-item .label { - color: #555; - margin-bottom: 2px; -} -.estimate__meta-item--amount { - flex: 0 1 50%; -} -.estimate__meta-item--amount .value { - font-weight: bold; - font-size: 20px; -} -.estimate__meta-item--billed-to { - flex: 0 1 50%; -} -.estimate__table { - display: flex; - flex-direction: column; - margin-bottom: 60px; -} -.estimate__table table { - font-size: 15px; - color: #000; - border-top: 2px solid #000; - text-align: left; -} -.estimate__table table thead th, -.estimate__table table tbody tr td { - margin-bottom: 15px; - background: transparent; -} -.estimate__table table thead tr { - color: #000; -} -.estimate__table table thead th { - font-size: 16px; - font-weight: 400; - border-bottom: none; - padding: 10px; -} -.estimate__table table thead th:first-child { - padding-left: 0; -} -.estimate__table table thead th:last-child { - padding-right: 0; -} -.estimate__table table tbody tr td { - font-size: 15px; - padding: 10px; - border-bottom: 1px solid #cecbcb; -} -.estimate__table table tbody tr td:first-child { - padding-left: 0; -} -.estimate__table table tbody tr td::last-child { - padding-right: 0; -} -.estimate__table table thead tr th.item { - width: 45%; -} -.estimate__table table thead tr th.rate { - width: 18%; -} -.estimate__table table thead tr th.quantity { - width: 16%; -} -.estimate__table table thead tr th.total { - width: 21%; -} -.estimate__conditions__title { - color: #666; -} \ No newline at end of file diff --git a/server/resources/css/modules/invoice-rtl.css b/server/resources/css/modules/invoice-rtl.css deleted file mode 100644 index 16bbfd367..000000000 --- a/server/resources/css/modules/invoice-rtl.css +++ /dev/null @@ -1,558 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ -/* Document - ========================================================================== */ -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ -html { - line-height: 1.15; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ -} - -/* Sections - ========================================================================== */ -/** - * Remove the margin in all browsers. - */ -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ -hr { - box-sizing: content-box; - /* 1 */ - height: 0; - /* 1 */ - overflow: visible; - /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -pre { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ -/** - * Remove the gray background on active links in IE 10. - */ -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ -abbr[title] { - border-bottom: none; - /* 1 */ - text-decoration: underline; - /* 2 */ - text-decoration: underline dotted; - /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -code, -kbd, -samp { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ -/** - * Remove the border on images inside links in IE 10. - */ -img { - border-style: none; -} - -/* Forms - ========================================================================== */ -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - line-height: 1.15; - /* 1 */ - margin: 0; - /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ -button, -input { - /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ -button, -select { - /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ -button::-moz-focus-inner, -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ -button:-moz-focusring, -[type=button]:-moz-focusring, -[type=reset]:-moz-focusring, -[type=submit]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ -legend { - box-sizing: border-box; - /* 1 */ - color: inherit; - /* 2 */ - display: table; - /* 1 */ - max-width: 100%; - /* 1 */ - padding: 0; - /* 3 */ - white-space: normal; - /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ -[type=checkbox], -[type=radio] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ -[type=search] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* Interactive - ========================================================================== */ -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ -/** - * Add the correct display in IE 10+. - */ -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ -[hidden] { - display: none; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -th { - text-align: inherit; - text-align: -webkit-match-parent; -} - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; -} - -body { - margin: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - background-color: #fff; - direction: rtl; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: transparent; -} - -@font-face { - font-family: "Noto Sans"; - src: local("Noto Sans"), url(data:font/woff2;base64,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) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -@font-face { - font-family: "Segoe UI"; - src: local("Segoe UI"), url(data:application/x-font-woff;charset=utf-8;base64,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) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -body { - background: #f8f9fa; - text-align: right; -} -html[lang^=ar] body { - font-family: "Segoe UI"; -} -html[lang^=en] body { - font-family: "Noto Sans"; -} -@media print { - body { - background: #fff; - } -} - -.page { - background: white; - display: block; - margin: 0.5cm auto; - box-shadow: rgba(122, 136, 146, 0.15) 0px 1px 3px 1px; - width: 21cm; - height: 29.7cm; -} -@media print { - .page { - margin: 0; - box-shadow: 0 0 0; - width: 100%; - height: auto; - } -} -.page[size=A4] { - width: 21cm; - height: 29.7cm; -} -.page[size=A4][layout=landscape] { - width: 29.7cm; - height: 21cm; -} -.page[size=A3] { - width: 29.7cm; - height: 42cm; -} -.page[size=A3][layout=landscape] { - width: 42cm; - height: 29.7cm; -} -.page[size=A5] { - width: 14.8cm; - height: 21cm; -} -.page[size=A5][layout=landscape] { - width: 21cm; - height: 14.8cm; -} - -.invoice { - text-align: right; - padding: 45px 40px; -} -.invoice__header { - display: flex; - align-items: center; - justify-content: space-between; - margin: 0 0 60px; -} -.invoice__header .organization .title { - margin: 0 0 10px; -} -.invoice__header .paper .title { - font-weight: 400; - text-transform: uppercase; - margin: 0 0 6px; - font-size: 26px; -} -.invoice__meta { - display: flex; - flex-wrap: wrap; - margin-bottom: 40px; -} -.invoice__meta-item { - flex: 0 1 25%; - padding-left: 10px; - font-size: 16px; - font-weight: 400; - line-height: 1.6rem; - margin-bottom: 20px; - display: flex; - flex-direction: column; -} -.invoice__meta-item .value { - color: #000; -} -.invoice__meta-item .label { - color: #555; - margin-bottom: 2px; -} -.invoice__meta-item--amount { - flex: 0 1 50%; -} -.invoice__meta-item--amount .value { - font-weight: bold; - font-size: 20px; -} -.invoice__meta-item--billed-to { - flex: 0 1 50%; -} -.invoice__table { - display: flex; - flex-direction: column; - margin-bottom: 60px; -} -.invoice__table table { - font-size: 15px; - color: #000; - text-align: right; -} -.invoice__table table thead th, -.invoice__table table tbody tr td { - margin-bottom: 15px; - background: transparent; -} -.invoice__table table thead tr { - color: #000; -} -.invoice__table table thead tr th { - border-top: 2px solid #000; -} -.invoice__table table thead th { - font-size: 16px; - font-weight: 400; - border-bottom: none; - padding: 10px; -} -.invoice__table table thead th:first-child { - padding-right: 0; -} -.invoice__table table thead th:last-child { - padding-left: 0; -} -.invoice__table table tbody tr td { - font-size: 15px; - padding: 10px; - border-bottom: 1px solid #cecbcb; -} -.invoice__table table tbody tr td:first-child { - padding-right: 0; -} -.invoice__table table tbody tr td::last-child { - padding-left: 0; -} -.invoice__table table thead tr th.item { - width: 45%; -} -.invoice__table table thead tr th.rate { - width: 18%; -} -.invoice__table table thead tr th.quantity { - width: 16%; -} -.invoice__table table thead tr th.total { - width: 21%; -} -.invoice__table table .description { - font-size: 14px; - color: #666; -} -.invoice__conditions__title { - color: #666; -} \ No newline at end of file diff --git a/server/resources/css/modules/invoice.css b/server/resources/css/modules/invoice.css deleted file mode 100644 index 6a29ba1fe..000000000 --- a/server/resources/css/modules/invoice.css +++ /dev/null @@ -1,558 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ -/* Document - ========================================================================== */ -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ -html { - line-height: 1.15; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ -} - -/* Sections - ========================================================================== */ -/** - * Remove the margin in all browsers. - */ -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ -hr { - box-sizing: content-box; - /* 1 */ - height: 0; - /* 1 */ - overflow: visible; - /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -pre { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ -/** - * Remove the gray background on active links in IE 10. - */ -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ -abbr[title] { - border-bottom: none; - /* 1 */ - text-decoration: underline; - /* 2 */ - text-decoration: underline dotted; - /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -code, -kbd, -samp { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ -/** - * Remove the border on images inside links in IE 10. - */ -img { - border-style: none; -} - -/* Forms - ========================================================================== */ -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - line-height: 1.15; - /* 1 */ - margin: 0; - /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ -button, -input { - /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ -button, -select { - /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ -button::-moz-focus-inner, -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ -button:-moz-focusring, -[type=button]:-moz-focusring, -[type=reset]:-moz-focusring, -[type=submit]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ -legend { - box-sizing: border-box; - /* 1 */ - color: inherit; - /* 2 */ - display: table; - /* 1 */ - max-width: 100%; - /* 1 */ - padding: 0; - /* 3 */ - white-space: normal; - /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ -[type=checkbox], -[type=radio] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ -[type=search] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* Interactive - ========================================================================== */ -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ -/** - * Add the correct display in IE 10+. - */ -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ -[hidden] { - display: none; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -th { - text-align: inherit; - text-align: -webkit-match-parent; -} - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; -} - -body { - margin: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - background-color: #fff; - direction: ltr; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: transparent; -} - -@font-face { - font-family: "Noto Sans"; - src: local("Noto Sans"), url(data:font/woff2;base64,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) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -@font-face { - font-family: "Segoe UI"; - src: local("Segoe UI"), url(data:application/x-font-woff;charset=utf-8;base64,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) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -body { - background: #f8f9fa; - text-align: left; -} -html[lang^=ar] body { - font-family: "Segoe UI"; -} -html[lang^=en] body { - font-family: "Noto Sans"; -} -@media print { - body { - background: #fff; - } -} - -.page { - background: white; - display: block; - margin: 0.5cm auto; - box-shadow: rgba(122, 136, 146, 0.15) 0px 1px 3px 1px; - width: 21cm; - height: 29.7cm; -} -@media print { - .page { - margin: 0; - box-shadow: 0 0 0; - width: 100%; - height: auto; - } -} -.page[size=A4] { - width: 21cm; - height: 29.7cm; -} -.page[size=A4][layout=landscape] { - width: 29.7cm; - height: 21cm; -} -.page[size=A3] { - width: 29.7cm; - height: 42cm; -} -.page[size=A3][layout=landscape] { - width: 42cm; - height: 29.7cm; -} -.page[size=A5] { - width: 14.8cm; - height: 21cm; -} -.page[size=A5][layout=landscape] { - width: 21cm; - height: 14.8cm; -} - -.invoice { - text-align: left; - padding: 45px 40px; -} -.invoice__header { - display: flex; - align-items: center; - justify-content: space-between; - margin: 0 0 60px; -} -.invoice__header .organization .title { - margin: 0 0 10px; -} -.invoice__header .paper .title { - font-weight: 400; - text-transform: uppercase; - margin: 0 0 6px; - font-size: 26px; -} -.invoice__meta { - display: flex; - flex-wrap: wrap; - margin-bottom: 40px; -} -.invoice__meta-item { - flex: 0 1 25%; - padding-right: 10px; - font-size: 16px; - font-weight: 400; - line-height: 1.6rem; - margin-bottom: 20px; - display: flex; - flex-direction: column; -} -.invoice__meta-item .value { - color: #000; -} -.invoice__meta-item .label { - color: #555; - margin-bottom: 2px; -} -.invoice__meta-item--amount { - flex: 0 1 50%; -} -.invoice__meta-item--amount .value { - font-weight: bold; - font-size: 20px; -} -.invoice__meta-item--billed-to { - flex: 0 1 50%; -} -.invoice__table { - display: flex; - flex-direction: column; - margin-bottom: 60px; -} -.invoice__table table { - font-size: 15px; - color: #000; - text-align: left; -} -.invoice__table table thead th, -.invoice__table table tbody tr td { - margin-bottom: 15px; - background: transparent; -} -.invoice__table table thead tr { - color: #000; -} -.invoice__table table thead tr th { - border-top: 2px solid #000; -} -.invoice__table table thead th { - font-size: 16px; - font-weight: 400; - border-bottom: none; - padding: 10px; -} -.invoice__table table thead th:first-child { - padding-left: 0; -} -.invoice__table table thead th:last-child { - padding-right: 0; -} -.invoice__table table tbody tr td { - font-size: 15px; - padding: 10px; - border-bottom: 1px solid #cecbcb; -} -.invoice__table table tbody tr td:first-child { - padding-left: 0; -} -.invoice__table table tbody tr td::last-child { - padding-right: 0; -} -.invoice__table table thead tr th.item { - width: 45%; -} -.invoice__table table thead tr th.rate { - width: 18%; -} -.invoice__table table thead tr th.quantity { - width: 16%; -} -.invoice__table table thead tr th.total { - width: 21%; -} -.invoice__table table .description { - font-size: 14px; - color: #666; -} -.invoice__conditions__title { - color: #666; -} \ No newline at end of file diff --git a/server/resources/css/modules/receipt-rtl.css b/server/resources/css/modules/receipt-rtl.css deleted file mode 100644 index 9a58f3d13..000000000 --- a/server/resources/css/modules/receipt-rtl.css +++ /dev/null @@ -1,552 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ -/* Document - ========================================================================== */ -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ -html { - line-height: 1.15; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ -} - -/* Sections - ========================================================================== */ -/** - * Remove the margin in all browsers. - */ -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ -hr { - box-sizing: content-box; - /* 1 */ - height: 0; - /* 1 */ - overflow: visible; - /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -pre { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ -/** - * Remove the gray background on active links in IE 10. - */ -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ -abbr[title] { - border-bottom: none; - /* 1 */ - text-decoration: underline; - /* 2 */ - text-decoration: underline dotted; - /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -code, -kbd, -samp { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ -/** - * Remove the border on images inside links in IE 10. - */ -img { - border-style: none; -} - -/* Forms - ========================================================================== */ -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - line-height: 1.15; - /* 1 */ - margin: 0; - /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ -button, -input { - /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ -button, -select { - /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ -button::-moz-focus-inner, -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ -button:-moz-focusring, -[type=button]:-moz-focusring, -[type=reset]:-moz-focusring, -[type=submit]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ -legend { - box-sizing: border-box; - /* 1 */ - color: inherit; - /* 2 */ - display: table; - /* 1 */ - max-width: 100%; - /* 1 */ - padding: 0; - /* 3 */ - white-space: normal; - /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ -[type=checkbox], -[type=radio] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ -[type=search] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* Interactive - ========================================================================== */ -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ -/** - * Add the correct display in IE 10+. - */ -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ -[hidden] { - display: none; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -th { - text-align: inherit; - text-align: -webkit-match-parent; -} - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; -} - -body { - margin: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - background-color: #fff; - direction: rtl; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: transparent; -} - -@font-face { - font-family: "Noto Sans"; - src: local("Noto Sans"), url(data:font/woff2;base64,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) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -@font-face { - font-family: "Segoe UI"; - src: local("Segoe UI"), url(data:application/x-font-woff;charset=utf-8;base64,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) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -body { - background: #f8f9fa; - text-align: right; -} -html[lang^=ar] body { - font-family: "Segoe UI"; -} -html[lang^=en] body { - font-family: "Noto Sans"; -} -@media print { - body { - background: #fff; - } -} - -.page { - background: white; - display: block; - margin: 0.5cm auto; - box-shadow: rgba(122, 136, 146, 0.15) 0px 1px 3px 1px; - width: 21cm; - height: 29.7cm; -} -@media print { - .page { - margin: 0; - box-shadow: 0 0 0; - width: 100%; - height: auto; - } -} -.page[size=A4] { - width: 21cm; - height: 29.7cm; -} -.page[size=A4][layout=landscape] { - width: 29.7cm; - height: 21cm; -} -.page[size=A3] { - width: 29.7cm; - height: 42cm; -} -.page[size=A3][layout=landscape] { - width: 42cm; - height: 29.7cm; -} -.page[size=A5] { - width: 14.8cm; - height: 21cm; -} -.page[size=A5][layout=landscape] { - width: 21cm; - height: 14.8cm; -} - -.receipt { - text-align: right; - padding: 45px; -} -.receipt__header { - display: flex; - align-items: center; - justify-content: space-between; - margin: 0 0 60px; -} -.receipt__header .organization .title { - margin: 0 0 10px; -} -.receipt__header .paper .title { - font-weight: 400; - text-transform: uppercase; - margin: 0 0 6px; - font-size: 26px; -} -.receipt__meta { - display: flex; - flex-wrap: wrap; - margin-bottom: 40px; -} -.receipt__meta-item { - flex: 0 1 25%; - padding-left: 10px; - font-size: 16px; - font-weight: 400; - line-height: 1.6rem; - margin-bottom: 20px; - display: flex; - flex-direction: column; -} -.receipt__meta-item .value { - color: #000; -} -.receipt__meta-item .label { - color: #555; - margin-bottom: 2px; -} -.receipt__meta-item--amount { - flex: 0 1 50%; -} -.receipt__meta-item--amount .value { - font-weight: bold; - font-size: 20px; -} -.receipt__meta-item--billed-to { - flex: 0 1 50%; -} -.receipt__table { - display: flex; - flex-direction: column; - margin-bottom: 60px; -} -.receipt__table table { - font-size: 15px; - color: #000; - border-top: 2px solid #000; - text-align: right; -} -.receipt__table table thead th, -.receipt__table table tbody tr td { - margin-bottom: 15px; - background: transparent; -} -.receipt__table table thead tr { - color: #000; -} -.receipt__table table thead th { - font-size: 16px; - font-weight: 400; - border-bottom: none; - padding: 10px; -} -.receipt__table table thead th:first-child { - padding-right: 0; -} -.receipt__table table thead th:last-child { - padding-left: 0; -} -.receipt__table table tbody tr td { - font-size: 15px; - padding: 10px; - border-bottom: 1px solid #cecbcb; -} -.receipt__table table tbody tr td:first-child { - padding-right: 0; -} -.receipt__table table tbody tr td::last-child { - padding-left: 0; -} -.receipt__table table thead tr th.item { - width: 45%; -} -.receipt__table table thead tr th.rate { - width: 18%; -} -.receipt__table table thead tr th.quantity { - width: 16%; -} -.receipt__table table thead tr th.total { - width: 21%; -} -.receipt__conditions__title { - color: #666; -} \ No newline at end of file diff --git a/server/resources/css/modules/receipt.css b/server/resources/css/modules/receipt.css deleted file mode 100644 index 2e1559980..000000000 --- a/server/resources/css/modules/receipt.css +++ /dev/null @@ -1,552 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ -/* Document - ========================================================================== */ -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ -html { - line-height: 1.15; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ -} - -/* Sections - ========================================================================== */ -/** - * Remove the margin in all browsers. - */ -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ -hr { - box-sizing: content-box; - /* 1 */ - height: 0; - /* 1 */ - overflow: visible; - /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -pre { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ -/** - * Remove the gray background on active links in IE 10. - */ -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ -abbr[title] { - border-bottom: none; - /* 1 */ - text-decoration: underline; - /* 2 */ - text-decoration: underline dotted; - /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ -code, -kbd, -samp { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ -/** - * Remove the border on images inside links in IE 10. - */ -img { - border-style: none; -} - -/* Forms - ========================================================================== */ -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - line-height: 1.15; - /* 1 */ - margin: 0; - /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ -button, -input { - /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ -button, -select { - /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ -button::-moz-focus-inner, -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ -button:-moz-focusring, -[type=button]:-moz-focusring, -[type=reset]:-moz-focusring, -[type=submit]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ -legend { - box-sizing: border-box; - /* 1 */ - color: inherit; - /* 2 */ - display: table; - /* 1 */ - max-width: 100%; - /* 1 */ - padding: 0; - /* 3 */ - white-space: normal; - /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ -[type=checkbox], -[type=radio] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ -[type=search] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* Interactive - ========================================================================== */ -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ -/** - * Add the correct display in IE 10+. - */ -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ -[hidden] { - display: none; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -th { - text-align: inherit; - text-align: -webkit-match-parent; -} - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; -} - -body { - margin: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - background-color: #fff; - direction: ltr; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: transparent; -} - -@font-face { - font-family: "Noto Sans"; - src: local("Noto Sans"), url(data:font/woff2;base64,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) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -@font-face { - font-family: "Segoe UI"; - src: local("Segoe UI"), url(data:application/x-font-woff;charset=utf-8;base64,d09GMgABAAAABNGYABUAAAALiJQABNEiAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoUkG4OmVhyBlhIUoygGYBaLYACkPgiUHgmTAxEQCp66AJuseguBjRQAEoTYMAE2AiQDgY0QE4OEcAQgBY0qByAMkEBbEHraNPxj2fafmXYoU4pEYMYW3FEDLgcRp1IlaJbEw81E41HPGvX3B9i7DfopKmHXnw//OUb2xq8DKGEtBNu7NRB0jdELA4ZiVtq9JRH+l9z7WdnJcgDslDD/S4cW5bBtyf7//////////////////////////////////////9Dyn+dzs3Pv+89733v/5ychG0tYTVAhSFBABGURXFoRRUSUKlXBWqtobau2tmptZ6q1U8cu02XWztKBqFN40QBFnCCTZrlcvqVQJKVyJdMixJsIJ2yroq2dCjqqnUXtSkmwrpur5nt6+3Yq4t4a6m39uxycL2M32eO9cFVFB614F1jBAAaJFgYaQ3uH0RypdkqtFfti7GcqyraLsJ7NifFolcsrdnFjw5kGccR1Jsh74vdRxW4HTxxSJyQXvMO4kK4DoiLIOsSO25NxE+ozB+GCjk6KTjULbo/gUKtPPfVSdsWCCFLB4Upxsr86PYPZOV9CJg+H8fYjmGfrnlvQMVb4o7zPkFkhvb27uWM4LieomuejjxFzQt54k4qKsHLSkm5yoKOOiifeaR1CHAQKgcIpnMA54ohTunjKe08nl05mySnF7OJpQRcR5gwRulwn6VnvBSvn5oJHoKvIsEnWtEDP0yrWlB8WeppK7cJFb7COEFHHAk5p8a1LLkAEcjlswEM1DtWAjIRaIB773t47H3JM15WcQ0MKZKUJT5KrPZc9GYhDzaOJsLNUu+ZjOHgZc7op0wKfr8Se5tJR74moEMXWGQcv0OuYk813yA3iHCtC9xppb42+CxdYEbMr3E0IU6FCMi39UBNnwXsRqZFEvDpC69wYE0iVcwpFN52/xfZKRMXzI9LsI83c6uSZAVJMQ0wCZLPO9gtXGlfjY/Q2OZLP5/VADUtzOrHiFL7UxLVAPF8uz3Oqyjkxbiu8s9XjHE60TvSu75leTcg2ymTLTfXjDnHMubsoktadWRLzGX7aozyDVqQQ5zy21vC+Jwv5e6GPE+znBMq1q7LbG9wHNba6rKSNOCUjCw14z5zJzzjSAdnAduo+VLoiCEJX2LMXk530Wg/5iBFynxFs37Kk+oBpDf3jBQg24eDx8MSy88gnqGZCgFxN4PcHchrjcNjIVqX8lixxqRtoH9e7tYc4+i5iaV3dHRplufH2EEKxuFxYu5Ukrdfij1takvqE/2TxUYw4LiPBe+2b7iKEvlthhU7Tlm3zpgVvJRfoPSF3zcoGn7ISzWfc+tRh9p5hu003b3KyVLT1zhC5+vhI8TC9PgcX/VlW0MywK6jlpjqw0otT44ySdSY1eBL57Q85nx+AkBKC+dPohM1NEPmcKNXSEzjqHJmFg2MOCJsEVsR4dq5jbJhMz+XPXe5D6zwvYn7TXMxXTabIXlLXZ9Y1vsBwLpc16IvuS/4i/5i9M/Z+W5uyz5h5g+7o22YgRkWbSgZpKpE4K67do1vMVdKn0ZT3YNDRP+y/AEc+Jn/EV+596gq0Qp+/kA/lDSJ34faVXyAQ773CVUR9Ww8CyfRMkJM+Cyc4j0/1a4hRfWD14+m1W/CbkkAkI+oa4tx6xvmgCDMCpSIiIhBMdSocJH7vUHG71BhYuHL55RcFFBoIB0g1pmqnY7Y6kmH6jfGyRXX86UFgBoS7Wa1VfOVbXEWWE0iEW7NMrrxZmSBv8K38PPtYeRfBcf6dvh6ll4wXxJ60r3CvMECC+QvzgvEJ+op+DZU3qUDNNnAQ+0Wo8JdH0JW4aOaIZ4SOUeGXDO5EdpbtfILbzftmr/jnfDWyP18+zj29gUXGa3iNae6C2PFw9DBKg4+gb3oRMimKJoSoQKGIBSrMJ947CCcQ/Q5HNONlHKcfpd+pDkKJE5z7NjjxQ4cxlCBA5Pz2SY8U36NbXYpLAv/VsEObzIZFUhKiV/BI/MIzOFLwIgjEVbKkCL2ibXvR5pA/6C/hfsje2K+oTPU4xqE6BKGuUEJyqR89zZ0bkzS7JWFdSfA5VgzcOpZJ/HrJG1brP2iRDm+hTEYQE0ULGcz40q7RAfTHmnvxAamH/EkIHRTGMyP0WQsK+VeSOdaISZY4JcFdgQ8hczA++6Q9PhSPtXjyZcqKsEIuUl/Ccf2cOFL6QfC1I5WtHDzcqZTdxd1OE36E3XjKrX3WxSm6uRU5Z5s0WeELYp2fOcY1Es8v2JagxAlaORELn+E1hP5o306yzZxA7S/sWkLmzL+y4Ceas7sXW4KbCHqeOrzkPbukrAgrXA6CuMQmSA0e2ub4CUdG7Q7ume0/W//Lt5CXQjXylWh+ZL4xalr6nH5vUZdRlp15xDk6STsjq0bSznby1cB54/uRBnaAz6zsAB5EE/OxuUQg06zwapHyL8l12xtcYAMvvPAS6Sv7t+0tcu5oSa5BUBlgA5+ywgsvpMP4uv2/WpxlF3JEkCQpJxBOoKZi1GH8V3vvD+MXmiAdhiNpNyu8sBJFGkHzbyJ2/93mIvfyGxGaWLnG5/GPRxb4SP9p/887gAfW/8v6X+3/7d8QiN2vdwQVe0vcbygIybO9wgovvETkqb4i4T+KYOx5MZco2ncA/7X/J/o/u3/HYbE++3/LT9NTVi/ar1Hl7Hps6SD/W+MxWSZqHAsrDeVOQPgh8oOY6XGaRKr8E97zOTJN/U8YJaNwxrk8K8qKSYY8FeZ3/jn72aJt0wOCiFzWdr8BHAA0IZXSTWZlpQxlrZpNjK2dvXAQjk65CGfLpZmU7qpud4uH8PTy/ozxlfmT+ZfZhQpqWnVktQC7BWSxiaS5sT1A6NmBA1wE4wKQ5ZUH9kW/A8DfwvOIfvRi/3m7/6/Ffeo23v89YARHHY2QEQwnCMcRzFByFfz/t9//25p7F5yqA3QpjPeH+AjzQciMCIOOb7rb+Vig1xnt20dJfBBhzvqvaslOsuCHQLfPBCcA4GQsdQT8b1sWUkZWxE4qQO1E6HSd5IfQlilS19VZv4n4SUyObu/uAhpMGmva3IxFWBDmlXme/2fZvAP/7cIspfZN78ZhI4TuLieOyDhUVBWq/d+cJgW2jKkaKsC8nC0KEz2gImUFNnboNuVvxIr4/y7dOzaOuXBfbsc6KDH1Bxck5D/6alEGt6JAPCH49ZRb3xnmocYQYJwNh/mpAwUix62QD0HjUeE0DhgOh3EIkxAghhiOGLiD3lGii4EN6AaMsxp0PT7fZb/Z87w+RNWCfp8729WzAqGxivAYtEVJhEIjv1H/XS3OWXR+n3SlpUhG/yed+b03oNGMNCKwLMtIWe9mk3Xydy+3HwjrO64Tf+AO0NWVvwP0IXysDpsiRXn3U33HScWI1G3+05RhzNtLF79e8snXneQctuWOZRBYbiEATthSQ8gZ91IVHv5/7X/7nLnz/h19dz6S8IQnPJHIookk2ogVD43WoLIInXYSC+geAzkgENAACwcGB/i8/dvbzGhmOTfnnePKFQvJl68lIbEkJK1CKqQQUlqihJYkRhJr5gghluPMceU8myPniG34b87/zpkp7+3OTMpSRdSD1dHqkUgpgdDSltJch+R87e+9v09660aoKKQBKoiGsSRXwJ/87vqfa/k4vhX6KLdJd3vvgLIKIYegaiygbIVBi761wA7QfWL3LXyX9V0tWZbaHg9hiBYmWaDQcg6A4IseMCwRB6oY4i79927mP4mOizARrlOqqrY3hcNVyaAUQpfqUQYkAzA3Bw4EBKRKJSUkWqRqVMVG1DbYxopRgwWjtgEjsgREVETQRhsxbt8YgLk5YMRGjo0NNhbJEtaMXgUMVsCITAlB0gJBSlBBRIzOG33zdlx/fwdgbqIgKiqK0NIxRvRYVTBWsMGIjaiQKlERI/K3/uv9W//7bp439vTz7IP5k9xAMmiBQSAMCIXTCFmtq6q7Q+ea0EwrrnJGgTijeaX/N6pjdnAutEtnILNKpIgUkSJSREoRESkiRaSIiC9FpIgUa62mNnWstSJSRIqUIuKLZx1rHcdxstYREREpIiJSRIqIFBEREREREREpIiIiIlJESpEOXfN5rKnX9ZHjAUJS5L0/1/+8hpBJqaSTLCi6ePTW9vUG1nKDnMRyoRK9EsrMOVN/M/jyB7kmKFeMuzugCEVK/puZ2aVfSIX/pWbZ73ej0UA3gIYdzHCGxNDtrDvMHs+ZkXfh+cqX62iGB5BVgAxXhrdy6W2QydogOROplOkUOp6pXKW/3++rOuciPaAPmPQrK7Oa8A6QatADdt0AqY1aUqzYmKEG235J2FViZ5Ker92+Swa/VUJ3UNzsfDzMQDBiuTagMMmcRDhbLF+6NT/8u+1/hzFSUHkScpEcSAw3GTViO0SPSp2o3MiXkb+R8RWR/r1opNm8opYngJMbuuZCRxhAMv+qy/hKo/l9sGl/Z2cXokbNnLpYKk6pm17O8wJj1Ypo2flV795ZgfAIeRqDUSiB0igUzhJT/b8680o4LEdzyxvwNpenvm7MM9DGpCuhkyPyka2kiv0lGb5F/v/7pda97z7gz4UiEz6ZgnL7u1YKWvFJ1D3gyQBCDez7ZNkni2WDT6tKStlyYiVdwyQP+vSKYJVI7fle1XIGA4BEH5ROgmCXBElDcSTZkL3GbLU2Z1/rsFPq161Sun1+T0pROv0er/hrf/O1RV55nerbMLxmOs3nq94Xpvgqc8/X/pTV50/rAqpggn+IFqxUHAtwmx3j2cz1/fTq/H5GsiGcM5JsIDf7aukjjWyT4IZtcHJLQ/L8yORV++4fxaaEEKpJaZCQUroKyb13d8O2v/e1uiSq7F8DkgS2e2bv8klVUKa7kgbNU+bXVL954IS8izMykgMDUkbxX2i6K7r+YHoK/fZ/Oa3+rypRfZUVj2eXrzPHwzzZoiROYqAmkPwvdrKYtBeoMwhsW0l3L/J52By4vGMor6rqm+w68ULpBfQCeJDq9J7+DpUJ2A48VqqjR/ifpVkBpJz5yFJVkinf7Quh+MX3NR3xxyy4zh5uCB3O2uOe5qbr2tPBGlYFlO0KXIfOdSS7ucZjrEZrMxY0UKo5D7CW505hi7aB//+x59c+N5mboTVjEovR/EGZ4a1Dtqq4/6FMkhDokfUTE199v9eWmBRJAIPCZsmOT26ypb3y1U2GSroz8ULjJCHAOPk12kOmRnH/PYBtijSapgqiOCEb735uv/ZfnPohYRASYoxiPinPkOqM/0rfKANC9GsWQiLE06ek4KRTQnXBZR1vvNW17pFGdIRdUiP9G99LXWY4IJZ9JEv2Wgpzm1TpkmfoGKtM/0BQUVH9fAcEP1/n+3fOxcxUQvK6ZFIs42L1qIlbT1zEnAft9OV6+7/XXPpyLYFTyOUKeFuMWFXCTB0Bj39d+caU81n54IobZ/r/q2rfu3gAiEwEggQDQmJIDySYQJECFaLt0aTkzanrt6i/nSlLtjclb+Uz3XT/uFNRjTVCdRHuDzWGDer8vmSSSbZkyZYlE8aJEycP84Bm5vMCUnXACwhNue0dNy36j7qyJ8uyLdkyDC/PLof5HzAVPVBZzxcFuj5Nk9wdYXWOV2UBucnlQyE4fHHs0/gZNWl3MKP+UZtiUnopGT2NV2PtmPkEPv0/iRikRdRavhtCgsoQxRsl7InRzDJqXiqxcQTfJlzcecFKkmI+CdEAEIKQ5mC5gsJYHBgTIe3aT4eThIOKmd+XuyqiRAIEKTnOW34vczlc5+9V1Qd89M6m0iEeZMEpTNOnJowZFp6HWXumrQ4zCkWq1EOYSqa50qYudKoL08fwct+0151t2l21lU7lJF39rZ0d3d5o5PYBNCApAAbAABiE3QAMigEPspEBzDNFMZZVz+YivAYko/Ks2bNQX/H/f7/2ez+GfcYvamkO+OqmjUgiQUli0SMlEjrRQzL50ogz/te/r2bndLx9u/t23775ZYSHQIB8oCgGJfINRmPDtlDShN2M0myKI1sklUYUysSG0ThdVV1sCZv05681NZkOgqngLG3IkqO0WxyXhnJMHM2l9xo/gZ6IL6JXkV4n6+RhRhmwB5wRRB5QBpxFkccueHyKXI4qD8hyeUUPbbntKHGlilvtThnAgzGbtXLEZPCa7HdPrCfao1CoqqI6Hex9K6efmkTsIurmRM94Fpzixza/ZnfzBXglaZqWCqLBtE4VRswO9+OatkxAQO4V153i9iL7wkp8/Y6UCuMwRxBe+MMGUPT91NzzQkSOyg7QM4Pgy6uwJMsBkr4hYX19RUqWLdPuEei4fEI60eWU8xYAOeLGsAki3RSa7MPXXF/1Sl6JxypJRYGqGIHuhigtFuWLkXTo2VESSOgZJ3TS3TVCxWCt5lOBhF6X28yeTE67NzuLncRaIaHA4f+pqncgqQonIKkOl38+US6gRLtTHSFwanhihd4DXA8O9EhqSikVaW3NMH54gjLVOmVYkrGVlfmwEHHtp/8/d7KBBXYRaSpiiyY5pd3X+9fnY4yxG0T8xtlO/zrLqynegrV/KbCNhYSM1nMKYxbQdYxkXfWT1rhdQyRyV7ssp+Yy/1dwPn5IqVaBGSO2Fd54SDUk+fi6DpNvNGuEms2t7e2VqVXZXdXVQgmIhiJAokGQGEFyZpYr1AmtXTUzJ6qx7oue8j/ePc1X0jvv3De8W8N82zScv6XDDUHEDi2eiSc5XFpqNNJqq2a8Y429Z9lnXyte/X9ax6R0mI4DWIJYDh8MDvqw0MPcs/HYv42pYuqGXG1iELbB1jkR6lQu+7elbnFLDSIaQI9t7a4+TWgmDm34cHKw7vm5R9qtUodArur5cLkx+Du4ewqRww/8kdKOGQsN4yDYUXU+FyJzMxpaug4a7p32pll9RfGMtV6nNECCgpI7QO/xX1JqtYfsWN9kRrrSUKkANkAO0NTEAWLMjQyMn3LaVz05YFZZKqEliyxZZMm2Yoo7cdpN6e5B8gKTaujEbwluf05LcM4sd87Lx+Wc5/T/0lX//UkCZaaUmZKqVNw80zM1sAS9vUgmogvYmhtRMpc0EdkLaDjM5lvDI7SmF7/1scCTyjjkfK+8JBwsRHXjxbgga/9+r//waWP9pOk1m+7BR+0ALaAifBlhzP8xZ5/ZLcUo6T0W2k4y8Ge2xKcebw2JgouD+v0WFuE5syKcX45kaIacBf9PZzlfI7DkkTQzYssgmRZ8QKCEq3TOS82gH8QfwqJMhWXe2/LWRXV7ReeiDIXbqiDSDbXd+JDWkXyQfUMyw8fLc10dPTpCJIpq6TDOAi3kis4u7KIwExEVozEc45GgfvnNsvXI6obY8k7iWOGQSHmXd++Rwn6yzEnFKN0SYtIIhdAYhXBJKMn/36tabd/DJ8wHCKIA0QGUXW6wqu0DqRPkSVvbVXVO2RNCWMX0373/P+C9BxDA/6DN/yHZxCdlE6TsIkipSoRUXQAYmnRLM7I6JHfMnpQJSi4XKVWQ6Bq3aHWQ7E72pOqQorsnelc9u9mFvJxdLSek5SyWNYttd15PWKwWs9jNZj2L1fDwtd+rfX9PeNUnFf3UTlSUi4uOUVS8BXIhWwZV3palRYeaVOtErQ4YrUshO++sQALjPQ6eauknnXd7c9I6JqYyIltylp0Z0s6sPL/V21JNSU6ZGV1ETkp1NY4RIEMD+k2dsbENADTgVweI/89Us53dnaEGwOAECBeAi4Qj5ZCKStSdnJIqh6qY+f8PBrs7AwHYhQJAKpDShRBBUPdMwlk+p9T5XeVUuboQXcamsN+3tKSrndMldGcbgpAgdnVXl7Wj4JRRJLB/hZ4kOSPDEAlBc89Gid389+rst/dJwEiGZGSnyVPNVJH8Ys78s6dNaX33W73vyrLfe5KN9GTDs2yIJAMjS5RnmRBZJgwYknGlJ8fU1GZMSOWfeZILsg1ElnBcKAE51XAyNIeWQjszjtNMmYxDGuMwrZVllv/81V/OYllaX/7dfk5W///VnL8tbbEqpaz/6m/WHx5LX/9ttUB+xObDlRvypq5SdTJWnrnEoSbPC7swWUXqAv/FUqVePUC0qUsFAwWYKbzo3D/clE0p1e6HzFI6RC7ITJIJCqABgAXjjDkI/9Tfo5qfQ5nQm4DJzgavtVLAEBSrUnqKgx83gfRsRXO86GaS9ICTvpVbWf//V6rV74tIJAnAkpwA5TIoL02yXF0Ue6Nrtl9SS/W2bhH33hcv872IBBCZAIFIQCIiKRlIkDIRScpEgpQjMklVIin3ASl3H5mlPkclzWJrNlm9qTQbECBlMUGqxAQpWSBljUBJPkeSq3pxzbLKmk2t2Wj35nbP4t52n/74mmX/nK/5nJ/P+V/2j++/gadv7PfV9HQLjUZo1Hz37QwiOkjWNPg+zEODkAjR5KuF9vl/+AuTM9dOpC3YgljexxnbALUzSEShiELwrcwv2llBbJl0vEFiI8BmOKtMzR5ZQexu5P1ob+svOs7/K1X731YDlkXJEyR7gjzvhxD3dHh59X9eLdH3VnV1V3V1A90ACKLBoAZFW4Rky6DSUPJMB4CuBiAZpOQ5JO2ZL3uS4zhMypQ9yTM/2C/vft5sQ4yr5Rz/EDeLD9+TZS71Vvmsb2CaqAeCKAFJXP1mOeZzyY60/v/Vva5XDQS4gEjRSxXpbX664KbUNiVT1mz/vye40I+FKz+Vn94nyVV6ZuCTPsaTjyc7y9L6MCfLnhP+KS7GN0e9+RSYbRjuhRGdx1YmkEEiPP/+Ltv9h5SloEqJbibY7K0LWhU+RDWdvrQd5E+kAStzod3/x1KNpsuu8DhdxzMIhXAO/kkukicD9ADHLln6jqetNLX1Py0t0098YLdFkFXkNNft626fQa7N5AybbewkkvB/C5oGnrg7JH2I8n0HiUYRlHF8tn2nm9r/z5x9abUbGlTfOLM+SCkpaSBhzo82myQU773iarob+PJ/jfMpr9Du6UIJ0jrN+nSbkEYUQKb/5fzXFkm2WXAAPZxipzYXvSmr/89Fd2Yvnv3v7+LEc0KJF+ZHHCIKFVLFbOWmdR1y6npDVLNKeveL7er8MwNqRo3QdZa2WuWyrPsmNL1oQ+Mfvnh62s/soNs2k/0jQUNTU3NmQJGhlDN+Sx6WUlPwCj/oq1Yn5vNfl4rjryeZfv100EO0KIXMN5eTqoyeR5fhEVTou3h63q1zuPuRR1a7Wow22qSNyJslhbq1DcMQQghBREREQrbc3a8Vnn4tNG++qI4YKlYcx3KcCBGhlOrCf1ei9+dwntMc1hprrRUVERVRFRVVNSfa92fnWtl3pZklPEJYTAhGCCEGMQhfaf9D34n0O7v/NnD97omoqKio1duwMqOQvT73hiAhBBGRVMTduwv2CyEMRUSGqb2aM/unvuRetpsPPoTwCCEEY4QoRCFESC/rDPS/lEYSuKtSVBZiIYdFCpFl+HyWsFg+jrG2JOqqfXwWfDScSAgiIiISggxBxGukkX08L5rmrIoipO9ce2gvsQgjjBDGGGOMMUmxJE2xr1nWsky4PGoFI6UWERDQ9/x2h+EW/7JUr7jW88wVDBi9wfaqz5jv/fwZOvuLWm23/3vt1jPNNhOyIEB4j8CNQ+ZMHHTudzJWAAegMm1oCYbkQvq+jP26B9sYfmNA2sesU+qSzRqu0PZMea9YCAmx3cThzX9izseSgDG7bf6vfyaaSByIgqw7uNvv3YhtefjU7V6LfzI3QcyGlf9lqv/Hju20Tdd7/+etJI0HmLEkQCABAol5hVDjy34ZNZgQ8JxnpVYtFTsie30d9/f6vGz6f0L9vN/1i3WmUAhiw0JKbZbcu0G0vV/8n9Jz3zOfc1+hWZogIiIhiIgECSIyhPXdKr54Sfc+c/YUPiJSiEgRJEiQIM6ywn+/H1rvGwkmSXuGsqyJ1qUUXT4++yNL93svG5Dp12DsrlpZvtA0Fx3QwNKWsoh4+v//+/lv5t4Yb+Q+Ftd6Ttoch7WKijwMysPFQ1zCVojN6H9/Ym39R0Gxsv7VXmdtinDPwBzvzcGAgJbWHoM/5/+fIFi69I4zplcqU0BBVsKQsBOSQPv33hRrVoMCaj7nTTK3kxmTqDxfN3QLzSMgz9eNgFp1/5kdgBMHvCheQ9wa0BUMcu6lhD0PZc2bd3A93P/P8A+eAYPCfTTfOdid+bV3e8fSV6hRN+QN74WNPOcbv5qbH+kXvpt7/mt95X/8L8rrJCiXIlHl0UmAevMo9FsIXO1ACqMuAzLbhMlqM5Dd5RQ5bQVy20aR1zVASTsoYOEHwOd5hCmLxAssFixl2eDAciFSVowW7BwaZZ9IwdGRY8dGQzkpOnBKTJSz8gJ8P8eUBZyNqfPtJs9YdaVm8sqorsaRTyblWyv5tagqqqDKatSPxmkiqduIodHQuRYlg5sWjXvgABDxwAFQABDSaH2sYVTlnIJT1XMaxh3mDowHTwich08ojEdOBJwnTAycp04SnJcMGc4r5j2MPZMF43WTDef1Q4HxhvkE582TD+NtUwA3vgWA5rkac5ScVafxdVnlZvcS3NHquvdSr9L16671Uf//VnV+4GamcofRBOgMTaMBUIClgOWAFYA9gNMHEt34BPspaD+DfYzuiyXo5C0BA946iEQb9ofh6p9mI9T/cjms8OKbwdQBH7+1Rgd881F22+AXqrz9H5vkGr9XNsh1f99OyQ08qt4id+YT6h269A9dHG5ZxVUsNzkllG4SJZVvCpRSuSlUWs1UTBm104Fa57g3q675hJInVI8dKUeECz8q5Ap8abr9efXoWde4Af3zG6Dx7WvaSfRr02e4nPyrjormraf9WRh245E9YxQRUpRoMjxo/o6QsbXpHLjyQnRPpKfIn/aPalKvXZ9Rs5i2ZA4duASxvO89Fv7kKYhAHgqH+JJk8Wf4rIWln9biUIEaApUEFGKb8YECP9CQhBSkIQNErp+AAS4RRR1ZkVOT7YD8w04K6vYEEnyGbmu/OKrAmUCEJ6SQSxmNeA/f4XfAISJUoiFt6Exf3mPiyTy0U8suTnJdAHheMtKWk7wVrBgmk8IS1qtPs9qCiVDnhQBAVwP8xnLtiW4F4jzW+nmkLRNSlQhJWHX6mHcn9NIT+gYm9L84YeKFCafwE049OOE04/DcJ5senld5Sg4+vCa3mfl1Wg3IZ28oBIeYdHNl5Y8pzBpb3MtHWQ7+2VserkGM+bG+lfQ8gFz1gINMuJOfdLd1XG/TA4zPm5Dq/+Fj6kUhqNg/9eQTdv/q8sN8x/UFT+0d5wue/mR9/2f/7CCTnvv4uI82fww4ZnP/5w8Fcs+u9Tzkqrdx+ZN0OtDJf7Tmq9GpXDIv2wJ+tEvt2glq0SUv2wI17GNneGbt0oEh3YIMajBzYC233+Y4ISDOdN6VwJefhJpb+xFWk0J2O9anUGlCkVSh1ur0BuPM1fc2Z7bntLwRl1AAEGHCuJBKz2ABLMdGAXAQYUL5QnegWCyq3eH0BGWmwkAABxmRNdkBCQUNAxu+iRsePgEhcTLIKaiUpIeJU71Wbdp16tJdz3xV+g0YNGS4ESK7Bk1aMXXUJYesO2LTaWec7RzOa3U9e/HqPwAIAocQFhFCojBYEpnOYLLYHC6PLxSJJVK5QqnS6AxNy7VpK8c5sXkRGERQDCcoFq2rp28wwwn3HD83HISJjUvGnKUVmDVbIa/KUKBKkRolOeCszKBqca3atNeRq6hHqhsIdR3EVDOYNW/JshWrHerW66hNJ5x06py+zoHrFu7yFSkGAYMazOhFORsCdxTB8UXEwMRq3rqjHnt2tvhC8YbKL6ZS/fBK93AIiCy6RkWiZKm0AwZ92YzKl0KgwAlbSGjY8CAqUcrIrIxVBbtOwcO7TwbxokxUHXY85uLs9H9KP2nsVpCKnWo0W9L+FHRKMLb2RBLPBwfNfWFxP+rDZVH5hCAZK4vPkZsgwC5N3st+Y6f1haUvLuCoHlfTkeyTZPVsSLZi71lcFkqGyfZgY/SGpbcsSd7HR6FACF42WCMPPKYYfDPA39Dh/+jE/l+vqL/8taTbfV/nWk6unWeLVNoufUruDOVLXyhIHHiTYte5ctSvPL0hQl2JR1LOWvKNnWzCOSaWVO5PkpA8gOWiSInDJE6AehqI+Db5E+2Uqk+2iQS9Jc7ctpnTtq14wua4E046te2cvKU/u0Pmb9sqBv9PB6tcZ2oT2f8NYIDcQIAHFzc3wCDe3ix2jSCEtlAArMvE6O1eyd7cg1K9vSdkYw5LOd1Bq8uOjKofl3PnAY0DGW+tu3grVXdga3Xu0iXpOtvz7IBRRzii0Uc9hrGXcTLdl3MqvVdwOv03cu0m7a/fstPwQgZPxFuf4KwCXVDJCDiIhGhwC+qHWiL1sdgDNeEBgsSMxQtxxZcqz6/rOhjX2zzc5wA+qr/L3Fo4spGjJfDQfkrNnwy5Ki3JoXFT9tW0VVuuee/tsfvP92W7CnQ2LAU5jLyQNGohGM1YxtO99wlbQhpwIlZHnSWgrqeCeOoWDp/BhgBWXAJ5hiHNn24rlh06SuWdMlP2j7S85A/RBhfutdFlmxdi5bVY9xux18YyEUMQExOSwjAMszt5Yo+fUlR2Guo1jI52zauWo8c4Rsxrfwv97D/xf6tvu3Z4daf2oe7+HnA9rWdvL+pFr+t17+rdvpcwbJ2C+gDXR6xPRH15MNbPOnTYf0IAACcAOAvAcAMoeMbxcvN1z+cBoBFoyOanUMMYRBu+TryRTroxXl9qHB/5JqziE3AZRmXyrnqrb/UDMIUxn2TZ4E+rhjIb9R3YN4bFKQAXDG4wwTAheITChAEiJkW3bGOgiUWIn15K67OZAcBQlE4O3djD4gNTASDAVGKogqmBqcWDCFM3q/quP1KTL21DpjV1U63dGrOZdXTHdXVPti8wQ38Cwz3GMd5z6+Z7+WxXgs/a5Db6etvunW717Q763tfDPmK5H8CDSQ/7YY/6UY/7cU/7xb3qt9mTAE4BH5HPjPxk4Bcjf36x4m88AHz2MeLhORcfD1+KIX+9HD9sFfhWg22OtR9wAOwg2NHAWbCzMQbDzoGdi3Ee7PxZFcReYaoqSnXFqakktQsFDMO4bOZQKT8LHezigu8K2JWzqk51tamtLnU/G9PEuiWtEyOMa0/nbPdg3AvcP2koQy8jGf+IJLhlQRvDbQa3BbatRjYLWxDQjph2npXrEnJfUp5LueDl39vwTEtfQ5lr2hygGXD3jPq3f/fg9QHcrzD9BjNiI6lD7kVgZMHIg1Gcs1SOmtrRUz9mmuef9rFX16z0j5/hCTM60RoDY4qMOTKWmLEFYw/GAYwTGBcwbthJAZMGJmOUdebAV1bOWcu7igrOXtFVV3K1wQ62peBBwIMaoQ8d9rCLB4YApgpMDRgiZurBLID1/4Ebpj2Qp8+Qz31APipIFUj6Avm6R+EIALr1hmbdqqResYSSvY56+Oah9ydYpg6URPYP3+OP6nEJd5I0nrN4+DXrezl1l5J3ssdzhf4cfB/QsZ8lu+X4nKzDOrLVEp5Nq/s2i98blkI+snx8pGqECgP+pSwZ9vyauUn/OVVaPJrkHvxsUQ+X6gm2Xw/4yEAPlwjQeWNh8z+TglK4MOdmdEPD9/6mk+34bfOEnoMdYOfBrkJ5rc8d7r79HuD9z4pvdi4wPqDWRiWOHKak1MxYbqwFPAjTKGvLUKNpnVbf987exJ4rWWenwzLFJtxy7lcUVZYhK1AfXXPVovWrS+/Kw5LahDtqzL3NKuvgGiCniNOK9h84s+cWwaZ45H0+WEWmJ/ASEyU/84SwipyAEEadXyCUuc6vEMbc5DyEM3e5+FydfQ6YcwXbxuaqg2ScrhYoxuPqfjKMz9UHzQRdI6x6xDUFe3S2D3BNzPUJvkm6XiAhUMn630CYtKsI0GR/rUFpbjpPY950PjpT4nUYTDXnIaNp5D4s/1PY3vw2b8Bu6/EmXLYBb8FrGzMRftvMfA0uzDVC1R1Ex0cyzBfvIn4Pc9kQN2OPsjIRvI/UPYoPyhaDzCzvEDmo2MOx7Hx5tlmBgiWxGmUz4GuAlsI3qFka36FpGWxGx7Ivzvxuubz1DNzz2QYhEDJ7wS2/74XsvPL3EvZAXAuyD+JbJQchjY3+asMONL5/aVMN6UGw2jv98RkKXqK5xMoWdgfNFw8QJ+OB+zLPjNruTV6AYTvhDHkPFG6HYMNNE/4CSDP93vv56ZcCU6TVcAQampjTmStBKNpiBK/x867QtW918UjMCvMWE0FISiayUJRKcEHhnajcgIVVN3ASmpimPSNnV064dbny9xZ+gyjW/k7MretXSVy0+om9v4IQH6n/NppDiC40xNfrEokpDKUTR9gAiSdcFEggfFhIJMJnYGWbCCkYxdqQI5fQ7raGFZziCS/bSiBAJNi2GTeIqF0uSsxbvHZ0lKn861UOqUQDjJ2IEF67diWVR/qKCgzn3uskQPVm2G9z4n8jax5jtsgkOhVtt/jG+fow6DEKWIOwnx16jtqtbgMBOdzGYRy3xZrDYh/MtulRdkBcEJfcqua8y/lPXsrPj7gX4kMx//s5bj+EoIA79I+1GGH9LEooDA5zlGnlt0hVxJEopKSEOw6VySQpSGOFZf7WRC/uDGShVxGPsufdOYhBxbKZihRUS3Upq55aUtNb6i46JcHBvmjUJNace1Ca4NuhV8vYR5yFLHYuna5kn1K68mcw8TT6kHcozQ3iGsMp8GNmJZqE5gCaaWq1f8rEW7Z/iwsiuTWZw+jWZamOnxuyUvfPTS4p3W05wPlJNJPrdqq3y9UuscfjSVZufVVwsIFCP/cL/JNhYQVpiFhxNICGJg3/PChofZY+qglHX+DlqBUTxWYcsOmvhnI/D/1BflLeRe8A1FzN42NAi6bUw6d04oLVipMVPMoIkAWJ5zhFQ3Nz6QGFrtahs5e2nLoQGHPXhQyauN1GY7TrbgoVcefmRmfcirYEUd+hu7A+6/ALNrHfTPAtpnCQcTDqJjSeXbcA2jfpZ8Zdd3P8att6jq2Ri5tnUZ0WDFNQGtf74OxCPafdWzoSFLGOhjBwtkhiZwOgn7PlFsMHW+WhlEBQna0d7GFbbziow5uHVB3yMZzXBooFFzBx9NxtcMzOXHg68sYqm28Oix6b+04fI3Fr2oea4l7HAhUYM5ys/OK3toHtsDUM96HQPb/jgfArc+6P+gPOAwa2yvhk+OwT31997Pz/9zKwn52HKnHfNORsQVfxPcIp5o2PWWStypfK5W80yjjpf3EqOgEhp5o9Vl7Ted3JIMWbTgUjPo/Yr8473tz5LsKel5g7HTpdPK/KNffxWnRF1nzdvq/HaXNnIFp0/nJCDPP2Se5W9JS2Xnwlwk7fRNdkXaMNTDxtAzHoZWogRtxGyepC3dp7wBkj1P8rWLqY9HLAjmkvDyln1itoEOTOHkVm057Gt1+eq2+mP+b5OUv5Y39oi834jH+bWOWsuWQVO+QVQUhuN4qMe2MHMInVNT5hsdHlzw5nG1LgmOhZdzdQQxsbvAfs+V/Jf5sUcHPPFpSTWx97Mw6Rnr0qVzGvthQHul4FcSxn01PSnX3XmiMuAOd2qVvPnnWUFfutzvR+YEfoLH497BxasxwPlUg8wtbuJ0TXQ2fj3lvUOMXZLSJY44gTqptgSBifAbk4R8YI6xxFwnUrZEzb3QF1loEn8ICokrMy2No0Ez5A1p1E3ZSKJtyjbgn3PU5dK3/M++sjqbuhsrOtGLtIG/VCkP2R0gP/bghfBDp1tt8i/XDO34B+blT+gOe3Sr83Lofvt3auueBv/Vx3kd+3inWx3ybgXPK31bfh0r8dvs0Rdf9okP0N+bbc2++Aj+hKJQxlflbLs/nXz0ZJQNuuXV58O65XXn27blDyUOjnuBQxd7NSmXtuUeqT5b5Ka+57WOlOlkeU/jzwqDKahx5TplPsceVjyvx2+ZwKTyrfU+0pdW1ee1pdV8IPp2dj3rChRWFP0XMrcd55ft2ZZi+su9PmkNS96XSAlTU97Yn7HMq6P4MOTT2YEYeuHs6Yw1DFM0mOFqOVbFl9iZtp23Wuz+wjrYf/OR8Z/fmf55HdE/98j9z+8i/4yO+v/yKPwp7/F3uU9OJJPoK9ctKPyl4/2UdNb523R13vnlIy9P6pgpIlo3saXAMQJKM22JUeLavpX5v0/KUCvL6BuZbs3unpJZf34wxoGrk193ixf3jGEbiWUDJX/tH/y+ljYTT6FXbOLHii/wubq5RC58+T/7op6haehYX1T0NMce/3+Uqpv2sn8pj5u35idkCGjLOq7WZsAJdyfzcvrLubPWRxj25s4b6da/zpIEY11Mi9QU9aDiRA1bEjx66myiWI28KuCsKlmVA03Ou/8nYeoUivvJoKDv0u/EigN0zlsffJT7XB+niL/H85+f/ug5Ga4+AiUudnEECl93GoAm2rF1NeHH1bjsapQX7Uw4PvoXZyeHT1lqqYJW/3qGf1pdfdXZ6b2fBez91se/9n954PecxzIG3d+UQ9sjn2cY/TN/Mpj8e38BnoF/WtnvMEn2C+UCNPCF+eVqCohlt01GrsCeWbNfmE8Z2afsL595p92vbD+gYxKl9XelJLi+TntYqQY1kbi+JXtb1oAV57ixGQdbDYAV3Hixuwdaba4iw+givPYbBa9bI94Ovi+T0Q6hcyD+QGW8JAbYglCfSGWmBgNsxSBk7DfaCNaAJP7tLV80EEQdtehiBqpGUMQKMsy4fQwHNbXvYHeWN8IoKqsZfrQdu4y/ugb/zlf7htwhWC5hVd0QdTk6z4g/UPuFIPjj/KlXlw/9GgFqA/upV7CPwxLEsI/zGugj7Ox+6SXOXwvP3jbTDxx7Jq/3iwPzX9qrmeOuHljxeKPrz+8T+9B6CFniwh/yf6NAzFFn+ahErN/ud+qLfU0zy0WuZpGbot5yOaXisg16kh9Ft5rUjUNvxKNzcyjFpno8O0vW9s+GjDjQ+f5WMTwnebbHJca/NNjettuelx40FGlo+SIWZVYV0yKGk4xHc7TYZs6dJ8KJB7XA71Jbnsn9XcenCJaTWuLyXDx82lZeS4u4yMHubLzthhC3C5PpDxwxngi5u7QsvuK8mE4YFqhEIMQlk2mlMhofJs+mlc5OELgIXQ9tm6qCPoG2T6iASUmTliAU3mjGRAl3m1cQ3UjaSheI99XIKRDRgVgyM7r6XzS7vj2jN0Ye+6KFhCp+i83h/huswubBEIQvf6k3Huhkayo3kIUrVxAcqYL5IReKgzEB8IpLI7Ek2/S3RhZzoR+V5ABsZbIOcKQ7A7z/pRXZTJBE0LSj5XAqKVg24h346GAnMISvwnzabRvrVs/du7zXkDCUcTBWLM/XLg79edaLJby6xbbqQFrAJWXLYJbic7/g7MVnb/Hd93ixqz0nPo7+IOT6LHUKirzYDoikicBoht1lBgBfRIIGsK3Qm0klk3YFgcz+Lhp9eFhTtOa2XxAfeqBbpcGWDyqwBRRRgiRrAED4hhiCj0saajnJDEKy4gk4+44JOd3C+ikCLcUMl3LqOJAa5ginkCscgK97ErkH1CpaGsGKQpRyqModgFDrAZG8OKf1EXbnAotFoVTCgYoSeHB3zHjHNUn0k7wurQL0pqSsuU1op2qKp/YlPPECiaxy1oTZ72cZvzqk/ajTd82SGMNc3T/OD5LLAnS1liX1bDZn+5ubgh80Vy2XChZ2ovuZ4tXgp1Lp1KU9BCRo/5slLsTK1pPZ/Z9UcvZnfjAt9cboSSKAYam8CeG5nP9rOaF3nx3M6rvH/u5Ev2PIvzPfufJd/cm3wIet8fsEJVWdGpD4FOfQ44/xvo1BeKl4ZrpU0gPgMh9ENioCn310C/dNAfA/SP0YYt0H/27+9wDbzfH/IPhx6IPik+nHpe5pVy0xSeU35e7S2a79R5P1xHSHBbf2FghwP64fHeuOEb3+pGAFduATwBA+htIyAYARD8HAAXQERmC1CucR2c2waS+6AEPiWAEAzkBniEBJEAn/hBNCIJGyQwMUhici1IYQpSRhrTMchjHUtg2JBDACwAv/HZCCQEvg1wxgWQjo47fvfQE8+99CrwIIMONvgQQg419PxdMsMJTywQi8SAWC4ExarjeLRivfj2OBWT2BqHM3EHSiDhPDuXRF7ymnyKLqSSeloup+u40mrjUuMyE3Kp0HvT03cto2qqX7o28pHPfNdarddmbRWxDk52ate52nOzWLWfDkAEENgVMEgSFW2w3cgOJ9RwYRTar04Frjmq8L+oxquxHV9lPZ6Dd8Q5rqi4wc4QKnVnz1xRl6vQkOs05ia7cvuu6ITlgaYk5KXdSfocoRkCzIAH3KUEWi4hqPSiXrS+TffjVNFAGz0MMMYMC3wRRgRRxBDHbZJIiT8/jQyyyT3iHwmPJEfgkfJIc6Q7MhwZjyxHdrropZ8hRhlnihnmWGCZNTbZ4TuHnHDOpcgiCCs8Ld0fn+E3/BkAApJXTgFADF5Q8QCE1jN+EYI1EYZ1EYGNXVEUDcboKZigVAOOgingItbFqNzF1cBnPbibzB33b2vgVr4v9fVNv4kLN+DyDbt2nyfsJsz2q5Xf76uHN+/JLXp+K17eule3FfjtBnn7Qd9RsHca/P0I4X6GfL9DJdFhLehYDyY2goPN4F1sheCCGKKLnQAudkN+sReqC1ZoL/Zl+osD2e3Focx0IW6zrZDJHFB0kHfphloG4boawM0duHKlwriTPcMsS8AWL3DGKzyRhy+KCEYFkagjFq0XaJ/nwAs+7ozuG/1Mimn0sbE+a8MOVjbpR8/WUMp1VHMDjdxE20ZSsLBJXG6hFyMk0TyZRAxyB+Oc0WIJGy73sEgWvuyGhoxP38ugv/WBdHwi++vi7eMqKncQ9REFTETicl8Jy4OLNTR2dnixi4EoXe5iFt/YUaICo6VYkUdJrETGdVCBoPdMNoYUSgQXNNE1qVYk8lqJYgTFZpDFN4pu3ikxNobNStwYsnEbfcAWFeuonTnfd5S02fSQZBt+5qWPlL+ghoOk+QNrVPGl8lSEjIyRnUlyLar9qCmbKoJApOJ0OEdafMVM286y5Nv96rM3Cs9KlJxVCZ41qDxrU3PWow4dvNrZgIZj8oHS8Q4/PYEWHS1YUWklI9iosK2eC5jpPdmC+xjrkhzTKN/8TA49/9iC9vyiq4yXyLJcolGdiZZeni0H98NER6Rt50p20bPNeoQp8nXyXcdmz8l9bZbTs6/KnpkDhfnZOVS9IRZcZ6SmAaNI8ujMN9z3yMWet9QESRJzz8gQbav1hihbB31LjHFNweitlDgMCnL7aC+cxQv+y0OYJWuwiGx5JNHqihTzdeQKxeuoL8TKODxS8WiGed3r+Az5tao0N6rq3KkaY1a1x+ZwJbCuLfBu43SvBqrH40Hl+DzO1IJN8PUrXUaFDKn1cAS0bClSjbYlUmnSpFY0Vxv3sxPzLGdSe+j5SY5w1HsSzOEeutZM2ouxrL8kLfX6JfM29atg85lq4YhmsoUn9pNfEJ8vEc1qrLcLAlBwYIV7XIGj6inR6ApBf6EY2mSQD1cYRgvHeHO1zVSRmNnfWRTmisZCMVh+8q3YrFl0xVU2i6/sPHsS7Z2gUPleEuWwQOVkllTZvaVUzkujXJZOuVp5g+ESPtWDTeM+w3Zhn4AUwjvLJXx5RSi/yNkRX/+1QqJWVPS2en3ah6q4mG1SrU3vMDM43Ixve2ZHmsVR5utoCzvGIo69qONWzpOLOf4P3Al/bJ+EDYmC/H10SUgu5cAftFP+YJwmB8Jzsl7cD7aoHfYOgieXe4VZ/pXuh/DKcGfND8mVUb5hH7+yXkcmd5vr7MkFryw/lFf21Vy5VmR9Eq9c3ZX36YOd2TVc+XPKWuK2NV6F0M/WUg6VecISbxDshnjeyogH5iQACxKBZQEdNO+smuRgUyqwIy34Ln1MQ0PdnnHPgROZwLmsK4KV+NS9Ca7kbrigRirQaIXvunOsnhuvRL6lc82dE/TSZL3aeuc5Vfmmq9hMVZpDjQ7xLuv+kTXngstWiy6777SvauCy3/LLUasup629/Gj95afAlPXt5Td3sAI7ZOPNdnij3d5syFsdMDHGv+5n73bCe/1iVr96/zzvg/OiD88rFp/XLUODrzu7hbfuWnHet1r0+teMfH0+9c35h+/OP20+/7aNmalZsxN1jshm3Z5ZvM3AYmu5is6xH/aLr8Yesdm6LtV5Dtx6L7P+y1WlbegK9UMebKNXtmMbv9p7ObA+lLrmp+CxzVzHP1eJ9at+5O59Czfc8k22dvNt3rKa3HZute/ICbvHcxdm/cyw5d+3xN+fbNOy1LSqz71TAb9RBnkJg75QS8x2SI7J4DkODlMQON6b8k47J1BQOZGCzgFMEY8p5OSojXF3lSfewY6GUyl4ai1TPHVEydNuytX6LOLZ0atvFYDaVDNvOlgIrbYyqh0sajffAV67S3/XpoZ0qwP61GEjBec5Y+kQCGgK/RWA/8D6lEfrijldl5IamgMtoDbu4hsO4SUshs3nl6SEwtwIqQFN3zLrfqE96HfDTTbd8rXHWBZjFVZlbdZJTWGum45CPqqQR3/Iofcd/38ePkERMTlKSst6U1LV0H5S6fWsB8ZmbBb0xGkRyYZsijWwZhZnvSzFhtkEm46fMAlzYMo06TJwZsySPVfenVQE6jTuDBsslHmAGQAQgohRsFxw2yDxgAcbH/GYsb6vxAQz9u42y2w95jry832vulel/qf9QZmEmrWvfgyd79Jb/cF/NN5em7EP/WE3JafkwrZ+tGB6xfhAkqdZWv1HA7VjDaE0bGpVdfI0wki+xqhU1zTENCDS8eI6UcLJX9KpTpNyhjNlnON8OXebknuVParicTX+m3T/tWabo+7lfjSABljN+6i9Te3Zf3W7by/FnPlZxlwBBwm62cKChwAZKvSFzYQDTyp40r0+IdoWBpDKpSqpVqqX3kpNUisO3IWYEAHCPF+NTdIEL44F0lfyFKlQp4VJMlEcumdFH/pIrIKtPjDVD8sNHgSE8yOfPL8q8X1zgaCfuXRtaosWwKJXA0QvreRGe3iOntUMwhDAGgvtJZVLTdKp1i6kpXVtgMQBXETtnCV66iq9lUxQAbvaO/PVOBdL+5LVhSYoWNRPxS3pHeUAQDY+SQdx+VTlCYwAZgCHgBiQaQoDUBME9gBMiutB45Zwf2wB/klq4Bq4kWKBwOsOMEs/ZIOKHHDKYx3su6QGtY3gxJIPkbQStJvwwXNsEAXW8MTbvtLP2tvcmsFTpeesRL8DWJez5lR3ajg16ifp6lPLqb293mWv/dw6V+xwqLPTqON+wSRrJz6pvxiv2p9RkMo/cOZoT1POOOfCp+a0HIlFZuO0hvy06Y7fc/uhJ9bI+S/3pVeBB6l1rCBxtwkae7xggw8hZPQMnkDYCDX0MMmHExw8mUAmkgEyufRYIvazDERFw+OWy7QyvexW5tcH1mNVIsWVWnyZI+7AfBmUwMDNC+c5wPEk8pL3zPkUU0k9rXTT9zAADnC+D0WvMooyIJuCp94BDdA2r+wjn/nuWvTS16O5T1dJw2iBiGJvJvmsNH2Wyp653lRSVQ211dMApMaaaaF1z+ZY5tPfp69vS4YZYZQxxk1mct42yRSLB5lmhtnmLlzhKf9UCBambAmwMbVpTmfejxIQg8OZzJwdxMmZu9NowOWgyIdl/qwW3ofU2M2GbsPxXRa9WPq4CbSCxEl8WiSHFiCs+sUvIUztktEe9KBQCtxElxCiebbr3egm9W6V2B1u2f+72z1LzljdPzuQOnD08Ex8JjtTSN2f/qqBRa+lo96c3Z2Zz2x11oO7vgYxnUUybazJppvt26m0pVbbaLu9DjrurIt+DUzVbg7C24MKFmZw1CdLQxrK0IYx7OGeckE+KAQlIAgqQQ2oawtnAI2g5RRGfuzjGu/4kYOh1z2I8MyXuvTP6ES7s8zlnElxcREQyALLO5VItR9aai1i/GkclloKcJvOBeeic+Bcfq4613bs1Z9t7u35o7Xi2J/BvdAGwDM83EFVPu8qy8u+bn6LW9n6aM5ba93u9kcoX9/RU0HvNAJUTFH7sZ/oI4DzbwvyUd3CLbZK+jq5f5Yt9gz6rDy5DFN9VZ0DwA8C/nD9OhHgY8Z8mYAbPCwRKnj0g42EYR1+H5lhE3EucOeHW8d1FJHaLleHJdbZZAfGtl+qjO2RivYEAjCRjvq/UV9/Ck7/lRPgDEDxP5wDOM6DGxyBB+cKAvpOdlPaTPy/Wp+xDzx47z8Jf/qsP7nn+pX3NoiRJE2WN0pUadCmx4AxM1uo+8oHAwQoMODYhgQFGgzYcOGbcENioJhSTHOEzhhXMGA0yzF2XHjxu1D04oNF2ma09FFoHfY4/jgw2tgn4yTELbrOUuflylI4ImcFu55Upkfo46rVLPlIIuBOjzIwjEbBIEnIQFJ/VAFjjPWK46brAVVAkEY864MtKclljZGoScueDWsKHcZNCTPT8VIYJNkGYRbhHdRAknwlYciknFvc9pHs7WkRwT6h1JRQvbugb9BWZZ+hONR7bIdK9HqogitcsT59y8+ku88zeIBUiIEYYlRrHQnxUIIiuNqqePaLjpcRBTWj1UVi/BZoT9I2kQVGE2Y3yYu40qptsstCxv0q8ixVFOHdKffKPruGc+GSaMRcaaJYK66aiWqKzissDeqeSsAM7HuyyXbhlcROrLd9apLV5roCzZY8CjYMvxlhGFl7Ki8ZHWMew4GHgGwvspgBIBdVRxstINpeH8tVbjMTWM0xb+HG14qAhIPnMjF44ZV8UfS1UtH4XObelqvXlaQqGrTpMWDMjEX/lakv0aqKFAF8F/2yweo+8ruvNlxl1d2srfXpTh5CBYrT1OK4yHX2ebdtN0fsM8Plcr1tZp4eCV9am+al6qel3R5tr1AlblGEb+njR/CYFh/n2Wdi/4DvN8+6NU5y68FGv8njqq18J70yYno75XZuQOuu193t6vY8i30O5FDIVcxT1DoZilL9LhS/9VqmcGN3fWDuEFj3mtn8qcR6ZH2d03e6Lp7A1wezlotAzJI5kfzStHbMuLU8CtCM8Rz0HLli7E5S5VuvXnqj5c+O+/4the/igoFnNf7M2CKTCAMbYTXrvfJqPc0HKWZ9MPfNnebWZ0SH3byzP4DGS56BcMUs9aDUeMKMiDkvE2Z/2gS1SlcWTjZW8856kvnE63opFPNthGxx3tO8zpflPn7/jUeCbyU3uswDXP8OvG4DDZMCXB4q7V7ZTCVzXKrlK1NDudHMNiqhrF43xkfFJVMaaMdOrx/w7rJ+TnoSO5YcthP++glIEr8PeN5fEvAZu57g1t1AFRj4jr/owgB8BGAQah8169DvdaVQ+xHnq5/vxqtfIatlrWwpW99199lOxriNlaRYD2UkFwC0HZS29/VeDhCPETefxgAmeY4mU/JUZgLiKNFX1QPyS4NQfAUl90qYxAuRsPRdSRB3JZmRTP1Q+M0FOjRd6RN0EcqQmisjkq0Yei23XipckDdBAfqn122oRH04ZMu6xT/UW3QQIAJoyk1lU606SCSRoYdbTGbVzaHEjYckEIR5JtF8sVcf5CleWIEpBAr52agjphedwqRw2ub1BPr/FVEMFJpipFhensy2b5effZSRx5Lvc8j1vNZ/uJeM84jcUh9A3hZEwAXv4PuNDAxVWxIkbUnSsyVDw5YcAVsu0rVUKNPykKWJ9Pbp9fm9DxrWOgSQcAA0UNPrQxXc5z+qX3TfSxvF9/0fQD3hnbDa/O0iO5S9ZfF9K0sfMgBGM4541AprZpq/aqkInSokqjcWci1rFGO8Tq/lTtYuzn2XDfS2ENAgAYdSvGY8DlnKj8WY0OakFLOsVwaJzhNetMskG68an7WrpXeKqxD5EIf45Z8ZtJBoUHtVQV+DSCPaH2ZyLYMqIfLKhzQzflTTrg5KT2KUa8B7fwKWRvxyYr48HHDzWNhcboJcc0JS/0acCG1qHY75kXmjX+Zzs4wDbcL1alk1+FjcwHSSAHVFWt4kS7KKDtIbLpfqPBfOFGMb4en3RmKrRySnOLOD4YpfiB3eNsJsmG+oHmXX8f7Vq4/z8NX+OL9GHNWElvKNGgs3bnAdRbdNwtQfFLwenPIsFHUz8BbqZ3ioGmb5dGuZjTNu1ByYOf1BUGG5UhG6up5VSOj/0ZI0uoOCh1OKkyl08vACuyuT5mnhhz4MLm1GkC7CDBDL8FIRp5TnbM8NrsNnmJ0rw1tVqE0q8/sUBzpHOfVpHvX2VqjydePfqKv/wi7/b8GpfbMQHZMvsVySXUMov12dFh4T1in3sqI1V9Jou3lTMVfzNDcjxGfwSLmA/CcLz2lHu+rXvc845z7I9r8vfi3bL/w6tG+Rz3O8L8sk3TTgw3Yho/l2dNMYRRyBbVRl4av90fXeFdyL5kcuqavhLy4ZGyiXcKnk763tV3WtOePwuLEjHgMwejm8aQ0plY21Tzmt1tC1okM3RFXX4q2VYN8jePS4RmoK300ReMuqAlBwWDgVKtUgIaOgatFv8ErvTV+WNvpbMu2e1k3+m3OWRKSspH2/R05pqYy34SybBGmUA+Qpv0ehisrqYhmZaSNVIdWqBYiqAzUDrWKOaVdHoZNueuhlYGUI35Kdgnf0y1KiKM1UpUWQjRzyKJx31qKqkFqI1KlZj1a1A530MNAbuoytW/YluH3AT35HRRvVMOmgu9d7X83kq+yOMOeejC/JDvJhfhwVwS742upQMGmng84Pu2N+ujfsNnYKAu/3pUInkzfqgV0jkLSpKhnfM3vKmOSPnU3xOEjgUyoWxCDFgx2c5CyaSunpnxrZGRyi/AxPo8Iu09TNtFo0zJphaZz1tlgzGwe1zE5om929DFAU1x3cSuSp2fFYJ5+R40rX95+LD23wXT/Q5Ncqtw2a/J0i3cooszrKrY0KG6LSpjDaElX2l084aJ+5I4ERfn5dAVeUtg1lbG+hrJ0QytltqMATFe2jsB/AB8gPJAAsCCIYKhQmHC4SIRopFiUeLREjDwsBgALCgODACBAkKAoMDY6BwELioPDQBBgiLAmODE8RAiItSQlZKYWRmplGGS0rnQp6dgbVjGqZOHnUI5rYWlBtmE5cN6EX6Cc74mrVhnanMjH17MAXUSGulm7s4LjIs4DK/WgSqLXPJ7ja8tRYedTJvRMNj9c2BmDiSZmbLTCs7BEBEB4YNBGBjYGDCQQ2IjEXyxB8keUIYR4rcB3/wUrci/sQdUDxeCHbn9/i+hes2f+e/84dkE7jn8Lo1ukiCJ732yIMIuWyGdDgP6DBfwnq/oFAg/+BzeyVDizF3p9tOJYJMu8BZamFsm1xq1zwAAkaLHghTExTlLxfTwcVg9ARJnDgiaBTo33HRySARI6piqq8zJ5bnCWXFvTc9qZ+XVaT8NWxd4RbMxUhANg59r0+//2wxUtd5urmzBLjgmNQSBrlR5RiEmeDRlWE09CbjPYW/XdHzcEeMz2oR7jsMXJGLrnGBiUkhDGfMyExpyY5gFW40BisVtRavah7+tjIErO74UMAgOfIvnh1ej13y3vYcywumMVeB0DRa/5G76Z3zffVa0iuSFRPE+l0DIRAOYNWCk/cqTx1J8XrJRv09l8flfs9nKSCXHbssoHl5MAEH5IIwxb5fGN3kXIvQYmVi+pb8dolmhW3PBAvMRickHNSQ3pqYqYsdforXK+2cB3NqBZ1Uq6I6lkqk6TgPngDr03rwMZaVV/zZuYd6cJjUAEKTyrUAXQl1t2bzNB0X/RxBXx2uU4Hr8eR60sSbBqE4LMtZF91IfWHIkJCMAdECshQCp6mzFFf0Na9ti2v3x2z7q73xUOkv+akhmyWWCR929fL5Cgrlr/EonjQ69ojWgkEIvWrxfdKCgIp0jLRefbIs1IS/eCJWwubfE6hL6lTd5KnhhHjSRGIEZBy6v4mMu6XhHqTKbp1/tdHtb476vTNUbnNR832cdJpLjsbqQUz/QURo/TjhIaNokCsI40VGyvKIE2EYbx6QQJpWaJI60IReaJJJTQ+wkapuwuLqMujk8pEHxE2JMeEzk/USHIQ+9g0JR/hTuj9PARIa1IBZL0UGuNlKrFoPt5bDvKtOXlUDC4btuuN7accBZ3CRj/I5wXdPYtPWd67+8ese3C8f0LA4HjOPTyWnYqPFaZqfY2Tbln41Hsm3H7LM101rxYpaEARtZ8B+8fpeqHw5DUikPMEbkWtNYm6+6rPzet7mmJOJ8g7+HiD4hqqWRKWDpKFxJi1ka80c1vB641CE9GV+qwdICpzpG2GfFZnR1NKDR+Y68feYbRLXHa1gjKN1duOvfqeR63wPdIKdlEjBc14lxYHkdxoXfFkWQBa7sUrvEgFFqvnJauY6ek8UaLIGKwgGRXihAa1BzUB7A6cdO2yLaue8IhVDpt5617F6bqJd8M7GYWOtahW+dSSclyHUOFQiaLGQQFfxuE0FLiabVoWoEGVi0H16My72CIVCfyDQJ1DTWKlxz2TtipRaxMacQlVybucCWxQUVZ9WlXUV9gOulWDR1ZJvG6rVxMo1Az5dRhbgrF3mMITByVhWkGihC2TSK53W62YaHPEIaQeMaAy+BMI1SGqxOaLkG8PvqMZmkHLOJpKSWq2sYR6mQCAqtcKYXSoEUALzexEnUBkEBfqRED9DceR1ArEaVUJYOdd/6qqlP0ftxg7quiGHVQ6mnWBe8Il6vh1Yr6wlMmfLFUVkb0Ck9u6Tn7ENpYidTq6b4+4Ym5I784Aga6vPnX9wBFup+mINpAofENBXvPKjllXcbx/QscMnf2Jw+ObUzW7xEtidu23N6+/a9561YiDN+aIaa1R8SlbE90DCENYgKBjH9leAjoscUSSamYQ05nnQH5U8GXc0PtHGXHQOjzKtfaPCgcOkpxHRXwuxbEmI6/w6ieysVkNxbnU6c87dPsMpX1OL50kE+bMWbKc9nKrhSnmjJMRLSdT+OCzGmEXV6f2+8F3dFmyZrce5ssz7vXx/ukN3FXm5+5Ody22noPn1cfmN4vmevWx7U7nTTrig+Niao4TT35+e9+sZF24HDMuZdnBBH3yIlXOzwBskRBSpJ2Gw93u0fYkkT/nl9xQERomMSOSxBAprIcUr0NKaSDpKZBkcD43IEn2dAcC0Cu7FIG+6W58+lPiULCdalLG0Q2NCiHoQ4gDJ5J4qCOthNIYMwlMohqCXmlOWU5+pLq/hqLVKYzx2MnwsR5n6V/E4yJTB3s85ezxnr1y2aSP/yp2+pE+l6DwpBtu+FMiTcnTZZrmZ1Kwbz8fPXD5DzTaYljP/fG/jLv+FArivBYh2X486scSx3eOk3BM/VaAvfZZHq5Q/TYDK1ZfLYb9p+YDMAwv5QRQqDWDxqlxDNjGsebg4QKIz/HwA6KWXbxUeX7mJrnjn2APCz6v9TVS0GkhJgGx+oAMQaY4wtzOIFggLGHkuQctCS2w1xZeeCUvRahQl9bE8E67NK0QpJ+QZSSZwgef8t1B7d3xOfSIClombM7pXC0zanGBLFZgi4P+7L4WN0wWr/e4MzxZvkLAjeBp9N9Dyei4oY9P5a5yB7kbnIcL9+188r2nl5lh0RkXn2WpJ53nPhr/r67lfhQ6Sg8lzi7nQgB83UMKrttk5utbp0SVhm9bz8yAcTmbWbiv3MEcBCgwhlN+GxIUaDBgKzdEZ4OPEImBs4Ih01B3SjTozKCb0U0tqpPYly64TCPYjsUvXuPa12PSwY1vdovjvR+ZDJOppCFpTuJZ3iS1v4uRTDxNhItPSAKkpKFjYOzNLAt77WLb73xefiFR8ftySs1+Z0ZOQVmtklWsIJz/UOHsKCKF7mhiG4kov1giyRaafTNPSbhNXNgJ7WKnoUtSEDZDU7OdVv9/q1SL8NCYtIuN0QLdiTdXqxpqVO7Jp94PDt2IgXhkrGEd2ay3Yptq4bjwrd5E9gQnOqAjF9U6zbkWAYuMaJpwtDGF4QQ/y3yGbqb/FcQD5dPhn7Q4+0lSFoy8/y8HB/J/CrIqw2umW2sQuLjdH02iWoqwvWiS85OXqgYOtN7dlTPS4J/w3znB80X2hgcK76W3Hw2gn0gNGNxr/sXOpAcxqXTB5rFTaScAfUhp6TFcl9dIronh5myry+5hGNyfgRtH5ErrvukIAgfceWBdICrjfDKHRVeXK3au1U4DJ4e4jasydBPth8nRwZ6azptHeoRmfldletwxZ4b96T4fTOuXvHsn+/eohGrR9HRAaaav18+icJLNLVMCZmSZoXbdMzyCanhkJnmDc2Unn7NcO0ZVQ8Z/h5DLuKgDxrWxBbrjoYyCDD4YbOt3/oMXA3Hhp0t85OS12jnWDvnLC1ySVlzGexh0V13A+6Q3WQFmutjA2VyJb/9oCzn8hV8OGmBhH96zY/x4QhuLpUU0jg66ELsNq8K7hAyBIX4EYBhMxOqb9W4+sU/1XzzURS+1WIXlGuwU8/jhcLS0SFv8sB3wxdYP48NV4MmFmzbZa0/n6Y7ojpFb98AZWeD55A6LGbxf6wYrFc8kpP31QsLljnLtxs3Z7cO/JVX82XavdUS3T6kPfLVnQLmMrPtM8QM7OIMxrjlWecHR3AI1JQ0W0Vu3hiZW9CdEvThLlpO+ErDa37yTCz1NI2PAJI0fHFJ4uwq4yzAkFVsMHsjJEXl+jRPCDGuJL4N+d+J0bTvOg0kILPCFUFBpTn9hzb7d14p/8R5bkJAte3A+47fw/JK3BGMfIHOLXmpqZGNcNURFvM8KgAEZa3JbnTplxs4Tc7zjUKmMHfzCoJ/Bz+9P18BPnOVqdjSTdQ9wgiutaXfMHBDjumoxY27uCgjy8EZt5baEPJ75Gu52cmm9lz2dxa1dDid3HWumNfA/eN/Uqb3nkjygXHLsEoWpQJLojtF9/D6Nn9j+zg99xfDwxIbgWnpRVtb1PZQzPW2DnWfMGo8NLpz/ZXDOvF5kjrq+1l4PfhQbPmZ9MILNdp0z7bscZR9tJ2jrJC4wfSvIMxk4/fsa7frr8rulF1kx2hpIJXKKa9wUr6DXYDMOYsY9/FPOPvzidIs9Eq9oHyl4k/feI/45fvHTS59tdD0ErX7A+lXpF+l3GkQqiddw7nNejCfj6fWLP/DP8Zf47COxKvm9W6e4YcE7zwe+Yeb+xFQRIeo7AOZB5X1PLy5zM52V93V9s8wTfBc/wB/k6eQ/6X3tPwG6R+OO8E18K322/HevPw2WyqWY1C5mb/875J/pJWXe6Hv40+s6Q57jhrORowYu92FaPjkBeLA/cBNeGvywWYB+f/zjMvdDvTXYsqZn+VPVU4bcS/mZisdTSGjgpz6fTi3c4L76qX0NtZ6K5IVOey197HjWxZOTkT/V/CD18s/0dA+i4cuws+bU0QPk9Kr/b37Oz2PhzCx41eY6yyfyV31WddPvpKCtND1BxovVh6KWZBnJTVF9LS0dZBCVB7RgHDoQEWLVCqUcE0nEAiop0ylDWqUoxRXXtV8za5qa2z64TP1HaxS4J8jo8zRu5jyF9gqSiIeWfhvHXSnW7hzAjmmouYrxFlNTtx4W3a+dce2LK1+XZFxllJzSZxl2yQETdFBLHnKotscROk3paX4iWyLcNkB6Pby56STI8pqOlSu83mBeOEh+JSPMcB4YcyLmABq9UlA1BTFMJQtphfsltKwrbWbofts5jOFZk5nyioV6Oclp6rTTmh5X2DIniDch5LSYk8SxrZOHzBAkW/KxBnHfySxgNzlaiHYAnuBZSLnkKVRWWCISl7aL0IesEyU52bTvmaOUlE4eerLFnYFEdgm28wKltdNR3XncPiZyPAqAH1reF3/7uCGwiGghUmpeLlFyhamNcD1ST7JiSiaoilN+RzXcrtryOEjcr/kszwr5Bt6tjsYJexmtsVKmWKFvaMfQweeugh9HMe1qS2nlV+5XAD22UlzS//dEr8d1//pQ2oknXEoYGHFH6IqQnUmRMFkCWbJ/S2BVroPwdjNNIm0pNj+KV/o6GcE+fvoRt7rXmltELvfiECbaDtYgvWqdc2vC/wD+g7wMsCF5tcsfxib6nPp2osCosCWoUGI8WHHHEW2lsZm4SDEciScyvlmwtCB5UPFyl5rK6+SZnCoRjtZgNNvuRM5lN2V2ZZFIaUurHQMk0e7AjcoooaxlazvKLaF3EWFePMHbjso1vg6ynrMs5RH7ESTbkgAUR6SPZtxte9iJFe0HSSzKnbRxe878yhGAiY1wDrF6Kbvva6SSLPOj82Ho1nR9Jo5sM0t+Oy65zW1tkBG6icb+5seddVHaFSdHmYeeZkwcY1mcrD5dCnf+Juswuiao6rZH4A+9aT0pPH07VWgyHUYdnE7sc1sjG1eNqowPrwSzjn7NK3pwaKaOZqIzDunDM2U4OVX1tm6CZ4U2y0ZYRbytVpN5YtkjIcGyxCrrPkJLq3fgoNFyAceRRYYa2ZQQVrjWugdorzijlU4SKozPVOAEutmKiU27k6Pdra5qhLh7IImbRWzXF7YTtiLgMr1I08rpqpsABv33CuwhaJlIqXm5hGSZqY1wPVJPsmJKJijFVfNRFe2h2vK4kJV+zdfyhMwNvFsdjRP2MlpjpUyxQt/QjqGDz10FP47SdNzWpRmvRD8KuEETjYekTUY4hoHETWgReo/zlSIYS8CSTZKmxV8Jej+Lq4UMkePejgMmYtfnVz5nTfEX/yAvA96QV7t8cTbR59S3EwVGhS1BSYntQeRedtRWGnvMcqVYHNFExjcLlhYkDzpeuEtN5XXyXE6VCEdrMJptdyLnshuZhqwkUtpiFRmUJOjAjcoooaxlazvKLaF3ERw43jzJu6hyBD1ZpIzwKwi2JRDFE+mrGd3sYycU+UVSi9JZG+en7v3J0FcaoaA4m1i5lKX3ZaQmWcz3ToYRomxxrF7ittRNZUTX+LEKryZqLOKVl3RHWFVN+kae7C70UDrsVJXbGsJlo2o13r10ZkG/pivyIKUKRzvUQR5aynJbR+C2QpNlqAq8SGvaHLG0kagDE7HMOnqEllbdgYOMVhdwHLGwoZpsqhCq0GvZA2SvckZWMklIoflMDZxAV7bEmE2zk6O1W7pqI4Q7B5JosxDT9YXaCbZGQMvkhTWtOl3qFgCDO0t8AAy5Wtr9Wj9YqpiPT8rYo83Sahq29lieDptTlrw44OAzaF+8jO1ZrMqWOcG0WtUoydW+klGxPvfsAWZ3sKdpEVCSJ/kr8rtsBEiyvD3mbZSi43RxG11bYX3F3zhdVIZibWpYGgnlXX/+yUdNg4tajp1z70tMku1Jh/0ew110Vu7Bq7zoD1CTw8t0AM7lLeh9UKNqoFlWpwHgBIEZm4Ew2cC3av476GZKT/GJCCYH18ZD8B04oQR7R94pdiytC9z/XzZUVbICSafJhaOxCcryEop0VHS17qbXrTIxyy+G7F8u2fZOGDeel47vJBun627SNVrviwFkd5k1MfGFw2OrKymjPys7k/b//o8Rbdb7RtvZt9WUL872Fn8Uy88bwL6uIdhfw1aa2lHo1YfStS59eBpOUDPfa8jYBUygBqhV7Q4ZPYbo1B8x84ustbkMyvkD60iHHQAWFPLZiR5HmlMShv2WIdpgYB7ZmlrZTDkIq+2x9qNkl4diSskMaXt7n5BN6pWfdUtNWa/icZIIGJ1W0bcHCaIkrGeEkRHrAiVAdTDJUEY/SHOAqWphzvttUpJvfVFDjvU0ZSqMFaQOkZrk74tIX1KcDhhaKw2xZRL3C+RsLhSXd/k9LmdxwsGn5X33w5qSSeApQ0ylRMjEHAOeoXEkJ838Yp8sSOolK+J7NOE/SULpLtz3a7Acpnu1QkEMv+x4SGbGSbnYJdYcLkFOpx7OO3IOoMqh5QHo/AmrPj+5EJtxL3FvgOJ9CyXMJWs4JJRtod2G56VBIjKgMT9PlmyC2XVXQEBUjIl1GxcZW9qZX230CfuPgdC+mnXX+/VSk2hvaYNJ1MwD7QMQiczT9myFNV0ep8M2F+k9IiNwdHGn935XRKxSbtdY2P1Ce95wmhhRplVDj3XUHPOOQyPF1ZxVoylGq8t2AUd/joCNCZHAbxAHOs/jwozlDKiJlUo/2rDNm8CPbI+NblojFYeE6KpWiatZxtRVySMDVfHiUP1awCovNVElIh1tVaJanwguoXAEVXVVCTExTib2Rda/HFbbIa6V7UptGh1ly9FNHdA9JktHxkTGxqKN5JoGDVXYFs39Qtu1xTHIo0lJevAElOZQ6wMBd2qcA1Ngwxcn1DmUzAvzDQKogQsMV4fzhKtRJUxoHJtl77YDdDrNJlmLEye+Qxlus2aCp8vBeGKd2P/2ZEfNtXdNYgCiyta3ZUYKxMr7PEAS1lVkMHkmHOiJfQtqd8KLjO1JqlETNAYjfmZMYndQx9OsMWkwwUOvi6VPo60srEklNqUOn0ERocs04qIzOPBhNWaD3YdMg1pJaLN5Pe/4z6Ua1Le1cztMJmCDE9PlfYmIFbpJ90FZhO9agLJqehwJbsl/4KxBAG1/BppZbfg1GGo+dnQSUj62K661WPvIBAiniFhe0rBTJDkcqwbZi/8EK3HdEowkgi3xf+owjNOTFKrmW9c2gqwDLgMo9SXogfzSSvd2BtYY3dNcAYa6I0p4sEdA8+AiDeVSmC/6QJiNhIgmt0W/y2uT/osSyawqQSoVy5zs8w+rTHNPPZBw1bV1BxyDGT7IMOx+iXUJet7uSo7FN1JWNcGLAN1h7T7aQ39UzOVdWHOwaxkEMpRU+qGRhE82VwjTAFvKbIy1VL4QiSfKvalj0v4ncCigo8QvAKuqBoOHwqaYlGz+MO12Q25+cbRwZQJKYcFVqyAWxv7W0LqtZdNVIwO2lfc72s2ufcBdcA1DZ6z9XeAsp+WFzEnQFcBhazCpJfLkHvE3wBWl0kP7rvSTS1/gzvVnoF8RwjpS950lH7e/wHBtGYn6TcbFouuKFApezqyxJKokUBci7+5jPElgvWoeGIVBp9rk8+5QmRCxSwqt2bPu9FjEjsY8wWiP/0r9hF6jjUS8NDaMr4asp1+vaIxlXl0I8C0ZviWw24DQCK96ruGZbGAtcUnVnfFWnji5krgLsYaU+8lhvdFIbLfuhwMNapxounr9Z3WEHumSyKqglI2S/hyBh8E7n0ux/feV6ps1Hx1G0nYSyG8cY3sa9VqxDo8gd4HOsHY9wJcXaaBHLqUGwqzU6DLtDdqvfJw9s5pH/Tc48foBvk2Xmnr5Ze6rBUSlCoGrrzSJqUMhBCJUgxb7r5VRFd6v1tqQ32mXO75ZI0b0JKUo33kwvGSDSy9WISZiaZo1g8nJYwPuCLp2XVqf0ZvwAaahRIhmSSLeOdO0RevmqhB6VRb7oUiqikQ7UFJz4fMA3yP4U8TmwwUpDakxvJTcROYWC6bd3AU9qA3PFiO/5Tz2x/47CMsos4k5+BmA6yUoH4seSAPVz9TrkWmNjwxrOek+GGn9bZL7J0KZ7Ct80eDFja0UH4x2VRTuZVsZzgVDJ+exW0o4229V/HPXk0sMwPnhNYX7qVJv5S7JxJXR2mQ5ig32Rbd7mXKrf9Ykj9/B42C0NqJPlN9jMOd2gi/gcDXm0iJ/BsWL6JS08NLYffLC3Cd3YS5cJwKDN2I1izf6p0UUI2pVpVlde62c5WnN5l5vc+qT5mSzd6JlOZ7Ehqmuw+5sk8rfIyX5+GvBgfvTEp6MRW+PQ9p7zHZ/uGfsONxFOqqvvBF3Y2yndBogalGa5IFnNkh9pwGhn1NxeB6DC5mhnZNIG5jdIhfkpcS5BqlfDRBHKdlL4S2t3CX5pYfrxhRNJhqLTZI/oB7i0YoPnu95PFA2J0UxJLuO8LycZ09+4L8xscFb0l1M/Rx8j9MmBvZ25NlPs3h8l9ebxVX8QcNwmdas+cePNo1P7wBwh+V3a9/9IdWnwntzdnsbz6bgOSuRLTx0ETaTPfWrvmiilI7xXWJl49RHB2PQHYq5zZIj+4rnHzFDrR7S9PaXjn5pkwvwqxYbWhcZW3lp9O1oNX3mJY0Mc4jKy6ZXG1x7feZfxgGUx3xePGkvSiNmqzOpKmfrYI4Hp6OK8GvqeA6ueHVjMXp3JzxxKiyJC1HWd6GSo67V/Vdqbx9d2Z/uw89sexXQnhmp3LIB/g2ODcWK7y15dssJuspRJLlZU9zSMco0ZJ13S29TB/87eedJ1lELrU8OKiK6rarxnWjIdvR8AKLgu3vSMpogBiws9mLsdeKoLVI+pJkxFnM54DmVCanDtNrHvnnTUHNMd6S34UYlTQOZMsNRpFJ8KDnRRoeSM2KnmJ8lKWHzSYmWaBXI/u9C9G0XZPA3h3xL2KdCa99k8nEOjEMq4w0SCWmrx21UabWMdA3yoCpeHKpfqwxg1e5F/a0RJVOUPMlZItOtBJHUGoQDUdREJJKGwORdiv2YhuHqh0MpSa0iUmKLTZvJAcQe0osl1VZJtsKos56XY2lbUrM4QSa3TLDDQQNFofRSKNQ0krGWR16/F7oZTEb6Ghbx2NULrDxkXtAZRFhJYv/1hfhSONAnD3HF1sE2UNS2DNx41Y6ZcY+hJCBm098sU9ONcWOCwX/KWVIB2U+rOWoHIcykIXyKRBCOEHaCtRKSYprK/2/wwAyTIqrfurY1l6YJnbyRjfvLGViDOwUWaS5lCETFeDAwSqKrQJ17lYbGJUp+URBtuMQimtxm/c5rQl+R8FUqlmHsq7IC2Rc4UYySsQgEC9Vh3AATiBfG6H3jvr8dTMVoh649qO9nXit2htFk4usykQ3wyeOKqCmzMb5MJZBDJjWMUJKupIGqQ3yqegVb/mh+yfGhseN/Ed0UOYyz0EdSC1ZT/Qj9dbwsICBqLQ5GHsO+Gaxy1SpVahnLrgi0zU7MGAeuncljjT8l9oxmotYb66qavHXtahrT3zg7oR1DvXfce9EwZcFywlXSYHiP76uXcFgY7QKDwguVA7vfGF6VjCT8wiKR3GqjrbKZnKRoxzd2L0dBbJHy2RRbVJhYijNJrOvLupE2T6wPMrfakOcHjnKClrfLL7UvicYqXp0leCPDQ65IhscYXiReSawJ7oztMI/OqXseGvP7XY3L/eoMTdWPC7CmdtqyFr7FW4LkbOLTbB6PSt3uiDBafc907/u7tRaVOqZHpPpL9KGe1WO6UF/E+byVmtVfMq4aS3BagtVdME7vK+Qm0a5lmwViuVSaLAeripdQg62qNvKw4kXxLSqj700UVixgHzKjTPElZa2dAflXkACmQa6Wv04Oqa8Q8osFvarSP8E68BMBLXMoYldIH/5EQcl86k0u6kTTE2uqWhhsc+VbW6Tlra7IeBC3kEhJnQ/jFqxF7YrSd6qRX4Im0fHnwmhHHgUuj/IAZzUi/RUIprYe46RSjNSuvj+RS7HEbwz/vzAkGGRVnkp6hV6LZ0BwipEDuUIMqqCeYv+LUO7h/n82nI+WO5pNKf5Unwg1QATmuKQtWPtR+Du2jcdouu7bUuJ+8d2ZMUOITNysIb1t0IY05zLO3nfQ8UeSR5OaxNa3bbZ6ew0I/arhxFC5tbFVZqWYPCw7jbDn06teGLwHzkUgMZX9gPqUvYGRodL6XnMhbQbla1d6m3EsYH6NRun3hNvg8pRltoYxyttsIQfWvGwHo7tcwAtVWlaXF9chjNPRVIXaOB6AoLFJ5+a+X8sp99tZltdunrW5yrxscMg5fOunUE2Lzm9wAvuy7DDOjQSmUdddYjR4JHI9gbqPPMYhSdPRdkn5NxPfTKGvGkfspXbnUJyDh011sVj05Bs/xwwFoXqW+Jh9v2qbtSmuEf6fWoLcD0v9KDHVxcXmU5THdtFtNq54WMOOrv6fpHu6cbH/RdpT1q0S6/qReDoAO9DN0o+PUR/xeY7g0cP26N4A195hDAZhSF+VayjYzZiRwLQs/OMbZY8liXiZmOj3GxuKk+ct2RoG035JzCMRyoDhRB2GoZy+VkVO+z8Req0krr6xrxMv58uvZm3a+Yx/kvOgtJFkQyNa86PE+5cuHz77f0cf47TeWSiW8bL0QsduQ9dLxdu7Xr3hTXhMoekLGQ172E0pfKn87pSNz9xCITADEkXvk7hsTsR2s0AOMnYkBpD7XykZsLSwvPdYpPw/Z6L8HZs6Vgg065+bi6S1bwfkAYJsnmQdJSX3F2rvzCFfXeT7/52FUa9wRUqPGsvHXA8oPPwiWuQdgxM+iHuiXiF5+aYGsl37tlSpEvDGrLS+1AcReKjT+GzI3E0Y3LZhLlxB6wUbaRvpnnrZcySXiKhMUXlY9hLXbp4ZyR44pxpWwhOhNKG7mO9lVtyMVFoxLplHc//CJj8Tr3wmFQ+VLR4e5L/V9hfvFKx5UTLKSXeo+VEzeDbX2pexBZoG214iQHNSnKiBbVI5klUXt6dQMAepXOay+Te4c+Voy2/N21Z4ZLc2TMbM/dPcb2J5fHnkZK1zPLE4J9HRxGaoPHLodcc1UUrpG52qJILQaJGZxuLaop5epanaoi3aIi2rXmqwMWJ6EvJMi7FqvGn0K5VOOLFzxX4h+Pw0mq8lmIxTavRg2C/satR4lxrCfvsMBfQNPZO88UNgeKhl0+pjHcoJNpoANzSGFQf/rimbfcSz1dYqYuPpy37pg9WEjWnxtIqnE8UdJfNHJ6G0PUe0Nz59Xk3LHm0KjMEcKjwym87cypwxeBvsycs9E8976Ht9rzf0hl6QC5axd3x+vrNo5B0a6xBpslS2J7t2juTM1OUhs6Hj4qiutxQdXkiJlwysClZrznR/yf4f9RylBoGNXe080rs4PKKA2jB5ZFqpDRLenGaNprH7/h4crg2anNIiKt4isnRtCN4GN5rvj96rrfDi0nxEc0HMdyfVQogpYSb4WGI+fGIGtTDJGp7hrtfPacrYGt6QNkl1ZixQtttQlfmNa2NOT7a4UuOV/lZCGDx3sAuHMEwWdXAkQkdjSWpXsTL3DGVwtqTXgKHADqL/ilHLmpX+qNoj3X9jQ+qau8fzEEE6f+6tPAc5AkNPwUFxvd2074GoL0KX6UJIrgnp+rZMTRHpmkbjbWsIu0lDTf/JmAnWemEa3l4s7rXm40MUb9OxLr6TdI6Wp3ouL5Hh6yoYnAxuZBQkmXf6EoT0gmKKkhkNnzN5BiFxJSm2dYvt075RWEJZKhN8zYatRCRVpFlotWmRexkzCit9GvlXGR0bn5icWonLd4cslnEyKLZ4MwYOAYnY1NDDrUvEaqZ5J9Tvv3RsZgVAcFRbvQUTl5CUklbp1z+lZ6dBS0GgcfVWLDwiMio6BsZ/lWiirFEealn+Vy5OwtDslz7D5eTDVapk3qqddJApCAEFUyo9onVAtRkyYxMOH4hEpk7cePJFrIP+1zKZhniM5NXB9L/ULNNcBejK1Xy4/rGjRNr6BAeCdnWGzWLaKdlP6FdiCGiYUuYJg4pMhSb9MPmHRmSGY8OeI9cThCevDm9AFDwV/hQxSJLL9H/ud8AoCpSoUn+wvYW4zPpMYpasp3eqchhe6FLi6cuTI6jQpN+YTP8KBRxb+I5rv0jw5IvYBE2/2UKIx0jPpnwYtJlnylXQ0JuqXI36svUZeSXe5bfJavGcL0ok54em9OuDehD0HzrAl0A+vlwoyrxCe9NXspqF2HRVdQk7JlygLPTH9pat+Lq8ZTkxUz66wxA60J3A+LLVTlQJzdw/sQYXPHm8pvU6j3AJY5WtzqNxNIhBXz75KTeYQF/8ks+A/LKywP5LI8ABzGAOi7kKVIK2ZOA39CGESMeW9/6s+JQarGBy+ZCBQ9DOrOPEsumRALF46cmnzGAOo8v/fZyU3/qsarXud1Svx0lVK2AkkXywJFBAA72Ms8abfmMNWSVbKFBKmjKXgwgiMZ0FrGK7RsXUgZFQCWvYzPZ2N9HhJildBapSu0fN9EGQMIloxCz2cQ8x4SE53QWucntGw8xBkVwS1YDfaFUfs0i/dol9/AgftcVbCQP4Tv0llf6GE8AWuIcsg+Rx/PM0CPLpgPjVC6mQxQPwoJw6c9b3Msjra/KE6zJIpl2g0myjS+r9t9X68sPHPJ9IBbjbTRNzAPwvaJYst+7oA0jQUEJLtiAaDCs3HqVQAcPeLwyXiWkFBZHKedJh5/BiZW2zKAXjedHwU0vFYmQLqgsQ1CnDDiNvB3TlBozCgsa8yr+swbAXFV/fbz1W1IGjEtpUyYCpsWrMiPViR7Gz2HX+UQ2meBMWjBuBoPE+5Oug7jX80xoMexJ5sdBDWzwaBPsU+TioNxlh7D711oQgP9r9oq0F7CvRt+5XbxPXIIX2KNe8rYm+I2Fn2DPps6tn3typK5aYdrgVAKABO2EJBQSb9+3yw19No7ym32tvuTcHvZRsWvdjtl5ZMaouaCMTWkSTqLVQ87Fnvo8K7LIJvRqANa9F++raNjGnr/4vAdqZwmFnC6ddI2ft+g8Il93ZzYDs3u7GxR7qv7jbQQBFreKyIE6uPkIQ9jwGH0GOs2JPxrPmIwWWgjIyRahBp3gRLnsEiOmv8Jzh4kUQCRAHmQx1sJVQEnK150QpqKvx8ea3niOYrafIHMVpPUezWZ81plEoiQ1a4qM5iUFPcrQlNVhJ3ziZzM5L4MxKKfNSxuKiIL6tNATJBi1Bs41g2RUctzYEz/53cSpy6lCqcjWD9VzDXb2o3TgVIseSOl5IPa+ExBsh804ovBcqH6SBTzLOf++cCb6yk+X8gJWV/OJfJvkzBGWPRyL6GkFKSVBSejgtZdNdSMorXZfC2MlBc2M1J7dkfsBaPb2R3+Srnh8yVc+POKrnx+zUv9aTRQ6e24seIvt7MkwO9nz43N/LVeXhXo+Yx0uVPB1Znu29HC9zaZ5zUR/zohd5uTx5tXx5vQJ5M+p75O1oG8y7lWws71exqXxsZFDKRtXqJUmI2MJCfwOuapfDTe3GNrW3BXc1aTrb1bTBQx3CLnUEu9UM9qgTXw1PNScYd3VGORBRqoGKMxIvScaAkKYFH1kGXzlAKwTGUmA1LgHHe38DeCsAUTtIVoNsLSg6EWc94m1Egs0tJNrjKEmOG7KcRLZTyHEGuc61kOeih8j3iAHiVkDdDpg7AXc3EO4F0v1AeRBoDwPjURo9TpMnafb0XbV4dqcd9I+dc8xrBvbGYYh3dwXl7b9Bu2+hw/fY/YjxM9avOL/j/UHwH6K/DpYCxM9gX8dGBTgkF4CjcgOOzgO2PFER7L2pDJ4/9pAdoDpMYdRGKAZn8aXQWH18Mu1fl85yg7AoeApGQqdhLHxRjCetkOWNtsBKSx3nZBx+getpx0A7+nKX/8ZnPW/XshrskmN3/J1XRPLrFGCDiZoP2LBOy+M8c84I8HVhHl5vNtvcFWHO0XmOFp2LFNV82U/opGCuQHcygxcSMLRf0sc6HS2sXPffBR56CMeLOpKCbySQkOhhMNweLP6yEBoUWGkUZt2yxeuK+ydT2V9nWlat0zETVp7kbtnQ8dtcB975Rq/hYKLbtg/MDRyJSyScfCMD5720C74Nwxd+ab7o2+iLv02+5NvsS78tvuzb6su/9HaOJkn2h0smIF7Pajfa0mYVeg7Q/l2lfldFev9od3vVkn0uQSwaIU+BgQYZ2qdd8Lx0GXBkyenPEvp7t71lPTbnGf3QWZwhWGHPnY/+T5AvHMEXtStmUEcZSMpR/lY6LLDaWp0iREGBRjN02mBZZbU11kq0znpJJ3CQ8zzowc7r4I5IzX+ZJluks2qO7XbYaZfd9jnsqONOOu28i/60wSZbbLXNdjvsstd+/jnqmONOOOmU084MLjZaN6RE0RZXp7qIWcYaxx/ccMsdWe57sKghXgA/4hxX8vKqRhzVSlnNWuUVxVK1nPL/zddvedffhNIIwcpVG2lMiA4UVlQxJZRUSulllVdBRRUHSZGmqNEerJ++W2pZQj+QsV/BzXk6jbhYNM+gjHiHa/I1K4T5b+xAllUJCu4K7QrvRCo6fKYCYYbPTiQmTCAutnfhgKRIW+bGtUhWkmBmOXkFxUobByrXaBf6Cn2dAMJEiBItRqwEiZIkS5EqTboMmbJkA4PIIdPyfB/Iv8EFaPAk0M48dXYwXdZ9gwroOZZ74wYd0HHQqa6DbnropY9+BjToQ+C0fJtNOg4w7ZWAmdO1gDOcZdxTUlHTAIAgsJHTMKiYDAFdhgZBpgOBr6IJEFRkPxBda0CJsipOA6rUcHDlCQ3k2wwUqAwIiYhJqBPDY6CfEoOTZ70HXt5EivaeivpJkyFTlv5y5StUZIjhfdL5LpWpM8XGy1WgWAkFtlvhkHM+NxQppZq1WWWNDutEWi5ajFhx4iVIscFGm22VyTonOM8vuumz0AFHHHPCKWdckGG9jTbv8sSTTOqb9tjngEPOueiyK65N3X0L9kc33XbXPf95KFvOjLy6mtWPMtqaR1/bey4ei8fjyRe67a+oRKUixUqU+ga+6Bf/+r0BL+8NfGUv6sW9pGwlInMPXXjcyEWUExDpyQiwzGUTONmWQ1DDIKrwp0rNC3kddUo14Hsln1ATu/XV+mnLV/WNDmpdPX0DQyNjE1Mz8xNIyOHHUJYF0IJCIhgxcQkcKCUtIysnr6CopKyCV1Wvwfk0W6WWto6uXn3CBoZGVqwSrBlbPxvtTluApGjGB1iOF0RJVk6dreF1We49SMwoy9kWVEFWJH1IZZJo3uy1RhTjQffaJjeZ0V/tao/ehGdqShPDuP8UabF/utLVrnXdS4r6i7eBAAcFBjx8JOg1aaWLSqqppQ4SVBppgUE7nUwxwxwLMMxmDTPO0UEXvRbYzz2GGWWcSaaZZZ5FlmGyyjobbNnNLnscjCda79LQI89vdB7M8AXFkvLYUpmq1MSR+iCDTUWqUxdyGtKU1jDTkc50pzf9Gcr4yq9kEYtZwlIu4HwPd5TzP+4JT3rIwx7/MUW3oEzsy+5XQJMoiEUqbawHSGynWtGMD7AcL4iSrKiabrk9SMw8Mi5AKq9Uxnj+5AbOf2qdU6cyD5xr+7CZpiG3q6UgaEmcVKqjQw5rG+OhpPYH1z+L3CuhKcMDiaEcf1Sxc2XonQHOnBSxupT9r5qJ8Njgj/QoTHnLX7jbeKkuf9Fo0dyurJ8voswTv3zVTDKZOn3yhWo4PcVT8qVu/hGZ87x+zemKD/E9PHFr/b2MX9CJ+8t1PUgmn77DX00JzQwecxgW8FnCWglnZcRYAo8Tti6x1idqQ+JtRGJHSe4yUjtBeleQ2Umy+47cfiB/QIDCeb2A4uEOr3TKQ6mc9nCpmPNlImHh3LgK52hzAnjmAjDmB/Dtj/XoEu6m1gKQnD8nLmwHyG4kuY0hf7YAhSNSPBal41A+wZWSKn/37Ldt0rfKXsR5eXhH18HiTBoqaDml/E6BIiXKVKihVnUj5CnXMbrY7KpNLk1cBHJ3AsYs8Fi0S9Wt99R7tYXsb+YlQSpKJGlBlIy5SDZVhCvBSh0Bto0QWn4UmX1Wx4lsqUTIiNTh6Z7XSJnuboycwacK3a9Q7OFQ6pWh3Ks6Ku2TwVp6csHUY3I3JiI/cqiixpXx1DlHWzS4yK9ocZnu6PDII3o8j+jzMmMAuoR8JRLI39sj4tdgZLy/JMu8ElZY69QAY7P6tMQxYhtcEtaSVDg8QRUCqRAZhMQiZOVCYROqSqGpErqatwpD09DxMzpKgkyMlhALa0uYVZMIh5YmUqlURK0uxDvrdHDgIyUm6HEuwU/+4Nw9QmSsx4hNxQkSYz9FaqovUZLaDFR2uJWaOotdGoRKo2WjmfanlAdVZVYVxwOCscqa4CRKDIFhqkxVqbquOWImtRvrQ3RNUucNqffOC4XkPYdC9oGzofrS5TDAJlbT6Sdknf/Jer/KBr/LRn/KJv9vyWb/zSHay2eo5D3/ACp9JV6flL0yLzrl1qa3qXw134BUvbovLzWv4RuS2tfyheXW643cef2W5q4mKl8f3yXWq7n5KsOeR59D+7NogtBJAKg6sjf7vJohAdpZTJHhKEDjPN5MuO3azofXbuhS+O3mrscDyWp4f/ZfEIv/GoCPjMSyf7UkIYRFunEkR2UmqolINKpIDJpMLBvF2ZcUv61OoJjSJMmVpEEFTWlplaTtVJIOm9JlTBE9JjL6hDAoQ2aIXGVtxggP1zDGRKalvdqMUzTFHBKWWG+17Sl9se95RBx6EXHs/YhTH2acmZVLnxJx7VXGjRzu5dFXZDwbFi+8MctCkVjFmZUqvn8iYrUzyW2y0SWEuOMhwlJfnuv8a1pcV0lTq5QfZiyUUY5VNnFSVahXJF9TpqCfjlOoa4QU6VtNSgytPjCilB6OWNOag1rr6EFzLew6IoNHS4UI1iQqVTUzqLrzVLvUFxFwpaikTBrjeqsqnZC9on/e9SIfyOTjcbI0NiTZmhmeHK2EZpk9qxzicB3VzyPHDNgjmwbJy3FDrZOThivJKZWSnXVzzj215YL5RC5ZmLlcEFypq0YRWTI6smzsvawYh1ZLgR1usKubDT3entkyc8sCe3PHrw7krvSI3LMkcmhZ5MjyyH0rMw+qpB5aQ+SRtZHHMjJPyoWn9cxmMscVs/q53fbkRdH4KweGXzvrXE7cK2siBJKv8FW+xtf5RjOXfkdikqjKEKVq6fRqd4OUiwBOt4A4PR7PQtYQbBa7meOGw6k61UjKCOgB/fyL86ITCeENP/27txKGJhJSMnIKSipqGlpcPDg+ASERMQkp2SVfmfzc6a9ayoPyHhcoSdtGMws4iLAg2uwOx7wn2AIIdhr+HFBcFSSkyfoaAip0ScDAwsEjRGxq29XYqU6DRrtKxl0B64o6WrFSRmZlWduZTSW7fgMGDRu13wEHHXLYEVg4eBUIqlA0adaiFR0DU5sZ66y3wSZbbLPDLhdcclnI28H9qcvWW4pBpbKU5YLCHv4v4WFKAuzNf2cAJTgWVF8M6w8uoAVy0rdNXCEB3TAF7MAR3MAL/CEIwuAxT0kkjUzyoFFGDY14G+/hM3yDX/ArHQAGQcLHSD2eu8Z3T6r/B+j/6U/il78SNP0MJlpD/w//zMqvzwtQNR5jDosIVIMa0Bj0P4ghBjKBTCEzSBsyhy1gS9gKtoZtjNzDb8b+fgKEiEyL5YtHK/pNwWBxL+9tlvDWlAgkcilvBpVGZ8RksTlcXnyBUCSWLEm3a9RpgOm3coVSlVqd5vu39l6nf4ZkMZpqJs1rIS2trG2ytbN3cGyntX42H8JQOI/xX2XKfjzoi/mvrj/97dVgzVZeBCzTp0Tddrp796CWT+HIvn9XxrJSVMrKRJli/ltOcoVSpU6j1ekNxqxM1jZm1SgSSmeAmN+RBbsf+Fl6dYFGTa3ZCIpsaMwVc0EcyuC0n/8Pyz/KhW8p2ILJVauvGYCXWbyCKXXmVKp0llXe02yplJwwx0Vy0zmSl86R/GTOHRAZIPEnysN4b8Bq123I4bogCIUUUUwJpZSl5Sqkwc3jWbFxqghzwHJomuDgaFhBJVVUU0MtddTTjLHcgZM6uSZYakFLSYRvSVi4FcEXWiLVVu3VUazqrK7qrp7qrb5tTCqtwmMrtcKiFLnqi1TUaihaNVZTNVfd66pP20WerIToDBm80/du/b5avTkgbtCk0bJt6GA6+9MlFGY+lbDhKxnSZPvDvSFMFu1U1egZtVdlM660fNkfPUIZgzeCkaNDxcRRSpaSKHiRhMDhFj7CAjsgm3gErF/d7F6Pe9HbPvWVH/mNv5lhkTW2OUDpNOGETTTTQit0GDBpo50OWHTSRTc99NJHPwMMJkP65u8kcUpR8ITD0jBHHwmSN5XCFE61KCVTL4FHLtZjZZQuNm2USOo1Q/htTaFh5SDedDvD7kKSedYe5fOxjbR3rgOGXHA7uzenfg3TD4l2/HoL9epukoHOdjdePxmNOGDHNOEycG4PwMe6HLVg86JSBfWze07Ac5FK4Ekv0AB6ifiIFe4Ce5pXL/UDJH+yolF72rq6I5Qnv4G0hzFb7dYdEIsa+5cvb8IFB8Sixv4KRAsOiEWNxae+fryQi5s8Crr5rwfOp/Ph4FUgqFKjFlGdeiRkFFQNaBo1adaiFR0DU5t2HVg6denWo1effgMGDRk2YtSYcRMqVS+dCO5Mh/RQY7sS9L3U+8KizooBCbKXmCrY/0gT/3xEJ9lPx6hGnVJlEJBQyiXS0itlYGJmUaaclU2FSnZVqtVycELDMH9qLpftUUK/pjVENYnO90MYLwBtvR2LygswwOKC/68W37+l8JcZ6OiwyOrtMWHU3L/DNERigBOkRCqTQwVFMyynJApNNNVMe2ZpzNnGCodpU9va1RWJfpKnjql04iAG84z0FpiZ2DnYSPWdFDx0j1yvJDQk8FrkRvBbFgBBwcAhYeEQEFHRcXDJyBVxeYaBJSTKs7tMUFhEFCMmjsVJQUBBw8AjYWBiYePhE1NSURMQEpG6umbMOQDrVE5ORM36QFe6Xtkb3tTou36g2a/9Wru/m6vDSiuNt9pqE6y1VrcNNuixySa9ttiiz37/c7GDNi5xxGwYiiA/PyFXKMrYBo+ytsOnnJ0QytuNkIo8EVHJvjwA+/ME+QSD+AWHBeSNCAqJCs4XExoGFx6OEBmBFB2JEhuFFh+VkRidlVeQEiIECBUKggkDw4VDECKgSJEwlCg4WjQCIwaJFYvCiUPjxWMIErBEiTiSJDxZMoEihUidWqJNKyupRFFaqZoxo4Y5s1ZZZTrWrHoVVRjYsxtVV21SW62ZszxRX9HWVIVqiWPaqnGdNYXu2qC3rtRfX1XRClN3xIXXoAydmtqL7c3f4ZMaYsuOmwQ/OnDizD13qUxHWZu38tLk1vyDTfpD4p8K5NXPyW31BRb8mwVbdl+Oqwcv6041dNmyJ0edf2k+mJdmbugnjTQ7UYOCMUXMEnF7JJyRdAfrEZ53+PnOHuQP4XJDWe4oZwfK24UK9qCivajEC8AbyBfEHywQ4gBUCEwYXARCFFIMShxaAkYSVj4lJBAaBAuGhyBCkWGocHQEJhIbhYvGxxBiiXGkeHICZYhIdGR6CgM1Ew0LrXI6NnqVDKoY1TBxMKtDNLA1o1ox7bguQg/QRxqgCmR5FXX5TfTeXcEvYtNrF9UUZEfvuDsHG5Syn/OVamnOJQXc05J2H9t6zO78BhKbOQs+pPiGE67Knw+xzZNac4CjprBm5cFJQg72ClbZPQzsPyrr9PF8fu97f21k/TGuhHPhMa2XHdp/UM8wBAqDI5AoNKa7kAceXyAUiSVAUHfjzNL4tR6HJxBJZAp138kHljvvz8oVROtSqbMtFxfmkcMYsO2LuqWP1fwgi9cWPvLnoRxlvGka9p678MT9mO1VuCJjZdrr6Zpse4M5J6yiuxToUm2DwQjb7cU0XaFr46OadeXM4EwxmmX5T5SaUWpZq/Xxszq8/tRyI4hgqRJJZYKFEaAgtJLa21cj/sO3KS8Op79coVSpNVoA0AYEhuj0BqPJzBxqYQmDI5AoKzQGi8MTiCQyhUqjM5gsNofL4wuE1iKxJM5qnpcBBCGBqHsh0WIZ/1LL0VpZ6YCDRDxlsUlTovlzLGe6guilTPqJu9zit3dL8BefRNpth0QYGfWRLEWkvFXKSJu2kg56rlHawfD1y63OdU2wkkyFtVpFo/dPFJvURl0PZuDe+tOmD/wADqT6YvvXUgj/vnOqZ2QwWWwOl8cX7PSfv1KIMZCU0YRxYhghaFTAAxqZQq5SqkGdntWKhLjnU6Iv/T82avCHs54qRH458LRZkj8y+jiTk4eRVEGJtCqRzS1x2OHFWfhxB0E8g3muB4m5EXFeQa3zExa74F0BTHemXKZRumC9kFL+G4z1GoDZUwBrV1wK+L95DS+vGEW5w/cekR2XGrN5XFR103bLg2aC/uivXhoyTS25QqVmUaltW1LzSNSRC6w2bI3ZEyyz1MrH/rmnMIPX2t3vQ3viFGygS+widpCzmJbCpcxULk+/ZjApG009YlMVnUC7u46eNrbaI9KvhUupf/A2po8HctxNreM2f5HF8fYgKeomL+E58ccrb7zzwSdffPOT/mrqOjMj/3+nqOpEjbypwqKuVi5uHO3v+ruwrrrrrb/BeuproKGGG8mBxL2hqR1lllFWo9tBeeVflja78f+EcUB1JZXUVmPGE4HMyjRDy9Euj52eQQOkTBblWmDk6pCvSrUatRyc4BmJcJsXRrp1mNWrT785A+ja2gOPWuY50qjp4L56K6Z5LJ26MPjvvkFDhjMJv6XrYlc1YcpM1pTl9DuyYtyk6b8AQjS9f7Yt4yK/GnJTwmsthFDpJsDLSHfqji5XclAaisQSqUyuUKqOW3uD/3l/Q1Ui89BXe2RIhMAA0XuGicX2AkpuP4CVr/MFCSNopMUQEwkNGXvDNocyDJqKwLXEs3sCum5q8QJ1eFn79KA2WVO/eNWADjtxcK3d7+RoGlicQ0oplpywQh6GD43c8xnk4siSZKqr3UHzHBlSNvy+GhcGQVAXhEfL04otwQJXCykPAMAKjxEhJgqOEVN+C8Cpa8lssqp+xJADUV2sCg4y2cAETaqoReXI3Y0GmTrZzwCNZ13LVjgw7/fIVyY3bYx3OsMXER7FToaudJAq1qSJC1g4lVngVlEPRLKUowzVOZQlpu84eAOULWMUuQA4Qwm7+0qclQENWg/hGb2zhgA5ktC9FgV2ySy3+2ePqf2gKR4YKNMBlPhtkqwonZmRjysW0qq3BhQKu8xqYUJaThXwDuBzAIY/QHeHL9J1QlhYm5EqpjjgVsdi5HwkE0tVyq9I4UGkCw7ekRkO2XL5QwRvSxEOkJbD3NkyZ2M0maO1Zg+oZEnZNkkyVRnYcntQnNBRsuVSdmWSE1xEUbJv8cdKNGj2LGne0ciODMNYap3kW7K7DZrg4GdmlUe/WWbYGdPbuXYH0Npg9NH+aLg+uxQCHmO543tsOuWKCk4yy2oXZVKOQf2w3Wwcv/U4ilsZEPpH1y9E2WhCQlLEXM7ZTLNmtrwx44CrVlhh0A5UjNYcfVHiJMnRCvPhx5QV+ta3NQI+5FBffpja2zQznAivA2cOGW0WyKOzPGVD6Xov6lQOc5UhikNkwKeu84gtCix33mG/pdfBIihLDcEPRId3LI+WAAtR80dnbB3r6c2R7vkU/CQNbcx/soEa5AkAbBJ3mEqyAR+xbOSITg3Wf1v5DfLcakMhGKP4k8obQcyknVyOs8pyJvIMceHAsEBixWfsWxNcHlcCKOcUA1imjbBseXgMEXHYRNpqWNSqkiaGSSGiZHswZFXNLZswf9zEKM8SWbjp6K58ix/jmbjdTEYnjDx68zPPh3PYyqqbi61OqnNwV6bCIDyVV+Gt3RHf3mY2n/KOO+p8WD1M2Z9Uk3MzT1mveBeKVX67JSUad+4bLRLGdPAq+6Tap9q2GRa7Y+ocGC/BI9kXxcVmQ+FSpUJH+VJ0G3CLIE/5bV90JuhQsjHUMUF7vvhUzIUWRQp7tKqMq1t5zcwVJDX37wRlagVWF/MFckVHayRn9Xgg6YdXedHCLe+CeXDmFvVfaoL6v2De6JmrIvUw+LZ/htm2MyOGuQWky4/U4eFD7kNsAcaQHdpvKIMR+ZUL7KKd38jHKnlAuMZZ8B36KJnK3bKGA7USaGaSSeVKBXIJsdDOFkkpKRCOslgfyDtNSfVVPD4jYo1Xe/CnQxMP2SGu2sVfiLshOc8rUetMKJwNRRhyfSe+FOj37asIQbGJMRLQkZScIotuX/DimTwqyzLgV1as/9rhfRyTV8TUh4bulv/e78/RchQdeBPj2indsM+lRB2uEuxcqHA/6+iqCDMCqgKXlVFRr+2+XSB/iEd8RFI4tQPuv+LSM/lsq63Mg0fu7V2bWTZHW+j+kSAy4+4aKKPLk2x58j7LULH/gNJ3rMIuL46RVZGVrfFoSDM8YuRVy9J9H1IerieiEMF1n0QIy83y6AGV6nUVfYeZAh8XBc2S+dNM+r3MR/DxiwECAEDtv1ttI6LkML0/Ow6f03vA9AQCIICfpYJNAdIjEoCqKexJTctXpfGGOkty/L/y2hypYukaV7ae0IxoQA1lxjRuXl8AniGXEomhBDUlFTIq5xVCSzFUSWr5ObGUm5pZzVULW5f2MiuHtbMbz1Jb785c3fkscQpOFFKlTLV5C01SaamyUlu3sUlY2lrZWWt3879FsvjuHLF3ausSOLg66p08nPPFLgRXoo7UHgdg6iBgIeGg4ItGqIVBgkWGQxn8NQioiOhIGMiYpWBVo2Kj4ZSOW4WBh4mPRbjscogqcUmWVz5ZBQE5IcUrooSYioTmVwpktJXTlVHQUyqlYqiasZSGiZaZjqUlykvoWbeUgY1R5ZguZla1FmWqW66miFUtG+dU3JNK9WtXpVG1ptZozqvVwqG1TpicOlj18BpUfDYiZDV9L80q3xZVaFXz1yZ+TKbq13Woa6f6tC4k3Sh6UKf3lD4N+tEMaOqg5qQhLYa1GkHvKEbCGKZxbSa0d1JH3EEsU8ZETElMdaopDQ0wT8j1EMwj2qEHZsCNhGnkHWWmLTXWlplF56K9cCl2Jem1NMmNzK1Bd4bn/kQPRjwa82S8zyYSvJjcV/9ND3A8EA8iLFyEGAclwyhwaglaLJKOYqCZZVgxWM5yeG4FXjRRQBKSRVXEUVQJTUqX1ZBHMhUsFVs9zhFcLU+3fgMDXGh8RmYwscRcaiGzlFtPcajSVmW39bNxgGh1TvqZ4WDj1k5mi86XCVkMlqPV1PWcoM3admO33f1uAg579+gUM2DddJugLq4I/A9EGs/gIAUs5JGAdvZ0UYWSt4Nv+64fOV4kfdQv74QPdjaX8ySClaxzLzcu8XmZpi53a6Bw8eFwQ1eLb+Y23+/2vr/b9/3P7Z/vf29brNV3X9X/aijTqnU7fuuSpugfvLHNe2j/2lcfQreiOVKPXqaXjOXvxfWlvcbD8SdaVatrDW1Xa2qDbaHVY3uxI9g17NalPiWCozADp+AcLMAK2HAd7oRX4W34AH6GP1mG5dk4O8pm2ByrMpddY8+wt9l7jNpuo5WzFXFF8hXf9B0/8TP/wl/5t/4FP+5D+pMCJ3JDaYPSNqV9SgeUTihuK+4qHiq+VIqkyChKisGvlqln2lgxLD8Wi/Wb3zn977rqTHY7qUNuDb7slwBdjWtCU5rFLN6H8L/44+7nNvcj7LenFgCEzlXdwb4tmdxElYLPOthhjhFJCcpWl3eDguHjmbiIVacXe6XP8iK0dHV9APjAnWyMY4zjFZ4c0Oe8OeDPj+Q4f47McfmcL8et2C3G7RE/zkPs0esx87ae72WP/xCPvD18LqMB6EJ0FfoG+n8MANNqjz2D+QkLwHpjcVg1ltytKsI6saewt7A3sfexD953HIDdqTguLggX+rMKcUZcGa4XNxOGD0bhaXjerXsp5Bf0IWD6xQT5dZnkNXqO3qZpVPEurUwx08RyoY/O53K77JJ4qVrDV/2nS4CP0rogIzudpaxko94It3mXkDEY2c85LfJJgqjrd1KGB2k+zDjHiqPEnh2dz/C8NYy51ZbKUl5K/WzvZXltazx9JbIXwQO635igYGmWc4EMVfuf/9NJ+lMB0dEsS2Oz9/4Z2fX/+Ie8cofEvFSTl3+LcoarIdOnvn3Thg88nI/73Xaznqex75pa1X9WC/lMuvcTnxNdLX8/AQC/b/yj7mTQJBMYebv7Z9eXtrrJpYPJE0sZdTNr79aWx5evFlfGFwDA6+sAAPi/7cF962D10+OeEeD1tEXZ9zEAAH6eNAeVQ9IZAZ4eIE2CiQDfP5kd/SM25QogwNtZ06umm2a0h2ULN/xv67/u/3sAtj4LQONrAGh4guyQ7bIN4KzR447yHX4rMUbSaURgK/DWkXsx9QymLy17V+revUpoicc0IfcTIuYicl3RH/BvsEymwYctkmltt6UE170c9Yce5Il9diafku5vTFnKlett8nNoT0blwQJkVC6cHKZWOC/vPR28Hj5ZPC4eyV64nlbcCvbu5OOkzA2YIuH5PMvaABMCcoPj1UHjAuA16tIGCzdWiCU+/58gIiBDWzZ2V5NuX0ipm3ptakIVJVq1GFt8bGjVqV2HXxb5uqVLt6/iffDKvl59/LzF9EySRMlSpUjTIl2mDFmyQYDlyPVGiAL5ChUrMqEVVAkYuHdWVA7NiQ6ZKzQ8GPrXt1joMGH9/A8LBwI7fISIkSLngQAhYjgjqrtHED1GzFix48SNFz9BwkSJkyT11OFbwWUmT5EyVZ6I4/o07QuSZ1A9fQWbVwXp8gtRSEXpK82QMVMB+Wh96UJVkaXg0GHCVlW5l7eRvkEPHyFiNdmqqDJ7VVVXU3TkKPnVnCNnhYqV/HmiRY9hpu9wYcE3NEXoipUoVeabchUqfVelWs3r8F/tj6gDgSFQGByBRKEx2PcuyHsTTyCSyBQqjc5gst6HYNf0Pfnivqffsy/+FMSaWto6unr6BoaIxMhYamJqZm4hs7TTut1+82hnZm1XbjOQPVAwcAjIPnnRfYWGgYWDR0BEQl7xNoP89aaKSkrLyisqq6Ky/n8FQjCCYjhBUjSDU+d8rGMf57jHO/4JTvjezDLYrLOtYpWzr2rVq1ntHHN66JHHZB5ePn4BQaEhP9LoXnjmubCIqJi4hKSUtIzsGEVzOLt38gqKSsoqqmrqGhQjRo0ZN7EuhQgZKnSYsOHCR4gYKXKUqNGiP+RDkZKRU1BSUT84DS2dEnqlDIxMzCzKlLOyqVDJrkq1GrUcnPNhl8sjZqzYceLGi983rbTaWuubMJHDc3rOaJtq6mmmnW4l0690hhlnmnnlf3Tkt3/OJ6VK7acBQBhBMdw7VpCUj0eG5XitTm8wmsy+aqvN7nC6TM20MnMLuZGllbWNLWuns+fqDa8nFAIpOhgcnZxd4O/weS7JvvJ1z7i/tdVex3vIY0YZY5wJS/nBMqZMM8OsxWau165Tt14v3W5rs2GkpGfeanxrAO3Pd0Omi95NuvQ41u7rabzTz3MvvOyIu4dnfxnxe9HoDCWmsgqrf7XeBhttsjmsmrpG/22rbbYnyeHy+AKhSLxffK81rb39ozZ09qs/2Tep6ekbGCISI2OpiamZuYXM0o6VtV25DUgP7coSDBwCEgoaBhYOHmH9ml4K0nm8nvWub/0bCI+CioaOgYmFjYOLh09ACNomlMIH4aPwKayxsbn+f3ETQ6xjAyOMMcEUM1zF34kXcR2buIGbuIUtbGMHu9hDv30+ugqFhQkXofcK+sf+G3rY4YYfYcSRRjNIlL6ixWAvN+Ee1ePorHNOXOBCF3ORi7sEEDyBAsMLOAi88QEJCl/QYMCCM0KZKHGSiIAAERJkKPhBhQYdBkxY+BMAGw5ceATSjGPkUUZdyfQrnWHGmbD1WX93qMMd6WjHOt6JTuKPa3QLOkDMwYKTUhBm0wwaDFiC6YRAFTVYMkg9ZBpoohUm1iwTyhrd9NBLH/0MMEgYmwwzwihjjGPHGSaZZpZ5FvlJPc200A6Rh/TQzwA2PGOIEcaYwJZPmGGOBZb4wwpr/GWTy/zKDqz+ZR8HxMiQ8y9sOMYLYVGi3YnbJr6IBBJz16BCc4FUba8kqJ7XPAcdbF6DDzHv+Qw51HyHHmbY4YYfwTeTn3lMSJChQIUGHQZMWLAXPcqoY461+JlXNusqZl/1audc2VArH3qY4Va52pFGXeNaxlj7WOtaz/o2sJGNbmzeRvEc69jGLg5whBNc4AZv8A63+IjPuMdP8IvjUgsVFM2wnJKumWjZKqutJ6t2SdNxJ4zzOjktNOMDLMcLoiQrqqYbpmU7bn+3drFQ813qcj7j9O3vOHEEAQcq0IEXmOT/7dnA2j+3vg1tjMB30cxkKMN/DL4TDFKW8aw8yRnJaFZbndIspfwUjnTko5zfUY92IGp8zJ6wHnoMvyPq6nEe9oPWFUp/c7a0tfQyynyuFlv/MN7+DnSwQx3+3Pr0fvryTcpn/zPwGH1ufX5/hj7Dmf3c/4x+xj7jn4k6l1V2OV/YDO/Gf8a+DDP8PAo1pw9Iuak93SR2/gwf8QN5oJeTijOd7Iq/0/pqi1va8v6MuZWtbm3r+7uNbZ7VwQ9xyP2y7e1sd6ztbX//7vShD3PYw+2fHf5+z0IWf6t+Z+/JTR3pKpreiV5V5GoTdVe/NvkoR72Go13jNbW/41xr20zB9V2/mHZDN3wjjd3YswYMOASL6LEYsPVY2UC9KEiWg7eALgsZFEGdSIKtgG8lJa7UYAt4Yn4dNCBLCWCIo04JaBFL3RIAt+vr/3akUwJ9Eum1ln7rCLUHu/N0l95eN+AxQG7i4EUcvcQrG1i0kRnrmJXBZR+ybZfd9uAAATFmJEj7Yzcc9Dc+KFGh5gMreGTlAKjlcPq/QaIVPBswWg3bsYHRyh2RMFrvopcV//eXHH0gfyB/Qf6G/AP5F/KBFAJkkIP8QH4hQl7QieDA+2p+00wx5VRsd9b+Ex77D3ijZpztv0A6tgdVxNX+HVTU2vMq4273gZbaC6oCkd6LquPZP/pLDaC90i6PAeu19qiJlwHAZYM4F1c4V1eU0+vqgpTXG+qDUtCbGuJrYB9rBNoggw0BY6hhhoPt0053Bpm+6FznkdPU111CXnO/LhMFLf1WZ2Kw9jssoBjX73UlTmt/0I34fvGSAhJMIbF/o95v3fIKW5y2g+AZjaD/9N+Vn3TqYpgkALNc/Nj2VGFoH0EW3zMxa6tX9aWu94C/8py5alfyURRV7x9dPBmgzYv58Eath0AQ8ziGUTiX2hWcA2UCOoOiMFDSnoP9MQLjgp7kw88Sw9RuXMDJicIIivneaViW+5fAE5UxJhPDCC7ySb7+/LEH8DFrHlAmpuDg6hfwEEZRjkbsyAj87tXD2z/wUYy46Vsjfdg4DE70odkLo2bzNDoA9B6QC0h9qnYKxxDA5OlViW5wuPCNYthMnkB7japE/K8a4XHMYQRD6AhZLBXEClhawyhasRcZIrQ9Fy3w4f49vBvgRO33YoA7oggQwou7iVpsQzs6UDnXf3TwMcIW1/iG2GbmsrIAW7EIK977800qykGA/69+N7977/GLzlJmpmaYr/dg2TAMD6Zxx5385J/H9FY9oXMTEcYEJl7so4KCqkLuxDbR1LrG0zgOyOlB97zfgSnU4wOcRQXasPAWMYSvBJcHjWfA35rbO616rcpXyvPWp08eP+qul/PpeGj3u+1mvVo2dVUWeZYmcRQGPvdcx56mCHbNxQPHXjZwBGYD/zVMPHnoBE5YntjDSUuiym2uAarVP2MkOZ3xLJwt+bMF1kbMGEjyDo7UvZiYZR/7jGnMKqYK2t/sZsxtHQSmC6sF3wpCPN706rbXftKzSL+dwSkrQzCpUgoruZnGAVYSIARaHe1EWzgQ5I2edUlvXIIgE+kLohmHHP6M675ReFD7hPSA1JUqjbRYnbRsJCMxUb9CN5qHGZC9qSU8bqBS0KSYqoWUkI78jXmko9tIcuhRmSEF+NeKcI9TBl2ctEIpT8WfCcMgMrqmlz37k1Js28EvbcfDQxa3dodOfKIjsTMsqGEQHxG/I6bqCl1oFVUsbAwZUGVpzNFKiefoPTRfkl+G20zj2Wbye0p65JgkdwKXfCaj4GbYZ2F/KaGLZoDkpSoufhiVRCM3pKGGPAyueJgKLm3GJOUUHRcPOvVL53a1CsJzW3ZA1dK+AcVVQUROJKGYLcHMmPcy7uKwsytNpEplaObPGLS859mHz5yce4jArIEHln0OPPSLnorERBc+t6Loedz1fsPLEOzV9vX3nJgtQiS46Eh7tij2KurwSjqhlhhuhoq5zHwpAHzixp7dNYOXbf8IizT7/9FhGlSDpZgY26Hco9fZe+SkP12IXtptpvEySLaqQ0LYz1Cq4uaR7Dy84JInOlzUZj5w+HebVKEahG2cNOJ2FAn6WkFYOVB6zWSCdegON9ENikrBQtN9C4kr/yqI00Jg+yk9CHvLaSKF3yAq/I3YX3g+M8chwkb6T44YGvs0b384rHOanrB1zquo8Ics/zah/+anDtZrdKLcjkq/CQj2rrS407AAr/NSl27r9RWtm3VYlGEk3xnfnbHG12QU2RasRer+IOkdAMPNNB7FqhrdISR0eofmqq+t175rL/uoyQ5dmC2CrfWvNR3MNy6rZmUNOoGj+IBVzso6y/rZE9UPsS72a9G0sK8Vab9uG1C1PKbDmms5lvRAoJWnNpzITqSR2+0VXzYESFoeKnonqaZ81ui2hFMhy1jA57mNPYCgYqH7nHwpMcmNQxWfSNN1AvvoN4lZMnxU5PzWDw+P7tz6BC/bkpwNH8aE07LntC33RVmeg3kPxVzta4b4YdtJD+FAWdUkv5DSleXtip66dMjgGizhuFEK5PGLweNGpHH4kaNmYMbyPtSXfNCySHJ0cjaqBPWglVLwFfWbZ5ARDekSirF9NgkldefzqfHyBTecLohIiiijScz5X0fY4css1zS+uIq2szn+IL91Z8xLB4W1blTXWRJv+XiLL65Y8WsEyib6/YBUCiEbixgEdBTdQ5A2s9aCvquV9HwBLs/2IjisdJOuWGA72842ybqNA+TJamcBj6N5ks3d80hlR2m4noRQR5ZbEpvNiDpnoQQl25Ts1xz3TrKK7l8jbEyfGOd7uGZMddqtS9RtVEBuuokgRyAoQHZToJ8w6RH6NrYZbc7Bz/iP6g8NJRevkErM6QuN2KQvtC55+xoh8ILr3VSoYsmKH0/nzQwBwwwpEMGnEAwShzpNPVB0RN8364wn9MYk2cBorEhsX7Ux6dFV52n0xLgVQPAlVXc6G48Nu/RG8UZnkB/YqvuziqAPIbxX4iF1vOoL3FMO7LVDOVbDNGk98c7fM6V5mjSMtRP2Zpaq09bG41bPl3mEegIRIf2jIl9VPqBl1uoTbsuTo2IOfEbQAWKyGzpq5jUJE3AtosuWR5yG4JFn2VYOYRappdfrZsiHbyXgVHCWqTNO3pOMogYX2W3VhUTM1uo/LQ4ZOOQVuWJoXsV15vq0O83wjVf30LcoyZSlvaXi1jTKjuslGns6VE0plaNS8qLtSd5QHSWxGu4QH5UGwOqfPi8OeFl1KuikZq7/L5KXKtDMDad/Q85Odl9kcXBGmBjEcww67CSvyjYW+ZRfGuGOZxGnygof+4hp5F3ux9bw1xw4wjHqbG1yHcQkwF3Os6YyYyFsUSbqhBrZoqqMa6mxrCodROWtS9/5GDAVGSREw3dUF83qem8pcjKRd5TQwNvzxscbW3GTubl2eNBvqPSkoRn9pzpYA03QiKz4qarqAFK3srp48PPvlHcn1EWzn5+STtJCXlZVTCKKVnhCr3LQ5EI7TMLlV3yDeWchHUEfBdFR25FE2nvZld16+CpBZppYxBHKfWhjxg8eIuAsG41xTguMIsfbmUZc65Lj6A2VAExnDcosotfB70jO2WJkwORhnDjbSn3sjEgxvGYlut9Ui1+h1gGhFAuqDd9t1RHsw0YW4fAxunGsaLqgkZB7mGeCD/JE8cJCYFBOTo9Xc/kNldzsN1j7035/Ocbflylm4x/cuEjN1PZTB2K/9GFyntaliGrWrTeDPRBdvNu5dlisivnWf8FQQ18i2zbSvchUtk0lbJ50Xy4BllNiAasyXG4maYNC9W4h5fyB16eCn6rdzXXlDV9u4RxDW0NrfnUer2UcPE9S0zolrvJp9M2pXGRLLSvsJycxUuy8XuK9Nu9kreR7Bd4TPp3Pzo4RGfTeuGXstRKgvbTveoedUC/z+yiWrew9jrUK8yG+EzNSN6fJVxts9GQFzqtpY9kTeLkyO8KOAabrVO2Cgj8Sc1s53JwnxANabnkYWsqFTAPK7VWf9vR8Yu19lxo/OSX604Ljrb94DpHxmxJbMWp+bB611pCyqZEETp8OJa+hLyE2E4yyviaAy65BKLkZacU78g4zkbsSmj+Qt/TSS+Vt83Z9jRiQoABM9X630Rn5frzslEO9/TvBlVA6aOqLVBnJt+YPvrmtHdvyaptOFvOsJAzfcLm70/pzFnfUe5bT892hC8598DGzMO2gZiktH3B0QsrNFf8hUhNv0g0xCdMOVW8vfeBsTTcED2YoIFs08OHc/3Gsv6Dq+1rMYbvQoQcE04MTJ5GXjsrv9gUebaV6uuCTFXCdVZYnaZkAKizyTAREfzEJWjeUrnY5aLF5fmrkscVwxGhJKioR3pKH+9IgOpDjki4E3IpacGwwucl8g5ZqthoBQQKSaTnHCDIN7JsMxLAGASPcKN8TFL7GpAcYUmuQiDpZ75rcjSj0+WWHQBQdRMSodc2Q5VWHzhDmrInqIU3a5uEIhJpSEig0IO1gJhnLANuAEQA3ZpYIEuSplEt808oIrKxMAGikpTCP0TC2DKS7zQ/cSooap7JShSdzYxOrBghappWpIIG6V/gRuXwYIoxci1u4NSjRyCPIAyiYr5BKaoc+GSEptTN/NDRNc73UoWBAT4xWzEcMOStFLTlGMGhwCJRUsSyl4HO+2CYS4mHMASmSRtpALy9DlkEWdI2Uh9FgllHpSoUG6qsnTkhD+rISCBhPgXr/0EtrL7TZS85xCqXvuzafkuTaXghIaCJw0wCBCJXFywG7Ihpu/oT+9sDwKpsawMoIDGVQhgEE/YjZNpDpEQVRrDbGssyTlBwhZhJIER35nAgbhcsyiEKRQtAyazlwRWQMbDFy/roBIh6B9OxIdPhbjxtRn6lbaiYps8mmk4UjfvNO2Sx+drXLk/+rL8z2OteNlWgRg7zsXMj461ldb2EheI3Yl3Goj5CN2ZZt5DyrwoWDmNV+eW1DunDxWNHX68OHkN4jT+v6OI6RhIjGt15K5wZXmL0M+JLnVDGljLWnmmzXy2FTpZRImqyUbXwg8sii8LpmPj3xzic5Nzu+qPerOtWKGN0zdl7Kzn/VUEPbp+WTb/AY0sfnYdjv6ulhOo0nVjgbh6dCIXyVAga5rqRIRYNsxsVB9uKvTiFriTlGa9Mny7+nQeeeelqZnOMvmGB9QDhK0FBqS/nifUihsbbWn+L37jiInHtoMclFlnEoUFQvO4NFjXzd13mahmEcUwKSJQlq+ilpLxBI+9ySn12kBMB+RGqarpU12V14zlLzgUZ0I2yPMEeBECEE7mSYNPhXSqNWqLRcvvIVLFK4AhIBL40I6v6y0auSahkKT5ipA64oNdvVkBeytzNmvOKMZaecIMA1g0LvNFPLonQz2A4OIyMyvMTQDizaZqJ8sp5IrmStkUqysCEQrf1N0LEtzmIpg5QijMj5Kr0XrEpaeglMTcpItmZX59YI/Hn2LMtgAHkuRNna1kQfZqohxF5nnBihMXKTD++of32vAAI78+Uq5VKgc1OC0v84dNH97FcUovYNz9ZOFQY/x9KMRJi1ftXqZgame4aiVZCLWo/W5FlNZknJExJFj0iNuM1GziiVgXgpmWestidt/pFGSIeRx7dlMrIH/G82AbC268GSQdLU02WhKdQZUHjWGuCjeADS4N09ODk8zhV69twF59Ye4MKabxEaY5q54PDS7SgjZFtN2IRSY5xG+CDbiksKQlT54ShiBqrmi1cds9hG4Jbu0yl12AohV0YIOTJqGKimxwrGzQqx3Uperw0rDK064esF4b2MMgN9oOOwZLNZAbKj6DU7P9SdRDzePHxMNCZJdsfoG7gBHUPJf9Dn/j/IXbYs0mv1srljAaVsn9jaybAkELL8/01/GclC/zO6+Pd5ELY7eIaDJqVAayVIQDbOZQT4kKrDMuyqgQffsQQE3nQQopOygaeMEWKOhEGmRNXO7WYGjwPWIqXE0zegc2zoMhRRuhVDiie0PuIB/ZGbaJ0oUftWgJOh9hAhVL58XxB33eurAgYOWbeWQtxhOmAVkPSWUYrH6y31AFv/BPH2QuYrKCn09WFPJ/qLNyul67mfCD+bs4Wim5SoB6QsC19YYQHXdBdjXRyEOJBakXknvpj/zr340vWdiyW4Rgnvout1WZ3rSmzk7IJSzoZLWLMO8otkTt7n1PaG3jonMTU5saxfEIjZfPeHyyacztn7+Rq+f2LRszYBV8gU4P9dJQr98Xg/l8PelqACKNo1aQDAkuuy2WG7zOiemgEpaTloVutd6we0q4HubDttljGsHpaT/zaZ2gQrmWtp3yrvn6J7bVtV3Tqa3n7jXET3mzyXY3r0vvgf7Ucck1KZiFZjbAMzvMm1S9x1gXXil469+CY779OYtjaa+BGe1reu9/EeHpO4D0xkrioS6ePxuH3xgmBNc3+WJqkw2UZJnKhB3V8Mlo5k1rqncQlxtmWlZsOkdwIfxGWIrlGDK+Y7zO5enHawOFsNtappf4hwd0IoiM6qTk7NzPVlnu5KdYFa49T8MUgdZXK1JVHQqGl0k8F5VgDTpukZgZBEMkZsbAhLSLekQhMYSbVUSLylyCt5ghSEXEAr7+urF6yjEfNYxnIrLWhJMjqMmd2UkGBYIGQoUKwMaObJM4G5OjRlIHBmL1fK4ZX1T1+FaHw1heIDgnTMdMiby4AO0k/ckh1Sb44OmnsyR3tYjlJlpPX+r6CQhndo87CkOzoxnPW25lzWbNmtxGLFAM6iLJnqfKFMlfF/DIBEdsGBryMlwIRnri4PzFFm44ocACaCFWuDRTadcZAn4CdDyVnrMEZjMpjAFJopeABFALcKgI4gB2uMYJkDWkAsQgkICFENCMFvJCO3DEJ0Xou+CCtB0KXAl3wJyEwwshL6E3jZWQKSwAkyaKEHCKGFC2yA4Bg4PJLgKMITUYJXEmQiPB+J0MCA6G7lKKk/4QTUkWkGUECt35VAJNEZiRQo3IcQAED6UgiF42vYb4RHPcb5+aPfXE7VBmCiSdyuq1rWNNd9JIaNiJ8o1JFWIsr0yOTs8fCa+E5LGbOmb7QQam7QGo9bllu4Q96i2ocmlVe96zrQTUOnweBGlNcdzA8NUentjpd5su9Tb4LboElRKvCkvFyrYetWMQA0ASxTWhhZh5c+Dz7XAmY2OlTfaHkOPw9f129Coqs2hXQQDm5aIo0tZ8IXtKN6Fa5iStBBBqxGUTj359v+9vqwe19KtyT68iUpmYARGDvVYaaIDidTeCT3x4VzluczAa6scSRygkf1fu11CvQk3QlmS1M9Bs997IMU1LaIN4jt2w82tKI978fXX2zbP04reJl9e7/GmGKZnx+n3yZFLgsdMR6XCovdq5nfkIeBb4UOiFWBb/3MCeCqvsW5jOaI8VPZah4kwBO+b/B9gy/a5ngV6LXYl3pJ89VvGaJMujXDq7ADY7ehQtFEUwAyU7Q0VEgbmbNY64IM1rFI68IYm3KI8TgB3CX0c0UMy4RxlBIEmIQktkjjjbvUuQxQzEoJpTtt90TjXIdov1dU5gC7/uZk6NTuy7IU3iH13LrvVWoRMft+FODwrihYOyUW525s9dhp0BVlely0L2VkQ3Y1eX9tqAvkvlwUA9KsLX5GFVRGnjI8XRFpVf0r9iT8LWTuwr9wkxn+zudT+NdNuyxr8rRtibzIpTEuSCa09NFIEqZlQ/aRjkG92FCNEenpJWWB0wc1TazH/0sqm3YNNRS9+15eMb1XlmGUddUh6GAVrQgWW/oFLGwgUcEMpYLGvMr7hC7EepwaZgmRZrxIimgi3zYS1GmsiwDQrWASnzqalVHVpOOiCvpR75s8aIAerxZ+17AbWW5T2zHRMUw4q4NZK8QrU15lD0wZ139zXUdQBoNreTqtZhyPbNKP8cAHnfv0aB8SLLStGj7k+a66jwiYVOMnaQq9721q03dvtSGTNcrkffKBTNCkoldhh56mp2hRnibOmZhG1DDYyxuIsBuVF6EYr+FWfQFQvoW4AqmZVRsScIbiFQB4/43kdamsctOawSjxpbLO5w1DXePWuqAuhL8pBqkeA2Oxb5rAbdEDyNqewgSpu4vCqOzTkS7E2g77AhlqHiBORPPBm/rppmlVGnfRbIOfN/cVaYAuHiW3VaV3ld/uSQI8t2s6vvMhqAKLjBPnOWw10o+1xUf6p/vpiR2w+KXRjVmjeCapSywMBmdKYZ7twPgEgQUoAe4PEjAqWhyOf20uzIFxYQQegZGODn9hWnVRtjd2K+vdMS1ud1W4FJPaL056+BkJ+UwjQ8UBN6HrzUNsy3c1kM9NWO5DIz6TcCukbxpf4qnceT6IbE4PKzm1GNI7p+nz0ECsTZEQQNOYYGcrDiD6BhkrgBlW+T83fxkSyd42VD5SkNyAxWmMd1L5thcSmKPVclBZygu/kD4Ymc6FVnYFRiPYOV2AUV4Z+9KJaattZjDx5+jWoqp0kqQXpY61k4w1gAILGGOHITGgYRhCX3GAzFPQxapG/ymY7YWDmHygclvcB1H7OoB2wFXP9wPrgp5AF4jnsHur61A2xMXNddrXnQzg9hRGi/ID6Uk1pv9hMMOdYqNLeWRtr4vkRUGBEMDWjkZquhXyPzdbaqPyBMv5D0BajcMgvvMORRLw3+KG799jC6LN9805waMW7IAIVHq65WQYlEDc6beph21NA8y1OvWTYN2jYCXw2eh+3ZngsbEO88btxjXAqgWGqh3ak4DiOk6whnOPMs2uUjBFUCIYf8VQRmbURqDNTLn/+IFppaHPcV8ofFBhX6QYYIqgrNU1bGqT2ubBDbCTA9dyqvBbrh9KhNn8AXtuvzCfNNj+4qWsDEG6ngvjyIbeCCbHczAjnW1BS+kD0aioJhPOTJVwUsyfe6lj9eQO76eEltDv2IkPYoJIAGKi4CFgPO2D2LbRUoN+SukSXlb/yB2EWPpmCI8SRAM1KOrLeKBdRunGXKVKtPzbepkfgPUsjagpr1ywlAQ9HxHAGMoLil5XSbPxZSssQVkC7Cyl7sM5DRh4yDg9t1KGyV6ChFBouJd518HXwSn/FVwVulJEGwp4dJ3VudTqQNG4ucrt1d6BMSJvuX4kcysLUWSVrJGN5XUnNJpXUWhruXwHl4iDujB4wtJnhw312ft8QZetdL0EqWNIyfxdJZhhDkpbGgMuQuY6uvQ2YHrJNoPmIgwyjDVgucW6DIvAybhw+am47he4JcKIsI8wecBNq1Jht6Df0AnC8wLbFiQkzAkOpdu0vHaNZucbJlP5kbC9Fouxeiq+ir1vRUVTDQ32dZBuOsS10wU4TzN9EHoPSSzdVWBwwref4WVJkbDPmFvrq9wcyhvmKPWev3vQ2UtljdYgUThJFzhBsi9MiQ9m11fSC6JBvvRGA+n7hIo6GtOc2NlgueqfXMc/87Iu6CpwO9Fxc8eAU7ZCqNyuED8NAUMvveccp147ZDzpBUp0QKAhukWjd/BHFZrTve3SQ81T4JkQgjKOzDQrCpH4MqY1hUnhklVJp6eUUgP9MAQ0AymTfRBHgNVtSfef91kHASly4vENTj02tebN9fVSiYVVCxNhFjkSumVs28+/tSxCr4TxUtHw8aFv5snfvAmg2txFeQ0Q5rnL3LGePCVDua4Uxp9WMZYGuRZKhmr30j74KTl54S195HZj8tMnEzTZZwXqjRUYVnEwUhku6KHc+rYWQLoBShJQKh3zdZAG+hwbwA4NRt8TuTyanxxHmUkufw8w02ucz6cgy9JNYQXIlyR5bhYySoOph3pPkE0fV03St0kYWLofGhyyq/JM/W7Q0x5khgYYkUrQ9CnPk+3Had3f7kmaSjd93rygyXOzqZhAant00siSE5qpN5hiXST1eEijOKkWySoB85h+n3S3oipUp5DHyNLIil1Il64oePt5T0iyVoGxD8AFM/ttbr1atvhogFHuUuJ8RrEJ0X/Q3Ans5mfPS0WrXBJDZbM4ypCskLZidF7HKCnUEV0S1NCaKaMjIA6ab3FJ4BTfjtJMVA7GtwPMxDAkCkJGOtMALvKzBcTy89JdzUaJ/bBWHQMmgEVgQCiB0lpj7BKy8aabysP4tqAWOJAUFyh4vA+WtyOtFDLSoZK8g5kzdAJkVTDR7jj+DS6R09Sxi9JlEoZtTtleLv1UsgVAP315Du02PljH9jOmJqI1hbs6H+S4sSvGUxWQd+1w/zbF+X5tsnZCwCKrHSargqAaOLQ4CFbxZz4QU35xwhHPuPViXZ3xFAz3+XO9TGEU7UxGYZqQZRCalo5xqJj0UwGFbu6KRvkM9+6+5wBbWjlY1rFesArVUU50KpMn4XwZQjhIAJafrRd8JbsS3FV1pOJL1oSfKUayei9YEW2t16OxRbEBdfgsfMWVwXjCJ7zhdggMpDkrXytr5pvRvpBRmoHf7pE4JdcLYWF6d+cExmWvGJO0sWz3+XV6Btm+YLLF7AUQ3q2eB0CvIJAueXgML1JguxAgWcZ1xRW5JWREqTBptku0XswNPcgbc3PHWONECoXCDG+snAuQ6tZryqYN2eMBqaeCnr757c22Qu0QgdvyHeAe41zHYPpW+SR6HPM79SUTtDpCq6APKgZ3OcHnNcGq4AuAHpT6L2UgpxXTXGAyoMm28hMk6VYQ279nDEHJv/uN4KEZaXT4100I3g7QZeSCurr/Dp+/pT4G8L11ewqVnHIo4Vht7uIpeNjgFS2xbuLfgH1NUh0d0A/9OBN0SC1ZxfeMfVDiNJc97SYgK4rD+iTUHGCL7RnvhljKbHejgLkbtwNi6Cnhd/mLKpeOInr0eR39gwABqDcmXztwT3TnyklL3bKDUDCA5BpnDiw3+jbeayAdL0/KQk9eG29/ItqCo2R6ftgH2waCRRZcADCxCoeNMp1MV4DTDeXiPpyqYn8vU5qTYzSJeE/cpe2RW6VKoFi6q1tR7oRv5XYXjCx4qA80HXQ0hqhABBg+4d4SFTPxmzVkgL64YbhPT2iZXUG+jjbS90/83mYoEaXtx2iUCqnunW8xyM1vL9Q1M26/ao04TYgEBmWFJ4O4Sp94/cu/W40Cfc+f/4IknFuPHJrfcj/9Yzj/KZ7tRGAc9kG9lgGQxT2RBx6iVRuVgTdNglPZ3f8MexKPJ/e47Wu6OkvsbOtofwuhNRy0MV6kVeEExaa1qryimo7Tgna1Ho0T187TwxaQR58GGmYYkK3Cts9lc46hU6z82RtUx2C5Xm+cZLuS9jKqNMzlaTeWyjq7IX4SjANhEJcWz7EhO6k1TYGLaTUuagOyBftKpHrgJDoT4AH9lX2wrkXmUGyKIlFxwlFRK9o3FPOyDzNbe0EBstKa9t85sZctfWDistuDL2vDqIQdlGwbqhBVKDgyb8HpynGaN7MVuh9CFfDIvpFWsaq79QGAQC7UmHHxfo+hARieIV3FaBDgq1Ct8IcgkGGdSlZUC7Tm+FgtcqctCt7A3hkrHtqBQ5BVBWUZduZoqGaWGDjAKnFk20Cctxvh3iJJZSTedj3kM5p+cU/3vlWGZtmTqdIYfsuq0jLlSlT2x4HuzzgQMMhhK6BkI6LbmVhdBxBv0kVbj5OmzqBuYlsUhjuYHVTAOU3RIG5WARu9LMhIWfRBJmrAvnDo06ZcZr2AJZTUQxzjsqR/2/x8PvfB+EwsYotbUaiLLshepfu27/sQlDDMSfTz6hkA0McRKkphP9vW5FTpDbZUYepGHandDSMRJOURSvr80somzqbAeHiHW742DJGOWsIEYAJ6fWFEu0GNol2IpzOUCFswnqojlVewINSweaPLO0n1znTSEC+eysI42Rhc0r8uz5Ouu5cASvhbiofmQv3QQBYYHmzuZzjAKUmc+pyTTKaC03MutpEXfTElTcy8BL2T4btEn5z09FzEvCz1s9/lxHxLKARvFKnPdKTW+9oBsyOqPwnJ8QYXWOITZpHPA6eGMNkYDut5EeZrunRzqXEVPvwu/6ESlPFM0iFJFi2I6BnRjpuYpGWRVoIxHreJnddfwRgHJt5Kq9IBwbhhwEueWhECzFPIXVCQw2lvk56Aeys5mRKJp5Gi5fwGKhyVNM5VAVqVf3hi54QaFrRULDKOy+ZXn3jjwqyWCOTCRpvBJrmgiuBDXUClZp6CJWytIrfdWEvB7q22N5KSKLyoPWe1w9C8Qs96UpYa8KJyjolvhvwXcv3Mdc6TwUrC3WA+4D3+gnJoYCKyxYsRodz+HM7dP4/ouRWOJvk1120Dwaw2y3+OAahXUD4nMjWs/et3b2uo6wDtkOLJAZ/o0o+SGdidF92kBpTL1Niv3qEphMLbp9RJttdZwL8qJEwwKwfSuAbWxiAJBIXyT6dpvHssKEC4YN6WRrlm9wzU4BO40K8k5ChSWrZB0sGIoVzgk27xNLg2DctWCXwEkzIcZUSNfqmq7TVXHFD3IjN0sV6EzEkElWYSdkoSaMxgNCFC3bMVEE6RCc9QHtkBk0BVIhH1VMFYxMiT5E/wO7gtHVyPam4W3UT/fjNI6gDm7gYDBnulQ5L+dK82kjtEn8ImKcbl2gpw23Ejv/g8Q/MEB2lPJBLIEJzUaw31v0SamGoYAh1yqqfANhJ6mZvcMkTY5gviAgCEJImPvAB0DkdQPIYuog16rXID98SieQRaBGApqaRLyDqhI+bLxGBqkLdSsZ0topZa7jo1ZHNFbc7pNzljCaJhnVOfdSMToOOHHTuNAs0RtL/tyPsyXJKKCS6HfnUuGXF1pQWgch5FgHzsNDSwctcugDPdagjrhvxZKi5sP6Ek0Xefntg0aAtVAjw70B2dyW3D52tEm3aA++0jNDJbBzK4FYFGjLU45xOwiK4GgqcziJBlsSH8YbfPikiygkEe13pGBiIMvsWqgX7aEZg6LTQFBex9tkVapNNhOg3kQbJ5EcAWyCllZGwQAK6Kuos0tqXRfQ02GgSYxh5qLjVK6OwuC+VOYo+bBEmwizgywgr3DSZ/0DYQiCkdNgpfTAScbm/IbYyCoreVlPsJ4k9HG8hDWcQiGTAIvwQgVTW9mogiVLAkYC7letAjXNmogkj2nUh2hwDpH1+59YpW1edWLDkIGoz4AZWeNgMvF21XB4Lm1Zwlrcql4TT3d/Uf5vlxGgNQne4z3HDRmPGbRO0nCwcGOwU0qDZAw2o8PPCavObywq3OIAFX8NKuaTTFCmwxvhf+2CNt9vlP/Wyme1+e8kLiKdhTnAR67WbjwlJ88MK4RqcCmGvPe79namlAWOgolFfbsKI5VLcgwgFd8tQAPKp0xRNeEmx6YC5a/wa3SF/LHYcm+6PuKNgcEFhCJGm9fItnLwvh4dMxKDIdz7goKo48Qr5n2FaU2n/mg5+Ltk9WEFg7SXqxCmh6CdrHxeg3iw1IYHkt07GajFp7RZxclhBHxRZU3s7AgqSzr8SyYR8xZ3/LAYELi4Al0ag7eGlD+oQB1Q+QUefaR30bsVdDWaQCGpthcd5rXzjTZDWHEVwJZtjgMtzJeA2IXiogyEBjheG9+7LMOY8PRikCCrMm2d7laDa91bOxciMLsC1xTpKRM5SoZiQArgno5YBzjMdnAG5sBoVDW1CxcIUc0aHh1jshC305JHuCcLgb4VyGnGBn+WxET4RmGJjPFHRHIpdxPx+0P4QUGoEIIAwjs+9vrq4/b/AeUL9RN9phKfomTxG1hKdCR2A9hIXIpBvcGSw7gQ9aqdvhbRB02WB+jsvoY7lCgtAhR0IKjiKPDaM13nKb2XbE20Nh5bgWg2PMzArOm1FpSaqGBjL0QLpDpj+TiyfZGxakq4HWucq7cTLojU3J7mPgpgGIT8/lhUDk02q+QxeqDYM5g0HAorMTXE8EolgDhoOKJfDydh9BSUMbH4kLh/Wg4StcOnuQ8ga80kZgEY80mpLmYPnQOFbAKFJOBWklgUGcUq8qHUph9xtHPnK/Tv6xN3RU8lExEWwDptnZ/37w6Dr4CioMd6uVgVVTahjINXljPk3ufx1PQqt6WSkjWOLQ9I4NeXVorM5zEJME+RiuUVehxMg1geYTZQDLyEDVmoNmopWwPOFVpRjBmijhbwadZvrhrKHRUAxGm8E0bshx2qyOAw/aUIf8EHmWkqghYG1x4mPLdMKwTDip0QCo388XtDQG1jNOSZk8HdJREI1NvOuPqKSMv1yMD8Wn4tjlPqYNGbAiHOkcZaEKFc7BlCepXkG+6CUqSorBgx7DV2i76W00BicYdeAyHjQausWSZi4uiz3lXt8HIzcjYeHcV2xwPAaPwED4U1MPW18Ykw4ctIrsJR11UNB1Gz5DC6LlUHa5+r72UNFyaSmxRlUSi6EVurq4TNjXLS25oU+dUnql4hnHjUiOB+lg4VaBOpYeLc2wocccjXfVZkBfEgpOHYWRed8H4O0MPbWt9DHDkflyR+6bbA/DO1uPREQzFd8KE9v9t36IsB8u2NPDnns41ph73cEH6HNjEkCboUSOASj9zcRpu55+uCkVHbRo6en7lg1uiWI/45yD8nRDEbiEAA3frqKPekmbTj5W6bjSQVzUrJVA7l0YIk5AXdqgFb1DsOHR8DmLIEHGireY5gRbgMd7VrbQD2YoN+n1SJgIPqqAfTvY3xrx+AoSjFhbBUWD+sbJSQL7+bH43FReevh9ZEXRcohJkINRUYbaTYkTlpExBwP3HD8eoiR2BqmK5HV3bIiKpsGo4UB8wBkSX7I4GXn221X0pDrvmNIyoKxIKw+WbKh/0XRnaEltRS+JvwBezOkunGzV4xey4PdctjFqfVTTufjGID+fBsYsE2aBXLlnXsL7NAqbJk3vOUSLpjFsrommWbUmmLg8lHxHQxKWzNJ8876QbEt96zS6C5zfrDnB0W0EHcwDQVAxMNKu/VjAmkIWuhG48QCkTW14uGQDU1fsDEE/Qmj6T9Wrq4IdZ4fm3SFDQniFhxHcSVlE6F/q8mbUmIvb6m6KjajcQR+r8DaMHq9yhkwuUAA7NRfJ5cbnY9sx34GtwgeThw7SvAmS205aiMACkKbq7fpCt2QDFB9JDkJtfagrHoB0JP8aG9YxqSZlHMzmnijNuP5S9rEFWS3Wc0zS9kKHVzbbHZfjK6cy89F275bUz01nggoL5DhoDdc362trRLNfEzzJ5pz8N0jCG4s00SuqmHgaDGQty90Zr1c4m/AtV94FBKxpxfuPEjSBS8aRj04huNwvvPLSnfguPUudXoIyeWFjfVtD/YMKWqb8+RGz2Kn+fwiv0W/+OpE4N0IiHdjaJ2QSZcBPH9kyNe1RtNeIknAjFKFVGisE44C8YMPVZ2tvGhR/W+LsZkLiqrRLGRnJVs1XrULP6lK+9B1MPAmf80KKVjkk72900CLzkl+fBeAIfm5400H/+J8T08YkicCdoAcGkvKiTm6Vi6g1ixbozhSRs9Sp1RIyG/zYHVj8pTN3g2gaX8jr+MGEtZleN+cLgiIswiUFokNir3eSiJm/KmEMlQ2c2bXf9AA5cCI/QJiW5L1ZCCiO1JDrVvreXfCEXJwxpPicFVY6VReG5CIaPnatkYpySFoorNIqhZkZ587902ErbUsi5AWyCe0NLS2lTCuclmJr5P5o36Up3YSmSazn9HHuufC9ZcZc7fm7gAg4AsVAaSV2bX+XMOql5JAUiRSM2cMPichYAIeySzG5S8LlAO9FrmzgmtqerECA+p4mA/RDAxHSzKpjcOmGHmOYlv+8g+BiKx78S0bJHRTnRxEsv0nhgHQgteFSoCb2mzPhf7pYap7lBwZIpno9uXyUAtGAEsqzQJvyEGugi/IJUCYb1BJLWOeGczHAHd0sfYLAPN82k5BeYti3J1Y4xc1carQvp9l8y6GDUmVPhWyjX9zvOmLamusmuBykI32VwO/SO3MFuJjXB286JPmDXWb/ikvJYqCcZclExBSfv/57e1FesJFj8oOywllhic+2f8EFURV6Lw6gXEicoPqMRYwjYBzXUuBANhe6Oe+Hwb47dQ1Xo2Ypsg/5iceAo7/LBcs+XAsU0SVIaQK72FDJcp5kKKpLy+wIFN76BDaDfeY6LjLfw8+kWySUCd9yf7UaHYR6D92ndFndRZVq0mXKmdfNsvKibRW0bwhXOFzh8BaumvPXrjqvx3K33q5qvxWEu94WYV9mv3mNvwrwY/ATl/M6MCnRO4eb4U38DW5qT5/AN/nsYptvKSIEleQPvtHbQXsmF0WDd752IVctNPyO+MGcLouB/NMhWqwlrGCsgCPCcZ63c/RrIcuLXIBxSZANrqfy1hXO1IovILaolPld//r37L6r6Vw1+2swjn7zIk8LN2sVnDzddMmphIbjHMhraE7MJFHJ5ZmJMCFjDgKucr6pBrstfIIu36rEw1PaHikJxjpTZraaBBhHAc1rrK2VVIIG9YDVVLKncGak+LiENAg2dhu5PbcR5qMwWWoZvZK1QQFKzOrF8X54ZwF3Ed9K85T7EBuJH06xApZkB0yzH7aa4uiF7jrnxR5nOxmwM/HIgx3AaL1l8pVD/h4HXqqxANo6WobeBUZyt0ej3+3Bf6jlGenh+XelkJVtjUib3SmjiTtH0sjj28gW8ZQHl4+80lgpo6bH7AxnXRpwM9flA+gs5pLS0hk8ZOq34SAAGaHW0sUVm+FtK45Q8FVIMmHJuEYWqtW21aneYE2sMQKEJS/VwW8U6fKG4avjYYA4p3yxC+TjLeWKX3b94+BsHSBkHRs6Oi+LYkHSLdYT0G2+tFKsuhPkb2YfUxoD1oAzT4ZikPsdUUfII5PVJRnJYACyBIycKimYjYlawHuamCyagaSvPEaZr3RdwH2laKggSuF9BX1JlW89jgKHdrqd8W+GZvTW/HqHsEarWMJ83nCUeIv0DA42wF19NEiPVjqafWD01fckLaXLfu6Nqv3M3jnmfbFdTr0jBKoMabNS1gY+nC2eG+o7u83fH6QMg/Zx+pQkteWsdNiSs0sFS8qCQL6JZ3iTDsQ0mHhgHRr2+jRzaMDLOOnRewQc0KODgAZjQ4drodyj/oKjagWf+jhYBN9CtSfbKqq9mPOH97SqFg+Rx1vTGvYuNQURMyfRVDGvM+gfaJ/3wZvkyhJI/EFx5W0rRS6FzDftAJFZlftLSuZicD4qI20TGtM7YDycQ5TG+kQE/kp0b+TSwD9/tCjllCLxRrdUKLic14waw6WDpGmv+2Sp3Ooxz6fSTuGYp95WEb5BD6BY8lP1yj4pbNLbo8ImCehbfm2dwH40mZiZiWOLSr7uC72jRn9jIm2xeJRZbrwAnktiu3SGXpOXNZ0Zdiiq5VwB4BczRWbgJvwQ0/lAOnQPC4kZYdE+hATreZuOHW1vIxciHFkGHedHm6fldFvfNGPpTjSxeRUllixn+pPsXzIdHfYraUwyAyajg23gUNOYvsLjc4ipnR6ZgsZkLrTCOTSnsb77l1AYerDkA/t5jhy1qEUlcbikbM5Brp1mTb4v1o72TAFiE7XZHntj+Wn7kim7Gru7DE1HLZH4MJRE1HFkLQ6tSNHtyOIfslyk29fatsE58Um8I4dzTqobz7vt7aFAO7C6oac/IoarIt1tXd5D+kVrSXZpkyPcjrSmVZzMQ0myn50qJdtFl0mfQrLUdkz5KHhe2b0PQrg3QhwOYQBnhLuaZG2rbDwE3th4cofjOO1eXjVrlbuS5/BZ7GRodPzZ0bih0m5s6Z577y+JIYQwEEe7sYUVJ1w13DvcO3ynw9rLPnyV+tIL/X2ryhsbTzbO0l+0qtKbg8PDE7M+AUw0bqj2lkZZOhk/gutjhgZqpNWg3Vjho6J5SCJFYSBEHd7CW+YEYxhkhYchOjCGByG3pCa3GhtPNs4iKwPE5/AedlWsahmemH3vfL2NFwsfWDhN9RetcvWMNboHPjuEAA6AtKg4tfp7A8zWs+AF4aNbKZ8YQhgIcaoyhID1C7j33m7v8HYdDuGu2V16h8LDdmXkotLdjw4rDAQQDhBnubpolTkLDxo3VOpgBXtISXc/AvHEenN8dlQ11Go3MVbRrgB7/cDwU4aG1TXeVVNMjKp7OBrO0ebJCqakFwaMtG2lfubJTJ3cpMjrKfLBAWd2DKNxueaBk360p4yzc1iABJjqZT1DqhYKZ25+zv8ADdHC1EP9U4c0BRkm0BgiedoiPCUsukmyQ1wT98gOGAskGDC9bR0njM2LSNsa/kkANi5e1TjK6pDSDENtvKPU9J3Gv0sbJ0iVFzpGZ7vFTeR7cPEtSY0VuGR785cWPDTUiG+OS70kpFmsiAQLbSfe7guJw83+55xSdSzH+ESXNKYPOLRrVQwk8g4waVjTsp0uXQOpC08pKdo2IWdMnvmpkdkdkZuS8rHXGHQAly11Fa8so05DZbKEEtiHMDg6Jlllvwuz2gtUrajBND4DIiJcMXCkgiN8UUqL7oPFdRHD8n10zoPcUO108w769JNc9TOfbvhUDOZSnYHK/ugasM62735VbRN1g9QYM11sLxGdyS4LC4jg0gfyNsYBN3EvPcx3WlZST83Z1FzCzue95umSqCgQSZrE7tYck0A75ieKaFDVIKO6cCbGXH+dQuTrpt8dTIPKHr3M/yAKgCXIFAdrModJcAhG1KwiV0/1yEgvMbLyvsO91TI0GhUB/mIYBCP+EuQxm6Lln4Ty9e1xUn+GflpqXNG56zeqBfnuPDRYCCNM0pOJMBtuS4Z/A5ATXz5oS9XxYDfN7PZvu0TKhLX9MmKOrbj1LmwmuM8wTd7Sa+bsVo5wm/RFnT/jaaF0vonqLFpXpWPNBy5Z47BOSVN6uohKT0TCjQXdmJfB9igbaGVkLDMK+/EDEB6Cvh28y0pOx+DZOGXO0F0vBPO1qdMpQMsvB6+k64o7IEIxcnvKGF0HT3HgdYrwGMsuc/1B+a6uqxbsKexYzFa65zqjeh0UTDkQCPXgrilwUK/mmKQ+MeD7DcD6oViYjV5iXJuLgRZbyUSj8i5NrY4TQj9u4L4alnC3TWzmaujHcpx64AbjOTCWxexdtA5gsYvaAOqcTzbScur44QS9MvGgEnmFeFFWdYqrBTjdd+yt3C4KT3WCLe1ukkR5x0PvlOpPAHrH9FoTwqOGODEql3ejXkg7klD/BZJDSOr+m2ic9UEBdJzZlsU2+jER1ppPkZM1XJ9pW9iVvHwg46F6t3ZvaQYM2D5tVGURNamZfoDE3AbAnSBSa/EFtDuqXLixKDP6mMrMMpIrwbHB0BwZOE/PiudsgjjKb3rfi4YIfrLgAuPLK4rFNoCJt7z30NSk+7oJICy5g9XpiUtrY8VRfrukzAOLoLTCfJBVZFGEqSlOu++ldDxQjde0prOXCwP5sTWKccZG+AjOAoRxu7FPV5fa7V0N5Gk8UV+dvn8Q8+ZLQWA4cUcgD0sd74k62QrMe5JDdLGysOC7bSqc2IombtLVuE04naH9cgX38QwfxK9/+lxS695SPn2KOy+qn4sWDR0FrqsvSQcgubq2VO37/ImwFY0xjChXWZBvKpeNMRHNSJSUMGnQjTBUjxr6Xf/7gPooor+hNeAs3gFBD+FmIGyc2QrpOKzTAZ6Hw5P6fdLTiYnS6jpaQR4e+fhGf9ITd7wkBKvdSMdXYR2Ikn4VQ2rAr00x0bJvFiNAiFeRgKPkbBRkHH7VDDFxxJPWHHG5IWQxs7cAo/aazLVbJ2cNwnnFdcf2hcrGgPPSZAfeyo4wDOELX7IKI9MXKR+jtYv9dBVjGraZEyZLaIbLocRUpTIKsMxuZOVC+AozFvZRxqczoiCNNPrhfLMVafiLmKKqLtb1+TrqTBfMvXJq5Fhd+P1iaRPVtc/nCQ9nw8gbCAE8YvQ69EwcetzXeCFXb02pJP9q9jxVxcups0VnV+l5UMNNlqz/8/4Cf/wrfX6PTuFFRbXSXB6Cp56BEmFUcAAuY3bfHyPA9YDLjMMTraPoMG/oaD2SEe3Ga580tT0M4qC9oQrBva2C8YYVCf/0XNWdjAoNV7JvwrTyIHvX0BYiNe/FANFsU15/+inZq00j64J7uuCUm9rojwYSxA7wB0TxExWSldSgr2voNrpSsCvHvbmwLiDaMwjw25EGPvPtdSkp7rQsDDdGu04fndwxTjgFv/pPjya2T9GvzM0FKD5XKl34/WUziCDDEA3ZC0TqVi5hzAxhe3sMctnBNzok+1fxVPpz0CV9RVWc9rdyq1mvIM3Rc2RZU+O3HXSncs5AQRioS2neJFbp+sFoDeh81q1PVdRiPsBrd6z/FQol1bkz8EwCAM2AfEkuUIyqWRh7GXVO450odb/HCfV43PF5cjGT4fmLCqAQhOygJG7F1NqFZ7xKdRH2hod2obFkAGMSorhk1p9o8uDDWArvI5Y4uQURUq5G2bobucBI1moyawTFLTy/ghPojgquSnmi1ypUMa6SRvLqjAvAmvHKxyWgKmcz10KsFK/k2OBsNERFq7RqgCW5UHrdYya/Uv2WbR5X7Lm5OxDL0wg+X21zL63/B4qjCZfFcFBou9AAyhV3EqTsc2dmlYYsClgI9voI5L3OKnSVjtlz3Rvvb8gaRGBIsqZhwONfmBfemFL1LIVY3NlxVAucX+HtLAZAdO3o9kg2xJPGg0AjQxtGLMLuxMzp+RGk53pBck5+kyFkn+TbCt48MCLZGMVv+xLwBun6Dmi/efmkE4HT0Asfb5BcEa322m62YG1Ure3QjmRe/Zwuj7JG8lWUZHGk4n/ezxHJ3IJSs35deddyHbCrs099q414CMgQPrctNG+HTDR5+sAgYOjWM1SVnxUSwlCLWlXQGgOsJie9Cp43fBEbOFLz0mGxBqK9Qx/whznmVZ3JFd/wsG00Tz+8PIhrkApB6/NtWdSAuTBOs39MdYla8nAoVo+Fw3wU/JUC0ZfK2RZwDmyAfdSsmkFClVbXqDDHyMXfuSv3p/mcN4ipB8oH3IY++N1D2T8vZGcSrNA/vLrj6cnZiy/sWZIBd0SF/yb35X7An1+P7G+MvFKhPNIkKA/Va6J9h7uY3iZq3hXDxW1S0w9Oiid2x7iGAD7kEPlNhGHAb15CBjQ1F3B4g1xjfKapHdJhBQQokEzUXU42OhH9G2niWlFrsCbcFm1jOs3g6pee3q/XQH8u/bJrr04cgueLTh598tf83rSIXjIyGjwYddI1uJGPAbtp3H7+SHbJ2lOMe+bf/r8HmjQlFAlth4/IH3cF/TrKKEEO8paNv84SL3FopxKwgVXk/oMH/9vU/xTTf/jlvwqPg5akevDF/ay5aVfQkPm9L07vCCl0+ZBcsSjsTbkewe2PKn7M3DAbhDpqGuRsgISAM0KcyvndOBw/J4YgSeNqFMfG5pYqrK9Y1bBi3+RtoVJS5Zgp1MjRaElookwVmzQ6bfVlmxg58q+WItYduYOK8xbKHmIq/nFPsiIGkOReAF47pDgwmIJLj0TWMjkxPlGiPCCiEn4zpTwVI2tdIZm81t8tWpGrwSkcW2Nk8lV1utBvWnVsCcwntZx6G2FoLhsbtAHK8Hihdbs1guy1Pzj1mTs7t5Iuv61U3nfyq0Wb/FDaMjJRscAYL/ifIbunYckDyVanf7ojBBcdBFy+sSR/eX+CRYyrkKk2LKStzAzYPMeuT3dB0XmeKkQ8lwaAE/wuCSIFX1M7tD7wGhxwKw+mDxXbHE9BqhEM+RqGAwCXHAsMlTX5keiGf185fFyJwBktr4pFZ//1Key7bZ2owHDyabHIwZzvGPs1G7onCJT1QzunsSgj/75XCpj/u7D+wxT/xs1/tR4dlrK1yMw6DMxXXTualqIZvfObDCuia4yEoyI96lD6QUdscS/9sKsQYb5x7Am8MZb8Sbq7fcIFAr51skNX7uEdKYOK7MuH6tvKfSszuXDsP7fw5GNoxKwlCQ7Yq1Gtm0hsN0nEBSWhbYTjJcEmcygL0bOknstypTYcG/FxXQQtWSTZ3Ky2GiDqUFK/mKUIL7/M50x8viN/efg171LDhIoMVyAkPXc7YBhX5AA/JNuHASU22oAnmMouovBT4TZb6tQIfbcPiLVekgow3X79qxl09Ew8+MUEywDrI8k3v1ngTbUMQo1iKUzCPRmFu4lPa2pZd/aQerOXw5Y/5yMkgqN/S/rG2MNdJeScYEZE4NU4qkxbTC9I6CKhz2LcnX6MDgcWegnUTeDxiYoR2L08WqMndj3XHWMAM9U78eRgqZ7nbiMBoYDfNzJ5PyAP+3Q6/LBaGHQ5ZulSUY06SZlM08l08jZZJkjK6enjz6nWZmgzCfFl0ndrhF3tuAJeVwa6njzp8q74wnurq71dR1VC0e6WxK2kx0VveDrgsEztYCniXpR5wuMzwychMlJre03hbWRDRueeRun2C9vVGUiHpxXceBeZUKIyGJsTPwPcgfP51DUNkUum8nsxeQn7I4DLVcK+aaiv16/5uL1VDMBj2fl5pWXOZrF/gN7AbzyQPev1QqRAx34k2V+kIrogfJx1YWFzmihnSWFazHXfgpIQ0J7JgA2Vp7bJ7EdaVoELictSHtOKZ2dQulQgzAh+2vnzR2Fof41+keUvd7+1qeCZfv7AHQOWj+s5dLVoOi2ykWOlIhjN/tqo7oSaFwPmiayRoYmkBUrRw9xk9gajGv0yH1z8VphQlA6A9xCg8i+ZzjlaRowWnLqgFhsxEDp5ADnnfWltfnlvxU6gMnQtJgQNR2rXo8MD03gSRyW1igt2FKVmCYfzZHQaqyMzqjblVbTsTNKTcUUfS4bL+jzDOMk0YJJivlqzpOI6ruH/LvSG1HbuaW89n53c5Xjh+7nUT9whRX1G0NtyM2A44/yi2VHS4XypuCOHPRq4x+0rAAKtwZo8NDOyfI3Glnb+r6igPSqfdBXS5HVISXksime5UDQlvjrN1qbelDOlbyzdOjr7vlUIeOhMZpXpz2DVc7HFFtRx/KQtxcq+Qh3rByaqA8tw7UvaXc3sO7TusZbed56dc6EsZ++GCP+HuCEKdLICSJtkxPrxl6vb9MRJ1VkNqm1XJ5PyXGnnJ/u76qwRKHZPLU28tYirYeedLLImua6IXZn9CzxJ8B5cyhcQw65qwXd1wJUH36OnNHbyLSfwRVdNVhSk74RUprzC19Kp3B1tpAw8NbbmAv2U0udB6Wm/aH7ZOdW1epG5H46nhFs6/5QisRr3ztJQBtf4cfZ0+dbUoP6dl2ddEI8HTZeoijwQ6UHtgD9rZPyGxp84Z+lZjkjMR2XGnmywpljgRyuE53IV3qGkbBqTe0TKa/TzQFK7daEM3/fvFI4X6KeOxImfWUAjyg0njcOq4IaLaQI/hehai70rPXl0+VUO21fICUUgGjHdNyHd4TwzdVKlYG0Mqu+4D3nT+rG+Ti68APCteASsvt7kF9F2TrVBT53ml9dtjGS/Ma+baebFPNpUhpLC8+9LY+AdO32PUps++Bq3O2JF2LNepHN0Pgu560xJLAK1z++CsEp6n8dQ8nMFPOYxdcVclaLwMhnYRLmzjxALUO2/Df7IPqEmdoyanNOAhxBFI22QgZQWHKlYHsfH6zuwh9Km9uPcJ0FrUougg6lLAgpn3yR8J2+leiMPGmJfTS+7k/TbsVrMTVOlf8WEQ2XJgx/jA4XuDAPhcDo7dZeKWjX5l53HqLlVi9sSQdAafVUeUX2n8sAJ43Tvn58/QUlZ2nocvhEt49wb6BtkR4s9HAmPPI8n228PdwBlzZubVZKWxeQK7vf5SRD1q6qK6e3SXx26lQYNWU6dxHhO1oXvY4ufKQ1iAhlLUHNMntwSHUV0Z6FcHUDsBjbye8fE/GC7vlH7tyi9R8vqYnD7tWi9rCirEPCuOAtE42V9+wq7gNv7hQ2XXGkRcbuntT2tdwdDgk5kUokbXlEw27DoJmHrsl/B5Ad2HcRKgVU4AUTbK75UiCDZ3blyYBTRyUdRoYuUKgs4e1uAg7N1j7w8xu3D8yf9b38Rfy7q+7ewJGhN4jKmqT7ygU+uiladvIZbync776smAquf3/2Xj4qK3y4x2S2rpjekiVwxzASrfqG295uixk1pcbekt2Mdo1e2lGM6gAponlNSMKhjLip1SZhZtD0CxHvJDUVEjbuUNZvuwUP0nrtVnNvj+lgJX5IDNt0u8o2VMKBXjFXZ7qv7T7CZ5mSKLsto+aV+1J9ly+LamzLXZ7ypcGsXvz8oL9RJ84+6+MtgwgM3UB2dVTumc44LAE+X61dNtXFqv4UPvIfWpsbGkrccEfe7y8htMvLB/XF88NLqITlHqlBf/Vm+xeNhwLRoX/r7oNzc9u+AVLsqE09HP7FjXCqasTBpxSPe5TuN8lDY6jKObMd8q6b9AdyMkZUIk9PI4vLvq7oXiWchX0ewTH4gt5dq5eeP0uwmSMAeAaTgrSDFdqAIoO8I9FRjD8ufdgsU+ZsZdgryfe+bt9D4Q1twstfhNVL0gLPWUEstqssrxuLcaF3PjuB7Pz54NJ7sUIy/NdjjqZt8HS/mPcheuZIMaGtoPXGym4GZ56U+KBebDhbDLpFjc2MfK+WSya2baq3pp69NTe11zzxxblOjfEMWlu3tEBv5I4OGzt3cEVV+VH4y72x+mDZG4pwSMdGiiLxHpmjljNKViINjSq1iZA8Ppib7J1p8jsY388M/oSBlb1aBigIh/4VcMBoDfY2j/S2bgbNa3s3u84An16lL6s+iC88LkSuKqznV92qA6m+1u7obSntDyeR6nkvJsidjXXtGiyji1EQJ5alsStDvuRd72EhgP5AeGX3nFGJ7oKennH1IXuVCZtwjIwfe6M+8mjutnMS+isFiMusfdnLQGhw7Kyzx6B7ahz6KJAZcZzx+m3gQYHNqjJrEee9M1jWDDlnnb/JSuHY1VfftX3Oz6bGzVALOioWvIpfroefAAV/pKSarICm8YA/tYvBogvfs6iDWnwhDc5H2Y1yBEWtsdZsSJCZZB7sTnpRFqXz1mtWSPzAxPXvhNPWry6dPaF4DZr9rrXsOiBhu3f+jebmpnj9KxQilxSY/bE8OkH+chtMm8+wOldZitgZlhX369ApcgJTD+AC99WX2ZuHq6aJgIlJqVAmz1PR0OpviWdjUPfph7MLs3RMNowPmRpnZePlS2pvfd/Q55FQ2TrEyKRYAKZdsdpvkOAJskZEVWbjw6BFv5jT1Fye1E8jrI5ro85fZ00BHmlKAthCdmosxwoGnl5fGN9Dp+fVLyt+4WpAL0/6cgMxi+8xXebWCSb35eAsvJxdUWkspizBbYAdzx/q55/a3bRbgNJ7YTrMDb2cHebhEQqeVBrm50IjypwzSuLp9QmJD1ES6Tj5fI5+NUxx4T4ElfWnV8a0vMNbSiZmXjsCUFR01oWAXtb7qa2/fVeloGJ/OsHXwdzI0n8/RgDW1rqYaKARJneUB43lFjWzuyJaQJxYmnLLdzvi4BqeHPfUmUi+u+J7Vf7UGIqMXjjyS9NenXFieH44/f36Xm+RVF4Z26titVCvJsyZwsdWow8AkOpFpDoAajQyzVK6DLQVa41i1687jM6hPDY0emdeiLs2hyy1xRrWXlMsAN7Y+0xjpya0zARN6DAWsXgrAaukF8H3rUK5ptaGLUodd7oNXHy91exJDs1WOhfLhwFwGorPB9lgxkJimJlmc5fUz+FGU+n8DPDcQLjub77UuiJ6qHqeJI0bDN9PYTaqENwilEez784rYW5MueE10nd6dWbxPRFFvKLSp79niOtUxdH8ZWa9JSrRHeF+uJ4QedqCxq9ln0Q4p0qhX7oqwDV2s97CwhFfWS7SrkGA+CHhk7jFrMI+zDwONW//+nr6SiErVAZtlQQJIJGEMwZp+WUq3RmSXObScOMNHlbHx4NRWwFDaEIoM6eVzMaPQm0ZSgNdwiT1m9bToGIOW91vZDWlprXLucLyC6DilBBbwM96j4YOe3fDXm/LQpZ30CHRTj3cp/vzKy0VjZwaRwo696uCNDkmQgwOTq23V4YqSGOssgGjoONKXxwhTCOBVp9VY4xqWbtTijlY1KYHMPsDe0gf7pq9y5hAsta+wx7NnrvGDi9qCzeotHnHCi6SakxYUVvKPUClM2gASWEKY7CaPsr5VX2sPOq5joAgWSZxMoqIDEPUCKGdK7PS0+WU2mt0+++RsMrtT4gbgAF7OY6gv20Vwc9iXSWzf7hXdwdAENAknaxL8MLstagU5BQVwB6sApLxJvQy2nY9BIt3YCiMN9Mvlvn0sLYrAUnWAueAAyedz0/9VCxNCIzhKi5aQOH/6zbd12per1mBmbd+M9rzEXxPDy3S3LcTIxkXYcKbaocYL/afCllGSw+6UewlUTceLpV7sXvcdrEjHOmv32Tf092D3wvrk1d5eKLdKi01bM7lBwMi4+4/bu0t7SUNNdgRSFIIdwSd2IvczVGQnCMEooUm5rdikLovJYtXKQ5h3nbEPx2HV5fAbTZFFM1aSMlO3+v57rUXC2FvkiR6P/Yswe13hXKgUm2w/ReHms1vto+1ED+SKjpJw78NugTGoRJoH616U+wmxejkz5iPf3QbKFFIOlBIFyLKwVlbD4lHADBXw7cv9+PHFHkULmYVUrbT/XgSwmWEJDyHi05yE49H63BExdFyJIR9IiHv6+qs0p3hCGGMxfGnID5ApeYSk4GNbYuqS5mhPZU67D7x56Dmp1jiMVmA5S1iOce0RP3yzeS1ufjvORs8uxXssTVIW9M+pJJmDvFit0/tcKpbvjCy9AIan5GSBwyKAVXETm3hwuag4V0qX7IJL/+iIkwK1hPj0MXSpOQL6AUNA68YEPSo6E53F+P1+DHt4ypNax8zmRcauIsinaXNOWmn3sRJtOMIkdWRd4LEd/CEi+uagMD4wwWo6a4BC0kBQTP5mnSyjCJvjAz3gi7bNM26aoxBZKbuzuefjAkmblwXqxEHLDaajvYrKuCVqJzzqgPh9VfjViyvC9A1huP94qIi4AGn1ae43Lkj2Nr6LIuRdJmCqrxRmprfPQGP1wponH4TWFtyFE1doKC6Q7l4hYVKR9cBvRly5zBYU8d70mxzk/y7Wn73wniiSNmENBeDcncv1Dzz3PvNfrcdyV+7ERpdUKo8zsuCOD5VmeShRBRnepfTLyQksvA7Uvev2WDEBfGbiWa/4Vw5dOklrDMnm4aEI3tz1w+AVF6J2hSC8PuYovUpjbLrPvOuJ1CYdFsmhkDJEbj2bXZjpm/xj1F/ogujkf+fcYZRiTgrdTXgQpKnrsz9xyuulk6Ma5DHkS6bRPMwKyCTxB66VF/H7fYXB1ixJP1A1dwp9Z0dqD0reUgT9CL5xBdrBgq7iIvQxvKNQ1/EaYXAnLBcdpy4FTutFwfboWvQxEJ+zXcM70ddvNIcmZc706J9smnjb0OtmQKem1bvrgU7bgj6i+5/ZdRg1gDwqEQ6MVpAkxFGsnVF9VXFmka90KrzvpzvQd0FQ4qNlDSMOMzagA6Pig5YnK6+MOhgMSAFWg4+BeTgepIEZJ75BeDowJp1c8xJYlQpfFDQaI7URChHB1oTUQgLn3wiKYHxQQkUz5sloQ4Cnyyxs40uhe5zgxEEkhUiZeaWglchUJya0rETnuuffIgaodSmSBIxe1NK0Vrjz6vdDv9oEQm1mrSTwzFXkh4KpBbfxJGvqtNJqp5e+AHFJRxMnN/LzeHtUyqoCndDHuAVN2JEaLS1UlySgw3LQTEKEQgwxxmCHQYcHUrkCf0gmhpEK4LtUvpfgq3YrwCWGtX6GJemJpIXfCIRsZ9cOzSTZqGZAb0lHx7dlWUBeC2drMq/8hfyfsAtGCHhE/Bcak1owQAcvsVWy0pA2UO2ZLPyOBgXY9F/xJJhvRpwaW3vEV/MSRvEBbwsVNMcGzsDAVA3FIt0zCINynk++spOHrbtryNET791fZ1fqrW00eJeOUnq0pcD/b1RwLk8g86ZSiyEH3LzTZM54QkMIw6t1SAe0ie42EV+N8TlD0R5DVUmSfgEnXZhA6cCyq777phB1S6fsG+HinltOaucGxVCzGs3jqhYreC0Nubwk1tjYQ49Pj8iY02DwcdOSMwoSQWcO67w0oAma1x4x9ZpPgO69xXxns/wzq8Vu/c0nFR9kVhaaLzilcSovAsYya8Y8J4JcC7dVYXK4QwGqnUYnjTr/lhvZDuZPfc8P2/BIg59LNeKKSIShTjnDyRwyyuZFdbANi1i05ojUAsXmiofw83155jH52ervy+mrEbpKIEYcT+2GXBbhSS2hKdW0EzwhHT7+VUjuSAcZHQNFrChTJkIpHk5OqGauixeQvgbAhWobdYY0hGdYLZTzLZd9r7J0X28HiP9pVNIJidvcElhSH2dsLL2cbI+PlsmxLsaQnz50BhZEG2P+pauhVcaC70g5OjtLSHjG4a63IAsbFGlz901dhM7X081WeGvplgb1JEaKLW1mjRmr0QRn4Ye48D1Z1UkULVbhaF6WSl/oCilbkSt1l4EQQhuDTXO7PuUAUVAPSlHnVRDU0maHB29sBScBWyceUpvjq0kHxg4AfU/gtF6kxf2ye1LNjVMBSLUGEgrMoA8FmIdkMer5OMgJztLlap9Jwn8q1cM2Wzju9A4/L0Sl4ouCWCLGQlAeEZFTLDrHXh08XFaNZFi1Iy+EKA5vIj81koUVUFM/+DR38vnLVbJSlKX4CjfxgntWkACO5yxLyM8Gy4DH8/Brp/ALw7axnTsUrlVfdr6nkaImn9L7KjDM0VLdfF0KJnKR4aGsuLfspNKUy7DSGb9lp5IiLFlnoR9JciiyRoiGmVZXgFomqvwA3S5ebJSgz2z2Ld6TkeVyqucDfM5j9ZqL3FJJRahWtFFogtf8mD2zUAQMacxLRU5zYi5mjqoszWTGboHlFL1xnyqLEFfvuLMd0e5JluGcRYTuT1OE9RMMDN4pZ9OGHgoBB1Bwt7kFH+r4Qf3EpR76yZfZnTyP7vJTsbpcSW8BHYN6bpOEXDblJSeZF80hmjKsKMoOjC/C9grKmdzoHAIm2XHYjrTwfI05ZaUGdpk5BA25btU63FPlHV1buldwAOtz0QEmHAOiBxZJno5u4xxcXYAo5qqByYmZOIE9RQLDudh5cq+vTk4QbdMs9agXPfCrIlKQTo+j9AgzA7ZpmMMU3nvB9pGQ7CjGRYgtcV0hhLAPLCK5xveSBqfYIa2np5jceqoAvqoSyc4MzlyQagnzSQLd8X2EtkCTgQd3gtDmiyzRvR/olkRfTmQakzYAfYVFNk8zkzZVDlv3gPr5emZIBvzoQsdt152SUdTpwLYiFM+wNaKoXLgdbyMDdq0lpCA98vPKErzUIwrLSEV2Z4kUE7IYkSfEJp6Q9/ayOBo4xlJp/Naj/Y8ciDqoGNNNZDAK22VW4fOtHS2/l//QzJQiykbmFA0qKEWdT8TN1/bPEnKC+hZKvc+f5wcDAdqn6vxjIQmSuSLnxSTbR0HN0AXejhLz1YJciakiZgWGp9KcNoNyuG20EfZZOmz+LBPR9+a7/qwveztelniMGfLUPjiBKCXK1QHh2VkHzxwOXmfFQRGF8xneIinV8IFPI/djUZ/CU3g42tRs5fuxYgrSb5ngcncadun8b6v4HOk3WF06fgkIchBVB6XeuUusI0NoY92u49hsi1MmLJRQJFt4wMeIyOzjiWnmIPnWkbaJlxjw0RbirrAliiONc5gf9FI6Q6fmhrZF5hrmBIARtqcIVooQsJyITxaAxQj8CU0UECiqO7WoQkKI66j5deLCmnuGYd8w/1KFYnptSJKvoXJZKt9rODB4Bh1SGVfVwBia/0sPsjv1oW1/Q/fQHmHT17VX4ZJdYBEhG27viXsBg2T8GzYoM7t/O0hgQ0nukxvUmVjfLZKgQRZI+pAI1Nua8BQkjJro0tkzKBThkoP7be/bVnTDEbYDqROugxXTkKgAFkww2X6HAlVY3baDy2RSTqXRYZy36SJXy6VqP48S4Ae6gjKfMXmOOElFQLE5DVX5CATdN/Y8zGfw9YLMHL0sqecNerFrLB9nEdnw2OlN9sYP0lCAGY4MBLCL3q5xb5JqyGDTkLoyW4die3eLZkA3X+iVQP4cQYwwqWcTzWmbvD+bfxQBan1G8sKV4GTxEz3PRWH43WQZ5Xjto26YBcZPvE91F+li8oJ82SuNj7Tnk5ndyk59uCEa3ierQ7QU8FA8sD/9z0TYVHnh9bFXgqhQFgZKWsBkefrLEHuSTpVCpuGYLFJp/r4UTAP6W2e0zMvPgHhHUM5R7JmMCsEWnOb0W181cARv8cr/Kw7wQtepbi9WOVGcf0/JT5GuPZaAO1EWeDNIv3eS5PpCkYEMhstEQh3H4w+F1VsIcAMSC2PrB2+IhSVq/qVuhq5h6+kNlvSukSrQsxxMXOkji6eKlxzQRzdm0DKkq31iMlabR8P7eVw2TO+TnuzWIh4mfwLHbIq24MlXj4M9qUez4K5RDuZxoeDRbJwR2tIRC+xwlGUcQjH9tC146teBiUasCz/e7UkJCMtSZHeQoArODxGma3YmAC/Qay6rL8IKi09t3Tiq8X+UK7jOs31bAPa5F4N4J9N61zA5zcphVmD+2IaHuDktGvtf/Ifu1KE0o6UEdU1Jv9LSrT5aEiYfUnmnnW+pVybt9wHnQahJMyTPBNAsKoOBg2eNHFdSsgU11RntpgYpJedKRCXkbsgp4CkH+t1BIdmDJKVSzNzcU9CYkbp0HbwH+IbGWmSVa2nPqJvz+5Q8p28pgR615MTGPBNEg6fOlElxWN7arhrXeZEQ2BBz2GUp8Qhqj3J/L2SkYHK5qv5z3a6rPt+cQ3HYTTncq0l7wWvGV8VtcCS/CIfnLT+L45t87oicwKzFNGJosAZLviMN9HZaCmTBLj+y/MGIVQe5jufy5tjqbIQkDcyGYhU4tSEnZzzdroHuBfwHHdp6d0OqKvRpRZLAqxDYolmd5ECmoWqMwT25D+SSEfLGi6Z6Ezo1b5gO7sV0JPrrss1kNmXgUseYOXJ0QIDjfLqzd/SLu4AScZzn3WIFL891YFgZKa348pWBV8qdOqzdIv6/vArsYSVBI2zMOZmXqSnpvG+gmcTMRHPGlVDjcE3rq37TQSkbdoWiY0LxCCxnsIB+FC2Xz28ObMA1n/j/MuVjJn4HM2e5aDj8Pwl3J3o2VyCDhsNJF86/acgclqCat0FbrrZzVYVleghdGfokeC7PNdAPv5vvL0a+NaVwE6qsCyLi3BFaR4sU/k2R59Tcg70MdnqroefpWB3RP32WtjH8aDSF9y3Y4GKEvmEbA+oG+e93XMfNBdPVdJMu/q/RDhX442PXtmqKsS/qYxSMX6gTdklfaj3TnTLu1C31qRtNzfzPCFaPFUnG+tSDzmzN1FNatvUwzS8u//3EtRd4E2rGTTwnoQEdw2TPdVTXilDgqAkKgDNEzMJldPERXcZ+cosLAIbfTYJZN4zg8rNt0FZgI6HsD/TQdtVImDu34WznidJA4vQkLYhDXj5On/A2M0CDXaujuPRZQpfLc9C4++wwSK97vOojT7X79pIHGONTC1okolTacWJtSWg8geNuXElbbKziob0z6SnV3Ozim88N9HSQOKPRqtwb4KNFBzHbWp++qR/KtZbc3cxAzbvXFhQxiOb+ixyMX2BsY93mk/aTG61+OjNbZmBUJ65EYkpvIzfDeBTrIfoSx5rUrO9+xO3cS+z67mPd72CJ6/o50iJZCxug+CXhFLfSB2Pm6h9fSaA6e/dCwejVKT1s8zOZKeXLaxtxckV5EnoQ2enz6LaW98x69wmmtuQP9c+vcm3RMUP0GSGtgJt7iTYQ8SEemOHBkIVoCGNYW9ma7t+8I2EstK5vqZSpgUI+hTsIVNVI0ZZRZUIi6AMDhf+qtu4x0Ny/4hINgHWKxnEC6BpEPclSpi/FqujpC/EgBF+kCxEsHe34xoRVq+ZT++xTiMnmFLOp1tORdpy+r5WZGZmJt9g3Hq1srfztZDfjbA5H+xRwVMxOGL8xSA0R/cY5xXWP/9FOX9FboxRh0l86DGh+Jt+AoiSKlueqPaNg3WSzCYRgwefUbEkIl4PWBQldo/6iX6UXN70Xd7ajyracLO4Lbozq4eXGR6WIbNYdaEv9i1IOx6m/atbBUXS1NY2Dlpz9MVQ1HupcOYML5ewvk9iz9YqnfMJidauSDM+QgRCmrA1LKv4XbBIhx/t8HDs0516qPgUx0OfRpw2YTCRYIzTRMlJwwpLGCnX25Gsm2TZkU/2xv5feJR2mM4sOhDMjIiXqj6LGd+QoIDhHRk3LlVdQmjMsNbH8N0wh3yMg7R3bEgSzzryW/A/3KdtRrt93w0PfK7CweJcvc2v2/OOteLKmuMjJc+KmeipE8c3rOkPusGhf0siSfH6ZDHRtmo1baknjtvpTTyLRiveMKlu46jICLrRT7Gk8Goi2eyIvlmr5IjXs1/oYTcZfYEQyN8B+ikHDl8I42k4XKq6GT7K1ONxGnalUJY8xtweOWsFx0fh/WNY4AlvqGD57BqgoLp7qorl5rXJp6V788QB6LHvdct3RtQbVj+vzRCAgzssfCBcMgFfQ5FzTmDszVgY3Ph+Kzbn3OcyjC6P9j1cp5w+I8JH7JcPx43NLMgyHO/Qw6xzoAX4Vh9cATSH3LesOc44zkSiAaaUuDYnOjv6FgR8UEB+7WYlZFh+skDn9ssO19HPZ3axUXlbIDnLszITnomulwdpzkdmJoH7jOLk9dr/ixgfueMV9/YPXZQQ3PJsVYd9n3pWBJpgKjMt6XzONwPnnB+X4mym5/Ec+XBWQ16gNVWj2jeFJjzTju4rORJkU0wKkc1r0q3OJOeq197gDSOpBVE69guu6s2e8Xj3V8yBxUqz+ozQIsk25qVLiEL05Oz7rAfmnK+8oeEtVAGBSAxCWQyqdvmBJrp8bmFZ8S4F6ER8c9rWB23DUq59nRmKFq3NEKnVlN0K1cLeJAK9jEC52KFeHV2LNXz0KTvDYJl5Qm/geAq+NcyiF9ZyKr8eDyuyhvR1NdmOZlTRArepRYDv2OFBtJjA3h5Ee9q60n1f1Jcf5ELeWV+XCzVN1OyCo9Hl44ooRToey9JDglw9jN7ym+BbRfyhhbrRNBa5yIpqrnS6gampjhj1+acoNcq4nXBZHtdTTjq0c4Fg+qUbwZZr2WHSx9CCJxicEUzTk7sC80jWOT9TVeOiie9A1BGd6pL9fsVCV7ZFsHkZltlpk71PGzfRtBwJGjUHWD+3QqSJtCjZVucyB0svzec34zsUV2verqiZEkvflHst7M1vTIMKpJi0H9hQL3plQD8fo0KVRyhCv7jwIUF5gdym/d3OQ2Ar8mA5/bBZIgtO8yj+iyGcwb0C90ZC+pIGMNv8LT7mMq94bB5WeV5hQc1ZYgPO7rmG7q0bFkINdNYo4RDupwnxGI6wxVVL/B/EkJhmIO79KsRfU9nHpPD8MAHM6TPlwpOPalY1KprZ4ULr4cbwko40YpxSWboay0YXo5WFQ4c/51uAef1GCLs13KanCVGPVhqOqwarvRsz1ATkbJLj5Zzn5jH+emMmEUxW/Y0GpiOeUmIVPQ/IrOe5X+E7UGejHf8JSGwal5zCWvpNFXhEFYn1c4RYA62lUfx77pdJ9vGD3qpsYULmiNG8AmDzumaYiA7X6Fji9/KlERfG1N/Utcogvu9CHrzVh2f8/Y3NytEvFKsDWZrn7o4OrnIr5jw6K5agy3G6GJhgduX2r96S1/KmEHrSHfixOecOjPXRD/27KNzuA4bETV4/J8W0yot7jhZJx5bw7GUrVrhy5ClF0ROtR7f5X4lsalr0Q+2u27C+27F2MXJlrly5fuUNGUFI6p8NUPhfW5QUlVOqBQD33078Ck9z9RopJ8Fec59Fl3QEVZyKCgeBuT+gYrBnvAZPl5m5Wkh2orOMN6gTUHPuJX+XGy23vu87NREyQ/lLsY7+AkMhBmo/knomMxxMb2k5A1Svc7S8o/zt/XnHUsCi3yQbTCeKTUTv4KN+RzW6Hc2/HEC+GbClOZF+v6GEXF0bU2OlezmUxp8DmhbY7lPGerthwLrDWnsLffdG7see1f1ybvNtaSra0qcxHFoc/U+VZSM5/ZKBAfgNfff1hmjrRRVV9NDTwruBUtT2onZGC28dZ4+Ptk/2zHiYop1Oy05XqKv8/3K7otbF1f+Mby13nDQAuNPfrAJCnrz/RSMVqANR28aed7GUVYxAWYhEBVgJ1sjP8wRbke3Ab5njBowWB0MTbx+snPibPiGyJmyLw3AklEWyJv+VI64kyioRFsgrasGy1fMl70l9nWYnSx8XbxAsCl9bOXsZktMGmBY2aG3je0lQYjTITD6nHbeqzvMMPiJSOESZ+QupR8kBDnezydG6ty0R3odyV/TNuzH6Gr9aPkzf9gNNeRAquvBYp0/OtmizxBOQ6IMkKCCP/6X65nnfUe0tM8rXhKZTneLKm/E7MYhNhC2hkSAjr7MhwHh1UAM+NGvTQbIbm0TwM/pm64ICmYGDtGeZrZ/AMPPr9TosZe67qPiR04Vb7kqn+XtHlyUedgHGptDyJ2ZA0cQZPuJfdz0q8INDTArJOyjY4yqHeW3TfWMSwHh4fUbLweLI/8OMP6q2g2XXWg0THT6PLiuw7VxScyT4KDf3YCgg7QQ7TkbpLcMcJd2VpMD8RWu1a+Ze89mMeBghtseFvt+PJRGtNNpyAM61n4IeiZIU1OXWxk3jphpUcUIhy6jeetn9dI5JLcE6Jx/l733QGWHzrLjq4IbhhlZiCDpm1WBAxwo5UTk29sbSCup0B8mPAOg7hX76JtSwPeoDBc3K499IlzMPlZSLumF+fbaXrLe+/03xZYF+u3bqR9N8ACyNdfxC95YBFyIhloYeH2Ei9g/jSlTYsqS47c/r1HZPwm+E2cRFQ0qamgzB52i147ofvzHWmTDCnMOhW+ccJH35FkXMJGSz5r9/3Q7D9lsx1qO+ngazvPrqRhZVbTUqX3Jvsxv0FsxzSebLAEQFt6FCBd0wnt4VMMbzeQGkmpzHUPfSB2ps1nZjd80i0MIKmI1IU+zsHMrjgLWPZlyPISdj6AS/l3OHhMvw7Ug+ziXi4Rqd6lGMeknXyrMh0+XI106NhPJxrI2HJxwebqH2zl1aRwvjX4CtuLTcHbLszKOUr9DsWLE8XUqdO1gkfhy3lZvOECErWbBFEnu7INeK4rWlJM02cie6v3iZW4801TL5V2dPSW0XWNoRZPcUzTlvfElLPAP1msPJl1tlAe+TvyDWSveQ2chiX0g9T7B0U90BF5uPXcswHNGJQQObMYMbvdsSiXrfvte5JhiREgBcEIm7PCSeb1JJXz+QCJH9bmcrCSO5YpiXXI1TWCl7Cs/Ayo3qy9ZtyIHqe1k3M/a1SgvvlgBbYdZT+CWZDHg3N9omVqpUX8rW/7G6fCOU2Wre8t8Yii6+qlE/bCnAEanhGdbRsFvOMMStWKs19Wm+j/IBRnRHqVo1dkaQTtGvnH9/WKvHY32wWR8T0rylou3BOpzxnmsjtR54LwrOkVVnwvAqG9qBrRY9JfCGLeN0eWc1tFDbhwDPbsdtbA0yjIHoVzLfMk+XglwQVQyxSzfmK8PDUnyIP3bzR/+Fv2wWWUIwOYCyaXLJTv9wBUYAdrCS6wdXNepBix1yr9n3sljOxRq+jABub8Mem4jYDAhw1EKukkwwTHjdpfPpJ9RvVyc2Ru2xUzba9jbHxerN5L9a2Im9D/pb943Rr6mi973BMe747QmoRxIdqu2ONGUSPBQ6XYyPpxBeafLprvQksg1gMuVzCjsnhQ6242i2lRjfevyiU9d+U87tYW/KbJZHVN49ECBR1ktLwTW0MNDOSNeWvPggKtnB2ksHVXrygo2t309/to7sidnlSZNU3wcxFQ3Mrsag4/bRHgFzJdw9f8gMQOnkCI8UV7LCThrAZUPiURohPlfZWVAvlihZHr7+BqsLtKW9iJThAhuuy5ik19hdjjUUZuJ2HNgJkacOOlmnyC8/TPOSI1eqKs83K29HFq4yAOffFa5FECZGOM3K/k8D6TdoB3zGnaBdyT1y7wws7Q26mPXrvwHtGGvIKYGW9/ZaeYLmhqhtwdTjm1ZziGKUaatY6xGpu4UFCPl429JB4COxLYkOKEvNBOoeg2WRqxl1QLb0Ye8QqhIAjEzJZyOwOIFEv8UDQX6pYy2WOOKY1xI/hUTDML0VBeA44TG4THGJzdo5+k4LwGoanjXAuJ0lROYnTGQcHwGLxFB0XaJuJ4f7mVzggh4NI5oQ3tcM3ZRkHovbLY3Yfic5syU4iZ9KiYxVnEYyyR3N1uJo/DHQXjmgzBbLJ/4pe0pJzAQ2F0181FzRW1wWp+yTRvr5Vx+ncJcr/TmVwzju6L9db39UxpJgfdG/u6Gy2gdnAtAxLdBC6S/4RW3XS2iLcYdO3yGm+69dFkN6xDfma0/k0X01krZbvcBcnaye4QM++4MB6m9vgDzNUD0J6zDOcl8bKVVlnlZR0fLHsACOvK5gZUJtYOWNFK0Iamc5D6Q4ULZKQB5vE/93LLrE+5/O6pKuMFbofei7JZqJu5tsEhiXnkuC0JFcEpbLQ4ZXYJ1cLE/9rtf5h+kV3AvwmNWYPSyt5jEo7T9KBcVNAfDeAAqXhuQMq6Q/oULcQ6cIgtwmtn64bLtE4rTFquL/cXkaoG/hVio6px5RjnpHipWXwBXY7Fr+t1xHJSy6q/CBVaM4DjZaCqk1iUs56bz1o407g3kDrEFvnJRC7aabo20I8HAlyPmXPJOclxLNrH+tC8XybQMsAV4x7nZZOm6DZo7enMly1bMyBKEDIeZkjx4DhBuThE0N9dYUObKxT0pT8Fr13oKJgl9dO1v9tcug+ZIz78rru9Eo/iyTNzulBO1xiTyDlO4AYE17rO3e4VsyqRWQEcr5zKj9rCC1eTHG3S2ClejtysM2OB6tdIEgX8Pl4ZfSVEDcupgYSM5sRSSHiKRRP4xfTX11qhYdkXWIeDcN6ZOAhsdsSsB8oafOqRTrxwr8UnVUKGNRDMcv5VV4+Qp8nG4mR0F7o6oiVOHdFwRqPpyUcU7axKpaDe0+hDSkjsGMl5xZ9YhQanGKkkvKDzhJ2UhVkHYXjLrcbauH0hkJBjcDbme43Z/UDtstZy4wqZtMxzXLWy4LVu8CTB4fz7E4sBDRn35P2QfglP/3c46br2WGb6daQe7nY0o7VUOoFv5QQYdntkMQf62phoMmaa7H1qDY5oHDCB9xCJrZo8AdYS+A9bDlbKydEBCantKLQ51wcfXiQm3S5ngNYyvNRXR7S954cHzuxtW1lppz8RKXCwmDY5zXTgPGJEgydfcKXnXXymDkVfguu+ZojLoRHM9mS8UnXMNGpTTWb5YIluqmueraoUWDZgBFAFn0bD1lNed4qcsOAWhlyyZIZMJ+B3gdmOZYi+7JCt14W8zeS1jsNyiWgSsX1yY8Bfr+wrLG+XgXI6kj2fcE32Je/1jbSkrTYIszXpFf5HpavKd+dEKlxuQcWKcbezErxRX3aVclMXtmGjRIvWp8HWwYVAcK5SqhZkwebEWp/A90r5m1shhU2Q6ny4gWO4lidRx6+vP4LAEuvKZmWK+lt3XTehWUY8lwnkvI7DkFs8+nN27rl9CXw65295f5AICJ8B1z20uGPR9tE/GErCD9o5Tiysy6FxPkXyFKGo/DXf3hkJqIHM6UBp+rhOacfb94u4BImvqeUQwxBHEirXNBk4eURSJZJ8mskwCcdShfCrz1LK1YKt5hktUeJ8D39EeX/zwqRYmIoFWzIg5IiEzTk2xewKJhZ4KxUCXIvg+VIxyCoI5vKcM+jL9Dyfa1+gKPTwMsn91KschNOuXQmhN7IIumfp3dPUbc18iqJjVwDnRknN0O4S5+nzMdFdddB4X4MEu1Zc2q6hdvn+KPPutwPJNKo956LXDq/hGtcDRkRK2hUNmbJA4hobUxi2RSIGcWjME6xFP7hn/szp4DsqKHI8pa7so60VsUr65uput/1hjrfjVIpWeIiJi09KMXbFDw3xrbNDPB1WBR5U6jrd4L2mo2nJn3aHZWFyeuy2zJAdfJmYeegoNsj5CPmDO6JyM8jgHX5/uqISHKRt3fdAXLuVtENfmVmBUdYZUNitHLpCXiRCAzxasUYHY3/c0QojE3A+4PNdGS/gxDrI4uYQsbxvD1/8mc3lJLN5RQ3+xbwpUmupxPL8yEQYiTsaetchYkZzA1sRDYy3QusNR4sYUsJSWcn9fRKGdrn8JbZDSIWEFUO4o9mTJv+qGz10OUle2IIm8cNIWxEVT8YHjz4+NCQYJXfMtlTTrykhWKmd47SZVjf95L+BoQp/Y2MllDgQQFTYnCwrpJxhFSewN820MEaEX5OiRJcW3BQNLNaBbxrWufA6VCHqusaYg0TkMnsrHtTgu0q+eG8VbbNys4DcECt2yIqAikV3z9YuPHBMv6+lBmwVWqDOYRrj+p7C7jgnGpNUUO+IeSt8JYsyUM4gJCe9NNaX7L76FkrB19j4kHzQDiHNiSQtxtPTYlDyDytK/XHsgGy4d7bGjiFtaeTjH8H9yFfPv03f9PEP9V8Ma+Z8LmA3ZrweV0DCt20KMvSsf+Yyh+sBY44PHv2MeDltc0h5nswUOAKYzW5RDsabqivEcQ5xSdXQdYJV6eHMv5sQ6MrhWUJr60zS+Mg/GxWSplilxLbV0igulpDcKw2EKw7xxp0Lk65hQKJR1ouoNnVIDsVkMJUV92nDVt8i6fCxS3Yg5ExBf54hewilnKYiiOPp1/Ic1j3/Z3i4lcMy4D1v0IJBYa8oyhsVa8p9NMP8yOYW9amWEBkl/FRfgB0LGDbkgEoZs1i4RBc6tfwh0310lmwnvChX/Fj6fLflHTRWxIeDPq8IeHguvhQx0vZNz1/7kV1hyA88qJmElJVqUxrLIRZ9HXMYIXNMLS/yfmkPjsOlq9onUcdXupSmsYV1UME2wj4YntXSR0jibZLSP6gTJUo0oDNDd3+gOuRtyI9jS5tbtLuWBbc/pNBYqacH61B0o2rY2/qjQcoMAUAoeScsaCRrcb6S7hMRoes4Hl4rEqHcNWOvhRl1DwdDi90Ks2xR7KCbGjXImuwniZ9MFSWIMOZ336HHpBYThC5vRoz3pQ8CL6rxU5bZZLrH42mdvllApmWxGoGnR6hYgaid7MBYGD724BFyUuzBpRDVz6y2M2sG0z4C/EVs5SXud6gZiiwBlJJma3b+MggZ3mDI3PohlhUa6JBexDzjePBC8YZeffQYMjA8VBwN8MJk4QzfIW47Pgwlegl/pcS5GzkDgA1BdsNFrcjcMbaofePi3ZPahqn5LCae+iD0u+PivYphUze1RCzud1fD/hZFIXl1SopZ41ufQ9DWpyuV2hMXaTksxBzEUISIKlLLIHVGruAJNEt8kOHMbod7IxLRA+vNxGTOwwJM0bX+qFsypD/6TsdFEnaTnUIQdl6YuNlW5XTS4pNFemvHyIFufeA3uZTyAhjKsmcTHNIJ2NhAYT/A0e9HYHzUSIPyFjUwcct8Hzltn7i1qnhP5CdFBwgGtUdb7W0rUdmJnB6/SFb7jtmsU9yOqeVkgEQxZmsgn724yT4brMrgGEaEKOhpqGlxFtmRLTaIzI44lM9FB0GkGnPYC85OKy5Ojgfh/EJYE9Be33e8gsyXvYtLqoeIotu8dlRNJStvWHaxrbPZjDHL+m9J2sGT/YeWEUdo5PWgzobiAZ/urv2kGBsxPxtfwKk3HHi8+dG4nV+bNyZCJ2WmZZw9AbytzQQFjiiiC+ohpDEqSXkolzCg7gQnNdy1M8LDTXMobWih7Bg3WreqsV/+UfCAE3KroEOSEGDYuZz3aPN6p84zXq17t/ub95z+g191niGeO3aq488n1osWtxc4+Wb5sAd7+vdGNZ5jLsIT5Bodn6Ns3MNm2KELBdeuLsFLL+FZBkHt8SzIuAAgbyZr6oKybb9yq82W+AEw76b6Xs8nZGhXpGTVk7Qm9sM7wz4qzsBlTjIpv7ugQOZZysMQFP+xQPD/70A5hPWa/v83nBDr7T/q6OLi/wV43OW8mVcv5Ial/T8C7j4YSg9rj8C6fQOaJdMjaQ1CcG5KlGyKq5Oh+dIibsubI3+BLzDXpxigPdizzVjx+Q/FOH/XyAPyj/JawwzQAM2nrYhnY6EVnj1v+LKE1dfIvpfwrWeeVE17uTyFeXR5/BknWSvZpHxvXL4stqPA8hsaKD1051G2BQT2OhStGVAUh9lX0k1QQJ67HFkCxCgKRoWBP/BCMOUlGCIp0lyZoI7v1tM7ihOPMtspOo5CEsycROrplj9bgypJRpmzxQZVCilJUj3JEp2gUD1AydUENMCgxYsmZoGkWcAKz+hgb4FhHDfpb3g5DcWqG8JPnqOYDoXdHSSUhLjbImEDJpfmQNrqeBdRhqNDwV9cQoT1Fl68Vq6lJmGByENfc0OzfYJ+nhQ+rTCy1MTQUXVZOdQ0FYvFPR9jtKoh40SMTiUjTcU1LwG5eqJOmOM8aTkHZAgMMJt1m5FkV9u7xCgWqFz83Q1TSznKLa8JhrQJ4XXR9ahWGhdfmqa0PhTAngdmIBaSH4oAkysUUsjDj6VhvruPVowVtTHpI7uSmLHiQ2SIJJlQ5d8I5zS2TG8nZozdjCPF5jW8wCqe2P7ntyCBfRrrcqaWuaRU2x8R6yNrPROQJQrPeDHKX6qmaROyX1ZPVjjmIy2zMKc6RMxPPQeEixvoOsNoKX3BFJhTXLFsPVnKUipXDs9eLtpUSUQgJjfsmPX7HDuABHWTegIdkyMytgvgBqLXQTZ+lCi0ijZpef4pdO2PvlNkwD/ShVzZaNJAXeShZ83sYFFTsbJMOHQ2T5sFHiGXe7j5TDywlhSuLHtPt16Ei05Lz5AlWZRTuriB+3bi+kjT6Z7LLEofbIeUXfQQclG1EPuStarZk7/EbgNZEkP9EDr+S77lDS6W0WEaFvfbl0zazTMlU9wJOnvrQhEt663ETMFmmSxUfKrul4KDDUmBZP8XDX76RM3sajJen6ftj69NTVwGeXTeutgwoJTv4VTnnKsCfkH6u9hpVks4abLjK2l01c74e/lRsoyMZHvP0NkX4X1/BiWBFtivr7h5Q1a1ZMbBWfbXmkZYXW2KKvHfBv9xw5PqckTZM7LNVY/Pv+Vtz29L9ch0Rdqo+wNJvhoLnA9xRK9F+L+nrFUiSthHzEgJKYs/r8QreKDnvThfPt9BG8eMqrG+gk3iVO/tmu9ipcOLcKXcleE3EWqb9/tPqKrbYNjGqXKsTII+4v1XEda1WOhk3qBJO721WwmUrr9kWZ9uPh7E7QmCbN5l3amt17ATdcZsJmk4DWfoyTpc2bl0zAMgWa2YnBRCcNJMsWf5DibieK3orPTlpZVP24tyDd6r4lJWl2ZfVx0jW6Zncjsom4aQQ3ffQTmh2WLFEuNOalwxA56AISeSvl9UG35KQnIRVMIZdg07RU9lI0sFAUD4Og8oYz8t8Aw28VQlzyCm4GJVevHTmbcn8kgA7j2XXcJLaqvnc5+OXvN7Fezf579if5Z8HSDUvhGazONXVceHIlp7yMS2JT1WVgQdfR8mtKapDAeMVbyrYasHBGBLLoqNWmOabFeAycEoRUcm4GR4qkj0cuX97UwMjE0IbQgci1oCJeP1WtNjR+4cyx6W2I/EcHrvXB7htL13CP1Uh5IBAWq8eHqFTew6pCxH4QDk1bH/qYleIVbCybyFvOJ8VhN8rWIyE9Jcaz2UoTm912Inl0DtUHQN2op7YX0Y+apWeagvrVRrklW7Q7LWx37Cxa3POfLxTOkX/ohiXhCqWpP7fYfAHQKlyDnhFtsKmVleQ2q6QlBanksM6s768N22Mhlq2qV4rUhsG/eM1e8idmf2txSWb21t8gnQS+bwq63Rri2nbwvKU1olFLP4UJZqVzbQ2XOcVGrDBtjQUnEUI0OzLinEallx7I0qnjl19d+se9CIA/B4UKzlsvWbpvjvbWRhu0c9Km7V8JIwY5d5P8yJAxXDQe4HNiyLn+k/nDCZHWEyahijcpj/lrdcuCW68Y+w/hmzbgputMsOrHbRMpfnEAJXbMTM0vyiKkK5kINl7N/g2biciFrxJcuUER6F3tczQP5L/HGd3C+0Y5DZPzG+ZcfGrndKYvm0hFm/p20ySXtsUj7muBqWxa1kH1dCqUnPbQ253WDAxhzjnA7yS2vNbCXmunQYtG4X2E23lF9zR1RRbb4qFjL2WUFlfCviIP9EdxQNLxUyc63N9zGDqGUEFztiuLw5OGmTxYxBVbHm2cthNx4FiPN0F383bf50FalRfYTddOpGXqupGduqyQKk7x7MmWhP3kpe0ld1G+m3hYAnAikukLwAP4E+uniELjW8LgwdMLhGCyjVy52mZGzSnP2ZPkvTUedFTb3XFhZhVx2FIzqIckuCOKzLPp6ej8Ums/9H3MIke6IITsaYXR7hjGshhJO666x5BWgzy3sXfUVVbNrudFzdOw9i6ryzTTF5aXDXLMS0o+Dq4/yQhezFNpqE59hqZl+aGca3akH5XYx/cQe1u/wZdtFHJc1yquhxcRFXchjzfnaWkxIHv/B0VlmCRgVqgihtjQvR0m0eQDc9zk7cJ8HYElSgGxL1syrs6PPxdsgE2JM5I7uQDptpsWPrNs6W0uDcNi5d2xtngDe5+XPgDHvl6G+4yGBQbVZZWk3odW6qYcKGpVMqVLD4+stA9xfGsAvUd8ywrXLADZ561Aq/ULCskjj1y0ENuxXZkEpzR2qfPx/poWta/t63vu4/YBESMUykMXyoQhbTJmZu2w8eOsI+eCAj0vT5YW3jkSj/Qw++QB7S9mlceDHCNeQA2F+6whZOwyQ6nEClPNbx1BAtI5LFMU0vRwqIY5NJw7d7OwECO015uVP6wokS0iuMCmnsGTSBq0VTbN2DLoHLM5+feLeI+a0/gxxzG1MClE9xqYPj4Mowrk6CjTFEakkFqemSGylSiJyoIqx+er5h+Skgvopl8h1e3N1H2Q+lLWgxLfzlzepmHNzCl8Hmap7wfK9aP0lnfa3b1KhXVyrEn9bqf9XdO3sYcLefoxvX82Grb/L8+vwoYLq1VupIjsSBpY57HTWYt1XOAQ6vcgTOYS5BUEFn6vnBSQVVCZJ/4b0Sq1qO7az9jqxf4kxNLndRGHN9vTM3MDmhOs7C/N1zaFhmo6ifHWzQVl8XhOz8lr1NHvsQKWtZfrQ9A0auXO+t7vbDiSipKMo96NqZ2GBuqE5yMM/LxaDEcENNLua5CgaUbQWHTdoyUOOxVB67zXZ7k9pan25QpKoMpPWohatd6olRWcYFBWtTeircqQhSiii6O1kI2VvnZKTZcZ0hlpAIvm0xQafBk1xQJ5y80uViw+PpJ3Quxp2JbhAw3VCljqnMCWnOSHSiiCEvL5uijcm6bXwdFUs3BLpfe1QV0Gx0E4kMqNK45KjClBdnBdoYlRV3Wxwx7zedv0G6Y7cgpuD1xp/fpV8PmqvVn/76Z0bvFoMOqvVvoEXzDn4OfXMBFcjItVZFlr4OHOOfZRYWq9YgINXMAa6f7AWWVuLqrVOEi1Cnnx4BwF/bTf4Uz5KHvlAWFMsSZViaWqa5Ls7UiWSIOAN8hWHp2/Vnj+VjDjWW2Ipaj80FJVVshKWfdLE6UuVObb+2EgU5HrHaYxCRqkiJQF3nXIg78DmBshpf+cS8oBl4So5GRTClhOgVIkSLArLZSf6MFnkiNgtttZr9oXsId3idFBPqG9sm1u+zUDOk6vqY13Yoezge68hIH5cR3DxYHEykZCjzi5WINX+Bf31kQ5TiIxJs7KLea4bVZnTznkxTFWqQhzYm4vLjNrxBUWOiW1Ge84GVevkWnNrIg+ExAAdzhYacuKAVktWzNjwRP2EJ92TTghNvPyxb5e4oxuAvl78Zs6pFLmT15FabhjaP5YIWkXkT1tl34kwOVIdSnErSmEZUi2Kzumm4QufNo4/1r6USuSWoXwCgTJB203mlIBnzCIeN123OZoLXbSPLFkLzFkx+/L2u5f26L2Du0hioMpEmlFV2phv6qTx/afAqKHnYfUWBVV5sx25zjE2JU2VDA1TsXD6RHUIluZ0Dldng8MV/ihTXFlgMTnEyb0z/nbyf6FQe57zrTTBFq1HGKD0m+h1LzJ2l1ilYF18jVghlUkpX4To6aei3QubkiMHDGPjBq4Wphc0uUXr54L0nl3xhMqizEFC2URB2ppZbs6qWWMJfGIw2SZep8Vp4yERGhpel6iTFsbn6UiaFGi4mo6PTNJy2bzoWDGYEZ3OiSUXi8lMbiYp7rfoAgWxZJAYz1KBrsuv/q87dOfgFpaQrHMwx7olkuyeOHr1YRIweOJ5CMUy3Vo0H50EP1pQsmIXU7Lkl7lk8oXG463W4hyhzgSFZPtjzYllCny8TUfVJkGC5HSsOlEq2LNp1AmxCF7E8Lb+59AtO2d7yhsFhGiU5q9OonVki1D7K1CDqzQTyms6BR4NhBvLNNDXPYgeTdJdUR7TysesK7vqEH21vvhppZVbF4bPSxXMVeo4HCqODuSLACTNJ29M2tpCxAA5nOmCVM7S55XrsRkWvZhHI1IzOMJUL+1a+2Z1rLumlhtwWAOA0tJ0lzZUH2VyOLy/+6x9s/vZS7UZhwzM70Bpbufi1FhwZ25K95sp4cTEzIT2ZiNeWV3e79RzReuOZ1JmxqLTnjy94XOx1u70rXbn/XNW/EXkd/05cS1+Rb3ftgfSPGVdKlOrIwjV0/LZY33c/wVORvXyWAFpjEdeKzMARE6bOhytKSgbzlZyS0RvnCBOnD3e5M8Bd3uwjYj8PeEFH+BzIh1X8DeoyWHBtMn7vW56j2XAwQ7zC7HG2ym+U991/4O5Sxm++v0+HJpW4Ujfpu2ZNZF8duxJd6Wusbz8tAtHfuRc+k3Wvg9PhX/DX8tD2Gqvw0nwQtbGk6FuV6IO8rn0wubbuy502bxtcp7qTT39pHfGSUBS+C0vzLrfeORZ/WdWwktC1Nh5kJcQVn7MhwMBug1n1aiP/5Kf30t4GD+a/la18nkKcCnALh24XyBuvBLXT2O+9ioegEBxWbysyydGFh8TJu5JC5128wodtHf3lQLPWpYXsgCIPC5d9lo36yWn2t1RGejTnkofALqhqVi776LDQxJvhhUyrP7cRx1xFvj+zWdW4R9xnZJ+66DyCWtV7WKbcMuI0EndZ1g7ELen5f0Tfj1hX0eDB5khoUnm7/iXvyfa2zFn1maOXQb6xpqqZWI6/ohr79kY27AOPrc9vWOlcnJ9dN0m/OzWgNASWY5rS6LsdkXdv0h0PJ2bqzsL0/LwJI5SThFFt1PKqOpHmteSzpo5iNOx8LTeqNS/86UgrEmzKhXSHeGcXG2UlMHR+90sbP/WtLmk+N95xHOLJDJBmaQUWwZhFay8a7ckwwLUOA0kZRk5KyUfaLEi7WBkFJZc5xouyLbGSBm9uNAhjeTrEboXS/xvX02FM3hZhpAcanQ0xFyEJeHJbd7xisKqGC21Hx88rpJDkIHjRfiYC5ar7BkAAmcBBE6kHRe4UuH8CI9TqStRk+D4tUxWtptiXE4wNinbQZ2WuB54eedpYKEE3IdeeieHg4q1jK0Kgb33S+3cgBwaYYTnoNRxMbuxSWFYpCcc6MRhK8mFvmXfKgx0+nHWBagnYvGkx/xPtjuOiq8lgSkR3tFvTnRVbNxQ+F53DnjpZDXg5zpGY60NB1VyAC00yy/TS5q3LA+WwdlVl7qXx9ojzJmNR/pkrQA+7Bo7DTh9XFHmEp7MyP0QkI1xPZ1H66lq8N4GyVV26bYPANkYu5+ehskwDjsnuev7D0hlSiGxWXiasZa650LwMSgHiCXTzmwBJo3fpPS0oi4Z/IF0+95JYjGrPnw1sWS+9ptcoHu2hwqnFXLsU11lda61QCIFgJjMFmDe1puGcYFXkD39obYbDj1Q5gC0jnW89aVxsbyydw1vCNCCKOfu80rMHMrqfo7z1VnJdK9v3HjybWRmtxkFCbDsW+gDZq6e1s0LvGdzUOm93AYsYPLYXhgpYnSX1HffXypibuMwXat4syuDvdD8r5PU3qpMKiry0eGuyOEaSqOlZQS60KEPePGkMQ882ybU0aBm7/7LrOCw6SN+HZwN7sf3t7dOTuGcB0usXFh+8KEKELMnvLGgJgMIXn7347XAS659veHOq21AAoWhPVzA7C0kdz9Y/8LcRmN7lod+MB0sv8tjTFTb1nWjrwdCFo/cWvHn22DqI5qa9zQ03mqqvwMNYBQg6OCY+E8retbeKmzMUR36KO4j8+yZELF9frz8+QfGTCP+IrCw72B45Z3TUYUYZ4td9th3JZCKEvvnUQ7MCM0vibiRagcmIJgFTJncS2wAywjLnz5zbD36QbG1/66wZaLimwrLB2YvPsgbvLdD8hR/iZJaAbGyH+eAxV/bMCXX3vam8buzY5N7tOaunbmFrt0y11pgMhOABpkj7dWoceyONN12x4rtgFkOTFr/r25R4D2nV/QeD8KIdJeW/BsYKLH7aL2obaOsqmsFc+W4W4tnYudqNw8TCPYC5W4szgsEh3ByozeQUa33qlTVb3zkt1pJKYVweSQrBC0p1WM7lXQdCRpLGY4DmhoY4oSsyslQ94gomY9OiJPHc8LxUoMB06cQsxwH426+zKdO2IIf+MXQD7AlgVbxCBYFdJX4jEkHxk7eTRuJYTjZ/pFHHqh0Y9aZ7gAkIACzGDngOPSVjGeRG3dk6N53hcFugM36gPyeBxX6QHnM03GKcBZgP58Ne42Rk/rUH867fDZAog2X2CwfFHj1miLABXn+nG921pwCOqjCLzjPhnx15ZlvCPVDu/0znpj5APqAp4vNXuF6aq3Uq8MGPBclz7DLjppgxP85QcdCevD+q3bdSsenAjod9WKenFTqFBtUU3BddTXOveMGN3DfUDTk2kVmnFlSuvVGC/hG45psulLI2uJj8UkyYDlQL+i+1sB9XV2XY/fIb4tDeGnE02R1YLLWVcWlD2dgOnaGCpfecQc7zZ1yvn7VWpI6kRIBBXVy9McBCcnt0CSnf1mgVREmfYu7UaSoLJmcV0ZWhtFq0/PZhhK6UZSlhwH/1w6qAEAkgPTadLuTHadR1j8r9EYhSAlHStwGvAM45OinBau9mOOC8k4X6Y/jQooG1G+UBmfHdG/o3OxWOjh7uikbPNecBfYfyrOGrYJ5EBhHCIEIRFAojwssaN0LN64GzT6cXxB9Lrw7Mqu0oLD/cKuALVJ7Pcbe5i4Y6hzlyMH+mSPVvF1fX76afIooP7T9Mt1Qsfq3auhDISQ8fiLayPBM70SlQmX884Lnumt1c6CjsXGd0VCWfHUK7phH5xELs5TqXpfX+cuMGo9Eaid0ikEpDVCbijGzz1ZdjbHOuT5Kmuoil8QAS9TGkk7zOJkarZafbyUl1FUnxA/VJyT01ZGNakk+mdcKQHr+hGXMNcSulApSNmSwJvkUvM2WaaclKm6pKapfnxoUboMIj7Rlpeitki8MrKeDFu4vVLavztKgdZu5l7eFOomOPfzwLZZyDcDB40/yJvz5A2dWe8GeT1SUr3Z7YiXlKz2etRcM7PUaM+9x1IdU/30QW5UeQVSUcve7rpiX8B9sEzIKQXQgPznPRfbqrrGrB4XwlS2cPU+ovUwIQCmvbe4uA+RL5cl7Fs7sVQ1zQ2/kh2cO+4J6KsaGycSpwSpEqKuYBXNLeQQcfmi6PwYbj6uHPvkAm/nwSGcmak8/nf+mF3+m7C1eLhX0Q5BwLOmYCukKvZaaOKJKq1+ntm4CXcSe4UP5qJpGAoqdMlvIMPsnxmJQ6XqM1MTVhU1XHWLsSEp/BSYAXHbfYC8kLV9ZJdPIWve5U7m/4XeqhsIDnzNsSkmjrpYH5xqX1P2rpmzedsBQra7m7W3j66Bwy4gRWGG2/WHsuWMJkOPjyDodEyzFlFGP3jrh1xcCbuqf/KtD6GbOjTsF9IOX6Sd1AqsEbufu3iloPXiV8SwEUXpm5mZpVW5GS21Cr4B9NNfMrdK6nLTm6qSBAkdoJ5FYRqxD1FluosAGZI+r/ZW/BnV0YxZ3KgUeCYQb+S3N+HrZXxuKSS7Td4j2rsvTyu88DquY8ejKC/Pddt2YpNKCUvz8gN0PCQqpixd+QiYVgC0KTv/+P4BZJ6ZK2+Y9t9xhX+D2MRtApOwsaFtdev5wd7VT+/eZ8wYv/YCSIwqFDaTYiRzLuqUFbvmxqMd8gJO7fqdUgLLweAgUnPeooGX/2q2wjM5I0oG5n252v9xNDVYZ97OTW/64rVKUhx+UOV/Xgn87DxDZbw8Iu0Ivu11vFKRI+ssi/xAQtYypaZzzUO1Ps4JAoJz5z8phXQZNN2/DY4BuOaOpiJzQe99lZqVYJDTE15lmN1FSUVkKSxqWWCNWysNHgI3VlQzm8fGOuY2e0e2tz4zpte6htb0P5UlFPdAia0daor27sKSiWymhD7Dstevfgm1RiT/HsdLfwi7+v5qLeAngfFl7rTw3Nas0q6A/6CQIcNYn8tk+mP91kjJYmUkti3zGH/AcmDj7+S21pVy9GbGNnz74lZrPrA3feG21Dryz/rF1DLbYYWjzMqYhF7zIEOpirFtcPxLPjT4XjtGwubZ5Vr9jTMDycCTm5m9hxZe1D2N7mz1dBxmx6C12cdmP5Q8iZ/t55Rw0rc1jd2cROoni+/8rO+uaGV27c6iVDIh+cy9k6vORXoM8pOd0ljbw5AXDQFgEL2IB3FrS1cOmD3+ioxH/h6CqdPQoKVafSPi+zTT/Nj+PSyhZ5Jm4Qci8z/+HvhJfcfGPXOx0YPm1SXns5kp97pAyMaFR1V4k/QJd2teIstQ1aecXOJOY+5bJEbC7q0xmdEBROWu+FYVCIFQv9+e3YUEezdzilv/Hqr3skFuf7DOHu85iAxuy/gq3cDkB3LVZzwR3Jk8tms5apxtnIi29e2pGM45RIEUmG1ZrGFiM1f6+iZR1egYeY90VvXh/6gdNzXCpf4pYWldFVJ17PyYe8vphM/jbDf2g5TiXLnS+ayS3j5Gu3zrIPmEXxNqZzse+Zd7kwu7ZsGbpomdSznbs8P+egFlZgt3DlzZJ7Z/byyMf8t8+AT5mXniBlGSC4vIflW68Bt57y1N/CJ/u0LV5EdsIzlvqOg9bu9I0fm9+ZHyX1tyzPbvUs/sUx/YLGBAVCfkVCQA8EgB8qg30tNla/Ox08mw9blaBbk+3vjnJF6lEGiPgBamflwQCj2a5CFOWlXxBnbVCM7cw7X6OZw+q57ay+p/qGiESf0VxygTIduvOSrv90nXGL3vzB1fNzQIijvdHMshjBqupVQY7qfwWntxGx7puz5/5pBTzVHZiSWeZ7gcx/lZM8tW5TNfu4qUNpc5PeO6zGZy+XHgW6KZfA96vRf00BViz2nG+qT78iJrRMgQwZmSk1+wfvDt2X1Pj/jGNX5oa/6mbqcqM5lDo2/oUgJh0ygHnMUE/wfgKP4YhjgvGhw0S3gmfav5/8Ada8E4TS4SStIK9ObfxM5DUC+rd97AzuSkXqEdpdQUdQR+2eP2lTH2ydnBmt6GSNdfXPX0DB03pOgvztE2h4eMoX9NoVFGDSypfiWk5QgmRep+JwbXTgKAODcgoYLxgvsi864yUoSu2JYY3eoG4GXh6Yny5UCdy+lnRMjCMbHNVftT00u+bB/yKOXPcGTRsBmQAA8yM2UXNtI2g7bRX2r3FUGGpUYdVaZ2qtJ7zgvVp/llqBrdcx+OYdHR6pYEFBESI2cYyICQCwJFEFHb+c4Upk0Ft0guD3Op4jsdSEthKEj7eCvh66spls6wPZhEXzVyNQ3gve3joZPIDfZdEEtI+Cb2Q0Mm774g4cMyef854LsN8rUCNIFPDn7ByQfeooPUvuGo5ImNjwQDTujOnsTOHj5nRmx/l4wOFRpxL9lYN83Miyh2AtzS0lOC/TTswq8CJLi89GjzeABQLwgod4hndwMnk+MRh3XTX0rsJfeEPnfTEpvAew2RHuI3u03WI3vj4nujGpp3m6ANwC7Hz3vRo2y0ijn4wUnUiLJwZBrqfsmfPFvfHO9rF2NYrpl0Gescbqi/FFOkND9ayn8yWPB2t96+jerSVj9k9Qmk0Cs0KKTSco89lihZSq/ojo8JrwbBYKvpj1qgfpGb+8O5abE5JYL5ODbKmK4a8nUdyMGUplO2l7AZgqWFrPCHO2UzmYcFd931yyDdRuVVhwfAOP93a8qaciJEqAyBNdSWks5aAsT/LDYoT/UUkT2wlreX1vTR8psPmlzsifSahWaagy2uFLZ2bnUeYI2gUmvFM1+REd68OGJCrjBVUT7G7pOcQAw7zdDsCPeiQCCdBQyCgn2YnjoQV7+WcKQS7Zir6K5B+UMw/WP6/BfszgMiLDn/EtUsX2Uk+UrQFmJt6pvsUY+fEA/nSCEpPxNvBSGqZ5LjkBgPcvk3a5pWfOqa/dtiqv1Tf0OrUfmmqfTvkmXwDl6/rq++6cb++4tZRCW+0fiZt+/7h95Ubw+WnLh7bXNTGDUjA1/rgyomL9/chJqOPVut0u4A+HD21X2WHz9BMEcBLGTEXGzbTCKxPQxmE/fyk9ZFrmz+b3z003hHTE5MHz0/LzbOhZ6MmKRFz6W8kBT6MCPAMNtxma/V/X8OA7WLGmDPY1FrRiZGJ+sbJ+VYIYW5Pb0Bsrubxn5MUTCi2PFPE7YKgo9UbfYc0VFmivoiwrz2odW4NLsZcr3E4Y6O96YwPgnUQHFAOCtWApaUPj/9J9o1ApdZ4ebxfl+WkdfWwblRgmm72P8gypc1pSSKADWmLrETRP2X9FmblswadQQvDSXpi74xrrcnXs/W+Eb303bS7kfFnUHNibqfh4tLzQlVvVP5fwsiDn8uNLN4qHam5H18K/yp632jLCn9ni57wbXvkLiwbaI2qzEPWIrZKlwdIThkVjBicy8LoUsGts4d//OX8HUYGBIfIBn80Xy4DVzTdbMA2/GIYsN/Fvx+eLzN5bJWxkRfVRs9SKY7+FnyjqKz+dFVNqavGTLiNGc0CAYMKGQJKp7m2FFtzlECl9/Ebino9I8fPgX0vSVIVY4lvS3ptwly2zyWTgKq/3Sy51u4l6AzVD0IM7YzV57dWNJXPH/9LshzSP5R0uUGtdVml8sX2VRAZiKHH3J+jSQ3o0Qc8OEjJwF7xREsCYRU17crXVvRubTqMnB5jbU5YlkG1BE1cZC9Noqf7m25/mjob+bsacZ9imcAaGdI1ZgGSp2nHwGFviUDvYDJxwc3dLkUuPZL1VOeZMqNAkUQKhO4BwFg5G8Cp4PhL/8Z2huyzOqm6OjF+oDYhrq92Z9EZ66RUYLAyboVRyLFohRLJnQN4dMBK7oy4CI7G+/SG07advXxS80bo+WbdV9zIZ/QVUTsfruW37ZTjupckvReOnsgZEThmGgfYktbyl8V+Sfh+QMLjlxNvQBkXh9Ao9AhzxAXlEuKWu3gvb3B/iyIM/0/rfASKYIGgS2iwf5ubL/85H9j98Ep3cBUeGldNMDAbyK0ijoWFcXuZ6vJmm+uV4oP8fRatUkd8XT6UvYAP8TvYf1fQCrvEAi/ed2vH145GOGGGZZj/9m4Hngf/2bD38j35uCFH/o/1XGsWtfATEosw8mXHMrbZhFHnf2+Kz03E9o8wAlFwUl08UMhJd817DpuY7a0zUxinQb0ZfIQskqa5af5Jkm1fxLnBD46AIjW0O7TbCn4xS5RhcC7rQBZVuDdrL6/jEeWH9p9VGkir6NWK1WLdW5ATJooyMmLJs7ZbJV9VLxQKCHRWbPyzvoBUVcNHRZWn8taf/1KPP/2tJX2nUxVe0NsPKUgodmbqf+9RMUT8lVNyF1uff5hCu/eCr7twJlSu/dFepUWN3qVMH1GlD/OrpHrfYRXabLSaJwzmSOWK+fBdUt783zl7YKORT1bTCdln5LlwU7d9YmYKF0MgbtSfx1tult7q9ruL/Z7BVggu9Yclh5u17aFB3InYAr95721nwyYq7FpByf55oSeSFz8YoxpQ1z6KSz0RoAuVFOQ5V8WlGuo70TBq1t4sINLsx/2nFb1rIy155Jv5l91KJI4N5C5+Wj+ZpvZfdJjAVE/qw1vBhWN4GM4PBa8iorS2GMrFrsH9/Cwb5Xf+uOZfnfkx7TECbNsscl4wB1l1+8g2m9g8+q1ts1Sv32B7pBsBXg1qExzUWTrk/R5YEhtc7gGk7l/SvCpXh02PERXXEdtvgk6KWgbKnRljbxXCZ6U1mW5pKy/c6Dmu/l9Ck4hQTzL7GechmwbXc4ekBA4Na4LY76ObgReL1CcoPdpHuHlumLwR/p69gfVR+9FK8H7gf/jUEAbg3IbQ8ap5GdapaHjfga714oasovHHg4KVIX6ykJMyX1jSen1qvCHM8+D/1gHtJWbH3PWdff6r6+8sGoF2DACaYmQU1FNSwE39eAfGXnuBuNszezVGKstX0O/AlJwH+K/QF29+PxM7nrVVTFFl12VsMSuOcKUV8NWzwkcwNwcKEfSdOsMCX3NbYMblQcZlRwuY0pMwzNrF95RsEEvSqsxCeNpKpny2yn/WUn5fWv2MNBWbkzgFinL7wKB+fyHwaOKI4hTXjvxY3T0p/SqPQNBg1+AhvpK4OpWrd8x0Z6QzG2kHNQgcxezO0SX8DW+hMRnLmW51lA2OBpCGLg4+K6FdbbY1Edm7FqxCFwU9j/+tFZ420MbmywfFD7ReWcIzHvnTYGaBu+Xm+J/xNNvId1g6CXORTt1NSWG9kzKZosNoq1oH7ZoxSU2slge0zXcU2FZxr+PdOas6B6WeIr96dRcJw1eYreQtiXdiBq597XdWmlbTJPYRpySGNt839OW+1LuZB4ybuz57++8k+NDgNMH892Z+Z+rLIOkF6YRnyQWrzf8Ome8qMdwydefwR+uhqBQcCkX8x0U9KStMN7fn4lgU8s/2PAACc8nH5Dsbh9Pwub3axr7SkFZxdUzhQe93Wmm9FonzmAY3U4y30323D4SEEB/DUovOnwoI3JpMDy8V18ry9t360/Fj5fvCUD4AgYusL5AOe97GxUWRBpvUw8OLBjJS4QHXWLzv6lvxxQCNxd6S0SINuhLVFMWKEHh7paO2kTX3G/KR96Qu0J7K8mkBXIhVRiM2FAqbmETTkuTy9ylx6OeuSCps21xFPid6lmpUy41Ndt4QuLvy68fazywEuBI2wQcOb4CfwaVcsnQx58Ycr0k2AIFHE5NK9n77/ibrwWqArMuUdmXhKgejeQm4GKDdc1z1KmbwhmRK/BfAjA9NHKsFkiUXYwYHw01OdRTsN4zVQUXKl+IwzX2YkpReOHSkM6Or0f/G9lJdhri7LbAWvXEatyr+enNzlxMAsZD4NE7ZPE1S7eWiXgA/0wOAwcIpQJ97rcLTLAK9fLzmqBiX3v4Gwn1/vjQZFLrmq0s2tBS5HbyYZTvv8qdUXGOrohgX/udpvY+rZmgz0h+NbD48P371C7aENiLxXV/3FdPI8SMbo0FHav3Os+qRnQeF52x00n3W3XxcNLfz9MuPYNm6Bngw6dDr9B3pgbOQz/NWZ7aXaNKzwi926NOpeFZRai+g+XlANAwavMY7ptmP+a3wBniM9jfIq++Z1dGfjUCADrJdhBdl6+9hdLFWHpCBYmlcRqkvKUVQbahaZ3zLryC3YJ4W/vQump//44PUfMlfUPx3tnJ8ByhmtwzgTcEW5j6tF5TBRrem9L+kG+sTkpQcExAR3+sQLRnQwSQ0xl8vOwbcFkR9MRybP9ARxX3WaTrM89ozDRJnGLf3bxyOO/iph4AEqeXrhPG/DzozO5q53hBoyIKC6YryOpNnLPKLIP4nckPmFRfPNwDv9z7a2hWe/QNKjDDZDsd/uoSf61yz+KR22Sv2iSUBsD1jzBdSlofrYW23DPTcqL1R3g64N7UPCV5fVnsruftwobNSuLIq/LdGMmqIu9vM9/THhsdEjS/Bb8BMQJGdNL18PuQXhATYhfLP/BK6O2L6ekascce5JzzC5VXLHuxX+j7w+s+Rf/wPPnSXPgJO0B4DS8dvj681nJWZRToNn+/JV82eH8FBP5VLUQ/VOVE6zRblCHNKnNEi2wK5MHEJ+Kdta7dfAiZ0EpiE2+NdAJ/yAWXFs+X8GuF+BuRU5WNjEksvaqEc7R50M1as5wfdPjyl6vfy2rOV1prNLhWAF/jeSaiZTodVjg/DvT+Y3TzdTECQwsOkJPxgBvOAmQCKAQ6A9cqmwfqd52y1nRLnkq/LPhGUe70novYMQyVSxV6IqPy7fFTuIaiXKwMfn7w1Oje2T+X5T0LCe2zy7uzw1J3GA4dPkBeQEJc9d3kgTAgJ95hBG44kB6RwF7yeLiV3+j5kRIW4IM8AAJjBZDADTAIzO2JbIZUQL7ILqsZvkGQqIeXED5zb+QAjMjFBJxInuwlyrwjftku6bmR5iF12SZUNsBEF3B6jdoht7T7llhKYPJHtO1w9NHSWXIIfOUcq6iZWJrjOJRr0fuGQgf5FXpx5X5p8U74p/vJB0ecK8L1lZF0Q2EN+un8VuKDo9uENAxZUdUYxWZhoj2nE2bkvJiHF5kibe3FlCnqlaSiOccNmafd9+2aj+PWYRmuF/CUYtawPnPdap7Aa00NIFHKEOeKGcstxS1i8HZPfflT0xpghLAQcy5JPv+ASWwMF5T8/89WZi3bsrx3t560twY+drS8aIdbkBhn8v6Pq07HoxASDWDPVUyH/kvBtp6Rrd5bz4cxDJiCYMlPPrBeZHGmsqR1vr5S/d+7bNpVxg/WXqSd5W0ifrFMqyETBbjmLh270RmHoD6+73ZCo1upMNlbYWrKDCiS7clXd0ZRVTYKZgKuoKs/MayH9Sw/ru1vHKwemDjcaW5c+XU/JG8VffDwmoxDwTHlPTaTs+034QyJnzE8VRtVjDgIzWk5YVwdDhhHDK07/FY4n42PlqQvWzF4LZ3VEL1zyX6MQezS6YGuu77ATaK2zRW2VSMkFxDYmJCNhUrLkHRU49/bQE6DLwU2C/kw7JkPOQY5uU8+ubIY73hnlnUqBlfQ1kYq04ap+yxcdOd5Z4TiSU9ZpSiYDXlfcDkuitLqXOpbIR/PLIFXZYc2CHl1Gxtwm00hRsqXlaJNBJU8gx6B4MIA5BvxJVLCoFZPg3IyOd27DBIe3IZ0zquuck9vKfVx0qks9PNmlHV0uTLlrek0lwYLdAm5qzcycac3KnHOuLraGOPxqw5IdeOzg2CoaU9SBLJAfWVQyYAQ6Uwzv3nGqHcXk6VbA30+UY44cKcPx/3+FKb1arl1p2hdcN1NNiEog5qTeLrk6+4PzqdZUr0zHalrFY67+knqyCCovyGLmBTUrx5x6Ll/DMyYvY7DLaKgivKlZt6jSiC8WQmwMelDCqCptlzJtyDoYFfUlHXv08GseilO+NCxijHxFKZxKUPmPfjVLzWfUttVmHvyM0fR55hbCIqji7s8n/T8DMjBbBkOyQ6Ue01pCRRdiTc26xZUmHFjkZYvqyktAZDRM7ZNTukvPY0PKGDBGNJOUEJ8kfDZmYSCTyRnm9PyI+h9VvPsz9iQfpGvka8fo100oOsflgfzYKNihj1zdBWV1el7107jzyAw6N9L7TGYdBpwxgTN0GeS0UuOV0NCFJBMzvaTCiAcLvWxzPkieyrAS0BkxEb3Sc/xidyKzaKnwIFfaw6rRqvhWM7nNmN3mEtIWQh0NYVH+oVm4ITLRvbwT39yopSwVa8WPaI9nYSCxMNcxpOEic+mzazwHMZhB2d6ORLIwVFfb2lER2baW14OoQU2sphfUF1Gvg3UHwHUXbWPBPeberdhbXddSymZhFJiHbHd7BW+vpryeuL4INggeEiJQqymSUM50gsOoMA+tnv5WGyqzwXOe+HLL+KaYq29gy9YKTGHPIVT1EQFTSH/b8R+/S0IWJMU1DiuMiv+jbvBeTv1dX55jdY/aC/OytvAb/a1LA4f0w4yjguWcDbAdxy6popbRuCMbhADpE7ZTAybTzMyAHtn/PKQ8llhmlSH/l7hqWy2sQP7uZ+GzMgheSK9yVrkj0pHdzWf5i2uQPl4LXi5NLhI3gDircz62CuBXSpxkWKT9kMHftD3cxGemAxJyx9na7tIgtOO4OerP8SskQlTHQrb7l4sZI7Fv8C8tVcuXbov5R0qbhGc98ayWxwwaxELh9Zb99ULp5mndLRGlSJQeqg/8IJsAZwm93C6ZSsVXf06gjvPXpm4s0rM5oqWEHt+ICd39/S6c2ej9zCKlJ9haN6cRoFpu9+R3PvTtJ0xnJ0T0viHeqkfQVylCRj5ey4XZG26qzW3DXHM39VVtSNFNBeC5Nj9HtVrnPcM++hXkvXXzqLjXK3PLZc9F3hwRbBtF8GZ6+r/ik2a6wriaUxmfjuoeaBbrJ2Fp3PSy6Vq9QuTS4Vi0tBr4nXagIba6+AC+xOv/nXqgiBw4ZH5KvqmsRNqx3f3Fw3AQ8U3djFLwdRjZ5PKqSmVEjV5HTRw1jfvOKtP2RtmKbouIihf7wXgeZQL38+Syg57GDuQGzw82je4Xs2eNPeOTXAAl7janDavRu1Roe1Tpw10qu1EThKCMTO0Nuwz3rTLx5PPofebhV7zdl6VSHFqnKnVIlToq1jPylTX2VZrbx8Vnc9pIT4IqWPyIGrXLkBL23xkxwa5h1OhBFXvSXqq021ejlsygGnboUJV0pUSLrVWhd3dd6Vajdat+VpKnfqcdXJNeWlziTHepXZWWUcPECHjB1APtCcTvOTAkHzFn7gUPwLGygT3BsV58Y8YxGuz6Xx4j4FLGuNOaue7A8oC1AdNKo9n80lZErQ07EQZjatG9XPzNFjmzQkgLEgDLg6B0fShLXqpw0kx2sIdA2MEn+q/txKogpdpjEG17+3XVJOleU3WMgA7XG+fLZblsWPb9uuODKQrbdt1HVhA0nvNsRgJe/edts978H08ATFcJVTl74z8dqDFGk7MU6lxWxfKlX2+bkGJxQipyo/CcDTyhLSrMgUo5wPYk//bherzs2p35o2XgsjGETM6NhMQE3ZIaVV1+oHAiRV8ynYoribcxErrjEtfGJ86uqY4kxY+2bHA2K9ztIhTXnJfkLDav/0GIsp+eAxYkUy1MW8OKJUF4OHFJ2w941uX+umHWJ/U8cFQjVGhycm6UJSaULKmhQH6AcEVqyUVaOejD8OWkkalcQJGY3Ufz88Ng6sine+lhMPzTzoMK97UCazKdlvxNF6FfG8E/mrhiEEH6Y/S75woTMqhauP4kF987kVKTlbH1dm+ryTdzc3TfJoprJFN3FHyHWy0TWB92z7jywU6lnCFQCeZE1r74oYTEkYUc8VHJAAdAoVP3Y6A65Wv8WIKhztJQFEFoje/RN1qlxiv5ayXBK844E5AHV2UljyYJCt3dc8le09fyGC/aXmTsO6NEfcjmT2DdSiuuu6mpKnTvc1pqNdCb+x4I+dDO9GW4jPJBzJlFUP0OJfpam4QOxd+35nX8AbN+PWuqZxLpxITP3IJcFMkck5bGLtebR6/HBKaHC9LBOLme6BkL+Hoi7bJZ5Xuz9EtmDEjn7tsa1L5j1qKnQdDOZyhJazzB815UnyVKQ9B+87HIOuXcyHY42OlIc+HgVUYTEpeWYu/ie16Ll/PMTvEiHfPlUqXR4DPnGmJcywcxENM4RmI75GnC1b3xxduT6WPJWXJlPrtsySsuDnj843J81t6EjxNXEuuZWQpVPqt8SWk7WGQwxRtW+xfAlVnJ9fSkPT+cTyBti/6RnhANJVcWsK49pHS1umSbclb86j0OZfMH9uKnl5Mc7sUOzQWJp+PdoQVaba07041ZF2v1WyLg50Ns2Td0AiBWxC5E3n7OKlelmkBQqIlCIZsrjD++mpCJPJn3CN+xlpJE1rboHQ6do1ZfW5v7mf7BzafN1pYZ9eJtO4QCy9kdQxbJKy3Q6cxIiR41bZMIzIRv169HmR0FmY/9k7V+slUJN380+GnckdPXcDQWFjcDxoclslQmnqRcpCnHl2uF5XB/6zUH1L4DdbRSPkdDbNXbnmfsO6GkvGpA5WPozPJBNOHb0yDp3QzQtigTakRADFNfHbkSb1E8dJKJQJdC/507IP7mlzzOULdz7lR7eUYtkPzHNViWe1c4q0KEXLZQSJIrSQSlOlG2akOj7Ked4vnv8/IrOKE36xvkEyBSD2g0sNjMJwrAJiDRA5rhIS1moY0JMj9ZBdLAQeyhIOc1IcqcCU1IF+6Ea9RiZ3wT4nHGzUl2CiuBBmdK+GDh9JWwJMgBUnT+TFzQULeXldrrVUENdGEuQTlVs/ySDjwOqpaPQPzA6SVfntKDJKAvwwM1jO8EVYVbE4Z8kgXHp6A28s7ZIOPaovzkx6oQV/OO+I2hAkRPD9ECy9RRfZY0zaaIk3nGIvf//YU84oJZXYcXzVVStbDRuxCG48wPzGO035eJrxCWimqY+T9dIpi6iLXEryQk7py76Ub8dybW1TSSB8TRE+PLhCWiWiaUBkQzs8zVH+7N8biyfBxaYnjlTCgz2sjjVQJgLqKQgYNKtpzFnvFJhszlvn4GatLIpS9x0slZmasepjP8nEt/KBHgB2A7MDqIqpHj4jl9AUYt2bala7gfXSfPxXMX+Jt05JD01dfok2zzs5Ns9A/FaonwmN2ft2y34sJP8roBIJE+gsQje+g9P/A/EiAFt9IwiX4F7BvctTU/ACN2P1n92riG6dZrLvwAinkb4vmEHOByFrRxqbe13uMDozUjlFoHvbNcswzjBoC+Ji9oECl+IoYH6tA5fkGr/Owe76y0b0XA4N9Oc0XJVgHjV2UJkeW/t1l8JpvpevmEzTHfc9/0tNDtFwWvf6eHLzR5f6tT1mPJnuiwfCBvJr96rWhaburp38EMPP1Jo0bmmxI877ky3awJljk/2X9r2DxMAuAnK8tX1nLh2Yt8amj9rjVDU48mcfXr60kIcu4hz8Vna9jQR2csvbf41VRy4p/YIkhSkFWyHOsL4xO1R4CJNmyN/zPKi08dDAbPi0dLzc7UvzxITv4XwS7sQqYbHcif6dM2vKKH4s05Wf/e6QIqo4Zsek7q6a10Xq9LPnQI1Wcl3c65VTz0rWZXzuPphIjdit/vRatp1ZvZ9ZODNOr0UF2ac9aW+gfZ40tOEufbgJFnuhFiwSL+4VfsvXJk63Klkvs/b6VD4L0hepXdGtn/aEVnsc54r7o7cSR5/nzxIXzbRnswxnWn9uxXeEFkMzKgbTsA1HRbL97yqkzRPOvgaaq+lPzk23ENOOv6CnuQz+PdM4cryyO2RncQ4gE/XXVTjMvGiBLLX6ZFtiKixXXwmKL4qsgxaNhi/vmAt6wdy93OCH3M8gNv11nibdkwOBvuB/cvEwEYuXfLo7XL73dE4yJTsmfnEIxb6NmhyPnUI6wTAML+b1h20a6jJr/J9a6gKhMAN8TdK1oILEIzqRmyApkx8RIqgsmqzunaQH6uZrwYRK4eNRlPNXhnP0QZGsOBPiEmZS08LDZ9V5zO3Z9JK8yVGnwNjUmrNvmIJjhQ6CcLPRH8Mwupc22/ZsS0Z04oQcfG5uzVDnVW488514y/B8KVYlcEkMwcnL4tZ/C508pp3lFb3ESxqncOdZd1qvEXETdSdZdlRw93uelulOSgent3Owrr0rZyrivFTQMol4WxD/IJs1LIXLfSk88/De1v6Yt5P1SB7fkNPHd7y7RlL5cNXh5RmdiF9QUiUZ9NdGr7kf9at3ixLb6+86rxoNzFiJLb0zbJN3bMz0qnPL2gAIHhkmct5twjAEqUzJ8ffltoE+PMiSTyy76f31snkuxIBH1br3Xcz5H3Si4gly/erZ5Y2f2UBjoJCEmoR0wB+uXvybY2LPDD/mOXgVhAcEwoPGoHkUfIg+P4urYOAVafP2kYR78CSglabnqXLAw2erad9aqpEjd6Z6U05I3W7G+a8NNFMnDneTtNFhQJjBUg++UsmC/Gn7VAy36WF4cagzf5oSqYFEzM2a3SyaP2J5ELq3IVbd74GCzJHEaSxJMCCwQGS0YJPPf0I/+LkcCnHkMaHQJGbxQ525oqqHPFxiCJdjEHCWQEl4xkTWhoIGqcMCAk/JdCZegUqV/BoIEa8KB4qw5ekg31iYrGV55UwZ045eiTOmDELCWkNOE6lfRaSCm6IDJODldmw5BbfQhf26r2PqcjomA/LDvcqusI5nLHY2z+M7T7Rp1XK0Pc+M+f2yjaUPHqnsoUZ1VXHQDVnqg2eoRd+jsfKzOxIyn5Tx1BUCushdxUUpizBFTYvEJlj3oaRELvIs70TRU2+InE5l5ZVVoWJOcRc6AT8dCmxR76fQ0MVh4LtaS+Mifwgf5rlsj5iYf1rHi6s2SHq8s+e3DMDT500Ex+oYt6Bg8Z5CT6/1vwXcTn/qQo6ltI4P+nF3xBvK+rDU0FgIyy7LwB6K4OKsvndsChWF/MZwiHf6kugax9D70uqJp/UvrhrLZbdIzUQh9hl487RbHrrQDr8kYm3xknmFY1JW6zQiEDrVeQdvXb1JWSZbGo7uqizyzxtXKpTiOuTsxyOj6Z50ghP1Z111IqzN0u/5CiKb/6dLk2InxJcgK/D0hjDwp03YPOOYCX/czUq+Rz99jBFTzvLSx5gR8XVLPzcfmjN7Lvf2xrPuYNifyFwUtmd/mvV8BPGfA9kOic/Nra1WR7K+n3lTlhW99FWewU+6/QZesIz3/ZLvwdnKctP+S+W1z/FW6ZP9tN8bj3Re9HO+3br0sSPaEZrAUFldAM85nj/PqKw6GulYZI0MG/m9Cgsy2DRYabV7NXGdQUcbgH47q9igLl3/H37JUoE4KHZ+Eli33LNjU6bHlWyZ6ugMJIBqFhqIEY0V8y+qcWkWClTPpW9JTD5wYZPa2lLxaGf9H6m1ab0+blj/SHjVImeioIs7RBXTwwxcFRHjw1KDz4nu4qsCvzxf5caxfqD7PamuO/ZMLZ5XYdi14fY/Ff3G62UN0Z0hkW989R2MT9diLpztxQk7UheqNcOrRcpZmjnQPqw3HHU5W1nSUIPbeidAiBAtAKK+0Ic9yh99ZbYZLXfKKKDu8mL5HWll89Lqxwdyh+jNDJ2CgwVPKn1J1zdOdjH9e6qJiQGvC3E0o5eGVs/EA8c76fP7PXb722x+K7MtpbK90ERKQHHJpgqKyxKAzKQH0K6+qdbOhVcUl917b/66aWaAhI2j3hUDX+EQg4NO6KTv9Dl9IiGHI7ckfzRz/V7pfgxI/v3xMwurVN2VEIwqWjbMZuDAg+8a767bl73zjpDec2qz6PXaptjkWlHm7+Rnr2pxrbV1D0Yq78miG/1cfRRECs9mKoBwftMy3QJ8GZQiIHRYf8DBrHEDMp7HTgkLANuj7k+yL+SPGWqfE5GY/jz0wachdNscqNX+Zc299z99VKR8vQbO9qtf7U0xchyyda9kBa/KyNLO/gCmDZ3tlnb/ckj7H41iW/FX0zW1ojegc3zhDoM+i3mnC4hgVSwAIlEWApp2SZdr857rxfCfAXeJh5vPktyBw2Ygw4LNzZvkjr6GkNXKC4Xvom8oaBpZaDNqjcZdG4JsB4FS31SZKVF+M8cH158TwFHyAI7hR5HQw52hcl7U9vq6/wHEHabqy/rCKtvyKebb8wfQt/GHzBN93g7Wcsf8YCINGz9IWf2BvqR6Hk5Hz0MQb0alcXTffKTHuQ+CjPsHKDsaGhbL4Og22rA1uLLJsMq2revBmK1Bt+G3dw1fnDZ1XAYYKlLX/cV1d3MEhuvj1QX3fYF+UbVZWSpj9ZBFNrmrlsm0cg9SKRxL4KhJJthVqT8+tWOHcT+ZkK5M8JEfAR5T+DJddnGmnrC6TqlflGyvqCk93MF+ZlRKi5/4qraBFS9ee9MCX+Oq2d83H6zaXcgo44ZzUi7WN2Csb7WqLXZpFyDL1YCbIv/r7526xW6rzDXXE6IEBxptT1T4XKaKLygDMma+avO/8h7zpmz78w9IXAz6lzaVpQcj0IErpRsrrk5NT8xQlq/hCkHfbh0Gbl47rJob5Ypuwa+xv7aotX4u4ZJeTVjjNaOBJdWNfizLifcsVuNTFqvEbArZ7qgdu7mgagDxO8Uzh6t+6a4MhM5ejesgbaH4r8Qt+LL84ebbBpLe9g/le7wWatxCa7nl/Pb1pC13FGibhFG62RsnC/fGTmdnNZHm0iFzp1n1/mGRsT8I50WYU4EG0ft4AXqW0YrvzsNPtCLs1O1jY8kzOUx1eeR1GLoo7j0sQWaXZqbHOrP9XrFk4auqS5r9nBrfz8KWNO+CUAzbnZfqUDWDQNiOw702KKQdGgLY7ZARiF9XipgLGDwfZcNzJ68QuyFx6ymCP3K9l6dHgM6/CJtNln9knFKGSOknmC1D7D3nHg9+Qt787FXYl/d4GytxkbocpJ/4ZhWtiwzhTpaElma0HnY/m0ll94lC/U3HuPvD8vnFu1yiRnjjdGXvqIHF+Kl1XhNZGAx9Ay8RhQcm9lck/D7Qk/28+S5ZzRc7st5bsPDYFTFis1d8jM0riU8ZKi6oQSMgzf4V9B7vaKWic6eObm7CKENXDcBOlOrxbi1uXoizwq2wNwg5s5mQWj5pS6uYX6wsUJW7c/ueefHnVO411h1FGClj20wsSgMXgJuYa8c4Nkpm/+I7ws3SGY/koaUvhnLO6SgGLRJz4O0psLdtsLOBf3qm/pVNDn4wGZ9j5vj1o4d59EsP2lxaaSLl1YvPNjbHEvE9wUjl3nsUW9oP6+y1gudMCMrVlv6QD6cf1UBrXPud5T7eeWHGLZAMninZOjnEwfmbOwBSM+/g0UfifDtSbrrOY7bz8u4Vydxsa4PZ4PhRTKARJl4ghY8vkEWVV9tMhGDFdyN3z+jnjpOaR0MeWit+tHi16MDAyRgf3ynnjapWRUz7lEPL3+FNEGNtTMo25Vv4XPZRfzhv7ZZdB3mDtNDh9tfPCfI/UEsNdr1ED4WxQ4MPfokWtr7rwb+OuCtqlK2wVldO4BH4r8i/6zdygwLtQXGt3iVreXh773unDG7tpumOesOzssvbYBmf9q+v/S8L+gybzId4a25T3m/QHcAJVJHfBK3V4R4k59T9mbrjI9Ggj/ge963YX/Xon0KLdtjNjEtjXm4QPRKBViyC6fgfaftzDyQFGvgvO/RQEOMcutW2uzVYwyG4c5/oN5BKCcsVHzgHgts8OJc/N/q9rGvmZA5MjwcTOPRFk4x4w/1vdotKr+EXPHS88BhVYJdWvxiQavO/QZ9s1y8bYN199l/gqwA3fKuX7e49hOAXnGzM81ju15W2LD5a7irQsrlvJwGhd9U0jP+gFlaATn8KQ2MHvhDYz7ePePXNsNyHPXjlDxIAfakmw1BTjatZ4Dpv28qbvbTT9qrAkQ/DT/+yPQK2Jy5rLT+V+85uWGFFEXbrQJjozgqNyNw8NE/YxYAIDcFX6Dxr3ZxDLf64z6+i5oVzMsSAfOwb8Nl6CuWHhSPDJ5n26P+nCQ0+/sdsb4233RrPiUYItm3ydNW7QkO6/sanNQ/tl3bB//ZD0ah7Ldlu7OG8MeiB+en38g8L/swwXopVsi17PvPOL/X+rZDETBtbZapt9r+mFPd/NN4Uywb5/X3OOedvotB4WFO0CvO1OWIWsbnprO9U4epuxr8K2ADM6pf1Y1TX3NAW6GG9MrJ6juWuviYRI2ms3yAhzewVMVek0xjk+XoHXUMopcWYreqkxE9Ij/0J9MJ+YpYui3hBsnCy/uPM73g4UcQN/86Ob/zN41rp8URt8yu7cq3n4G7F3UX8FcYgKotjES4uiNNtALl9u43gQ2ts1qWDEX8QF4fWCZOd7tBf3W0zV63zUXZrsfhAqOINd5NwJgS/ca3fVMIexbNuV1QyabVeBQTGMnoYwPHtW6XGXKiKrO6gfLW2Ocmx3NBeKUJQWm3ktCAoPg2prMgWLT/Kj6xY5OK0FsEz+ocN1HAK6EqTNzlS79tZKFGwLuuOnTswSXPo04chIyf+DS3dIxELIwNlPpPHcJ8kmvUWc8d3p+fjnijbreGOJObbtJNQ5Y8LtZ32QvLfl8jdFjOeozdynQuo/uhl6xmJbyVY6MvTA6uTSxKU+gP15Vrew6RB+fr3A5Jv3OU6WYTUaurDuhe/BXi34aEA+0ykWxqKBjnZURu5kpW7Wdl6vD9/hTfW8AbxZMSsFPmlrJe+T7sBhb+5kjFiMdJCqTyksfNcgmxxN2K8n/yaP0u3hdD57BQ7uPoqWOXrjV2j66NSb17lVCSefEOJrjGIr8vIISfcxtBAICai7QXQNNR4uV4bf9THC9h+71LImvDznpk+w5tTslZ16hYpLdnKRIlOubDZJyAPMCDwA4zadn26GwU/rTH85pPm/gwNUdYtf5FIB0YTmAtfeg0iYKwfNF08elgjKYn7u9Q5ydJxS+LuQGtbjo1YkNAzqJLeEjtNvq/BPAWXTuQi6hdWAcpsJ0BSIU/0/DtIsfrR6XxGtLKZENRzi2GgyIsIVpEpL/MnTgV1C7XUGn/N4pdpVp992mPGtXLl97qHCyE9czHkSvGC+OpGDXr3vYdoNaQLtu+i721VJJrdjmXp1wcpMhFonsxJ5ClfwoHDe8DvljX/OEvpV3CXob+26+CALVfgAzy13Dq3Nlp8en7OhuwTBOy51nU3UadY4+XDQEre2BO4+UWUxee9OUFkycghWQ8KB6Q2LyN9VOwmBBTy4nN728vMxgRs0iTpmn4UZ1PF5lBXEqfOjD9dpklFmq37KmFtu9ED6iQJ+rLTVjpsu7uSXMrIXFqrQSp8NHTjcYr7WzbTBlvpOvv4elONz7vpcXgBeKuY0+di22E6pItSC2Cs63VgdNuLF79NhrAkf3fn05MuOS6zRZO865dcYftSIkAakzkVSS+nJUWrzkYmD2I/LXu/W3HVHOPdts7T+3XHVx7hIRO9HBsjj3tJF+bKnpDZwxXa193jB6KuzzdRvD/FLb+x5743zuIr/9ayRniGlpdm+hYu4mI8FGg6Nb/CugCDj1T7WUGqivyjIB6mHdfFI8UQd/OZVvGGt6om/nHHwhdpGlpczCvLi/mGtfGimAYN+XPqZB8JF8j8LzGlU1Gck+oISuXKH+RC/SCE2DhpeuTymLNHaT9mRkSYKOhHJiNYM7UfvDEcAEH5HkP2oSAB+eRgJTT54ylo6+B9haN3sv8x1+5ImqpZ7Ls86HK8Xtawhc76JRt+vq/NV8Rv4RXF8BeTJBdZYPioAFV5PTNaHV4yfzNnAD+Qv5t3BrPpYOGrWhl4NYYXl8GaqI7xziRwFE/ouNNZyIh2xLeIP5G5I7Hi1nuWFI/mRn/kkCnRG/2Z1Fj9p2qNpJua+fr15NXk/oO9g3i6Xb1lzfywSvl+1qlWcFzwAWz9j1GXvaHC3eKoACVSxBavw5pMZWd6hgQrfuWXlyHET0jQTRyw9u8Q2DCZVblQp/+hxRypIM0+QlIhaDlNpKIOUtj8aPnR/+H2sfJL7aHH3fhG7SnsljayvS2nK0vYloGuyzEKkiiiyx6sxspfMmKEoK90AMbiGd7d52e+SLuBwYjpM6ndguXBRNJfOzOP7aSQFhNQz8keN+iYuVK4R1TR6GXxVfqUNB+vN5qgvIhim2VZOVka7IS4qtE9v4TuCrg9/6XDBja7ab5mnKb4v8oMLmwT7Hk6hhza2T3GMGpyzPn2Jqw9KcPAc3XLk7fjNjDjahWzRm8ljairSOXHV3Ut06s6lInLIkxzR6iU/d3zC4tD2q+WOH9WjbbzOl3RWKXcNLGapnALFPzxV/VA8lj50sr03qgTm5EZ8FVVePlOOSFssUtgn8uMvAJy9Cc9w43CU5i1wK0J3N6wCUaKFMUfTzLr3xAjTXjXNSC/I5X7Iw4L/A6B/nANT/888TV2lPjOyHZa4O5i5/Y3Z0jO4vv5g7PK5qX51oKBnckq1ty/UeWch+f29BqT5hX0N3Zbl2UaT0cysJthvY6ln1eu7+/boLok4fZ35FfOwPzwTTs+vbkot9Wn2d5EZ0PWRqRGWH4GtuJcTl1J6N8oz9J/G7dJhCvqv+NQt9GXd0beOGcxPnsDo19eJlglu8p4vgxmVrFU5DuEJh9nGSTxDTs8zaRT0Fj5XePxru2/uxGz0LjDt4Y/Lmr6H+6CclENZkImrY6xHgMk6r5bO7KQUrqa+Dfrf+DnqRUrhadzfR0cW2nNRUXJyzBFQQpIhFJ1rd5x0NJHprLD8cvUb5SjJj4zf0Z/6C8Z3ySKT3iIJ6Jx7OJ/poFsTQ5Jlxy8sN7zfhnihs103PylqJ+VuMSn3418ssABPP/nH8GA+2ffLWt7Hiwe+Puxe5f3tsttb7OmV5RfSR6G2eMlOjU9IQO5T+6MO9sVxCPeFGw+e3wOekGOlqb5+6f+yVi9KFaajG4WWV5Pbku5pnNR7cJHDMP7zhfKq+z2HjboXPEtJd5wYMPiGAbxP/KAYdV56qtopIrBORJHqxOaIzoA9lnPLsum2Zn5PhOzo6rNQ07Z6zlX9BcTw3P+zICgD5T8i2V5S+/9IXCWSLTvViIv/A/zBbtfXtF/D5WzXVNSVPE/nEjxVuXteRI6/BhkWesUmu9eY+P7AuL8kOM2ZU1j9U3gVLDuefXNV0bxBYnZcI6z3pNYh+DQQv5Z+pekBVwB7rNk+a7mXhJRGHYD/gq/v/ZKHu2L+OIUb31zOmlc9STAfn786cOGHdt4svd2rXfT54oSqs8tmglvNh989yqtPSov+1593EijhJwhSoJAlVuasezM6z+A0zAowiE7jMOebv5wuo/+EpW69bcq6wkbEQ/nXDhkRk6a4SML9ME9DN8C3h6cAFYMOHV1tH2GWVSlSctlJ1Puv6Pgflj+LfZMsv6jeNNwBHV4aJQzPp7SzrXMotRva2su13YiUC1MGwhYZZ65rvZCwWFcxPE2znrXHOkxsv7ay7asCi0vsKzeDyLF8J4M/QOm+Q5rszrqjavhzpdCb3jdv7gs8I+Bah7kZGgqJUJmHlCuffb8zLka7umMubLU0wnSHXt2OTrzo2XC6ViMtHFu7+0ZmpT9cwKJFoaK+EXUMVQLPUXfhVp2c8Yv/ZKux+4/Hre57qyHAwAf+uVl7Bw468yZQY0LQIqJnB185b/h+yz9OV45M6xc/sRmDD9JaFTz1Hxr3ytrRw735b6Cm81Y/xw9Q02n+sNxQJl8zmUgTIBBfyzaumxhLdQeBmtZe2XISsYuHIVXJ1Z0fTGULaBk0nTHbUMD/YpMClJG8fZVzl9kDIE54Hsdmc7OOjw+rJGnVBmUCBlZ187xt5PPL4jZ0KhZazirDgEnGEJ+6Pekw2KkPAF+YgSUl7cPyyypASTPulZwn/r/5ruOcS61bv7q/maUAFIO2xtXkhDxB9/ew3Nc7HDaXZ/8iAOMUL+akiePHOIpAg7ajzyNODnLm7ryrGHzwuGrr7ONjslDsugxTQMKC1fvOMpB2wtffpA87qH1sIv9crgLPlVdmjsji5ndwOI6dH8e0sBc9pHM0t/Tdml4e2GdGbGeWoE4BnQB4A5gXF1yza078KHIAs9h0h/0mwZaIxFTYd70trciTb02gRggXNmlfWw6YqK3EwBsC+NqKbqOyiJGdJoGejJG5O/ZDLN33XzuTaSB0XfS9h+wQVzN6iQAd+3fR6PMRRPId9l79fd1eSP+3FAQ1vtO9XVjXcGL7Gf/JT2un4iwbu9ynSppNuGHZBTFBI3rVraQtuhyoUEBZEJmDjzuKPflTUdV/Vsb8D/7Ingn8PfGDxh86fCp/RfSvnMUqvjp06vgNxwu+CfslDE5gKN3Bgyv/orqjlUEELGQxgtGArPEX3rAj0Rf+o86fFHxcfgr+5EJlqVM2gRWt2beFbVxiWpwDhGED7eOdoJ3GEmlke9F2e5JsuOlWc1Wb7e1KPCi59cs+r7F+B9gx8ZFnUeFTnCj5oPCh/3/WV9rrGXcyD5t1Qi99eGezEm+LN/icWRoyacws8J87RibVTPRVyXxK+OpYUAErtNZ2ifSVfkOfJimnpV2NCeAVnNOUecC30DiUV8jzXO0KmOMUkn7nL+Qt1hDm0AAiOyfrf5fs86t6yCKlpVwDf/68gjB2wbpeO/ns6qvAZecysdA481MMDCFIWVBdOvBP3eYCECy/3G/aT1U5UsKRuAFnin9nvSWkc5UCw2UJ+kI9PKBVvAyvrOMLbmOhNltvC15gxs9Im+J/nfLfWodV/A3DjN+Qnrx1flhfvoPanAUGW/bEOuvhn/+9JqR0U9mCzhfKgED8QNAO4fwMEyTauZN0zOqfh47zIjf4V99q2sbGlt/kN6FusqOtYpPvGRV/2r47DcUdkZbZR22gjZ50I6s0qv5YDLusVXS8FvdNlcOp/lY6+Efms4bzjLWAn4IF1p7wc43IGkJ1NfLz+rzwsPRtGLxfM9DW/AX2PFvXeId62UYFl+9WxM/QHgC2vsNFto41wueCUm8xMj+PS3j1k/Yz08omdl/jkf5fn9Q/LazP27DFLHzvtQkguJRvICH2Uc7GqRRxrbw7au6IVDfGHjAUHzfJOSEciOVDujDwL5BvJHjl6Wi3BsmcV7D3QZsGIxifZSXYS9gNE5xNynUdRqtmP7pfbNkouzRynlAovjQhfnu1Sk/dGuE3bWamq4TrnMZiGEbxTbMuvlJ/mTlz+Q+XhpQyH2Mct3Wk+Kqmtv54pAneQO3h2NlljyZBkOolOgp/KD3HtenyR8Mm4YxLpE0dLWRxlNrfKVBTISwuck7Br6mLvlSLWNo3d0sKX2Auvt0U3PN00/fbad6nWN2HFWZ7udW5gSnL47unPfoolcqCk546Nkp8DrM4BYT/X//4Z7Atb8lryo8P+Mfpw0Su/IQ9XTSod5OvzEYLz9FM+WbU+6+k0MwJC6jjRKTjWpZ3FLuRp+aGEhZwG3Ux2Ll/Fi8Usy/EaPd6Jv8xKbFygnotSQRKqvQeXZiOE1ly6DxF6/Lb54fN7OppVpsPbvaU5gC6vhh2sWIULiqMcgTikg7zStaaPRP530gtgWGJDrZ3TowZKexyFpjGhpkzqC6lIOxBE+sDr5LweHGlzNQ9yaojbW1yY3BVwYq6HAJco89ZGVFDxNosPfa1O8RX6mtRoj2sO6AXq0tt9LOO1+RsA+2sH5ueaPWM+d/bWYvnQToP57MbudKXPFd1DyroguSvgRlZPJVyiMeDkdrZyy/b++8MyExcRfylUlRYU05SDNLYbhUZr0EVJyKimbIKxTehXZHg4KPWpOMDw195X9p/iOVIo85XUD9X/RRLZM/tEaqT+U4k3qEcvRwwSlUjeJZ33x9dEXIWrYuFIbkZqij4ekCOHM6NTzXoOmgy6emFLo2ihC14xrzulT9zUwBcec9q5ebnqfBx7Gz4W/tFHPm24K4fyETMRvpmaOJWunHTBl/Ro3EGSGNAE7DwlG0tLBsA9yw5IOtP8rVyEMSFfXB1jZVWQYTPdEOHndgrzxNKhwPXX5xTfrXNrPIiJSltTo+tr2/cmh6fu9NLhUc6o2d6pvbHJtr2asgT0WlRa04ccmh+YvEovP58XCykoQ8EOuPrESsThHGSuSc7Wi/sq5mmFI95jupAYHh41h4sVXnOt8yJfiFwyAZ12KWGmguxKZM1ItG9VYBW0an1F9dIyMldYBaoejdxWGVhjV7Uyb2Cyf0Ng9f6d7sZYBiXOQrGAo6N30m/gCmBPXyvQaZEDxTJTeqhy3KNIw1az8cMyWNICeXt+nnxPfrS7sUhKoqqk3R6RIFfqZ9xuKJAZNVIygJbdjmy3iFNv1mRBjnxXgdG9STJVLZEY6Z3y5HsKtqOTsH+yAHxqQQFW0FuSbM0mL3JJ37ZdpQaLqstFQx/8/RddETCK+JjRaRYLv+hafzsiWybmCcKnRLwqkSWsCQE7fY0VByTPdV20RuSedp0Di6Q80dAMeIBai2fh6VS6Mfxv5dvN7OUj84eZ9XAkPMiJtAogo/09ZUez8NVn4+JqD0ZBZmbqd/r51wvhoxjKJJTOexI6ZcjV+R87py9nEkyrnhGqW8HdwMxpAHpnegSYff60dobvOLA4z7aRjTetBhofdbZuICv6N8iV0MUemHX1RdczjOTx2c1Hbf2HCn/a0PfxUjI3qSq37JQFeVH/KmldNlkuhs+ACR0dI1Odk4d3a2Q/pwB68bcAlt8vE34OiiA/vLXAufMtYhKHj0eV6wMAcikoOfpTmbc7/PF0HzwJ/RfLNUpIHD4O/XnrM2diA+aanE/wOyljC3S2Vpr6vzsEYNph/6XHOvT8UbZDzRlotNxoXciu/JX818jXzOjVIV5ItGygzdATzBGfZp+Wme7/oCuAJzJHLeSJHvgY1W+98NxHC3kEyx6jLRO3AYo1fcTRzsi+gPoFfLXMr7kw903kR936GMljM9svO3o5qXdtmIsKf04of5ENpdpYXk7U/zS1wya7LEjaQiauu2NklFWlAR7RBH6WUCT93S/k++mY7X/ii34NGxmL99zc5ee3cuv7zRbFuNGnPsKWHV41Y1YvyuE2z6ANo/5myMFcZrvxROgitVn3sUcV2pnBb3Pm9Wo+frIGuSJJt/od4GQjGMvc4+xSSwi2thD4j5v4cGqpsgjAUYekFSHGRKQDQ5nNeOMOhqw6vnXfIJbqr91p04RwuQ4tgN4trhr2MIWMdKEvoqsLqQXJfXRWQi9FY80nYDZhGPxbKNuIBrhaDUah1UXwnPBGVLPLUyvHx0tootbjcmtpiIQRN8Dz2aIocg/CgrdfiHghKXO1cmtlR58s6G+io6+Ylocc9sowiYkcQftpuINzCPxd47rNAqUnpRIpKdY0F/9MkyvHFE6K539+J+AU0mm+/zC3CBeFB2F1l3RVYpnzRrwIytr13Ox1Gjsh54j7uda68CosXy+YIDcFBT4wj/G+CiFA+B8T+NaVzgueBo960COck7CdeAgoOZZHw1Tl5V2QI17o8MFCYKZogwr3vkbB7vIsrupaqZKJLcj3ZKLndGGLhbGYxSpIoxMhFBxQUuin3d5w9uS5yNkuHmmvF84ukGe3oF19kw09kae5bu5AuV6jahcg0hkT6MlGa2sXOXAa+n7L9VDUvnhEU8EzOcEmkbe3/CRVR/1T1jfF7ndc7bip1vkII3l8ZvtN6wCgeGTDbAcgf3uEn0ia/woorl2/9EzszoAw6v3bmLxueUyAIJ4dhbOGzzka7vDk3wSjlsm1w+UIG7yWmFN539IA4nVol5SFOG+HbK/4QI3OIyDV7lOvzUlMbaTn1z2D0STur1TesTL6iJbTwU4WqLgjh9kOLiQCCvXoU0cg3UTlhogcU948xCi7KOon2DFH/eKbcq78Him7Lvht73OEaxTKJftJIMXzsSv5937MNdattPcdTZvlQbLzvBEBiun4OkXF3JqNm1M/EtejEvkVl9/fWl9uY/wd6j6atoYnv3kk9bNL4yu6WzbYb43cROmZQ3BjlU37/Ob9si+uzwqfnT98Jfg2uPgEk8trxmLekZpc0Qan4D586W1b2LJZpKb3b+5N1kw+eAub4BIuGsJhm/twRfo+GPR4F9UED70Y7y8tDtlNx1ns4bz0+IozQ9Iwv3W/1DEP62pohE7Hdka6EUqHtv0Xn+gCDyHYo9Lnf9yXmqymYbNtdyTxIlW7trNEYPUc4feig9EnfqQjIbOeMCQ8nD8znHpRSZ1kt5KI8ft789VTR5/KM55et0uMDxw6J/uMmnjgj6ji2czP5MZWTIWPy2a3HpYN3npQ9jPkbo9xTFeHY8yCf+lYocM6EP++1OSKvfUT6s6t2SoPEv/ex9CtMOtVhJVidiO7Dd6+/80vgRkLHbaB+E1aabbMyG4AtjoqJ6XHodGayxAHg2ftf+Fnbu0jR4CKJdeOZ7i37/BKPUsZzNOTQCtW/nBG4n5//x1CYSudDZ3QIQDWX6Vev7VQPXX/Y0VGdpBlhLNkLvNzubEVY8TcMFBDmyHNEkK+9z8txsRK/SGbMMmgTIwZcwizGfewhJ4EilRE96DZs6o2HbvEuK7EpGE40VPagI2VLDnPui8uyQdk3ltlb/A4z+o6rwx5kbfyk/IITAqsp1Ns1K9OK0AX0cVp+h1znjWZVZ5Q0D/HYjNAxFjFnm9RCa5bW/3RuUQJwFhU3QGtaK6LkZc6IdTALXUl+RTDDlmey9l4gVCgPxwIXeFeLl5WLooYc0tlrqOrJs/s6Cqqaq1Ne+IeohFyeVrywvqaqqvPkBd1Kzel4Ox9XSNltqYQH4uOp3I81gQ1EpK8lMcVqkmwC243PFObCJm1vdR8RECi28qQF3trUFaN2NIOcUJHk7RpFNtQo8FTF0E1F8+8GeitgCPoMpC3rsXO2IooiehI6ncvp63BqcVH9nThJ1bNHHMWJhkeTWUPl2fB4zHRVICXx1ZBYq4pTBOkKVvb8+TptBUlpr0z6e6vFCZuJVZkhuSwQDHjjzW7h7TYSnY1JWik3r5eThgZJg7eyzm0/U/P+NcYnbVhuNVuMwbM23NzqJut809EzOLrFPbiF3FtYYf/7zgTkXG4+D32wLzDMn7ksaqnYO+nfJFBtNO04tuybR/XVARpFJoxos+Dm4pzWhOd/K3BOfUnXhlqZO+BriOVm51WT5hNb9obnVauPNksYiSOTMTh93TyHzGi87yjs5YrOnOD5iEfX27ewQNTdJZs9avOP5DD0o1CS7ZSq/OCcxoYaDlmKOfNHDnwirmRFeeoDCE29CgocvCS/WyDj2sjtHTD402F1kdq4ShpSOdlnV6YCo2WENIbL+EUJjHgLc5yoKiXDJ0sV2hHSdIQQOwwS9TvLknEArHVGol/5Neat8mgi3R5XtEHsnFEUeBbyr020UHvbZ3YPFEMlcIWSISoUM0NpB7nQGzvyFJIGI8tFBIVKiJFqyODvjKGeZ5IkKtJQiGbJwz/+y10h5jIFhfg1dnyLidMokUTwa1sTGVLNSIMjJkWlB2AolNbwzKI0WMqLMWOVk6XaJJMxmW3Z1qouIg02ZHnZpMTLNO6CcA1ba+w36Fc2RQ00g1pR4StNrcVXn2nC0/7bkj4JdhZD0leb81TgGed+cBJtkqt4H1uHu3Vdr4Vt2/ek4Obv4W9+WTrBclVy7tCvmCLKIFtG/J/Q9p6UXSFRVe7vcSxuTBy54sv98N2/vcIluYs0dY6Sh21CXlfDop+C9Z9uD5ICJZ3wieRBG17SIWJURTb/oe393md4Gixd4q+UXO/v9xYEJqfaIUhKBRQTmhO12E/lmg/aj/KrSIjZNJofEL0MwpMzelXtN6ISmNk5h1I04R055RoKyQCFDS4VBKHjS1KT6WoadlRbGSzSEkSRL5VM3F+TLhHMi+IsS+/Fd1WNcPXK9ojOMx2FVh0S7xhHIBk6vHnUoPkvkOjA3ry4k2qHCYcevCj0uEdUFY+EXiDw/Eg9POMMBcFod59qG40JsxntaULK6mvedsBceBQRyTrKPAger1s1Ehqysnrsb1Ir7/nqGGWQeNq+l2QZk/GJiTQx7F57UFUCeqWaH3/Y288SA/yaXgWizda0m3DRZpCgcV/vGuMZgRcACRU8cYavYTIDKecZC6au3GFgR8KjZ7UZSqfbnFDd4Zp0tprQKjuXMYx+JePles+Ig3v+B2ue9JqRNgfkVRuQGVkjmdzyxWQ/uGXcfbITEdPWtmi7D/HFItSinHjyoVyAGbV3UI9k+ZIKRRgD89//7GXFgqMlqJyZMf/ktNG07fXkX3cgEpMGkdwm0k+DVEH5hUahT6VxB89accqJ2xZ+UJDwro3aZBmy1HAnz+0Gb07czxGDUJHpsDMWz8HGyFHzrkOyAkvxgAuyPvaB5eDfjHLEfq05+SMF1xNF/CZty9YsKA8xef6h3KyGnzvirS/k1VFiq850PvaNxgNL2BpASu/QWNSid14ARdy5NwQADu4z3WOiLj6/LM+yAvzSfn5ZNvHZRALslN8gYqkcaTg7chUWhRZW1OxhdkMcz0SD1swnic/kvQyBmmKI1XrYlDxOM4M5B+1NGbbQZZPQ0rKOB1N4r/8wvy9YWwMChoX2iFDxoSBfiJv0gCzHg6qZksWNZioFMg0guPVGACCT96jOb2Opsf+ir3+xIR3aUpxWuqkb+zffrzBQ4DBoJCYwFZc9YSHBCNB99CuyrifHp+P6SZM0jwZ0V3F4SQ7NfikC01ztXfmDQ0gPo3a1IiJJPlYiEFfTocUobpFvWttIZwg9fJkIi8CdZ/eqEEoYK7dqwHOnQzTFxxZdiH5za+FRp6W9JAxCIr8exdgmQidGYTSmj3pM59YlUfQN3Q+zXvVadHowHHpRCn17Mwm+shOibQ/AH4WAvGZvqu+0Cn4ScsD0i2D/47Cfb8BxKF7Iy3wesYHADIRyu4pPqb7ETRN0FRUdyJJ8MIsvGlVQkGOBn/6yB4r04Iy8fwL5akjJ89CbOn70sXQPVF16oiJo6LGR9liC3Vqn1+3bWaJVHnsG7eCYco1XhN1VNPMWm93MJqypkLR6SxASGQ2zTqOd0zVZHB4PRC3W0+iESRroXn7invflDSb2BOpbNTq3eouSIMWM1Fq3qH16Pc/PiqYphlTSCkNgJYn4g8GOQhqr4nLQupp9yPAE2fK+IS3ITgFQVw66Th437UnxDOkJKftPaL5awdlSZIZRZDGyUgGpKzmRjFSjH5W1uzZs/Ox3QStYNb4LYJSq3ijHWVb5XGgvdSATiqBZ5ZFdOXNrfi4dJnX09V7NMJcKW2BeBTkEmj9C61ojuYWaPlj1aBlkyGjdK1joDfqf4BKdySiVtrntj6I2R1UgA4sJL2yVWyBv0SfBGWBj1FAlJefytn6W0RXYc35UaxcFNx/vMwdsraJVNpXhE3yLL2A/mjR6MDQDwzsQDfAjASiNAeeqILm2fv2HTvUHUc+PAOS887cFZoTGAmHHzg4OFRtpQYybYoPDnqJVcWZJuM6F2E/g3T9NdBcccfViz4d0Mlk/UwWsexwiZCy4AvAdA+HaHaTzb8/FoOw5upi/mFa+MAiEJxK3r3PqQxHKYlEYZU11Xy+Nn5kpH1ER123ASaiWwNjGfrp9rIbXU4ChMJy+muBRZTAt80fHb/UBLi+J5Bont4vjZdPqghNpSrKIMQK06SVzCsgzSnMtZXdxLi3Yp+r+NNqmlsrsqRSvRXBAQhS0otvizZiZ2QlHL8yjp6jeb5IJAp5luZ6la14lTcfJUfdAyBCBJMIs9xKUbY+YZ9JNbKCBQtemXYm/o8Y4PrnaFRY+HgpdFb+RqRqzpY4PGLcuB1Q7u/CWRFSrwc6aZFGGqWb+I+1b9xZMKkoyegTrVgw9GT97UgaJbuZqXNg4FdQjSlrfmIz1/WDYDRahKbKC0iE941+DGRTGXc0KLbbryEyC+b/OLEPpz+jMOym6HagvCHxUz9yaWGUyGH9gdWxUjHZa1P5JSeOmKYonLwmXMamnhCYDneBVsXcJDKOmxDn73tVikF7Vc3+iSHeWFLGZlp8uF43N7QKppkB9iW0GKXhoz7oZydxYdo1+ni90B5lH9TxIblKTHf3SwIltOjW8Gm3TNFAgqkkEKTmnZ1AHx8OCi/N60fjQc98RrgeMiEwLhWmAb8bGLIUlr0HOUnT6fVj/Me7jMG3KXQyWydAvPkiiG585EbTmJTvCXlTsDcs/aKvlTkMSGk/MZnEnqqval3uskoy5STj4yTbbFF8hgsnPDKnK8CgJdtcWqQXVOugiNyJIv47Gx9g0pGtrdbXAcIfN3nY3MLvxfrdYymyONsJKg+ytROAXtcLgXPsI+kdYL5ottiZ4fXy4Xki+bBpHCL3++CN2v/Z2/aP3OL54c+kTnmCDrLaIDzhfInDcOD0EY++yoxKdf8TkseFk5T0WXopCM58MzrAfGGtsaFnL7N+tZ2HLtke5kQRJF3xI/T7wdn20fROy3KnT1h/TyX/F0vSP2CWk9BPxOcYzGgP3u4ADMgWil8T6mt0qOUNnkFzKs1NUIRzRwyi709HrxqOpOPimTv8Az9cTrZEpie0UV6SHx0vQBzP9N+hW43ef/t4WRmtO8Ahu+37KVcDM7V0VnlpZyEiu5ER/kG7nIvEAEA5p+HJRo99BXX2AzuRXmp7hXZfICQ3z16p9QoaVu3zKqi3B5ydv66Rf/JHw3Wds/QgTsIIZf3msY7/wtal3FaRKav/G3PecZK8Vr4arfU/keG/M2gbk+yqVBHxCk2HG3sT7kUuGunPBtBauyMaD/HDCfH1AY8/U4wIbQvbDBDACthOTZHNGm3SCfEM0SHLnknuqgJ17mFOVKoi09eAOzmA5EefZJudb0qBs/patKVLvU5SZ7J3oIj/5tzYCf8tY75btojTAcs75Z04Ua8oR83PcpzpKzv2lLlsU/KZgC58tXrZAjBgBbPlOfrnHMH02KTasyJeOds+PbkKzDr5SW2+zV2nXv+2eXIeAvGPv9nVrPXaVnSBG8GB95SwzumxYq4L2TZ/hbPOvJOZF3H+UVJ2Rct1WnfS/QRcwlrY2Agmo1yUP4MJCd1Al5FRzRPdLItzzygudo4cvQTYKPvbHzXML57sqteVmILSpksb58Cd4HMp0bIqdvJl4NRvSCeafa0FpY0WP9gB9MIeAdz75rwdv7tkRml8Pb0PriPgJhHrhBr+0jJsSh89e6MZfdNcPQWY4+C4w7yn6f+nBuudhv9b+auBKBDYMihTtMHlCFPaLaxKltMuy3OhMz+UEz6gbC7YcfzHdcXNS3uH5cPbdz8Q0hFDhfnjn4viX6/p8t/E6Fc4flaCPVtQdvv0UeFzKh7uCuq9e6NU+l7v7PjtkYbWvb5LCMBYDajyUPfBVunw4e6nNntHn1VXw0dN6lumGu4VVRWbloHStpdhox86NzQHwBGwcJu2MlwB6BR/N19re+te32xpjHGKvC4AXpwTfg0Gec2zdAf2PD6m1A29jG58XgiUAalPDNLvYZL4j8pQ00wL68b0UtcurXni3vzoxI2KD6o2FWWN4IpFVkBx7WqnBfsDuJXScDGzRqvX12iZ4APwKUlE5FSHhyqmcnnc3J/Ntu612uxY24JLbP14rko5nVtT15Cvlk3lFiMJLqyZib3W5omDMdbpRdqrBQE8Wklw+ZBQX80L4r/rzLYLqFLjHCBv5EYLhXx7dqLYta7586WyQ+VfWe0BUDIo0ljnfbJLP6PMGO/2nH4rbpXRZzz7pg35ZpuDQQv+OWMhYuHVs20ZrNhLdB6FKtnk2QvlaRKSPjNHww7FzYYBfvpLz5q6qLAu8Bp/Du5pQwvOnaHDgJSkawOnN/rVlmk1vtPbjhYQwYFkNwdPdvq1p/YnNlATGugJvQkJ9TQH3TZTmu6E+HqN4gkd2F2fWG44X4MFzEmmPA8YxtcAHs5VeGBb0IX08rXw2Lc97+ROmpMQw5qCfntXLOeqQliYve06PM5+P22h0Ox8Uf+HiTWM2e88Pvd9lWuCsA2fNUBwI4WgxePruKzeRscJStLbR7n2DnxOPb2soeRccXQ9BZ/fkT8Ij8OvpGrLxBLa65fblNE9WkPv9bbfL+e8vOUmjbLg1KbASyEvSJS99sf3Q9sW/0GXB3zFVE3EIfGgqaBDXuKqubTvuM9mTcXsdH5dQnd5RgeP8boPaM3GTnT+vihR1ST2WN5Tu/m20ubiFdDBXpn/hxUee8kl9LlZdUdHEIM+JQ/MAXbPklv/7bz4Lk8K6K7/5ovRe3dHWe1jgM/E+eJWla2dEtPq0bzG1O7NIGycrNM/9/Nb9ZnlM/5JUR/9fePYGcPZzZ/8Uo36/NYdeaPialZsmJqJt+tSK6dj7GOAH9Lzjz3dr71GuCTvqatEnJNk0Uc3ALdnBj9DZDjdZsn+DsIzkp/L0+2Wb/lKm3vXg62Gh3Z3S8dfPi/PFcTWSXLKGyZbS5H4+lyMbpOWFUZ+RUG4qYkNgDFrNbTR8V+KLI2Y75N8LJwMzmqsmFCv2nVSpnB5jPVa+8UoLKcwz8W7/WiYVB6PN+OjR9cAY1XKkSEZY2VvTBz87Uu/7Stm3Lo0vMcOGFFwvRAwu/pdpxHo+uToZpkyIGOswvVvtxkgW8mrYkAt6Ee3GQ724kfFqkl28ZfsafYXw6Z/w1ABGHzClgq8z1J+Iqoebm3fvEcbv/Xkc8fmQdHo3rOsgZSmRkQZnJpS0kQrK4PTNPbcaQFnlgs6agQ5DQebykwwrf55xoq8g6A5+1lqTc1QXf6M/c74IjYOq+ew2KUsPNrM4+99MsNbBvgu/BzYUoUKrRemryMgmQbzY/XBj1XTtOCMBhdYj85SrPTKbY2lsoWzXycQ8yy91tFNCR++LK18lGmewtr+1MkkOeJqzNY+bWB/K/oK1DK+9u8sgY8o4+Y8QDzfdOPfKYRsU8L2i5ffybZ2KQ1lukvsqJP3RY/WkrcGptXQhGzcxKL0Cl9zqZwNMlkA1gcHD2FaFe5FrvoYYSEuSuKZmWIulbNAJhPA+uiAAPPYKkyrpYp46Ikl6eVFNvcit6gYUT4uCiRJHSshu0rSrGpnPQxR0ZVmzKTZyZprYlKVBh64d2mMYE0RQKJd3aoDm9NJQFW01uzoL4BVbF9ECyFkGjTJlmEbrZu0oD2gVID0fvKOgv/YsAUVq68egDatak7mVlTrIqErxZyV7a+M4YH7lsYqbCgiSFCAhp/E6ydoFeZRtJbKnYuovk6rKrmiuaseDa9uyzLVVRXZw7Zg8ip29bi5tR/mcfU1BExrm9NLvj6jazsyzHW1hbbQ/yD4gjL8C4ZDEPsXM73ygFsslqN2UEoJvyXcd8yEoDp0ZfwpPKbV971gMdhKYByGq3F66A18O7VlXNDyRCrGIYjzLzOdLjqvAs3ARFTGATiHZ7S3pEeJX1BKFevdFOh6HZ5MxOMiGaMtO3zsbq1qTjf2o/+lPzyjGTQ1DjPpUaeDa6nLVtyhBhYbFBnO6Frj1sCMCltcaWjpnM3jQPdF/kMMdfuo7OU4bfytYGKyy2Tp3wqjNEJbWlsRMGpTSSu9pfiFo5+EyWRJ0B+22ExRStFkBQJBFSUKy5GQMS0Z8EjmnOEmGI7RgPZIjftSAK+gMCbjOhHMJngpueUy4r8eSmGU5jKYJ+M39otR8FprkJMcpTMAUq0QBK+c4wop4DuhUQv1SfV/wxxDjyIQY2GtK9ygwFF9HtwIznFmF+126o6W5NKU4GwHyRG5NTFcE1+l1qbmScfW/0Be0IIezQ76O3Ml0KmKoh/aUFh2S6HXZvpO0V7HJrf8QMX2KUcxIZ8YzFNCEiulucXClhptk7/eIuDrjMzGXH2fIeS706M2dijMPr8abGwq5NeVpLrRNAZU/ah87I6ajBBoDCK/ut4x195qD6Ug8sGpOLKMVD8s3eqROgjaNi7YV/au0WkYeHpQjdLqHvHa0O35SsdsosLEkYlECeXJubyEgphFrHuFtKzZmjI4lZA+c9a4i+Z0YFCwM1RDVBL+E/QL2AsMkNKAwvo2oEJtvTNtHIq7zyXUUUsRjY0XQ8xhkoBcNXVhe2T6wZ9yEh0sjqtcbjbs+X7Y9agKj+G9tuSMipZnD+2r/hu/mRn3mWauv79faKjiMz9+hU4kz9G58HS+6SEPlXRXPPxXDtOSUsX6mOg7di7HKM3F9j5KsWqqtiSL0mv+zn3PMmiaTxfS9XT4Z92w3t5RSk9V+hgm6rZy2SvV7L1lFfDRmAUn2H9FlUNE+4XC6oHppbvcz9fob6lCUvJMc80i7Z/gnGq1W9d5Wzstzmjs6DcwxBWvInh1QO6GFmgM1NJkzi1K66fho5xoqR6EAb+sjr4Sz8pQhiX2Bn1yTq3bApj9+Sewbeqf8PVHVgeoAQSQGopCy4Y8MIEkCNOJnxDt76ctj7QMpwJXTfj/Kzxo/99O9dzat7L2COKTPBj4NKpdz+Fx3IQKLi+ijahf+PAPr0Cr9w20vS3bl5S4jWTVIKNXi0DscNZYAXi3g9ezv/292KbJgO1TPTFBG3c/3MKpI4E/O3nbIiEB/0u5/fI3BTnm7D/FRMceRnXEqr6VWHIReCmtRUcOWfo1LICxu/M/IMH9NCP3lXMY1jS045G0J/VfmdtfKigVuyWaX1okiwoT0WWh5wUvqKl7b+omofGBOVEPzSpSMqbCO7fqbRo72Vr/c/mEdEKroKFpeBrfEpDX7DrMR8FT0JSH5XfRktqu8zZdW+U2rmkrw/v/m+JIHQxoCr/aTgZubOl3PVbhwrq9yQjhQU1TanEx4usIShMKsxcYg4bMl5HhdtSooHtuk/fh34nUhm9JC7uP+q6uRoj5+WIEPiCLlRiLqI4jBZmhV7M19dgi0qUv5ZIR+RtGTSBeMn9IWER0YDohOQbToC5RNMhw54Vt9XCNcp9awYuPDZNxe+0XvJHselgxHPa6MvA1X+hLRMBrNr+XFcGv5yoOJbp+DG6TbHkeXt4k3vJQqGtTosX5bR9pa6sFkjwSSFcDU+6ygC62RDdfwk3iG8qZMxoXBVSt3a90kf7WSrlyzD2rs6JgC1wmxcfQzIwpmr/t/BN7QMiMSar1obIi5m43XpG+vUhLVaLaic2e6nbdsxpT/v1gcn9gOYu5ucc8qTCSpEkpjq2HEkxRQzR8ZDtGbS4iq8y55NTEmoZjXjYq79/7r73/PHoIHGY11VTUpK9kujUZqob0r7XcyuhKhAMaTr5BbCMgSNxl5XyHIsi339hM11GbUTd46st/2WpYIYdwGX86d76z6EMHvIkCysLjmP6S8IEChj8GBfRVMgAETZ9TYDxF5n5+cMRAGLebvC56RfCHSZJ155h+G7qa9UAvWp4zpT7mcVUv11aqmokVx2RLlKE69WUM/40UDNX2qZ7H1vTrd6QRqW8dn5YiufvnrzGv0wq6TCeCZ7C2/HOmRpZryc6N2kZmS8rc93YvNCpjRA6QNExBwigTVDJ0Uq1ZaM8i4b8ndF/H3GVEV4WHRC9QTpaRvxONYcRDpdGYiCw1O1kJpaSBfX2LbwvDfbz2EvbnZQhO+PEEjYB/5XQody0H5cW+ZDJW03WtPbINVRyWE4w2xWWylYTvRRJEke4Jvo0xo74Uf1r6uvt5nTeCPYqG9JYhO9au9dwcLdscyPlQa5JNxfSbiu/LbPlIfo7yc+kEnAbNzyRJfpW5PqXtatkl4AOxRfNbBqjEl3REdyXKIAqwJXlr5n8V9QLVk0dYjcb1iiq1YC8/6JLOcSlIvNqM7rxM3nyD9aYeX48mmkewXj99LUBUylTNtoJzZbS8Syq14fK511zk4g8ZLEla0ZFLBpdUqqxLkiUMui3ykoEq9+KEh/FSKr3QGGfdIfPQHxOGhxN+QAenrTD682wDfsuavBjE8+Kx5WdJFf1+K1p7bpOV7VMXaO3K3Mg0ozY/vjKe32Ek7wGMwx2EkRovNDnFR70kMAhihIAHgUT2+wlx9R+W/2CmxmvMPlKyYIW3qSMUo5+MKoB4dQ+Tp5H3eQJzJA6U5M6W5dxi0sWgxClbYkin3bxpT58TOpG5/AlGe/1nxZ5pTjOGopVxLOEsZjBkWFu/zbi9tA3KAK1RzTlc3mhfOk0AqlWn5SGz5cl1CXA9SHQE+vRejvNIi8WHqujTacHiqcYCKR5fn57wdOC9vLaBmEud79lhuTUNk/KhCQMWnq2ReyZF7N2Eq7g8Le7FDGHTaFoMpkjhHNZvVasr4NjI5A/HeMYazIcarIcbQzv69sypmORD1+243zwi5h7/oDH8+RspoYMIV/P3FMX3ONL4gfnEcgDY0Kb7bYZ3sq8Xr0lT3qjYmJPfJHWZUY3d//Df8JAFQNFlCARMj2KDDNoEakgmmWuakq0c/NP/8/pUkW1bugJZMLpPQwcSOuy0blOh144gNpDoNa+zDmOopUtvxF8YHNpxM2Eumds5GT+Y0TrvsUJjpYFuYwJTJu64mJE7Kx8cv8+O09QluXa+SIo6PNhXSi1eS48opmqoWvldoQcfhHbNKfQWQbwgUOjql2IaLNG2eqbvqZ3HnakLqWPHlNSC50EqwZFcqDy77gpeAxUX10NUELOpLKAkSoazUGV6yECcmbiGzb50zZi4alivJyykcbLHNY2UdGkKwEN8Oc8FYDRhDdHF6uZYQVSWNSbTJzqIlMMjg3aiUrMa9Ai9r9ZMaaLafUZlUgS3qFf3f136EamN0wALPHILE1O943xbaiP/zQJE0djhuuRjR3/HkLcJzts9HJ7t8NzplpbI7ZP527oit/c5QyHP03QxI0UzLy0uPd86fTxNn05zufVYLfSJITukuwLDpM+BZ7SVLvehVeBhYtqByzQ93vVOBxqD//w+DotAs92PTKWHXHxPOSVvtj1IQRNsm5zkbAjbCUKBHm8IQXmC8K+MyoNrlfQQEQ5fvSd3AlpAWGJY1DTSjOPs7kFRoZpUdsrv2tJNQOOyrLqH2d7SyhhRQfP5JeFbS5/NO98v+/vFTNQWggayC1uGm7zdsw6VwFz5prLSri4EDFafYIWIXWOaa457CqDdY0tVlhQeMhX9ZtAqntc4RC1qb20vdx5ImbAmi3RsJldBgW/ovnj/TdPqoD7gQ2i8wtAfvjosSbISDn5nZCS7CC8BQotAdMXusmOKmPcCuFBhIrHpLVllj6EvpnBgoozWgUKRyGVIGhOle9LLcWUUFIIeNIYGElkLw21aqVFxMhaNISFgaDLa2aiQn9PTF/4PdAiS/+lb7oif0pWxO1EQE+a9hG+uqU4PDFcZ6ubrnWXdJC9Ox9Qn1U/BpkK0fIK0QiFNrORFumphbG8ajFaPf9BqxDzM5WRk0gDvL0n+v5d+9/djPSs98CfbVZvdRZvG3QsPnSypz6GSI03YH9cu+4GZooo3JtVnoF0++4+cfSKvuz756vzhJW/aGiFRkYuPGeMkGQVZeqpvBKsNAfMHs9x5uLB4XhxXB+QpXfehmJZ9cuvTr/hQ7rEnYHz+pbJqWcxfV3YVrKCKktzNIddUB2D5ngxnavx0sZ09gG88jrLzINMl6O9RkczP2kighFHZQd/SZN80Vz4oerQpNso7LzrpXZTyyefab5E/Cv3SxaTE1pce0Brd+MpGvG6rCYHdFntSejb/VD/tgDkEGDZxLJXH7N+pMxr+oMsia9XrVN5LkW6OFg/yg0T+fx7/SOX9I8qtttWT/H4C/ysdbMCPfbmXJ9r5N1nJZG70nYsGm4eqhWjaiK2u7ASFnoBafmEVURA+e8E+CqALRJTxuHC2YUc4J8M7QnjhtHx2lBBVyBVFk5KH4lDkJy6bni8sVQ2KSEAkAKJs8VqTp+t31x5oCU+T/H+/ouT2DWvowbvByAN/n5+SzQt3Hm/syYEe183p2r+C8wENIgYPh6eypQ35AN6/SWl6cFn1OAWDINcXlpOiZfU//P9h+Qw0fcxaPmTgTNi2cgia32sh5GpjZSE4UsQDokZyinm0pB3JxLz9Tw9MOcGtYf8wc6d4nY/2ljGi5UfStH4YFCgvlu2KSK/0zNWEUc2jo7BjHGnWpZ17S4tJUWJUOROOgECAsFQWG6Whk7fQif4So9vhHE4ON0WFR2J1MEV8/sxfIgWnjbft8HFurpMaj1VWxOFZrUjivdXOdw+qRaYfkB8J3+Nm67endQAhImnIVoRnmxOa3GHh3nab7eWV9RZWLh+Iz8Cu0zNRfiBkq/7tMYKbwyzGmZ2qTdHRq3187qnpKnY4okrgXh4wCXbXufeFHQxeaVljo8BeYTFmF4+HBOjmXnM8ixfs4u7eEpzs/KJR4Ex5oB9sDBqHYsH87onMBv5to4Jlo6hQ1AGaXADQokg+gaLLN4U+uSoyqJcc1nr9ss3avW1qIaFku8dBPb7SRnZbqNizcaNWn+rAgmcXncn/hNf9cEbQqdw2Lg/s466YYvFojqcNqtzx7bGpDt+CvqN8Tlp6PLxix2jbYEWCo28K0nc/s3q6pC++q9Zo80HFjxHjwyeMH1v0ZmxG9e09M2fKK/Kxk3xXn3mUpDTjP9xl0HKqLjTrFKPjV/mpDmW3kYEJU/SBSB9ddzssFZ6AJ79z50EyDP0e1Kmsjx6es3UE8K25gTB2uQ0kDjWrlrinE86/EFhwjLpiGXDkdkXPzYsz6qkegPXa8Wr6JGCawQmJjx0YLlkQcc9ZFlbVI9HWdpGUO6b0OJrJP7/VqPzNWiiG1AQtzB4AFTZPnBG6mbA3D/ZuV792D7n737qf0xCYMcv8Y9GJosYCVJFQ7SS3tSoRZYiE1VVxrN9L9/w3nxzs0HmR057VicfYU7dWzZ4bFe9XXmBPOyC8T2OoBD+qSKPxeAwGh7P9wYuysRcvG7LDJ4DZk0cpHy39YcUWcb9L5T/p+oqHefdXKCzIWnXH/HCZ/IOv/oZG/NvLx9QDjerm6I/lY4CsoNnjyG+E3vvrtROfSh/1Mxbi4kv02so3quqKWlciHB3U9dobx/PwD46F3taRxqao/EBsDGr4+fzoDMbzCTJu5NbRoFL5wVzal0nVlYVna7ItTjfsuDqXI3FbSccjGzNqPizu0w3fLUyJ11wDnjFId+gt1sm64SevGN9mov50tfybn5eAVjxcK2NjnjMdnCrLsY1WFo/WhIlsPDMOj55lxQ/vsDqaf/VXl3srh7y3z42tV/VGdJ95ckJuuqo0V/l3QlYvHGIbjVRWHS2SVfUGOa/m+MYh2lr1xRNvnciszszSeyZvIXVCN8GWvtytneW8QBeJKQV+iz6tOZjsmXu39u75+/vBmMlh72OeM+4qBZHOk1wEvk+aDaoqV2prbMKTcW6NTj3ArdBSIVTlczA+pT5dwxUUo+BSovfGCCx+vpRv0qvmuW7l7f0es7GzP78v/e8lHss3YA2wOvZhze4qyQ5aeYhx8bxBUJLRMXa0N5f5mqJw9j36C65su7We+UsLlriwWMH8unvQ7jGhPDPR9SmzOd3taLElsVBIgSgjpWFFzFw9XptYFFHOZmSkj6rKc07Iqzos6AwK5Equ/InTJMVImHhuoxLOzMUQ8ZzCjLVQAbAgEVmjczu/KQKyPzo0jYxQxkhDi2n5kThdAkRsAtKz0ofkmrTj/DqMIw8ghjNaEp+wdw0Vcs3jJfF4AwMRfnOOIUn3Vm6dNk2Abn/92vuZLW5/B8HP4n+EtzvRi1MRwJ2WydtGor3vwaaPtVhI7MaUtJmAHfFz6Z5CpTy+OSl9JYt9o0j5Vxr3L6S2HLYLk/HkdXFxMzTE7WN1cjED6m+Ni1/Nh/dwaB3S7WJc5HBrAw9zyjxOSS/6eUaAr3ItttdgwT70I6/Xle11bd/Qe/08I3TwRb6MHbKTxMNOE2D/ZcIjowDD1hNduuuYhFWFo+pP3QIctVOPbkWd2gu8PV1QjUj/hwan8QsotiVfzOmYXU57i5LxWzrebDvxdBPuOLIYsWYd0bNJmPICaFP0g9k82m2APgbM5i6f607PP17FGF7//p+I+0vhgaMlorBAy1j2Kl6WMMd9QoY0Eb34AMDl71i65lDF6QXMbVgKxhqXvQyLJp3DiWi3YLvqqA2Ydbp/ZLnwUmi/76k9O2uTygNwKBe6oFev8G0f1YhXt3LcuKtra38TgLCpwTEkahjtcnZzRzkgxOrqAFzskgTAQU8AItu2Qb9yzv3AUzgPgO+uiHXTqxUOyLaq6gb/YF71e0B9NucFdOEjc5qL4Nn+dYgemg90Z2oKJgSM8lQg4nAEYkjjQ8NLrnPpnNxt2PBMFb0KydLXeKdNSBrEiDFVwRq6mKNmVKIJgEvrn7MgfQEbkQ+9Php0J4OPsUl8+g0LJ9co0Opg1BoJ2SJzYRVg0S1uge5lfZk13aGAplgyGZPaxvRrSpmE8ZKYC5Gykbug8gLQHD83oCq0PNMynPIgCqW641IkluwtddPoHD6ejZGNYkR1iS8fR6Xw8SVwFCDEIn0E5pFajAoBUf4fwqiCLkxuphg18jHWgGKm3kWCAnkCa6xSkb4oZ3xWDeg9WI1lKsIX6YxfvHEb6GgIFFJFQgp20TateFLCYOg8ktSdhlGJdtEiRlJMLolxEMRvdGmAW+oFah9vZn2sB5u53B+sG4obhGEpicctFPWHnQyOrDWxINlhoBtTW3zH3Ly2/wNsjgSX9ZqPdIUelMJJ7hRKtl7BTLfFYSsiUCXng4erU09c5CRueQdwpHerUqhwaQKZFk83ymCUxISfFiqPp7inB2qMFEqO93YZpYpJyOuhs/5Tnp1nJ1KqJrMHBf6T+9vAVnEkcOsoVWlZFGAk38X8gTzu0SZV7lwKIlzijKeznOaVuF7kSTITCRMK7FjK9xvHEQuXAiimQEPUJSNZSsR5JFBGW/Gwdu/iqeJoCvLlH0zwYy1QWlR5LUmZQmpQ76ZPI4NZIJaubv/UYnFSN6pdxhABz0IlBOVJakr7vamkaK0MBPdB07MZZUWlJxPaNDfMUc0IOAjo4f3ynH4PypRTjJVfBVF9HAteP9IiCqdMxnkzVfb4VU12Vg9HE3sKPOprE1CESXGT8TwNoVHvnBGSwFPlCX2ytfkR8LCwuEBb8AVGfSQ8/TvRbNLigS6fKtc6cIPDAg4Ge4ytMXv5N8eqHe7sXZcx4cXwE4C3ZHsidxqMyfduNCfw3T0E6yCZ23Ko+NmaZ+ag7lW/jBKZmV246rOhe5a02CgTl8gVGsCZwdj6g+Uwr4j3PqiIBReiNnzmtoOa8itiOvXUaUVdXDJwTGTrcOSyOz0KBJ+VMrxKnBvs1Q4G6ImYeycei10zdrQa3qPIs0rEiGQs2YBlcXL8LIoCMSaPnQPPlx3pzs1+y2ZD9QQ695+9rjKU21+NikriucXgSfIueNJ5cxuV7fgj/yCKRxhRDeXxs62KCF+dgJrIRqY4vP84j7PKxl6mdJi3fOeYAlcW73XbFO/KWaJ1TVVP0MSt79qmH17LFKxxm8dj4WcCRrsrUXwsmBnrncU3GCxN4z5V9/TqaKrIg/wOjs7y/KWBBFQuOi6ZDIWoME6K6DKIOaU0Au+M+MvlkkpRjEESqWCWKYN+UMeUfuto9r4UKZ8WdEHxHC/7QJ5KXaOUAH885Q8TFPEti2uZgrVoS2Cvd1Mhcf+pEZEpKq2jVAEwGH4MGOXUqqUqbCpn17LNKJhPjD6yGFYty5IqCTW9xRdH+1A1Mq6DgXyJqLSzZm5Gboy1YK0+xjTW+y6Ghno4EvASdEnudISBNzqqiXT7KaoKGptscT6gZ+OkAKIPE8Q6ooNxLn5JEhkRy8oX41FrzbPLTZIKCFPS7sKyJDTlF9DLLWynAUsohbP8sPzv9KNHrYX6/QPdhowUDQwZERjNhxtSc7lRfiAlUxjkwlczZ2uC3U75sNkTge5ZdhU2Clgj+E3XBh8dBYoOCfY3ykF6Ugssyy+BQuCB94gh1lhuUzGLa8Mz/VJVGFlSEcUMZbBIWlApdSh8u7aBm2fEqYXxHmY0otA3SKVENZvc4isBz5zxZ1XLSZSYBPzJoi0xElZ73l8pN51+fTDdGeQZPB8UnL/GLzfTm8TPM9xpidxFVzSHSeR5uighq686/ryV3LNq9HJmH3EP3c8MQtbo9nRpKsT5lAjtI0qHGCwnnMDPlzORJBhSul4iJJ0U8S/hj34wMzEKqQJYsQ7X8PE33AuadY7Jir0aPOBjjwVLwrG4KitvRreO7hRlU27I+P5z+RKYm0WOFRcx8QBOKkMDuudC6fYMxH8URT2V16N8JzTIcmywjBDi56wg5/4gAeYBg7++MDFZMvea8hKiCDwMgZVRqqMUOXWcXi2aulceTlu/U6+H5LOQYE6Uyj+Xm6Cjssg4HlAn986LbTPhrBA1vlX2Rni/CxDzK3v3/WMR/N4GmB/6b8WSE8c2et6Vl7B5DYLKVUZa8OgqB1oc2y2JEJqyKd0abF8w8KsJmGfnCQ2Avh4XBR9jOxDhmzZhHEa8cqqlxtJzJcJjNc+16EIfCCNYFoAJnhBNFcxYEPY2DTRY9kWjHJW46Qus4LFdTiBSQCOFY7EUwgtD+pi4/V2hLfH1wllJsF/XgW5PrHk77GleZbujNEPn1RyLtrVpdi5VbZPEgYSE7/ckCq7k1wpE7GoztgWq9NRGBuGMlRpiesBb202fRNRsuVZjJ2wNtamnzGDPbj7XYR4n5+YgEbGBSK6J4ub3a/OLEzfrvL3O7c2tqgT4TX4OSGcPdax5WSRi+5cusmbblYgesy0dLTdEiovOvRx3M57NL+1qGlXL1HIpxQiq1F2tMRdRxtumY1mWtKayO2TegFt/2M3QYnBCmQOfoN087Cftq7n2sTM3qzj9ARCNVYrCS0lheh2LUhF9udqgbomUqijWIieRt+UlwMTgKLlP4wsfbGZutSJjm1Pp3plsuVH2vbchmUD3YNBIoX0mw6KVJoroONIVz/CgC7O88IGpSUp8di2dzHx0Dq1AteyJzXA8FAuVpLQLyIWFmIy/alwD7e5bOIuLZ7mTqVlGdQetJii5ykAxJoe/UnnWXOWgitoYJz/XGmYXeZVOHfut8IA8P7P7fqaLU5py30FTjVkWCHaZmBEwx6QXn95+lsRG6YAWAtGuPGqRBwSuDxQRGojk6ihObjTkt0K7V3n1ZWTTbd/G8lHbkkj7lKJ4dymfE/nQGZcKKr06pRdUQChUUtRpCI7CUwxne0brpVJe7I4QDylcfKddQul7AYGOqpBw+bmjfsbQWXgpGgqLXEsJx+sKSVEx6HguQZ4RpyuaV1l3s3GTuUidJNCfz4bXlhOWmhIXtFc5uDS7lV2vRTNUJdKiEw0KWsIQtJYh37S8KgTUuCgqgcTkJLJwqV5WOk8hBHYiKRki3xLh9mTGeiQ1yw6BqwLrtlgaozlSe7xAn2vSgtM66VYLHo620rLohvObGHDGk8DW0fD64EOwhLNWFDvc5UgsEX1OGIXO3i+Fo8QguzC+8X5RLqplXcQV15xGnQ0ZL/JsMHdYjEU4wkCF2w28Lj198QWNTixZAIglaBlsFjYCmKhg0GqHgh4ZN0HmZLuXyevYOWJ6AjXSn8PABwH1wemU/CiVWTBif14VCvC789v1tyCd0Regpy48ZUO9EJUmZ2DS2NzRinNBYZkef0EM5IrYrxDP8dhVz2dUoSpOW5dFi+s+jYT1ePn4nRCaOf5/uYkbyAOZa5d70FMXFuWqPosG5bj+d9Toy3MT2ZyLseFJ5bHvYZ7KYLe742PgRpj3CH9nCvu4pWaUU2NhmGIHd3VoHOvoRQHCHJnM99ofrlK4qX+lSbpnGv57h24m9wc1zV+ulZP2nqz/F1EttfN9tTN7NYweqmQReC8668lgUSyTeF3kj+PkIefuH2QIIHbXOOCBWKGMRDSDSEOnEOw7whBL68FkIrAT9+OwzS5RMSakaA1cXltKN1wYv7ww0ZCRSJaDh9EDonqKKVksdozGlwLhsMWi+jS6M6UXNmwHOuxw4mfYVQAy4m1JNyUKTYafvISM+FUavkgMMWM4Cdt9IzkeStioWQxxtIDqcTkGRco6KkxbYWv8klMdhK48r1IvA7wMbLHJ9N6ren1OC6UwC4abuN1bH36YO0ZnfF4Jlup124MNtM5zl1BB3Qk9MjkaBKxKojiTx7yOAEM7P2DfBmtm/jFInLxjVp6kEnQfOCVNRfminSMHYOz1rciKOfRudHjUanMTtiyEg21bBKUxL6wfe7/67Y6shhOz7VWVdHXYciCpJo1iSbLYwV4/I6WSfLeaKtLXuCi5yKA//vM9uV+KENs+h3yFqLIvCYqwjXXVKQzztLDZSSRiABP5nevqDPQFRYaHy84xrcf2D8wtKZDqOBwO7Zg74wd3jJLVBHECMqTUqDZxONktgZsO5WJJfi/XaaPJPJwWlo25tVginJvrbHSotGvQfjP6K3RacvWOhJhsaFF6CgNbmnpxCeHKP9obkd1am744nV0QpqoSLKIeqX7vJevc0kNkaekhaVJdbjPLU/v84SXkK4ICVplmDnnE2SbpQykxORF4lQiRW9QbsIF6UBLiXUXAfZARivOR2TTwxzdLW7svxBxNbvxarL3AFe1sCSZbE8uVtPymYuHBDCkaCYxe/9XFISIwBY5gx+mDMnFRg+TANEVkEFOTIAsrEta4B2yXuBQTWrQGiomPOwkUSNEN1qpPZVfnERdkIVpyVW7PZKXhy7amfd+mYt9nACBYaOz2TbpH88dHtO/eR3+V1rIqKbzhVKVkOa4dYvRH4Nh+H9zmTJWsmKtnUepllhNEq05YKQBUIVaUKlGyPSrcXWpOn/ilUbXHv3SGGpy57VpzJkENEvHKeQuD8QGp8pB+wivXycafOWePXOK3OC2W7/rj6AfnO1zmgY8FVxMNfKg8mM7NoVilOB6U9F7kVWmISHoq7JArn2yhK9gbKwTadx4bqs6AV8VVw0zAOCcieH1s3Plm793A/3a1ymD7FiM/AfB2fCVx6T//76vh6kMFHOcLCS3cLb8Y+i96Hi369/AbvjfReen9nSa7rMmIsDyyxGs3SsFJGucqQprSiPYwUF5V8Tkgf18IpgJfdMk4rmhPQhIsJBv9OZGI5A+NW0XtppC2RJXqt4jc05ydOPNplV+ZxwpjOyhN17r6uqSSwvl2rMLoqc7bnYoBywi/+2JZTxdp4WVpIxg6ejGLDqRHEvKjCFXx4Q3kPfbNkmNqgwNYHFHQebN0jH90nE6HUeY0t9b6uiOa6e8gkTrkLo2EwuoOKvY7ekozRUpl5mRTt+bvJ7Hyf29FG+0pavFW1EAG18bfFomtGdjCtRXu6vYIBfRO8QxMdddkju/4esWwfc3JRqnbhUZTqQly/bpfyN+3xkSt8eObmrOsF8ggLhkb3vaAwCVzBFVq4/5Xv8eZuJGzoaQ7mYWJF60f6tPOGTkArGS7X5XDfsbOc3h5nX9v0gpMtIZE7qEh4UlY++xjywKsG2S2golWSm7r/L/y0XnsrXDtZfFoEr9kMS1r41TIMtda8RDmPVLViT1j9sgSVZV/qrbYc/6ev56rForoDZm0hRh7bn+wjJOvwJHB3MtVDz0PkdPsv/Y6I36RHIbDY4QsIqDi98UQ/BK1VXywVrm4qNe3dF9YF8eTbCN57+v7CghjMf/k9s4F1dJ3NP23ymH27Cb1bf5h+7Q+UcuPDFMklwMaD+eDFEULdR4hGUvtqnh5sv91CZv9MB1F9CxxHAKuAaWXurbQvQrurSlZTLfFQQ2ZzNa0SfghoO/e5n3gWlgt851nWiPXwwjFPxXYwv2BpiYJzIyuFJxdIgNW5PXunfbr4C3IPSAx5w+2euiEo5N9It5ZlkRnpDC73EMxYUHGgpVb1RdLtwcsNe/91LKbIRen7K/S7Gy1ydyHLE+hRaYqRMEu4j+OvhKHuU64iHbrlBsu90EWwY32BIeVkxeAta0XOsyk7SnIslk/8ZWdARtx+OLDzyt1f7t2Z4tNxmVaf6fjOzjcbihm0+UapMMGaxMLQCN3Q6FublFvsvsRl0z2fw+I4/OWx9mDm74zm7DrznTEcirpayREuAiJYgOlju/c/FLgwHL5zEUg4RARqyFpXX/cRhkeAa0lSg8WfrvCc/8sY0hdrxcPZUvj15NYtIR2/qc0sy8EGZx9IAhDiv13xNU3DaV1HvCtz/DYDea3rq9eds51Zqyn5e4pv60tqngdURKPzK9uxW1gRD6r5fMv54bPOxU5M9czw1zV3DRRxV9hfGhIRQSBUJ3EmQbU4DeeSteZJIqgZedynQK7AnxoWJRAiwrFvJ/HLa2gFzSbQ+TAVITf9+n07UOpOO1HJBLPYhdH7Btw83HZ6Xz0Ca+IOq6p3X8bK5bVzWAxWXa34Xt7g+cufwSEd5BPvtgSgIHRDKAUQcBHeYuhGEx6RA4H+NtASocbfzYWUUPShTconm+evZZF3xAMCAJyB9BeEuqFVqmENUokIVCyELUrSqRH74dLiGFQSYkwFwt39br4J0g6i5kquIX0XRv+U8TYEXcjViwrb9f3gKkpuvrByabWuqR9qdHwdDxAw8GjItDJLL2VfCDn5X6JfUs9DiLOWJ9orF1ZGJJw08UmbCkyyG3C9pK3JoMRCIowIb1gKlbGuVgntB9kGh5v8tsrDohwkJaIO+e2vsX/Gb0/RNHYGxgVmRNv/+GRsNeHZo74OeVeVg7mYYn6Ztyqd8Bb7MG4iA9wuPer4D6edUP3WtGHTxRSuuA0Dn8/eRj0XuKq/+wUdldBlHc7wSjqj+VYCecb31/0UoY/NWyZ2QBvmBt83VL/6cMJ1APZKovu8qFTA+HuPUQI1Wa7DWHAsWd34P6z+AiAvXKMaU5ziSB4kncOXJT2wfbWtsmq/T1vG9viuGpz8zlWq71Xu53DQSnmH1tTRR4klDi4XOcLqP0xtbVYTgHNWMAz+Vvdx7psFcpHXE8AQfAt+PBfFQBEsg3/f2hAyEQPigfVVxer1CipWhKeqlZpaUoCA+Ch0R1IYwfryObwf0n23wNdwUd5c64M8vkszqi3E32H6kIDQ1PJ73gzdlqXegXNamgKL6CcFGLzXDqIDZOzxTNecrEFlQ9z9+VpGKkyLyIxOnXFN6pIrfMLQUYQH8bR/BT0C2NAL6xmXcyKtnizYs6stFt+lLp/OK2MunU478Nm330ArTfcF+GdgDuReQ1c92bk7QXQAdgHb/yxbBW3m+kDtrsiaNBNw2fOUTGGtrKoUC9JNi08kj+4VEIdAoDHs2H6+FyK2vWKgIvrPtX63nPJ9odcL7z39XgS5OH35GdugMeCUyqe5FZkh8hqZ7JXOMqzsyqdbA4627jMDh8yNZCMYVEerSTHF+9E+dY+ieKAYnO84iIZ4eBAjM9VTwUzwBzFbk/IAoUQ3T4NKCOLLNst5Zb0ifyXwMgn7LxAfuAT20iQLPrzNy/e7J3kNW8mokWe6pu6rstvUBRTWJthHGVy+U3zfXSw6Plx4tccL4F5934b5NHGbHMiPxq9iT2v++XLZ8Ek9bRKSHtW2+JIXdjd5EPAMbb4e3i4uUV0jIFKS7ZEDo4JYALrNRJubgZaHCyFhCDK0RcR3kcaaZbW3XeOroJXQnguMN88XJIYKowuVlYV8JJA+r84fCzSgRiImAIB8Iwb8LNZDyifvbHALeOcw94hhBfMvcJZcV80Nmk5Lfy/zr9e/wuEyYaAAD6Xy2cPBKR/BRye8TuVx+M8hREfrGbODOl9YAhJtcGSQtphhnmfzLMDuqgMEFBY2267zMCgNhOw+SIDNgM50BMf2HC82Ipz6odq1YuN5BxU3ylF5CRsgLX0d+q/k28d9fLb52KJ8IjGzRp2Tjh67uKErRKoE9Ec9Jz19YWWdQe7xGIDUPCV+WAX4K2IHfhwYOnLW4ef5D0X37g4ITosfO7/Ez13EYfiK+ElcV92FymLWkP9FUt013oj//9W8aLt6nGY7ysovI50PPBT8d+rEFJX2i3hY8Q9HAr6zx1FiQF4/55Pz8R2jPQKhQSeN8vc0IkDeCrkQ5iUmuhpeBqb/nG358R2T1D4LMkBZkzwO1xGogA1j69wNtNAViMjfdhqrIJgQSomXQMVAVUE1frpNlVNBN2UmYGTwo1EnCD6b4mnwhbFpgJyoloPqYNYMEfFovZOPlde8jDhn7nv1HNDlToRD6NJKlJk5UEzw5qjZFkltcDLIGzjgpuZvc2U7T3HSynq3fNbHdYfzjhkuZ4sSU5HyBfIw7LiBQgzUPuMj+3Bii79mBLYs0MuGsCwWt/wPfI4li/tRvzVNOy2HJB1dEWPxutcnDm/Shpizt+WF1NtsCFsoUXRNSkkfZwqCBPRXKs+DCotXS/+DPfP7X9L2o0L/uDA1YpTvbM4CoP8e2db+BwJX9hRrlksrtUV0T2Sng2G4XmpsTJ0ttGPzHxowETt3b7e2RRDCI2NpBzg7pb7A+iJcIlIk5GNs30Qa6C3scWeBK0FbDDgeN64LOJuhH+kXwYvTRb3zWYtHEAf8Ee9aL61LOj/jZm4BC1/wzI15HZlDSxD/YpCIwswUeeC1fBknJcWthyAhnCooOpiisAQygxCIlyFB/+0lwk46ZAqeAfBmIdUrpR7GSkRu0ba5UC+VWTugd2z1sBCTGITNiwJMTuqvq1rSaht7lIXRlCNORl+5Vav7sf5UHJBbY+TCImjS/677ugzAf3eOFe7vRcVsKLNI37iHO6QLfatpHDz/Gv5WD9hYyLpsmJZ1Mi4LWs01qaKQmJx//+jCpxFEiO9Mj1s8M7Z6X3exXrYnZ9KVkFBoe/iQECnmM+++iM+dFms9YDY0MQHTtdkKbf3FUSEwxV9Wzwct4gS3YIhxv9iXQthn7PwV0VQ+t6IuwdkIhbQIoyCFDpG9o9Q5WGS1CT4gh9ZRSsgEDikOtIX8usd8vgvESFg/jkYBLbAFZy788CBahRUAof+2lifmhgqFs3WEULZTXVBlRnkdpZmaeI3WehQjmf9zCgTG6Lq7Z+Kky/xFSSojEuTvcnZPSmsmmiUXB6OEiXrfJgggX/lOAjspCZg5fHKwz8uxdydd/bkpNWJbTmH5H8TQjxdczNKcARPM/jDIoCmBQSi05RhO9ixrBS40NPbLd1ll3sgnMUO5MBCfM/u/x3wK8qZC1ZfcblL2bRIaJbrHoiRyXHLw3DnWSwmPXe4JovbfnNSuVhlaeWXxG22lfBY95cBbwSQtNH/6pDyv/0KJtZ424ruK2Z/bCWS6GcOT2QenpC8FkT5jb1j4uR/Xz8g/en5T3LUQXSwSJ6D86IwUmGpftwgkrKQRkhTVJFzWBExGl+aB58rDKnLZNSldcG7geZBBhuwHePapZmYnQcdQRqru6vTST18baBCA4sLyV4fdPq7Frn7GsDHhXcPbrIHcpu7a9n/HwdYPrh/GOPkWuZrPn/L0EujIpGvy645X4cXr/3X8Tf/Wbio9+l7KnvYRut8QMD+FRw47C94gXKWHM3sIJfY3v9DiyDmv4DW961B3eqapu8BrhMZdMd+fPjeQRAmJr76/Vltm5+94Hh4wNDns7dhrgxmRRQCC718mGb4ev5ywLZeKltlza6Abmza0um6WwglEpnMXnIVhkE+aB+InhltGQaJvsOfDaO/yb/HxQSBS6DA6MHzQHfFiescxZes1L5H+L6i/MDcdbz3XCYhBzxgm68s+D3yPTgLXkOugXSCGbOxvRy7zdy26TnOxHFrzKjBc2gcgLKFepmdsy0Du61b58Hh/VIufCJw68Tp3qadbuj1/+xAO99azj94q+flZgspGTKNA/C4p+GhK9utpjnGO8pLUytb2uWQjTa3fvcHOuoYbW3n4hbXqklSMYVOZdQMM/QM/bVBTyVVcTtYhkz08sNIOjPa0nLReoDP7fIo+I3ASdOk9lGspDpdxUr78V6ugpG7f18Kzbr9XN4kFzXtmG/juvmMqwHS1HnM/fxqXhgd0O5e2XxE7Io41RO7JbWpM7+Ff6qSX+Lk+0YBqz6GDN3dOagDIBBU8jFtxVPJRCT4KjcCuGO0tkG5EI89Btn6GEqvXMN0oqN3Qbp2ADhFJIJ2gsFEIGjPvYWVKXK8wv347j5aJ2iLsteOgETg1cEuwyuq6kVxpVW/erjM4Sq34miZ2PNS+aUkFw6Q9ESUmaIo8A1RMJMQGYtK/q+RxHodYmQxdep0PgJQ8BAXkM/yfs5LRfjiQkN+556iy90TRFS9AiiAZyFrIj/hgd2ogo1bKAKoLUJwAb9NYLCtHJt+edRCbmmiJj+zPmuO+E/ZgIqbbQufzKPma6hd6oL+i/KEKkr2NiXOA+be5YniCOktcO6VzrDTAwwCmSIKyRZxNhWZwjT4PCFFctN99UJodF7wclYWQlLshnBHbNr7rlCyEeCHfw0VF1Q2FIFRKjaUJCSFuglI7z8/M1YkFc+TR4aathKR+YikjnPNWQ8L+Yw07yfgS4/eILrj2+/UXxvhotaWjLD75OltVeiTHgtfL/b6z8Iw27XR3vvDTzJycvF40sUn7mDUi8PPqPSCepBXUSN+2UPx3F/qwm9KEPhNykDU0vcf19HsY5I645CTQ48f1IECkX5ZZaPLYsUaolPcCXsrt2IBJCn2U1xdQVi4g7GMaVcP4/EfHdwzwUEePXDKgV9EvOwv4ET9DBe+isC9zqcGScuSY1h0dQRcCysm0oVhYJ4ottiEA3U10qaUJW3RP34ZkU+lRYYh1NAiDI3Gj3SWTtvOZzz9/FwNl7jZYkdCcRfZyTKSE1jELP6iJnItq5qcg/nmUlg4+OjHhdB0HCIiNk0MydaX0dYyLA523Y5KOkOeKo5Qtktt3T34xk8s7nz9bH3UcgInZTS1JDbfpm2e6CWpbNukJPCg/RbFwWx+rMkX4bg9zXb/TEP5IAgHBOkGq20rB6admTUVA1iQmy58oM6+tO/z4ZLINlgMijkryhf8Iy1pKxXVAzgBtFgNQ7GZzCVOcx6SYbXkWM/MDY2q8e0bhJPbrziUAIRZOWP5byJ2sT53MKX9FtxkKmtLm9cd7C7iRpzJaKayHhhqLvU33ZdAILwflIv7z33/NaJ3c3eXh4R5PakQzfzWAu1mdnMBdWpnwlHE4rnchMm2hKOZ4r5GWO8CXqDv935OzKtzNYtRiFQPyxhnxgXs38yjwOYNOrGLatgTSB7j8nyywC57Mj/vBLaWPOezt5/FEzAK/3rttnC4p+N8nP7F1IVmFDPiYqYyh6DTtjRHLMTaHFXmBSBacli4IPeCb2pzc3jJGhVO8cft7U8iYIyppNZoo4HclnTQwkiaimk1GkPIlIzWvLJ9ucwWxd0Yuw7gIK7obQO/ZAWCH5ctIOhM8QJBFnXeK0sI80mQgZ9MS6vvlcnoVoOhlTSZxPCeaI25LE7xJx0dTyNgjMlOHGMwkhxO5dB15PPtuEkPre48uaPDW+i05HMd2Gl3pz1Lam+Hz+zCkr22bS/QNpU31CX0gxdF1IwaM70kKS8wA2Xg+OjIOAFGj9uP02dhyDgYjmPIOJATVMSgmzNqjCLworq/AY6E2HWboSd0p7IQNJ6PSZ4MW779kqQiiR4DsKghyUYj3ZwOB/ysFjPNBropHak0pVPMyWZxzs9ygFmHak42StAAi5lsToJgty+XJcO9TTSeAHHKWQa0mlhQQqfHAhsS5MXruSP1CGRedekN7hMP0poq6hvjR4rXs7jABjOzNLEgKAGN5maLOTs5gWI1kIvec6Htw87HnY9bfHsQzfcTmy75e8xsCPZfPXmaTCQ6whUivPbs6dTL8V2LokcwLg5u0QZG5QTkOQJBZcujrPgoM5SeQgZVVagh9CTvKQmeLdaNZqUkbXER6F/cBwYh7lYJRYugcLs9BrqrLk5cgnvR3bzNEARHJYfxIgrz6yo8KtiBrbhfzGzREr1m7ckDH2igEPLdgYuDdzAfTWp/UbDDbmH+GOKqkr6WEJyVWFDiUTqUl+CLXw5FmINc2+YfuKyuPfKWaxUu8ECtpoqOPeI1PfufdAk+sW93kFTEEO6yvV0wDYRCZQ4Ca9PiFD28ZmTCz13XHChqUAioOAF5Uy+HEEOaxJbyEYyh36nktei7bBmsge9uQk73npCuxHAa3Z9Jt6HTw221M+mjds5MBoYylduFcW4XeCvJiOYxVBLubknaUIJN9mFkGU29v13gVklK6UZsb7ldIag5u/TaZP7c7Xm9TeIbpvT4rNXKUHXdGh2D6VbygHbD+xnqPSVue47w4XatdYPsOjbT7PH0qcl1Sq0jaABzHD04z/RLej/KC+q1O1Uh8toRXg3Yzqx23fYswdyeUPbPpfza+TJjwPbmggZJNs79l1fHTmrKY8qweoyOZhW3FFBr0nEoshNf1LWW7OJn5akMws0XVxcq7wfm0SyEkjBiKUJxWPp2aFcxFdcoLhFzwPGU8E9zfPzsfvxA5P86Pl6TV8UnZ2wlQJghXg6XObBRzTvmewYSb8kaIb4rRsI8RU5cYFzdKeNF9cSzjlz/Sb+PIoXtUbWd8UQsGyFYtiqE90Zu9Acf+uKLuUkuztRS+5F7LDScDMCF55706lsXNRpVEgNqcAiXpQITJc4eXs/0CA87xGBlwGBgPPU+WIHRs66sfxur15JG6YzgBDc5l3qWwcc8F35kude6tDjal5zP6qghnm00iPyydpPlkata+0aneMxXEYej9nVDaJj7zXlNkaUzx9KOh6hjMvyR8+8w2CQmW+X2mTwHUYn71v+I5tWl4ttCWKZ57/PU1Y0/SyBNLqWOBi3HDTpqEGcbtcmezC7KpyT6QTCq+pYnbtLxM2LumpYesWpq6/HVq0bRimrgQlIPPqZBKZHmFgmSHf4QGtgd4gExDiJNTdDLlSAlZXWmU6TwKqB7ect9OSMOtC01L1MUSjU6YMEPRGALXsEEkbWHc0xV2cebrMATxfa14goU3o7qQAb/KrjotCMv0YkMjO5/7ESZ9PjBIHz7UhmC5wFMgk85UycW3XhZrNLoWWP7sc5CJMqWCCbCPpFfhVCoCKE4KBCk8gHgNY8DJXO+5619mubXkSo1ZZmCiLhV9sqXHqjf/4lP2jatMDWok+VrZBov25FHGYoRF0x453cJiXPPpgPWUsu6CvkCiSeZ0ej4Q0UUQ8vU+ajFf2i7ZuKEgTRDkZGEZQphTComVN36uUjs2l81QeaigWKRDw2DiT7LK6+94lk6YH2/wFnpsgpEXvos3oLbP5lRBdldQicZkuDu6dwn5eIDO323xyiyItBhqSakDGwMzoiuYNYTP65rvxeGbdsMQsxbfloeeKZZoNul2tFuwVsRhEOgb7vwCaknMhrHXHSy6+f14NtOcqvmSPrvBBgm6OKm5AUudJu8D/8ESRyOeGB+l1LgnjoNjHeRewrh1d6vdGP+bt4NyQiEMLYqpnPVGLZkS3dlXdpmvmE13Q7PIN+yW+YdsHRNlzETInAVOiavfm1fO2L7dZsZ5lhgC+3LBtJDR2yKwd7ibIC+gVqq9T6PqimYTzcW5R1p/mmT/bp77T7uXPyBoRu4uQy/MneDY/LiB+6UGfcfPcUZb1kvDMkqDWJKlJiOsCHhYtcS80HpcA6Fds8fuBaR9eiCTsEBTJg0Kl/kbZLjg02iOYkktEsOpb0VoTygssokl94zYEw2JM9uV7e8p9jcwSmCJek8dLnKd01PiMJ6+Hg45rqfSv2tifLIudJDZGWyxyjflIdc3QV1aXPiBoNAcpo4rqjFV5Q4v5PqMYwguIatPllyfsylBxTU/6bOvKyiYSFi6+qzTvs3kvAnMsG8N7y4aY4ony+g6zyX9V8V1x6xsWh2DV4cTvqxNSwKw86R0cS+jU6BUTv5Cjx6IwOn2CmJ39MWdqe65kxsa6z/zE3TAgors3jdHeG1iPrSUQdiq5lUgMv65UijpjLaaoyJV+rYtNDMtRwiI9Ik+TIcGv0U6NnH+8Fd8wFF5qHW9J5y9nxbYDrPuZfgQnF0n/OWwXgN52wjSFT4hMDEf3iFHGO/uJRZ/FVxVlAM2QsEcierB9+wMPrVa3QqFjg+31DMrGDWVN1flj/r7fjt1rrI0pKreyAPmhBJ52XqRrQC8NhibMXuHQ0dx/Ib7A1J0cK6topiFvbf3JM+of9qlU8jOqESar29nql8jczbvbvuneUvRxwZlfioNLGwS0Ct9NntVNfe5Jf9uj2v4fOfeyvHExPzx3t78y8nJlZeGvX359VXFNzgt9XVH8ltsn1pqgbOQG6mvCwYj/ijbbucu/5gty7s44mNxTcfT3OzWo/eexBg9soSsjOaBdIsWexHH92zBUpBOemHx5fF9reok9vt4AyMYSo9BDoN/WrwfUpk/bdH1rZ3mqwk1k3HDx64NIr+jg8Xz8hl7toT4gJUFjoAUlUvL5MfWmFq7bgJ4IueSsjH1nElQ/V293n5dX5RY6/TPhloQsPlFkZ4yOe+tMRs86cbhSkOKizVxX7YO9aFFEAj/Tjig1Z79QTpRHfHrC7AKwCdhco6wqd70OksVlj2oAEvlSoUwtxwL/gqF1tyaXDeMpVTz2OoRyMiaowQkcIiYm0nWQG21jmJpKNjC4fjVk/FB9J/z2EDp9zVfIAHiP1Rbat3JBOkC1vwJ/VWFes8AOPK1OQ37yMPwHM/zH+vIzrE+lOWIHDN+egAppzldWM6Xl4jP48o9wQkBkkZF5/vHVg1T1G8zCxpVi0PkCKQ5iB6XZQ5B76L0xzemS3WHxzz5MIdMsHtSltXLLOv4PQL/br2fVroFgfiwUvXuhv6iLb9OsS9s2dHUMZBN9iqKCglJd163Sl1Z7U+yFFqO7306xF5QXF8HwlCPPopMK9EN+Q9NTGA5uRj4ezL9l/KKODtqHxwGVLmT1MXyfEIMsPxJGKg/KUux11uSEqMdimRVEn3z+KS6bBhwMKnwVZm22QP3dKHPfxaze/GtBhHEcWduuPSfX1018n45On+BRPLR8CntM8VAPl+9HfxX/KXNXd/+I3szB93w39MZN6f/8Gfs7/ZQds3ot54QvJk03nDqpTT4vMlNy/A/fGt3CcOgHYrXRajXR5BWIrI0Cy6G1tobHubte2WzKNfU3E4ODlE4gTuWjHPAp5+aCaT34n2kUc/k5V6X0qMrWhh9j9fRuXVma/Mw7NbKq9O91lF9ZkVd8ejp1f6tfGt3QrD2bmYnM6Zc/sUU4Mlnb5C1ZYR3vDXjYT/2ZXz4hRKtHUufx92VNLLD60F2ci6jUPeGp556ZC3BaugCE3XZZBgX1s8XPed/k2lunB/Z0E1Ns5/+XBDraTOabOrLh55LTVnFtBS8+I9rC6346edKcPqd8ajtawuBZfRNIeU1tqw/NI+O49963avjRYtlvC2HjwVN8BvSwmomtcfMDUIwsePuZ013d9Hs+8e2UGN2bW9zEAqq8cuc000dfWCOKYLsMrJQpGSf8Zn1PbrIueT0LXxOIFWfLKIu/L/9WbdyWQxbUtNcXST6PTl/jVTw5YHUwcuBsevdK0Zp+69LydV5WDn+yNCQc52fPuKcWf/78/YoZK5P78WTLUMv08aoXdCa8k73sgjh8vI0xVBB7jMJhddsnyTKNvnncIhxjgPt1n7GRhF1V2CnkZCdC2rIYsh07W76CZZEJ0EDDl9N6bQFH/Jv4xajS5Bz4f36uZBcWyr4Z375JLu8o9nUavn7PS+5JMuAwoadyZY3jGbFI6NatmvmxtXZgQnHV9/aQ2PKHTDfjv9qN9mzVyf5ayTFia1+bUEdZb6tdfISHPzKfDw7FgzkHPb8GxrP293YZlSPxtImQpQlPzCgv9WVetrOdullcjIg+NbKnmz6hvRrnhjs9QV+31W5pq+9Kx0RY/w90kSze2i9HRW3845kcZoyIlLiOIWx0f38RgUYoGVw5SKdT29oRqGuGZ/DEa8xdqO4T3Zr/BvOkVYjiBP3cR5uLjM4pZYZ/OPX+hesna79HjlwP4JT8b15Ksf+D546xmuhpGmtr9xKXEMws+xsw172eCoK6oDC6wxbbM13Ma+LzBaKHtA79aiXWbW7ef5Ngg2Tt2++nbm5GqqjtL0QVdiB+Ob1zV+m9p3bT6MCEKl3U4rSfpkuXtTPQwdt4D5hVUqPaJ6kPdrq8x1RngxZqd203ZbxhOpw8dIKAQVs4r+ll6hWtEu4Wmv7/05O/hzOuvlZ7JY2qcQdiZ9c9iHR2GPHGHZUx5t3wg5+tR+Q2mAR73EOfJmOQ755uE762SJI1TqaNLrAh0rDNJWeCH2B6KzDaY99pe6JvkzreYkBlzw2OJwrcO+vYLyJ2+L4XHJF/AW9ds4Ol7fXKjQydMUm3GQbssW474stf+52AIvRydfY3yc/bikAc2fFZ41GNb0KxDZgiTvhkcbcZS4snN7Y2w0iWnkrRyChVtYx2596bo1YCROiIajRt5anzBtwwnEe8tZa7G26TiR+MTTxGvgJl1enZYFazCxhpIphsFkUxy0gSWKIy3LfiY3jNVLM9jeQK7VG8qL0wvTvNR+kEXRLDEzhu2mtsVOu/OZsCg+vPY8kgJgIqXxiK3ecD3DvqAvw3LM765acKEeLdrw1lY5OpYBIehTqsZg2aJEBMYHJfc7kHK7TWavwhqO5VemMOtTSdF1qYK4jGo9zE90ham89HM5x+5CfdmMfUXZGZjTATtlqUZcQZQt2ha9cz5KkOGrJyGRentWayYtPaHNQktssggcQMaKtf65ha7BiqStqQUhm5V1Sw463TrGXg/d1E4hLBpcGaESTDMkD5gkSSMGm5nfg1sq4vnyfYcC7SKF6M3cIhnoVvJt86fYtqLb5trwlSjAXXahKaW+htebtppRBX8AI055lZ+uj66UndAtYSz1BcfXJCDDHXKxJherNebiUmNrlajYWp3YGL4YT5MDTw2v/R1h4UHI1yw6szcKlcbxjIpUdBuTF08byT6mzUoxawtEWKCsMo4emVaiuJYPrTcBqd7H8eTAJUtRfQGnO4US05doiIU2cnTF+9yqNUed4I28Lv7V7BUx1MhUq4GcU5VLG0jkhXQIOC2BVFFcfHgmJvYAKyKPa0H+QooWLCWAG0qZfYkUS39ySSzIYWwboePF3dTgOqlEkdu4LOTqx4/JreXDO15EECpaPrl9LqufwiTR+gabuohmOTld1ltv8/F6R2HddxCnQg6vSEcpgDYZrAUK3DqUl71iLEEKZqccpXTzfHZpkdfr1SX/QpLKzHyk/D7aNanfYqpBUItl+Gt66M1c65swwrR7ZdkpQm079EpWIexuaeWCW7FwIOWyNG2EJag5x3QO2zzQZaeaI/sidVVFnPjaYmpRbL+ZGt9t0tQUMq1Vhfj8yN5zDoKv1W/HwebTnfzdySa5fWUlys41rnuOLwCbvxp3+AtLqmz8/r2iEUPCyDEV89Vmt8IpjSWi5oJG4xsv8XG6mXMxzQKOJjmJIaGnKbBsKN+RTVggbI+D8rGcAIQkMYn2lqVCcz35jgzsAna7BcrHcQNQ4uo5rmFmWTHNCX2MR02kh8noxN6Wk5Wq6t6/zw6+Ll4Zj3zLW71mPnU14WIqL/5YfGenvyyNgyRyQRp9gnBEJUhlv0MS6SwD5CDTLN1FojkZ5373SOs+zjA/U994zNFSfgpX3Qa+ZDHln6xyHIaX3UTnfIPF08p1GGhwcHRc0JIF3Foq7s0k5ywUWipBi/nLPHJMU5SoMosuVNdlU+vySFmxzRXQuh9eFuAa6t5B5QTf9AoCf2VnQC1HYIz1wlb4L3YsuZYu50JmcMuv8GHHkfDpZT1mLmw0UV1cfKT8ZUtQRHMQJzL4saS0NHnTEL4Dm7RA2Z4wi5kBMEl8EiOSmWfFNyfMyF+G2JeZL/Eai0Yxc/rq7HOZ1R1FjAAOmigEReqJZMhmo1Mte1KW36/3WHgdMPqpWBeM5oUp6TmBiniAgWigy4M9ky1JhuBatpOtkoKFqOQQUzgyMxPhjIFXy4xa7CNcXVjQaH7YVSRu0azy46kj2ZsaNR1CKFB3M3F8cnuBULTmaK7JLu/qb/gp69tN9tvTgC9GqnSlBdlzN0SGmonmfHK3KKYx4JPM8VFcQvJX81SdxEqC0o8UYKymyvkFldx2RjvV4bdtnwYUX+E94LeDOWr9M80vqyvD+4m55Y6PX2QXaKzPTaewDPwBfnntX6Zdh0zxnYLITGTJ9+SEmXdBvadGZtwKNo/0TBl/vc93g5o/9L0y/OfcpfXMj2x8uQt/C09AxP9xSikIVR9NKWmQYnIpEcr6uoo6vVlPhaDzZCmYAmIEL6O56klB7qrjxAfjci9XKsQc/66gTIUI2f8ne+E8KyOPNEKOFyit0xkVqUgDljnJrCuQYfNkNXFsPbBcDxb5tTLYZ5VJc+goNBfCd7Kwl6naafHk+3LJqF8y6LWwkCi78NwKtQxIwlf50ritzTo1O+j/yTUpc9QjW99QJUbVbmOn4jDPOXp/ooAozaVgAJamHEpN/Ll5rxMXvEgJs+mxmgIpLpehBG3q+hCWKS10016/7qjTraPtdY8orQZ6/P3qPVEp+82LJPCRuQLix5OtsQiP07Og7oP95VqdyBiDvNNiHeisfs6urL0DxTryr/yu+lwlNAMtUs+sFInNzJWR+KLnrfA0w17veRt9IhS51bK/u8POzrG2ycyJ3x7vxvQi3CcZJrYsRJ1DppibZsCqPXVOSr8Fh7M5K3yCL2ES4OwiqSWhDXW/nLKWWZK6Fv5//5/Jc+mFaL5zUqDCEuP6slQ5uUOpGZ7x/ctPyYarTZUeUArSTyGBMMLSwrOCURmxDkXTwpbr4MdP88od3Z+9K6sr6Pj8cSq0svOrtfKcN+16VGkyIjp/QROFDpDlonBySn6IcXVwmEE/tD5CmPS6QL1w3ufDDrNZpYBasuILK9W82YyRHiyue0IwbQ3rKGCVmU9NPUXnT5XVkQ0YResCs2zAkK0qP6kDZyAClUN2tYw+l/i0vPdTWkQl3/pGlTMZZiYiuj4yqVBvaOr5gtzYefykweJmSvm1ttqe3dlLSzqPYQJxInJ7x3XSwIUOBOkOrvVKOxk3zyoqLKmLkKPgURiK4mcBAbDfdWDvtjX8l69D2/yv/2h8QkLMxsgCzQUPj3Q8HOW/UfWC86wmnDjjFkZZHRxiDKbo5CgluLpeUILirwk5GTsXONhC/45+2yWX2boxrYpX9GcJPSPnYnf4yr3/V+AAnTm0sCbKqePlfhOyRWEceVn2O4pYVT6LY6piJKsFCgOMfeIcThmew48XlEOxIESxHoSUYY08YcLsPMGF+sZpH3axulWEtTD4DD7W4hQWq81sPSQqSSJWKpoTEafCbGTFTPKbBMIf5NinoMgItAp5ZzsPGg/Clb+qSzYV0p9K2Sv9ORbcS2kC/JRoG1eU3FWmsVGR0LYCpC6aRtK1kb5LN90miAtIEoVZO2tZlkPyQ0FHzHyXq5cCIDE5iU4rq/aQZcLTOl5tk+zdCP3fhfHsatL/51lwGFOLfBy4t/vymC2SZXsrnJKeh+GURNyV3fjnp3WI5RUocP0H3xepPkDY0kNUdd4zyO/zFQpNRSIwSnggcRyR7n9Wm6Ln7b9Dm1y5oRrnmacVIqcwlCTYJP542sDPwGGiqsqinqmerhzvVnqes4Xi/8hDeO02vPPd0o8sCo9uxQSCEwpa4s+hIXyiL7rSZdMMyPyVGCl4W17pKc+b0v3cb+ZlhZjRTW+rdScX2v/FtpCj9rqnqNr4YLs4o6P6tdqL1b/YXijR7WsBDAKupdkVx2SstdIfY4zaRLMP/0UsPNBXFxY1lvucTfJOJo3L7CSuUzPkr3LEbevPWCV2LLG6v80u4bViHntXFtdYx31WNzqOS+qwgomFtoP2ZI8uJd5ioSMqmEclziGOJY5nv6OIp+X+KXVF2YIuUo0sO03kSPvlyCkbOZgnjvKezHFV3dG0NpjNcooOrWTwtMyTp7Y3Rlnqo8wp5lPBbJ6pVvPJSoRzLpyjOAkZa7WpK8uFnJjJl9497DH7a3DQeYAv50iGHr8kd8HLJM3bmjpIeZQOaFMVZDwzazFiJWeL95WsbUmsFq89RGR12Z/sTEMO4w8TzrOafuHwk2VgfThWYnnoXI6oSrr88XQiAATWnB3PM2c6gkh0XKuaUECXqDGbY4ZxMcc4vgLMWLtYh0oqzwf5x2IhkjiFMnaXNL9rjGz4eE31+QCeSDSUq+zNYtGpMCzxP6sEkVZixpvj4FwRFhuSYhZgt44axpsSmei2CtF4BjVno9BZiVnUWL/0//6eISiVk2lQ+x1Dk6WJ731k2UJ+tY4ShaqaCBpJngDNY/m91PMXAuAyW7dGsJF2b47DLTRuxanYsIGxt0Gu5qns1HmKx7N3SaxRTHq3QWHNIcQ15LNyk3vMddAzDRXLGbDcsaxcXhhbNuDrOhsAEaf91Phww+dvbTRzDZPOrxJgXGZfuyONyOlqc2GgKC0bW7uXF9DCOXJaUpw+l0Lrpx0Q+J8KOmBAybpQdAje1qq4q5+d1bI76nxfNPeNeGuaPNrmAp7dLwvYI+C5ktZXVGECDiwLQY/U7AeIo6kQrWm0mkthpqUn5htGTJRP7IodymULutZlekv8VTVajE/iigW2rwDn2gsDd3OX7bVZ3nRvyLswcAcRTkUSerJ/8mO2h3KzGeFlTAZrfNbJaUD5JJfnzzd6vDRjuZMavxsqPGTwIZnLxj1gmjuHdLQhNT0LC2fL9Yecj+/i0PsqqzR0mHZcLu+sT/Y461RO5uvJ3ePrWv24Yz4uoUZJlfSGV+zQzsYdbfPcs/c3en9U9tcM/9a4JPJZDDOOpcFggBU7KtHfG7afDYVapoVZqH+8xP9Kta9Jab+c2toIPmud0/a+svaWx5Z31glxFDmu0M5p4WY7fTFU2jXPYnhfimt792Ca9zw4OqTIfrW2oqm2vHEevGl+Bhr5zrrtFf5zcWDjlfIUqk+EZJ11u2GntYfBdIMd5OFhyX1DcqZVmZ5UGmZ3gE2GRQ2tUy6LKWMidGYee2g1RQkzWpOh79eHpU4XZcgp5a0y4E6EPgNBbewJ/sJVWtLRpKmBHOK9HdNb50aS7NQmQ267t2kR1WixPgnz4I2L0t3er+CTj9Sz/B+DpW+VanqmGRVLmm7s0kJhTU0XavNimTS+pyiybWRFKM66c7dz7PQud3tPAXQe0QaDd+w2+GyB5k2voTa7QBCHyLTlZBCwHN5Q4cvbtoA2LvbYQgvwkfvgvXWNatyOqO9J7SfxlfyOeblBcXbHJxcmGVkTGT5xzIcEXamyh3175tsuRHk2JLCx37VTkmCvNkKx/i8p9OlNU4zt/08Ds5I7BXt1Fxz2PS66dwXPesv8PevqWNpXlG37nGomypInWQ5IhpRMr2NipvChWX53LCidh/yylYyv5WkLLiuJkSo3faV2h/5RZ41YBi+3Xinmg6QhziVE4zJVajE+ABypF/CKDiIsPlDSGqy7OxfeRg9KqpIfC1wdPdOhbJkd08i2Fl635CzWV3g0eC15ycvV4kNdEvPhhR4BbrCZ8pFrBjVyp2xXOO02dEM42VT8gIlQ4bIvWEm2pruuKaeViB3LrTAq6NTFQefIuS3aF792ImXH2lLDMmE/3bPXlywoRfu5rLVVXg1dnLDq/p+ozYGHrjUgpbMdpYNzDjWYzOpiBMInw7XNcpJPtA8wdnjV9miGDkT9+e0GW1PRsXwnJWReH5Y64srNgX+vOG2SO+E9bTCY+p+zg0325Pff8dbd/rAUUeolb5SDYLXROeRbRZ5A04eet7c3mcA821cAXtPGfeQ0goe40h0ZX9WHta4dCqfdZ7PsyJSHteDkWJpITPPSjQdUiLNwEapkTKTYn8cKWD6R2ttwGnxWbuXdjPajwXYeviqSHs3Q+HBy9EqG8p0brEaalmGeD00lInIp3fSipNvAzTG1uhuhfst7GczoW+tZZcpleV9dGthwxaODEMlIrzyXrtHi1H7tnq6V4qmeEB6BFz8b0det2eFvYg2LmVVABUuOg9zYChoOO2xy2Ipq4g/hHPbUBux5RhZcgTne28kukKh7PMd7KOAf13PdS7EmWj5lcXaOX6iWSmG0LEqiNKtv+FlAo2idcmGCgZ1sWe9RBvn2xVqrYvFAs3ch9Hesj8tl+RVRoYMb1bY02+yRXkYo2dH26LTd8j4eGfG8ytMlL/JT+w3Rqa77pnLabv4x6f6LL6PMOPOjiozrG9sjvJ1VzcMctZjgpjW936qTgjtCta/q0uQuu6CRQ5X+cnkzzSZG6EZaA0A1onqQi9Pty+HA83HnT6Ey7dci5JoDPziu1j8qOGP0sT3dExfHvY/TcLdMoqtR4gOMzK7343BuNUvaIj6VsE/MMAfEv+zCxtQ6a8Yv5/RqG04+mjbqHbz4ZBWRV4XGDIiX3YjDZPByczdOrwMDd/TbO8/IxTv2OOcVJ8F1UP4KQB4STpIAdNG+NQQWySD0rjZGuHEm2CFXpjuwodjQO3SYnoXoNTvp+4tzak/QnJdH9++lwY1qhgS6T9ikJ68O0ml0/yb1vjNdUH2lFc8n7qSSFMLcAy8veFRaeJsteXljGaXMG8njuAQas6u6qBvxivaHDlW9ru9Wp65IS/MXC/Uj2YKE/kx1Qe5UoWnFSKAlrqh+3rUz++ToaNbPvRoaWFvMQF9BZpnr/4t1IAZv95IH/383sFt65EVH2M4hUHkmpdG6vSGW7+OvyPyR/ClrVnq2VL+GWpESqPAdRPGzDidHRwPAaS33vJMfMVb62XRU1pG8hnEXpWykSFmSNZ68Uef9hFx34FnWej+IPOf1Er1892TVNzcbmxrh0GwkeamXQkMAixqTPT6nhD8f2S0rbBSbwji4Jw9NPoLJUU8zk/KmC7SDmbykwWxtcd5iiXRF30d8l1h1xwHVdNupdtjtU5KR+4jDqY/+dEZpTwHP1Jovyc/sixUWTBYZhov425pPhwxZtEI1ThacgYhjg9WxW/kGao7WV7mS5doLRP/PLfvSzhsP/MhZQDMrVsxuh1CNBtnOFlBdyvKRozRXSuHKiyS11diyJhAvqQMsrAAcKfH5WdSiTC84mQgYRh9oxw0f2Kz518NhFy5CKtkCDgvCStkBySNZuqL8+eIH8nllP8xTV508YyulZG5cliDJDxYTW2nAzsv1+fNFJWNZ3MP+uy2aaMS1d1EcRsDu8foKFx3vN+nWzYa9G81x7RvYygI+pxhZkVx5wmA9b+b7V3xvWkFvv/2YmAG8wf7IkzPGCn+n6/a4Z3uGrDB3sfLUCuBCxCFSmpRohBWA/z/mrwl2jpDLtZL4dpVHcXzEKEST9mxI/KrD+oDJ5N/d2MoUdFe8JKIKYaOZA4liIuoeNjrjdE73hK9GNgJSlmZNaruSPCXX3/VGtB1FUQ57foPtCHGlZoJ+k4dBQqQVdeUQEEIMzTNVMl3USatD1W2FCdxQXpHLCRwZGBFFYKL4EIAoGgKq22d44Iackjx9jrD8aDMuQ2jE2ZcBnPffgco9f2v1u0F+eofl5Z4UiweGpQ+ndrkHPvktfvOqVTH0bSqD/P/c+QMtU6x8ShcyX12KnIvUmDuIwv5wkSRNKi2KSZQXitD5/DQkRpAUzV+KxzZUsCaSKIax5IpYdC2te2y0UtlNBWzgSaw5drWKPt2dejZXnnQ0ts1Eb9oSPpOZFh2bXYXCSSqjhMpc5TLKNVuqt/ifzCj+IZYPrtFHn93i87SgZtTlgkaSPZdfPg6Ri2uO1NCekCl3fRHNR27UIe930CnQN4t7T5ZlRZQVxvaHU6ALRrLLSqA2dzpP25/JTR7J1hXnmzs34d2qql2HstZ7TvXDHl2ExcRqEo2zanpdTj/SqXzjeBHjRO31ONzyTnH7yeK6d3xTwAWKR5dSbSmYyihbcfRxP+ogn7jV9L/3ZB0Mfk2yXhGICsbyjT1w2s6L8eCZUVtegG6d6YoYIAV/FWWZfxuB4+2Xx/4k9WlR6RXwNv4VcchrJ14k+tKdT6orb944d3C6dylPLzkhkiArlJ+OMoIpoxm8yxvHrZ9mdqnKfo3I+t0jIinsx5FPcFYSlQofIX9aX3/PCe3ntlW87SmBtZcqbG3w5rJIqS1DvBNJisNRmso5B4fDb6oW5d7WnMgRz5UdI8I1enBLMLzcHcMVxOdV4lEuJdBLwV2p1C41A9ReL93INCccTmxNoY8aNnLjE/WQsiicujQMFxxr4MECuekFThLKWed5Rticgus750W9xeruqqun+8+CxYVJ0buvqx6WpsOXyHnkxnrfxQSmZT6uLpbUzPXeGwNEA+1sTizQrtfzZ0YTb+kVFN3UG87nzWxJmYVl6jKxXXFcdWuYTgpWoTsf4R/M6c4uNU5LiC7S4PIiigjE8OSEQDBNHAnWRUAAEFBHIIgThCt4EZ93gN4eez3m3wIWeCMJgM6UxdBy152DNTS4XPYo/Mtfo1wY8LyAnVnG8f9/kpV7WmfR/CNTo4w//4/SnRN8ADPW0nxoNdthrv3U6yngUbfSrh7KrkXlx4CjZbnbvlH16Ar5ITxFin3M4/3i/Xnci5ffxd/fLc/50WGNY2Vqt7u9/1Zre/dhV3fTrbkLrV4M2syUL1EBV5uKXpi0dT+zYTQF3YQPumbVpUkbCgn2HxIlJ8Kk2lSOwP4Hbou1CL1wKa22FjS+2a84PtNIqi6mIY9pd9i5zNi0qod/5RZLI2k+q0BL696qrnretvPaEWJ+JkmyKeZyHZdrTSe3YwRu3umcC3oRsbMks1Rc1h/jHQs+qXJ0oyIDcuxALdCo4Ysjlyb28ArDEeXloFIYIp6LCq48oykPXxoD6m0+Bh1FraR7V0d76n/0i/i+C1zkEZQQ9oMPV4tFEOCeGEc0lofbEesjYPE0KHUyyp+MPknAMKOaL/5Spu9rTo5YCd92pfnOVcUlO4EwOgh4Cczd9VnUsRe8U9PAE/KTg5NwDvpyybEOcg8fHXl2BsvDTZjPjJksi7q6lC6dekc2R1vkrVDrefXHAwfuRmLh8nEIY37zJMLwyhb0mQWgiHsjMGYdEfE/vE5jdkdPyE9u9l0+i2eiPEyKoPxkCjHvS5pyBig1EjpRjEoFUxwQclpCSlIURB0JiusFS7SZLaqvLuL53GCRei0Zyx3NMeYU9wAM5FFqk1dSi0XqyKYrLOm0uFSrkprVkMprBJAW4Oetb2Yn5l4rqZsL0FWdplT0Fdyuzig+29Bw3KHM+5vZkxsQzJaOlZPACeB65gbBQYuAmyL6dIxj+JZLX/yn7OKnzYgYUPLIZQo0UuItujkZmgLhslQyHJjeAsVWhR4tlpJ3N5CF0swcaQYUog1vEP9ctk56jHPAAbiIbHMRGGRFrOSZKLubmCJTJiqcI81X+zpCY6c1vzapNv9Hl+fa3uBfhxv+qzwQKn/XOqf93dy6r68k5K3+oiTrTZdPnmdd4r2zfiriivyz4tqKPJ89FAs553H9IuroJddKFYznyLRBzUIUSSNGMqKAqgIg0hplU8QzGRWRHDX82MHUtwkm2Rnd72aA0fG1Vr4psyvxLyYdGLn3lg8+XZmZN5jJjV9NWO3tieMPZEFumdKLGIMPyAHubt4JOEnNxjRq3l0Ha+syBcX0FBgz6DUB0JQ3nhlOrwQm7n5M6Xn4pELsJ99c/vKf3tI2LlEVkxKRG4AxxOnDm/JzKpBiz6/rL/uruMamkTesoTtet34frSLjn5gAp+kuq5lxjQ9xKezgzLJ5ajcfNlCuPJjDSyTooD9t+PzCrgy9g9mAdSCk+EJuSPQ4C+0D+H/wvGdzGis21aomFloz+A58A8qBkfIKTbrajiYN2VCUmC5H+9k3cvT8jstEGi9t3V47VR44EOx9GOmp0B8e7M3WqYy7aacdnrU60xhsFksJ/NXDZ2vmdvcDKQ2dsVoHkDw6NfKXwzyeSwJejr3MQeHpArbUaaMvxsuzlnNtWdBOOh0/Xt09jWorma588dfFLeoZb+vg4DUO4XtcgijFLybghIIWjQWhiqHQvJ5SmxXfQCxISI2EaaMhQ93x2qgQ8X1TlhgN90sEyzq5SL/BTNAWjw4OV+nLpt03H7/PT+l0Mhnno53JRedPDmD5+inkAmAZ45400uiyYIt8dC2ZC7FEG8OZd2PpJvfyxOS0uC8MrTxwXJRFTFxYA15LWybmDy8e3PCWcTKXPF35eFu5UMV2+HzDxbuIsEI+1pBq0K4UZ8bqM/nwOENrOicrbSj7y3MnmtRE0rRmnsoty3mzgroRVPklunXZcmaAHUawRI6YsVEtGpWxiKg255BTEmtVI4VJBVFkdZpRM3KGHOKyIMbyPU+Zrr+b/IWhvfLtWOq43PBqTO52MwGPgMnT5HaR+bLT6U9r1IWM7wFp/+ObHm+26DzsHKY5tQr2tJB1LYPzhm1Vg9eFmmPknPp0UUMe1vFD4oUJpZSRqgxFCkvzCKPx0lm/nhNUbeBxtYRTrQVnIbqdgfxb7F5pCg2/HltdShxgfAyQnfIgo66uhv7+yvMvcEbdxIbEssuU9rCQjPakrK6aUnW73AcGlT3He5uDWTMA2JsRjKnm7RM8qgrgoFPDKCTzdntfp/fZ23oz6eIwsJrsaK6R8B7Z7HF+23dk0/JqDbHUJ4/aPk7E/Up8L5e+6Vm+IlwKkCLhl/DleIcbiknxLp1cIrVjKzlhbth6IVB18S917riYM98kzSGjsst63tBLxKGDgcbJl0FW8+83PWA9aCQfm7MXjRyTTYqlwIbQOzWYI/bmd99w/C5ver95dO/8enAtomfZ9ZvzVetVeOK2fPmGgitwMJ8io8fi0eklRoYaps9XB1Ej0qN4jHq+Ko4OYWJpDMwEKusEW5XYlijQpxkUYKDSQNcgSos0IkpwKmVgQL+g1TZCM9WYcabIcL7AdaM36zy2MpYx7gZeAT22d/6MOrMYCOHOdHle4imOhJwaXVCoEYh16Byw49Ntshy5bc2epgky3XAVC2SXP+17Q3ytWwAXxU1vMHZl9ecLxk116YV9vpO3w6zJgyEsMk2+A8tP3t+u9k6GzPvYbnaBK7+Q0oro1wUX+33UmSBHcS8/qX/yziN1cucUWd7lUJzMr4GIG+9Tg6r/QL5bepzyp8TlbQteqTIlISa79b0rfXIuTjr5fT0A0WXNVyJqZunNzeg7+UVdLWUL/YyejtLHC/d3+7EkzhWGk73bxKpS/WNLss8OD9VBA13UnJPt+IU/tSNups3zwsl78/XSYTHAcbexffhFkbdPtl9YttacqZmrmdPFvdy2Rp4IKoG6UoBPVTR7+rAX6OLq6GQ3oWK2cdB0wXm3jCi9IHHNff7vy81zczGuDxorepT8V2gOv/K+4JZ57vnMw4/Xb//hqf/91T+wUnKVa8h1uuXgIcjA5G5p0cgJHLm6u88iJofYlLMWMeRwO5k2Q/kAtKl92vBubYp1MFlzyt0OvFYK2/z9wquJ97vtIsceRheadPJ2K//867CTyO8/BYv+SG5qLS2abI5//qtbfKoW1nz93jW8h0finlcT736u3mJ3Odd34mbZlXHYs9dDEWFbvoklNfQgwTMHs+andxZThP/iVWX4dn3YgBwpPNmXr945I3mHKm27My89vdeMQMYdWlb8KaeO2/aywOv5kseRr3jTyZ0jFBHlHJ2HKyqpSBXbN6icDxEogk055K5kammGKrIqkilO5QbyCpvEIa4nvVRhsmju8wk3Y565vchUWccpGEjrpvc2xM5UNdMKC7Yw68NvNq274Docb+bDaE+ppANvxGpa0lR98XDmwcKS0ryDGYKsoWzNQK5wYzXqAEIaV5N0j1V56lYTksEIDQWuA8WH9FXzDieY273tJUfT7JmQkeC4Wh5v/mnLoY46r6em7O2z4+5D7XW7TD0eDQrA0vnvQ/fc6ro8b+cX8h4xSM98y68gjRYWel0Uz4HKyiDjPGHuaIFuJE8sLfH91RmcP62Vt/qL5Rem3sJOy5OLyvTvrPB41RoLHEmS16eTlJvjMw5pCOQ3iAz18QWxby40P8BWBrrtb/ho/xN4euF41frE9hmefzNvYfZILBbnsrzmypa0ZLeBoG1wHjAe3gAUVXW4atmmay6O6b2QLzpKYWLd19F4O8ShZ7INmzJ+e6UirthGLf+EoneW/7d3m2MlyVVoFxV0e1QKY4xrNjytqtlwya246VbR43o7vwj7kFC/64O0X/Mp73e42QW9M3Z/3L+jQFKcMZ4iBIyllLQUsPZcPpQJIryPMq+rEMxlyDq7mHq49JEklSmrYh1F18RpaW7IaRtIiMb9eNXB0csO+/jHYKObL7eOb4goPjwya5+W3/3qQvrOBT19bFusWJOhluXHZChwkswLdpPhctRMnBVnXTLP5LDRvxF0/oC5KHigIYc4kCjAEcA4D7DXgQ2DdlF4H6JrdJDRi9UVGcaJTsrCkJAEhQKCC2UJwCJVNrozjrYSE7OYAhkAEmHlxy6iHzzyNUDhieRSJQIXRqNkH5/1X1lgBXTQQqHpx1+ePHt2+PToqLoN5hlhVRFKowlabRQ8Mqzc0LAoDTFnHLjOW4Wi8846z/9Mf1x7wVWITcMzIZfcjWC8B5MyHB+j0FWHMmIl14iD4nDe/ANGzG9/3pukuEPd/7h6h8wQh/M2bhI/ikbeQV9wFfqU+XLut55//pNjofXdzDO5dyf/VCwXKgvAN+fSlm3hrhu+jZ8mTyjC9wZX8apXdzGwWSsnPh8FPwGz4z8y/h5dCOHbUq/VFnVU5sRvL6d1UGMZaS42lb4x5fMkOe8fG/+ELaESvjtahU6XnfChaHemfVTrJbeabrfbBaWUx+TaA3dUDMsebf8ZNGT+XsuRDpLX0xwOn3/ywUmJS0G60oKxBF7+SIF+sIiTQEmtXWqDtdugvgt7ACeeAzzXXuhrl8TVRz6uJO54lBpOFsBF9V2u6KYOA7joaH4d/lE18bYHSjKfDvG3txKxlbUgpOTCGnQFpiqg/YL6E5O6c6T5GeO17qxFBYri7PEUZLBtZQbhSLZ8fBCBaYPg/ogWjnWkSVI7/EF90o4p2+z0XfP+7vnfs+MvuFljIJLBHAijojw5GAg7jaaPzW8gcYCmDt4BsH+kmI6wQtkKi7HmTeZxglWLjtwRjtXXRnGkAHEoN9dhDXGzuNjZRFW0JALBNiQTW5KYTCgQOVr8F4ZQoJeA5z6XQSDAT9i60tBTBl1wgB2LDuyB2dNreRibOSZ1q7eCO5LsOLJIlSD0RtgPP5Ql3fxhWvSu8B9sv7ZStw5kxPlhPdvc9in753vcneI7aEXkpVQEpID+NBN25sytdqae1jv8exCy8h+m1PF/rnsIjaFgAlf816u8o8RD93B1OG+M6xhIC9A6boGlooUhhSRkZK56VnWQFfAj/hM61rXPTjtw9Yw5fq7RgpLx4HNfhc0Q3sf/d7kueomc+aC3nlIvoVxbVFEGnRAJoMOVmtU8Fdw4avTXrM23FUCGeSLYRIVxpUjhfT0CoSyNJWjjdUpIglqPNsQhN4KKYYqyWKI6USNFxuuiMIZYlDL1Bm+lz0gXBlPRXLH25PZDSZdRF8lbz25uVjRVYMoxJMkZ/pnNWCi/6SkmMKsjU9ID5Cb1ARXp2R3xbc13YCHtGzg+EEOZXlyKdkaWk0/3Qx9YFzseWtXUks5YcSFOsUEuRiXvpmvxI6SLi0ujXac3RssSUsU1KvO5Hxidau3B7cXAe9bKJIUlu8owON9KcgF5hK5k1Ydfb9oGVbe634JiGW9Tam67QDdqk6Y6LNa23mCJnPwb84OPcnpsZLIUlLo7cC1qT7bPglczVFPvSSD3yQ2lMC70v8o2veRaChldCaF4G3i5vhe1M58GYBNF0UCzGptlzaJ2J7NvnESvZORTBGILzQovTn+XOb8GSo8mpC2+LVEQDSj2L06p+ubPCUNv/uCfWcaMo3whWlkiVPzzhtF5pT24vSjv39rITA9wQDVuFGfmza81Wp3W3OBV976rey6+IlEWk2lWYXOsOdS+ZM6hb6J7aspIIkCQfB3PGxyAPCo3gk/Aj64PLRBnfqjaat6y85n+2pU2Ya4Occx7lCpKueWqll4uNLrcLX9nU+UmOA5x20w6++b6X427wL0zNxU3A7+lfwN+kC8+mjgEIqKZw13Bq0VyJIIbq2Jd86tpLaltFbFjPmh0989Y1O3TBYkYwjLNLTEiRYY4RFNVbzzgevKqGlIWy+ZjQ63ltNlkxblrzkDe6OlrdlFCV9Jix1LvzH/36o09zvTaZqaCX+l933TR4262xE/iK8VyXum7K1ZLnZhmikPH3SLbxuCxB7uN0c6B12x2IaKa7Ck2kflE/GO5UXyT3GZZZ7Paxqp7vspLXLHKFEPUJpZquuYz5DSuGDcaRyd/suoKn+1i0HZpVNd1Pkdo7gJ+CgBT09RNkaO0uhRFrU1qvzRzPYCQKIvJMquwudZc8XP/kLyhvJYmktiZlRkbT3ZG5jj78SNTb0GQ51SPpR2qA507sT7Gx/yB+S6y8xJrsAtpMdWctNF516VuwP1tDJR0qxq9DSq+ATdPzWv7toi27IoT3j8xuuCW+fOUoTd//C/ftdhDHYWX4RVeZUm1ubawkybGCk4PGhKc2RXlWIw6XOd6KCm9WI3nC5EiYzapO5GZPPd71ha9VcBODpOvpARmhHFWrV3vZOi9OFV16f/g3bcgzPIjHX2iwojNVsyiNxxdsyN+8H4JL8ZUm81IS2yM3lMRuGUKgEoyGe7JprpsQlp03P7H55+q+AVt1rWdP2lBQ+BAlww3PsArxX8l2dGJEWVxnUYHH3rxAorLjk7x7ee6pTliuTYgSndscGQMYuE+QqbL38ahD1Q5XdiIzbJ+Vh8GN4u7jNFzd/5TjDO3ObBT4kMaWxfuFaCBgAlzH9QsbA25xguXNJygiyko11naZxB6Pf/4wqHUwoAEI8iIhYh1YfiQRBOfm2WVJ2RYgjEqEPWurpl/r+yCKW+2ghcKhjbR6iNqdj28vqmG9w6Z7XhoyfNRvLHUneILo5yecJMy8NK8m0dcVVqxGG4aWSFJYSM+uHlpYdOeAHkM3CMo3HFFAecAKUrv4QFy1OiF55wFCGs/1ocv6OxdiN2L/Flc3B5QxTVqH4+t2wSffTC9Y6849iObKOjCHxqPTqOgwTkJFm6+BF3gYczJ/WzqS848s5d4JLcxo6ph64tHV4RkSa8P3Ofy7G3j4piwaibXmg3uYv5rPzO+hnPMqcritAGpUTXJnGiAXgwN1+qEVQxusrLo3EUfmjieh1VCNG4jgKh1t/Q6O2VuAP1Q0t8bUTHcaHQzGuevXzD5Jz/9oR3o/i0UwTZSJC/AImncfEZyJEQVVXQvX7x8bIuto5m4dynC/RzvB4r7t94/i2D4PnP9yu9LYBJvpTgLEwP4y8qGImN/8EQyPTEnLIlPVMD0/r7EWUTAg7kS/uUPuJopx/gnrfU/CXf58EkSmQFLuHSjj9tGPBoYqS0jpnsaSJhQ1Bk/V3Y3OT085ozPpcwxibC3SGtJF1kza6G/6GhqRgL4HzJxLtyrNh46bf7u/RwYxHeukupkUiMZuF2O0J6v5H4bIFvvFdh2Ib2fl+wQ+Wj3n7vFiDbRBw4bDHBo5uXUAEYwowwkFl6dlZvxg0JYWjaRGUDXpZQEkk6exYkRfpCCCBMmcpV/RqhKQYRXIbL3G76o07JmsYEZaSb3MOGaPTSA9HkIHOq0BCX3JMYkuGZh0kjRZROx/r6H3ULgPp8BnnCt1i63obbb3C0+lRB07thex0wfTyKDTHbI/KbpaUpD9+zSoZlsEOZTssMezC2pUDTlVq6lN5QId+FhIt3nrz71srjSWiUYKI3hp6K8ShiL1zI4PeziPtz1R/WMRdgBy+h1t6/RMs8V+EAdPN3HwG4gW6JdbhPuqnML3OObrQnLxHdcFxixXSHzuxdHVL+dL7WOBgOH1O+Rxy2M/SaTvqOgPjev4nWEkMxzWX11vmd0B8oCiiREkisX+0YsfzyvwBXxS+tz9mRwghNcVnP9W25ypGtJfmylQCotFrCOVGV/39qZP0pkIBkWVv05MPCEfuBolaZ6vax6B2n+WoAwtJiDmOjUmtixq4/9+YiHNXnDnefY+CxR7WG7JgOFfYw5eIcVH+Vac47sNrqb7fnyWbFjrA0oxva+KWF6VVZIMKeyI7ogXE+Bd9Bfmfv/L5/yilc5xiZtjrqKQn/CIZ/lNUKysxfZ3I15wEJFTOff7tTd4GB58l7sGh/pnHiMIoQPQ9HXEm47PdNqlbBTL9clzUhi6oF+9tGIa8SUmZylyODgllJ/PBOqSM5eA4/4ULHxmmM8pkBGKnMD8VbvlFBdNsYX/Un9TNguCQWsDgWtgQtKs147pI1CApGgaC7pqVrGlX2UGrQbyB+T4CVkSH7NqKOdrvzZp7vuENpQnT1vEwTaZ+pABOaugQsr80LlDuTSrFafSXsfnvC7anScZ/seCx2MfsAo+i9Q0Io+Q3GPkIE5Q282e716xFg2sCsOEQwN2YdtIhyn4MMyPuQLl/lDxZvPjj3BPn6PLpYNbFb0vjE0Y0p2dl4Vt9hOAnuQOYr1HCX/mnBXb1ifVBZ1SLhbvgJsAt5kQajUQVSSuRsDfRAE3AQpQ+3By5ee8uFGLUKHgJ4wyavy/scJJRnNPuNAbw71aVEK9uCJHs/3qxFYizZ3R/+1iD0CNRy4Bs5ZgEmi20uUeSp6J0LgD3jiQitGyc3bBrQU5pM4ck8RnMmvft2EwKLWvODFYKoyw7GJ4Qk1woPXAOzrRa4w19qhax/xwxNLikPE9neegCSZYgTTD8v/gB89AhV5ixHh8TwxAbXuTVk1HRUIUWXw0HnR5SkkFZCBIh8OAVyMtgsu4h4pZnYZMFPUMEREYAyAiCnKYevJRXJ/ITdflySO1EHN9jnLPdtxcLlN/rwKVw6n830OqU6q41GM26iC22czdH698DJ+zVrLL8Ufp0hLxVidtLByPPlAanhTYAoqegMwwHfEH4wmUgLtneMkO4sXN0YQaX0nrSXHsFj7+4YMapJcxBXtkT1zVmcTpFC1fQbXrobYmffr1jmUbbaPCkeBkUUHAkyiElKzl29SgzMWdREZlBQ1WrF3JJmgdCXSLmL9zklyWUgKA7zIL0iph2kpvKncTRzhhsIqQMBaoFCEo0RJuv3Q9azypL54hT5r4A6DieJfckg5sDx7NjbsRGXLmns5jICeOh+tKkYeyAq+eezANVJaFNl7oizMkYILePi8zEGEU/OWZX++J7AHalGs6LFz4/LRp/eh5TJoOtyzOmY4Zu1bTjfLZF6BO75fE9M9ZYarnJg1+FhnAqLmFBATZbLgovwwiHx85G0i8TmOAooMilq50P8auKesZsTtPVVzKWzq+rgSwE8VMABSGdR+pV32lIyfVKg+yY7WmQy4SD9PLzk2yhODtsUTr64bWPdnlmnLhP7ZGJ7HW1+lmpq0hETs8kN6DRgko6VUJ7o5Dop3/xPwywLpLs+MKvWx98E5kZ+8lYU210zGHKWH4uEoF5SEEkt+7nBUPF31f2IAYX0IgIknQNif6bSvbPZXGv2zpYKBBsvAzqbazAS2PcrAe7vqbzHqJpj/5fz9tF4oKdXWtGROXuUEjOj++MwOWAvjj+9KyHhukeFKsFSf203hBloXimByzy6ML2eIkaV58vsOPswMbIDuxbu8mk7zlJjOjxZ8ZDrMZ3vCaZ0BUuYHRLU7hR4sOTr5gbzm8ZPt4QkGg3U2jwU8uF1pJ+Aeaz+rT50LxtaOY3SaxrlQD/Y/fTEQLhGFLRRDzRhOYhwyMom+cdgx+OQBqQJu5QYbQ2EwXdJei1OPbVAem+y4WAQ7iXZsUQCJIAzn6kvCa+A1yC0gNuicywyk1CYTqLKPYitds1Hrv966tMbxmpYxChwFlFSDXvDFqVhY35YdE/Zn7HTMFiATUsTLmi+J0Dw7ASqAKs7nFRmlc0dRimR8V7Hl3UCGktwIBz07KfycxKX6yX1oKlfrkCD+1ldeshxg/vuSPA4ZIlBgSTLiQMEanwOzS68WATdYRBWQg5EyAQfiPHm6ObsJ4Dxi7aY5QK4WcdGs3fQiEXudxytkg3hrQ8iTuTU3XOvcorRhuvtkjzVBB+gKnp46Ve3wz8zFh4+uJ8tGza5HyxWAisGDkdya2LW8EKbnFMJZBBfQLA73PI5MDz9R3rbmVcmsO8Uldt8P0q8XPBL3Efd4/nfsvbECx04Iqi8O/wTtawdh+6LDPW23Dzx/Efx9wGDwtvfi2SWN05O1lIcHRrfZ8P4wwevictsfbLf+jv/PYCneUndkdLU3aYLS5IfTlPrycTQKjw39y8Sd0ENX7W7xnxLK+Z/7Y9wvpP8F/x6YGC7IQaABcOIFGIkJpiDk4Tz7bFWhCxW8HuQmyELaHEQFhYgDU4nvparQJ0nobuPbhjRpzYRuAJasNwa/z9UG/t5Gdg7DyAHXiPg2DhzSy0dboL34KnNwWg/iIKp8R/uUfkLGSd82HJ8mIpUjBjYqghR+PH85tRzVzdi+PWDwIPO4UBNrx/FzIGgAHH8GhqXll8pDeMBAzApeSfqT6pceYsdRcsWJLKTNBMKfJw5IJb7WUb6TlW4+1H91bUuxBvHdpYrIDaMrt5BRrfFO2skNU7KkifUf69HGeLQ8hM1G0datymg7jpcDDQn2opWR6g7eR1QgSl/QFa4ec/H1NL4n+481Gt8n+gOafwhBnnq4doLsnLQGPUdL97C4kKa8ARJhKobYehfF3pL1dyyaEcUPxEfzblWXj1wB3+BekoBnd05KngfuH3LVBTJaJlJaQbdEfbU9v38e21ZfXRgFviYyMMu3Ql+j2yKv/EB+dbAt5/DFDy6ycS6SqShDTSkh7tyCwPAEnLoTG5aIezgADfRrozMtwXP3vwgTdmHjohRh1NHSpPpB/U3CIISvYOYxef6WbY380u2b74nBXx8ZuRA3N2ifjpEMNdHQsqJfETaHucXnxaI+xZUVG/edALj8KveqtoqL2FJbIlZ+h+N1dSLZsQR6q7Z4e4GbyqsE4Z3zXMFTodpvKeH8cQXnHSIiwM4vPPlfBPIXIIRLKLWEuV/ygpe4g5Oa9lilvuTHPscTH8U/U/FIlYeMlESW/Ao8pU1BSEYEPihP50+l0Pn9Gy8EP0FA4JFe4f5UjSpX5KdHljvnDTy4ssoy1+cH/SPaDydfQghJDssSJ+CxIWockgruJwXjwelkX3vuDOomtwnCEJWD9Wp9BxzWLbE9K0quXh4ps8KRwiQVguBEInoPlm7Ngy+LO7kjyBH3im91quRodkFMIcUnoBjoGrmubOQ2i5WCiW2Cx7ucv8Y036/MwQAKtuW6ZsOXSQ9vC3Ig9yiZRQnnH8rPgGrR9o3t/xmF9XBp9/EjydygDoqbvU+uEX3dTLYu13p+jCiOLttGIMXoNWOTLX6R1nCiNUkPcwLt0+9xZ7oGGbvrg/KULEMF5q2Bc4vy3wNeuKBb4l1n72SxJhPc3HhGcMj/aEw5s/CzhwE6oeSA3CcXxLrUmvwuNmcpdwfTnmCbDHYBg402pSFQT48m50if+ciMIJY1BqpPrfZtcbHZ/6auWIwNq0rgzgIbDkyAirx/NWws/0khkJpgKnYS2IgPgSTryv9kwSMw4kjNAmodpYLpvybAzTNw60nRnx8iz+7e8XJXnEVVKbNFFIO33Rk0zn5tnVaC2x3xywjrRvFsqPYv7CN+N5AsRykQseARv7vt4wAmgsFgsNPIQzukcr4ILY8Gj8HuSzmj6SI4S2fQki/YUyiW/UIedMQNSMtxQ5Rh9pXeDlt6o44/NQV4qeRS49w06wTdPGI+jV7o7mf1z8XKGx+wksyob9XWolFkh6TpYwfrJ1cc5Zt2OpEvrgxrINz/lXehL94A/UVjGoP2q5Q1uWeOS9Kdkm6oF3TH9zaHQ0n9zNcnON81zbf/va5MEHjCOPIoTcCoobVpP1p3G4Hps75CqVV07lAWs1a8spSAzYXx1PZ/x0/7HyYcxp8vf/aAtuDic9NZvGRDsb0ecrg0I6Jd3+qEhaX9k+dawDM7vTK4OUwXvhoDzOi5ox1Lyy8Hg9lY276/PGsGzwxFbQO4xKxsdLemW+EmdqnksL1yvfjqDV3f0lB9kuJ1wIWmNI4p2SbEk+1ahikVpyPoIJj4nT/yWp/tXHWRtGjnGFc6cs9AlJSBdGMCtJ6CiHbIS2SML4uo0CBeWJ7ah8YhFPL1QB6SIMiLftIuyEhocLAnk+m65ki5ukCvg8VWKlRS2hsFdQ5gxTJjVpxRnitAZ4dVMbhR2TpJeHu/7fHHWscVtsEdmv604xKvkPlwCN6/9eRoIv6DmFPk0dZBTtSrVL87o2WY0irjbIVNx+LL8cSFsvA48xOLr+gPONwT9ALsdRzuD+zX1Vp1PAfp64uVzrvCJf5RpLc00Spz5DH01w8v/oMjoNAA+3j0LiLuH8yN1v37qfDjKepdtvn57kS2KSk0ZNKYIOwPHO44VjBSuFAUgaW+mQ5s/ReMqSSylE8u1rGbC+pmYUUWA3my3pWRzRQ1qQbDyEVvFsj9cFHGJVY1jeUUk4c4hNvQL4l5lTFfoarqyUqwBi2T3pElSflhzol42NrncrDrdHRYMMUaq4aNuXcp/l85tn0uG76cJy+tGFuD+vlgkDgcEuM113tkbc7g3b729sUeCt5dy5QozEwS0yhS8Q2yjAjZhTTCbIGtfzlJ27uUV9E5nzpmumguuZ+XU/pgDlxaeqnceD8nR/9gNjus9PtzwkGwe9+AJ4M3wmLOq0Wo003zDe0f9hh7YUkMVTPl1DmFZJq2uOzEClg5Odlz162LJ6PrMAi2CAMlVSOTMLw+8rcWig6xxaKEmAoKNJrC6ujHCNXO7cWT19ap6DoHwMAW54WeN4jS16jOTY7NYVvL3zZyx3YX/oq39hr7sWSnG62AkotT5eW3xeZRUgLE80RVg/Xov6TlApyCz20S1qcO09qOecWMyA82RLhL6JbDxsaRrUIFt7wlZ3RxaXDf1qxUZeTZ9iEmudiivhIdyugdcedMXh+qDJefcVQcHkAzXQ5LIKNLD3UN4j5r1xC0ryFnDDLPc4XhohN0Mg6LqpfiofRuJU8lZfaRA97u1jhG/CRzk3AHaqAIKJCk6nAoIQidYueL8rgm940SWaODL2m6s6242CZtfmZx2+mqNNfJ0sR9hEZN9v5H77ILy/S1k7NFCGkCQ1tcoA6iVnRzWfBM5oa+mSIeCNb4VLMo9QC39S1wzhvFngXN2gL3DHLZGgMhX5eJXEloelR/vaQ4AqopFi411QTJwiDXfS5UbJIIDqvalgcQWUfbw/+mjRX5fzJUuSMqbRucaG5PKHwAG1g6Abxx22yjQAYq1sXj0VBFWRayn5BXHrTvmmEDZ1IyWJ9dcqY15Xirn/MW+/alkCvRacfN5jo3+a0vrbTCoNwTpnZxaTlHbG2QgXNqOpa3DnYf5JNzLIE6i7aZkkXgR1L1JvXxS+9+Nu859HMX39yhJ6+Kheuq+tGVSgNoxE9HYnzmJ0OUJcsKwamSibPX6+OPqGQnmxfwDzB5PxPIuL8/a+oJT1FF31RRaoB/X1/yJl3DJlks7Guk/j/wgvJtxzqSRGYOjjVrsWT9r7Y3F4Fqqqq6LJO1Gn2BRgCPpxflKMOzyb44gbwSV3t//Ya5w2k7k0/iS1VqvNH0Z2vDuqD7tC3C+6Sw9qtTowWTDVaVAVaIw9i6EEQsBM7gQrMRkrQQBN5e2AMdIHYLjQaECbb3pHCIVXz3Uky9jnrZODXyrFS861+nxM76YEl9f5LzVgOr7klV3pbplfkeH6YRRnR++/TFMdnMzs15wh0Mr1ljK2/bfB9e2X0SWboBqe1ebTd07+RV9imktSMfecPq9zxyBuQ6fV8t0JoLR0gdmHHApF+DDClGmZ5VtRBnEKow55zw6OrCKf8JRmUZHX9K0tbYFoos+DXFn6cSNDSFB7wfPqh1N6jvFRFsKCsYX+kgVzjcH/vvDSgOTgNOJzGdkzOPVhDx8cf51trTH0TVQbdCBJxJgrT+an2qIaFubaavz+31z7yD8qJ7/C1E9YH++HnP2HjzjtEZFOffV31et/RrY6wy973TumD7zlLJzcKCDI1SdDU1rqyxO89M7g1JVEjScuPMEKb0IDfz06qo4OGk0ISp+Re5dEX635SxtejsMBafnV7UQDlWRXTBFd5gWJKD7cCnWVGxrOr4aaF0mZdkY3PM67LEjmiYp7zchYJ442kPsWXN9kELWAYvejwurwC9yQGe7h6nN9atU6u0F2+rZaX/Rx5di8qsq9vd+gasBRCva4z5arE5WhpSSg6VlMAhlZD4E5NvXA1SJEkKOErIwhF6mIxBjrbk+mCUvhTnzSBoVougdP0h8X9hGPXjbawPkQfPQ4XlkH1x9hEDhbO52cWvcflH9HXNX+4UIiNfRT3NzFCBPm3v+346PEyN+6Y/PJ/+r7g0T2X2r+XZBtbTbcMLYMvIslr2RyUsCuICQj9VKdUuGy8umxotspuOfSwAmuPYXb57X6Y85oy+Sl9dEZEtTWPHjdXt40rrZknJUYY71YQ3+UlwbY7jRDbz2jpjhpAjrzIxL8Kcn8mSnweANmRJS4oIkr6eN4picUo1Pn60PHQoRiLGuXTivKx4Rd2aflMf5r3wvOHFyXdFtRxadV08Gj4zO2WfM3zDffVckpI5fpyaoy7ehglo9ohqHTSVYaRsSmL3uA+NPkbndVMAoRlh8pYBnzhGw7qIk9V/plUzOfTOwrOIRntmQEFgtKOg0NSQTwrJzUmGwZQ8GnTDo8VkT/h4DWcFtUavzlUsIYM/uLzOemh1J4b0cZMhM+4duZOvWxzA4rwz0itvLh/f3NYcPME/NvpwePH8VoV2xG5Xuy7nbSWjIlS5sS2EyGVVgfajrWES6tmSxm/6t6JbJR9lVs8zjdWhsCXX7L7/c5ZmfHTd8MxE5EhfItWiRVKLtfMJ1LLhnuXF1sHTV5Z2vYrx0qW/da+0erkjd+/ARNTXgPkxywebOzR1ge83DCkq8IXZVd957mrLQuuxGVsFfF8xUyHMLP73T9hIN1DlyBocOnk03Th2FOoc7s4aL78GSX8C3TgBTAfdzM98UnTj9U9l3PEgSDSMuGBzjIwfHCivGd9o3qiMQx/6olQ9Syqj4zxg4WxdpDKFrsGgeAIMnisozJVdYmx+6laKXoyvy6yhWDqQeQeX2kz3Dk9rXfabm+NWEUVDqPiowZzJ4jDnsuTei73NUXGBg03i5W/yi1/4Gm39uxv/vLjg/PsxmLOqJ5svVwoFA7+3VZAGKkqYhh5BqkjMxnvsH+oMNXS1JhmGmvIIn8gPRfqyum8lxl8o26jV87ZvO/B19WQ1E/zlCgRmdOmnzhw0NM88HpD67NvraZ2B80E+b0WnXrp3Lz6ulUwvaWPBnPX8fMr6dyq/4+6rk/t01ZMBKTswQ/UQa0svdK6lorJopFyBW8BluCL3oISuinh0kTP0BPAIfjQEop9twqDC41J7Y4N4EdTAuJifHKXABbP0BqkShtnqJ/9TaUzGiI5EGMaB6RjNemF9SwESBWsllSRdeytf5upNZBRe0ttZc7ov8v/JE3m2c/InZjeOBtrmN+iYnbkU+bebaIt/NtN/yJUKZ7cHQluRhTBcb1u7l9BqFpWUNNJybqZWh5cOCZ4FJfW0gL/sMm6NrXryu7tl+s2z/iKdu3F46HKGb+6Wjgzz4XbI2Fjm9+tleZIlNBlqML8x/LVPYG3I5MHz+/WbtPSy9Ybr6QF1R4ud7z6Dl8GfQeHvFZc0vPe0BOa/o7P0Pd20psYz0yjE9DSidGoG6TtAYwxF7iA+K0q4eCxVpdhQyzekctnhY/EKNRIYVD7/08cLZSaMjow+Uywrm1/dwGHUtsvYNVVMTnVzQR7vmcY3HtBnblIBzi+2IW6x9KUcUwNV2RtK+RG5XLlxNE6u3NSrLzJIgupGFqu6miWt7mCxq+qLEr+8sGBX6+Fx/Lm3q1Nxk9n+O3387qfpdhpcrZ0skaOFS263Em+BK8WvhmFgUhP1oaqqGUucPTVPl15AkfKsSCyvU/8F0z9W1DX4s8zv29r31DarRUHI0WMpT1Bk67ezHrYiovt/AJeYTlyLTTdcicnemM4UddxKNzcHtl1KDhloSFQNtnt7IOOqj+qRtwM2FTqyHB/hfNGSCoF0YTVcwp+XidbEgtYTYflm+tmpqNaWGNFqXTCqRspQjBwNkCuOipTzJAidNAVNr6YODzrTqiwsZo1k+wCTWVSNp1os1GJiD7xQE+jsTpMvP7Bea1KWWdYHopmsGlqhf94dayVsQb7tSDsq8kqOVXkTPYtUxcyAJyLSQNWhUxJ9ESm7/Yi7su5lZdkXXEqSS6eLLGhyadh3PbrKis378Vma0wLtrDCgiQKdQ8PapscSddMjGaXXwRl30lGj7zi6ljSL9U3+JkDo26br7vEYien+m6mxCkEiO1pH3oWQLo397WSJ1T3tGfAfrzggKTMtL567Jfjmq28M7QPYjoT+jYf10CHjsM/L9QvkniPxf/m9efvTL57zp//rd7/817H9x+xbJ0lcIl5DdvQpMpusVXJl88GXXra6PFtfG9D4xu/bT2+m7ZSXvsxEdY4V7d8SP+jqG2Q+EQM+3SnDsGcAB0SSEpMUw5hojC2orFu/5C9ycUGfngovxcLFBkhPyhCzR2AwwCu5vaeYDa6laantdkUt1ZKRtlRN+3BSTetHhxD0p6KfzmJLdz/lbUjpJBnCk/0thHqgjedlDkKZkiZTATKkckCaTC4V7HPxWJq2u+FgQZ19XIeihVydYTXyNs4CEOfSYBbuo2gJxOw7r/rD4JdyoACKG/DEoyrex6J3W9bTM9+qgVcPF4e6X05OZeR+OVv+2leY4Tmwto6qjEjiD0x0ofIbvtj2iJeFuNuu6pN7b99to+8bHtq6Tb688PXMOVZBtJnfQTJmk3esNJ6SAlteGGVSyYzZw68fvh9JJFy9y1aEuIafW/5Ebr7PvicZf67fPsfJkG1LHyxmUXaWScMiJdF4aiR68MjN7pi8c//Q68wG6oCb8S6zF2VTQwwWsdShhuzfyujg9s1h7rOGfxaU0cD4pbG7kdX4nvINX3nm7Jp95brwoVNztKbZ9eqtPVnM5QOhyGvLDuov7/hE1SFQ1oJpEL5uWgcXWCClinQXB8fZe/8H/KjlFVxom9p2GlJ2toNq6p7KOduyw6aAB1GEc4cWasKH6Ywpo16xciUMcZq3p9/tO2171R/1Uo2MLKFUm1V2pWi1n2PUpZZNy6mFwxXVDKpIh8WJ9BVyQDJTGvxf2TnUZrYrBKnOtD0gjJTfyYeNP1mo0G5aVnXT6XlrWksDawuVOa9LcD8wmMr4yjx2jVxivlyf/BWlxT6m0BgBvRzdbHEs5cp/UC1pP0jWYVXZZbB+gPQTiOZQcPo+k5ohLq6VPbSWJRc9M8NSWJqVX5llyUfPgMGJjndLoB/CYSXvHxbDHO8WQd+Hw6Ef3StWyJHz1hCtK07RgulH0/OPaC5lr+9e0Enb8OGT8L7L2qc2zF09mieuBFyFlL+yLNodLhqStLwsynyHUDf4Da+dJFNACU6nE848MZXNULQcdRWNhR9ad2lxK1UQuGZTZJ73Viog6v0vv9iMDK0SmKFUIgp/NKeVrd2NLHz3eDWwQM5dI9EozlxsZr54qcV2qmsst17LJo+U1DgGLTzZ8vzLrEmWaowrQjeQkgk0wTDt30weUpaboIxMIcrx8XkqadoiPP/dZmAxkBhnJQOKKpsK2o+mgnVH7haNA/UiidgwOZxjGx9Jy8nOSXsnzn61LYOn8AyOZxISKy7RjoYpD9wuqSOz9Y65eSSspREi1PeqY38Jz6LXwevA1h4wBSicxra6inv99y9ta44WVtTur/A9wayMwKvDMx6FBWSLukmF9z640enJY0deFuqEd5m9zy6mHgHCjJimnFyjGSIXgMgOmnSHGXJxKWlJe4nM65h2E430Q5UaNp07XFr1hHSrsN4q2XCrHO6a2e0wYswZmin0tU/5XwC80I975Ft4UIdJMSbSxiCDEe3YUk6+jIuf1pSWD1t2q5bN/tidLrwZkDlOA0cJQ1HxwFKKEz2AM/KLIkWiDTo60OdsAS65Ksn5V3UnQzxpwzRTfX1KYmVJ4V+pVq4eX8w6k1Fc9eSooLj6vYLCp0V9L9gOB0MdMxpH3+yc7SJXAgdCoZmVOYyr9bcK6w2clUdQ0kjENInbTm7I9zLlko2MuXHRXePLaNxNY8JzkxTR3SvGqOeal4ktrMjW3ZmHmIxXIMl3s8D6O7PZJuMls/6ugmEb48zVQCwC06/KbnNEVZTdWwanG2/kZN7JwnVxRvHQ/Z32l9lnZprF9y4fbxSYWS6eo5AyDk6I7ptcwWQyTfHIkEyuueLuMiSD7qjiMKprWXwQrMoksR6RH1UoDivkio2jMfKV3dQhYbgWEGUuBGrTWPBjSf1x8wShE0ljVo1CBJZv00D0fOqhUvmFwwnKlGk/dnZ2qtii+iVJCTQOdaUqh4eSuv5rbOCvf5xOQZBzd8ev27Lq5FYA3YClLMmzS6T24ldHPc71YHQykC2r5e7OuB00Wypq3ddaWTHTXpaOgq+O22n6+hJVg4PxK1cc4OKfFD6E31sRnZ8nSQ612Aem+cWSyC/JSYwW5v8lxqkxSISYUJiVJMfguHCzoKHig84oi61jDE3pVMKukNYqMfwGvTbgNzexR6dOWNnTB7Pnvmy86O+4vvunvwCpKwzRfA+c+1FADaFibj1Hfbg/btu2Fc3boSBSflsjs7/AOd1Py8olRGU1DIeY1ANFF5k33EcszCS0JIXQtDDmA3D5py7UMP62Yp1WZL41zc/EjfhU0ec6u5sLqtaXkCUzjc7TGEzJwN8Tk7/ivxqa1KCq+OC8ungepJgaIV9+PG5DoliTn+yM1T+PKMvDRGCji3M08jTA+oWeAHBG2dpUUeNyb0Uj1u7DMr1v2y2MiVX1/ONQeub2m1cS8VfKm5uE9k5NMM8zR+WOrgwM7+0JlffMZxl6FmP4X2dZOg1vLUFySm9kg29miH490zquQwEkhKvJqeI4D2o4NiRJpLfC4dv1apUKLYSYpQvO6jSpoM+unrTA7X7aOc0yvtxi1jAOHjp6NuQWTS2tWuRypw4G8/U8JkSYUOsn/5lKj/MTU40EZ8v0ChrdzIK+W5aM1j6E5D6Bw2n7m5DiFcTFQkEvdmEGuKgIIKRWlK+0DGCvjSKrKpexI/4H4f+Z29kCgtWrJgkcA1/6Bnq/syUEmnADA2rSnCWGz7DP75E39r+7eh/Jjqw/STJ07LHJzr/PCIq9uKNP+uLygA8rfBMwlUWmLdX/U1gdnlQLBfubUOFvV7n41rs4pvKriPXMQs1f4j+z6/jW8Wxhs275U7+V1LnSIUu41iksf2mZwbo+F178yahTSRojRra/e3de8fMt6J470vf/3E++1QilHV0/T5svfHpXaoF+YvCacXV19drLIT/RzUd/JnE5XO4wRVqht09MGQf3rDc/v+3uZF167Zu1mQKtPGJpL9Hnbyfzuc7Ba1dXFV7UOJcV9LmPJCeE7ctr2j2eaF1PYDt5US9g2e8odsn8bYX/mn5kDSlkJeNN9KxO+8q0BCy6nTKaPVQl0mzteTd568N1ro057kp09b8jC3Xu/3WwOkU3zrhkP3wT8VBiLdfjg//vxZvGt3Q3Mt9Liuehe99/7eHUtxzDrGEkaO2jUjokXF4pBWB2iMlsFosL02Ob/T/1Gl2QlrzeVGzbvv70u2c8kygkv8seuip0W9TN4Gja60/mq8J3qS/56lJ6U9137iv6M4n6Cya/2CEUVtbJlfoqgazchqxS8dxES1Z+E8v4B1YgBT+dgnMqm1GSMbFCsrARYli9vcqANl04iaXetxw+7ff0wagP8eJ9q9kBUOniGABFooEcpLJ6Px26rvFX443731tlhKn8v50z7oIc4ooiu/dHFx3alNK6Lv7J/f609Wk/Iqe19+tL86nw91/jy2WSd2RZWB1jhrxh7dT556mON3rgkLWeS05HtbbDFcW9jahNhw6+TFQiK5D5fgvv6TYfWdQzTkpXPgSno0pokfO7x9WeB2gXNZQkPkynSvT7G6+j1h8tdnY/WlhffbDU2flgcaWmS7B26HU9ifhGqGn9EeHagdek+vpXgi24uF3xFhtXYLXLbr76sDT+EnjzQ/OPKz0n5q+0rP7ZuHD96+LlpUXBpWsawJUn3ovCvst5uywK1FtBhtWDWTF0e025jpUwSo8bYiR0U5O6UyNGtkNWzBA+ygfu+OZNV2xt6xFK1MSpvhbN2Z39VFpvdbBCxHPhXRXxhIwsDi81XMfqQxfpWOnsuApSrPmhrX6A1MyCw5lsCEnGEAyvDMQVhd3F4c7iMGdxuLvlmruOL8m8ebguPp3aaYqyoLV9dtncFdGHl5bFponDu01yltQ+DHCjTvR1V/tPkJjWN+oHDC3p22glKjav3MIWVFbQc+q6VRO7aIm59PjG8nu9mLG2+gynRcq1WdhMo2Y7+y+jlDG7cy/O1Z8w3j2gQJes+S94Zdx9+3abUXN6adUP401+CzWsguANqqLBm6Ov9S8EHLbYjAX9qU0jzXDVMs9zVV3MrlJ43AojoZ4eN0tP3DvP4K2wlon47nJqhf5FoqTqk/3sKy5bIUGWMo7c5Nxzm6c2ro/TKueo8ev9EtZR10qwbmTCPqNj7eriIL23vwG0EoPApK3cmI6mvX1Fpn5LcfW3KsmCF8B/F8jFX7+Fku9x3MxPrazSssssfFZZOU/0htosmr+GktiTWff3j+5/5863lUUqToFiFKDslevZvniT3hDbMyVCXt8RWihreN5XGco/bbjGcIGQgpbHd2Qtu5x1HEJRWKePTBuq07cxS+VsvqWMJbJb5c4b8MSv5wz6RlQTh+kJvX5x442kqxJmFKu2nMO1ljH51irF40YuWACTwlDA8UWw+9IYKYLp3oB81+bX+royynZv2Mi3t6RWEIvGo0UUEwKHzQj2V6sfUHZV19FEdWYaocadbYa/+HVP+mQcTZPIRA/EVOYGPdOC4ArfdOGjWRbaO6hiESyKziHHPDgQRDO7wCWenUef25nNFFUWY3OkgBMFBwvKHXkletPKTnH7BccBTl+vcuKwef2ZvyE1etU68bExocMbG4UDl27ulJiYEF5e2ywSsgysiDr/6ccGLOXhWja0/gEk4yGs2PjmRpZsMRtUVepQDwSMZBvO3EmDN60lpp43jTcOp6VgKwk4tRqN1moxRK5z3sFQft6septAauYU6N/cJtI1y1FZViIPUiIP5CCDLL4HLOkZvZO+ghRylgRHlquwbF3/bZ+Sub9Ker+ovVLHH6i5yxE03m+Q0pC4VNbamaPmdPf62WONBr56+mykVtKjRePxBMw25ZuMjGQiJBY9jgmRsZR+r+MXs9P6M99cvBB97cTGTOk9WGIp0jZl02BUagyVszybGSxKP4AzWSqJZnPtsNTa9OwOzfdVSNac85q+NfifbExfiC4eZy7YjLDRNdKi2lrsrYtjJqiWUhN/vno5r7YupZ/k/yM8UvTyBycb8203PNKTm6njLOYZpKQGS4GistvAFDQZ9OTKDI75FTrd2ZhV+OettuCPpnGsKxBTYyqWFyIOmJ8dQA03b+k5yzsjR4pgS3OTzk+drG6CdQRVpsrr19MzhFqDGJ36d8ckEjT2PSxOQkkLS26odT0ynxLz9ujuLEveFOJg39I0PB8rn1YUbbXcHn/7ZeMl7Qtnfb5GoSVglUZUwPp6c61OuBjgW19/VR2v7VjSgkcQwUpMgPv3cFbOdvuiomKEzGASCxrxaUkm7fJAKp33W1RJi7SilssrrZW28EtapeT+loDPYEz9pUr7o/TmHAOltInI7qsWLBvOIdq7rZeInJBidBM6XOUvJP6V9HY8Ycv9r2VqH68tbUzRGDWjLU9qi12nJyF597fmcVbV7y/zSLGINCASKaHjvgTdnCIbw264ey09cftU5Ms21lAcfq0uAof/1iksK3dmn2/ul7F0CxtuGRtpgV+mT3fgOt6sioDEKdRUvMGARQsLYP3xnLADQShUqk+yTaUQ8Zm2I20h4t4VB9OV4fcANm/HwK5gAb9WqdWhMRodJRyR4AtHn49tAnekgjKLNSrm4cE5r92vwg1o9eaaA92HLJlznP2vuO2aBA4uOz7VVpWfW7pvt006qVhfT89lb6bnX83M5B1ZDFPCJ3ICn3644Ab3TSWJWHVh4bnSiJPxgFoNVLn3cGQzt0CszEJij3MC432DFStPM3jKzEgypyezIqZLf90uQ+TdDUs8bt/KcH4gp0K0Dq0O8Ye2KUmpgPo2wtKzRyHoxV8+y/zxx9ffD7TtCxx0PHtfR1le57kNqWWSrDJbrN/pkxV5E1S/5A61DT8NdbZNtUdBFm1cUm/ZPWTWZ5ialE/XC4vL70GzX1bg0z7bLL302vvnc55d+0ghwCLBFr5IFKCTHM2FjuFzyTGfhRsv1HpzSnG2FvT+3mUIz73yzWNG2WVN4d9HAqUrGgNYZdysoPlF+WckYH++qeKWQ6BVqqX9WJlihjTOVb4sST73kIQLzZlKa5XxJcKW0gMuIo9VeR1ZPbxn8ZYYJRCXSNAQvy4J5xbYe63f5mVOXiIjcAPVFZ4DnGRbRhk1uyWPex3vuqwS5dCEzpRITYcujs2oGkLSbAILzOkfniXtX+ld9ucj+a+gygmriv4mv7+8UD/W0NO6hnRInn4ti2vWDUxxOqu9O2H/VMRGT2P1l/Ppg3oZ2ZsCEt99XyQ4V45IXlHtohYtdZb+gyDmVua09/ZxJ8u8H1JDe6MKksDiYK8TObypAxdOnzVe67byeqlQcYkYYAisDTenF1fqh17M93tPw7kQgnlMrVBV6riFwnxpxmhMNZZJy1RJjB0v3hPAl0K/3/HxYlUE03LE3buc8xv3UCApHk4bmY8+TXFr749z6ip7/IOkC1IPIHO9T3XXpk/IaRtqTdH2CnheYkRy+6ocsQvgOOimjem+JoizBTf76zAiuEGUG9lEVy7/7vBTlEUj8/mv82tOeBvy3zszEi8CpuYkDh7RuRhpC7ug1OERrWYtFmEOgsyjmTzD++q9Vk08S1G8wHKOZMRjBV5hdL9W6gP9btCoDQdDjtbY3tjLz6t4mJfzEFJQ8Wg3O6fyITjvYX2+80h/UfXa4VJ4T29B7fpxOUduYeVDHCL/Xj74ISS76tHN/Jymd6uM7N3ZMaYuEafxaFeR49CZEn6/PIrFL8S59pd+twJG9t9IS7lVSvbCt3W68FvH1wfDRqIBn2315xzVMHXnVLqVho2OEufaMDS0A0Hghvdzsx+8XN4GPvoDtHzLyI8WTsiV/MKHYLDlwfW8gsb3sRb2DkQ0a4mc51jbhJccWy4NbBHF0LpzEqK9wuYo8B8WeBLoO82tTF5dc6SoviG0quyNWxB48wok/dtqVFX6d6sQZN+N1JTbpWQ/fFOnC69tfH0waWN07o7Gt5UWjiTPqrSmhhBhY2MYNQc6nokOnP5nag27mpj4Dt6n3fzhSmrpu1/Oj6RF4Kc7g/mt4zNDUhTi4NIIXtRkdO+usLb6ElH8OTTlQ4tfXwpz+ZOdjrAUIXBkVXpeUkiRbzpfL9fC1Bk6lJrv2LQk8J4CkjENFIypXhuesD/KzLmbrx9SxVFF17BaMlsCE/dTvc+csRZByRZKqcGmHaWamgr5dHmgoHHH5Fg6QT9JDrbKG36vyaq4eRMCUWdlLaiZ/APxz/+liFVAXHf2VVYeRnl+SiitD9vVGz0ZxR8SDURRlhwjzeKC+3Goeu5ofeqtG2nVDcupWR9htvGJz9YSMLd+TTddzVSP50CN/LrmSH5TQ4mAKySsnVSA6+7c/Qq4J5hJNFk+XUsre+/004N6XpfAacE5pUT3bPijKzIAewG9g+b4Yzk/MdpYO4CeV4btzNiWe99OZv3JU320TgRUrlBk8/0fDz6xtrZbqyftvcZqJ6QSVLV2GuZWT+i4pKvEnHzScbMoN7nmXGLGBeMzUocB5gv/9vWCeg7+7SfDAMRhdFIJvCJr8GlMzyn6UtLQYxdXKzfPhdkffX5/c+vjf5v81cOBL4ELxxlEbBuNYGnLg2cW1wsQS0rsJSMlnvfW/tva/Xx6M39aqNysFtn3OSMQWdZc8KLFBmw9rbXirKFD9ROWtK/5SeWA1KL5LTXBzn+dQzjb9Ab93XAzYWjpKUj3YmVpbkVZCDI5n85K4x/HF0rzOaCaKLCSCnHFjl6FYktmZMvTBv5g15Nm6aoPbxbbIyXctZ6Jl2pvnpL87aWm0juhpuIw3dnMHNvD3dzcisf5uW/kQEpvhpmJw0vOpKdyN/FFW2D65JMqOKu3pHZ9IwgCvYPa933x5J4/ouLdqMdPjsKb7YUdnj29+IuAwC7vniVogdjAT71aED+gLioTpLMWqwcG06fO3xsutD7Zz0N8DUzRftqXBLhywsF9Z9B0SoB64L1q2IVTAfzuyZmqOFULPZ8JQoYoPOXlpUIzKxrp8U6hspot9Oagqd7RuN24i71RkRzFF6rbEi3U2BRz7EXUXksKvL6AXVXCk5ayif+yYsb1/Zq6u6UgiKZ8vOOxHaKEk8nwpqHZ3jnCZG8uWuidU1ej1MN5MVB9xFM/EsI30EjGZ9ibWB8DLpbNbY0CVlt66AzG8GESZc5fcmDsxWs7eXtvIGYWlgkpbHrYf+fmmAzh0RSGl0PCvJ8oQTH6HHssDH7q/aqXDz76+kwflpVbrPtskMKl2xabz3P8ppJRs8nDaZCqGQuT4zzkP5c4zzg1N/AW7m5ZYqs81epW7Xblleni7drB8fXm+qHrHS4sATyPpDeQmo6lR8Ljacxqxy/2iw/LHDnYj8qfsVHjN9zKeE0Skk/HsaNJRTT7H2uPTNMPg/NQ6Gx7kSlBLDWKKuulooam4Mw5sYvkWI6W3FqqNMr2X5lV+D9JwZ1IApCIH6ecJxn59NwWZe/EDGaYdVZ4+Yfuk7bUs9IUQpZp2zl+IP3dec2e1P268i3Y0pyyX1zH2ftk/3l+Quzn5TwpHD5/r8nRCoOWw4pxVlCWVp8eFyCpwS0VKGDyYsWAvNFgNteqBe/ZK8PYURlqinCOY6EruEVdvDdAX7F0dY1J5ZNtlBR63J0gZtz87fo7/tbC1FnRn404pZhM9D7YWEwN1iRgROWZsTOl++DBCKH9LChbX3sbzUhyp0YglJ5Cv6F8dFSSSp6Zr9Xli5sc+vaDxzOTFT+Slmjq7pXZg0vqZpDqHYEPKgg3kheMygnG0DwDu2qlHntTHXXzwpwcY6FYom008LIy4zLSkaF757+rHBmsrhwfw1d3FOkxYAEA/9TVdi5RUmyz7/qXfwT82KHxZ55fjKCXN/HR9BgjgSv6/2PCm/x/njsW/omLW9VRAuuMGXjKLEkj1SwjhUvT/4Fb70yXxw92e4Scu5Ef+s5yEXldLYzfnvZNyGyL/NKkR4Fdj7fn748M8sKmriOLU5BLKNTftsZM7gqlVZfxrF5zbPcPlGhQiizEKzAXP5TgaZm4/7QA2p5YpJRGeL0tvhsTDg/rwyZJhnaKPvSAr/ZJpxrYq9TNPMjp8cZvPrC2xLTqLi//FGWwNzsB1x5xuaTkvvyX6ayK1nlU5gr8RuGyiPcelH/6gnDy+lvniDoCUfxplLykrJac6HWKSvT/LCS5uknL/qDKJ0QGXxFQWr38JtniwB4in8ALUBQf8HoLgdGLSALVCWlsEzE3bm6mZ59uN8/5jgisQBy6X3BS8yoMvHwqK0HFoSbTJdlUTmosD2v6wX2g80+Bb7g+7NhpUQg0kj60Rha3LO2bQkH1k8lfZXjC+9c38THOrgZRz1jBbtjeqmn+/tFB63MF2OIPLFaeIyqfYaEbvb1MmpSc/vviU7RAVoN3u08bwgpyaLfVUif4c1YyhiU3Jn/0Q+5uoN8JmN3bIFUVAxA447LPZQWvnDURe/jK2V4PEKhcKBIMD5T1FzwmNmvintIF4/CKgc1aodv4Q913BiDoJ9TwkPW7B7CIHCoy/Vf/yzHJ9xL/EZlB7WWmM7e+FSEeYdVOu4oIYVmEDNckF54g1lHmCCMlnGZHh4eCFWCkf5QmvH51Yi9iSic6fUpv96BzLbuaZwwtDNi6C6n3Pr+oeXyvaLw+MMm4DkIyfUXlwtT1XGjQ2TXgjA7aIeFnYB1nEiJn1kREIbyQ8HDQR3OM9zq2dOlXy6UR2Oxrp0RYOiLW8kjUjFTn/3NeSemGdI0ivXsvi86iAHKIPry1PbZRO6Fu0HByQuwnAo869Tyz3H86isu9dzH1uved/6KwBAqEbRr0jo5y9U6CFIWEeONMXGfEC68htbnAwTbXiQt3V5CVkbtIvfv8JEGB+KS01kJixfJ8UP6HHS9a99OQj7pdUi6bP76l4uYRTneMaPX+lYF7a8sg2PyQ8P71ryzefdXM8Na9qdHdvf7R2esLi7M7CvaZ1zLtpj76K/UdyO37eVFyzlweoWe1Z3d9rmWlsT6bEX90SeHpSJLf2prkj3KHK6SfNSod95U7syvkYrnRINE7NM2nxl89jNJNNTo0h6WROKlpSVEstl1M9JVc17krq7vrcxMrQ71w38lqxObvkqhvQDlfd+RcI//k48fjtjBur4iDGaB0O5oncgcUdj04jrZ4Y45Fq20kNfjvKFIQJy9wzVzvuxjTsL9o5VWIAqkoreM64ORXednel8wRy6WYy+OW8Q/8lYlbHLC/iurK5OSMhgca7CuUlPmVG/G9iTiquLRsT/tyPkxRuZjCwyb0bAm+FDWZg3p63fWoI7Otok0UX0a19IptrQvphHd3A6VeRw3E32woY1J4VRgrApufLkcSeY6lfbhsWmJvW3gYSKLA5WXEmsuginx5N3PmWfO2sEN5H3gkfzbg1LDr2kLK8hdPogrI5GuA2j8pLsQI466yWQ/a7UDGugr9XyIpBBoncf+J5dSBi5Qn3zQEH2eN//10ceSvmYyT15bVUqk/QK789eZ+k95f97XLV9ri0jYL0KFd8xuwrfDhUVX4gt+pbyqRnjM1hdOh8L9c5Qd91KuF8Yyq+X9w5totmZpFitQV01jZcFewvlTQNbIzut6z21kKIczpcro/n8U6/vorootzfwT0XeFMMkMJb7xcyxMLMwBHPkaFVlohGJmkabSV7cIRVWBReFXhzsF6V12hq2th8ZYtRcVbtxQXzmyFNb24U1p4YV/w0UPnLh09yUVI6p8FRF7+KCTt05idB/PGS5o4+IOCI3PGJl9SElpi6713vapqcwtACOk+VxDGrxP3GQ5qG7kEHZZb8lLjAot1n7kaWMz7AUzBZjF+sfx/McKKq+lgllvo5EojhzZ519un3FRHmvfbXp66d3YlwOVbjOVDg5cgs/3saAkBb0w11ASU7ZuG4W+s1RFiii5NwMyoMf0xtqLjeEK/7IovxEJzoYQYOZTSCh7TUm4gz7jM2uahmcfeQzOYHZmmzFx4MGGS8CLJRbI0fudrnXp2Q2P44PZUaZPF+FygCfAvd6rstqYPFVm5jjHdzfa1yAHTCbL4IK54Vt57f6uyxj+l2hjbn46crXwfXONp35aqCegvahdGqlNbe7a2qio8TBVsjslGIRvsPK6hUujinlvhPJgzWVLPJU7xj86blKGGDuf03r1eU7m1WZ07cjkzSFAjGTBO6hq5eA2BC5TvpVmtNLq1nE63ldN8FlxIdgDjD5b/HwzJDdyqfvNtG4wTVeuS+AsXJLFnbe8k36sBLD0Bg1U3UOUza4DCj1sAt5IOiS1s0EO3UKjZVVjZ3AoSNbeWHvp2RU7fVZhMQKe/xd/UfTDvq0+NJJnZzWpXb7aoqHdcv3YeegtATMUmtunuG+08Fq+yvdF36FB+793NKoC3baua4L887suwlLvQzhkrOExLuXhfx1Gprt3ZZCAzuR/IQLUfKX0qUbeujPUIJXn4pfKvo4mdGvG1Ep21b3I/gDmslmu7SOp+G3jVWPf4BoJ6k5mxkdSwlT4rSR4fLm0wBjZGahHiPAPGFrF5dGw2lLt36hbI4dWQZUaLyY7WpUl81aF37u4UyIDVn+6GwLKVD7ZfH19HVt/JV10tvJEcPX85sHHmaa9M7wZxbBNDYWkqYRmHLe1TKhOH2ytLhgeLZr52M49Jd/adWHGpNwyfr8vS1PY0pO3LCnXB1ckl1CSgDK7ykkz5lbjBcGVhjNw0Vlmp2pwfs07wQwKqch6llhyA6jvcKhjjcoRgvY30G2z8c3L2Mep83/BAHPlm9XVmT5hs9R9SeBHV6LBV8liuX7o73ficcBX0+tzKPRSsTzWI0UXK/WW9M9k2T5PuXhcKDDw0KYeBZrPNDZVVPb+dN781eZlFBAXfOHXr+ox5aJaIp6ORWXDTc9PKQtv0eK6jrz/q32A3oTI9KUwckBQhZWchVJnVAXs7h8/1zqpd433sqZdjzZ1HxSc5km62Bm7yA7OSpAjGZPrdfOCs8+3HGm+1PtrMMdvNY20aSzxSW/u5s83YLPiwaapsqDVw5V3g1nM/7khsfKP66wh+fVhyRFJ4I1vryEjiepXjc2frcb3hTdm1BDINTxJLj279uK3j2VKxNioxFJEuz1Wx9eUtw3KjrnovpvjKvuu8f7w73zFLr0wBPHaGKqc8/jNkXaItyj5/CjoUE6EaFvdl/PwKIuGHHP3gAxfYOKztIHYsRx75Q2pgY1rf4QROksp2KyzXmpC8/UDE0E1ZzxlUN5j3WuSlHBiKQdj8/oY8ITDeujTRXssrOEOfBp/bov/wcm/3w5fSpM3vH8iT/n14xkNn3cX1xO+N0cbDaR3fvPOtHwH9QPL95sSPxFzUfe1bN+z3pV/9kN/XUrFX/XSZ1/z4sgotT32Ny4ghiadC6A/WMR/7fQZZnvjKRxksj33D9q2sgb+E+21uuXq7A1D+24v+kbZHog9gG8thH0mHiAOTTFUoKAaai0sgg64HcnGb3/8DnLe5jZvyo5t9QzAMPzWJLsqSMDqibplJ1fkAs9ln60kb5aI4BRGa3XC/ScPLJWx42O1fjUc/kNngLbZJ5NjWGORRpJzwgsV25uz3cX3d/v81uW4197L+xZo5wRwsbikOJwizV/Ncp4gni0iX18Ihs6WNm3MYofmU6WMcNszxJNTotsdVAW3Lyc71vu877c6e7FwcASU75+KnKo008fQtzc39xFbWZCWO3E2jdU0V5zMza416iZ3OENWa9MJKgDEmM8Z3Ln+br63Ar5J7sIbeNVWBpfTSGrqnOwEr3adEUvlflzCWCm0GyiNRnh4F5YE0GGQKypLTiqdkzAEsKcUdCR2TK1Vmx82JMB8qB8UrteKqYlGqsliaKlURrm/sqQI+y7ZnMDGyTEw25rdy+eriXn2Mj5GwFDQZ2Tn+Vl+sbYw50HQXw2vvkr5lrp0lRMIhSlyzLcmVQra2GIlsTs1GaONkMlBysr5Ijd1vN8EKE/2FteaLXCiKfpIu7veZysb82p40+0nz+2uHYcMvu1fuNSYxo7sSMuSXxW66tLpU/Nnn30igVVCgStvJQXyuGNhTBdXjqahsQISkDfEkdXAQ4SDCOiwrg7gcUmxPQo5hpEEHbRhA3o1gjWdyeSlSiULqyCWFiiRCLr9gG1Ri2FobcCGgNmDnIMioWXRBVOsEMmz65CbikutOHOzJVtbouDA4bhtuwzGShQF4LRmAHAcDLXNaFPrWcYTw8JYuVfjcVSkUhYaL5gEN13FfJU8JHgi4QWWsCmlLg+O9NKg0KYGpyHLYUp4Dvs4VSYADuUin+ehJhbHj0LtnrQ74W9BNS+d/cluIbOi+uzmsoCMcE4m55VBXg/YQtIG9CA1WeP6We3s/NBgo5WbJJbm6eH4LHt6qq7ZKO84MEPHAsLJS81Hg04SYsxVn5TTirxUvYw6ygRPVN3VektBNVSl1SXAVhgrLd55ySUIft5c0MKigWn2KOadSy2pr0HZbSe4rGGuCF6FgvoCl0HpELZrX8FD2h5Ex7N/3f1N+V1dUY4nY/xf3MftjD52tv3pHASAoatW8uQ8v9sMbfRhsbxt0GL81lFWjcfYwK4q7XtZq+9xqOsD25mZPhSlWlHCqB9TReaoH3hE5mpLFeiQEmdAXW6SSEnNTeel+dEKtCJYNM03V4WsaVid5ue5R/RodafaTlvcVt7ccrzruHM40FEEyQ2TNUGDpI1HoUieU51p5m5oGwB3KgfIW83CZuL3fwQo189r1Vm2DmlH5+/kwHja5MhvBjY+qnO7R0vjTw6ASamFy7pjMAA2R4Z2s13+7ppF7xaat94KJT/RxuGJjDogYxSWD28/izlKXZyaenD7H6gabD/ZgMpDXUfd/WTMK2GXe10iYbtEdADhR2KuVKxMIGOSZvPscypO2UZlMBfAS0/7iPdQ7IW3ruE7nyFtKNUDOVTdvOhlBRvjny/Qs+IKo+lxKRlKjDhFeJmHLcqGgc/9DC/dRWijezvTUoTWXaxCznNi5eUn91zaO6wMOe7/luUeXiHSCQMDIyG4sFI7yIDqmGVW+PrLcMLUlMXU0B/GFrQ/uiyq845dlQ8NZ2v3xnQgLa9jf4h6FEftoM3Bt8Wtbd7g/BkBebjoGaEGJn5foFxivqElic0ki0gImYJcD7t98q/ZUSOWyx3e1tKD/A2X3Ykrifxkpvlsve3L5mKJogmIZAL9RFBh1UFzLE7S/gew+IxNXKcEEKa/bebgN1H9whlcfOuRV7FbAIsQkQhx3pZ3PWCNOPqzCJXSavZ4GWbjZJqRG6LV0ZV0tMGrNRQ0aEsEBKvfnqi2pPfZRtq6W3ksTR7Pml7rnCNDu6u7a7vf7T+7r3+t5gC1pr24fLbxW9E/X+JtZ4x7sHtekfmbTjTwgp5NcyTxaR2eMNqPsZ522CWMABI2wLE5QxubVxcGjy5V8JRjq6apGFjSPPT1AXBMTEBFxScGaVosz9OUlCDi5aGVW8Mj5urfWIswArheCnk4z6kFGEpqn9nQMvh8tnYObk0f3CxUUZP45HJR4Go3mpGDMGqg1nh1hRW6vt6R/+DXwfm3AB7cCHtaEfPAeelus4YCT7nuu3uPcLz77KkjnvnSbcnqfOwxbFWv483OduP3E5YbFvvYDfxRM+tqrPmLNsdkA09yM+CO5wFNLztjZprpEYTczngazu0oPewll+/gHtEcGm4Bx259HVWGF1SkrqarM0/nt0x7aC5whN3lmPXN+kFFYWTVwEGMUl65Ai+Lz9CUFiNzw5kh4WI1UpMrBiFUZmNgYU6lxa4mtfOJWqvQXp1POcEZFjU6E/pjQtSjMXvL/1Qw9YisKmvRz0rW8yad58Ke5XaPez/Nhz/Mnn+fDn+cXpbZ/w2rFXKsNE5q/87h0WL5UMjiWcdcKmsWHEDFw6qs9SAMCHer9rY/YLwkrDYXBo4kX67X7AxjRP8uP4UbNHxuaDTs7AqolJqI6FfVXZdgM5miqwKZQ0sdjRQT9my61V+85b6nuKLr8pEV9I8+lOHbKaRWAck1MHc4tT6M7szuRfbKSrJWcilGEdEcFU0m1Uwdm+W+q5GmYlly2iIeDimMEYRA/cySjFIDGdDvHr6leG7QuDvkbbEykXhkRRfvFoJwd0GwpwwHBxoG9vRkzABJu2+m7jx/Pdhzz0h5lfP7Bhu1HnimFuVAMASZ1ZNRgqyV5wUl8iC4KwPh/rQiVG+aW4lOBb4Niabj4SfRq8rl8dE5LprqlmAQed+JomtruICiM8SsRE316SI0B9rVhpohHPgZfEYpuBbAfSJGKGPcyHwu7X/G+rpYSvM5knhTN9uCDCClboyZa0d8C+28Vq9qWOUuVg6BEyLyWxQ53oRpSG4lZPk9hoKGtVczcUPr+xnOesn7k5AaQf1+toGTwpywRr8X1Qua++wlCzZmsg0lP5tabflvdeSTM7L53febeQxo3B65wZUFzGtY+/olMd7nk/jl2U3bAIrfaSJ3bVvvV1ckcg2+OPqkoKTShL2VeUViRXdjgBtunN9sJC7foVrS6IyrdqlkncDbpzu6BPWEAG1cB2/AK/1mnsvvsNcux2y9Fbm9X5FK/xPLWpt4560nenBlcpEEQSHtUXfEidxGawfhqe7X3AYEnFxSWNBPtMGEbxegVlz32khNFuGe28oOco+lwxT1FroCtiUqVwoA7KoiHmClXza0JtWZCPQdpieKLnEKVeHhHZ+rqQ/6WyY5B+dyJwzDajPRwas8EwKg/V4bvckkfsE+KifxZXDH01/vkCoahzi94Dip3HQBB0atTlhrPeql51MZS27w6wm2O2/AaVHuaSioY3D6XcvHVxr+qE2syF4zcmaeuIW6XXZmfxxiK+yd12aB0H9rqXwMCg/RcJtamRBvDKcmNSfTM2NlqSpesHvhGVeVl1277QpG0MnEhL29XtQss1fi3r0GoqO1qjATUW4jmCHA4Fw3mxcsQRCc6fc+iW8aOqVjoDds6YyQ5Sp0NSkc2RsH3OVF2klXUXxDl9HG6FItqQi8X1w9bc1Il0MyFxSsLLPn5NcyOOtN9Z3I6gg5zTETmlkOnDYNV+22wb0OxXccp12TMpl1Xz6AVTSRyK3Ss1nr+ChOsuL5837ef7kkIUGLeT6w4E7a9fzBNEKPYJRl9XNTAoD6AqBRLTtyiSV8/7MsVr3lIcenDobDAvDup6A+nOuNq+DrOZuQzgxXG7sLofHDDATiszp39o1fS2RK4l/OXJm+owvNnUZ5SBUSxOiNDZQ5UqfbslXVsegOVCqECODzXjIkc2/jurawHVKd14Py9xAWFlcc9wxzwy9O+WA5AsDtvRuHFjVcCEZzOK6H4nbZtpbzmyyHN/PbLse3s5pvRKFn7TW7FZ9XUhSKvL2no969nGEpf4oGh88hP9nkK2gYzzt2aYsC/p/B9s/mWckY4dNDDEGf9ss9Os5CRNBHdYjC0nGI3YSbooIchjAlLrsHkdemW35CT4l03+r5X+9z+P1fSt+55dYnNL+BtUp9mbVtrH9tF5vtE0uG+Rgd8JoD4RMP29jXVArMcA1MqE0OZPmwV8XBFZmQKKiiK0HDye/HfZ8UsGow8MkrHWPFJxJSHnZcJMhjhf0sDrxl20Dwqn1tfc5aX+z7lYrRT9jPanZ3hxsMlSG86eAtTqvY2lh3WFoRwMbYOhVHBamV4McvGURUc+rtRssWT9DVSuP2qOEasc4Wp9CEDDu8aZb2BC8YQ8b8JDG/u5ubiAv5M3F2woLa+M6Wsbq4lL3k1V+nwMXo+jXpoFOeKcIb4x+Tao20LYks1FR20Sg5LiVZnSCL48RVYBE2VtHsnDZxGRX0LeGzvBymQp/uUuckbYZym3kLZ/gG9oX6KEJ3uego/RXUJUSJ2fRmZLj6P3JLauvfMv1Rl5JaDVebdb/k2fa7l8XTo+W/2Q4f/2GcO0v87u7KbcPcD+0eHj+zDa0kfvv89q+W8E48qpch1XMpnoWgmYwiIZNcbwnRBOE00PjYUsb9NM0/8gz1YAclxJw09/sq+4wig/mG/uZzy/tu/hKrT15TpXK/XafcCpfxUZyTL0FddAb4u8qGlk5o8TAMqQjCDctE8IUTLidI2kt7F34k/9JLjpSOA2sNx1REQByD1lLf25tR3VuabnF1F1W39qaMl48vjaiikTK1oH8dUea8CUtDgQ0PjO6+grQXZ1XJ9m6W+eqxEkcmwqQ+hxIORbJ2eSpDBUSwJOnU3fCxltmNis/layglMbukA1/RP5CJ3BNvOxJyjnhu3b0KGjFhMdw332bEF66dOFFx4wd6XtRSyS/bndB+A+r5tmkqMd0lwgg1d8tMmbTjV67VqkmAYiV8bfivCsoZcqMoHUx24r3VJ8DTVYzXYffIBVDjBJQdA6qls7s5zdlTlWxwdNdWtvSr34Qk+vq6LC7djE5kINJmwk37urw8QE0/fjlf5B0K71/Hya3z3rhTvyWZxej72i5ZzGCw9Dj5JbELrmzogNZ09RQ/ttXfvGMcaAZHh1zUvPoUQ8DGq3zZOYHhOENBO/9isfLIJnA8EfhguMcBUXNXuzGkaie02c1iX1ZgdcJbHc5POJCq/CdaEZ+5k12oTqNzZDmyrLpX5fIsgrhO/7S2WtiwiU6AMzQ5Udo9cEsWffIJkZvPf3dVgJNdTAn9wQ789q6SnpoV4rBaiEtnol4F4WCeXyp2ETYa2RfPJNAxDXXnUripwPxGfVFHrWtZvAeVUwxvbaNMYy7uqHc7u5CeUjbUG0vq6idv1FI+t6YmFeCYZVnh8e74lzWilV0M+DweiK9NUOy67FnfRx6nFkbGFOY0QCOgvgt3iKiX1FX1baIV/WSji2/UA55u/cM4dBwinfPb/UdWuE0OCmy0x7+qPbESQuR78OJ+axCpm0NTrI8Y7LyluvV/tmvObQVWlORT3xiGBo3NVeCGQKp5b4kJOlWeefusFoPY9JtwemvCW5lT71YHAo+3WgJz1lQtRV3two1YbXImCGtrbshHtKSQin0oUg6EZnZXNjXnYivjXn6PJwEB5WDHHo6JijDVycOVT6PVrQX2DSjGOo8Qhg3rYdaW2mlJ4XRIWTyKnCsPE4Cj/jmD809Aly3UuSvRNnFpS3Gpob8uCVseK6WIqVgwh0WQ+X53w7HOURhaWypb1xuYU7hxa+iPsw6cr0DlAe9KPri3OzhKrpqpRBx4GvtYpI4QGdl1ZebUWUp1IJNDIaUHJdHONPQM4cyvI7Erws3NXkj/xlq6t7j3YiSWgLPQMvpw7rhsWdkVxeBf1IS0w4Qf2AxtDoV19+d3oSVKlIEcuv6Gf+dDxriqnjGwInTt1oxyZ2TzRaFbHY5gLwflocZ8Zs6RKad55q6rEXNZ70ELHoAoSxYzm217kzIu02z+Lezvza9rHaotXaukFcFZyQVjSCHbhY8689ryq5hHce8ap01UUJzEwhLqUkDLnBF7y0q9U7PhI+bHHqLIdeWllzpZm4ooGNT0KrCvcNb+7pSN8gb0uiRt2RjlPTE/YL7hIaUnrJtRriXP84snbqN4/z0+UhsLf5z0UJDsALPQvzuWafkz+909mBeOWainqbvdNev85u9QsIyNiOS9XimnTBxPzK2UcdHqtiLDV+8Xq0khz9w/eS3oOPBMHGbM3TUJyiwsQ5c01qspOd82IQ/1qYRIUnIl4NiEdtVzfTDyBgCYd84vdyojizKMg/dhEfYhEEbSSDd80Jk6c1Ngz7fvRIcMl7eSpsL0rCTQO9W1m8kntnaucnx+1+qVcOtOalLj5kKBIucct89jvzP9cekb/tUTtKr/6Az8bDnGUavLE0n7O0dHjstyfGr5xK99rjbveUi5MLtzoaCuROqRzq3O7ExPMW7WTyq1Jq+17H5XzW8sHXsLzTaAAWXDI+Te7c6tfXh71cjRr6imxg4uemi8a3pmXr+9syT/4Gc8LcitOIwciXvfml7Dv27FB5HymFgDqbr3a0EOuzvWZ2MesqRnprd7QSF15bZTjjOkP3fjy6qhXVsz0iIs49P7rWwMrALPn4BepTLQl+QoAMAXssBjY2VOzlq3bdRMjMrOzraPGX0kv+T7sw23LaQxMXckQlTl+VJURdOnN3szmr2cHXam1enjfHKwBuvgpz5N0Btp56bRDmGWvZXD54kJMDGxqe3tV9Whf9TrNa7KgLpyRwTTiKtA5/MMDikP45mFpriE00ZR96jILTZPbLaZt9NruHZVd4wFHH4r/x3n28JMxAmorePzog64ww+7/T+Teub+vpa6SpqcBwW554EDJB9dzKj9lI858wmtlL+jTzRDlp7lcU+x2vyrenc1FOcT8ULUpsmlMxe0trPP2o6hPT6L60P+2AON2v0Xqa8KAc/A5Z3rhZiYkeds1z+ZCgnilP/xuYsm4UxpfIPjbALAb951sF1RhEfhFZo+h+cjwsap3b61jT+J6ItDcYBk+GDU6ncNLu31QshEwK+LaYZ8hC+nYDbTxQUrP3LfYwdubEOBhGZvubW40uLe12Df538PnB9javOAV3zJGifuRo5oagG7R7jlH+t91l3fY3tFeQ9YvO6W7bBOPaU8oYnI0e3Zm4wg/l2hLgGZ03WaFi6l3SLDsyPH3qhOyFMZ7Qh/IbPRyre+f+juVE9ebNNkXmH3jKG3SEZdmKi53cfklBSvvctDFX+3jvykvsPl2aVxuQ047RuDicrDiZtltuql2RgP8OOwRMNnL1SsNjCpnfFTm41sAjrNcrqk+yIchV1rnF+t1jfbdjsnd0YbkAi2GjIK3jsveHFsQPC6X4YEo9i72Z7WmbqI4+E1ezpjUxloV/+2LryfcOxPiRFI8g/bjhMQrQFeVaGAcGGzfzC5q9bkC4LC9ItDmY4l1iUVVgOunDDxycKHvJqKr/os7KnktpYvcv3u94pzxX+OvUvhelVNyP+82y91e9SUZMF7NlTn8aOfG7078tZegEyGlipkHZr/+r7z0B/q5Ypy5ratGRzgxJYWEBMj1emwMHZVSELPPZdziP9L7qlPlB0fo/Ub/LnyqUdx7Sf7mZnwdOFpF+u//jiVZb+eDwB32wzNa/tHJftn22/M3T4t2qbM7tXRZMOylwHgEM/I/pXzXzYGzlUwLHHUhy8tK2Nhy4GvFJMSbpfghcCaAUMYGhwAYkrB0tkQE8BeHZXexDYvh3LIJWJSxFy2zDuwf4n6ClIO3uSkff+AVQHFgDjVubYKNntLvl5hDjdNyrr7gIbwCorDvn/+RtPmZX/rxCYzr+M/mvAIcGt1vaencnVnq3lHhlTLvs/3vstgTjJRDozUMjF5b9ELNvbNJJZvCKCXHlNHjszJuERtY9MHDUsQtbQ2oOuVKmtS0O8XmJh28IgnX98E59InYM6CpsEUnhezx5XteZZ7Oi2GS1bsdW4IC7rlvDsD1PI+rKdidzxqo/Tk7b5D6Nr7bgfZ8MT/653PLv1rvmRfWalxiAX7QGT/Y/he/X7nLYb9krE77gxHkRxJx3ekl2dFMYELZwZrO5tX83C9Z5856X5k3UxxvAKZXHc9D3Xt/AfDtr1+XXQZmwpu04PWKzdHDCnTtztwSzXgWcubW4ijtFgZBWt+cJu7ijhUD6XQYhShlJnifIFNpgK0LD/dZLJebea2jYuAgIiIWluVZPmK1WcYV+2LEyc29LSXtUAVS0WNvOYgNiQRvNbROlcOgI3p3bzZRltbQ2igPTw05S45chwk7TSZsaL9wjhS9Bx16C6KvL17YSxEWIc8phIMnLpw7U+d26ogHBhYatog57UtUMHv7SVF70eFriVEb3PdKRK7DhN6kOH2CS2lSc7gMORpHVHC5RCUDRdNwOMwlLoYs4/NJ8sWrQoLNZigxaAFPQLNQuRm6HIuMlC8iho2kl1BplJvFIag+XbS/DOFu6HkkJRMbjgoMcKD4v5TbHiflBC/wb25oNY6TO3zTpUjIDe2mvWJMFbZK5Oy1rEd4t1JbxTus3Tt87Fg7WONoobaIg+CZ1WdFLbCNFtcmEAka3HzLdYGmPdSZsgjck/3e0BEQYW+Alu6/Y1steeaVPA8+ioD9Dot5AeAC3fXe7Ue8sDR5a/7YQszCWMypp7ic9kGPsm7K7ywaSDJ6G3qOt5W1X8eld4iHnGa/njjoO8/UV7/1M+t09vr3whuG+PECWYaE0GPR7SDa8B8lNoBHfhYtd/EV6guVO+hTnrijDBJtismFnRI8v0nY5WmklFUcmhWkVKDZ1sLYLdiQYrW/rh5RFEv+lv8RCIZ/bZXcLDQ5UnsF7janbhXg6l3Bd31cwgB726NY+FB7yr5fd5blft9tnVdX7To/AdJxb8J6RH/q40dUj7qsOvH6+NK2M4YXxHmXTsGu17YwiMXNl9axc6XMv013+P+faavUvTjhv9LKYmGgcw+JoSPi8WnQKesX3L+2tqme8cpXO1R9cpalqkxQ0l+N7aI2vlWRId7cjCzrFqUslWNaZUanWSbpKUdNSxuvlY0e3ptuyClMaAS4UFcwZmZbonuFh5yF106S6L/BvE/Ri28Fpy8/PuZf/nBFhoHa6rMLojn/uyfHXGsMbQwef7B0xZDkV3IlrL3tcxbvmE/nw7aNRzEGs0u6lOmjkm3V6HSjIcvJ2lQ0YzZSocV84+Hs9eketZb1B3ff/C/6fGJD7ez0Jk9yhCH9YwCSkdd5PYioAlUIqrCQFRsLvbIrbictrpMQfHp36Ohiic7Wj0ivr/uCwGl1mTkVOxbMTeuEHujRj6RhlCXcBcqnI4EjOVDiMR13nvrJKI7m+wEDUCydzCtKhYQ2yfLbVJofZEMkuAPYPeJ9/dupu3OtgZezCoBgqp/telnihgMgOZ84j2FTYwPdTtFSPL+jFdX+2+2SfixIU+RbXhwsxQbTQv8+MM+Ik23rb/lg9fw/1+iLGv62fHt3MspPnKuF+BK0v8JRcvgNn/W61uTJc9sPt4mQLw6LK6BzIx5e1g2nRaXJCdUr69E8f5O6u0jOeZTDFYSWxbGJ7sl7d+evJ5j0ylQRLuD+Zfw/i2DP35ZQ8TpfBDFPxLbZEzc0SO/ZQlJgbx5FwYR3RgGO2Iji/cmhFTaUqDqzkobojHp4y841MoLdRexw1x3YfoUcQ6RYaOq+EQIvV6cMvKpfc+j/AFp5bdU3mtjOH+AqwGPPTGWEcG4tueQYYJkaq8Kb2OLzLt9aKKemiOCSPunUX4z/33d1BksJzUzbIRn8IffdHJew/lrq9KGVqZxpM2NuAZAtxwR6QbH9qHbNjra4NpEz/4q5PMtYlMsA5N+888t3lwaQjfVtnQu/AJ6Y13H8wF3jeyMnZSVvAuOtx9epA+oswwZw5g6XH5vT/MYTg2WbZiavo9/kL8xvrvRLHbO8cOyxe+oema9+f5J51gk3HH2IUyiaXry0UT/m7nSr7UR3JuhaSsUNi+ELCZllt+UCGBJqZCOBUjY0LOdVD8/RKR2v6dOu/T+Lfn5VQje+H+vTeJ2VIY3XprsPKTXYitUmo0A2PK68Yfvv4OlxPaS+v+ht5ttYj7yhWfExVa4p5W8nQ4SyFxd0MLq+FNrALKs7/DwE9zTybybjz7MVDIg0P9WSjZslrdJbjJg2Vk1Pe5kUPg0EsZeIxMEy4D/2aeovnVIwGRd4PDjNn5rACaH6U5Oa1rxlWdedC/XRe9iF+RNbY/KIsf/wLfO1bhEvoM+8iHjF5TTQ5ue9+jLlikp1/6zM8YFfwnqmRb2HlPmffrt6dUtC7oOzPKcLfvFbjvDntXvQ796nD23+Ffx/21D2dx/DOj5fV2h+YXVVD7Na+yS3NndtOdOaHIYz/AXVakPLX159dGy5mb57J4Ky+cuqhXDvw81v7n2J4LO7malvpXpkdJlq1KU6qZQZE5Meq5WqSqk1GV0xRQfi/rbyiQ1OYKG1uYKU0hyBc46XkkeR+PyOivPyrvyNx3uo7jT7jK7ySzMmVvXhfLcQ1V2Rp4pFHMKS4Is/qqfLdWq3E4X6025xxeWLC6m27dMvXrWcXU67hbm8kuntL+a5l5fYF0h5fSL3/KLjJ5PV26wFEd5ws2lwyJ8pmzdE8a3J8q4PmtQbNpfNyPNWlUqzSjoLOVDnE+oeNaPinp97f2SbQkaWLgiikuNyxeSlFjBq/3v7YUGRxtUSOnWg35+DXHOqTj9Cxv3gux5Jow32+XEkS6URfGuyrPuDFpNKInfcyOePMxgDDMThpPoHzeURT3jaDszCIrWzorikuJyWyUOkxt/7oJxIy6Si/swcyuZFidr0PVR66GcXmGn27RPPXrdy5RXNLUB0KreTxfoTbvHFtoXF1PLt089e0ZupytGyP7MVGk66JYjy+nNI0KPJjfcby2M4yZGJq41S1iCLNthwmcFQdn7crFq3H0RnDgz4MqTzhl3vW913EG6uIi+KVcms5KjS1eKmi1PfYOrsnKbpJzDVNSVrgEnrZ0qMi9dwas77LehoTnJkyuoSCbePRR2iIOsuhSSLuz9sVqvfaMdgDIz5CniTBo/3rP4vU5+6g45LYqXE6qYkdObAoG+0g0ktbZ5+UKL2QubbT2cOM+SW+YhdzBsXTsT0P5jTNgArFF8AnNMFRhfbNCg+uMbDBeB42SnQR0zxFZ0PjyUL7lld7hLH3gmnLOi5r0ILrmt/eCBW/MCUunDVng2n9uLV8WTxXf0P5wH2Cpt2fRFC5/F9txxwzRWGOWWBCZl0bA82VyJB329kN70Y2Y+qEaaRLnJNEsITF+D7d4UkEqiZmwcVjbTwVhHmFGpUijywAJMVKkoQzn9z8y4WdJU4X5xGJROV0XicK5h0lJNOlasTpdD85FZ2JhPyOsCf4eC/37dgLhG2iO8MxkRYfXkh2YkR8gqHzM8tkYwMTzDzsOGGQlx3LCmmL6iO9aDf9Ztojj77xxHLeZvx6Ox16iFmWG+ukgogteMmHQIaEKMMADCl2iQZNIfX5SQm6RzkukmD8fBG94frVRAzlYmsLCOORFNXY3qx3aXowCRJrBWBMUT0aFxDv5wCiSaoqlJpxhSTFA9wWHl1QEpOF4npjJ01IgI6OHWRRhW9IY1SgwoL+ZOiQc2TMP4JSHU8ITyDrSR+iVBTMnHaGLhfbaudYf9i5v1eaVidsgORY2ZEXLlhUopjRGQkh5GtTYLIbGNQvhJD48CCZOmQmjC4vCbMQa+VpYeacjDPZCcTGrTkoozkZvhgEzN/553ojKoIb5opNyamVpbgjW8sk4V8R5V5B57CkEZ+b6Ut7LBN+H9KIfSUj8xbxOYXQByGxGKTyl2jW3tP4pGaTYowj+WW2uL/6eZfyzVvcxTprSdD3J3+VzmyjCaPM4uO1s6GnReeddz1XzbuP23yb3QvdfR39GJ2nhCKQrd7Oz1rnVscauPSamhW1/vip+iX0PWNqYqr5QQC+UI4AT0DXQKPlkRvhJMSCk54qH0dB1xvofDfbty6ILtYLINUQOqtTd4Rz54thbyD13ZPD7EcYkTlkgyev3a5R8R2uKQ4WYC1aj3+aXopvMNSkDCrmBoBEoMifboU26ND09y/jomJMgeVItjcnBhRhJeJL48vh0L+9RX4afFJhIRYdh9NH92VeEAXKP3BK7RYkmgWcZm8/+l4MUtJeY0yRQP0SrEroDaB2wCgGqqS6TGJZjU9tI9XKRdhIbjIsFYcOgSUTx2yZoZrJnA+SSFmpMQHwRT5j8hVhByuf/feLQ77KegGL5OHFCx2ktgb7eptPWygb5Axrgft0u0PgWrcy5C9lDWknjMHLs8q3Z/jtsz+tsf9jdn6XYu3JDZwXYT3s1HHTbFMXx4U0NUkCXa6hvwutv73a/FC9bqSAploCi52oJacuS6UuE3mWgFE0xpGYAyjOj3q82SpYrExgRaZblKD4+2RIkM+WmksTtMNh5AgTCeJdhvYvRc9yznxl7Ucbc7psgOIOEJu1MHtEgi/ZKy8BR+QSjF6umCm0azusZVqmJWg5YnCqly1Qu1xZlr43yXVldWna5ffJ5O/Cyu7ui04eS+wMrqPKUKJMEZoiDFvYvk+J0UJnzARxMiI9A8hKiIn+AR3p1aGlpnjcmu0Hiz3lCWAENDWISn/I8Ru91px8hLQ/kVNydvu9NrdhAB2iJS3jKezhxtRfeO1gFeIu8/79sGnC4KEeBEsai0VHVAogjkUfEMDMMfV61A6wHIEjSizzJVQb8rWz4HSupshI46lrNcbX9ona64NGiS/ySOHj6i7tWjHl8zZ8M640EA+9XPbAhaZhDQ/fRIz02TFJ9gSf7RYOPUHITrcAt8i55R3pGhzXh1y8DXOfMKTZUquHnrud4eoZialg3kQaODM80a7YGmVQH/+AI6TOKx81Z+qbRWfh7UK/L/f/lsWBzpJkTl7lP4VE6b4DpKRszgqTh4CmcLmGlQt2yGaHt+ASk3UN95OZQejTNyjRqwTavK5/Bt0wr0r9UaFDwBiQYlOGO3zpC1l95jJz0Cuqf6i3Tupq2dDkaA2lwAh+RxJ8eyP4eYRvlDa4sIRgvBjmsZkvgCpgLR7SmOsNCUNx3/Z4CeKGLGdtzmmwcMMR+vjcgETOcIiHSCn+qCSIihWLWaQYjKnuUym5RtVcg2zbMwpV6MGoLoGq98X/Dva77ar/lda72RW1oGkt1Z7iJFzfKbRoW6yvbLdpJUSQaAJwl2AK8VQlseM5GG7nRJ8Htxtep2JhbURxiqnzNse7TLluiEjmsfM8YFKPa9sOgE7inpf/6RkU2YA22iAHBfO6VwOLg1e6kzudhxHOxNlVktRqwM4QE5JCpZYA9qumPyGZ6EJ10rDn3at7kXWrnJBvCOUObSQ743b3O1ubbPGdNKjl/NhLGi164iAwqc5XCBwBcdBKDOufe5Bwo0qQw5HBYJ6oAJJuvGSoKKm6PfSW1UzmFsBIwLQ7HVltNKW/YbUqWjgRlTnFHTITR35eSQ9FM4NBXuhdN5Gcjg0J/IQVHBfKSThI7E02dlqLd3RUL9omy2pQY7ekeySUWXZxbessytsYbd2YXGmDXHif263q/NhAiEocwos1TsaQ9Hn/Imeha8eU6Y88R6wI70CZDx+cb01tRrAUTEPNzLezYE4wpvcMKAq2mRh/UE4oFAjeIi0PcO9PUsElLW+ezR8DcGniKUvFTwqOXMNxZdkzm+eIe1pClsKSu74fqr/J3yyIiJuQEpaVl5BUUlNv9Z3o9Dx4/3Ly93TXq1UPqAEoOgIz7xt0mxompcaf/HX3KMed+gYAfN7yl2G9ffAmCKiEcNU9Bh2t/1N2D7ao8Gu7MyYfwZH1YOA382LXM3+/xG5iQg9TtNLwzQ21hzGvIAvn+e5lJdOcImjde1U8+BnHA11Fvwk8eBinucFHubN7UYnTxof7Qfeiy0n7z1d7tpFxGByuIy1pR1n9vI5Oo+OQ9/1A3HLw/+q23ZVyPfYMGiRReyrkt6bhksICVt9ppp6PM30+c4EBLlRqV77mgq5g4UTifoNJdtEj8WkU2IlvvdRiB5pivKnSE23Z170UjiZuR600v3pFH3K9fZ589SpRWFSF6adNb5ck4/z1hdGgQRvOr3e0O9M+cxAQMR+BHFG1dbNPn0mEyZuMmnVDPhst7r5okV7yoMpyUOBgy6Yayxa8GO4fKHjSniNycTMteu+w+QnLTY+rpt5FaAEOc8yL9yBtvnC8Fo54GLLvAgHnGyZ+asDhARTeM7CXlVdMfdx4KaZ5pjbNexD4K600S3uIU5Sp+shsHkDBPWYTSAFBafQzgFbUG5ZSDpUIKgw4JIc+9r6Kd2M5o1U0FgsB0uT96RYWd01kh4CwzpAfQxH7wXFKWv6nOOsMEZKUVB4DlTwhG0fZOgai8QSHaElBsc4avNzkO0B+XWpdW/m+Fs07HjYYRfg4JpuhpfBX49fwJzhSZ7i/nriNtkZe6PgJoTvP39XvSaOhc7WNxHp17MqHShCD4HIyfCUUyCma0/Z+G4EERQxjMCMD3nFt1uKKEvbEXBP1mj56j40kbOMi7HTU63wEIOUqqdEBn4obVXro+KUMXo0Yl34G2RyHd6gpndhttHwHrPT+xzqrz/QAHdD6zAGMQ4HTy027F4vtlPrBT0N9HbdYN7KVHFNWqSIn0rWnpE1dkAFc63wrjMzAuDbGds4ixcAnya/LJY9ZcFnwxQpnpmC7z/mnsV6VTd1/6R0Zt06WOOX7nfrgvUybCgltfRPPsy7AcKzR+mSuqyccQ0V17zLtESX1FnVuXWzzyeF0Ru3QTAAghN31N5VkYVzf+8znSbvinKWVQTPr3TSYB628a6MmtCaffou6C0zR5cXzYxo3ka9wG+Cm/RORV0U2w3EY/KG9X0oI+GU/UoHQX7RqyucaYODMPRE6LCggvCJI9pfzi7I00avsf6xGEYWT+4Z1fCpqAvP7r+56zmtK6+vhfQWvNCnyWyXkjgVZTtlUkRvHkiTu6ytLCgbzpH0Ilcm5Zu9NMtnEh/Zvcn9feceEYjLcE53SZuLeyo+wIvNJWSicruteu1txtNrq3S/wYPw+xIA3sEvvtcQpy+F63h1n+bMpTGQ7PZIUPIDj4/MHGTTyFFJoaa/QUBXhOoHrjB7IHuwPFkSqIl86dDImvypyF3N7KSJxhSxYRvDTyP+Aw4rwsg1c+wVaUQ9SsOpTXVUckXnGbV1uum1itdNjet4c2TkI2U0aKBOT/PtwzX4FQo1hf+GBIIPki34uOua/MYUNR9XoCVqN71jdNyI6op+olfm6nFJjR09PscvkrmRcW9VkuVDdEwd53EUumTNdTgdlk6+iSPLiTJAs1fAhY5IsBQ1ffpOeBEtd+02xjRZmX21fiF58HGwVYLfV5QdFf2fFfWcCjmmotExepg/kAd2i3z4fjLo1v2Um9O/Paj0rEy7X+9h+6n3k/7kQa1jUis1/HjiF5IHvhO2SvA4qzydo93JwFSrfpoPdvp6Y5127ghlOxQp7702OoWYC4hlOJ5lIR4Tx6MTTtIcMt8qwY8ryk8q+hcr6nEVsqxoPzMGjaFCqe+H98P74f3wMIZEFgAwvZYCaGD0g0jCq1q8uo1Xh3hFx+srmGHMxtr6qPcTfHiOcOCr2UmWgLkQb9F5loIWe0KKhU2N+QV6qMttwFYJvl1R/lDRP1BRD/sqmYHxIA7gBV53gGn5gkTlAFdluNzyHvOX+VYJnmOVtzKd12DVvzKdr2G1tzPmjRhmItW7VJLl5CXKB6Bcnu4HQjdpiOmA1mmFm2md4mlV5WnC3rTGvTHYTG/ymt+A2XXirBlYgPpgAAACQMMsrY/Otx3/rOY0bSXx3P9hdcM5b0ovzVvKfhXiSb+PobB2rG++dvwjs7ZjPYMdP87nSYuveD/jK11r9VdPRfm4O/KgW/wYe+UPYw13jLX699jj5461PnqsEcUpjN8+FNVumQ8P/2huiffUlW4j1wT9h6u/TtVGvfucVX/oxlBmBRdPGRbc69wcGNebMt5o0vidY95kDjG2m8I/J1z5yQTDn06w+uKE48dMsF5OMPr546d+hsujDzf3yI7qwRXC5Jf3mEOVUr/lsYhJKdyghDjadXWc6C7UsEKkuVxJjTZxrOackqKlsqBGQux6VuGGEoYbSxhuMGE+6rjKH2XNPjeeMM6pOfqsow8aALc5ziKPbctYfnIFGwFg2wTxZ805JZU5K9NF4X+3IPxaxuiFj9Crc/OdsZ5nPTFkG6EqnqN8OdlI4flGilo+sLpavp32u/tXB7Fb7qn2wkeXQj+14ZS2XWrovfrPHm0e6RmzhUesNjIf/CLZb5sww/hLjuk5TO+3aOLTIthiUwDL2EOngXqNG/ohvRng2dBO9yB9kWjtZwVrO5RxkVgZ63gO+MTNdpUrQk8diDmdskWJ30iGT4n/Ouff5a528J4wdEVp/2TIB82LoW8woOHz8cw6ejTSsbsoX99Na0gyppanmCSxcnlLlc2A4AI0UZJI+3K5PU44hO/RJmJntn10FsVqmQGY5FJ+2hEAkiSLNwuKHYSipps29YZ2OXeD7jPr+X0m5ef4TkqTFhvSOjc30yB60+blbhzf/QFSa7vr5txpIHvrlkXAUSAlHSvCitgbOTfxGz/KdFY2nUbshm9uRWOZN+ySBRFmzG6n3EveDF5HS8Jp3woU318l4DRxo+3P83rqDP3rRoyPVi1pMokCD+gyCsAjd+iWeYZcjiWufq7+y0KU6/T8H4X9P/w14ERelQe8CS6Eg7eH87g5z/srwjFITw4kVK+yPSPRbOnNhjWKzxMlQQ/M/1sRSHDH4SRnMgO8yGO6c8co9oNQOB3OvzIIL7Ec6pQTPScoNZ767P/LseA2pGQWtCTarUZa7TQpCY50jJmYUGP5EQI+HHGmpdjUfH9RFZISzkPEqR/1GDRvII1h/9bb8F1cUDd0V/GdHwD6p4dkr/Oih/m4JZ7P9sGTZEnTJxJtDawCbx9JlnlnLDTsCRJpBYJNe3/ailfZpptkCyrWbqkgZ9jJ1dNsTuBZWx//5AFcIBxfWUWQauxbytMlpwKi1LVQjzTzER6qvUW+Ga5AvL8fQn14eWQNKG9iJ495/vUK5cC/EZlwRsmoUvkJvKWrLzTzblDqsBDydcuWIszUHN8+DKuntNLSfTmsmbr5MPw74cKQlrfYkZ97PqlcA5naPu8GN7pbM0r+AErRjaW2bHZ3n3NlFvIiIiLsg0+86ukl09DiJdeY1stfXve+fOdHPDlZ7Hu7UD3Gud15KHI7rpuPdPYDdwg8LClR6WbiGdO8d/XtuTJDkcbdAtbrZ5ad8GYUNcaGzNJnjF9LgHIfXfV+JTr5yuiyMM+9mQJp/Hsk7Md9yi0JqherBq2Ix7nr9Faj7q1l3bHNziGkxPoVgAV3dmUScujKDo0Q+JopAYgD+5QLj/1SSh7DtChSfldosR8O4YsMHVj5nWmxKs/M1WOwuWgkR/6ZVBAiKbtZRi8AIDEMb1q8R/RRDS8ETeFOGbdL8xn3iLWP9bSVccvU9WRkZtjTtwDKr8/wlEoz6nZWXBCXxGVxW1yNr9k7cylrcoPo5r5KeOBBax5fsuyK7GvbPuvCfpBrBtKwSO4k/5w+D8wvzmx0VmEb/DZQX2xkRFGirJFWXtKQaFs8EhNudLJ//iZKzbT1xkpFzs31IZo9fgOUUL0ujCjuTUismrW7KDoVLuP74XBYKsM1Dk+G2+XYRFZEfYuQWU1JPgcWdwoXIn/TauWWHm7U/A/bm6YYFJWuXxhbwcF1TuSElyC9b2qjCA9qpXJ/Keb+io+vRlEx8BzvbCkT7VNFBOdHY/sG9aLVbN+y8K1QtfgeOiJ5nciH3FKnBpdadVjnodDbpQ+pujrYwZWBQqrMkP9K4D2EQdutTgTMY97eL0I2LHerqcfrRZUpeHaoHTlTM1zwH1W93vXRHdyn64WJ9qY3ROzjx1U0qEX2z5TU6utb3hH98gpxaii3rt66vp4w30nuhlyO49bVW9cF8S2RagINpfcv5nhqXzme3su/mvRC5kupVvrITjDk0nmA3d0ECT0nk4g3lGxfbI+n5tDx9Oz4apJdzJdSrWWTgzCzhQZCLm8AmT9Aw48diNhmhxf/bjgj6+zeOV4sNyPfPOT3vb6kFQPLe2Rg6KAU86WyZo4XU4b5Ei+NbsAvsm04op8RR1P88m8VXVrHWkjWxDKRIlLDcsQKsVKsEqvjNXkJPS1/tsQiI374bx1rPFlFl9VxCk+tR5eLFWKlWCVWx2u2grJsavPVRMJuR6rx3Mp0+4kWTKL7l799kJJebTmUyy4nqbNBdP9SdnboqhQRlaqW9HUhKCXOD1AUqXBiuilZ9cVM7syJWcvOqZVZh/5adeSJBhwRt3uAOtwhErMRbhufP2Zud5Rkt0sD8u+337QXVa0lTq9La5Eg6P8XUDrn80e2ZAXGmXgpJrHz86NwF8pD+nI/+oudhpGpmA7FPG38PyN10LPGUV9so4Sp63L1JwBR58kVX5bdliSCaqBzs+2Cmsxlah4x0mO8+TmNo/BM1ErlDiHyAZ3RU9VWCEgEP2janJ2YfwMXLvgSIIjSJJc4j6UYbPDiFENrOC5ZxJzh0h1m60PeXNTBXPPwdvSVs2p1edsPseFoNq/7/2eDDs/u53A/XQYXftyBGR+3X2VBQhLtaoBxwB4xgRk8+s4zsZlmFxdTWa4wQWBI0Ay+24+y9Ju56WjetZlKbV8UP0W66rTHHj358JRnvOL1uye2v0nc2E+UuF/YBLkrQ67d2lBEcuVUkxydQrhEFj5lln1JfFlcbjnlrIDWDFQskGT/NB8U+lnIam/YWHuR1qL5LH7wNwjvTgjyWoLfSujcAVB/4SfZgCi+mhKUAfEi95meGgVCXZ3UQme73C0HV+TBMDTaZyww6LrAUuZ50s9d+jJrljR8SXkZMcJ1iJiHd3ks9H2Ejl2IRJCVhAIXLdfpIUxXztUxB8iYrwLlXbQvQB9Qm7PoA2pKQgy1/YthwlIlT48kpUg7GVGMpDu7kALEQjwxwob/5/CFbd8iZs59fU0y4W0UqKYuOh9zLkQq+nnJSshz7xcEx0SAL5tuWJHwkKPXgueHz8LzR8rLr6Lami4uRCFaLH084DmBO7HDtH2ZQVCICFRHox7C3pb3lUFBC87DvT1Jeb7z4elfoaNZn3ZAlOUJ8jX4PXAXipT7u5ACwkECq7AY4UIK4jf8ygQNOhUl3BNU1fpGYQVW89W5qwCyObNoVsug0cdwBkMEqpbCBYUAhSy8NjcbUEBm86ZTc4ctdrky8Oz5SuHJl++M0LxQiTHgQg9kxiZYIHYlwb1yD22x1nvKNkMVF2tO+muJCyjVOaKPfYw1JZDYAWCRAPbEcOfacbir4EEoLuM2fxwAnK0UV+7FYovu2XJVlKTP82Uw7fiNUJLO4AYAM4PBeiV2tV8U+TbXUf56Vm1DyUUH/Foi6TyAI7ik9vozc8niHPR6AgHIQIf3I6TYMo5FVoK59dCCEC/77OcKzp08o+OLLSuZQ5BMR2EL1vV5VPWqfAhno4ooIFEjD1tANqOns7/4sWUGl+3Rk8zM/JrL3ZhCLna5sg+iVhjiJAjfhjvZ93cj4VzsWGEH3O98Kz4jYgJcijMEwmlJrMulyZ8Ip77cZu0syKdE25N08SthAqOR7L+aQQ4yGu4XfCWXL4O3SuIW3x4YiDVx+ldkwtHXNLsAfkGN+bzEHfyqMywwgEzvG+/R5YNeoK4M5ui4OwyB4QEAaPDczXsNMPzyTSiJo93OVCSC2twMWccaPtbu/WcA7YnR6y8R+GzSEqWS2OZ51Y3tSNjJ/cWA/PculxspmztRq72EE53zdvIYKHlzZeFNsYUb5RZg+M8RpIH/m2gTlU8AYz3VvyAoiUa05JNufgSCovM+BcQQEVNAC85vJaJyeQuoHbJcus6ckwwgOj1V+L/U/PYJ0UJG6Scrtz7yD8RLREEIkKYeYLPouCc9sy+NKN6KUzvvZ9ilCEMifAjKpV9itn5ZzQ6QBBTTKr4UNJOO+ROXu9zlLnOZy2IWl1zqUhE45nTYcQBkbMQlN0SRncmZUOWCCy6I+QCaEwNC/FLcuF/OdtZI5W3/AmzY3AXVBzpVyJez2MC3VNvt3khH9i11raN9esjYFkeG7fexVtFUL8VPgOii4IBxJB7u81RXFq3oFFXwP0kkPIfBeW3LjD2EP9rJfR+DCaAaKHfFw2sJgf+edYGia8Xa4MwOh0jd/JMwjbp5Hn6CqVA6c0AzU5OkYhY3BFGZOcetoGioVShvyVjbiiRf+oyl0R5VN7bkeeWQUSFAbbvE81dudn21+WzItgC/1+0SxywpL2O/8BvlRNV0pd8/ACgPqzPBId2jr1Sz9ystCZsN6gmaSpalOxyYYSbcE6akZ2EV38WIiy3POTVrsifE7DQMFPj9c0P4SsCiw3bLi6EwjGdoXYimxG1d9HAQ9SRWdAC/UgbkwsGgDdaFno27JwMYwAAmzMh2pMcVPYbC9COmLyv65XPCFZV1UZus5+//XWWcvx4/0Y0Vuxf6rRUPen39PYqHjXIpe7+KU19CxWIoOFD7OdmFN2/vZ/B8/+ynUrW6BkptkU2rIPGtYF483OiYW3aqYA+v6L1eGGSS4ELO/wTxyW6hGnLBNM2CWs38HIIS5SrUa9BoXgtSEBWYv5Q/RFpFE8V9mfIjJdx3inPL/bx+MSdyxVc7QWnZ8Tq53nX9yxlj/jGbaJbCDb0pR8gT6UR53otuMo12K3n4rcqZN8uA5tCszG8sEEwHCWJ4UEcqIuJOXhsqBNPsAuD3pjGa4XwIBVvpsVAbPPrEHkTsxEi2+nDTKcY5zh91vJDIEOHTpOUXH0lHGqYhimZ5qrHHGWgq5vD3wnzzN3GPZsVZtYGr2zvMem34B0I7i+GX1L1aT8/21U7fCNOssLBhdjiseVyNdn26KNvAH3u073+Nv2t95sPn6DwhX9jyRegS4cXlA6ArFI1X/eN0alH5gPzH/D6XiKC4FJP6o6Ds+LP29p0UpERIdQsRUsf5EBeHHqif0EzkGaw8FvDNYeDOay4NPDe+JHADM6kLvIcEMtfPm/YCvPkCZYHP1C8Mc7QtrKS83Nu9ZxEeipCa16GA6HMe2jIGwAnA3I5TZ8R27ZA/UU3dYSfUX/0X11TQ2DaSluH/gmXWH3asTKfypPAT+G+r3Mer7FfwNi0T1E6QHlfUBW2j9NKFjYeukV+6utN391LjuuH/HAaWMb3PW7DhvWZHcsJfvl0Qn13KLxO+4wQcfUCdKQVxwYfSX0G8bIVrDsT2as4rOwzQ9WT7Mohb7g7Zj4TW/O/ln/y9aM5EDDBpuTS99B0XRI6nXnjoU2FwC6URrbUJB/NgJyKeTHvgicYhA2hRcZWv9YtmI/6n43Q499e2bK9XYXvMJ216wVwBTgaJnXahkBxK6aFWsrEaBgbMusNOSCboUNIQmBvSSGmZgwXqqbrzLxfYRXN4KmC4CJ9apwyLsn2RhuIVIpfXMJ7BtZobgZg0yx/hevXyW/Nh3kb2rT/nli+++eGnX36/ofT/Xpskg9frL/VFXXUXqZ+mlsa0YuLsAmi2d3lk32JdWxoYCvCTqwrA3o09uYi+Dm/9z0vobg3PCydFpqfS851fsr9lGc8JNFEgzQZ5JpkNARr6vNtmOqbuO1jDc7KVGIvqGRTTHhLcOYrieRbOlHbvOxhQKQ8G8sfZH7GmdhlXOX6wm5OX8jfJyDoOs6HIRNQMo9kyIDFIePH+J+bkVKPi0qukZfE/642wnDUitTdM9uEwo5G6+Xha9DusR5KiR1gOw1UVH8aDrNNP3UXdrNcbEXw95/r/rcea7qovkFhPb0XgD9HHKsF6cDeEumJQk8lmn/Uytxe4DTwHd4vxh7VtXwLGq14wpU7PuxJDlvrew6Ln2vzlPLyZwSn3ITOTXtO2fZmrElz1xx3JA0IiWeGJmqd4UONUpJP/UYUJb3O+loY0tPckXCvb/tG0sT1navPDh2ezh8Fr0W/KCXsG5hmsjKk/JDgBQYfvboVY9iBj+BmRqb05EVYuFqakQbvTrTUL1jFUI2ABD8qACwV0jq3oKNEvRYXWU5K1sNXxoRngjEh3RefGZLCCYSfD0yIlVsYLGYRrMmQ6I7fBiHXd2OUKxjkApFx8YPQkig0MZglDVQ0BRw6xPrC53lSRPL9NfVk1Xnx9tIBCiBOyQSasABcOhoMA3Jhy1lxGpoDRqTM2XXJKqmv9hMpBZ2rSzCL93n0HqFKkZUBEWPjCVQYeEmN/QaKgHjBk4cLEegkDoMesaDMGJMegjobx6w66IkC4MlwuQNfh73Ex2scVrihE5xiotoJ1jq0tKF18xGqnmNuFINNa2DWbaGE1gS1gWnfSClv4AoaBzmhRiGt1VgYmTrrsBkYm3YmTzsRJd2QyGJkMSQcEQHtywQGYKGctgIWe/UPBupJYme6DWNRlal55YRFOGVx9BYram2+AmPGPTM4j0wXWgceFHgAGSCxM1wWZqouK6b/eBXAKw4QBGgCAxqMBGiGMc5EF5v2LlfXmWtNpfWXqDC/UbTc14Yk9+wJc5dK+U6dsm0uvzRP6ZdBq3dmsIuSkOI0lYXrPG+A3YADDACAAfaGwwawNTrmp19d0Y4fe4xBoFNefbzjO+Ro4M3ZoRcPYNKPnZo7pp+RE6HKJbZyCTlyZkhvgfSB6ELJh4AaABgDeB6wDAeBC0pdOCuHLwzBR1KRzZDvSTjroIdexUw4aK6aEaC7bzQk8BGbKHZc53Uyua9cF0mFUYaJCw9O5CStTuGmABkd3WcowRTb2aYeeMgSWT9JzFPUwm3ppblTsss8G5VDExEnXrkQt5AHkCduRmIe7tgikjQKB+Q2UT3zorKlwh3hjazLQCw9IN2z4tsuXLuH5Bx9bIKw82t+fAhDC9Q7yiK3pAL8mZDS+/alPYmCznW6XpLM3+A6xk+qRKJlPgMoN65gzAvaGPUDr0TiFGkCYseLorpd6nBFJzjgTStgV9ivDf60kFXbZN4j3I5OuzIPLZNXpPOoDwzBlUBiAFcEF7SuWF8wfc7dTXzisfwERxer9+ppNHMtLcMib9WJS7XO+NUuw+1QYbzZaEBvcl/agdXJvtsSaJrhxmD3eDysIYbg9/CqERwjFyT3sdv35eAefX4lQENB7DCB8es5o7B5MoO4LblwMpRu0r0VLNKV7pGuzfNx3HlcQN1rsBzRG+hcGxOAzDK0HkEGC+G5WEtKPlKz8p66XLzbRyOE7uTHe9YaQt2EPAHwM32tfBbAfxPNmwJws7QNTZJLt2GWykqbq3hwStfichDoEYyw9revhsDEVsYjiVn0QZ2++dsScnkgkpEgKZIbsfPn6iAVGKQwGImAY8CWV8DmJRDVtvljw3NmlZC2TdVwFEIUXlTTlnV1KvyeZyS3rlrZR0mGA6wk1HgvJ9BhGfDi9DE7hbZ49po/8UtDJ+o/wT22YSQaPcoRcf0Hzs7T5MOZHk1E+h1i+c/0KON+9l0NP7nlSJz/ehj22X8alNngCMX5KZpho6/pc0JfH8pFI3Z4c2I6SW3soiZHZwL8OmTs4EH7hCD/8LyOY9QZR4zeoYtnzeo5qwneEjQ+r/nflTCuS+4nfdvKdkAc0vryXZOMf6Db3wLs+XxmLZ55mpTV7fWM83zm9r7Ckx4tI5AAb+QWnZLjhHoQvb778efzs9vfjTnNWxp1M2003W8GzGowQ4OYZAXBF+KZ2vbM7dq7kR3c+sNlekQmnO5rNDM5d4SqqW7Ej9daFjCU0vlPju2HdaW0U9IsU93qhYFA2Bwl799H7qWGHtc+74ze5aMahHwYSkU0cLjnUZZc8OQbZpcO7FvXq8d9B+4JjX9Y359z8Mrrx6PQvzyck4tuLu/zscYjTjddD4j8tBhDWaOLArgiAnFkCTHO7/B3xq6WQA3i3bBtsiURa25n/ZX5ELpYaBLS1rgtgjeD6E+cm+Gvxs4cXvXXp4MD4gutMM/bg+Wl05LebIsohf504/sFuw8uhaBJ+mdJ9LwMtTwGAGqP969ej///74xuLCDX5Fc7MR4cqH78KK9RK7cfpH9peBw9MyNsg/eeBfaXHApr8c7n3OIxbt7h/aPhybRwgYn8O9ByHCct289HC/DRytA+LyMwndfDNjCz/vefwngURfx4tuf3nT3oV4m93Gznqpc9mP97247Ed1/lpUPxti7O2086fStuSgMm/5v5l88DHbOUfHPR+tZ26cEjRh0R615ppgZ4o52fLYv8lE7nTmMWbFLowQO+/PndfTOdN+Xuke9JbTP5OCrHG/Tur8Zspenk5qp64QMeTJbCLl9dgMPyqseUFR5kb+BckjEfCdNSf9R5GDhsqLWn4ifFb+r/Qa4fGs4g5SiXOTJhXanoROMrwaO/ZP/Tz4O2T60v2rU+5vBD7f1e/P5oAcLudDte1Gdx4QrLcmWRg+4bKh+zBYZT/3ujftPiJrZbKQ60dDfwlaTu5PsRvmI65RhqfMMtrit8GQwHgTvcajXS/iqMZ46jt5cXwtr0fWoq2RqPTb6H2eJCZF4v1GqNT4/K7qAE7zbV4jYfOohk/x2NGur4z2fRaXin8nouE/bAf/Jl4exCfdb9GcgNkyHIDDGAdX/bJw1IcJimbUxROSzJi/ViNtm3NxhCz9df3X/zZiLrf0QkZ/7XnwmRTrUW9rzUmy0vCLyC19QQaL1Aq+XStouMVPs0mJV2xWgufuwOhWvzvYg+l5XmSo1UlwExpNiHbUkGChfsyYEaeF2qnnpZYC29V8lqYm4ZDyJ+0UiJmqIMb7tC1rS8paM1AED1Kqp0uE6uh2udltFC/ErzG1rIxawVOtK0YkxhKcmPJCy5y0vXXcnq/908xPrX+RUohgPKarVpDYXZm1w5T36JV1810xTr46kAn6TfgeIdsQ/7rvhlCPsqN61+TlSK/DUV4Y501S81YLBSLn23/iMZnDHJje6VyMLNU+3wSLeISRWpa8VrNlUZgdULojDiqDF3W9znXql8xViM3AGezNkDTA4DrMEe76y9+c/eiVk9ctx544foSYhKoqPMK5R0rflfOu+8UUQvhezlS7exPSBxvPWaHV7vzmCOXjueqQjLMvWHfhyJlWXQcEQudD7kNKC5aMYNYY4Xc/W4eVHToLa5VU70DsKX09/4tui//U7SAz5dwddHKNseTBkpyr7IDcHY4I2ulNIdxhYzxTcZRYrSccUOzZeI803ovaPgqblgIqLcg0+y6lyhWl39bRDyafIFRNswCFwbTRne1fu4bIVyN1qrzLRXY6d2D9V473xvfYrq/vfiFTrlntdi7XhPynu/qoMHn46SQkuM5cPeSJk4LslJvd5pMeW8AJa1iOcCbIHdpVe1Uw7zIImBVI7bA7VjwPPaKVkEbeeDarYPdeXBQ3J38AdjI3HOUewAYvrE7IondlGyj18eNdhfw2Mkqy7jwZjsuXj9YslR8ErWbS1sDZoHsZ1ure6O+KPFPZC45IPX5vJTL24qLoUeExh10ZKOIDsrMUXZW0773Cx5ht8UTlw4VEhkArfSf2ER3vVZ9uHJne6l7w9D3U1H7uocBam3/elecEI/JGz2yzyRYBGpxtuRxPNqIZFJ4Xdrio+wVvB2F4S04zoCtAQDy/u2a3Gv4TT4vrxTRQpmjxqG30ozXHJr2HAhZz4wbrafy6PEq0/Xpute+HTctr4gWyhw1Dr21Zrwp0LTnAAEe4ixPXimigzJzFKxYbWP7aXmKUbuSX3MRIr42ZkjyNtxdqTrMCzOCHQaJWgMdBJC1GB5XRcBiLrRKN99O43On2mmjtZ6aRKmelAGA0RxGgyht4cvu8tLop7qSlQHABAOVRGyIJXEiNrdvF53fJQiTNXtLfMIgyOKtx0eNg4uPEuH/Y049SdFCkHKtt7MkpxWAb6CkEp81mQYMlHqgWkGKSQ9q584Qz6gVuWWSoV5z7ipxu9vHZqoN9vDgE2Hya73WZZVPQursjYKe3j/NyXNJdpbU/f5OQi2Uhj2An/yEXJ1YDQXJ88k60jYiUjs9TmwrDfXW2Ki8UX5nRqOSdo+qg1HBESZrxrGZXW2BCFQSIM+r386jB+EOglGbq2oiAAAAEZlGV3TcRqy4kaRaEsy2fOKl258kmyKY2umhmWw9sbskblwc0YjFoB9ZW9tpeIo70nht2qszai/ozq5y3KilXkv7NfONOYkTTXM+2QztT2+K641EhsgQJ/ac8K76h/BU1G9Gbrn63Y+XH+LZtdC9KJlv/qM2inJiuh9ruY3mxOI1BMnLaVcDkMWsO0Gtd4XY00LcYKjxNkYxSG0FDFC+Fll9zc7SpFVwiZhBwhuDxI7MpP8U6ynqELWWyadjgR+Ipog0yESlVe97lIzWXI4c0GEj3jJ53Cb406QawEWS2QqAuK9FMloLUc1/2Oi4TB7HAl+JRs4G9kJCKLsUIarFDyoN6ChMRNaNTGyodfhqK8UVrGanK7IcHYtqr+a1E6m3Irek6iClLglAjqpYH8BEDy2lfbBsV36ZPG4TXN/YEyHUEKuqjGVSs1jaiL0sEx2LXZkIb4oMahlGayhGs9H/EOdbLhCZiY/FrkzE2WSlRyUCqjiqhlqIavHjKFXW4gMA1oIOZJF5ZIVnahAbSVMH+2YHO6IF9Kgsbpk8jgV+IJpJaBUJstWGjfetg5PrfgAhGkXctCI707HAV6KxBa4KEch2U/PBwFJ2x9m0FENy0ox34lismIi9adZEQOWckl/MWGc2IKYZT1KDoKWpB3ByMNKW4mQkOlE8Ly5taP+djgMJaotjYzdqb4EfHYxkxGqSAQ9qAYCLTSetP+VFQVZPeFvLcJHoNcp8W0SnpvtWK0y+U/4cYVEpmujym8T2z6TX7WbTzXh5QdwVaoeXyp7cNwJ7QoeTxPMdtKHT2Q32EAeqEYmhRfT2vNTeqKYMTQ3K0oGezXbbWXmQwFkknuolSpSgwbPeYo+G3m4GjG1DNmJlhjjhDeEVoZzzWOI8fAb7CP3/DxPnxSMEEI8NwF6Af+kJHiyBcHHOHYjUrMvH5ud6retrOPlKdg0CFe2fW131vHoYIOD49Upbzl+LXN3R5YKFi6pq/2CpGGcIz5buh5lTM6tGf5QVyBKnvVCnu/VgkfJ3Ovo5atZ/+/BExM1SeAVk1OBejgWZm9Q/SzEt3Jbvl6i3IC8zIW9wuxovCZfqEK1bofAKyCgtvFIvZgHJj/bNAONT4aQf3T2jY6uQ3yJvffAEtauF3Pod8ibcfG8t/BbecAPvaILgAVa7vp0qZ08VQWAASo7RJ9knUt1c01sAdVAusSRlHzXINNALb8QkOaaff+UBmhHgN2MBNDH86dUTzUIQOKAuxkA3VKeVHV0sh9heIbu3MAnfJL+gdtnVCnIwWKlAioZeS8POYPpo5gm9dPbw7t6G3MmKLYiLUGYOX3fiyJkCIK1vr+5IOo1pk4gm+oHByvdYsr1lVBtZ1xP6jnjXD+Y0rugywEEOl0aj5p/cdOivLrYn6zvt4yxWhnwjdTcYLm6moE23czAMG747K/UN9TAi5HG16bQy/e7VkOUmA5xUgXQzC/lYzIapmorZXcAs0ok4KnOjG+C8xsRi1pbUdS8W6JGOZ3UKoF9hbz/1xBsaizvd39mmrScgdIfMOEgbCCqrz6Bcq2Gfd3It30bi8Rfk7vP1TOPBQlr+5KZ+Ik/w65wqqSfiBJxqRLf/16STcSgnw+WT8LxIZYOXAM/7l9ztkU68AdMavdsipBXei1tjKjtFOVgonjYsHk8YPEWoVtKrHS0qusGTmz1L/AoSmfMdTt4TgH46tHl8CeuIBnwyu/YMPsQyU3ki8+qz5z7NUHDWdGdvRq9PIXnbIrDaFa8/XPHW+AjfsTCe4OlaF7X8c6sZj05i/z+/lMTqQbGbTg7m1oqz7aek7Hd6u4FxREJvGPEs2Fk3VdOw8skR6J04eSeXMimroFPxKXV3tN6ci61ppYapnFFVZ+nf7oW3VzalNU/6mRQAYEVZDqAU0R6h2ZkBWelK7iQn3XaB8dTOWWAq7NJLK6UzC0I8UfATknfq1Qy2bYpsQTVwMD3z7ORGFokSxxAqzaqDpS/JFFitciZFvAG7M/S0Ijf5lNw1AJQ9ycdzOtnX7ODTTbPjlHoUkgPegIhfI3aNRx9Buh0l7lGKRF/n6uJu2ZzRvbeHwhPBcLp1DQpMoUIkYgT4Y16G8cTEiiCmFkMvU9XfT+19WxS/OAsLRXeLgs+rHTaqyych5XDdO2JH6eR5cmhWPX8bDZ3q8duqrKO5tOqezO2q4RiXpzdp9yStejJPRGJFHVbr87T2D9zhwiV7MswbtvtdT7DhhwLHnnssyAW1Prp7SkBmMbj1eBqqxx9vZVOaS6vu8Rz/p7wz9qY3vSQmPQ3J4Cp7p9LF1W55ep8gnPbjiJyMvcveBiGOL80a8bnasI+9ivneys09Gy8/vNtHHjqctII5/BYY+ji68HUya2yuRGe4lq1Is295zjwJbDaz4CefzkTRQMb0XxSQAxM964OdlHs5oLSzN3Q1QXTnfO8IbY/2f72lHkGzNaFOa1Io5qi3rM0wiblQtOwMVcbODQFzodMseQH7g/uB8J0jq2dZjPdxLuLCXKdGz70BVAFotAFAee8S8HHUfzHXjDFrFe53IUnTbp5IP+TmbwK5xCOZtTJ0uGnVat/J1wnuDI/s28Wj1TTOGG5Ma5fNjHTZ7d6QhLFsh6mdfywvuTRngFLgnZnQtKrOfd35v39NGmE7H1sDoAUji8n5r6UfZh1yNIpROGMcZRxpgHfh6BtZ10jqLPjfmgqTgbNws8GZlDbh7a+zAu4+BefZG/731qdNQk5K15PsGnWrRslRGatboTz3LHmjkWZ5xYxbGatb2l3qN3bUY/j+Oo2X17K9nk77yHF6LuYpV6V8T2hXrpnViKRB1+s7AdnUtvp9F2GlDJ5hEQ1IADFACoL/3ibc+rSjjZxpJZZdNEzZVW1v6Nks9ZO7nnVoJXS+fjUzefPHu1p55WqulUWtX92gDM5crHial8kUymqfRyRXbBQbq1ALwwvgDZphpau0QOlXqd2y3VuZQ7kXl381kGN5+95lssKXGfMVLymdQ3jmn8/uTpmxYt7asmonwz36abZWz7SwCGmiq3r5VaR7Kzl+zWqHcyaJQVOwlGHnqpb7yfPKtfRClQPQHp9mXi20KUmDlFNRIADDrKAWAIAEuDwrO28ALpO0uj+24CpfytYWS16sbpu8bfjWjNlj99UnFj/ZTw2VdALgKUiEq1Vftc6nmd6CBHwoGrIekBedc69ZWwtLLZsvIiUDFn0t2zBNf/+SO/QesBvI+7I89Rdyn/W4Tk6w1XteC0l6rtAKdhd5eHm+cT064uqSi7n6hPok71MZLUfjDafiVnPa/7U8o8nPfv3pyqdaPlrRgNfwM7CeivSc5wPBDnVEuzNTy8FOhYRgjQ/iuVOiiEeorVNRxm5L7wPYvC9/F4j8oN6Rsdruyl9q+FCprf17DUoWrXdfRFw4/Foq7pa4xVoga2M5FydN7c1Tn9PGhh+Nb3xFMy6SBneuauoC7vitxWmdTZF8C5+OW5w1Yw1KsghyVgCAtQQrgJ1z+8+Zz3D3ogU35F5+SdFld89Dqg0dPBNqgQB5FIJgq6Ygv5CHDtxm7Sw1H4EAc56mU1O5/LEg8jmHQ5i5jUx2xiJ7uUx0Ii8R349qtFvpxXvN5XoKeIXzBkt+X27OIwjkFeQtBGpRWrLkeEIBqWdR6G00+LrKLjogyvXe9eWtlLVcndVvhSfMzoWZmCvmQg5YgfN0xBWnSmO3s8GCjpa5UZH4s36F7NjrNrSPsFzpKickhYKo2Ul+1Ny0NyPVpmhHZNmrrnbZw5ZEaJR+08XWruy1wYo5QSGGV+Z/blkz3rvLi1IeauT7/aKtFB/n6LcrbU80f2zmSa+BpRT6f+lyluJa7cLrlepNTvTZE+Dg3SwydOmgEe9X4Nc9FiEjBSszeea5qkW/ouemeqR5Re9XpVEK5Ear83dPFdKDqlmNZsRn6EeYZ1FFDU1D1WjawaqQ33GAv0n+VPvx43rMDn1HjufDB0OVB/jLSCSFmRsldbe/5YMfEec08uh3+t5Vf1kHb6Pyu89aIOLGjMd7Cdd+21/ciRt6M9jwkq2uz+f2+shPcluli7nTTqp+Kzx1A2imD/w2p4GS/FMk8sTWYF5mmdXkcWffP7/JuU3FPs62ta3rAVwamvPBxk1HadUTo1zXyjpUprbdWmfeitkz1joq/5NtsWONMjiZXJw5rdpcLuKLePcB68fRxj5Nn1sB4CzTR9sN9bRkt3Lv4+loDWrY13cla61kr1QlaznuSufTZUtPNqytK/mOH+eNfV2HJ2e5cAN/Q25Ph3anC/otaGuwbtPceyOuf/Eq1/q562fNARHc/9UyAPSdaHYPBb5anx1PdUkHmqf1HMQcrGEIaOx7nSX9Be81TSZVR0wgzardre95Q93410XVUz2vB91bYc4pBf8qttkNz103t8UGPf3E+nXW9znlqtTZFoFraEB7PlLjO3ZoSMGutNZNsxr1zQliMv4f/+PO+rfiNyxirtELmWk6A1NaZLiG4X4SoDfVXje12XPpDxhzoRwjfRdxrLZtmWTXkDaqWQZNRq/28D/4KMQMN4BeyKX2RyU3tpxTOW2u1RKr0U9rqHK64JKAWs40lq3SDTglWGCsOseam3SpPjT2NViwGr4mVsxZ3lWB0NzJ8HQU0nK+VzP1/M9Hi5VKCa9ysQkyZsosIyE6YpZbLn7CVXAmp4R6hjh6wSYeKwFGhDx0qfifj9bXhEnJDTA3DF2ynVZDjqLiovMaMh9lqmJln0q2MTGavfsj0pFpcrp/0xv25+itt7B2sGx0xyLyJVSpRj3UJ00HhGr0LOODBZ5NoiVDJGPvX5q3gAzIbDAPpuHF1Jd8GBnwXj1jTfxYuqKg1WJxfpUYuThzlmeTZH29xfgmz12Xd8na9aNe9ylRcjFpckRZh/fP179tF80Jn6Vcg9nJYj2c2mRI+w8pilPdstrrJGURqD02TGiWDbajP2sdQ1J5VKT97utEU3u7zq35hjZatFzeuM5pVviQ4iMnjTQnn5dO0RNkuqRuZCdNdNJa0lo+3aVLXJZRWmytl4JsUqdNd7su3M0ZsZDJvGj0Zc6QIX1tHPWFpzT0UzMf+xUhmV2K1dPWu5mg7822o8+DR5zmQ3+3Tl4272Wn9ZyyC+nPrLJrCnaPjJzrqWnXyUyNSYsYcwGu4ipfHYyCnQbpHzRcD1JEdrhkNXQJ11OZXTmOI0o1jYJZGuwmoOZn8fl7lH+vSmpqUe3HBUkCluD2AnB7OYWSsv0CMNIfuvjyQ4lOsHLo0ElSpdXecFmhPSn8lVOsMK1PTu8WkWWpIAuhtWguX5hP+D0Tw8ZKthPI3olAPXY9FegkgGROi0+DhSc0jAboJSqp2au+FXCiAeBtBLVH1XTbUy8ugNHpVqoMVHquPW0ggbZETkMEnEJAiCeWOfzJypL2WZjoJIGbHRDkrNa84oqrqz1pUH35aVb1XY25XlTtiyrZUy+IpBA6a2QglyPpQBbIHTc4FXAuEZRBZVAZ3Am0EN3SNAT146arevkJcxYjyAsjJsgLu0zLYa3vkKTJDBjb0lpA7h0J6Wce/j0H5lvM/JsZ0oKs3AEljaAsTRQ6fWlEYjy11+gwryKLn3w7m8GwBgmEtVpBxaCcwP5WZlyxEmzxi6Bu5nMrssVQuphgyK3FzvkT3aQne8OTde/rGUekM93K+nIrsxq0GuxrUOcEpQbVSvFK+5K/XXvr4iYDueZJM62DmKC8rzQohNUPr4aQHfr8qbTytBBEV3DVcOuZe+baysxSkAriNA56KawKa7JXzm9mMpLcSg4loCRSqHThXEOZnb+RmAKRCro3aVdDb1GcWIrtoJtIeflqtOg2QqiGLJV2KwSpXEjiUkvSEIoVBCv8BHEAlXRvQS2GVFKjZCGhL17EJxMt++z0C7R7aF3K5AuRTuMQjXbBu2+ahORxElP2kyq6MEh8IaEdkLi19CYgBzwNsoMKXkMAADQUUlOuphwA0PSkdfdl7ByJxp+ahWT27Q9la24Ix8feimtTfZBugQB0V6FeZWVJ3KMUsTsk9Cn9x9vIf5GuFvohy+e/4a4W+iHfE/nv5VeFQixgDgTwF+faHeryKUeICh4MQE054j3LzRw6/GJYYpr5mpGcixRSaQUAKAZih79y9UcU+1B8/Tl7rylCLp71L8IHDL8WxmFCEoIh/w9gUHrcCBpumqSC+NfK4Z3981OcnbI/erEuZb10HLfzzlfR+PLtlCtcg3I/cw31Vsjpll9vcXjNNS9iHmlE9aHaH0yQURzidpkL6LbdxNQfObw55aLma86yd5f9DO7q2jM8l/me1jHHaPLY714IzV3+69tDpgXuDU3oRd0sHzXrxlFd1DWv8fNirfueaQCMqTpMMndP00qnQFfcGZoreWoDSjsqbvQpnbc/ib1ADS5ykjTG0u3r26YSJ95xtDkrebu1Q+dyXi8tbfLVv8s53GlMTcO7iPNama8YO64f/IzvaqWFkaNCNntDRWLBqPBVgg80D+4N2D0k3Na68X8NlwGQP25r+vprdS28Hd2pB9bexiMvrZSAyLSn22fPDPA3E1Tl9ccNUBUXKQPKuWIwmzWahokPPxUKeXHCapyS+FWWIYHnt3xGCbU3Xkp4OZFE3nyiidiV9cavlvPys3NVUJysw2LAnIiN2Yz9JPsvjDOmqCCSUrhEZ7CzkJNyY85+7rd9PCXQJ1TInqwHDSlqomqYyLrUeYo1Uxhl/ZinH4g09+s8+aDGsi96GqSXREm5UEaIAeSRLl2EhkbRgjHlthUmRal81u06MrM9+gaETL2z4H01uXyppP8EyNQUk0bJpZKb0ECiRauYNWwM8B/xW72JHaOLt3s/YMFhD1e3eHaNKx2uBjzDcWKiwu75t09+FOk8z0VR5vPtS/12KK3ENCu9NLiRRlsE4cVEUCFW1REQWiufhY2+iN9HyMCWczWGC31RO3x5i9k6XOdLX9gNaGd781Ri+XjF3rRyMm8VFDOpACkDnpL56m0MMmmUl50tDwO09qlWeOpTrJaKsF2+DMynhLhUvyOgXh0FXTR+7dJbsXv57VMxmHPt7xtQ5sTeuVS3iKenbW0h9VqXTDCe1ykNteg1OjiYQI2Z9iYDluoNXZ6XASjMrlCuz3IJnl2U6k1QRItXNfDGgMXD0iHVf8W2f2Uv1Q/1s+XEKdocJtuNpEeDYbK9sE0LR6hGkbSOf5NkNqu59MGhUvnE9G4pY19992Dafmcov/wrwcImLWfO3npis9jKVXen02z87B9F9oeX/WN83CvGN3TcPVHhov7Ke6qB2N1ChuqJfTd732sww5I1QDWfSrebs5EDzRDCAZ4D2Zp9JcNdDij/iBJbdma2MTMzx2vcxZcN3yIUFCbChwI/BGBFxCLKjqt/Uy8mPa9z2nzYm6K42QXuXS7fBnEXIkrwW1fmCvdND4VEoboKpX+r3UcejrlKo/iQw4d4H+QLyLJYLi/LOEPKY5sAiz5dDQ89VYYSAokRQkc62lYithSt2bGzuo77mL6enaHZAvDzSSt5+vH/KIPi/rNLZfS/Vu+nxUnJajxhURIjO67RRUslJMj4NvclvsbMf0Oxy+qNuerMW/++CUjZaeeqC6piPVZ/HOF9AMmc/pzBpM2DmbJNP7F5Hu5yGKrDe2QENcc9K2LRbATgn4zA25vzA6bj0x9xIBOAMIGIsz2TAwJQH2rIVyGTbrin8sw+DG7MTbF3Y20fAV6BXWQUyGwGDHBzcGOPYXY4LyL30GRHUVZHvNF30s4+arDUuoGEF4mkRCuxhqLISXpV7oWN+Ks2u6QFANP64d7ow5d3aznmR0HCpQW4WDjFYQ6RBa74sDicpYOixcUqfGF0G9F9PTjrwV4vuLG+sG40Uq+cixAiH00iGkUxJXDrlWUxukof6DVnLpwSy89ZO9+II39R+EQIV0UsOtKYJs6J0KbUHNaldAE7S/PcpBSfoH9QOGXN8Z/MK5+Gt2cahaPtqdx/eazuiXASIVGUgagRk0uoJTJ84aHDdhYempWjOdcGRgjOjSi3qkAK9pjJ0fhRaPSt3AaJ/7L6KIrAA+B9OlcRc2MLtTNFWBfqPnaotv82+CJUTasQHT4/XuycQiGcOXr/Q2395e10/oaVLCQeWegd4ZY5gnyOLWwonoLlrVceb2eHQ/l0DEFYOVoFnuyCD6EZTVq02MvJh5ddpmhxY0szR9zNJ2aL8A5gXawbude/AXmoEHjcwPsMVjskmcefp+YGBRrtZwqXGiPX3ag7CfadDF2hTikyP2pu4oAV7krqAUIa7LkQAOyuCcXA7k8QKAUWuv61ngEH2xxUgjk6HDoxhJIyGwhWKZnsHAs8JlhDGe0wc4oSrshNAMhiaMakegAghN5JMsTfUIQQGCaEkMnt0C0nexZS17UONl8+Sfr96daNlzdYWzPDAxOfTYm7yzmaU87L3hQnPQd/soG2vMazr+DqgmcmjIhKQziPrIaBkXGhbqrfzj3BE7us7O4ZPfOIFJ3O8wsoMhcz7V3IxPzwxRYtTi50meZ8EB58cH17V1w3mWvV7vpkd6meY2EQhyT+zCQ+BeSkBzZ+mFvUe/H9Gj0jGcwBvvSV/QqeFlDewC5RKtaobeIoM08yfB6BnptRi49g79C+Is4g1Dq2mqYQqJhxbdLOlXGLUuyqMnKEttEJijxyRlOSKBvH/CmOpwE88Sl98C6Uz0cwX5illGQeEtS5ACFFTk4SJdp6P0lIXMK24I9u/eBWmUKCvKjkhuC4S8mHPmDxJAPrssWuhl1VtnkBmxYCHiFVjRFcSYlPXbY3awnFHLZtDlu0cCfCPnfhzUsXRWQKAT9vmqFgRtGNpvta0C7xdAZ6JiFuabYLU50Czvuzb5Malgnp8p7VlTlm7trgnyVkMk20OwbPAJ6luFRBpdbScyrbpVBo2WiYuLAo7BHJthTU2raKgd5Su/zwfbfyg9PTWGoE6zu4Guapltgjxf98thPu8KlAY6pSTPETLN1DWCtVC6HaImWC6kxnKdZ4mQjoeKU5XmDmu+oC3wep4oBpeNI0yCeZMcdbDeIHGyd7w32NhJBc4brXVkEo2ksRSdxi4C2hLGIRgBZxD7rRzahpkR2GTPFWI6L82yglROGlDAQk8gUt9pz2wSIhkQzYKsoYgEUEaV3oIiVaqWslhaUWQlpK1jpKHufmF6L0Pse/MniGaVHbKBvujesq6G/3WJlpsqioKhcrGph6pFgCvRS0nYzoQJvTAl+DWL/MkIkb2Io4ocgkzCyBMizqWmXn0b2qJI/aS4GBh5gKqkDQ3kbKl04P0pTJ0oeN2E6d6WyUtRz3DkfE8XiNc+lhZmpLzdOO4RoiEJrw4Oz9hNLCnoSriGc0hIhammnK3U9mBD0HIm50lVCuKc3Npc+MrorGT2xWaA3Yy0AxJwAZ3HKt0bGe3JeQa4gTeD8SX6sWH0mlazb4MonhAoNbSyb0yHkkQ0QT59A/AQBbZMiHzwKZS0DnOpccFAlAq4dLqZaCFwhmQ2W+40AOGMCycOTiHbNWEZKfzCZsk0mqAaNONmAq0wqQ9OgDf7wjONIcSWSoBCsd6DRCO8Ma6qWZu4xwpcFKtm1z39OjlEDWq0Tn+qk3vx9BrqwIqWUhZpSOWckZLXo9AGF9+rmTTC7tcTC3CbALvKZSa+rCyTr1c51l05T+fDhAnpArKdN2rjhQGpYLpy2Ztu/wPRZPEzyP0DOOowai4rkbLe0h+T1hKqYKHbp9E2ndrxtX53B4v9RfP1d4dJiudDWqWs2j0joWng0rZJXXOB+hgDSYd0P1eKNkBJnaChYYB5rO4KxjdWoxAlXu8oHLFUVoHKxHPY7FhtreKLrRNBVqwrQNSj/aGmvvizjrENrOUBJ0S6mMsNqrcDrQpI9rQDssMcK1ypPnqEhZRx1HsSXYYiSRdBDRgMQ40TdNKy6uLJmbYj41ZqHhMw/ckWLDthgbFNNalpTD2RlC8XTus8Ed46MNLdxHsBqNVBQPW0sxrlTKsp71/CWeGvOQw7MI4sB6r4RjkjK7RZAe/2KSjhyjS8ckiqTRjT7vw9PB9R+0Uj5tvhUQmqjdEopz+qMtPPscV8+4PONqh3vrt7yTo+nYjQ5y4ifztknmHSvUV7IWX5+OANzqw/5wNLoJIor2hcTxaotRo+hG06XGTuHmKnsGlabdRgK5xNAIeKjUedyQx9rkxCOySl4/k/ieHM2d4YhefMLkACbxgLytzuGDzoBzrZpKBxJC+fb/XgyBkvStE534pKUCeNbUvES5ilTRqmn5lzr4SZswDgPwH8x4fTEWLRDEHwtrW/LZmEyjsxFRLckM5dQq1yvQxrWao/bY+DaSArC61GV7yzzH9n26EBQtB4SkQ8ALyEcWl1mQMPuAF3HX+lE77ZCW5mE2N1tnZZmOe1vjOYaXJeQalKSU+GxpMQdYl1BKdMRAYMTE1hVsljPUQYLxgWmmJhuzCE+aBtXJt8u/5kizMcgFIUVkhl8IGywXQS6b6axllh7FeGbG1RZXPZ50uKLxHEH/E3JyfpItztolrZqxA/8oHXNdPtk1KseWeg9N71BWkieJQ8vYxX6w6CzqSS5y2Ttjg+501+5KiEHedy3ZuMNjz4noDgsKKlZYljhDaJNxJnMttwbuskqMNY3zTERSqdhVE78N1EwnB2Y1x43VU6ysqAYoldkQ7k0NwKuiqhR9EGGWLjC2Vq3ssl4JC49sPFtwxeOyw2WFKxLPEDyHyOgpc1Qjq6VSzxI36LLbKCmi34dKWtnBexqWuFnFlLmG40C1EocPg41hSlNVxDqHIyeBpYqK7RLShzd18pTXXAwhgmCdNy00b4lgCpHTYCmnigjH1GWb5Pm1RnP4reS/8zXnCt4qhDNxuPewA7T8t52LUlyFIO3O5MKQ8lcFLiNw+LrQly9Px7qAo4D/D36ox09wYjje4X/mEY4tC1BpFRXKAWHBJbIiPoyiMe91hhp42uVKFC8UOFsyTbnd8rMElBQWGhhs/97eKGHWmzHNeZdQ8S5OGIgP0epA+KaNrlG3zLdJ5gW0AwREOd2ArGBNfOddQcm7OOEIH9JE5qkqLjeKX20bJe9QxDO2CVRQZzpUshlA4IbeEUom4n3oJnl3z1ACWXeet35NQfcRyM0nkvgdrt6YGWLRm1nP/xbGZQ2h7xa7H1vP474WAxZ00PHSzbXZiZHtCqfGliNOjzmj10OyzfG2RMVA8ysQC665rgxc0YT/oDDCAXO+LeK4SCkpdQEt04KTBV+B7X0ZtMCii6Xsd9ozUJQHulHos1EKj41dE6LAWDZEEu6qF73kSi8eOoJAUrEqhPVjNSmKEsxfCqwwdxZ5928jrLv7HNnSdIfHpHRxnfKQqrgLzMpchyX/Jwr05w0toBzueO4kv9NcvqEVgVSQmd0Is486EYrxsjo4EDEojbeFrHS8xCIpOusdpBrKhZxv40lcB9buuI6BPuqjP3bKw0c91EeRjEfKgzxTUotBVvrD0xIC3J97Vyc7QjLspslgnS7LcfQvVCBLkjLNJenC9dUEA0l2GobtNJxWNh6I8rImjUMY1UdRS7zO+ZLVrT6JIjcIJHQ3YZoAIjGoorwN/i1i0wzRPAdAIm4670hXQEooZqgTQQOGJypCWrrSldYnaZJ6ATl4TL8siAf3cm6kh0ESeUhKuhSVVStmMm3J8HTAchVJZeCDN6gIdW9o9xXdkUG81PmyMorhuGG+aDzUcAYKR/DgIZLSNoZ6q2xyN32n7/xdl5im9FAfzan7lVdHg/f5lABsVmRLSYOMte9gjG82FqowrIs+hoQgFVWhpnWoOG5mFJCRXpPQccnOua3rszpV1YcFJOPtbcm/U0HorPrbNDD0bz+V2j3Q+20mve+D1FcJYWHewpErHthLvqYHRNCz7O9o2gkRdZWOy5/FPviffavcZu+2rw3i7SbNe43fa2QZ2NMA4KHHxQPbT/vjPwzgpYqnrHS+8/MG1xAGoigUn/CR1jTVFHMseBE7AbHWCPk7ckUu3EvS1AJZS2d128VIz1nYXe67JcG9y85hBgo7zj3Tym/QRxPdQ3soSEliBpP4XgRn4GObVeD4ew7fwQy/Ln1wx58iHbSiait/fCYFGsaLMuZtV9clto0YQwQeUwuCYRzi7Ta+k5717OW+4GZ54MZ62HBF//F7E7NF04XHbvTR0MmCfPBYsmI3nMTBQB4k25hHof+tNKQDGDyloNGiRZbcuLNB8jlKX2PmYres6d2U7Nsnvwk5+MJ7GxtDptBu+RGUaid8pns7fZuoydKzDagRTg4Ktx6t9ds63dzY8EfOyjzcEKeJvsecWN6NXsMA7O5GD3zh2USwebhCl93O2U+0acIZ/7PmwZXwTSNvjzft6idjpswjB6BIYl07IQSytVXrPckPpAgbOBY1maOYvhlYFYJhL2+/hyf7mHYxqPEcYMPPZIm93L7NmccExcpnbsTyk344bjmFWzhHjrS7V99fSvajg7V9+xqC5vGds8XJ1LUFeADGpmplqtgQYgjtKkYGxVpmAYU5ynO6hTazxqSM40SLTjoAPdfHzOG4OrLmDPTMEsGYDg6DofVMILIh+eaGuAVmcoBL1wnYfzfe4ogFNR0vvRE55MFehNP0IWKurupRW58wRpk1/dZextq2ThEZg74w7+INK1UW5LRDhl32FOIqg3YtFeXBZdUt2oyyUgUo/qoC2XpxF+tSUlCnFQTXsvSg7gz3GWDclFKk9QZVk9ND1QsMYYHF3ucddJmnnO/wnFFg0hdc+3kDtMxwmlYHx3zMiFIOC9lmbdQpfS3xrVTAXaFQrwWu/zGt694lZQknBRuX7bdqyJCKt18Ska7KYlCJtYuVWKHoCf+EIIPqqmZveDLgGddj8By9BZG1L8mQxKz7SDdrqI6OpyXHvdZsPyb9xFYS/9fBQTUUkCOpwJ3BdhrLaBvIrPNLIU0z7rMFKtOM19ZpIFYTUujCAKQJGTPiLNMEWlsfB7tM+7JNeTwl85zU+wkviT1gxi8xwBnn116CRhoGKUEjWZ+C7oRSU5OTzZq2M9Gu9mYbhzEipwh0BLELuiUDy5C2FDqCQGXZUuaPTKtdczxsHTnVseI775TTfKvrvCKXXgrWjYVPVVGDeKSdq5+2vP40qCxXMHXtCi4qPpzU1lhnqEfJQJ419E3Z9x6dMUzL0YhOGFjPYBKHAfjOD/UpUXO9eOWsYeBTNUiF+hFnbr3H5uLTvDIKgAZROvqhLh2wYh30sYRLCtVEJL/DBGIJUT3sFPQF9odvA5ZNqXtmx1ZTazo+pvK4tkH+GqjXTFHKcHc9/oNlOZl046Ymeqm8RZ/YgrywhRy4SGetEeVFSgZ8BbKtLbixt/Xc1iLYa+GZNS7Xd/c52cEu70X1MMWVQv6RbpK6fdbuWmEu+P+k6zGHE1xcQmzC2ryVN5VVu1yz07d6zU71Hm9PCQUcjhrNlsAnE3yBr9scNmhZQWV5uynzuHaVPWD+83UvSsoghJNbir8fsreubDfOMrCr1GBJ9Ky1/Eaf2a43npPs28UqTDEJWUsFnbAG8gHppJdW67nESYlNkPytEbbHRRRcSAyhFzERchoO5vnvAyNHCVM4eirMn7gGgdUmUlNKlvUB0WfUCGHoC3ZKsLfP4HsrFBZTDHh+MUUA91rKlDUL890GcpeRNidGjmuWF3iFkptP4+R6XRQQ2YwhDjQsyv4nl9afYDW+EU8cA6ur/boajhxM1bC/ua8PWN5em3jGyuipTOMkXl9SQ39gBSXTFpxQJVIMq5zt4egaeDfN1cOJiEpJkCWj1E7nCHqARZlpTzI57BtSxSb//LBRxUXSY341b0Kk9jabh2CY7BvcO13tAFsUL9aF9i2yyXQ7C1K6N2/QapVbVb8325S0ZKkoUfNdudCvpgdHKXsK9sl5svCUYHCvRUkEvLVC0IhSRbcimK3AHn1zizVu7uKSrxjd/N8qCqq2u79fdf+XOoUVrRuk7q6XTYBKWAhLU7zTd3DvuExl6Ts3CCf3pE+ZlKaB/WmbkIQYNjI6ySue/NJPBBCbxv4pgCo+VMx3TtUMnTZxyxJyWiB4CrMi4Gm3uYPRjrC6Kzd1XC2ocuFIRX2XHjlG+kcQXDf4uI4EepzIo/rFnUM22yOFBu/hSTQfJ+253EC5uIhSGd9u4ckFn49Ea/zzj7hyMe8KqcrbOWru5UAy5Dv7ukvt90OeMXk1F5rHoGvP8bOr3RoNBsmN6QFw66vOuqddI+O5YvERsnAwD3aSU9e6O2aanbeGVnrVU2W0fs2q50dHeEr8BfKeBQZ1AVGM4bco3FaDCtwuorJkLrja1pX5oncGpWi6qSLC4ANHBQkAiJ+Ubv0Orc2V2nbmoV2KlevFdxR1lCKTqX5WGlCacDoWb6tZ+fB22JfoZzz2n7ApaAG4g2nsrtEiQgo9n6iE5EwnVyPTsLv1Ds183JS7tuDxCEi7kzpuI5YAQu36cjilZUW8vs8LajV3n47uRtGNpgf71tqrt04rDUOFmbnHKZmgmgXGuu4owDJroXB2X4uh99PdcfDOcBT2O+8kV5J3NvKQNBokdPl73U/TteG7Vq80snenlfozYq1pNKzPmmqH4yK0H6D+kDUA6FYasSCOLipPFrchvEVtczWZsnxvHK6v4eRJd+kL9++7xs/R4ueu/jTd+PTHouPobMZez+q+J60s9RdE+AXzWcHg0o8qKfYOLRd29lv/Sv/qEGvu1LBrQfbsR1TYtZpU7vvTJ66hJXJFs9R9L9P9kibw2McQTjWdjx4D3zZXmdfDY3bqPuVWNsxmpWan+Nt/5wQeu3MOIYNxLYkpKNX1DPjULnmm8tbTFJTAvs16M0M05RfqSQifuaFuUXcrHUJHsaAFbWqktSyZBRpKLx4jYRogsURHklFDA7JjmSbRsZtbECYjbZI0yNSmO7wCDsBAc6GGzeUCA4LWS/PiBoQlA5W9gWF9OGZjjmDll1rqKWWBkYDA0DMxU9ZnIlYBxDAIwVOVdCM96CEVWmzUp/xY16O1soJx2jZSAdNW64JuL8WqtpJy10Kw4xpko4fZDqXKtY/aHAanS+iqfSdpcZJdvjS5n3Ip72s8FfC0x9AkrXuG5rCXKFNmE296O2mFkGhDDOFwA+cwFJ0DQEE/6NLY+qDFbbrQS/5hvRt+Tp/0yZlAaLrVy+dtdEQw5HGtzo9LgGLLQjlSbNwWIV24Bxh0SIfxPRjZdISKhX4TZc6bVCvHAIevtVrd/S6e2uPpBU8PyKGdyLx5LZ5hTZ2xi9C59aW/b3DNqHhwLnHCYW7Rg7fAcS212XaAWobedycDM/nWldYFL0AXd+VZBsV/+k5kEalhbw8tbtDEWN6QdJ7hjqtLHCTZJzO+HRzcuDtDr/BV55jE5An2XGDH6xU0LKRrcSA+1oFK3bcctXQdZMkJjbJu4VhgAs4mSTVxG7jM4Kp1OuI1/4S40TQmYGc/5gw67qc2XJ2VMc8bKwg59BwtbF9QFMCCyxhW7qjUXB+FOYMLSUhUDkgFSmWiYrOdjIkz0FWcbdupkFRUXTP79Xc+xlV6mlYpyaD/NdfkAZnc9v2dsxmDovBdMUsqwosUPhEYjjBXtPjmzDysguZwCFYvtqwJyX1YPRY/jF+0D5JNKEua0umIpS+LElwSwT3aXQlSTOxsYw7qDtodaFUAMZKzhf3OnIdKeRFr5U6IpcFhGTGeaRnA5qjjdwjgnB6p8VHMoFgw6A52iGPsLmnykIXw4luyBfDCnlQQADpiMWGyFZToFvpCYMnOzkzRn7Fr3cY0dg1YpRTqLgHwJN37ErWSss3SE4LBQnsz3CmZzBL+YnR620btDhYIHzlpjKqSO2rAHqmBocdtID0hYm3+5m3t2aqlVsvPAO31RFOtA3S4wWeELbdlUxvln+5PFaHJ+I2Vgf8VICwYrnnjyux9Zfxm3JsDhkat1GDJS94NttxznqT42Z+vV/UtTVXjfpZ+Y4hBlsU1pR5OXoZv9XKmT3Kkq0JUK80l5wOdKrG43w9IrD4OjQ0/6EmSMdY95PSQ2GKNHhvGqW5808TkD1bM0pEoS7kvd46YxLP+yxBInRQZSrV5azbZY6vY49HPsGuLyuwkKFYxMD9r7oX47oJnJJ7emmfglH5gtfMlXH90P/I07ORPEd5WT5unlHy4wuPB5f6UmQawrgf7mWlSbAzTTQeMH71I+VokXMlYerGX9Mc7Hohz8UXBhUB9JmGdLruKVG0otDSp6NN8ZrKYSKZM4p5UZIYwAYdqQy6u/PjpFZ5aAHuWU3marbNWqEQBGbUZAErKdarTQdoRe4eNBUkYHfEk8dcruj/R6dim6PCmww8dT/OfDYx0YD5WAjJvnLgxFiXhxydO/bHOjQ3ds0wr/ewLjNWc7INuJF8/hOJDmuC1P7nhe9t4aRyYxN1dD8/7QN14SUE9seBYZejhMGRg1lZa29lGSQjSnoKv4mtw8/q7W0EHcO1VUEaPGcxOiAb1Na+2RKRi+c8gkAClETCJ7F3OEQADFAW7dWeBsxnNybThM+vQbukwUY9RxFuTZE0BP1Y7ShSCRZxRlZW+xIJ3Bg5zeJ5bljawEc+6XutcN6PvLMxGTjrv2CkztHcH9N+SNrjKMgPebShhpDmzQ8sy2Tq4q/QyT7jZ/ocx/0NnWnDR6mhimPaKf9VTQ227fWonTHe0i4Xz9zBOpNfMiQ3Njav64oGAEGLS4PRRWSHl2r8iq93W1DRMNhWwgnDuiKKUE/ty1YwtVAvJhhSS5bgyBgbAfssj0b6JxW8FEdbQhH6w4g5/A98+Y0Om6y6T+a4mjMJvDdnX4rfkY7WraDabUk726L5RjEGf7P8qvaFvPlmrkqe1WWth4frbzZ8sm477UnTTZTXUCe9l5bEu2iZRAiSQqP/nBjEYq98gLaVYlBdJyoV0ZjOjD++akl5EzhZPXl3WrFcgBqBn+7SIDfBN024b2vShN0GiXAz3eQ6VMISaNk23kVvf6tv8trHJ6FYvzzdva2uBM7qU2siytE242PKsZijpX/QY4bEGL1/KskOGEkAJjuYgM2QhzmHrRUx2RDm4vpZkpbPGICTXcg1N0aIzrRcq291N4HC4oVRL6H6gv9fCy/sulXn20L+/utEffkbRjaa9LrNVUw/0tRDxe6sMuvu2fLXspOOJlROUEK+59usYUh4X/EAySKA6cDRFyv3h8iZ+i8B3on+sjNmciK9UKeCrxr76F76aCCJme9G/Nv9qCn+/u+H9PpVEo6XLDYJkNcxMWSMZKtLnn0b/u7tx7OeebYu/VRBZtNTqpArqtlO0+h/NNJ4rtb4VIJbkfph/0Img6sTN6QJMHgkA5BRDJCiARYcVGk72foIEk/S11ILauvXLiQrvXEhRMcXMg0wqAfR4Q68BZQJUscJn8p1G9+JfOcB1ivZ3KaSp+KJpMtBtJvxRlSerSTl6iC+E18ONwJIkXdp0nnEoz70bOdw7faZL02n7BmnGkQPAIKwlTX74ojaCSZ0w1UaADQ369M1E+7ZZ73t/SE4sGRPAO7vRw6rOmj4tmDo68SjuCLp6z5eUYphiG7PSx2SX0DtEJ/AueBvSt6gtI4/3iruBcmnGoyWqu+DUQpH8bDCd6Xt9P3ffo3cNV+CKyfD3dU8WYBIOiHGTpCGJzpuWPuV/w8RlT3gRSQ1rZ2XTNlzllAgeAzVIReE+h52WSv1PepSZ3mf7cv1074vILpENYOGFPmeOLxfr59ixLS4RWkWSejuxxBai5cDTuLVec801tao/gxVRaMA31AGal/X3sIVxhaGxm72a1A0XV4N0cluNYQxVlfSnTqEPWSkj1njjbokPdSblT13W3JQGL6U9bSxm/dYkpB3/brZeot783Tvht326OXY4n4vRjXi61BPo/GvfSL1v6HU7en3f8597+DX4EF8qF5qCMGp69P7T/ukmmwn3hj42XP9Fw2yenw3PVdxXnVKZbKdSBNBKjFzA3SSo2sxJe10Mk4wf5UAV40wLpAG+BF9whF7cWHPxeagVI2vZhPKc4yURZaLtDZmOnJKEmj32tEqjJtaOc9zhvd5WA+5sNkG6KdDbcCm3af/aAY8zoQ6gEsXuOee+NfO4g8LgLnFAvJSyu8YLB3KpCZqqXfkhjl3NRCh+mCYqPmv49QzfdmkYGbXqdOvcmP3Vea3Y/b4YX20e78dN7aP2zH6GPghOAXsMKIdgF+dQ+vnZoGDI8012clwe/bBl7TbJpiDT4fJu2XP5vuba1Dvxqw727v6OQkWP1+Vy1fhl/EP5v8LN3jh3/6ebvJpfmm0Ax5B+du1/PnDkU8A+3f3rAvOBC+8BbbaOdDGodjyCvo7f+tlldH5vLZH7wrS0w3ofS7jxma9x8F9+W94oF3bKnEqrEO206tg9Sd80sfOGwPjYzjBHTI4TH+Vuu8aDKag9FHiCf+vtwNOecDAIZSwtTnD8vIUFE/ug44/L/uBEvb/OWAyARkj6+9zHltBT9W/Zs+Y4Rpa04IZb68FbK4kkkkgiCR3a8FECjK4FCKjKs+7q6VSBrCFDID2wak6j8qonaDDN7ZCzgYAedpjBqPe2r1klneQoAGTRKjwR6JN69d2ZkgDXCmaA7XHgDrrC0YtKdu6gM17s7KH0G389Q580Xx0I6Yn/W/ZqN9sCZuw7T6dbsL6zUWIf2sCdi1TSwF0yWZM+EwPAfp5DMqdCbksxgGLGmKr3+aexDVZBW4nn3mJbmQOsvRS15TRtIRgOoojz1ZWuDsO1yo4BXifkLEPM1XBUzdaV3HavbR6xbZvMdf0X6O7r0DoWQnLDk8RRSpgVHQLal1i0Da4nnfmWJ7ZU2OFFY40C7HcTN8eNKo6l/Rbwgee4LPGMRaXnXwynG00PdKejkyfgmLYycdrsJ7I3vG407XU9j/y66c8VEIpVHIn4USqtx6fub4psoILyaSSj0Bth6I/UraTSd4km4ofZcikHOrnhTBmoMFilybKD/Sps++jnnHjSOm4oCZSq53XlbhIoXT7BExJ08pG7mGFmf7t1+mTB8SEKt/vvM/zjFDKOayS0lFgZrt7F9+0yB4ldR69YaRWHLolsA8y91XCWBRNTWXm5FicsEZM03uUdSdU3K5hVVlUSvUMpbnNQquM05OShwg4AtJD10Ez9KrD6bQ1XDa5GkPK2WVLU7bAq3s5HXqAWOTc7QwmHeqAQQew5ccpfkP6eh0bdNjHNP2cem5S62+27kN7evh/K9p2hrd29JBbjFMgkNUoer3jvNMIBcuCIX4l7lbhNKLaOKEkXkCXW/tzMti1krZTEtdV5xLSXIreakmCtUhkFEMZTp5YBzn2vNYo1OEh9HkfeUwjt8fM32LleW70Sy8GRJ29wgDRZ0qIpDqf+DdVmL/VnrZvsO6WtZ8mGi1WIlfr6tbasydukJzzXj3M4cSKS0vnfEbFsqPtLNmNuHMYwtoiFQlBy0Iad9WSp4yW4GMOoqoxQBKHgetBwFbhePRH9XSRUZYkvCPcLLkEhjq/8c3yXACCLSAwh0z1pI8o1Gaxgomd7gp36JeTBp7DMQ8sNLiTTAnDfu9tjfO45BwoeimFPZIjWEgFa+JkGsWd8CQrSSFB+ESP+i3VX4xhPfYSK4s2nqfaC8wIWYDIk4F8VkjaJInddrXPvH3KMT0sXoHfuewpfCbPKIhjryUrezS3SFYjAoHwiCSCqa4U8RTAozKwf9UTxI4z47RonYtna1DsiJz6G3WyYZJakkllkOYMfqeo78AIsOk+n/jGWJZ1Xcc6PorFieBHjMn7KRnltCNjU35JVRsX+0AMkg6S4MWHQTvygy3NvlLn4vscT6hB6Ynas2ZmQ+GSSbCWsubNlXZhv7QIysm3wLXgz2emFlgwQS76TKZtwgAVu/a6zeQ2bF7l1i0VPWk6Wb3ttjWeRqR9a60hdRAOMSrfWPNLYrOEG2XN9nDjwek1anlCAUaSI5saChgHp4ndtIinE+AvjLvCc5cNRnSX0eJshwcJmFNJAFGej7mWmERkZFu938NZ6v/KOaOBNhQhL5H3ucd2rXC+jVldKYcwi1A2nsBhAoLVKKdswplUL88ASQMswWz4wqWiAckv5nTcZLtrsOAZa6xCRH+joTab6NK2ESOT2STGZTNy2cmi6lHK3/XW9PrK7ppNqzDMPa0xSo4aXkS6E3iCh9bV0mS3Tnlpljp//RoUunSbMid8mayPp8ErSssVUY4BVay6s1T0Zyp7xe6k+6KczleeDlINjn7Mtq0Gl7yvgcR7x0mbBGHbeV9+bFEvfu1xeMdEzzO+pAh+Zq0nOB67dLdnGco9Dz7RSR4jD9aaDecO0Svd1lVC6MYpuTNgPNlWRjJb39xgf+A/6GVvR3waCzHgjw61XVjloUWCDK4BmrssdwzwLvmdoLk4NDKxkZbHuYUi7BRa7pHWvG0C04vq4trVD1L3uR313bnJcJLT9sAfu1kAX2HBZsd3ZNXojm6trm3o5ORe/0NgDJ2cgswh0rCo7JRRRK1kKHaBntmn0i38uVqt3lmFEmjs3toIzjv6xLqZLY1JGph8AGAjldVfHOtc54xaQQDzm7+/RGINOvQQEFpYs1W+4juTQuqwTJQAfVKnmA11fMdl+hN/YFyGuGkU3mnY7nRjQjaaPVzcJ2crwzIIazT9zCwP/8BVr4XAlwe7oLXgBCCDmnNO5EK7+du/crtScYq28z+oihy0jx4UvXglq/i9dGPjwpzRkhapAlaA16Om4lWS7H1pydbO36/ijnjWX8UFXSUEH4ZVSu27SGS40KUai2Z8sJDzeJgFay511dJVQj/mxedGQi3EYaOUnG39lYB9jwh7E+eoK6Rd9ggDzZO6W5Q1YDgVRoBnIfBhcwM6QXtCmLkdA71bAPZ1QSvfFu9vLM0mkpAxmQ0IBKRfdltNvmdlMWWbuU1JQqt9wJmfwBs7eR7HEhQHH36J7+cnBk/yZh7cfG7+aIz8dr7coW62y14TqZOf64vib/VZ73CgYtZrELaUknNt+cn/j/nz/yf3Hct7bajTqUfNgVO88F0oxzHy0aEL47RaREbE0QSeF+0azcd+9b3PhDU71YPf8vaFkVSQev80XdFZcX4i/DpB7vmo84bCA03d7PQcWFnMZc4RhBOv7zFrS/zVyHy6FcCyaW1vZ99teBQARnUF//BOsgmmX0UAYduAvqBs3e0df4NJMPKKipf/jEHylMkYhUQtpTKiCQHWe70Yz5KqzlRwpedstA3e7vOu73W8+PP7m/MnS3Xv3XLd198mTgVFVhspz4e04e1/YOx+rYgg8LKgytUM1wDS98kYJoZQ5THzfrn/tok/uNAc43q2qRQhgfL2fQ0TChgjIQVDfSBTOCC9YXhZ3fxtB/PYkNaFkW6h8mTFehplPln35B0opSsyraU987FWjX/oFUTKnhNsRY5whVZRxgvhYMTG/DSvytznI356kcLJNqp3OiGRMZoSq7fNPieckaXf5PFrC9o5BJ5DeZ6yAULLZWvTbKhSuzeagDGcfwNVi7gMTxVgQTQHEYA8/2btRiG0zIvqrVYUgaJFzqXjtLraxk16QBR5nq+dheYo9KJrP8bUq9zSNJIM+GL7m0ieDNdpo2qNXDuqhzffHECDxKZdUCI4v1Qvtc9yQDgNsFBX50mZn7WiyDaf16NoeRUsuPcrh2RMrqc+fcGbDNt/z4pUV286tfOIYLw0ioZn+inlHh54C1P9fjpvtXoiXrl2Jn/TN3bj5WRG/2WVjupoZYHm99Vgj9Cx/ZpkcGtT8/E1Ykj8Xf0D0bMWyNrFB2tpHUI4uRXGUQdB8iQBDCFI1B5NoZt+1USYPb4fPR5VZ9h6DKMZToHhgiqtLagat/XMBo7shroywcXYY/RgTjLw3CtYNbEAEhWVVy3NY/t+J/GEH1mdIn3kvvb1LDMQhRpWUclLTQqZH544UJEyfRs06fMWs1Cajy0Z8LX4VSTpjdkOSJ6E2+s3AGMCdCYyw7qb9KmUrZk3qHWGaH+abclPEi1sieI3hxUbPuoWPnTN4on5agLwQzgH8MFy+has3pb1khug0DnCHw99T77as7nvEl/Yv/+iXGsEvgd9nrofaMR2kupLDcNRa0/dV2peh9Kw4VuFlupKtC6as57aar0PJdzpUNOJgAxFYLil5gLSw9bWUU4LvnGvCSOZPeq9Cw30Ft3cDcNmS3HQDW0Za8O0vWZJa11rxoNrrZ6E1uvpsnXyfzF25jgViRFynJwIpB1x9CQqJXh+pi6QhZPz1NukG6Meq+RH7fP1CUxShbjQ8zp0OO4pzv+4jsRXHXB3xtpJIENE5DfopkYtgw1xpy3QWCqm2tQtLM7v9EFyy/8VTa70monKYwPrPinmHp3039aZFrlGOdsXmA3meFX5tRnAMi0usg5GgwE5r0vw1v4Y9TOtaaI5bkrwzpRzNYtjvc0nwTljnuXDHyQK4SNgVjU80k7EUW/6NnlYcp2yGDPyZMxjkH40CWifc6idzMHDd0QfC1qmbQD4HJsqKtayMVsidmSl5DfXKZ1/hjhLbUU3Waq5IJG7mCACBnpjvxWqsa/CxMyNlXGeQF0F4eqMgp7oa6YUIBoktrz0CmP/DsPygDy9BxJGi1184lRMZNgYK+EPX8Mo1rPbywn3YZbpTeRFe0ftXT+988c7Ur6S9Qe/a1Y9XfkU78ql5lu68Pc6V486nLkUv0kx0l6nY6r59Uk1k+e0YNvLsM0b+6NGK9WvpSRAefhtoiL868/Z+tezthPuHl17rQXyarnD3jfMiv5y/9rafzCun+1YQmczNfNeo0E/ekb73aDoBs9zLHt7Cb8ZyUzPeU7qm9M6SvwGenj+VJF10IX29YTLte9W6lbMqKRf2Q29NPXwOrdQCcPDW464NG3/WMOkNV4hkp47H17Fj2BCcktpTbPK3UWc6xuW1ZwPvXOP4vE28Nh07QkiDCuz524DaKwnr6SlLFdaWA5ihtR7Z28fIi4QjuVBffjUlzVgBskj1UQ0n+51xpO6XnLHrfJv+jd7xIxGg8Y4AtRBTF0ZNXiKbdpdF2hvtA7N7HibqAVfbdT/eT8qMCNIJeY6L7DDRCyIEgzezA758ky68aRo5T6u7FRduRADK3fDiJVi8wVBlRRMHUGjgJqMkO2makVu/tjmxzbjNl5hKjkadH6TUTydT8uEsK38NAck+dFfIcR6Oz8rXl5ijvSUlZHfm85wl4bmTTjEwK0Tyo2TKKKmCpcX3jtBp9n8PrtQYQt5eLUTxVZRU6b859Snp1YFYU08f+LVjskU2Bl3b7Ve2rE/bFPSm3DwDlHBD1FLAnFkm4bsVrgaOY9f8pwHxMJbyCpWdncSir0HKN3AHhwCCwHvOC2qQUzOKTQxH2PXWXXdCHutqZfA3CI1/o0qJY48z0lRFnN1dX8AnkAALtKMdkCcUCmNV1bL2jlPAxxRC+36MKuWRE2Zz5ZIAfqkFBlCakHq3fZ4iRonqSoskpWfCv2EgVDwerIQ/UC0QOhnBpGQgz/irP4bY1mx5DiI1QbLsnFPRmH2MOx8ZpbQHaI+PUobGhm0sXKG1Al5Ms26g7c/XRQE0utOd51oPCtac/XzQ770jjlAVUQzBLBIVx1SQc+Aa5jXRSocPqXwcTKFkfVXOzJEbnrrZVtMfYS398HcNeYWY2AXF7AktF8mEd2HWt3F+Anjd7cZ3HP1yBaeJA2U6hvWK9flhr3Y8FghjBEI5HJiigEoVd+JeK+2jgB5gM9AiT0IQGjZM+lpvK1N+wq/OKaL2ySDypjTZ9PgAUdGu+zzA2LUgfDGa0jRydJA6W9fb0baLoMVEpEVOyls/do+rKGo0UM73RH2sgy3ru4/Ta9gpd9o0dP3sFboh0QVSvrbY2QOMpyUy4fRhALBNpJOkxPKjKW2C1fq5U7UUp1d6WV/rqoFjg0pQwGjmUO/gse4dG/YmenankOqiAth22Q1hY9aNxJrVmodHlMaJjJ5mVkzUSqry+ungVYRD5wWeHXslihwpJOhi9EINZL2T61Uv/f1XYP5xtRL04aVoncCig7K40c6mXQMXbfbbw9vFAwft44ZYOLpHXWxjLC+/l/Q+jL9p956UUenLcYQRHnv00UZa3SFaxzo+Qc+MwB9SZKP+GhjlA+0DhGcJnmpqHhHNJyqba2ypllJKQaR3bgjHoAheIpu5yloikCSxh6vqFtyen6EGfgBxcWKGTKG1mRNKOVpwdiLsmOWt08PqR1zrCU9zXKV4GkE4BxtHdzxQKHDxMN2cyhCPPUsBBHzAVEW22HnSY9uiL37Y/Uu/g5CcGn5/+7NyDGxHymI8a2VQ+c7QDwovJNCAT7aNShxLTLAkL3qxyVtsgZcxGep38DMMGXZodeO9gr7b/OAz+TZ1nSlcBSBvUsiA9OqW+GZoSbhos+MY6OybrJXRRqxOjCgjNDszSVkFubQ4cbYBPkOFKtYeEnZrt91tTz2xzrzeZJ20SRGVO5ksQF0KgRsf18mWLjq1VAfr8BQ0qGM0Hj+9fuT6rX67/rbTNQVIsau56Okqy7TenpOWgwEpaFacaNKpUyW81fRARNVJ7yCMfUmc1mDro6ZrT5e1ipLbB2+zmiEzSjrN9CIPLtASRUkuDXyitHBfVo0jicxcGYhx53xdBe2O1YJRiLT68bj1y+H3FiLyovfDZJTvPUyOI/YprfwVPHioZnvyfgZnhY5f9agT+UVEels7oaLf+RVsol+lSOen2S5SLrkzHdlYdiji3vueymjyQXOcCCP7QL8K+g2LjrGjTipFn/JnoC9e9pEeSMiSTGZvUc+xca7yHA08vopjGYqCy0oWhSOpOCqjZ3tckUjMnUy+Mex/bzKI+o2QxzxOysoHoNJlEs3O0H65a0ioibBEORVeSIKLQO3khl7UqUdqGSdA3TqLX3F5qBR3lnzBB73zIizGfGDc29yZ3T3wmD18yKTZNspWrakHmkFhETG97HhPwhZxkdAx6pHScMDqcJ2M2Ne3zWvZ0bpJQX3WPWxecu6r/AzDVYJnASGkUt9BQos7y7TQeqhorwfhSyIe5+jYrd/IdY/Q3hFchyEVt0mk9LAhU6p5fUes9PKEchEmIrsHhn5K3G4Vbe4vYv1U8ZH+QDSfAiejhl+555RkFhjBzZq+K4iLP4o6ZX3rr6wAr8F6VBuVhXnZ3oyBj4dtc+H49Yb+ckscsuXDh95fedbZ8xC3jSg2bRMibWdRAgDL5+yoDYF15dkJ5TCrvju1Lk7rutfkrcFMtFN8YYWWldNhPhtzeqSZJtwh/5KAJkxHEQnkFxEijK5kmb0Q9t73yfhrgL9OQR1FzbO2JkV8eykXwUHP2TfVG5EsNW0gxz0/ZfEoBGvLCD8BjRR2JLJEp9LlSyV8YcI9LMcD/4mlgKkqPUTZxxQ/j5CPYtYbARRyO2K/VYFQP3hZV9ML6chtH5QtvKHDKv5aG8TP+qIv+aXlFnEKFBxjQS2lYmNVCp43La6B+39aNITwnF/ZS4zLAZnGVkW5iGneUgjgHzk2onYuN1o87AlrSkTLu1pQSSjFgwKrVzALV7fMYSJjIzbRCCJA3FtuUgeIZZaw3XC5Ad6GBKIoGDO4gKDefCpcv8ylX8Q1TDp8j3AtUJHayZsKQEURM2mShDVxW6n59b0gAwVTwZxcZ3QJB+hC36PtYRQC4RBJBz0YujbrwT243cyFICXTnyCDWUCBHZSa5jJiMXxTt+ahqylTbYVEQHqM3+Lm1xnzVqYdVh578+Dz5P+rjzo8skILaU+1fEnmGlouHET57ZMw4ltQ5JGNDTwzKS0Cdu3c0lKef7tty3lCW0KTFgKi8Z17GwAXmg0g0e0JE0+IgBK9XNYO9pFEOzPPDIgZdI0WXnOtpQxv4tY8CaVpSRCMHhjHiZy+9HL373ETOPCBQ1oEI10+//iE5HyEbcm6jHqpV8eERcfW7CHit7j5ZZrJsuOCt5Uc/VJZ6bCJx633fdIu/ZrtCYi2NHwL/EURcNZe9e/H6PXhpxMKDz/twE1hyN9EUItDJL4HfQqdHmviyJgQzfreQwZFGAIxsXIwAOUk68XvUQzsqHTb+KcZj0ijaABbfJOS6YQFoxVJGBCLx4xI78yLhEIUJs2yywwfpri6weURV1stNcu7iXVt8TKtvJdMTEuXjW1ioyy93jtAjxOkSF86SNyQlIBkItGDJh88NNPQcTk63Wj+SXcShZhmoOjCvdhcQkdAtdprAavqI9+sSo/6zqWlrlziYTBEl2ton/WbHITOqIJg8YNJfIGRrVIvkSQPjiJKOoymq3whUJuobZoDDZlDJTkeZO/vE/dyOZvCKu7sEuOZiCsC0iPcJ/cKTmx9GSz3M02VA00KtfS+uZ4VCl2PT7HAwcJ1+dLSxZUAl8fWf4XhDUuAStWy7KqJ1OQiB5AYUSz+lC4QC5tL+RnhhDN1h7BPAIBy6OcIxYByhKt7XuRnFaJxz9YJfd3PjkopxsNAFvDPH3U50d5LYhLfnXLuAZwdXiaSt5zdBsCteeAoKuOWBH5It0R2kpNJ2saqi3BOS0n40WhG2RNqbHuxQ2vJodcOJd+1CA6QGqLdby85EpEQ0zIGylMInNiOxujtJwnRMND3wVZFQM0ro7riqWhnMMcRMQdYeiddqimf4Gpbl+3m0oAymT9sGCHfZo8io7qHVtm9wIxraJw+iYOcWzOzj3oi16D0bMJpXIxsTBU1P71V3JrHHrdUy6StJIEQ6paa8YZojl7q6NOJKB5g5TrbBk7pOlqj5GTC4sbb59T7McKtS2QfN/etoxvghPyuqX+H2YJhNqtMoTPUzTK4NkbM6tMJfR22TMxpIl+Lev97kHiAI0W68ScA4MnFiS+ssTxbZsI+Hr0qsLPLmMbS+QL9nnOKvmWBvun+vqiZ1KEalYdM1nQzHETg+EGlUzv8CThMPGXMtj4LUVUiH0csOwZwPdbBpVrL6nQB3VKK1PQ1L5uWxDZsKxujsSIDiPA61VOYW4UuyyGHFpCUSAJ6VnoFdoX+7M6UG5T3qoqrqgC0uY5JYtr8piIi0naQigTFtQ80Yk/ChSah8/kEO9pLYHKl7OhUHBJQV3iMW0pHhmFbhSCmqsfJ06ZNwgVdwkCz2isuEqqQATjhapzqcApNhUXJjX4R5qPfMQjQFC9EFtVE6XY/16W2pjhSxSbTqaDJyvv53zRH3NKzBs9pPqFD1HGO2i4Bf9SgbPCs7qsBzyiMesXr84PODbZwrlkdB0Gh82+T0eyMpt2WclCL83KTzuqolcOS1r4SO6PKSmfiCd4BOOmSAlDU6dXdUR7Poj54nBuDNre0tFwRIht2krBAzYsqijLbFv0GS36BWjEP/TGQdSEpbIeu6KCoFOkBDxohlDLWRQQf/64cBFxd1/R4FBJ0RQ38nl6tNNpjeSfOjnhEEMu+CRtHRwr3mqrdIdG3qdYReqVWD0Ig8S+9fEHSXkbSGcfgJqfnQSB1RwqnlJXG9NejnfMP61BVVQ1S6H3w0z0mkxysE5EhP9dk4xk8TStbGdxrC4LqRKZtlBVEiurYF6HpFyhzlBrjGJVERdBmSAxihAmip0Uks3OnUWhy1Z7VsZ/YMk+rvVPAigJgF1d5Lr0HQ8bVtvVM1/+w2iu9YapQhmHajC8GzKpZPzB/Hpb8QH4jJEXYYLbP8ZWCz4PvEWqWg5PqtMppzK6mDGm309CrRqk56LV+APpaX7N1rYuizuFdoKGwlILqxjuiX6LlZJ18YJJIDdrJ1l5V9UpbPMlxleHbNL6TQJHIOg6FOpQ1OwrvoeCcRLSydU56lusBuh1+T3B1BRq9tIiYuQqrTuctUcDozJFfbbB5Iu01aRpI93nwSU1JEnHmk3UnoFC0tJ97RkWQf1wgR3VvPsCYymieNfOE84g+uuThni5J/LwVFERc8Kt8WKKIsitZe5HVTcJqAwwgUSlOxZvseWozF3MoJnG9h2uGCdiFKOxXTuiJnvSdWzDHv0qxA5mMixPaZwtoYbasQpPx4htZeInEAHVaSW0vOrp0AGDU17rvDGGNcy6zHZ35hBV7EylnDUqsRp3cw+GlifYoKk1wptcqkUIKcy8T4JT5EKQAnb4VKd/eBrGmS3HSl39yVZXzX4BDCP3RvFLKLvgxqroKhcZwYKsn67lamq6arvuYpXPEg2u93LOnpbH6ziHPLiWxH4WxulXnznhtohPe9R8IyWy9+J19eE4AI87V8uV+U/H03HaUk3FHCrGrOrVeB45hhrq+Z9+Oca29ktQ9uhhY+FFDGA+JPkdEq4mnNdJ39OEi56BwQPJJdPCSK2ucmuFdyStMdwbqdA+YEWsQkaD6WY2YY13VwTSie1D4HZbopPVrUW9gVS35iXd47G9MgxS19tLa7AiyxGnNse4m5MmkF5olkVWTKXzbB/kKtL33LBWbZve8n37CVE0B6tZeJm3UUZLTDRXRbnf4idcIOpnp0XbMJR0UDNDVXYYFSvP3kmOhab8eCMkhORZq0wikUTEpeBvUXWqZ/Zc/Spj7ODpGc7JMZZXI5laMR9nVJYFMIJRKkyduUl9kYj2AMsWFahvWBBcrrLqk9OZmrKY7StGZDgoRqbOLzGz8Gt0TxyiTjtp6LfhRkomm3vGv+hD8Wa5aknqb7bOJFT/SiqaJ6TIP5KCubtAaBmmRQGHK82H5xC1BJCCdRi7xBM0wYDcCpy6TZfsKss74apwUdkJQ5mhxvNV59OSEXot6eNxhjRe+pZPwwUMAq4vknlcLb9+RRKe8fjDrKCzrf6LgWdR3/YaIOHSEQDbOJKBASkMfgp8PjCOU4pfdlfteAjl+Hw/jpKKWyp5eQl7Vl9zG34MIEZYg6zM5J5oZwMtRwNdp3MDFPwfSWK8OYz52iIPy3A6q3UIZQHpnd6MoXBVAM4hH62yWSXiIpdTxW9pgtHxtyi+O+lJt95kCvsOMUNSHxhS/HwkWkGJtmsm9/nKKKj+l/CgvvKrDS5ee01YA63JMymDZCmwBCD2MHbdRCj/iKpbJDyAzaRlVcVvQwjUQrrfdS/sIzP/rrfsdh3Ickop0zlUdFJ1p8Nz9Lw08uDMgEVjOnLBZGTLxoPMo0WOTogAHSRKyEO3unzRgjcqjG+xZKaOKoAEqoI/mNVWYdVaL2NG8g8IYk4yiG00PdkPMoO9kGMSGSSiLXRAPPbOYzBMDK6yUrAeTajYYKdUXfFeiqZBxomROqY+XqbWTb3e6aX3b+Hbp/eoptsrZNBmBe3DziImML6LDB2xw/UKFNXXpSGpH5F7XE4xFw5xb+/R/wE3ggZkfb8SXva0RTkJraxkda/PSlJK5MZJ2FPRx+WyUOCVBApP8+yHz7L3SjP4W27b7DUzihNpgOzHHpHlXoZjV87HxT9aRQq+zuqYrek+OtyVCjspPdP43Uzzb47LFk0T1/ly8dni7+ASAfSjYZAUNC2tleWUZqS82smp8kdLNkdfqs+x0rkk/aWXHyX/Y0+ZqGsHCgTbJuvpGs+Xm+htuuqVIxlZB+Nd2FCElhdC2iMriwCHp3trtAD9WVuYadHcTDkj5AtQiGABz93OX8VubSHLkcVs9yDwvNstCquEOIp+obItlZPQbDcUSPQZJlvQo79fnjd6ZxHjZJk68XMmEo+qbiERSsgZARDql5J15Ewq5Ew0u+5ePW6Vf4DzyPa2a9AWE6nZIqLltKdLb7fuKTt++JCpM3tEj4AH9WuWxZ8UMrAl6m60QziOkFGdnCN4GSojPdcWH4aM7d1rBo9ts8fbF9Rxw/aE8NeXbzd27NwIeOyJvn99eaty9Eu5z8JwBj4CNiGxe8BYJZX3ux1UWULLjQxwcl2SEEoBcj/T8raBuXjt3023aGbm/t/bCpPHTuDaPAvxmok84GTIP1VejWCP3bTsnCDIC0cKnFn8lvxOb22hDzU/aIlpT3uMXkr2hlYVi2IjARPLx+/KYD2jr0nGjXxcTpi516TWujde61W1VylSCwUd2OFYFOuDSiz7fnU/d/xrM2LXd64tTJ3nsfWNsSgDpG1PqueUSYaA7ZBh2UDkFnNQ6XExMbjys92qyUXSjabfzYIcP6dXXAMJTVeQ5jIq1sFnYH55vGBBv4eGDhd84rKh7rS2fYOCXDJ6O1U2JmTYc/9HBxDo2b6IVPeEFT/CJenBZsqGcJ3aRHWjFcLK8piuOPDxucD3PeWM+R97KmEHMHtZboUXwXtyQHWh4BGrd0CcCxy72BqcQ7qtcSnkxvOiDyv3VzpVn3/hIwH/hyPdVqmc/nbtN3Jsb8qVuIULYM9nrQt2i1Bp0RIS4d1BkCGRGPxAp2Qf7FdYo01zP7ABT7NA4d4bwQ+wVRtktNevdjbnsKWf7BE3EQ8a+TEv8kHxFUnmLzWO6w4tzgDHzEgNc3cF6fr+vqsrHM81zrOj98mP5o2C4dXSukWnfXRK4GN6/LO2k8p7z7y2RN/d2RxruNwJ8ObxlpLciYAwx9COWRibHUU/JkOjh4Aci+jB+MSakfWCxfbdWrvCklvtdbX9XWMxSb8Zk212pma0S1a0DWMT3MWZy1LU+rjTNZ7HlqKZh87zrVPRB/R/38y2U3GL78SVGSvVDEH916d7AWF0Pf9jMfzibWY3EPtgyx28rOChL2XX4Szm+YSC0rX65p/HcxzvyalP76tGDHx4cACv64XwuhcaPMGlgUuAxwnC70uBLmMijGwNjKwNldshfLZQSTTrrIhKa9pRm+cUBkO+5MkmsiIE/SASRc6KDMjRRlGdwUD4iBizTYEmiKeeZU/mIWjBHw0XfruwrAKKBOmuL/BYzAlEOyIHfuWHgIG0ufcTlveL7EsOqp+SfrKfXSdrvlVGovFJiKgeRIEkbitsUJguvL3HGU9ltNonG4JjUGetQwdhxss+tAX/Y1As/ilGjaGLRH7U+PcUzSvbFIWFFKUpFTcivBmsd7OTXQt2QmznSq6npihawE1CULqyZK6QJcvzohX2dc6XZumL1DFV+4T7ufMRUct7vpFUvFeDi1URd5q1Y8iGR3mcsWk4PvPUTg2r+xng5reaqdAVsaZQjVVWsnlStegtUKeshw8FYN3byPC0Zhe/43PnsbAkdsE+8s/ti9+Tsp6Yne1s3Hois4vjS+t44S+BrtOeDj8J70bkHd+Jiu1lQFCe9BaRU9aXi1vbG6YqkBOG6gmhBxOIKq8N2aJ+bmGF6LF0mob1bG41P89zySOaJLI2BHVA+DkplYpd7c5Am+3CXsxzDVJXHBAC2sewZ+UWpu9p4W1HuVuLxZIcsV4vFBFmsNqeHyFbVLY2RpZo/vRbamdMJzIb3iCwHEOBj2k49gjbyVpZX1HCRGfXUIO9c05YySfKwJa0eI5dPTSYrb3SekPrDLXoewmgZ0J08+kpEWl+gCW8typ0ZwjTJJJWNEtUoJpc5pMf8aQQLlpcQC0JKK0sfDRFJoeHUW+oRThm3r2wKsK8zlE6uYTNId8xPg2SS1gYeLq4hdVE5CJBq3wSkIpP10Qm+EEnQg9V+EKjWZrJxt1cw3no1DXX5VnVjhyG/4sAW8c2g5tanQszPPLe14hqwRYfvo7OpJi/uwhv63OamZUXtq3xjQ45/XgJlnnOkSVfi9ba1alKk58aZYBM0L8qTJR+5uLcJxex0z4AnhkPJ8yMz4xtnaVhLUn+CIFpf2GuLpAF5tD3dp1ccc+LFml98U64Mqn0D8sIKo5H8eSGMuzI+nfrocq/Eum4cR6sR8NxKTwV+/NWoTjZEt2rHWrEnl2tDrSkNRxm/3j3x8IfArvRCSJax0Qr9vTFJLLNPxtwiV1ArSAOefiN20jZUTVedqB21+d9i66hUEQMGjlD52NHaZqZmrzNL6cqgYW16ZWbIPXSFLrDad6JDe8udc6bcd6vSwAr6GI4HKA8VGRdQ1eHtp63YqTZgzI+xHiYjOl8PLDRQffIrmiak6apyOkyS6oSSBayRNrzd+zAKqSklzqntuFb3bJw72H6TXiJQZLor95YWSbtot8+hh0gJDElmwjNTFQoU/6eAPJl8yc+NwBYG5/ACt9Drd9c9M1colzNTGVkkqasP6dxw2XEqJw9vvkpF6Yn1206aRCTWylhruW0HIchyue+h2BvUYXVzf91e33/XgAveENUc6DVb9M/8o6tFLISq1zRrCYl8ajb6mqbw5QYH5XQmwYnLoAShaZPJMSaz1ouGaRDSizbgE9PBNm3JGnplT8/r0SHVLEmEUS6lwlgrWs4gmB53GFFCQqJCRcnB7FXq9uHzHpMT2aGywlSAs+8iJ3krJXF7yPepVgTTKF1aGoITjFBE6KK6lktLMS5IcBw5h9L3YQPLgHOAALWqdTWLr2HmEHMpei+hV2SrDpcldfD9DvoGDNkAkTacW6J+9SNjMhyTw81vsBcaAh9jLzJijESPx+uRnNNpYoPlBAVakefVoB1GKUk4h3Da3rUpy6CDGyL3wfNAAImobc6iAz3zhyyVKCD6NhG3QalQnLYaT8R0M2CEyF3tsKVGUSpaomv053WFSmPCRs5tbQNyty/R7XF5GrFRGl0qRxTRVgR6Nci+ouGC4AqyuP+hGMowGXaUd15n3cOoylEx8EzsHho9av5lvaSqzf1YazR2Isrm8f8QuMJrimxBJpUS3qIq77NthDXCmbbZjs74IQrOC2VjRd5hgMmRXy5H+Q2IxD4asJcx26c9PIAgGv0rpPxfN1r1Yk2yf1MNUOSWitQLgtIcarHQqZCCkPcJ6x7CbDsUAlk5mGkfIcsi9c7GUbSANAYNeFAEluS8LqHjt7BZ9dJFn/BDNXcm8rELEYBn6kRKHivFt3VgAobb7xWXm09y8uwdzhl+QuS5yRCCsGuPsIBgzymVaYWMiYuE1i3t0ViYtOJtUeq2hNJotkwrKSX+1k72Yz0743jepJjhjLngjNRZCpnW+mC3XnybLHHlIakJK9qzPJXbPFFpRSL6dmn+vMCYGatOCGSkkG0sCtszHJaGIhchZWqefjyblHbfDqMJNOuQaNxsCQJpQcKIxkRLRsKtozNBdEETAjAtz+RsmzMlTX4EWyXxG1C0n+7qnZRYaFf/6qSeKZn/g4fvd4D14M0Ow42imQ6hj63rBumaXgFfHEOsp1JfC9bmkCemKEMkKq8zZONAnaL2JItolyQkLtE/6Ku6nIxwgo8hoSpnIgrBWs3KNmZCQGAf2+A0Gz2fm0SDgm9tgPVruNcTFUqcgjQi2q6SnI+05ZxDpY1Zh1i1++qpyn3xQ4IIYSBz1OuY5+1G9PN9u5ERMn5GlC06OOCI2T3rIBvVIiGMLsVoBatayKTni8n5WuJdCyiulx3wt3QPHLL1oMJ+bj4nEwL296TjmtvT8Tx6J3w5htJUY3TYG3YSpBIYvBHx/v4loS0Ajpqr+G12fp7iq2QfJ+rDTKvN5Qec/G0AAGdM8VnI/ykvZ4acDL7J9f6atK9D7uTbX8V9sG0LcD5g5J/9YpmUit0b9qXaQE8vkany9QueEHSUzIHl2i2Z3Zrfq4eVjfsziHXMBALT26Gym1fiBmvc3dZA9m4DisDZzLM7eELnKd9Fhf/a9U8yafi7hOy9y5ZMYrtDXoDrQAAOe6s/CrS3QncZXkalN+RB3fixv+I6fzl6HewCBw7bNMoG2bsLaY5leN0A2xtiqDmx/LWHzmi4bDv72jKeciJgdzM4ddudLmM+n2JcR8XGTjA5Pl5tTt6YHdYQztFI/kHnu+KzS+WwliBbLoDdEQcPwwaxRQ+S2dPr8vUKmLPv6C2tEjN7J4s6K4yGI3tLHsmhNpNhdz+cOZVx6tblRDW5m7UX5k3Q/oGOae6R6QNZ3bwoq/l7jxt9sAwvLBHeEtRDC/QwcrLz1yPD1yPXTfJkxAlkeMLTknIuBedKJutzEw+WuRsoMyxIYIGebn9puQrxSrLyDT24UsEkh9OfSKOEfO8E9/Cn/2l/ELgAICA1OqgSqGBHnM+xwVlF01VktifLcNn2nnE2UZtOrluEi49gOsE4Ua+bwAnN9ILfWEr2Zrdm3pGQrfNsyR9fWDWc5xrk7l3dFgEICiedZzqN9XOrQLrZ0VrsvybA0JyMEwccuOElnWSZivINCn3XPltQ5+Uk6/PzRWm0qC1RI+c6SFUpVp1NmmpQjHc2pJpWZQbNMb8wUVBhHr86hanr7J5RpJpjomXaK3Tx49LKcu5kkwVSb6sRNI6xmXJx5uR5s1uNHftnF1MZJfJcQQ69/eVEiBO0bqf91R5uVmsCmiupUAjOvIwf6ZLyPgpgjw7bYHNIRmM4f81UzfuS5hk1rCsKeNZ3RZ2v5e6McqGprBmRoGQiGM6FKVwdnJRqk8rz2Qkj9MweRurtBifIqzQ5pPjsUAmP54FPha8veZ5OQ9Wls6v2xs5JOe9I8LzjHzXrVfZ3rmAFfx1bCk4GM9KEoVPTvLLPwHIizx2HjgAIx3P4VYMmtawCpN19PcYYTMUle/3EzadB2BUkRb3uoc97BLNDQ+HDK6W5TrHme4Ezt3TKTTCptuZEuFONI/X1CKPzl4SsChREn7srXtL6ljGIGGqKDt3F1G6oFmnZRxvre5hQ1C7tbAsQVjMaDMexQ05gosoB5zJWFupql2wJhOV+fCoEU7ttJffKdtyxPoewjOwVCUlRGhoU2usKP3QhqnMr801+1kKVUUwMsfZsZYBUwApvHePS7YaQwv2D5Wf2/hgqjudZAkibzOH6IW8dMxtIag4WD3hnYVN3fiwTxH/0is4zJKekaLtwqxFvzAkh3KgYGPNlAMXpam7UO2rgF2oZ73aWs151DqYntHV6kbWnuWu7qr8IPTe1k/SngzdAczecuDGVEw5G2LTOHIdCBg5kG0d4rmCr4Wz7JsHtA/hx1cX0xMP75KF5K/KBnBJqW6dCfnbE/4WetV0ln8LiR/EkyOD//+mj1Yc/fXgTfTiFWB8LMdgXJ7npx4bSSKjAumpKTWRlrwXTsnH1Zj3gCBFP8IlBFCYO1CYOKHRyEjxRecIyOLjs9woQotp9hYU8RdL+CtOKAUaeGFuXMUyKfVVhOxOD4KslA4g/U5PSK4PJxiLmjF0EgM9e5URhlFm4AABHbkCIvAwrDYX5NwI9nEckDVdQ13KDfxC4kIynSkv+W3A4Zza3T/gzFtYat3Q02Yyl805ENQTZvHuVTRsSKBbD4FHs0lCBZgWhElfCuoS3NMrlSE1SPD+OS2KuOjG7w8MkmHibPYmfet5MkhNh7PPAAJ9ReW2+8lReyKmVc3lPYfBvV/J4uhCKvNJqNJ7qA0qYsvVeXlSXU0g6uUJbK8vVHOGU8e7yo9iyYpioMDhJ5cwqbIIn0eXTGtm1gRUwsv3qvc1++hDAp/6lvbFGYBalGy1Igkrp6mpjZ7hzL90kDWviu/4E+yxnIVbtBWZxUKlY9QDEZy1Hx1Rnh8plBn/j3opCKkLTKViBzpHxhhZu/qlJgIef9d7EV/3j069kAWQm9HafPaimiZbHSXpicJhZTQu1hU2qptuupDvE+jFkdYa/brDOxd+4iQUr8ObTdl+vORKK340Zy/DmHx/82fdEf+qSpw4x7l7fTCQJTSdlKXaMjLv/v12krjauJ0PkeA+UTTVn7Knl3ULDKAmNP8spFptkNpB7mDJLRRkG2Yd10zH18o4y2nil2My2oDnDcnAGiWL8tIsk+gGAmxcFbfYJNOcGxIEZd73/HPqDlkR4w+OjBTXXDDfhbGSNRtZGAlxhQcM1ZmBPP9LE7GwDxht7CudKiZmtBlx/9VW0lPx8QbPpEcH894P5vq1lot+Z2ywjlanhJXT1x7wKJAHU2HCKFFbDq/6KpqIBs1QxKOr2HxLsKxdhxZW5Gf8Q2JuH5Q/GrUgkCZ3Cnj3TKFJW3kyysKwmtk7GV2ZD/ERgJ4xSsm41rJOJuxEbgSd7XHRjyrZCg4CMJPjMiGoIXJWNPvjQx2liudmWjDfWquUbklhtRAFqLdse2wQJSv7RJc/CxAkrSOuYVSLNOr3L/xGJLNV+3qsUiH+8lMqSJFuXg6mIoqGRRYEEy4yqJcliJejqkzUVCIVlB3TTMUV8R07ARokqNxvVzEDwRCqstnyCImZtjQa2VRAM9UpmbIgBoVOA5wZR7TwTWP7jK4ByQZOMY4s7YZSiFrTCl67V3YOURKaFlyFF/9c9VP0ztjYi/7kwXGmXHkZVYIaWiGIJutrJTRQHxnvlBjehcW888iEW03MPCf+1ymGUMmueCO3ZKKdx78DJm3YhSttFvozb6dTyMMCk8qZqFlYIXFIE+LLItnp8YBqim727HO2LXYkrfGNi1TzaYNkxA8MpUlDZvvqTaECtAWn9Y3KpjFVd0tnVp0p/lt0ca92MRiWqrhXsqtJg3C17LxINiQ2SD7yVisPiVymKP1M7YjUlLu+NwcLK7ibTifxdUQTAFVS6cnEUFoWV0MX+QzaIGaVo39Bizh6UEPLJkxLVevvh4d1VzdtwLs4jSVSV3phIxOoyRyeEitvkkeTg2sSOd9bVQNS3uVh3r8SVrDFUJMcaStU58eCZFFTWxgiRNsCABqT1RqDeANkopDKxXuzg+piPnBBx8+T2yvaLvFCAvs2l8wNMuELlX7VDIJ4ZuIt9nv/mz3iFfFk9VMmSULFmi+8IE1yQ96to0ejG8lsVHTf4RDiyzfrNjrspHwFc/en9vKWgeSBuaKUN7iYjSRZztzCQ6Hh743EA7hS5XARopWF3i0kC8zuJXGUzG518dxeKHEStNxpQb4DsTahiIyno6L6JuZ6sXGVzz+EkFogMnDy80VgtKVrRiEA845tXJaPrPjFtCgnMa9DU0gkC9bvwiwIAVXTc0EJtR27i4gDK0SWV3n5HsOlPU2tGAgoxNqNY+WqyjhpsKkFNVkXOcpWO7/0JzFvQYvHNyrFFhXAfAqzpmmVTwdHsiFv1BOjkKmM6W2TxEVQvhlZDrTyMl6U5b39EGr6kwkpUkrO/V39j5A0OXRWqlIyGAIP2E/f55V0nMH/g5Jy4sC7c301pqj2tauyZsqzK2y9s7DLKZSYxJAHyb2m0npviGLUMZNjRu3YL6J9ObF/C7MmGLBz80WYuSjoQD9Ky9C7lo9ycofYbX6Slq9ntvf0hHFndNdRHg6mziT+7tHUDE6pA9fvMrjkXV1D6D2js3WBFIpdL3RcCJk/HYB5l1roKTW70Inoeh+y+aj/97kMGOPXYkSLO/g4pQvPDhwsyypiNCQ0yNvc6/M5agJ1/bZD5UAPGID9Qx30rODqZCFn5MFzGzAVr0uXpela/kdI3t2ki9/i4fuGnSQb5OHEOhz6wkoLfHWdjqYAq80yywlUvqXzACb7hMgljpw+2etYjZXOn0VST31N8/Oqg4Iy87J5aSoxaJgC7ceyQlS4JE8xo1z3g0267UP3EdhEcy153o0EJWPZVy+J2xyNMZw+fYe2uf+70hJFbCG7894Y+XokXnRMRMxHU01s9rHejhlYPBGibu57+UsDrLK+giXUZ5j8n2bLKto9zw3CL9E5Oh/W6ZA28Ooum70cc/MtD/qWXrLCH6pEK+HYrzF1/f2VdSHXVs4IdZQkcvWvOMIKv7D967l2n7HZD9tx9oKIxa8Fl54V/jkMcA4xy1eu7Da9FJtVfZxXAzd3hmuyNFOQoJ2Z//cPXm0UabiCqscEG1ID8oUyLY4VUHjdMCL2cHD+0Q8vlD5d9RzcDZUASxobR2M64k1Y3SDcy+dAhbcbsUHYKr4xcdb7pdvTuRxQxPxju9CazOAeP65q1psI4DSj+RS0QDeqnO66+AicEgItlCPA1P9J7r2uIhg1WNMZZQkvEYBfUo4XUtYyWkwsCkV23t2B4I4fWjsgWV+g2kGdMbTpUH4KXMkBX74aEbxU8TxD2dBUG4hKENMIJ8w8V19IItATJ3BiqiLL0gML24cns0YVurtWai7SUntaj7Hd1novMB3oTDbjG/N3p1aVwS9oUrH9CDVHkpCqqkJGfJibBRRJcYLALQzjANwDGB99QyINy+IE4//WJFvpkdtf5oe858VsVp7F6owLeab2S7+vGYj++7Q96Hl/+d8DveZru9mRficeCEkindPVRAKUD6UAV06DlHUnLOrizCevln6y/Ze+3cLeCgfqwMtDmNxYo6t8t+o/W9OL0kdvyu8prbtHPiLsY2aHYVBqpEk3FwcJ4mmD/NnHCBvLXVo9FPJRbEUfFKJbpRJOgA0SqNAQZa2ZEf3PgIE+TvQmTumN6Efd15TeHFHbwnwNwx/31Bl+tIlxdQF7KX3qadufQ0uCr3a4DTXMBh20yRXHADEdZTCFOfUocTKqcjONMHrYskR2Iy6hPgBaxdEWWKVrkh2pou2aZSxwZ0suROtEBP69Cqu9wZNNW9pq33MLv18Tjj+KYcBLjbzUgIv4+Sn2wg7Txk/P/XdwuRRSK+FGanQToq9TcbbI0oLAk0YNu7w2AqDj0xcOKkejAW4LN4j1F1iNUIC5+eKMg/lOM9ONXu1z5XK2TICZkSxT+dFOX0S4LSSBDtv7fJD4RIhuZy/Td22EMVztI33qU/wV/kZrJR+KgPbNxfMmnmAlJsz2c3/4I6O2gEoPmbFRCpmpxL6GVPC6QVdpoZjr0JEAdE/9FGWXfUNTdCN1Sh86WJOF3QFuNapKQAb8T05ivXpznNAgn+L1+bmhNq0jZLkAs7ezidiXlu/7VfcbKnWt+2BKXFGX7qQPpByxiRq4MJqcrcX6+jErOLYtPyXwe5Zy0re9n2yif8gSEvmTHO7J/upHGWq6hnHgCkn9iSDWyl/RddZ5265uX/A5s+4KvxtR76UpZmnk/gkrwXvZPN3NFiQXt88mMu3mGVOiOTfbJOF7nmOlsH7kflcwfcIIHCsC3f+FjGKTlN9QX/MXWjtv3YytDkrZvyHdXSeDI61oqZIW5UpnADnLFYRJsQ4CpRvLDA0qGAoicAyR8ntmDHwoOWERP+rjiRTFPZXlwy5ncI6gjg7+L8RWTj4+m+6WClGALiXpRhy2aQzxRNsNDQ2cu33zTaZQ3mvKokIlZx/P749udtatH4QrWvDJUvThIGa920cEJ0yjNvfv8vAKNj8WvUhWMH745vn8EKRmWvXvSvth3jT/FghIMYjmkTdpIxrwDORktDaZhuq/TFnRWzsSTW3EjzsUBWpp8+5RNRSTZLEr9PpTjqWvG5trv7WKo4BJZQcjH9oMSECnFiV6l5zuVXBzi5qZCTtxMwUzh/vcY6pf7XLC8flxfqoxqo+gCs7KWA/fOZCYmGKPTsKvWaqUFXQiOx7t/JdA29xUnUlOY+f9LOEgJVVqM69y9GGEslNljWibddMO6en8BtNEMlz04vgLhYdQr9kiwJUpQfJSJFIwbJGLaMAPNiBirB0ZLZtHgPWhV9T7IzzGXYDqZOcyltGwUZhhzpzmZBoqc6PmIIsMj+HOSu1lU/OcuBhnVD02MVe4dhzoMVFiE7ddPFbK9LEtV0rEuwZ+WdBYoKjjoiXSLl1YCROaWOWoOru6g6Bw4TkbrfWW9XEPHbnfcXxNZ4fQG7PttUmSGmmd9oXegeKaLhs/xw3C852HLYKDOCeamOqV/PQ51kfGi/VdMqSmMB/j0BPbR+oFHE4VQZSa884OIvx/ba7bNieY8cOgT/IKkFuI3DdCtO7wCF4pnjt7X5kOXU5fWvQrHu73qpAIMx3CkM9FfZZLB7Y5ho4HQyUUZhiVsFaV7imBA2H1ubu2w1ZNYs0MYla2yXXe6qjQSKRKxk5nDZk3fKRNTC6QUAKZVdW6fDck63u51c0WE/CvUgztA3lILKVNEnsqe5GDhnihGU8Z02BSbxdDQJcs17HrYHgOViIZtdkzpXOWkmC97uGCsN24RRklJxRQ63vpRTLu5bCs5jHV2eDnqMpkrZ9ORCPPH4CQb8ooCcKG1nTvqkKDj5uUT1Nv5E56XsSDxXJ11mR9pDOakScBX+WhdUuNziqf5C+Fu32VD59dtSB5ViRiZRwYmxkZ9fyyEtDl/NW/0tT6AyTNd8Nb3cdsH9Ro/LNdPVEBDcSwT2VzlHdtUYX+cMxhlBoTAnkwL9/L2oPFKjRQJWwauZEbWskqvgp4mQBZCFz7kUEQ6IJjEvxkY9ouhMAVYMudcU545tVYzUY0AVHzksYvSiFdpdBPaI8JaQ85MjObizkg8UlORUW3xZgqT1oxgXogkx6m604hEgmDmwnlcpzcgtfgo3W2gv+1DPR/aqD5tgkgdoqTlgFhXNGwVIMaBookbrb97AJl8lSha+aZsgj7d5Gm+F7oG6AyLbMSVWWMyma30cyvx0jMuVQwjXSRqCMawAZpdUxIIDJmBWVWYNZBCj470zrX7fVO4CeZVfax9q92O0N/mU4gjjFbhZr0iWOQK2YVWj1VngGOCNn3uMs5X3jUn2z7aTsIwtWd8oO7YC41yuu6FZeVn49ocRqXxpxgx9MmydMVYqAnytISBpJoIXGHqVaOojD0thYAB6KzgykkPJ9cc/5Zskq0qpGDVxAjnAyPlEB657SsAI+bMzuhoSpyVbBvs02CpaY3teFWXoPIOLtDcROkYnRj7FqMR4FB0yBI/W5mU6to9Q3Zu8QNSKwi1slFGNqYemIDkcKPupSmV8hjmkyC4ieEcMXbpUKtKidHVykhm9yjf5iqJoKHFxSkkpRfoUc/hUMmRL2Qhti0StMZ52Neb3MOF2OA9kWo0YTtoV9HU2lw7LbL+EsBogtHUJIQKgIPBth3jOX8MEkn4Af9SAyObYKtfBHPElu2USsfNfG9UPv7RyGX+rjZN5fbHv/HNF+8yl0zkvcTimzAhVH7A7o1nCA+X0iXFxn3B85fnkmiSRHIhbNhVCQCvkrNBwnbruiX/m90h2iJRii2DbQOSM8eMfjsUC4CK4uMdmrytfcJaXgqA12TZBjYsoeaCcy2rvDX9SvWYUYtWwiwEO8xQ9tt7VvZO6C1RVZpQyovTcFnorpBWk9ArbUDMXdM+dQ82cZzomSUixuMLKd3SKZdVOQKn3BZ/vcWjIM3cQGfLRI7eYsAjDT4c3SolWvFe9pACUimtc0l0vunWoQu0omhN2igwOyH88cW3VT/FCZaj3YkgkzGufWD7AwPlHIOpKn6v9czxvriape+cNq/kmZesU/PAkAsMoZlg0/mJ5TAyZnnNgg6ZtcIf5uO9VILCRMpI4FKoCpXRuWUAlleGjEHRN2WvSOH1YNjB0DQIA5hw3Yc4BmMII/dmjRkQMntGkUKjtK7ry6T5WHwemRLAZSY20z6hACqKuAhAkHZI27PDGF1OBswYXWnlFEV6rt6b1dzuLTarEXhz0rgDiJpXx7tx7s5dcuBxmZBej7NvG/p2OI4mil5SRaWf1iXhl6kzeq7ZdWzURSHzkFE8B6wdw8EGGnRQLF04ihJYBxqqVs6Nabfd+aCKsZx1YfLbPFvVbFA6F3GfZK6K1QWZpKPfWWV14lF/1OW6YgjlxPBx0N/KX4j9wuFbRAJ5rH2E7UkVMJU0h0w2uGUhpQ7PYQrAQtjunNeDmO8vxaZ4BPA3aiNl5w3HpYJ7oFi6ErQ0fta0OCRu1vHP8jWn7+xMKRtjqZxsXnGAHtH+9/yw5io/tp70v7ligpOi5sYRnoM/rKiAaIAoWKhK1s/VPhTRO5Wky3KlfO9nE6xZ+rui2noxgJWH411qawK98G1OEIkzG6vU1i0DabnpzBkugQKNB1GtcT1b5RGAiXqlbUkR2y4z5LhESkFYDNwfOMnCAarGqjq0DJ1wBdUX1PcRXHCMB024AuiTlGyfchB7DE0EcsNLR2B2qHg//R/gL3DEPtSed3K20mHIUqjox4BB7Hj9/6q/sZS1yOmv57lRaJELzxT1iaNSyE+BK/z/+6vApHE1wkAYwx+jeQg/Bmc4P9JYfZmbJaLCPbZL2bZO0iUcv8AoHW7Lel5crNbhNutDAT99RkeVXfTO243/+fDvcOKHJn/zWarsuJvu33uVA1RuIz98VqOrLOpdKuty3rbZ0M8nZpp94H9Rp4xXP4wK50PDwo6iSRFnjlt7vLQ+UGduLimBxpVcC/t8uw0eHxEX9U4/RMH90nvPwk82LLlGr4Xzyn81VfaPDX7drauuZ0e5aBFju/fMe/JHD6muppBQUVF5VFRRgFRCEJ9Q/FznO3UmH5/CfID5fpb0WZ+9YyKaCP67GWJWySVcKjWYeIao3o1KOy+1F2bCX7HG1wBJtd1sbibrPIwlNvoKt4w1z2WAvy/ln7Rn8yX8xIu9RLvkJm7qvMnhkMfFuCls3IUjk9o9urja2yLANivLgrsV6us+W815Z85egVk5VXmguauiidUp9rrZFVqgB0AM6qAp1WWmLaqE0m5rxn/BElAqC5peyKYgV8KSPlNl62rPD7Ma27YWx5z412eD0HovfOFQ0mQLOah9xYqCmBJPPLskpFUPP6HMNF5ZIepmJK7vGgrdnJmgRdKAoop3ec7/3XcJ9wfo76zajcHEbGx19wfofpdu+vLylrto7IKkSR13ZLJ3dwEp8B4rhwo/y6QwlocyTMyp60iIbSZbsvC3YasP+JAZtoJ+3wOvtyyOHyauFOrdQaok3zDq38c2J8XfTR63/QResfQXP1vT1pt/+L/4EpfvPY5mkCYX//Uq4AO+4+afOvZyrl7rar7s/ZGK3cQkOMRVKvSm1F3P29QazUU3az5fbQ+Hh58XDAQevBmQpFE6/ZCDYKO4bwgJVHRf060TiDUJILFXTDPNph75EM9KqkFA1qBK0BBdJv5i1SXQwWW+K+1Wo0tHCwTEhAMdq2oAWQsn2ST5Jt9kUv8ipRHXWOpdq+6cBjKLKSZ5tW9NAvGhFz5dNDRrwgMS2CiBClunSJt9AKkxp24A7Vpg+l5qX7zV9B/cZxUzQ6YVpzN37MGJtUp3uZDCco9VWIS3rOZmjXTS6BolFWhGn+/5tmlhu8ZeoS1UZq6umuNZlXqnH9OAj4O+zmQK8g/zciIfuAyU452+Fw1dKBvXwrNLAvancrvB6m57eGojw856AWvZqMhCX46kyu3bLIglnQ4/5VdKln4LV6F836RGDnl9l4Lb9bU9W26VR4PV2ITO0cGImLAcNb+C0EBF8ut1kUA9VsOW9qzKcpwZRSQBroYOu2osTbxBD//EAGNiJORQxt3q+nzW5dmUI6ds/A4yZNooBrXJkkEtq+VLp6iyrHr2aFCLF6AE6k0Ni4eb1XmpTaKSE8XDsF7uneE/j/v8/52rFEhUsxixvJuItUFBZEzBtypRwib0O3CLexxc0LOZmyoidRdDn+ZX6F/Uksef+F/iFJJtf0z/fP9Iapg9nz5Jefgm8nwJVePrwr0XjlcFeXXIPA0OIGuOCUClNH16Va9FDqPkb4+7zEenR48JqebgHMxosxORqW5/N/kHKc4shky3nyKjAIpEgtzLTYcz0SCjQYEZ7yzDur53/JcMUQUK+BGXVnpw+0nv5YZ8ZOs8slp86sBAIG3Xd620RgMJCAQh//c2mMh6Pkkv+Wd8bnYhSKyTGXgeilOYbLs1t6L6jztLLzwNW3U5PfRQ6+6Qr8N53i0G7kIB4jhC6SthDFchOoFZq0Wp49cyEUTjMCcz7FmDtiOGFmAHFA+JNlZ0fXqa7+DWnnjSse1KvTpMa594vwUB59xm/yW60Lxjj3y1f8w7VjjiDzG5dk1/mrUn3ofBPBe6OLJev6c4FkGJtZw4zEvZ4OO++3Y4NFuqroZupbnf7RU7ZM52cMsdVQKzofMHG0U5kNHh1U18QhisbNKeztVpxV1fDFfBnANtYeA/QLxzVFTVQhzbDW864/fcvX89iwo5dMtQ+QDsfF6LWJLMdX8utVYycgDSNBQz1fn1FHc50LZsLNC31OC0s4hGOL/TqJbDPIkAtQwKAIsJtp2PXCjRuEo1jGuKRJQ6mjqRqsCSeRTu750ayJdKLeB9Sj3I7dqEW94xZIxvqlWNtnEcec5Xvbsu97XwbKi0LepR1dcoz6RR3oOxtRJkRyrvItZEA4A4nfsNr31JuYOoDsMO112C/5F/S44/0iD+Fwi1K5ayThVeSFdmE0mUcunZYMuspACca3kw26HNJiQvtR6sUk0xsYsrb1Vw1l/0XPO8tNxpFKWlYD2I6ozjgkSHC9hXo/2nxTvKrsxb9fFuSNfrhSl7Wadz12/eWwnarkyntTyRNboEQEvdJyFZi6vBPnXR5ZTsw7ljP/30VPUMeBzCwXHdZfOiWtZieSNdqbhVTaRjhdRsmociEjnt62U+aCAcrb7qqldqikpVaqq1IFUxdal8wIi0kWJw2Nn7QCaXItwki0LkTW10n9A740VAYozS2sme8V9gmg5jctKfy8JXcoyVie2Bh5T4V/bN0HGjpIi7H2jWDnSyjhInRzcEC25Ema9KWE6rDobbKmILmY+2eg2VUtKk8zB4oPPQuPGujcDjqXp7T4Y3M91R3oAlx2oaBFBVpabSZiHkTJW2cDV9LUgx6k7KNYz/6E/EEVe2ILUyKhOJWh8CjVobcuuIWKyDV35tJlvN108v1zMeuuVA0lz2yiKtgc7rn37I2l7WTBQ+x5SwaM5Q1Ui1bqhsEonSFZLXUNifCL/Due/BOV9fBa3vTXGdktYsumW8DU/729BT3xGNWgl4Y/jESxbW5suSalwwWawIkgwbo/Gd6SIzxCB1mkAJ8pqm9dNIQ09QlSXpZ9vAfLRLDanu7pWvaGYAAHIEgJmGaZNYp7rv8nTGqQ7311ipNEwh+Nh8qprwVG14XnRUanIktrYCswcAVeAQTxERIUMcRZylFlyHuEwvo//ccEF9YFg52UAHa+XEB8d8YIz5GSdnwK4uavRj7Zo8PKlCkULskpEc4FJwAGHJdipy3qYg0ckN96YYYaKpWLFHUKqghz87eyyrpdbIajyoItdvBe681m2v/ANfd6KvppF47MLrwH6kbZsHfV8/2PA7Lle2PTyK7eVGHrPVHd6pWa2snVi/4WOLklqTuT2zbcpA1JfoJg6CZtGFFFeaZBkkXpA2g9AnNMVXCmDFQ9PJ5Hyf3klboUn4+tU4JstEkkx9N3teloZkWSS4X1E88YYHhkXSvwIhoj4io7LjURSFhk42E+tZHjxm5DTdZU9KE0hqGn2ZG3nK/MK/5iCAdDi/Pmrwl1SeiPoSEi6WupNirxFtqNkAwC5DOdST4B33iNrxEvWINDyPyE5SzWXVPhEuRq7fQxSlXXChSiUEDUWlXbRcPDok2IrhEbvGgw9SSZXjpeWWbGiHGIGTe21iimDy/TT7DZSDE9lWEXNSI2QqEKmHX5Q8j/3E8jl7DCAKRnHqJoASbRKeoZpu9SHlZCv10PYyfIwSR6BE1r2OBGJYQGFfFZTV/iTnV5rPQosiNOjppCy2ZfGZEcAdtQEGv6U7LffpO57zL32ieAueyEAthgFwbBJQFI6XwaDTomNXznEfW1LLlWelYYZE2chcKiKBEo4AZvF3M98/FE+MibrcMVlZs/C7x65BdL3Xunr2gTQJEOODSnDVAMCnIS7cJEySdGB51iEvXcLnBCSSIZqu0bOU6GTKNq6ZceWOF0UlJ6KxK1BFvABvVsV6SOQC74ceHf927x7xOqMdrYXm+r8jA/LAZ5GBWmqDAJhmU9SYTO2XcDtYRmr8VrIk6zDgTqrSiYmmvjwLyqFPOFcAyneampqi9hFwfsW5jrAnnE+kgsSXzJYojoOAWkGw+b53kcuVH+gMEQt7Y1zzIoMYPTUjeahO433KFImzk/fAs5rQKrRZMADYTiRj6rpl2OoLY7GIJzRyXdY8AUqac174nMAXhAoiv9jHIpYEAUJRyNDqVZSqpnXWEjZT0bsk9DVf+qIQKnzXxOZXOAXn61i0b4Nt7w0KQYJ0XO8TUTX3kRukVDV7HhCiHcwCFTXubT+FebUjtJod7C+C1QIKL71daaHKwJGrYSCoEGq8OhCuX2cAUcSnORVhfgE92BCVDLRPunWfrHQcEKtLZGxRM/z9ZBfK9Mw8YFpl2yOASqpjy9rmCeg4al4BUrbN9IaFnAwZUgNWpuAWWVLnXrumDNqKrOULCwQaE0NoZaQT8XFnEeO1T1BBa5WVePzEHAWg+IWCQhVlJGteIaB3nKOJRU/zVXb64Yy+aNTZ+XAZqMoXlTxNHrVaajiJDrYLNHG8arBw7zDwjT9h7P/qnYhrq/oCNgoq9ePcz/GEV6176ZL1qebqI2J6gAUZ70Guuh5rY8qWC6YkV1qb4tt/d0kneBFRWGevBdDmZzPmHH1ZXuA8S8nnHcbbPOrl3SXQzR3c901reUa+7DLyM0jgrMJ6l1Laz2tKFaAzObg8g21Q08hPdRLWcxWnFi1Oumwky0kge7zwfU+kJCmm2F1W6srYTYohxOfhCrXh2UMtsLOpP+SDnNlRzu3TVB8XSjiaxXJXFM3wJBXEeucqDqoe3PUKocpj1UyRtM7NPw/QHWecnfyQABi0UysLdOxEg2Uy6717V4WaGLkLrnlklAdRDYqz8NxmniUN/sR/5MPIJMkHdtV7nOiHJPdVrcP8jnyzrv3VRxMv/mr4iq2w9IpUgdtfkT6lv2JtWac2nJMTpV1cVSDJuFZmWSOCL7qswFJTJKl9M3CvT5MsSZvlsqhBVVe9DnhZg9nru5JIp9VTA9Lw0Dot6YrsB5qGWAtN3kctZzKe7DZJKPsBNisjNxTgx7NdNgTMEu/URHn0GW4/ncjBFp+Wmk+G9jSssAHVgAoZKauqX7y44gBnWfdK0ijFwXGhHl9msExUfmDj212eRGWCbN+OC+TWhskpah1JqV2cUnbHoS/eUednsYM3zERT5GIc1sknV2Z4pvvST/EzwXFd17rz5VCoXBPBMvbC20lYrR0TfSawprXuwOOTI1YwqR5A0AkhIKmjBRuaQKptf7SGEPdun881AV6qrjRVVMlIp+WAy0HBeImESBbQifuUDZH2QRwdVC0aeTawADiVcqZe365p4NCU8SzXSvRphi0kJ4hIDGCvneYMEpXmxmJ7GadaczupdKkUlsBctngpA3PAggiiC8GcOQOQXJWDle27Uo3b7gOE0JeF15KPSGuLw3YzOyl5003J3tCMe3mKyxa/lBMpweyOZgG7ny4VtKrPoH0D1C4HUX3S46FvuWJtfQNPyBXYRlFc8ENQ/j/evui/rql3vhjYfcF+sYcfl/6oxHwRpasUqmiEC2lUBXjTQr54y6muPpp+LVLySPb4StYUAvAoSeoWvEldalskLukImgDW5E0N/9w7y1epH82pJES1dQ0CavffuPj+s1suntDTzhNRsgVUVLMiUmXel9/tY0ZLfOMhlle+ntesZWzreLlD6kzOXONbHYr3NF0uV4ath8smrrHthnN/qW6BPtFJTyJdUtYSpRCjUs6nxircZZhvZeFZvsxDOWLAZacA0Mle0KI4X4a5GMRANky26lYRTljVu1af7HHhg7OkPcWLeqGeL5LL0x1nyyhgBoasPe+hlCPBt7PHEx+sJ0MXrb0hX4sXhzd5zEyytl/4lQfMrFsPmwpt4LwwgTtjxGC0b3aZSM/lQlZBLGe8n8uNwrneTzfs0gybUf4qDlZiSlyw4o/EvbG4ksidXXwtqr5CQSt77oeZeAmlH/ywAb5fDTJcln2EP3lhYYVnjps08iRWkcRAASEVEkY4rhfKVZQdTGqJXHl3V41t7o0msNo7V01L34SVndgHqHkp5jHUVQM08igQgVSM2kq+06rG75JUZE7sUkZo/8XMC68QpFMX1ZkMsH39cqkkNoxhEpTodGiWpTDoVjbBUIWZ9gpv8A5sduD1zr/+6FFJvdKQC3mlrF+/WD4SxwEbl3I82+FnZxv12tztMqFUuD5sxGXzBtrYicUL+GiE/gULNIBbYsYvv4tJoahbtbFxE2RYsqrSAvDc6poIaAAkvaaV6ryKjSrqY+s88WFpHFcIa4BSPhyiXd57cDV6cnd9fWxN4rUPrZWs+8FWJlbLnPFy9BqaTLomqIOfygqkJafehzW8byxMd9mE7Gu1BPsHgVfW9iFUwvB/3x2l2U0c3yiKNokSZIfPy9cv6TYeEEg/JP8OgJyu/UNWX9nRQWzLs2wI8RkPpZxqI0YaBJO2+unj30tgMxSdsIpkHF8AOAFcTPQfAfc+z9M63Ibxri7lgezI28eyujLesh25Cpexzs0f4PGYvN0Nz2ZwKWJ8Gw+jyOp6edVPc/LG2k3+4W4U7vlbqaCeymguaHqFUsCS6I1Y8sTeyTIPCYDVibRrVvkwOtSo9+Wh5HSnkZBVzi6HhxI4gvO/gTXXl0B2w5OcwqeRNYYY0r7isytrQoLiFGdgb/6bkZVPlcXnmReOOEyRsEwXyIXoacZj3SuUyNgT586yrlmUPksjNiXi8Iu3Hb2kBLDQ6v+jEcunKQpXv3pKEU5qinfPxb/50LFWTSHG8oN4fP8skik6NQ7l7uUO3e/oZUh89o7Wx+LIZz9IO2uUKDARcm9Qr+xrTHTFqEpqWKK3ZsND1NJSJApzHhXP1qAxgICoSJEUm4VA+dYkkk6Oz6QRTAALTjFwCjBjCUwNwKQPN01UtdpPmtfkuHbO5GWfJXKtSF6qHTDgSQlkChGWWcj55KptJqKLALjgC/rSaQMVecxw6RdlsBVig8nC4df0QwL2z/jznDKpK0fdLfpaRqhDX6OQM0nEjYtu7B8yXzBodEWsFohZ9A0OhRXWj1lqonMhjLfI2k/xkLPjJJTXStdpdMmafWBVrsDazH5btXZ4UZOwZDf6XAw+eX89eBO2t4HrOvLIdC4ZEd/uUY/zamQqTWxrfL8kHO9wjZE17kcCsdS/6p/+XzY0VjgrKEUD+c9kvWQooygf4qOg2IakKOpp9+1eNgBrxv7++sPkPyChIryy7/GN2Jli5/cn5fucCKJnzaPGldsrFe2D6mw21n7pX64qSAI92vlTgqPdr1e2Xjc9e+ldVaurcRwuH1d9niHu+BL2TvlJmtjvWAsEIZH5ahqjKzxQnfxOoo2sVmmqYyEZWBBdNEv9GR2kft6sa/J8Lms/RDBcUAVPQc2o9lKOqHhKoq03j0SzeNf1+kpei+vxSS02569TxQBwsOSOBQlUYkqYO/wPgO2Sx9aowcK4jYKRuU4Z8HbWDqKqahnoe4SWrDezFYRsCJHDlaDXl3RpuTSx5ksdowGyrpxz9phEyRXbkAhcxRkVNvAJZRwQr+onhZHn9Pup+jmIZhYAehyrWZF5dlXyQ1m5LdMCLlTv6Yk8MVaHnsVFmfSJOnZ5YAAPNAcf8bClrcHnNDSto9x1S+8KXydxGTVpUzy+/5Zr117j9TTE8sbz5flyuXz9AtCA8Ev0EsnrrexlBjM1P+yPQBlVfIPNreuGAi15nKwbdJt9EI/vmaRz+0E8Ht3AlY2w3WtwlyF2fBmAIZgNyTHddpRJ8uRp3WAYU+bQ3x7Jo9gDfIXnl3pHrv2Nalf6GSI323Tl+9DPk345UvFZz1cdKnGLOYy3N7t5B10VjNapwZnP7yVZyafl60cPU9nCRp3XFdytH63Vq3W68DEH4Ow8ZSILSbUQLsKlHeT5aBI9iqAL5u7TvO963E7FPn0tRrQkuQOQ7U0Pde1/Lf/DwuYPN/+80b43/v9INnmdEhwKb1XVKSI4lNqaEBzUTZ7VaU2v/O8J3xts631e+MuBuhVeXBlXOTK6hENVGtvYylDMBdGV+v0EPd6qGG9H5DStazV7jK3LwspWtvCqmKrcRcOFQ27AvwJtgNPHD8++PbQPLVi8vyb/5pqdO/MfsAGjQCl1XIBV96EGfhk8rYAmb73PDv/D/xVlFvCvV397b/KTKyUVygquzRRBXrIbMtXg5yrGa4kTXJaBOmSmTwpIlMxk4mVWewu5TMUXuZeFzPbgP8XD77U5e5v8iPhqQaxaWbcW+VkOJtajHxZLOMdtXTYlXKfKDGGGzyZ0MTYs19jAk3bT+Bzp0FPpI+3Dh3AGUUsjRBOgSAERMGU7zaoO9yG/p/iRArv2QT+mndnWZ9JfwLJulzfb8QKfyY7edy4bfqUDf/7U4ftfU17AH0REqKXD9Xg5rQ+2X1PuYn99zW3eBniBUK8QnQv2JEDSKGNk1AJkS/whHgEupLvae8B3oi5xkTn7UPnmeWhaRZUhJKxTptZWNcg8+5Qn9ilnQfVltt2Z+o4IBixyvnbEtnbcngxCa7pdy0pKb2vstbUzuPteIFdkIXi8CfMr73qIOReJ7MKmFOT0ZbMq5TKTkwEq+QFGMsSHSXFelpXYmrdaVDaEz8O2XCsXIrb98tK3USCVnpvZleojqMplbxVFjYReVngkD5DIiY3WkizZhDFUhZyVBVeblzbYxRIyz35wyzQTlCbgNu3Lj4Letxa9oeGy79o+ysb54o3mKCWBZT9KRZbNTXJo/PrL1lcE+2SSCnuPbYQUo6hRGzHIQHwyEwCtJY/tvQB+5g3GPmjiNmTcts1oODJtxWiWjrI42o6RNIIFpRJ5GPvCEanXAaqdePN4GCHbYhSlSOzP3mn0KB3lpjQM6JCkA+tPQ5xr4poh247h+DzrufJsGetztbFcwazBOaWZVHpJmuxqZVuXIxFzkcY861DQmGwA2DvlRzCNEYFZygAJnscVMXVk8rrL9OIwREq5vytfQXGzXhf1yGl4Ntv+gUtfz5MPNCad7+QTa8LQDDp9uBv0mUAHZPKyslhXrV7myA1pZONITLiwwQ9MowlDUhsfAo0hcFQqxe7ZNc5b667DV97Sf2/gp8Xyq7bwIrhorA5QaruAshf1BG7U38Qv4se9clT2esD7tUltlCa0zfPMkNFclmpbNZZLgZQXhm0mZ7V7+5Vy2XM/TpAniElFbYx5EicFvMSTbYhCSm0oHv1Nm33tF8ywLkhiqOGsJevK+EV4qarn5Nu8UsOD5LdFdVgpEa4K7PXj85rTTfNQ5C4WMLZprM+0vlxTn347TYirvzf92whTLx7n2QfoyTLVo1429/U2DGBaEUyu41VPYRd7hHMVg7HGhDCkIpnH9jk7Bn1pdEAS8IKHFXGOa/gD5vdjJIrf6/WuRzfWQxLDsabIsTh452xxIYuwwNmxiSaJWLXmfpt7EhXxAwtiFGGkdUecrXjl752RbeSSeyFklDXYWLZP47vOwQI/U57xLViu4EQkkt+r67pZRLC2qJKgiHbaflPNW85ukhu+sCcma/9t+BT9b+JeaOHB6mi3MMMY6Cm6yla+cpHMzrWpvThe9tnYPkaJQcQ0cYswBHDJ4eNDGJKCsFKs9cYQz62LAPP33BtzAhFqR7tWCHUio3Ee1ehJoRJ4ijcpVWNlmGDj61mTtzKPtQS3OW2VyuYxjJRspkjVB4G3AH4Xys5fYrQKs/2gg/dKI6Vrm9NzMTa8agUTp0ILYylxvmVuu2YvQvR30W7nZzMdAa/DU+CBQYen4vMujcoQTyZxrkTtc98dbfpzX/966DPwz7199cbmMnrnEG/pO18fV5jMmEn1juMEP+OdGJhzQgE/kmIO1WmghLXuZOd+OdLYaQ6V4+Di5D0vvtWAi2mJoRfxmZiZsozrOs6UqH3OO1qv0KjJ49e+Fvz0y4tIDvHGfXzruGGn16K6lPG8nqtnsw35dHleQ5AIhjjzYUov8FgkNrIgeM8x4TAOXa5bY5aBNmbO8yr4Qs2X0HkqCrs/F0u+8v3M9ZlLFlog7pKlXlm7CrQ/wON7G8jXhWkIFOwdBPn3nwubZKyHlXdB0hXqBeOuAmQW7mIEmWXcenDmho/Ah7GGXv8gTQwj9GvAN3297c1FvlTBB4ItqWNZ94N37sUrlMmprIFXBC8kqHVyU7pm0+E0wrH0W44ApSwv6QL1iMxFV8QKwa2VQYMRMVcn/PsebnI4wD2DRg7fXZNjKZVCLK+7s6ogDA5/j42O7Mz6XmDCNgvU3OZWhLuvV8PNKoKfZUTtCGmsiOLN48XVgZ5tF1FZyweyIjeL2Xw+XV5O9J2yWxUJ6LzjdblaLts0UqRHHlHzMC1a3ulY7vCSoA2HoZ29/s3dA5+WgjSHHUyEbDO+/Sd6VU3+09AD1xWv6IVJJi/i1PyquZlHRSWfkyW5mZ9PZ7PF+WSyzL0w76pYLhaP0xB4ApIBdup6zIcbbwwi5CzAXjvQPSwTTVStvvyHXRUlWGOakjF8ZtihGivQyLreuQHdH/rABtApmWlug+h13uEDnNvMEG2wlf+9/jv6G+z9bIxK/IoX3wSVrqpMVrhnJTnt/KonY3vmiFsAqomySq8oPUsGyZIEGP/vbkTW24J893vK6T7hzW/+mVe8z36i0uyiSz4fF/vl5MEYjgf9/uuy7/ge8fr03u3Z6c353J2ViyORuCol5VkVYXVI00xRhQHukuGdIg63u+PkMOfEHY3/4d/MZlC+/ga5H5TvsQoS/B1+Ppztre/Bj1jeseWeSWjCmu2KjskroADgudGtlrMXe/Q2ANBpD+nWio72LFMGysSZXaUh3/Lo1Z600w01Js8nZT9jmoJRJW2FXxnqoRwPX/QkRqzYUuMKyMYYgdeRCpwqhpgqWUayoko2l73RBWd8yKmCAxytE20eYyYyoUsdKV0YrLNRlzBSaWwuGa1o5G3+FNUbLCFS3BwLtCFGUSrDh9Av316J4nZkBz3A8XOUQkq8bfVjTUqEGNOQdkuBtyN5vVMNL8vyKTX6gNjDDRC63MTxf3n+aph9tKgOQ+8Lh49tciaZKqFVrvJCrtlkhO6w/wIU1BSDpeUvoDrHvPCuQNwbQqkZ5FH3T+5u8t95Sv3wA5oFyZl+uF31w4/Pt9k//Ix5w1l2fPf2278w/eT4FrxFDh8o+wHgGD98QDLjCxeH7hZfP//JB0T7OAof2KA/ZXv3UdUj5gNeTYJcNl0fyTIH6zDI/WtFqbu7cQ1XV56zbn8A4j73N9e13xDhHKd5nMc1d9SdfEwSwRReBYs3Ta1sMcEN9WyKTM3pMqkKoLZ2a9dqj3q0UleqDYxNXWv3E3vtF6/d+6bhXP/UvdikzcFdhu2QaYgzeSDin5kX8l8ktcFX7aEFoZJ9mNQEgavWpwRhnkiuwyaEOSR8TsT0s0aJEapEBoGSAup6NEu7FjAbiSqQmDFeXncjcrxBlNDBCl4YIFa6ELZqC4GFJFyU1krBrI0rXxVDVy4kV2/kTXPs8T8iIhStDkRKG02n4WyxnmI1meh5nesRNIijA+moQVlJ148MknKuEESMnnPghNGj8d7mLqSPYs6I2272H80V1rWM0A5NynN7aVUvm0lPxrnE0Dch3bR2hS/L4n+pwj3PIV6e75KbJV0BRtmEwdq/CVLVelmaOTyb3lzpEv+Vg7/SyZHu0m1XnFVpWs1haDreth2cuBeUh7DfCx8ElLWqZdBuhq096u6s2mz+8+0mlnU+95byspe8DCMxLLcqb9k2WYlVXQyo+icR1ueiix4xIIZEVgOrvpb1yUZXRdSjXun11iWIBxqxKI51BLBMLVcnkI9WHtv7FkMcLWyKENEhc00isV+20fNH1ygDtZoC1BBEnWuIYI3vIwTQYp8gnbS3y9oO0jvQz/a05hBTVbThupyT6yWXMe9sngylInd8KZNvhhKX8FQQNE8O7UPjBFhuZrBzlBfXeERtVbkfDJoQ3qmeMr9zgUj1JUccudnxwnEogMejpcTTO6KuCR4W1n0FmksUrWilzSemH2M2yVHE/EfAbs7aMhMUrfUx0Q+bEPe3r8mYysWQDQqmaWMvPcHdao8ubfgwpeCltMGdUNaHbaYba1+66fO+bFt93yXc77rbPf60H8B7+JXdg3F6fJP9dPJZP28OGR2NW45QLSGYZSz0kQugDDTCsHL2577hTdXm8/qD33LeeoU+GW8q/Mnwi9pT5Y/xz3LKXsrX+I/Lz5DHNiXF0EKCOuZcKzuuCf6vpVnbf6kV/5xw9ChVFmk+9jpJPFOghWpa8P6KMBoTM1B1LbTw7yd8EWecGUcyw2qucvwfS+v8ud9MAcBlTx7ZSGtZFh6Gefrpm87rjQPstFnuU0B1m8Ky/yHwqPc/jIm9FDxXCQ4rca+VsOQP8OEDosKjlJVNfFSMQiUDbz/AR7Ksv/7FFkO43Jyp/P3azS4QXk7iidNzpdwRLe9Vwxi2Qi9OsButru2R0po6UtMhGsQAvtHg32CuaHGVd7o4pU83Z+K9IjzXIwKZI6R2+Ly5rvk5Xca4BDe9nrLIIUNAeHPFzcSGI6EtwOR6R6sPXcH2P8SL95RfU9m6Fox8tid9E5qWZMS9MtfjYJ2Nl/1kXHROSdW5fmi+VRbwR6Ky8LBeL/HZlfL8eI9m99++AvAK9sBw0NvbalhVt5SKT44tKmO/RAe5EH1KLRIvOXnRmgB8USucgz0DcxRg3y1ib2AjOM7b6fna7wmy5ul2unnPeeXC7P0KpI6NrNU9fX46lJOxYWEaQzGzNtnnNtE2pwDQh+gGpQ96p6i04Mr6MMXrolz/0M+IUiobFmQxER8sd6SMnX5pVrGSxNRGj6PoGYqZjsdC86CaoFl8wqig0ztIQ+inFPgBFhGSCCXYJLGsUk9yhIs01/FElzLWHhWTWvmJPMlZ2yidaXtaHUBT7EdVo+gSNqMZC8oqB7FR56032viw7m/3hDLGw7FU9x8u+A32OCG9h/+GMM5gSpUbDfFkzpBGg+S8Zy4aY2k/Z5xeA9t4iHGqwfTvjanZmmn7W9nQmIiCPIHdmnXx2DYjCZwTz5c9nyLuA4oiku+A/3g7DilJwbOlj4DJ1mYA+y/EO3OxjuMknwjsxdoF1bNGCdhtzfocAtKESXbmQtkGvNJgh53e8SjBmdW/UPlH3WRndojI3DHbO6U4csYZ1HRQ9MoRJ0BkwFpNWzI79NPM9+kMPBGYUVleXkWtnpd2zO/ksdpQxkalWnJARu/MRhIMYcOzGiPkZv5gRC610OA6RJKkQNjajCTVRfB0yzQNJZkwPNZFLnDdIvTUAWRElS5q7rCftanTsTO+ZNW62660M755yXjbgdXILjPDEdaJgI1TwytWAVLjlxONpM92NkPKy8N4g5phcEFHamdVK2JmMKPSJpEHFo/5PRU0VLbI5TCO2NcwT0ZaR73pcS9zmiwfuKg6txxjK5bRNDSC8s/B9SJ1LxggW+k50i4kDa0WRU5zezlMcjsbjEnsPrVEkold5eZsO3I2n/isgvE0RyqFteh85VSsOijiom/PVmRyjR6TaXBv83iy8TCDy9Qqpt2MLP/jnaSaWZ3wTaWaQnDfzIZ9veD2gEo+SnuYNGZVk4FSmMM380cjPTG6DkkrSF3DvLsSu+k1umdNLiycYo1QQF1fx0bBYZwmsRfzDCRdG1nYYP6uCmX7SvzYbelLUK2KxJhbrR+peGG0EvZQLK2xQD83Ga+8oyVF10eZGR9Mlok1r7R4amazbp1IqqEQVVMMi9190lfSJExnqWLhhQX5Z6/tYjJHnUaNEUuSP5MVel8KDWPfZq4cJ8aJOAaYL16Qg2nWFaAsil7+Lj5JqlYtEqebNoFHoAhs3o+TtFKNjxhb62btvOAluB8q8/6hK5jmIgLioOx1vbQ444C/3D3uqB3YBB7oS3Hy6mywepOHF1pEn2IxawxjpZnjKsnv/TUhJIylicz4RaUydqAXYWlD0RRkstQPbs4pkBVHC3y8sQs5kH35RACqEmPm/ferbL/fqchoxrOBOR696/IXP/KjBYro08wI1mpd2kL/aqlW+D8jEYi4QI9kzz2zYLNZLYZytLLkF8KlVBqBkkH521Ece1HHaTnjlSsdf/QHfxsvv2sF1Xm1CQtaU7qtMEde5E6FBK4BFWwhgSDp2kxurtijGgnUXl9o8t4zJ/IOzMq4zvzl0laap8vOeA37uRhPTddxHQHm5yqiMn1+/pFNYOMIRR8XpYZba7nvHgXdKgwRxOjkqNrqLkjhP/AWNCyr04nNhrgTGJ4SzJT8URsjsiy4+1yHDjc+07L1WYcIN008UdpnYWFeUSvO84A8l4+ZrvusFQd047vvsQYa45cHKhAYsfhuJ/E+xsBdv1ivhiVxlKB1czpClN4brxfbEHX3OZE9s2qdSwNEngWSUc3z+TFzxRprvffLXjMpXeIsxFWxfS63k+nAD8bnsnTugXgPmy2/qOLJPuAZMDwHjrW8MmlnrFWvTc74WJpCfpfqNy+0wq5rO8pzHSTPQjl3A94CwxrUJrMFYhWhQrWoeTIznslG5n1sh8lrQGHXMnI+NHJF7GV1yfi0J/s1q7Gyz4KVHkgIMtX4SnIkXUSAd0zP48hTeU+iaTuug+NZGDhP8lfmC2ZdBRV7wg9YJG2Q9Zq7RDOK/nMAvoo6TUwERcp5kGcUofGRD//atnSP6ZjKPpM1kP+emeYeUef8aE3fbHbbpmKWTI0Vg3BDNyH8rI8oCCq2MOC+pV9o4XkWNM+A4rlcKslUXp1rvwj5gSpQqUZxU18j6huuTLE1Zzx/uIYQpYsz1tJG1BuAFAOGEA6GMk0w5radEzXH0ROX5vh9ngHGc/gEB50jEPPHBBhDRnAiNZIYWxRoxFU/cuPQEyILsq3R+RHGIMPKtp7oRAPPgOU5bGapcF1a2yAEVdbWxIrCFGkejEORkHNdOca0Bzhy12QX7EhkYtwSeUn61TpVRYERYreq5w8IkGEA6KZgJel7eDDnZ2gy/8wko8yexBV8FwuN4YRVKi0/HNYXM8zWlBvHBAioyZRzMLPjR16wxdjrXDhLlJeU9SGbEbZrSUG7zNBtbdIXHJNPKs/OCimwA3KLie4mU/EQQLEJCwq9PezramRDysmYNSPymVTwrBvNQmzBbsO0va1+wgEWsOBPsvKeYxNqUht9JpIkOhCd9tCx+oR3TDvhwu3qh6KY3OptVdmx3L4v8J7r7kYAZO6v4dSLi6/UpPO2PCOAwQKooltNlpXatTHpO/z2vvEpXwYMKhKP2P+Yv/tgcJFaZU5NPkyegh5HsSA+S1LPCDtzLSJPPXDqqsONQmnVE0v0jIjelfieq8DsJoZksuxkWpoTAMaMVJwLmYZY9hp+K5iQel8VjJEBF9aBhHEONHpgHH9k971z8debvKI0AnZDQnazfFJro3NnWfIiaWveI0BERZCCiHFdAT6UVVcswKUB5tlOmVZpjhlvp/PdcPJCcFotd2KzbNzhFMUKA0IjgSEEcoAmN4l5QzWd3CwuD3W40vma4S9Tl4tIKyQSjoQwERFwUGnkghmZCSQpWNikGue8r85wHEOFb/uJC3buDpL3EgjInHnc7fe4DI+y65S7gA51huWWdI8CxokEu0AP8l3gXkLBfkSmH1EahW3cT/gHMqb4L//UcL3z9P1HMmky8M9Tb46cLfe9yGZc6SolgcL5sUwf8ycbDPuaIB9v6iogMsk21JN2ajE0aqnSY/hhK2QCHsW44oEKjYyl4DOmr/AsUGWSI55MA48BiPgVz3vGXucNopN8xjVsClLOxepOypQAwe248DXCuB9Bj8nPYP3S1+MOYHNpLClGSjvxxfgdYaI2P6U5v5MIHcYjl4oIGQkntCNK/+d2SL7zC1LCTAy5QRWq6uwK3Bbud+XGyzA7p9ZNt/wBV6FnbJD1rHvAGFTtfsbVwfopJwwVv+Nchoy9vUCKOtc90ToF0weWOMeTU0OWGbWgGRfQcsIAipaKBesmUy704eZEFMtEXX/kVrWYYq0hj+fTshnsDJ8pt9D0J9mJsQY+TMEO4rwuIkpmajiqcj3MbDJSMkKuMhoUhxXT1ACG/xgDmOJggrN7PXdPcQwe5yg43kEfyCXrHGWu7DNKw7wctEB5iChomLnxeXJ3iP98txlh7ZVBDohzKZDelnfL0LNGLBTZl8r4jqvYQLfMlwTQX0KCnzgapAnSeZeRGI58mFUDf1M/yoX3mxoDsQrCqBxEy+hkkRurXEYApWGsj3A1zceYNNF49W9vCZYkiWcq9yvMCPDiYhQSFTlze6/30ufdxi3zQJgAwAkcOleOgi5OJYcawcHvzM9bNrSJX35mz5R1EPfChuSirLHfKa1LDzPhHx1Oh082cPDLMYmCMEWWhsdFyUOCa6waLZFxxUoH8K8Ty+lkjVi1hmnDxSsDFHNMWIQ8gTBQvqyIBnxkjEPUG5KnxNFzwozMngyrBwiLKJmrUducUCEmL7PHM4y5r+JKIhGIAkvrNvgFogAO/i8Mzzvc3zAOo1w8IiWECkwOmXyD5kKxlS4I8CLBs9jGlf9mYiON1qFZaFIPCsAxOXK6vIYxvOjpoFnkMCL9HMwOJM1P/QLi5kM4xZ5VveAAv0mcS68JwbORnPYNTgaVKo6nXXxYUrwn5MnKLMAocpyfRd7GMi4xUQBG22I6+20uubxbir8eww5m+hHBZ9iLsQvGjOiEfa3vY/yGc4PHaSna+8919wkAfj57XJngPEPbUkYg9oFn84bP/GSJnqdif5+PwHncNDkak+50hSotf9RYuDcNN6P1zww2jHR4/SchS3seTgqkyGRS4QEXVypSE2Rzl9x5ljrCzXAtoCqPyCObic3+vuqjAn6witYZE4JaXgK4wLlMwACYxnre4EENl5ZiLASJcUgvyRPY6R4/O2RgOeOvncLrVHgnqaE9adiM0qqGHjeCrXrC8wz0tlnJUQdcBhUcAh6vR5jh8wlHJxo3XAqE2cO1EttSv/gs2lStRFUq3XkSlDO76pzGUTxhCzLOso8Mpj92HebBUMce98EAH5bm1XgRrtjYkrJBKg4rtt4cUhFP02Oe5TIB/K6hJwHifg75BF/R7kXXElQlp6I4CPb2bQoZY/4ozAQkGmUSnMNcSAoV5Y0xjfHjWXDnROSNBU/SkaHoXA5FwSGACVCeIeRWViUmGOIEx63VSSh7lLaDjQnfYPbhYGBKXouTC7BxHqaLL5HiwpbMU9IBWAuS5pxWcr1vgXKVFXX+EGwKhAJkIPAbzsz1c+gfFkC50WkF9o4bwXJueH6/A6NdemYwHz/LYMHRyB4Fxgs7i6birClumt6FCHyUmLYQOsQAWsVR6VqNHzUg+MhU+mN4Jjzhc2TkeEH2aKGJyhYGwoEI09WEDtRI/XkCHUZjIi3ELA8ZPN2SGvAy5oc9kZ4aPD9aoCfeR+15RMmLQXO8bPWbYt6txx4cAcaLJcCMonKMH+tmVdMJF+VxADDPcfV63PUGExHIbiLAeTMPGc4VwWUVUAnRAlA7IbM6DqXAi4RSQvyIzMsoxVjojx3thU/KUurMABwwmzcsgtjrCcUMCHBnBYDVnAHzJ3W/fx8v29F+dFaVRAZMNbevXe8Flw5cYqOwxcV3531SbOxwztH2D/9KAYNv7p+DY/HKnSmkphxMf8yf+kHvpNRU5AIoCQI4HyUYX9c2NzZUtZsUlfMmB3QGc6CgOElQXH5Gk9FqnuSCodMinbyy8sspTR5UG4KbGwInrhFYDvfLaX7PeNP0IIre2dV6mZMfsyXCA8WBNivKpp1y9HRgfN6PI+W11c6jmx+24QOOvkmCPW4WdMd3sWyj6Tn4vq2uWGjKhFyNvaDCqAiIWejCg8tyATKuFe3UpjG0mAuXNEXgm2CYEmyESiyT11hCPSP83pmXnIHnplp4Mi+Rl5YucZhUHQ0ik9lDt9v+icbdViMES+EnFM9ZBI2zM1M4yK2HsDdWyzCyS2c/O/aPlqYrTfFzU4AYyAGRfRsfvYrykCf0QwsKhBuLLHp1TMc7sn9HMqR++nHf2grbB1LxsWbmX1Jixli30haBq/uFHOeNvk3b2XVYnmK0X0w+1HphAk82shqAL/1hr+n1fBKNSejRcejaAz26ybxR88SV7kEo0zryaj/EM0ylNF/RGUpWCAFsK6TFPvIXClw5kZ7YTqk5gACv5Ju6stwnt7r3Am8+YlCrYCqy+Vt7J5JszXVIhYSlB15EdfEP9aKSvYrEXo0nZkEkBY2B1XursD7wP9/1T1fL1Ym8BWPkwbFXNULiCRA9LJnw7EYJj9fNzHjIQs0IVAEAAj8gT3xYoHRTAvrgLDbrWoJbGDZPqWLu2+0CdDHunSgrqlR/0MLcz6uJQixR00QFBAxKiQSwecjfc3VsfoJHLpMhKmtXpMIw3EV6L6tinvpKrLtLOJt6kw4OsSZ36hk2NozsHx9Rz0yWVbK9a8GdcJGnvOR0LP3cPG0CFOKY+jaU+ZyvQ2hAMoTAfdZYreB8E9y0MtPhvbn+/AbwkPveOxZTqlHe1rihsQ1WNXmNaKRatp+bqBcnDniOfYU5MnlGiH26uxyxkJpiGFxAfoA/LFxJrev8X7rKmW+cy3LGyKGbfg3pRq+24zKUsX0gbcT0u5Z4phDuZu72ygBxpXnRzOS3zleq2MgidrG1Q/KXog48FJmt9CQMlrFWPecrRg6LeDz28Zd+TMFdEI9GJ8pKx4eD/OWXCBlxkQ5y41LV9k+HxlesnrhsC469UPgf8XI3WinPKRT3YBjf4Zty+LrdJgOe5zj15n4EyPZEAas0JxJj8ryhUzIsHVS0zNIwKq1m9mDoxWXoa732WJCvBEibu4BatZQshJJxw7uIE/UF+X0h+foy+OC8r6QCVqSlIUzlQDjDMOitQ8ou0BDCqB5xnLlx/K5fjLwh1aBFK1B3tgua4wUP0gH8KxR8CXQf8vdZX5ePa7QA+c03MMgMHtJvSXJFYyRx/n66EwAFE9YGAfncT8PPjVaNFPUh8tQkxJy+hVA4VxRlZqaiEVoUu8my5jgDzQGesxdZC0MIJUw/m7/NXEIBtVMniPeeBVZEwo1+kDf1ojtbJtEc3MNSPehVHdIyK7ikPVzOhsq2bdSDtyYHBIhkyBBsO7KKJ1wfVYTSrN1o7d2QmLtpc/miJ+bgZ9z04FfcgkLiljU2E+rcg8iLDnyUN/upur+hmv1Fg8PQlhM9zcgXDKmunKN5wVnhrXnmCnXpUzXBDQtk2wfr5+sgg4j/ky85pnomYr2DcIUaMMhDNdCULvMNzsUOAwpHLiV0LxGznTD4AsuZ1ZdI4DKjrjooO69IybyLIXe9ISe2H3WqYJpYp0Vym3h7wcK7Gxe7Ad4WohILKuayLtDHhKRMOFAIIOfgGrC9F9i2oA0sHkgSw27b08GMwZaz+bAqLe5mwibYCeDvxrTqjryh8FELQKhvBM0NyGyQRT4Bz4fPABtB3H3hgjmFFjlkc3Y0oUcaD5LcExmWd/dd7yv4aCGLwMXxXjRvWY2Yiu24h6B7hWA1Uwz3eLZecVU7PBBDV3XU63C/NG89B3w44176On1cwQCQkshl3vDQ57Vg+ThJwS7J6Z0i+AQbOKAf8k5Fe8GLn2kMeE0Cj8DuuKo3M/5LvBS2KtcaiJFGNvz0vu7QPbmOHqsPzHhuxGhb9pJJTP2hehMGL3ET+XgitWTGYlQMeK3AgMEdIiX//eU5u33LLLeXLQ4Mnq6fbPGTrGjPmly2NgZxG54kZ4Zw7wUerD8M2ttRatvxsORMQ50KlVDah7kcLxuxqHl9qV0sJESSM6ZyEjrmgJsmUaMUMHqHYBi5xL1/JYOuGeXksmiJMpEEWlGNnlyVTfbi/vKJHAltUYHbl+GWgnHMxFigbj9GILKOE2/XK9+FBZPrZZsPsmA241VAGh8rtvMuDOyRzWczMRVaxjw3B0BkTJ5+YroyEmBF103IaH6tdgcXphIhl+w3w0wUUNcjU8IRnF/AG8SISbpCYrz6lEGdXwh7hpTnjYclsrQjayz3za8cOnN9AIx4pInuheTU/ZDWW0EMC5Jf+97fx7VgFflIOUPlAAolTaDohpUqQdxZDQN+maDyZtHuvWfR0tEKkskG4iJXrt7GFczAZk6eUljYajXjfvRGWH6/j79DMqQ04wC/oEIHZ2W9iXQOj4d4PfUcG8Ef50jCkh7DeYQ2dGofDtmodJ9I6Vrx3O95F848PRINJuXReQJuYmgYaeskyaYBxz1qaXK1tyhXq+13oyMTyRIOODcYBs5FG7jDRBjgE3gy3jVz5TAjYSNfBu2QqU5JokdnA4ufE7jg7CImFQEZ8/tPeiBRGV6JpxySW9iDW+2PpHiEewEsoosd750IiWPt/HHq6m5JVjaTSnAboe6bS/HUy49sdAz4wl1BFiKwup111gyNCcyOLeoAA6wox9ccfCMaonNpa0GL0u3NzC5tseQ3tJAvb/9FcB8WqlgzB8Y6P+ReWHOFTf8E1/H9awU3iCSJJ87lPpQYwv0eFhnoAhd2Qv6uYZn2+ix2FLlyqD3P4/uDLxaAEbLmVxZhBt5GX6PX3TKTdHOXjxkL1PcS/dWEMox/OkrSTQKoc+rW0hzFinBEFhUz9Py6lkufykIYDBukzaIQvgXLFpPazMAcPkw4FfZ4rdMazJtc3VktHkTBFb3N3zZ3UZ8BIxqMM0bWNrGCyAJ4EED78EtFS6pXrHgjBUBVmZN//AK33MLb0eluxAUVbIdknqfZlRnaqpZUbUqPW7AkZVvLoIIsFjMTTSpf/gibwdF0pRAYXm8cxgSMZFZPkeHyjANMMkGKMuT8DhptmtPtlMF1YkwovN1o7fHB7QiDdoNg6M0zoiSMMel4RAiH1ukQJg2g8f6g37Jci2hDXCtdsdLZKGLPahlYwja1fHFp0n0eBZsjEmmjzulhq5hvCJzDsmp0xA5eItv3ZjObbB26hDyiNOyOtvnlG0CTxelhUipV3RnIDVN+D86PSfHdBBIAMEgkoiMq8X4osCF/Aq87naXA0TD84NWosHtwYUw6q9WoWCErioVmSs42IoZQy90RO2GbPeQlvadJWTfnWd1MZGAJm98bA9yeWlVviZtaD/sQfsWR471CoQP6Ls9h+M9K1cT6P4VLRd1LdgE/IK0zQ6MxRAmc/yrs+5ZNDcGJJUNykuwRQSj2YQy2PqSHzv733jdCf3cuPWKf/HgMSAB49stWi2LIwH6K+V36s6BlxhPHTO8EAAaNfIlryr7UZ9LnZavzjQC0RDyPzcqEMdZjW9K/ISSWXNSIP46/gL+Ifwp2Hs+NivW5UC/biQTtxzV+OP7PbELrul/hRjl0NYEfiT83hIha5TstuRD1D9946/RwvM/1/kfyO/zxbnN6Gg0KYFf1apd5bWzLr70J+jz+6Th7fiKVO6dwL/kbM3pzabITiRF95QXo0/itF/+7mDz8AqfrTe/FA7x5sIujNvdjuAnoLsl+uTvuYqnKdtyle+sqOE/n/ubpwWQ08g66ShZ0aSlf2Q+zscwu4MerCoY2Gb80rPW7mO+Vey+5bE80oyyoeDZQWCX+1GJz+jJHX6D4pdobRGz+M9q02XynCl+BQsQhmpXxMWZZKf0VT9gFVJdFhziwGj+yfx6QWKOuk2wHxlpsQbMpE9oymhyucuIH424papsrdrIERUAHrwxQVLDSvfiVDt7sbCFS+bU1DB9LdfSIXd4PTaQA65S9ReX7+clN0lQ+kDP4JBo0IfxE4DjlvQ3a3yxmdAGw9LW5DmWXS4VPDg8Um13obkegM7SJ/ZUJY2zAptLfExIv8/KP4s/hu0g3kW6s9CNd4I+I3xB/YShZFkux7eFH89hN4t5fj6hXY/hoOJ4fDRAdHl7u1/rjI1C0fKi9saYrzuSuY9NIXrmCYgWu9JaDF0/w5skui0n0tWewCZlNq1gng5+Cmph0RutPge/vnh5NJpPgQEWn0paDjxRI2FWDQCCAEog4I/6em+CabzdJG0Ac4hTzlQljrGAj6beFhCPmbJpZdiDOR8hQDKLxxNaymGrGg0/JMKt1sT0tvk15eLropeOVtpOqjXuxNkmjLmj3tTNMwbKpi0VSHOCKhr6yhcK2Gmct68U1vPn3ZygaiUn64jLs+9PTfNI0luFWk1gn4aDprG7QrA6DLAKoOhN+0PCAebI20MTqsLl8VLbCeUVwQPOOl80B1nVsHqiob2Yl1cFZLAoEoD36wmBglPuft1J3ulysH/DBoMMPcGbZ76EKn5NAK5NvCXE8mHxltJdS8FWlEtjI8Fmb3WFCbs4e3P69G4jIBft47jr+A+k/Ee7J8ULxyTLTsknmkwoad5vFbkmkme++Ps69IUJQyDnsDyGydRO8UgQOYNWs8nRueSyT0x1BjGfG2Ux+JWmEtN335XZej4yx00RKGeyOgRBxJ8LmhpxKgSs4sPZnVaC5i5pxOU/SVCAzrWDyz9pai1Zl00Ghduqn3hLfGk632P+NMWzLq8wUPmpQ66rpLVeRjd5TqHbWT1QWmVnmmTFOOIPWGQ07/9fuiKw1F9qRQQpfXjlRiJlJnDJBfjdHqmUELwH37KOAUob3twrmjDnT2Zf/y/nlES1lxF6gHdTliJV05ChjdElpHFCzWfAv6YvpO9JHXukMI9Otf6F51Hy5+Ui7OXYlbjnNiyv5+8yVHWVyTlIbEmfQ90ijFTtIaKeRI7FZ2iyTnRRyaSagXCHn75TuYcLvGsO+4TA8GKmqGQDc3LFO8o7r/YzPO5QZKbneSLlhJYW9apkcR/r0lCBles3D+U18PfLKllegMELtb0x/UqIVdqT+EzqxMiiX4ARv4K0NFQPHkWjuCjYy2on/zIyPss9lySpk2qPPiHuu64RRiEXCU5SJZKN6zin5oFodRE2JRbtXl4dRM2fLoGeOlXlPC8egNou/UF9g1DlKpgXI1HYTQg4Qq4cZG3N1b9N/GAWjxht4+XuuvLest+UHW+7bYAGYfFhwkhPZyQ2x3kqniMlV6OvjhTJSpGpsP9ys3gysVYPOhxy8OWbGoSd+NUSWsEvDECMTtq/xQzSOjaWrgyNqwgLJWj+ebyAdraVMXFkMicAdAOS0q5ahsxY6HF92Ath2Fj7bU709G5EFSRVI6OT6YHXDJ4ZHcrIJLirU6P2Josx7XDjVEhLxtXlqw8SltaBEry+VX66XFMRGVCgZPqzm0PkOAbVKa+0xFWpkwypnSCH37EwRCqbcO1HcDz1fcHNo7thNEUvRzvfZqf4W1gch9NU3SwkTULOaFMskDk087ZkoRK0JTEXRRbQx3tsOvt2EVpQotIC4twWTrQG8ZHaiAEswMllTxMEM8DaBZiwbd+5jlhhaM/b9eeVx/BxS6jMstjPabkWTemADm9n/V1Dzld8E66k7TMkTfXahAej0/zfcRulhSjvPGPUUHDPXm2Xm1o68os2309urzbGtDJh1WRXF3FISY6KRBkS1SWFRokOmKhsRXX7lFh2+ciEpALWjRf3Qtsv64fIdeL1QwnQWRsrT2Jme6LWgb6HfXl2u0P9l8dbIcjs5JDhr2ZELeCYXngxXw2PAt3A3qPq1i+s/o3diEGRaauUebZNj+ctQJzCRpr3UArmUMw+AWk2FxsPtdFEaEzkf1i3wIkKg2w+P9Ub50ZdAi6Vz7kNenBRU3YQPNrNcF6od/bBWdJS0d2gLGGTiEKGMXZEiZv2KeFGrllcY3GStIXEFC8i6MkpGtJu+ikWIQh5bRVfHW5VntxaqVhY8ykiNU3cWs1nCSnENLWzKqAvYXr1fQoSVgPOxqDxzDyV3cr0XBLbo8mzgKxBd+f90T43xT4wlswVr9AkdGPyAfvGrbPurfUyNrd3Z7VS4LaLNrzTGlBp7YyMsNJKgF1+i/0fglG6uovorzV3r/5llkIeJu364yPfMgmO9vfKLHcn0f5KbAR3qkVedxK9xLb8qBeht8YRI6Tm1NbfG+yhEtcCtb2MHoxYc4pvkGwjstsjklnRh7yrwmhYhSh2GUawLjaSK9kUZFV6Gsy+1eEkNtQaHLyRRVHXQD14md1Hda7UivmF+0yFDtPf5l79rKMow+WQOMx5UBqBSVZ/VLfRfxsky/1gJIU5FQjITEImepBP3UiZiyfQRe5wRSnPQvQUIgsnU6ADvBI4RLgmTQalEjt6amxmxu+QTQcKluwvwRHBY7Uc8euEUnGbErTGTD0qFP6jA7viUc8IeL2+tZHw2X9RvBpYxYUacbiahVca91pavNFkrJv5ZBMV7jR9cVITSRpDIVjsvTUrkQpzhWw0KP3XHxcRaQ04Vem6tzbhW90cLv4q1ZtcFIPa8uGqfbwZAhcAgICfJxKJsuhe4KauOo34AjS4cdlve5V0KK6C0vO+1nXJ6RVNaxfyU6YxUuzJ1e8wIwP0TvnP/0pIlDnmVBqeBqE3riJBpRbWhgPps0yXg+MlY1aPeogTdO1Ixxi5hKIEqX5yGmmDM2QkkYT+Flor6lLi/Ht4rW1DHPG5qrTkGcodOyh+tETBjxxnbpx7XQPV7Wnpu+m2r7PBHnEbtHLuOJrp+PRj+oVPRdMKECE1EWepCpZiradvkkzPi9osr7z4WLQKTojnsWgRAUppGxIARWC9Z9dbK5TkYAATRmgy8NGkIFQhnMeZvnbSOUghToD4Cla1eIbdHKEkQhmVKguI6lC7PIGYpXJpIOXwsOh1HbbVZq5xBYzTdi6ZWX9CjAZpoDbOlSUVVQOe6KTfZhOYmsvSTMaeum5SFnzVYCYg8ibKrBb9RosBAdAC47cnPFlhwhxuK4UcvWoSudRDFkeDwO1NuBbRQaBwwVsLgjprQV2fg2gbMhUKFotEXovilQgyT1hE7tDXbRcignw6xFFF6KBC8qgYvHcWhZYyTHKifMAc4QWA6VgDdQYqUWgCXVPkzFpUQcQC65iMoTkbUlAI60PXtTkazUCHLJQCqy8hobGqQQEKw4BNy/BQmCjVi48ot3tZw4FyxN9FRV3U3ycbQ6ROmm11o9wxu3VittB0KOs7TmQxQWuOS9j84xGW173B4OJFgCXbTqSKxYeTPrbv8JcOM0Db7Ow02uDdMmozd1ARQOLBoGDR95G8FXjpW4NRr2ODkP4ql0WgwPAgXPXI+MNdvB11O5FZDE9tOp6ntOQ4sunyIF4wRvRnmbsH3bNvUqBm3hX3kzjE8Vjy2SOY638svmM3lZjXYlRiAxrJKp6z5rU/bMLlv0fT6LWyr3L1NHevjd+ZiQaP4iqNvevzkrt1kOQ+7hy+8xBjNQp0c1xW5sBz8pXRdTuYJTWNJLdNI9es2UgbXM95scezWDIYx6kX0jLhaYBIgmsithJx+VgvLsuje1Gjb6UJbd52qs+2gjqPQe8OExkE9ByNmKwqw6Kal9BxitmN0BawjOz9JoQRM8co0l80mhxps0KIiOaVxw/tvUxoeXfkd9X1HPEKZQpq6iLu+96zDJl316oXGhjMVxPxp2jrxrhuoAA9eqE512GgQPgbORJGXUjSOFZhyhzFOOU129UyHDSt2WNR1y5P94W6nxYfd1Qt8jyKwaPwMzN0RVPm2sUaoFt2YFjb2rIZFrcr02s0Ptu+vNvr3/XzMKYvlYr5kk/sFuk2yOlTvALI+qRQZh+7ed97ttutwUNe1JwEP6rECchrcbiF2msQ64SsU9mKXqfJyU/tUVz8mXa3orXu43yVAq8GayV26hshABdEU/GiSB2OpwujJSTHLdWQmOmrUn1EPpzd2c67hgtGP6qZxkLwKeU1SQcHuKPJPnhYztAIYEZeG80/n/kIyaOGmmkIKqZSpM42gGS2yom5K/e7aaSFD1b7W5tikNwvA+C4Z2G6luo5wV/VhrdRSWeESzN5GtYxx4Uq5C+3WCbGWC/s0sCtdi2OsVVMmB+CPRTX6nb4ybToKF5mMyzm3wq1ypFOH9QDE3KxhnsB0MqfvCM3OD3PYH2GOvvO2vFkivMHlNRA3UYI2elQVD6ZmnNchbMyq8yDlmEqhpGGxmDFV1yjfo/ML1HC0OswHprkm2aLnF7w31lK9H/4HXqRHvgnG/N1Sw0JpoqaCBisY8WX4dMYaYey1lGcgQ0ONRtS7v0VGXdwdZcdlWeH7pHtXe03cUVrT9scve9k1VWcjG0hRB+R03OKGYAGJWUTUilZIFfG4rpWF5d+/Wmvca4U2iJOonS5W5lLNc+fdxcQPPXx0vRYJqM6GlCAgLpUYUbJCwa7vFGsUeqeCyAoCCeoqDegiT6eto0PXFqrV0FulWJ97DUYsAjhT2byWkwbUpNG5pJMu62ilyQPLywHf22FwWLDlSlAs2gIEhNDIMSh5QKtkzbQYJzs2tOUaUbJR7acFGV8eYEsN0qaySnURtZaXhg7wlnQa65KpXUp3FL8QAHCP6cI5PcRZcfD0AEu3dBrQyHoZV1lY+uDsti5upMq3SD7LNCz9aoQ+fi8eoK0/oMFgd0qdhMjbhrBBY4SQBq8qP0MLWldTzH54ugR2uTIMCAVRQGqO5NWiTR99C1kmViPkq9+LnM/VHz4rGLxpsjjRP21eP5jstZ+L9euRv7r6/J3JzdX/S2ptfmwZhAJGfDFei0aLvhB9bujz6hLiTNpMtW08JTET8Q8WO9D73pF3X14C71LCnf+8jn/Doq+HyWr3f/wWCKJa7tYcmoa808E4dAVwvsU4lKtQ097Bj6bjkCbNi5NtGnNMYGOm12HdOoAUpr3+VjtqxnBwnQkD+4ZYnBRQ0skjHO5+QyAvuMi59vKuT0aEjKB7vR5WQev6TWle3+zU1ZfA29cdc2642LsKIZcnAIyCbtZpUCo3Qe7wop5jsVadwhdX30jietrq8v3k9APn+EsFLPz1RXgZn2R47pGps8alls1H7T33F/x5fur8dVzCNaYzLXRWztYgk7N4upjWi7ImiBEdQ3sdLa8pZfkUaZYa2NfebzExrgpYZBJ/lhunOiTa0O+f+ADxM0ztT+F7aNV77NQZwHXvvrnVcDcrlxy6+KVOukbR1JnnS9e37gKcqrSXfqqH7o1AF2NGmihMBPc2/HTpZWXUfE/fvzEHGZHfMHDqobCyDosgTk5mhulweSkc44pvGidLd91d89ZdGxuYA3Q+4/NTABh5kWaZbx6UMRUPON9aahzsuln2H8spJ0SyO9BtGOdFl6OFhSmaIGcYuly7jU4pu6kVf7iztZLxBXHZOjKDCapeGrvxEmLRKdp/6cHA/zOJgwjZYS93WoiEhoUW4U+ky7UGz+hy33dDWJgoTqYjO11BOS1S8YVkqfNxN1FOOohODIdTyErdQzEfNIZTSoriYfCkFX/4oP7iRnoS68r5d22/uLO7Q/c/NH7jUqhEi8MtyLzP72Fr/Emf2cGI8whl1Sq6eHrnwlNXN671E9vWEcB5frNaWb124cL7g1Z1gAe2lcD7RNJXnqhfmGKhObGyixHpOsKGzb90bvW2CSQNqVa6O3mQn+n0PXfT5ddPPPkU+nDNZoK4JLLF5nDD2bDaKV01Vw2jI+nlqdn2KV565Gce4EeTzhKvXjLDpX7GhzJiTwrBSyHxVNY5RuzEx9BTVNGV8sX5nW7P5+tzcDSM+IbwtQ3GPy3uWWjZfD6T/bny6amqcdTLIhcHwFklU1+pG3TufMgT8olopnhqhnk5q+hJGXwheMN3al/usO/BMUioJkYvT8uR/4JsgssxhMchGbvRsUgdvOOcr9+Yz7H4xsPlS5JIuTCe0TiM3uF3cJ01WU0YA4YAKnsV7kbnGdGdT7zmkZzseJm2x9EPQucT3ZU9wwqYKD4Lm47cbyyvjvAA4HCpBv59W9AppXQ5Gw4AxYO4EBQZB8RSPci4udihWHr5JastRrml3JchX0UIue+6sexMi2c5AUNGaQlRnC0sRFp/+QKeUVwxTWJq0EJpVImNFXuMgoKFzw3HPlWVVSnSUcE4SSWtSk44LfM8FD1J6kZ85xQUeN/JgI82zgsV25STn1Jboav4YdI3Ft7MXjgl7tY8ATxc/4r8ue+Hh+45tDU55ePpvmVeNH9e5ivpj0jP+5jfxskwW79Qhsxdo2nEczTX2b1nn3gvcp9Znjvqp7W1S8/cNApn3NSWDadH8h7h/HN3UolbNd1zpsajeCsdnq9NrnQPiSgO1jcJ8Ce9I9h/ypnzZRfJQZGQIzjRIfsitIfLi385OvnDo0d34PoChUUapcZwh+NOnnCToTscHApJqrhpDrpu/fWyYeQn2Cpp1lELAa8PZtHLinT2WiZoPn+NUqHcgNnt3mTJmt3ZgubQqDVIzZPNy7Z9kF9JxRnoQXhEzaKgmtVtHdojFsOxbPQVnu3f4p7unJLTly/Pnh1+/5bLw/rwa4N/esvF39500/b04E8ffCBmXx4e3tn6MibDy+DjZAaUHXlVnQArrH//ZYjB9rjn1tj7rfFKl8aypOEkd5B3iMbN9VdfnemirKD/BNsAoG9wEuL4sbH3x9QXtitmqoy8QtHRS8Uk1ezSrmDroZf/qZ0xsVtVjx+cazTHK66em0hbaq650t0bevbstjQeD3r7w0rauu7tRaHszln8GDDzFE7XfPwYVjDRLUMGlpAiqbck7aHIVKRsxqQxhRxqdZ3wXaVDgVNNXlvoiwSXjrg2uhltpKv/jlC8WfvMzzbdvz/804EZPHbHyePp6bePGX9JU8Qm90e7b8Q2fheRHPGLFXK5T4uJFKbdGJJuSn6Q1liND8Astxa+7m60OSsmAAJpG8FXBKeK43ihYwn5OIz1NWM6xgPoBo/X3rr3/y1I6sext7VhKRu/oShpBQewJH2h5S7IMYLhoQIgJGZqZnxLpxw51D66sYNYhfxGmr2Q/eTiNvRb/a+yX6JfhIubX/UsP6eqVDK1ucYdHm+2Tq1JhzcfnVNIg4aNTofo/m63wZ4hUK/eRDqPi5tZaw0ckAiht1u7fubLwiz8cyg+sOdHW4gfCCfQ0PnXxMHqNyTTWnPa+aCrgpPV/kffbukd7hZGIA7ChW4tWfT9J25y84kAOY1WEAqSTT+xOpAl6XA/WtVyYzyybWA00bhkpwu1JaQYviey8cxvhCwnSB4orbomgSKfBC9yFIUaCF6IElKVycbl/Dv/B/hRmryQ/GTjRn9ZWudM8574YlXqv+CfDX8Ovvoie8O3WLJkyOcDumhynC/r41FqAle+PwJ90oGOD9+M8/wi6gjOTAyPbCA2viRt/pkP1aPqBXWm/qO6oUQUCeTcxILCYxpoI/YYz0wcoQtzxtQWSXn5B4/pIGEZd1jnix2xvFzZ7OaNJDrpkgMeXVjeAFUpI6DjYv/Fi3P9/a1HhaXZMGsPM5Qp4c2ModZ3Sb0GVSD1k5iZedTRDfdf3N2FBpImt3OWPBr2+4b/Eu4udsK9RMtZU/ggH4tiEK903kcOBuNRUT+zTWf/sk/XK/GJBb4OXjyRDU1Q7zhlOjiRWFFnaheboIo+yDeVctplHSuDBUt/EF1fVdIcWKbTyK75gEuE9ntVNpJe9F+3xXDY5JWl2BniFrpetaCgxysWeqapunAgp9NlceUAh7I3m3mSpBcHQ0kt4ueArSFdNTkiJ04AfNbaPMKFBel1iKn0tpJyKyvb6OzZYAFP/HPpw9a+bvd+++bm9vF453AoHnuLPLS9hq2tYt/v8I+eLlUsLnZgVfW46ZSXFXbbs9fj0JiBzV2d51x/HNNxMpmA1+2j0dWrq0J/ryfyst6LKyvdW06ehPeTAK2vg52Rw2J83LIJ+Lm4g7E2Xc5ctzYA+MEU1fVuIg/2iVJw4bjOOL0uy8ATEu8wL3SPiFVX2G1hb7vghnce3zNV7eGWCQ1pB0+TcbOPs48SubfGmBuVA0SnTk4xmfodPNO05guA0ZG9xllUmus4wYSdPOknp48sgCjWrEXCvnzlBJ5mD1Vf/yr3p4eTIktXK33FFhWWxHiBenjzmGoWfI1DPLBum7gY1dxv/WQPUDKU4qFykgTaIoUB1PPIOVDayFFutUNtLcijyXwp0TjlH/4PHEssWekewoUTJwYoCsCeSFTD4/Ye1FLSYCt6njBAQkVZOSZaaUJVJL34V1fLqdzMhC7SjpquKQFcTSCIiavuekhMD+gwqaNXuwCG9KJ96yKJWANSOsnH3zrEYRLPlnPs6EjirmpXmDBSpp2yTO+e8zyhGjvIK4WtRfvUtRGhUNP5clqdJIjyt4O3aSAjSuXjT94LGjNl/+2nvrmPlpxrxyMy2CQZe8bHy93l4SJKUQNTxsx4BfstEX/pq8GmuFTW5r0k9mpeYQqmzEUQ50wRsjNS6e4NtHzqPgq7zKBsmymRSZMfLxTJGaCCsJO2FJiF9xqkolRevBFl6mf+bhx0PHnQ/D9oqUSCE+JJEZyk6M57aANGvUM9nNSA4kDdaLcqwgFbmYs0xGghujFjDOavl2tWFrIELXYxSSZKU41eGiUwHax0qvOBNEZz4hJFS7mrtsygvu3BnqC35HdyS9QNivGButSoR3W0JM+wk3mFjJlmcfeGDlvKKb6byWxub/g+jrOXqKQoKtelhRdRprtjy5y8t2QMmzUxt2dyRyAH+8IvLD7Mut1KhIcglFAt4qAxmfBZ8c+lbDAk8Pts8yQzOTGDz7wjPYqXlQ/UQK8e3dHSc7XCu5ucS2Mdf3JSVYJxbGu2PYhNzo3GWdZCV27UdY0+tdY14xroaf/2XV1lb4iAdYEi90jKT8vNjGhmuK176445ChlrRUf1JlKj4a7Lq3nfrm7UkW8DtGmTGwg/mnadwxQzKZnaPTEw68mRcj9dq4oIGTQjJg1yBIFEeTdRFLjOnde6WqkxljvmkxEuyPBImsgdM++FkTPVxE/MyNxDodviWkQUELJsLU3u6iuNNpq042mS0uTuvslju7+UDVOKTSTE8nJ5lrV770mAtdJZs4uBRXPChu1dCygEoNct2kgVKCcA4qTMdafe5mJScN9zDG7kOBuixMp51xf8J6ZM9LTuLFJ9xVgbz1oHS7F9a96558jw6K4jnVL4rlPepNGnYcpRZc88N3BUGBkQeQo1HyoTTsvGb9WdyhJ3g2MaBdjb2wywtxDvfNUqNMjIQSsS6hYrXoyEUw+l6a7xbI8dHCG2Ncl2a7WG2lOb/ffMZTSsJ1J68yItrEjrsuKeAUGWtG690+4EQiiVggaeDWir7Njg9n6AkCqrBJayURUyWdd3MQ3AUf22NTBLiMxkDkRrA0WIJUKyMJqJeTmsu3jbLJYKg2lGXub5FvzOLzJKlWwQlVVsnKIxiKhMCI9LFAYI2xUvHFdse1kVNdC4bLbtV6nXZdUn2kAmQZUcBJrSOKQmTkTpGniGnRElx0/01v7dMei2MSUVQy4A2njhDbw0GLISsDwxkyNRy7oaU2j199glz6B0BnQu5LbtaavR+7lfoYPMOLyvYKE3Dan/itokUt6n2+PQ7ZROxgpkhhZnAh2XrlnJ3c3RDgiqUTZ3NP6LreBguz7lBcrlx8OuBy8J36YddSlzLmZQ6BTARDCFYojHlUp58kSwyZbdkym3ZRf5LgXNdW1ucD9nc+EbreAC1GYv1jcJQuoIPHdOjNhNt2/9OTmjwDanCa3MYyofmFjItRrXlbq8TB0l3HkNULRQ9sxMNWkZ87AlnoNH1srZNzMyWvGMb/qC+fEHNfs8t81sAufZgxUyLmR4d22ptZ7XXsfdPyxpbtxE4VNhbPVzuChyUpWVcqnVjEIpGkTDUSONA1kPpt7qFSX99Pqwd8TYvkRrwBhfS+i9U0MFjQzyLEmKsi5wI+XUOLhNu1k3F1V6MjyqHk2xpMJ64n9882l+tZvdRP71bz/M4ZZaoWc+/6b49vUX705WF/SzD/fn4qXBE2d3Rh+6KoK3OuloJWclgd/GPhq21tY3zgpnFzzvmSqD0z/fevj53cEF/fl9h208Jw6kpFlpq3UkvQD/BEIIPzGtadE0dUf+P8YbkTg/hHZsvHz+WbpLiZLMe+j7/JgxlQHoxFclbhb1VIF2JCe+gHPbaOGjj0a8D5VSEbEtXWQtWdpTnO4YwPPZzH66pibcHf9sTjsFHA6u+vMeet895ZCKwzxLEX4CerJfUt8H4uGq7GMQtIyW6pBCYk8or9fu6EtEzjyIPbcYvXCCmu4x/LWnT+Pt7juiz87KsKCzj8HoY+lD3Ieu6cTGgVgu2PYv9+30Ye7D+9+iZOTQ/HO3iiBvDyez1b/Pqu9zqwbdf8bmoO37ZhM4vJvnOGcX/j4X/GnuwhBO/jM3f06RcBuXsr+84MZcy89laDlw+IR7zRHDoTXIKP8YPXVZubXVPC3x6Ctnr9h75qocMEQvXJ9d29Xzt8bn+mJSpP9dvmNmLN703tl79sGpZxGchWeX+h9i/draDvPfwV/jA6n4wW/hx8Qv7Vl0/NbZW/bCXI/Pnd5V6OHuv0+65R/B4cdhCOo1n8/zyRGheh0f/n0a+oId06gfw23g+LHcFsSjRNvZcSTxCHiNueJ+vGo2sywRUsMn0mav4cOQAWl3A3mEMBW01vMsv/ZurFxtTU0Xhnv6KcmC1WSFeiuIXhfjH4qwYPfnW++G1uWjYiWkrUFAMKH9P6+79KUvIk2H3W69iUz6ZuuZWTMCiqjb9OGqbS5n19awMTxT54bjf2KkkVw+ubnGndyw2g0kbh9/9JdW18CpZb5BerPvjM01mGpEo8w3bZSJ0DeKVNHHtLaqbENk8hFFX7fTR2jkMja4yIPkKN758c97U0J9j30x6Seshsoc/Gz+DofyvO0b97eIWJ5udrnpkukGy0e8cr+Maeg1t5nKh/7f4sdh22FT6ZWpLc1XlVFPX19MpbAzo3yuXH9slDt07nVOlxQ2TvJCYuDUKA0Y6wF9AgI42ida4a2sHplWRHcgWq4WcYz1Kr8cn/qNkE9yY6UeAJs9XyankuEqXdXyL/7RCcvLG4YpDMJpTKymKzKtoaGZbJ+FifVe1wCY1w63vvqMhx6qhtZtzc0Jyeb7ZnOsjdtnF500a4/4PkWKdDgZtQqk528nNXWT8+L79pccLdc9gK9EI9JJr4ICagZLP+INFTrlNPYzOo00Zqa0muBb0rfFqrsNy9W3s3O0t2koHJ5mtIXPMbd6+/nZer8h3j69u/Goex/iuLj79OnpVfXtbUWTOlLsUUZp5Vr3Ndm6PTfk/MZrjw7fBY/G77fbOLr7pUvigZN3KXYm5mvc0li8IF+X5JL8VXl3jiWhbZe6e7PNG+gFfB1/ZfireHeascLkczjJjqU/FCgT+/QLdGTW7SrzLv0PjnMOjgKid+jso9JnQuG7jBr22FQpKt7B2Z9zzYJlYOIkUGXeoHb2VqoChG0h1FBA+OzQGUM6/JyHj/84PL7azkf+7icuJFpU2e7uVicq80m8zcnsweThQ6AOsJMu29vQ48T6MYKgcwSwwavo7S+oF0yqgGYuwTdH1/bPd1sEbQz0pGFxqN35JVtQdLy8IHoOj5wdTpPi5NW3mtlkPoc86gh9qoTUcPOwPoO5YTAdBdeW58ObLrmDBcg1xHBGw93HbOvmywsNda1hl3FEiLQVj0Arc75mJ0wqYWFANExobwl5wYvaEG2PLm1dZlQ4LnIsE3k4dEuTj/0p5wsLMMlq7kdZ6fM5mAfOcyu6Qq4zBXyPFxLtyptePpagqGyxIurXdLmYFlPXsjlzKTDicCqd9gHca87hKctrWmOWFbqH+ylm2hHh9tdhWXBkJ4/ebXDE3WEopjDRIqXugLtGHAAjE30Ej6b5Jrxgk5Vrijd4bePwhcq56q7Zl2Olof5BxbciKJZwEHmT6h/FypnVtq7dm8t2q4+4SQl+i4w1+1PpzlclfpWKr0hGvkLZ5UVDUeoNAO4LJBbkK/bSyMHxgw2P7szvLtTDMUnUseHHYm7ktviCQUw1mxiG+zKKJ3PMpfQHhPCJfgojyNfyf7eGLgofXxEYTbIt4x2QxdeyvqaNWYX21Y4YeTStg04XLQc1nJMRKyhGl4UghJ1fSHpQLCms+sgF56WAZ+SlRJ+5IdEAT+Cg2Ty5syFxL3wTCp0mvLI+S+JobPDawSx8szUFWqN80E6wKDhJhUO4wfETtK0G8ifmaN3gBX4utNjpVUMa0NTVwFQyBP5aNMaKvbzJqIdaenaykFVXH+RGCq60DW5zabhgwvusVmCgv2np8AZJIcWDDfHRbiUV74ePQNGLJ9i2j4tX1HbNeWm3a/qSh5H+ht1BJFTZHXLxBl78DAdeFS01NUUUV4rTabGB+cmWCy62cfeQ/iWb7WDgja/Ynb6p1sd1K+JRHifTGpsXWrj9t7CE+RalL1+Fxxm4QgI2VDGkhd10I2zM4fUtF2L6RKYwbb7iGHZw2tkNBwPfYpRk1HXkRE2enE+RwsxUS/OcPEwhQYNktik9pIV1BLL5meOYef6gbCLzqmItHdYvLhJDTEwwz85iS8eRFFWGYRVaOu4jDz2Us5FwhAvyyXeG/QwvXEZNS0hAxrfYvwYrSdW3cfV0zhkRMAfywW8uCDHwrxnzO0N2itezsUsBge4NlISIoF/3xi4MumrUCSseizUElmPc643eu5CxUX3gvul0oi37eFmzIasCSRMGpTmBXETFo7C67RzuIucI7NeFLSOkSpyORw29teVUIgM0i6pq5gQFUT4EHprKualalk5dyRWLpxkjDMWExr0gFXhlZO9MCo5LLBCCY7qxj3A+stuH2/V4YFH4oHefUzJtPxN3g5wMr3IKH4IaQlWXy7e2SyF9jVmGXSWDEVgS8KzrTvtyr5PZqniAUev1Vgq6FqYfUBsGAUmsmxoMNhw03HNfioNYYKH+Safj2LrLPJzzOpwQ9IcsHKG4X+ZZCLYDu4bRntBwbjsa+KAMGmqxiCvPAgt5fX86ZDgYqFiJf9Q6U6iddu0wArdX8pYRqHXWGLp/T3bQ5Jim6CG6C9nB0NRttqJcVkmVqiKdJVSeqkPVwSWUtGmlqhlxyZIvJ40kaT/QdKlm6jQq9Q0wbJmlCAwHNMqsSc8wiwr7GSwlGwNCuxiPJdPtTideJOGhbi+MPGJIAFqLKHDkhAY133H8OD0htwe0sVPxzf309fPQ0Rb9su5EOlRnKX9JXU3Lk8RxbFs8lXpjoi2x/LWxEXBBaHGJ+iG1wBXLAr7MuxEo1ENQaL5Ug1+4NoMp98T1kbp7pX9mjktbmuFLuIBcsei9/NHhuEXA80jBz7+BnTpjM530oU8iiJSfVATC8SOteKvJfaXAMBOD49y5cBn4AZkiGcDg22V6yeuHQfID/LAafA7LTpZFnGxkmAf26/klk/pV62AuRVZwP4664X/vvOUMoe8SWP03HZ9MIok3hNCRwsGMf5s61FW1WKy7vHoKWYM5DgoHRvjYmU8ewIPeC69BUWGG1eVAAIHEEGOj0WBZlq80GT98mjKwr2It3LK77nrC5+BVXI1olIZgyRFva9IEGbMg4Dluo4ZZkNxXd/nQRvDFqM8FRLFcgZpbIRWq4vhmA2JUQdtyWupZg2LClEgIIGXl+UI8f1Np4QtMKw/Zsob10WEd407IhJo0icGigrb5aC+YdNWT4Ww+VRzuM12NGKYGKYM7PsY8vUcwVm+4gFNXtSwYHtQvTjKHOWlDm1SgQkLi6SpEodqPP85k5MkiAaRiKioL3yiKxN0o83xunoBxr4dOrvm+XRpcg9KhxXrqdKmDNVwgvjuAZYFnI1C+O/LyPK9i3NPG8qrT6Vc6YzRZns+1QAxs5QY+Qu6bDFE8fEghKhjwgCcmXeoXC+ytxltgEaDai4i2LCL1yUxtN5NAbSdJW8WnEh6VgWbd6mXhLuBntveSjK5Npxqm7UmCvQbhNFFCBKNfWzkrr/LmG6iW1QK7u0LG1bOYWGKWRC0LT9LU1/H6dFuXdcgHvMkEtT6SrH6Cpkde+EKcOqo8eQhy5BmsiF6l9hDqwa2kRjHYemWuFQzzqSojFplQTa/T1rBtPcfdJB4XkcuKuUHpEpdyu1tvcFMIJW6ScDS1cBZk6BdWTzIXDJ4qaw9Hm8OdS0q1wLTDN+xOK8T/KKgPsl7vDq6HJ/rd4IksyCEH9YG+lYIN0jg3mny1jAOc5kmT2Vsuh6gNI62/nM0bLqcWW3Y7rYool7tKDCcyWg2yNY5YSQ8RtSdTvN+W6iv0KtpQZfOwCUK1dzUGXcX9TM1yKEWWtRToAkBxpJM0TQQ/jrv6vRS/i/z6lotU66apl+M4FeTiIX17nO1ossj/x1tUEH6C8zjZK2YotjMZrrD7Dy5C/J8SJelU5xFHKEvISBmzVqG+bAgWcwKK+zEukLlroQBL2sy8eWKF8Q9HCTZAV4pIuJQ0wpvrl67QY2ae96JJ2Ue+dQ4Y4fQQCdJowCd7prpy7wHGFfbOWEirOinbzkETirj3ckZeF4tQaOHXh1wj0XWx/xCakO4/fbQLq1IRefKKrBm78Xl5nWH1+kW+GA+n9IiRvMmg6JRlKF5fJL80iuyCTPMpNR3ZyNu/sY+SnCJCSCtFXKLdlwzVLL+/4iLOyGOY43I1zoOBREs1vKFAqDfkg8ua5bQ99rwi7qLOmraJel0zWfbMGhW3QcousEVWRVtx3ESH6xxbMBA1p6gscCzCizXaIAyF8MkqcecRJsBLr9FifXSlwlNps+bUMUILvasAI9/geaGfBhBG/7J7A5uK56W76FBkK2nrxLFtg8LlhdIH3QpVoUjEF2ApnOIWYgK+5YAUYRIyYcglYH9a3NXlxbgWERy/XscPm9kAjQ1PpRuvmBu7u5aASmqIe4MSVeVlXDvkOfAuPu1c8dBFn9tJCCFqH+Aqk5qkoNMYFxO0z2upTKIeXG5BSGG9LM+xz3HMYbFRLzWF9tCqiIT1TQd6myBMTS3aeWDIYilpAxA/aUVG59zpQP4JAm1+CUVEMgbPj42o2m4rzSGDF2UBUClzXab6VyQ86OLCuhcAQtIbYcrY4COlsPglODHRB+QYekXpw4Ga/87yjUqmQc8mlsgDOJQjaUepj2C04hNKZd9DuGRble5AIw1okMZDjPqrxx+Cuv6DGHAcBfUrX4MKwTTixvymBnLiHCfMFIX9uFPs3LmHZ6riZMeOyWgkML+ty5VKr1ceDkvlSq+zl8tIfUxVVRszlOHY448/NuPXEZoQikn0WII4NjpRYH/GKzfgYqt/NvMjOhorMqaJJ+Wh6/spHvClUXud9/tH7FdmG40rPiSbj1kV5fj33omfblHBCG2XhyRx5ibEM9YRaDwEhQA4QLFL2r/lG/AXMWc1VUpD5polMoC7WduFay0XfwpBMj0ASPq/UDkA9DpF7tpAC8bB56EfkSbDTdGXykJb+ygGaHb1z7U41rKx0eH5zsyMAv34K63JLaEQRXk8lvhjGEAa+W8N/sef+Q9MHGGFT9fP+2zsSwPBDoHRcu0nFBt4thA/p4KghSVNZEA+SREjcGrJpJ2U4c0BoemdUknfeuZKa8KiLJfnd/K15FbgITURfhUuJIoolbuenDmUFJIp1yPEAoL76rBUi05hdKEpaXV+EFCLJoLO7bp9FU9pw5SEliIQwBW24kiWfjbXfN4srHIQPOabRucBE3DfIwIuxOXprq7TQow9ttwXtbXa+4kcMA6oK0kv+nakBjVvjddLvhV9L+oRfuXWCUy+u+4ADrzH11zIwsn5w3w5puxF053URvLgjXSeHigZBS7f64ZB33Rrd01JITO6Wz3pPRM74qazkin8D93Q3QPE4JvhUNx77cDTt4uOhYHh9eS9T4hSqKthpd1vyS7COV3pdCdMzXtJScmdHCTxg8+6451j6vgtRPHLD6pD9BERVDsuZgdFA7TEC6/bBlteiyQfcwd6V+YS7n0c41L6qqrKOyl1ARoeiQW5Cx/WpVA3a6TjCOEA2a9gFyEWpabrXth/ywVYCvVMx2DoTNGfoOPoILhbklEWqsin5IfVRL/u0WT3JZPq5m600vrB9QuQSEbYHEcu2ARgRZiNOXmTzm/Gy13Yhffr2tCethFomS2PYMwcvZnCA5a8K4EEzoqa7i4+utYH37nWH1bUisTNIbjiEkJOJDKuHLpuKOMzOKisadYv3Wmc+MrooZLzWJRfKRJudIhAMdXwgsme6U3J0+PLHmaqUNZrRbmtcbWpKIpyIIV912SZL6mlovBB3bJFWlQrEdUj+ufwaastTGuhi3ULWPTSd3XTrxSeWIwhUFn2zHHtxpabvIxT6LWLgRQTXILOspkG8QhP+6G32Fo9iunpcQe67OWFoddcFynZf0GF1uoSO1TU8AELYHIUV279oBMWGCHnkydbGvxQZP7hu1pFuP5J2Dmx8jfDK2FIjX3j87dfmvzr+vjhlyt9loslc/8lg/HlcT4yP2Bnm4y0bjTVgKtzpqzGJ31cdr5Dht0l/EN0KWwIK5VjM/E4PJe3DHCPhVccUIEjnFvaFTSmn3tDpZp2agMklbPYkQNVenPFGxtLiUq37QCiDm054yKgzBkHvUndoDXN7uKgeYFY/8ezoCpkyN2dQ9ggALWAQH64Und83lhitvu5DQrW4qo4mLUw1abfVu2KIICZsCUX5dMdfQkyL3sZLREdhRRT0aBtzRXo6N2ygzbrnIjyfAPfZQ/ES+yRGazQuQUZDF3SD1e2JyinsMHcVrFzZzPEy3U/8A9QAlTB/i3R0thorCKhmRtYymcRi4rUgUkMIlG6S6aM2z3DHe6xAO5ZBQ70U+V4O4j/kZ8xFD9X6vNO/gFT0bkZrZ5VZ9jzUHzIKDGW5ThwknXCrbrGvjsH6mddfcbGq9lsFeOzk5KWOF1wbfaCn245ero1c3Oa+rwo0ytGSxfe9AJZPNPt1uvVqhZ/hmdIp6kRyvu5cRBbmbL5r3DIhrkwMpiW/oMhmmaSaagqTsVpUWSGD+YhAZWkWdJr+PYO7hNiz4gP3Qd3eRF4Zul1ukwoXUTBQT9s/9vISV4fq8J3LKo8ezYwgYFo6cA1RbJMdfj7rswKka8jPXIIwg3G8pIucmzSy2DgCCiWzGbKbUhm4spCaU6PrwuNB1t2y07djmydsYxa5vlraNJHL30PA1f6PTGOeGI5ZyNoxOoaRGSs8GkZ5PemasZuuI2qWCxeCbGax+FJHfPaVpL2YQcOqmwmUq0H3M4qEWSsklIdhNtig1ZlunJSkNWkjAgPjnX1QDNSGZAD19HK95Ic5fvDkO2dqain7CmIS+sypdDlCLr6eqmQ3SpNzSJRFRNUpx+aZth3VIaATHSXuE3ButVuFvAgGWW34UfdQdNSkJCzgVNS2gvk5SNuddg8nkqBKFdUUXMV/YPjfJ6t0FWqELnMMnEBgzQgtZOH7ppM72LViVnKvTLy+0b9hXcJxHRTrDyWpZGE9vuiZ9bVVK1DLi5sgLfCZVQCS5AW13l96IfeFl4w/CwgcSEZ/Yg986YDWwh0KoofzTEYcQftWh5A6eVL4i0onMkbMWIyhMoEey0qWjJwdHVbUAlLrQSJJQiEHwdFRG7sVR2nNAlLG/RmE32Yn1abpDCKn1q3bsI5/FD3JqKbODa6MTGQ2N04R5rr7O+YxFMHRKLTSRD4lHhTetog6fOqV0H4JfWSOiaabZKwkpZmk86gGxk3mRnz3sCmsC18fHpj/uT84eUWvWpH19SSmTmcr9XyYbNOoi6PNou7ayf7ei5ZwYImmA85DYhfZMxh/4+Q4cjvSw47QlaSqPxdcgXLzl+4kb4oi0/3wRC1yD8CcPFUZ51O9ru/W60W6QO1r9BYYRntmyZuFaF8wg4sK2DZSgQUSvoQqm4wZBkiBbrhkMNk8EqN0sUdXFfSNdmWuKiEdmcuupaj1eF5/9uQxaT/D6jvrPJLUrsoYHlhsTglrbTb9Wzii6b7+3SxWF5B6MrDh3dzKGd6Vv8WH0dFEqJNlRJQGHeu9Ekt0mE2vus4aF1vttGZkrXz72kjILZTG32BAQVy7o71n1zLjeyU7j0fLTXxznqeUQ+apmEafsXTC+Wa/qi31QfMFMh+fHRk0DqKnVbHEL/Scl3XIhZlFSDBDDSj0/4h6MksIAPz876GIDK6pAjSg3g8jgsFcbjlsHI5Ip/HDOd/qsDD7UJmuhGN+7wTT7VVq1l8xAvnh33FNID5/bDOP/CqkhNW7Sz0ZWdIJH4XGTGtbiV4al5M6iBpxmaYE4bVqEp3GtJMve89rIGO1IWcz7uXmnDq6b79k6lqMWbO3cuQgHwdg+0o67irkR1L9fnJk5ZiuYNSEAx2YZlmFPddbKmkjWoU1qvvmVoBik+oyhqwNwJ0fKZbcqoWOmKlKzbQXFlsQFG7MsmLkpPlLfx6bjWTGk7f+orwaB8J4IF/JT2ClCzSt8Av9KD39lso+Rq+ftc38A13kHVdQzUzRiJwd11WJABzFtiwzTaeQl9SDYPpUzG0KL3Ua+Ul2x94CEpy76GQojbIiw9o5mF4JFS2khqJVztFUDVAwSwUZlxLljpnwIZAst5XvR0uOFb4dL4qnbq+vZLrP+a1HcWmsguFxZZp2f93Tsfr1yh3wp4IysjYN0Jbo9gimetQxbrWC7z+/VljWW70cIX44y4GdrdgXd/W6bRTgDhDW4fSwi4KjSG9kbNRKqNRRdk4bHVlNJJ1uzLZFz1X39Cg3f6lT6v9NheNfbxIy1In66J6lg7Yj5jHZYc+BoE5QaqRa0n6P3jH7Ty9wGIF/9j/QKQj31QlEeFs+GCCJAmFxeFwTYsWpd2i082rTL6v8EiWkVMwcIvDgZgO2x06VJLh/+Cw85mKhl7V1gfId9bJu+oupPdVJrJfjOIFy+qq7mVRXyz2G+OkXWb/ME2HtYijxeMqk8r7DNB+yKFSfcfQOijg4hGmcYBUQVr7SpljLS81bi3wT/qAEQwcPa+/P7d8zSTezejcWjzNbdn3vWgRBJcUQSCxzqDhklhNDXCPuGEJYm8LGDK3G3hvLBi49iVCD/7B3ZbRH8HhSDyZCQUZzu7dsGz2JDIXBdzYKJkrjRkVDCcDUjgOO4lj2B03mknHtOXrJUuhppxHr7U0M5g9hLiB3CEnuyHYEUqXUEfSdd3I3N4yivg0jB39DftVghTJHhlElxAa+eGoDXZtUWNvRAciROeLvaSgRJ5JoKSdMcK/0CNBDySvA/f9lcE0QGDKnkVrzPaiwOxAPsSwxPp3Blqrspv1XgEOp0Okt1ucalCw5JDd5IaEph2TCQlA96pySUPe94L2Tjd7fIidWts5M3GfoXgnGz679nnnJmVZ/jgfz2V0/+wEolVKrgxM17uBncXk6p+qC2l9CORXL+2800xtz508blbW5VHAi3svKM/4mnf6JBdx/6EE752g4XVHzje9BmevprteSG3Bezl2R12L1Mrfhlu4DvcnOuw49Ct7eN33T+gjsggo7HJa/LfVzIorUEWNjG13Faqwqj7UE7VHhKL5JSjN2ecMxVNIGxfpTdyCIl0o/F6iW3t6OvMHrzj4UjRYnCGOU94dt4Y/prE2toCQVzhZMcAU03ixcK5KUy7revZffj25UCnjzVlpM7+iL7uYTpfBMlPY7n7gu+FVIIAQMHm7X8OWFWyBLbBmMuK0uXRRoalDMgQPTR5dtodnzyKzyZY1LdbxIptVBy7qWh/YfiVf067kytIqiG3UUiqatUQ+R5MKHBghoWrukhfSmbKWfcjEblkyyiNFMzakCcbdN8mjKzTcs0s71JjS1tuzzBQG9XmQO7mTH96EsTHT2JoTCScpC0dt82AdnQxXCTNVaM4n5ktl5mv/tjfMYKst0+DS6s8GPtSX3vHB4xDMi3iBKlabhMccKVQuLsQ/50a56dTk9M6FuVF6s64SJR+8P4Uv1yMUvga8auE8UvTG+Iq9ggZt7xbbJBhnz+p+6rWlsCUjzbO9sF8sGRxsTuSeW+p6zsahhO/xHWknRLDA8I6Nq+UioE4k/cWR1a6FNh6vr4bF9Du9aVwuubRN8aO62vqdCsHi4xdZwElz/vh0GgzUTDE+sE5bq5W5I9xtqzIAQEqPMb+wnKVREj6FUJUoF3x9NkvsmCYwmiTPKwxBXHOelBYIASh0q7VtWNxG1DpNHSGi0lIZzu0vT03ocuWMAM90DAJeKjXe5tDFMrfW/CAAqRe7kPG+81kF4jhXY3lt17EsJ+XTwx5CaAaO0eeuZ6mED7yHIbW1GbR8NZC/IAduMK5xlwYfq+3WzlZ/3/v83qV6qA5zc+4X2DxMnfl6y20oL8vojUe9v5G4Jj/UlLbPkqbxp13ULxWdLFxcOK8VpttxJCoaE5WOYhSgsJ5TCu7GdEHP/LK4kPj5ZySIa2REEagko5PMNodGOBiDd8ALIGZQgI/BMQgA6sqiSp2i2T3YYY2YtIT6eGxo7oGmed0lBAHhaildQJ/bvld32nP03ZjPxYnBeP+xmWtSit56uIQCZmX0pkw9b0RYS+4k9LkbiqDCmDLFNrMz3f7rmMxdtHipdbl1vSUWtX+b+Mq7NqLzd/MNEwv+8W9KLZOUvvK1byhX6hEprC+366vw0+w5uauSHJ+JGIeaLFWYNNZN+FBcCIhvloELt/g1bem5B4IIingNpONcYKcK4XwXyiAVnjr4QHZxqZW0TpaAOt3kKiU7vdOGL7Gb+zBJU6zm16BLqeKYkZZ77kSrjZqpz+ljzbniKqZ5i6QeslBFUotlI5T2QX0sga/Yt8tWKcUkBHBQODp5qEyU0UPm2WiMsEvxn2NnjEQsYhgDunNlyVtN4IXFsQsaP7Echbn9c+V87gB4jUjCGIF2J6gVXuQoEddKGiRVCeQET2FS9Fwhc8VbX5cQZJ+b5NEtxtEC59FIU/EXGAL2XHa27v/m6mEMYmNjLbLtsNUCQRiSpe+bJAGNLOkmNYMPh3bsBsa0477JIkXD2Oh5WCfpbLNoCTzTRmzhZkmXXmNARlopGacsgCBLjkro054DBqB3P0nHigNvwxiemgehTNgfZr8pXWfs+e9fcaXtsOzusdc2SaBI0tf5+FsSb+I9c4ni1xkjlBI46hOFui7MyRzPU28R+XpMxyaXpq7vu1tQrl/GsD7Av8UYAiB7fq47zPLJNxE+cjKYo1yLyeJDRMI5PSYfgAjL8zC9DwEwKemHLCLHnAM7oaSgOG86oQWLfUcpToj4kKM8ZorzHYwwG/OFV/j4tJtfjAVySlClxaLxkgFH83ubnrJ8KHTYPYXTaQt9tnRKhiX0nd7hbIyMI/hBTm5+CgNWHpbR/4RzBEk42LOzt4jK56178YpXX1GupB5MS0WXKWQXhleTK/h6XnTE9jUJRyc3AtLyXei8TAZMS/ReJSeni8K46vefgalehJIywhkcl8pC3sy1SCuPN45RBrAzCAAbAxJRyUEdw1Z8U+exZgKewJ6mGYg1hUQdjFBBZMT3cdvxW+Q1Tr3PARYLytt3ijR3YlGCzX1yizFjiQ3ySqc++tL9+UvTI2KfMG7wtVdf4UR+tT1SOmaBc9TASM+FernRy7zvXOHuOCSyd7xsPPG4CUwW2wu8Q7euaJUgSXVhctU/fgYkQH4iILgNvJPgorfC2gA0XVKB2Uz3KO4th4TRTCWUGQxpHurbp6OtMroWuJOaLi75ACweroNl7IMxfNQsGgwqy9KMx14L9EAR6RuFsxlE4pQHhfBreE3RAyUj73/4iOeNarj3E6C4Iuan1lU8WyK1K0LqUdXGmC20rbFBMTxOHQ0Mu2IFPFzNbKtTW4XQuI4YK7+8Gorei81mRzhl9OpL9XyydznXtHYY+80Zqkb0orsdcEXWyyCl35Wp3BRfpYUj6gL11V7XFJvNbtfLdHb99a5enRw45Wp/E4usKaANIouLHFgAAsjYsJNKMH+4ijORB8U2DBY4nCCV+N/Rj1bIZ9t2gNyzN8UE8ZYlPh4bQPw7noMbqyF4jVkLZxfWLblbGAS/9NF4eaNHbIrCXyNRvzc21B92wRHKHOTCKV610ezhH1C+ngF77ZkuzPiEb4+fHndHyma8Qc2bzS80rO7ji3vfP+27TnSfN6CvvYlOYpT8PN7EX/oqTZPkkTc72dd4s7TS5zV3d9bYeVn/xlMG+Cyk1yTOLpX3X/r0S7sv0ZXlE1ZH1GcbraiFnl1XRTYrD/fNuwaTQto+j4Zjl4lQUtNz5kwVityJKxjvDwLC2+un192VqoWXZ/0cVeeL+u/nT+fdTGqXN+CFbAbCNioSwIl/MHzmq9YejjBga+nBznjNr3JQYcZtT4G8r5RnxuU4/DBalqN4bhTM2GRtKkiEfoDmuaV23YxrUmToTCIfQgQt9KYwTTezJDwngAXCuLDSjffBrNyFfGDzFCdkWT85lRqNvy+ZBSguFa3qLpx4Mtnb93z6nt17aHgQ8N3GETxiHkPlroBy2S6/uoTtX7Yp9QYPVS+V5wJ4Kpc5taZfl45qxuYJO2Qa+5OINBrXFtBMkpIdMyecFIzZvJihfYPseKSxGC2iI4uq8Fayb/cP918/nDa46SVNgzqJoxDAGhC+MTpodaihjjlYzPoWALomRvvD9zE/+VV8fDBFf22z2Z9LLISvO7WQHx7oFmkm7Wub9jvkAmrXlqc2Spw7dvdvuNBc6RAIx36HjbRbUc+6jqNsyyM7NtzSBtVx3cUTXkQUcHNIunNRfLLJkRDhnIRau/0sK1DiHEVprPF932kbXsdslu1LELKb1NIzVTCMSkenACHvyNheTx4R3al6XdhlA1aMzbdjXVj6Q7pja1+EVR8PQ+AU80iEvTTUBl7IyMsfhMjtgwJmSYSu6XhEnzyLaeKOQ1z0qmcTJu/7kprxOi+hPOElTNa0y7izo+UXludScsCP9iG8iA9Dgd3cybPUHNzwm1DBkqbaNuFQshyk64RV7eiL4+ysek/H4FXyWgc8LWnX4TiswA3l9bhZqbUt92BvjqPVMiXyOK/avNgPwg7WGlNnwZgsW/8GA2LDaQHUjVqRl9ht2jeianku1rlhxdGsa2WODGt56ykRN0scUezRv47YqrnW9mzgaJ6dfmVfxMm+jLgVAq/oc/ZMRJBc53zPKZDGQJouKtkFOiRJdcDEkZm5gru2sR4urTYej/jtMHwxF+up1+a0fQnHslkOQnxRQI9V1Fa3uS0UX8AJh0rEaB42KjpUhiwSH9sqoaEwx3Vds1n3zGKwe5dV3nvUPmoGP5sCoOBmPja2r8a8loLWMeSO4uYy6oKSie51rbxu0ijoZMG6HyPcRdm9xCWT29e9DwuSQsBCNh3gybNWMK8O7+HYDOFuBni72draxVof6hKx+87dtTHHuqziT2gkSCHIfhfrUn400sriW1cuWOb0FB+oVldMwzBNl7HLC8eDMkiGMbkdUXz4U98gQPBj8DLgLhir95d5E9mtSM5pEaSvTNG/y4sQMghooQPCHQEjjlEhLcoyX39n4EZbdtG/Pfcou+WfnReWnaRrZ05oZq023W17RBpY6XBdyw3c1E934oUZ1jEKd99CRSydXF1VYgioFrX+RJ/XXYhw8vc8pclXePbgJo3eSolw4iJO4eRsL3v4qDcx6TZLNpC2mWCylwS7zB4e6ojcmbn1in01wCHjY+UkCwzGXHvq9478QvIVbSKqjIXj2lPfR9X39lzD3e6rpb0scYp67Pyl3UMOiinROvItKg45g+v61c1NfWw9cIFXck7sx1qijbX70v5wNKW39/33oJB3mxg8ylJyDoG3fh7UjKYpyq5YGurwlBeR7MuOgKlICHFRltWJmytuKi4zV4R+EJE3Fir+jfLbiQ8QaCGhPUopwIeIkydsXWdvGkiP6tWAbp3InBCc9Z7ObNb16k4hIVW8+HaGrMiRhS/X3MuUIlO08tNO5lHQe3AyN5oMI3LD7da4WV04z7n0HCD5SZsjSa494TEqWDTTBbTyKKg+LA/EAKkhWoXUxiWCWO9iDpRWYxUq5J2hFGz6qZnABj8V/6FvGXjzU1ErkTiIfqocMVOGafhKxkH9wCaUm/BGjCJ1cAZeA5yHs9x2ADhp0+ptBq2/z20kY7idjM0JtBVtHmkz86XevcVeAyQ/ibBzMR9QPRKZ62R8qpTAIy0+02YxjNoeh1B0PRpJe23wBau1RCIhpDNGKWDGJVrDSCvONbNcJBFda6fEtQKSRGGnIJ3IQ5hGNV2Eh7Ap6qEoSv5BuCnThGysgkjsygeN26DinpOHWEXrhyaj6qTzjIXCmIbLaLkD4Ci1n1Wr4PKWQS2bVCThhnDLuLXUZVthUDWPKN5qjjG986she3TR3xB1dnx1la7rTdH7C6k3Q5NNFrRCH7cyZXumMrc91YpPnnV8K/CeEVgtDjgJBhgZewiuEq24IxzJUTTpfRXv9ASBEc5uaUsv8NoeZIj2BoOMQ4Rkm+PuTOHQWJbjRczEPwq2q4A2R3Pn4p0YgEE8W9zrA1k9ZRR8BiUDkTOCfpn3eyO6rvVBiSL+mfmTP/aUiJMq7CKjq/H9sMLGXOymP105afkgJL/Nj83n4KWbz2OxjIbDnqBxE5tK83kahiXdQMzD4w2fv9L4zDRPPj0cjVKDED0paWldV7Mr4EHMj4AYgHWYR8Z4gT8Ku8ofmE/QJlvlTUYD45u4MguTF5pSqV7YVki2jiZK3Cg3s/j6SnTZiFfp9LT9d8VR83Nsp41e0F0LpEYjbiHXjImTK7ThK/zXY6xMV3EAvZVxpjikxk/Ot5W2MrBY5hljHM0748OMWxksc+OMZDqSFhAv4SEgmGLaDMnDbAgQUTV/p5ybFcAI1xIMF5QiNimvFytzS/l5RyireMjGtaGnawwD8Oo9nKtisCyl1PcE50rJGSr8QC5/Z2OECCkOYGi5lAp4QNyUiY4Os77RIBU3SGVopTbDiYpwfAiImWiqgc1tMhh3bb8l55IIyq6VOfmRVEouNJi03sKi60K7VGd8EVbCQFv0mGuWmKyBhtqk4JCywR3ZkHMMV1VVjKgJBkqMc5pgasC9Kf5Gi7AGjrFB9kKcu9OjuG3fWxGtWVIPEztxNP0qfCIO9VTd1vW8it22bBTq2phJTsrSJoylsjvge+iq8PRenV9VxVUR29mizw3BStdsN2S+90XBessqWgnDsQkwy8VvLg/KQz3VgUbDQNATsFC10SX1nCxZNqescXA2n69Wh8wR8TzS+VJVHCq4ryhDue3E2HND1ywa7RoYkQp3UAoBnSda3tykZ3TePybrweaSsmzrNL22NKgKla9fKGZ/QC4ALznPOZ4EtVCvxxl/Jl/QokVy03ngvC9d8mHKNI5wq/gy8ZzcnTWUTSdqi4vl0Y8pP7IzZr4pjDwacl7oKw4VbckcKOtO9aBZQMPFHp9gDJ9P4Ew877GtxvWQYg52cZVmnjsKSe7hMKWgkusL7Bl4ZSa9frGWPnhxoETxSqFzy7lhJhgTHChSirXVSYGUVdmD2Sczl1OEsjlqO0lhhLA+E6USymjfirYKsO4tqnV0YHirlKYA1nKDHco3yqNU54lBYhhpiOuFaEv9WkB6IrdHGdbjwz7KMywLcCu7wMEuWqb+oEnGs/d4MI19ncGWh+2zoYYNHUNPgnnRLiE4OvjdasAZMWtmaiD6SDGR9iEoq3MJ2RFI6dUSAVpmKXPHZPSdhsP1xSlVWs+mStPsXfc7ah1Inw2t9fk0mWmJ/oMmrJDnSa7lLAwaU6X4B6q2E24Zfj6Yk+Tej3RjmBl7zb6yFVMNh26jwH+eLXmTFI8ZMWkQh0BERdQXtZSuZARTwnCJUONv2XQNh3IF+4Zrfds+4WRTAYOIxFCLGzytGMwX2aXrIQ9kAlC0QdECpUg5UBfUOA5UD0oBFF3tYfdBladPiWS6JTtrjeUZLESvUReIigZAceBgF+8gLrd+5bBlyv7l/6IzBbQv4/boM1oyj1zgYml9RUjvs1V8KOau2NGEYSoYPBhDgPTSuxV9eIIkO6zKWwSIeIaDqLiRIdERNECeEPscV6YphvWoYlAPF4PtG2qGYlCa4raLPCctY5fErDAFwTyonEIWhq+Y9FFkojw3T83JKWn4iqGmyEJkZSD7oVtpTLhtiBmBNx6m17N9JfYtoojFZ6TUyDZUJiHo4pREfta/2uHwgMdm7IGMo7H/lQwvag1Z3NO755PLZxdq3D251viKwysaVxycaZzpHWkdGPec9PQLMQ1ODbgD1tQ3gUgZEuEiahBgBH+ADgyqBxgGJN2lFk0DH9r1UdxWO22kqqoOVRxG7MjhzdbEsWtE3PCAAF8hKI4eXW9OSzVeuuTD/boX9E4LoIeeuWGLaT0tym6pjogGPQx3NWRAICxlbPN56cTOboJIL5OhieeAJCvhmWCf4wJlwCsEw0RQ4mQuTaqLA9rq4jh8n53qJnmXSIOTCOi8iZvixVidPKd0LmzOvnM+BAF8CEVuQAfupPRFw/Xx0+U5LyHDYdLDnQT1Vt1DgDIIvTvrryYkL/g3eXUMTcOCc855xTkhOBimfhgJUVF0u4ZIaW3eBEMiBhwoFpo9n+DGpEnU0DQFp/wprjbnY44gkG8UeRZAiYSBcavN+g5SjbfwoHfWuBQNoJ4evKjXp/WM7qW70cEtkxv2bio7GdrzpSON1Tre09pBBuBkxJMD4YW17JtY7gxIBRYdyQS8CfgA+GSMC/zyVSlWgkVkHczPaFnJmRZEE2AYf9uq2EGHhjw0PDhvJyMqdkzcJSwxSllcwCeDB3dVxIag+m6Jl1E8fO51bfZw2sf7Jmpv7xvp1UxvptXT65YSXWVGmZnnWnOhGROcrXQqZjBUotNsM7T9gOPt91cwCJUBYReizDVreDvbSCbxnKSrqPpy+hyc6GfJF8gPiItigiFCxkPkd/T39XvapVko0KwlwDCCx4iiCEOrNFq/bf1AIJ++DV6q9wmeGg0lfLUvYVXGXQ7IeSsRGsq1rEtM4Ti21QSaQOuMAEeCurgoJIWeyzUgxLSUFBAr5ogN+c6a5nW2rOiTGdkQZLtzq1gX1MQFITZ9aXUkiro+yieuocJ+zOsDohFX7PsrztMmbs5eBbb0eHZ2YoSBwutSX4uNhrECeC7jOlWkxcLQ8p7IcBhgUtOgYXK4MOn16O80AJU0eyi7PnMbzfWROgWK9XbRhAVODQvJQCCKYTT8AQQHddICtHlCwyKU6TdnYqy/t8DhwYI+7yaJUNyZE4CgQC4ooVotEsvu8Ffx+ENfR56pQWEA2RIyBezGS1G1cCGoZagb9jUNyZ7gqcCNYC5UTiYzQ8nqHvLJU7gUxWCYgwckgyFtq6qh8JaXuKGYL3TULsQalRWqce4Eevzyr8ASmSFIl2V81TF0oQsNH2YsWSQjwHvINx78+OvdmPMylzYVEvGf9u6dy3OH1b9leI29o7N7stJyxYWxF/PNZl4XGpGZPOqRdGWa4HsHWa3b6eA8OrDN2qpcRQ9GckZHt9syxr8xYUqdTA5sHhgoj1FUZsYpd2XS5aA4CTfIY9THSR66etM38JMaDXoSejdJQOQvvERmiSp4HYokXajTrkcQhk5a1KCzi0FLY2PB1IQ/P0ypYjiH2B7GIdotBSC6ygCyGI0ZLOYycZamOQCBAS5jggEWkRCyOMA5yFraAAIFZaY3IT8WSd6x6w74YPPUl/8N1+erJEEm+IK+jIuPBIWgFmzueOqQaiDMpssoPSCKuNPmYoZVZEh5vPctY/wCAQoVS/3yymLyr8cqfidqHBkSEIoA7RSkoe9zNNz1Tk8dq2JLoJxgUZ8UwygWozgLmVdgA1aBgK6gswPSizkYt+SMaa/XsV/2ankWGtV9rkXRoE3uI0I6sLaLsqyiMQxCUbQan0PK+o9BYE7WdLK37fsixqLRV84E5aDnHEeNH/J4nCNlm9QaBiSMsyt/7uKoH4CujsuEESHIfMZQR9GGdEUDSMsCqOXiuEhjOENDrlHcVNr46B0Az0szuubUtrIHlplLcxok5GDGKWtDpKuzPHJoC1WiZ0GukV4jNWviqQFFliIXxBV3dpWWlrF/eHbhKkyH3uR/n9nKSc6UY0/0J39SLFknQoKMeetwefOIkEGNz0utGoFRiqaT4Lg10YVGXrRzuNQvHVMDHU4x+/M5Y1HmOR9HPLWej0Meb04zYB+yu6Fl0NBSKqVlKPWj00lEGo587sfDNT7q00nfR3CCHaREFdG5AM9oOKmInKEe7Wg4Vm2k8ijOIIO11vP0NVU71XLuqVvP3g3lzXst/YR2LOnXTKHqR3z5+mT/ZJhPrXdjhVU/ti0cuEkrjmqb08/sOJev8aATCXqT3kI5lpErrCsEA98jKCbXAZ2L62x3Mu3RuPyvsP3gaohNaL6N4BtEnhG/o33L3iWNMypnZC+gfBqqlKugMH05daYmMYA4ha5JV+NIpfZNZuOvI2aIIzSExDE/NfMTM+vzLyZ8LcEv/1bFsCpWijgOqR+iD9oPPiBnDyPJ/F1IBNafYjEu2O/ZiLYB1waIPORXq0sameB3c+wLCSRwNRw6rkX21T34IVYktIZD3NH6LroXCkLCMxGh/9Ri88GsRchWeBLd74tj5l4tE+YV/dIvO6W9zRhkhUw9TotzQmnSpKTTgDSXpfamz9u+nmiiKM+tdFeYjSufoVH5C6JWlcmay+wqdXfiQv4e/fGMW3/b2dpgKkzdyZ5nRDPUoAllJyt4cO3s6mHQcBwROclSu7T3DjulVbfz8l1aKNloSI9eJjIXizgejGV4EQfME3OxQDN0b7RcdAODahWKV1ltY2VkpUoOVpZwqbYUTy8GciJjs0xIZc28aLbraqs8VDgOA4pm7XEC45w2QWDpICVD/WLH1N7Bic8YG2y47/8a2WeFrZDdQG4B+QIqq3CsZkuppdmwX1ArqOYRW88kNUldRHWVwiBThYVllTGF9sJRsg0WNkfGhKFLjb7qq8JwnPQFsLoWgSjXG6c2/XOQOk+dPzzPpm2sGiJnd30XgeAOYDWiJxhWRJ4n+wfhSpmFChNcA2OfjommFj8sUFwZrVtFPWTuIqaZ8fP8ObogTM0qqyxJ4lxlotJXQTHkO0SACI40BAyImIjxyKkK3Dr9WcMIQu2dQfUmv0/N0bK530BRUVL9HWXlCwUQH4mduLXyc7zW3+LUOEGp4xBX9Lcoh3ToxPZyTkmmnXm9GSReY+bCRY9yyK60aFYPqok0cG7L9zSTRKIXh/Z/Dv6HyXyYwvsYfGdl3saQSk6+lfE38MWTr/AUDDsz9ERiy/40kKhTclDQKDb+kwFTPclVYMIJrG7RyaewyPD0/dS904O3sd9EwxvUkxgf817rdeeU0RMGAH3nCAgpF48e2r/68OaDfeaB3QeKAGnWg6e/kefcg1fgBdj3y3/pnBH44kzIrNczUlv9SpNyjxtf2GdfbDv1tFf64KWuvaXXDt1sp9bEN99DbZna37O1iy0LgtMAvt2v2Ozxehvebr1cb6wzokr4SxxxIfCRz1I7OOQItpQJTqS1JMPhGyrg5ZYcW6lFD4EKPOEx+vCEXg+L0LZudspp7GhNL1nBIqcvOIzphSNMXY8uQg/rfepmIHnQzpg8LU9rVuGl8K39iw8RxU0FKzZlJEZv39twiFfBm+g6dp+T0ZioTDRWCutF7dd0CnekVHunvesYjgm00a6BNBiQ+kUXSeFz+H02TaM6eVxfOPsKJhUrHchIkoIHXZI8goQS7BwXZI87DviihcX+bedWp0c6RyrH8EZ3Bn4c4M9fdPvLG0xs88XISUfnNRm1dKthVz13xJVp0TFdUwudqY4ehmpWN/mlegqhm9R2jvOkfb35B+mh9YfnnUtlZqoa2bj3vwyBBHHZo0VlLI9CBPMIKyx/+KDdHc8uNr+lb6qJFHuvcP9u/DzzA4MVW3++Q6toaWgWTZXvqZxS3Dnz6ZJPE1FkFNNp7VSPm+XeO5cjfQ603ZKYFw30lnQB6MaWa6inQD10ZR0Rkw/NMz+Ix98rctPrji+12b+OfUwTJ7HWp5wXzTicTFyT9wM9j9rcdHlZ7/CmE46jGNIdt8Mwso3NM7zL5ZmOgLeY6/uu3kiLMur8AokccZZpYdfA+yMyUDCPeonU/8/Vvj9/wegrTC503uS2ynuD569SfIXUK8MNan4WrR6oNs1X0e3A1rw6pXfKaKGzuKVmM+O+0+u0RjsBexplje0G0Bvg5i20v7nt9GiMMnh1Ph85vb59dEu6KK7mXZ6P14faFb+/c0QouL5+V7F/+s53rajEdh8qJeO3AoZBMdDchCZ954lzTD7nVmmPA8hnVvvaDS+eAnJlIgkXDo52Ax/CLHNk1+n9sG7XxBuwNCV+xyTjiA3J6vq0lQ7Qt+Ws7QRkRaVL0Th1OE43J82ExqendogOUe2YP7uHcjPaRirEWVfZB1n2M9K4xqtmf7l6AFCC5jmnS37R6Sa/0XTkdfQ8Ui+iw2gTGoQKoY1zeAVb16PpxOZ/SwYqod8rv1j+8OH0g5Kwo5M6zCZPPxTAU+lz/oEhYo/DI3s+FXk/kDTPcBIILJf46e4zdBlZDcGNnkg/0XjaX6lQwcuR3sizkeLk1UQwpk6iSSNWPW6c+E3OBec1p8fJq7dqRDWeDhuY4s0Wx8OiIpEZ0ROxUwivWrISLs0anL3wEh1gR1+5qxvYPJzBtXs80l0tALjXpHIdjLxzMqzn7jsYWHHj2yKdGnsL8bdk2jX+Zvw3E39zpk2p15i4ZXabk+kyWO41rM6RXLUN5/larmrMPqfGadOMpAoNS9r/lq80+cTVpuub685rc//6ttr5hO+cjLyxlj8ZE3Pw3bMtp09dvV6VXppk4+Pjbenu6OqswDfEMeyN49J/Sxm2uguV39XNN53F+Ssftmn4j0jbHU1y7NtfJlX5zc8vhS6Z0IepOD6L6dhHXzqOY0Lvwn9r531l3krpDcZe5+70bFJ3xbMV+5xxwNKCF00nznzw9raN0SfU7H/9Li/iQsft7HD9nmNZ3alltDGsNqIPtacdfyx79xI+2tU4f17717lT79lUKjbgI9gsw+cHMwYiANY0Tlf7GqGRwuErQMwT2Ls43mcI3aVqquTNP7qLQwQtlpJ1wtlWgdbALpmmxBP+V4PoZPIDE8XGrgoetZmyeVHjcSPtJpBSr+BFf7nXt3tqvRMqFsafG94cpPsdJtgODgz8tctZx5rvx4TlofTmiN+l90wYZuxgiOntc7w7j4EYu7Pm/yK1rx/uGNyrduPsVNxB75rOgfI+NEvMTGYG3Xk417joFBokLCRDWZTqR37UiewkZEa6RJVnr1DXLL2yaFkUm3VLFMLP+LNnMzsmE6+eXlCuKgIIJNqSXxSW0iRa4pk37yGdxKwi0ckLaFBm2Vrwv/kwBOlV3Mc3SG5ATcDdzA9udVSqQOTByAgEY6pXwoF2MHGY8YFvGWuzxh9By4brmr04rqnCOQxoBAwtBiY7PNm0bd/7RHo1vZeanfR1qnQKyZL/0wjHE5+ZuJe8M9FGAolvGLM2riuBZJJcXqDhuUlC0XxlKmWC3+lxL+F4D9VcKT0vDRZFsoLkZzIhNdG4CsWMA7GOF6DButXPDyP3GFeHvrgLK8hVL6pwZfLFbREpzJTQdehojFedlcZDZ9CCQJ2dfER1fV7WbQiqE1XJ683jJAkEN+c92A/U42ujYonjuuoM/Ti3PcCJbd4tdHWQJwAfwebixv9oR9JOGNgYBPHQMr42F32r1iRmCt+ANIBnKLIKfR0cYachUpshqTB4N9YPcTKGeXU9An0EobYGVKFjBIHj4n4xrETdWQluteyaQlTz07eCq9YKk5T2lv7MeOpMOpjSicoZ/yKedywrfqyk4MCPxFQ5XUaVYRJOMKSoiIfYLCGJM/CJytLhwsFwYCg2+uWGFS/NjLjOnTpqeXtPiBq2otiGd7LZO2uSJ0+lOiY9fodhoj6td0L4goIiTrtZBHDCVuov+hRhlbW3w/E0kLi9jJbkpUvXLc3ml5Q+9akcZNBXasB9gjrEOIev+gvW7JgcKkugoh8Xw+WWkZErZyPZ23WHwp9pN080zCvG9vTWoj3OZ+rmWQxiCovZe/ULurwvGoF/6dbMLaba29Ub/zHyzFgi4/32X708KTLT1Luml9BFP/jNuEGYYK491rq0W9rjOHAa04ipxGgaeDS4H70rUj4CVgcliiPOC0xVNUFAEIFf4HjUj8ToMcTjodej7LbPaaAor08wyStM6bl7bn2AJYo+dJDys6PISMfFTWyje7hXHo+/zvgYkpk2bZG47d5e1b3R+zuOtCO+PvXW7b23af6/VqO6/k8GKHET8tIv93dwcs/4jm/esRD0Qakh58hUIbfalqvVxXxR8lXlQLxoN8q3vGvqrUd9ZNoiVf3Wyp5DXctXd/jVE+7M599WkivtFqtj9BK6V+S3t9vI1iS2ENhelPFpKMKXjnye5VcuyK7XiPajR/jGkcW7cTfOzHEADTZE4HUI5CxsgZ/wnqq29Bd+Z/ngpzRm8Wussx26+Oe/vRhdTy2nlAaHKichU2UeUlVjjqyuQc6GnAl5FUY+3/IhBaWPChy70QPhHuB55ETSrjSTGg7J6ZjiMSu+0QM8z7jwMzFYQWSQFfrjrR6Wwx9/60EIr1bjGoEvTjZzOGl0rPRZ6AlkNej5PH6qKvMetszm8/xyF2+aBds7n2ZasotDSj/zsfN/uW+av7Qh1cw3zXiMaVqW5fy4YR2f+c7Mm2G2i3c77Zm70ed53bENQ6MipbRNoIBb0TbFvJrNCjxdH331oQ27rjHE1SD9qyc+fKLqWfWJU6h/GNs17anWqxlaAeXHqE8kSfglD5HnIR4gzV0d7THoBMfKyJ8JvKFJvvLS9gARIJDlP1YOTJxkblHXgpntvdD9jyrMigvFif8Tmsxh93VJcXzkNCv8x3Ojd9TMqdcRY8rpaDSvHGuhkHUr3vXLl8aG51XZdQ2jh0ws03wwzXPqBBOZcdyHjT6fDsMoKJ+b8c5huSI+zxtp3/CNKchlx59IBWbJZLQHWCa7bOU71ZJuw+1OTz7iVhF+SlYpvmex4XqN9KRsFYy5CZmFTC21R3Ol3ADGnvtpxccaWb/iw6ByOSS+Xw5BHR42XllXpvk1d2O17XPPvRCrvwk3G5juRnEmwLosRj1RbThvkBqfTpvgGRnAYc3YJ5qmE8VkC1WUwBzSI5hIRMKr8+On80W1EXFVzSKWKAVOGW1WGf5fPwzFAs30tRMW432GUic9iV97EZoPYeCrIZAa/HP/n2/rT3t71fPNPtvroKfSh0Nprb937cKFtWHpX1q7iFFQ3qIBi9j4w0c/ZLzxRRC4X9//t9xLWEy43/vqyI7ft37sRDG3e626XjZ1tJtrIuH+tx/6rxWKMN2neoirU976299764cC73KBg6/SL7x7eNH/QKz4/d4zNmo8wgyOqBHpcfGEseBOFpyi+kqVfu52VJEZPO1ZJJyDngVTpjRzbBg993hc3ynXTDqjEbUt6LfGQeAYIbpRLz5KtrBujrDU0sHII4x77a6aLRGZdeAb5BoRKXZprzb2JGqUu6N5l7xS/8K/0OCkcKJZQzWG3Bv62MeCNs6nlc74rj1TPnm9cq3i5rr+o8HAGBUXDmxb+cANVY9lTcU9VZwh0Cwds21f4km+ljamN4/XMOcn1TEpOlB0TDHtTIW0mT48uMCRbDiufUfYHEKmbmHL4ilBc4hJAG5rOUb3sp2TOc5t89GB857B6eaSJWdIi1RLl1fjeTmEPAvCfNfbF+hiXIfZqn6uJ67AOh9xvb8BdpUUMhEKMsY1OKJsjrbt0r1ZSz44uezdUkR+4HB9HfXPabqzoVP2HsxhQbbvPv3mnq3a/nWRFjUglMxIg/DNJu9Ak26/HjvS2Md+CLbxxXhvrvWiOODTeq+jsC3exd6ZqV3Y1yrE8fKvu5lhWbusT5ZTUTu0jZJMlVrsyWUCRxbBd7DAjhmpc+H+derN/08BV9HOZOPZwQhHxlrLb/SJUJoDpwWZEYzSlVTn8VqsExP0azLEJNugawNRj4BuEL4dy/rb7gfcy65XuZHArn8oXXb1ZZe6G3W12QEsNR1TSRBuB7Wl186RxlOmi2LiuidupSOhW6ITRQwKmtg8VL/prNbwe3isckx8s6bQnkTqpmavi49V6WrZSpeSvuM72pzzOa3xIM5t5PmVEOU3t3gUvf6HU0303N61LJwEYnhRGUgSiGBa1C40RtAEUxitpFUbmc+er6sP1iv4jHrriT5Q62ldUf87p4ORbsugoFdAh4yR4JEi6bkUkqZtLnhSNTtS7QSIZH3bfgT+R+aj26dZseG4QqTN5jBvleQxaj7BqOIEFG0aGI+aSvTf6djzFTufTYKT0ugWg1dBNDBtzuXCeOFgSZfaTD+H3kTa6e6iPmS8XcCJF8plRT4oAAoQsIw6b7jLtMYRWgxaVlfD0C+Bs2HEtsJQxaR4CVbIRThVVKhV41Lsmnm/Q9OjkPw+DHp/v8j9Afaw6B+k+cbv2k5OMRxVPPG313z/37FlAvBv2f/cEwPBv8P/FWEJQKDgH9XvkUiDASEe9YToMEla6tAOsxPkAjS1I8u0L7Cg+irfgP59Ez/JNF2eekP1xi3P1W9vAvzzxWg7xlZRLcvghSGTHiJDo/giz7K06PJCetoXzNUoi9O31t9Yy5cmqcAkIenEEO9itL1bR1Pceh6sBqzhsC/jakAlewaco//WSXX07XPp+XyyfOoB+sOLnxjpv+AJpJJIiWCK4cd731KYGXs5z+ZMQIDvK2zGhjzpmSlLluUvJknCm37m42WMwnD8VveNTms+lThO8GEfVshsjKO3meRIcuKKJYRVBR0Nq726x/MMp24aRDbYiNxPk1jRoxuEvOefGIH/+YasOD20nGXALODWdMqTAjNN7Z87+zLBrxHOMh2a55ei+ctwPA7cSeSlvTze9DE/rOBrbzJt321/8eZ00FJpw4FW/TZn2iEyrvAoa56Zv8m0cTuU0gAHj6FveZqviGqhfydrvObjO4kEQ04qKYiE5K6hL4uYr8KU2ZN5QeKRusegVe6Bizte31G967/S4LZwK8NATP/KDIpCoUXOL2b2Yz9WTIPLvnBnkJWuaDarPZqv1Nf0sejsnmf3Q9eKXF++e1ymIbNymZpZr4pyvnVSmgrJ9FCPnZX5el7utEDYjZ/Q9pH7WDWexaXTCfIMfUJFbgLo3mKQvgVjhnDwo9zmk0qDFgymtVpepQ1PA5gk4TqSSJH8giYvRafBq8d7g6FpGqptaZamcVFiuvG1OVP5rvzFfDqQNCU+RwdvFbSmr6Ay5kSogZmn9HCv0lLJkL7Zd7mP+V7dR1/4x7v5TiIwiP3tBY5bmu1goNWv919tvt/Yipb3OY6Uxt9KftFNSJNa1xoAmNB1nUH8hxCIK11I2zObJZFwfwOGR7W+IydOliX4A1WZyPw/IiE4D8fMjB6c/lsMpGDGfHbzdXmc/ikUsY9h9zsftrF9Hm8+0PdCnP+q8yhdz8VUlcSTZXo9ltxNujqs4Nf1fqEPkn0ghDuAfVDNcGKd9mUc+8GDZZlcLTfoGuUhOZjb/0circIEn9c/wReMIhXNG4s0TMcQ/LOZmyZvzJpk9FM/7aR2ZRK0LF1dAZmFrPryVUvrqhUqf1Nj2TuyIfPax9Xl5YeDp4+wCG+smE6T5OsjdLdFUdQipQk1jJOlm92n8Kz6L/6CwvZiWhTzC/ryUFdaTVA4Tc8zArYdRJGrB+lA9QXb1GiPSTLh8KKHT6AErooB10IXM1+rpbMnsFufBo8RBpgXWBXUHThEB9rf4snNnCSqaDzMSLRvP5K5Rc9oW6lJGHkY7jZ1wGAztTnMbP4eXYzDZBl4V2WFKPAZZ5fpdXZy9eQL494W08D3Sq8seVRkiqLbPKvonxZ4HQXc62mKbVMHnVpkWS4w8njcoTYOzC7MRImCv/1DLdZKX4QYxfzM8BYmJn0TuL9Kk6Fl8bzObOennGK5VlrYls7XtVxYX202nOaYJCmKVH2Vjx7PzHuMxnWyYqzDyw6H1+KSwyrQVF6i9NdbLlpWx+OhouNYT6llK/vNDvET1ooliqYdXVysSFhgGdp3VJmvSl/UJfTR6LPjvxp9tirbnUd90b8V+9MfhEqvub0fOol9ZHJkdo7t8zz3QM/x5xANeFUbMQKQnksyu2JFeQrTZ+kp3zLs/kVxdbVf16iCeMAJBY1puB2FCDmdVx8gl4meAVQSkRVpnCPo2xYcJWlQAFtY+SDRF1fc2yKMCmE37q0nVssSnmiCU9EGIhVeQRDOJnIZw7BePr9jyiZYVBTeNdk4D59AqE9m8bxKPIh6+TIVhVQaz/g8wfiVbaYhnZcNgGEOow8E2v7bCfQp+KaQXkB0okt2livpeIKR56BsQd09yTXe4TYTBabmEUyKiEcdg1ATytvZaG0n+fYxAnICgbCXCgCHnedTbJmf4bL9wRnbaV4UfD3G0jTLUm88JnCT2a9lKK99/QWISbLMLNvOPT0Tt4s5esmrkHqQJBmUL86qjRy4L0AdwBSyco9ErkXjdu2s9gsaMu6QDYA7wXafgIQwtjsvptkqr/KqnVnSjevz/J2Z9bLkJMMolR3blv/pwDopWYkqdhkV5xHqiA1Reo7+W0lSip0gZaxmt4ZE4cyKWjDX+oo7QUJKjfPm57eLv9quYq7ttlPoQNMMsaxzF4S8ai0WnOWZLKu+66qqTLZiCMe8gXMr9/2cbhZLZAkWldRzroATAIokhH3uRzkCD1v6vjGS23zfNtIs13N1vVpqS/nNxo0874dz1nV/POZlk1HPxgP600a/3yGsc/W4OAXJ7X3giff6sZfTORTpfEZ8TyzTYlmyVMbuKjrTRDZuUaEJSjix8PpYgLITfQiNtd7L4njjAV8+FKRTV6o7hwEW5VPqEehtLaSx5TglulKdxwW56YzljdxwOhQkSyaRqJDQ8dELor6gN7u6St+tgr1GUWtvlUAS5gd9iy9w4jMNvyivNrDtdq1vgS5AYS3J8nqt74J2uiy5KDNdH7qOM2ypoDr6Xhe822mKQ33ougHo9GPygDzFzKlIEsWosi4XKKIDDZFuH5dosKw/xpMnUFS0lEVGl1kVQNXJql4uD1R8abOynM3KKEl4UmWmafueZ9tfb76ayF/e8Ac7+mLhcle17Ca9y8WjG3ZEV6uf9+Bd5Z5Enu37uzncEgvVCqkO8F2TrKbJqUitNZkqnGYCIwnBRJUI81r1GUj0dfyyNglwQy2EjY3+znd1dK7s7B3t5/uCGZ9kK7X3vGfliiRKBDIBiafP671Qk41GXhSGnjfCeUCr/s6jq+sUvRr3cdf1dfe+2/0AiVPe87SqtL59s8Qdt+d56EVRktN3Pj/WhOryjp2vIJaIngklcXMLEj4kpGt9XlXlVNKS9jnVYhyfhAPw9DcCfQi+DykO+8oyNIvMkcS5lMDHHhL3zYe8pZV5I960RsbOZEbpf0YI826nhq5lWo/LXPSTI1jad352w/8bW7AR6zDKThXEhafLzQRRqRWwGrR9nMo2vr+hJelrKNc0qvyDyZHndIYjBtvAOMgieThyDLUJp3qFWnWDV+ivtpbAPlMcSLzqwSfudSGUfH5HucacY6UigF/Tr1I3n8mzTfM5FsGC6TZZh42+VRNltCsNdNPkLMdkWdFUVflK9M1IbkcGJ/EUFJ4SUJ3FCqW2tjobpWkgWvd9GRM6GzXpB1wjbAvbJGUyqp1zD8uzIU3PzLhgmm4RhCGvepnbTQqeDT48VuhbzgNfTIUx+l7EFIKqrGJL+Ik7iPaIVGtYPWj3GEl5zB9dJnw1PNbUspjqaS+d1/3MC/v851v2bzqLOpTTxgqlUrlMjOEOjUkvLHo9xc4VmMnqtfCITqKolCrnRh4mjzfnpla1jK9E2SanZt5U2HXf4553TcRNaOvaaprn8UzVdd4PszCOnRC0PJ5OE1a5Z4v+ekXEf8mPDm0qTZrW9B4+miMkUDBOS4GDCwEla9GOvQAOOIcubpdhaGYrUVD7nB6Oe2s93vTLrC+on0kZpKj99GwGdnbrP6HTXcxR+npFHMSFdIZdWTdNRbNyIEEdsppVqCeoNnBecJPS5IJRJBBeh3Ex4t+wVKwaZP7ry3He93Dzjbt3xWMlB7gO62rJUpl+mb7eI9qHt9W5cLvHcSZJuijtS0kNfqA/0oULYeWB7YsyHidJLh88t6g9bOBRPb6GNzs9WExPSPPq0CwnxyWnTcHvqJlW8quekZnu7PD6w2TecdrlO5XjkKYRIxsDQODA8W3cjuC4u16PVs9XFcsLUcivF9++GFwot1jw0ylWVRcvLgYvxs9su+pdcZmr9rurc5W2XEeUF1UVFQigBXyQAEwGGfQ+ax+30Au89HSUlYXoXySPHSbxMXfPvYctywJ3UNAhtjPwICPmUA/PNdCKvbJqOyxmpjNLzKmTd6Qhe31RJOx/Hk2DLEkiPQE6AYkoYgtrONQ8PxifRdwzaIYFxjTNYeCaFsXQshJXg6A4xDzHV7BEuS9wdlCJxhguti2ZA6dzCEg81ZWXoFhF2eXc43EJpRc6v7V5YzsBkPCqTUWgywYGwxHGwHya4DlFGLfyrElbaw0GM9UCE85MiCi8r95QH6pfqwEUpfwmQ49hSEdTCcla23OxD6k2CQylHEN23Y8puZTsgJWS29ioOwDQDd+7KycDt6iMFyJcGaz8gD50oB0apsnTKrNDP5sTHNKsKDCfK1NU6GWXbWbb7DLqWq/bObcNGImsRQBzdkNWcTMQU3OoJEvIFHMkOBK3war3GLBjqDEajzBlG6HhLS216kIdg6WtLWOd/MqkRMahi7tLvf9QP2izXNTrcnqS/E6OEUN5kFIEexslbQHg395VlIFkVpWqweXxYbJY/23E/lFh85YFV+rsjJ8CGywn14ZoyKpTgAz2GF1WCEKXJNpJTqSg9wyFOEnSbcycU+KIKTQVdZUBcYX2KVVxGM2z1NDB5vfneW+9wVL7g1Bz8jMSuhBSDmoZOASvtrzDE2zRFANVyJOVvHMcYJNsyIFiYDTicYlpAMzRxNBE1kRxSJmBh1yBi7d42KONPIxTZ6hL7e7cPop4c62Ozz40o29g4/msfrCm8kA5O8wWiBHP740b2g38is+ftZcd8pMfnwF1S58Jtw6bEzs+jTPq+YmcHqNOsZ4cGmWTWVCUHjvDJyQ5tHzozbb3U/D45jROvZGq6cpmhfNkAUS8yMM0eHUfYB2x6NHZi4dqCl9tKYEqMd4I7EZ64AGvJ6JcVxSNJXouM8aroFlLa3kpZEyW1VTVllpDKdAMkAYoUBinoez7CUMy3nwjx7Q/5yEKMtxyYQczPqISSuNJHB8Y0LZi2Iz48KvpG0SNRCnxLFAP6Ba44u9wbVvvLvOCUuTgDxQU0v9HAABOhzH+iYMDQKSs3+BnzO+MGIbFreiye9zi0RScrWHENPB/oI++fdjt04N1Vx5+pUWPoajv1opr+NWsKc9eZdGrm4vGdmzn5xMZApYQvBldXB3MfEVELymfZ/wM+x0TjmNOcl1slzSeAbyn/RQimY2HbMcnEwA9AAkBBN2ieCNr/dBflnNUv4LU8AKKJCjDRJ0SVUr5DLRUGGUcvkXcczfAek15apDKoTzsP9w662rFlAC/wmy2zXRWj/1VpITQtFPh73YrzMMgDi5Jg5l1EFgyE825WesMaIf9q2O1ayJWgDnyoy2LhjUfuH3Q1YtaqguO1IJSjy0x5c0qk7XmbM0na4KsbE1BuNpO+42UbFWKoRNAZWWyVu8GTQuaDYSzi3uJxhSiFw463DehVt+8lqE+rW1Dhni3jNBPE/FDjERGHoZ8gnUIC//S1rs+9b4IdYdmZSw0yYscpSg5NBDZMSyAwS3vkpZxJosiDmd/Jty/N87hmxz0Ux0f3PLyph86MTU2rDg/rrV6dWRA4EXrZEt/Q7mllrhSjGVHSnMyDupxwDUl4hWrvRz3TR4QD47hPGq48gGai/lpyypugeqmcDgVRYcAHESCPQGOHXMYzY2nV4wV787XhMVzmPdsp9dS6emdtan4WjwjhpZmj0HUH2m4NzOyWj2hA6wY5wgeU8gghBA1H20ZFBJXnOmHDtBdrWtOwXpmjF1WYCnmXYGKgBBUwggzCtxqpgzZsfq85KB6DKJOpFVGGxBbPtN0xDBRmRtAOINZUKJivIXipVOvF1NJPJdnI2t1mJl2vk+pkVkSeIP3YB6A60YHacvSKAf7s5iTAKk8NdhJs+pjLe2k52r48qKPXxyrOILxmsIASsNsJkJJslnGrxl5Y0o0WzHv3+Z/PZoeeGTd27rmfG3O4UbkPDlvH8OW+XPcKMJrocdt89/ftoY8ZJFSWZWHSq6WPOYZstGGFuYoFsp7o8atwb9u/vvBJGSRlsilyTzhv9fh/hfB/a75gXnfGMNQckQkiVPY6vPUQ6dXNcTxSHLvelZ4uc/4qsyed2jhPXNgeqzC6cWigOvByvMfScGBa6rhMEy7OM4wnugDY3gRU4skw2KIioTVJh1dETwxqsydXzMIZq/HmQjAtbupr6mXTID98A9DiqRo0hABlw0JSLA4hhsm5vJwgmEpGicoAjd02OVSOE0zX+D8If+A/4EbwRAMxhsAkY8NVQ5J0AwOWYs6KrVsksrtaQgJnaef4anyvxcwJiEACpKIFQeNB1SOTEesc6NczvHM1F3HLhwzc8vNzLhlmIYle3ExTuHyz+mcW9H6qQuvL89vlNrepp6D872zx3u7NTsxxt/u8mPvYbzH8Xvc9bLSj/goz1feeJANmBdDpGYG+4HZ6ct5UR/ytizra9krp6OLxdFIU+72eoMGbP18kBqc7nPCA94WyxmdOM3AZ4xYE9sCvTYkvaKH/iqlSSlRpMaTQsL4yoOm5cCISQEl2E13wygfs5djlQn5+w32WD1ZDaQj08bT/HjwemAJXuCoT8Z3m0vsWbbGXJwGPI/0RW4QIwQh8FXT7aZoZMOmcKGVIn8tIUnAW85cY9uQqfKYxaLvGmTOgCn6My5khqq/PujcoYmMQOvyovyltL/g/BqnzPmBA8WMRw+IouwZv6WgaIy3RIZboPQzuKL0RDStf97DSYllS8qoeZSmec/h7fyWGreUT+emMndMtvz6zPXMcH420ZdaBonjxCCi2SvoJ1LIYLx84sHj07kNFcwHZ7Y31x1LzNhZfZb2JUmkxwdM0xjnQlbV7K7IfMuKjoiCqLmuc68MmpfxSsYkv/qbZ65gnwYiGukXRFkwhFuCHdK2yWRXEzxYAj+w55oVrjdDPlL5oim/GblsGR1y7nxjLpgoTMIeoUIAkXpSsxr7SyzEfnf86I6vIweHaeAVTRRKv5KGJMvZuK5tI5ZHpaEyxdRYQouJlfgEAda0RdZebrx/rFwxejUAifRk7i36Hq2x6RjZmrExTS1G/nubfAiowgghq3UBP6GOqMxl5M3nhp3CPp0ojbxtycd9Uh9MU3QzJH/cO6DF+q3qlUrb1fOVIpMSnwCAVWn/RB8Ztq88Y5OJxCnlAkwyOdbwo2bKlB4IRjWxdsb2gtGlgiNjfjXvwDEzpkCTkBSgWxpLtOrhwImJY7eqjEwpgIS6BCtEpTDhBk4+K2kV7di386ocFRv79A0u6bN5ZeVEpXuy+yG1+GSjo7uFbV1ec3kiiw2zDefrF3lhf+I7Ny+v9IWbuzb1wQ14HOKigOkJyY6EhAQp8FiGCOq4lecrXJ0TRkhuYrVJ7qPWjUtCQYGDX0TPors6veODkGFeqzvu4vkP9X+JftVQNtD7GRniciVPLmuGoz9AElAA9GsBgRONx9TTSrKKTOO3EMhb0YOopU1WtnCmXlqifg8g74pT/Li7G5K0HjsxZtoFTuJq1I6zK+XDrFAKwxQF5sAwjRM17Re+RthNJ7ivMnuBrgpDGS4InWDkWN1f9NrxQdoHqg943IoRy6WBxOBKZ93BkiSfO64DCs58/FFLNJ5ff0DP7xifOp32NGYnL+HhkdmmW2g2U58ZdnRb9jNbAZgqKMmXmrukfJPSplO+/Hlfx40hfeIww6ryiMahzx3Gfsww0c+vCGxsnNh3QtZdVpGZtU61K5ExwY+QK+KCp7+x72ac3i/Ysp5dwz0aMM/05ooFZrRL5eVxjvIGMvqV5wC5Ah+5vFiHN1W5a+ineos+7ZPIjna1Nuzve27EzRojnXbuG8KBu9c97qxj56x6klfiOaEXAiCZgvHYTvFBH6mFWdo/WDXOoNk6aMrywMWLYO0nDxyfU5o5TrY7gaICB6YJhsmzl0H1gAktB9csBuoZpWvJknKPv0uV4gDhROfNBULGcD2kDIZAdJEBAQhWwNipfLpPHzx4XPk3H1b/6hh5eiExBL0APYGjsqB1FBaCDuW81CGbZ1La0AdJdiPtlxBE/6sQhJpBG0tWdv/Avm//iWHZ2GY5IxR5WPKNG3NM+6RmGWeHPVSEPY8Df5JsVUcU3dky5k/L8JxC467qQtWt3H/Y2F/efK3Q5YbskIGO2z/P9peNXcZketd7sz1bjGgL7OLeUILnjhrYv2z96+5bTg3DPxv4jMbqATOEu5PA6H1csJi9KO4xPRPbR+7giHJyt+AMZfj9/J773E1lx006mDeCLG307Q3EEDuF6We8Qia1wVAwUgqriLN8f9wwFuAvGss4e5HxZ9kScqKMkf+pF867fPQvLQ17ve1Y+xvJnvycXJH2Z5wWv4l3uf0Zso834xoa/QY6mRxKuDspwog1XjcLGFWONGZXo4jbF2EnNnz3phKb8PpI90j9SGEC9ppFSymsBK0F2wFKCO4AnXv2KE2CBxcphpOBElXUsG3VZXWlZtZtSts9Ls3dZh7hRBo9UWNGvK6kapoHtXHveNaInljKzm+9gwws9kzNBoZBXLfIBP+TdC3i3fIwBvmsqB+In0qn6dUdWAyrc8vF18hlNrhBrk2eWuAjxmGAPbwPdpLpSvB3u20XYTzZX1i59J0sZM2tLqimnSz+/lv8FF3NhzoWJmix38BFV+6cBPndQrHvoOTsUqhcLP9MhuW4mW+beetzYrsCAcmrbKdTbfgcGZIuDygOFIRUjBrHFB7j2H32xsmXtkrvT72fOX6+1WoOeveYr+U29lDGFcbiXzlEPNa1HCLXazYLf+Dvx/eiiX+wsaGs5Sz/9vNnTjLHbD9PVBjaveJfzBXoxBx6eOkzJhjEfBc3dil9S/kq/hRtjgCII4AIRHcAjjR7yNeLFQPoVGzvjUdzJ2uuuF74i9m+natjPb3/48wGoOP+6v5FveeIiZxAn1Nz7smXOWuDBqPD5tiTzEAMwMG2LgrrIG3kAxVNFjzN9nk3bj3HSBU4uFSwJAsG7FzZ1I5jkOVu4Cd/eD137rjgeeF0nd9wvt7+1la/Lv7IkJ8R/0eQf0ShVF0eINZOywPvWdcAZl53tq86W7CiDlTggHg8IMXjdbr4+cd//XiyMtlOuZ/b/PWDyd/d4BObryX08PzViP6hxw87/Hn9niYEsoN+THlkbGmwz2jV0sH5Zhw8H3eqZH0Ym0qcEWORrvDAnZO18B5TZtmlUN+ewiksX4xYZ1ewBe5idN697hptFMfLwTKPybfpvOuvqiDfqQKTcUl5MAumk9nrYtgsy7FzdTa07Gvs7Eq2wcsY/Zx4VxDhx63dbRn8tgiQSQdWyrqAB6WOHHR7ykBpWQIKFKVgjxfUt+Yy+74Xe+7zD//64ZgabScHrP763uQTq6/V9Otv/GpAPyzx59l7jPjkoB0gYCu1UAjNaH9bofBd2WjOVJ32UB/T8rwkIyAS/AUx2xNKaCYPUHTMEVAdwpX0ROyifkZllsGrzTea3xsMUPxAUlhda/jXOXpAjkxu+0pL7TbZJ7PqVEfXJNmVBUTVYx1xTWfnnL6JDFctndYN/NbaTUh0wzxiEkmS6KWWNSSzl31dp4WZUjsT2Mtk8UnIPYDv8tQ8LWtcEsc+wTua9i5v2baElW+KXseDpuDDaV/3NAkH28p+kTqO4prQ3CO7Qcj0u7G9YxjGniwXIJnTghYOa4SCNCe6yAjNPLBQ7qM8yFv6JOeD1CPEL5lYzG5/cBFQUmmEfRnZ6k7CuzwioRXm7Qeca4/tjZ8HIAlTc0Vga2VVkdkIWJ4uKc1MZuLcm+bK+h5aN9eWzpMpMSRj61vEGBaohT1EIV4BgqU+JF05d4JvL4/5E/0mq07EUfOhxX2DWgN1qrRilZd3gCaR3kEvIeW7gFvtRf40+KmbTAK+GFAJwgOVwxCTzKgkkbrJYaPENmP/c9uKUs9xKy4isl8d2wLHLa3sA4HnvXUVBpQrQOz3MIGTRaGMqf/Vpt0ClkoH3fHGIzvGGdsG8LZqqm6F3ex2OHQZKIfzVfwMyFxDpE0zJdKIRTXgIUMYAPRGOUnguZfdl6F839j3/kegp91oRcYA6z/sY5Mxyh05G5aUkcXL6GmkE5OOiZmALE8tia8sU3ERo3xe4FUV5fQMj0LSczj2gPgC3CN6BaJE5Ggo+onHNNW23Q6orqISsocDsduPKakjx4cE7MKbGBCNBR5ElV6SK+bK6JbEJx1iok5sWOgWNTFldAwmMBX8lKcNF41jtu+3RcotIaDbCD/QM/mydbw/T/1O9em3Q5ems6Sa+qtz6lHTHG1Ss03qORBo0U4ejWWVxzOHiBYEIoxLKlNarG0FQbhEgkQaJXZiZ/vQFN72ncWhysRiapcSUd8kGCkH/aJb90kjcVriMqk4D429F6P3e6tSLecoG7OTU3EmjHIipGzD9nYDuwu/1+T2KcKFPq36J+Q80wlmkGBp05QOh7TdLdGBilNAmuQSjslD8z+MmhL73akGG6pNxNdSY6axUJmqfIo5wGnsYROdptk2/+Rx0fOiR3OTZC7zqsUBcQ1My4TkaPhzyaGl5KFyTlNtiAuoE2sH/3n/nSwS3tZVXyT45YlpP1Qys55FwflWbYeKzaH1CijE4jjBicRg0DCHviDrm7yvIScxDkN0gLR8IDA0vlmPzACdxVVsKcGjbxeMEOgrp/FLV1PZ0UDNMuxhuIt1niRg51dTqmlkKFXpuSl5eTgAht27VH1lcjz+Xe3VO5JkyYCY55WwJO+5vKJ/5V+pe8H+RG3iMOZTPu57RYdjR4zCocn5E/8lUFlp2Bnw08kDR8h5VUXPd54ZUvkwuXGwLm8QVWvEAAMeHEbUdDXHspHljTink8qtaGlAF7gIpqxUHTgXUNrXk093OAntAkJSiPzw7qquHNm4onRDPp0VOLvxLyAdleu/SP6wiJCAajX5dyJNNrXwZFToBG/4fK2UAqMdoxLa7ap6G7y8HAAsl89pZdQyM4ersYB7Yrc+s0UFPV89QDDwJHOCug0a3MCYVrWh6414WBcWdS7g8KMTacFUKxuC5ZQPlDbT6b1uw5RuSl6Cb/ksLWYW5yafqJRUYgrhx42jfefMiW7UxbCYwL6PVhjHfCp9LA/QhgIJDw+BbJjQFAIVhqQCIpLMdTb6O2RZVCM2YYHdThVc3pSgThyiY8VPyh5HHdu15ZDaZ1VDm5xifibKXHG6Adjxi/7Y7rIhdWi76QlPgHpIEkSl1OS2EcWpN2dLcUzCkRruxj8BpST5P6HPR7Y809fV7ac8Y4/0RxZZC+04aCq4OEN4GUHmV+8dzHOLYhMkmqDQqGkpzYTqfSmtQXmqcZmu2XTPJ8tnPuOUz2I/PSb6mb0knJ1Fw8rGQEH1QKyOthNnpZ1ploK1HEmt4Dd4KSDXd8QfENkqOjMpiv2mltW0p8U1lTVijVwDxVAUIwkKyWS/+HesYTercRJo3MTAzeu3IoyUmSEO2TroUvMNuYxgYJXjNK+rQ4PHD2PerxGjmuaJmNYyzT4kjt4SAwzLzAyYpPnKwgHF83uHB8xIvUiA2zC0cCO56dmZu1iz4iZlSRhpysxrIa+q8G4ITJpgyXjcMs3G+Bc6PZBAOv+aqTXpnHSMG8kRz8JIKYZEF/ZK5Ec1Me5RO24xAWCknjOu1xAMg6k/9u0U7G2731hhFIdU7GosLqOcawx0kakiz5pp3ZYXt4+rjeEvpPq2jSQAtYWitNrQFM5qJ3btt+3MUUQv+ikVOHfTETMzCJaR3QPhNJKcSHXloqna9TareZtxgy89Cuvs72FcFkIBCj3fh3veD/gD02qDc1IOGzGH5+Gw6Ma47KMoIyVDdAB+vqDLUDRyWDjEq/ls3Mml6Bs79M9yOodDimvm3AiWNlObEIbc8kC/NwaCnolHuGngNl+aubWuWCyE22Kr4vm8U28dE++tNkgKd/oW4Y23ojjBIHZyAWLRIOWEWtBEdC2WFXtX1gvfueKOeIVMWSAWks66wEWd17vB5HUHQI96XdLtmvXAEq9XFKjZW2sEoyucFgjBgBr8xTutP3tlAblScdDcplTbyIf09REMar6mabEjniRMY7Gavhqpk9Mr+CIcCPFFkqa3tbxkyzMGrPmnGxBMfMYlOgN3h4c3T5rVkfcKC3wxUEdBr7vDFyOgKqBdvRObkJDueyCbRdmUuJ7RFimSVwrWo2anc6OlDU3NHk8zedEIQ54VDfsGMS4s7ki/x7uq13fapXzs+XwnXqDAlYaRSl84nkRvy0RmdJELkDNAunRFuGl1fMHFsQn9QYzNYIebdH2nDWH1y0cWWglqNPHipT7PTQ5XvYgWVPFFslV/m2f1ZbR1jeUONytQgZmizNhKsWXoik77B45NWPDX8FgTN8+40aSXmKXGw5Hb55Fd+2sToRN3y4sgEOe8fBmNEEbC/sgLJpL/C+AmYJvHszp7UcrKKWUvm9ZJhQw1NONnSPafw6epzHS/ECHC3Bzf9YKikf9cPz7eKDqCRjkScoo0e0+voALOcPntjzFMJ1ne3jUY3dCZ2uaBU8qSuUNvbCF4C4E/MjtXtxcualQKwdeuqnOCiJhm+zaQTMnTCiF5RF7GmkuJHAFVdVh/d1IuHU/LdT2BwSDu3g4rTrZ2hxTg/GYxcrgo1P7l0dMKxc3rp6h5lgkpXsZaa3UUpAZ/VIPX/dJxgV3DC/bdaYIWU818zRNV491GW0ZDni0mgz060AOiDu6GdNGbIOMlSnMRww/Ob/eEK7fHdvZquNzjWUBIAWzUkYnzeyGeiVrzo910xoSzFKapcdSGRum6X+/GEJ6VD7P+gShG0bR9Oq29utWzh/VSS2HaiB/V6UsBEd38A2QudwkMzyLBnm1fxIV+rzPNMmj5x/9DJCvNyd0XrRGXKZgDX3Rx7/HKM5KuCigAwh7SA8ldKye63u0pY0iIYQPBCT0GmJYoz4MA50wk5/DIg3OJP8o5R36kRQjI5chHF07BFdRj6M0EZ2/SM02VlImizNAB33y4BADU6qiM6gS3kED3cY+T8bITCVy8dIQRGDDq8B19IPDwq/jDhtsmQw/v/ds/uSzG3cgeqiyWXL0BQMAO4jkPInAIOgWxdXZm6eCqwXqeO5xwRXVDq2J4IzZGftxdwLlju3hVQ8jTpN167tZ0StJ1k8LjdqJJ44TrXEh27ciK3uMUJ29Q0nsEHnORs63Ja0uJU24hSA38y1x4E3TTTHXijFE7ubWiNMNoGzBLbzpDDT/fIAdC2AQGgEPEBMBWmqfgkKNbq0b6j/jSpmQLPltY/GTMrNBrwhdWkucQvg3BaISGT39k47mIywqXGa5KrEdl8a+vwXMxnhvCqxtMwCU39iiPEP2aZgodjcTpUZ7CG0KCHk14Wn5B1xZ39S2BtP/p7mawxK0hjbpxDHoZJmv5lFnm1A4vabsrFhrym8Vs4LQlvviSVMOyIxDnfts5E8vtb/f3GR6HTZ8eUVuUBezBYqnlQweXO1xlOMkeYgTPYiIfH212+AUIMdhPwY0UFm7bEZcvVJtoeG+fHnof1aedPpGorcIQ1a97g4FTb42kT/o1PkuvdLSMyLEkcxtznCY3ZnHPJh6H/qbYcN+8O9Wg4R7vg/PXVQkjnjvao/+RiT9N0e2eZxP117OdGHn3+43zoNA8yRT1/yWU02HPJ8HUDXPxOfi5f9+k0H+9FOVfvfh+vXfDvj1Pbr4deskYxaJOaeBxOTA1tWGKCaprlesAauxQgodlrWy+V+DsL9KpaTSbtsMFan8+H4Z3Ax8G3c9RuJj1eG//2twiihRFWWKbm6KcFZScBuLHXSwads62m+ISdUFRKEmP7yd+fB1chUMw0kgGzFKu4aDf6Z+0BkU8OALtev9vTGpIYgHKNEZSsoidm8ojIBMijzzNuPjWbbmLNjnDTTNFO9rvuR6tHZ0fuXHMZjOsJCr7aEGQMcqBKvdDnCTz5aPLg94sxtUrYR754EgpaSZQeMbWFwUr4wgNMGZLHcfG2wBGsQ3FOBYACwcJFDPmQmA8SGsLWc4W5n2F9U4rhtCEWsuciCSiN/AjsUksulhHGXxHsD+0Wk2upfy015ngJgBTXtHeeq4qs5gVeAGPLD7v6/bxDEa5FVWnK3LHiB2gliUlnpbOLCumfmvRNWbebt1mjoeE038gruAkpQB0N5xHt72urOtHdUsXJ68noZj/P3NanG0fQCGYYqBIBzFGea32axff4MKirqKQkZDoiE72+WwTgVs/c3j9BXr60H1rbGmIveetVWO3VjlTInYabvUy/6nLiIHUgrETmaCA5KVwoRJthCwr/ovJEArwkBiTgJdMMbsgLcin5HIH1ACwn6fwzjvQQY2Zo/aG/EzwDa3FaR6yR6R9af+wtsbtsB3YzRS3bLmjekV5B4fuXfezroM6nJM/PZI+rrcyKhRrpkOF0gR4WhvK9iReJQjOMSWAcQMTt4EOiVGQR/DTVKzwQ+ypd148sGn1MGWHzdk1LU5nDqU7i5rL8mfFVDQxHk009Rw3cAwuiRISgACEUBvKYqnZM2h6dEZ3hhprdU1x6ImDVXEk/4+QGPScnvPxVL2YLOSrylb21YCru+xVnp9JCseWzk6rGxeQm90c3Yx+UtRLHcHvwWAC3mY2HdfB+G8jpZDWnu8I4kDoUqCqz2gnMQdu3Tmc/6NUF3AxzwebcYldDTTVZ6SFmAN3/zx4Uz8MbWDzO2qo+yxhadEjnQlpUaW6E0hm0j6fSFRVSloH23bKJKbPxpqsT2yLW1XmyC3aH2d3Qt0jj0XsIpA9kt/vWsDiXRr0T6KHvnWyI7zML4257Ftc7hbtZRdy1jpKJ+GUqiEBwwdCpsN3HHgk6qnEb5zf3xlmrtuAcWkEbOcdRy4SInKCpQxSypQl7lyU+XJ0eAiiEeLvHrSoiiJd13Bd+/dAkCCQid4RM8GhhBPHEAO+24Erp5L/17d/f2d/Jf5kf2QP7ixX/PoAIBMG32QFCKegRcRRAMngAAvAmDxvbLlWXOXegnDCO8PUJp4S+mWzDHZyWi5vd1PGCOByoMXpkmwoAO45MfNCid6WDeeZdIURArijsikfB7z+2OGpklSR1tyRHYF4SGmxUrv4NFIVChXSixCFCISfca6kiGwsbRxbKVLHpSEVuPPSwYHDybuo9nN77JSAmHNul3j5C9otzpLJzcOcl7nEQ3F/4rdEEWgWPkvJlWTLMBsGXWMVoYaOEu+zQVchG+O5+igkWOxxtCrgPbBLeE8sjnanu1LUBJV1IFexsJIgMYI4CEIgXGjU9VRBoRM9wAPBjKBblOQu/HyMY0w61FDoBEtvM0eLRS7m1bHMKA8JpggaXCLBAhwugiz0kSI+Wq02VTtFLVVVH1G8oZ6PrqiBiKEqvug63CDb0+9yMflsxx4eWCde5tc0DDeculBQcrwhhpRCnhC91+icfV/q4lerKpM+XFSFvfZDi8sGY4y2A+2z7gJQC2QjRnzVMJuRaKc7uwhN7AeDJ6qcpjw3maM42gm7ChjwZdSlWhQoTlOBkqGV8FKDUeF+Q5oS7EAhLrE/TdJPK/HUNGtVIitIqVIShNLEQowkbV6OR4c8Q19isoySyGvuue8F6pKSADKLliRQP4/DYUJobAa44+odNHcwirab2kO0zvLiq/bc+6lNzgXb7djtZMxLdhHPSTKIV0/H+tVwSgqtmiB80n0MkzzvW0DWunhRRNPQMFB6RGLfDz1OtfaC+lBSeoTwxzG2D5GmccFYKgvf6GURYtJ4REGJYN6uVc4wji0akyqURganSYzA0u84gK2o+AXwFHlVtQnGnnisFFTh/d4xhZ7rdPqzlqhjdBrptL8zd5oHI4lJw9HZdjeFMjNARmKsAGTZFZSPqZEs5CQGg9RBgtnhWmaHHounhuHUAy9mpUpOIpSzndfAsunPRU/VErvKnHktPLJ8FqKH4OeOjSydcTSJ6C6DFwy1lsCT7OKJ4iH+dDK6TZqxlGnSR+LUH2Pyjp23fSjRObosuMF76qZwbBocLuTBJ5jGs/c3G2pOWUjHm6iuiBNFDzPYX1uH82zdDXtoELi1zouZyd5PnVcBbAyod+wnDe75Rp4DVMpyrCeF3D+rW59IucRshSbtGRIRCMQ3WxmBiLKyPGIZMLiEymKcSfSkcqHE+KklbnBRU/IZfZkV10grBIUlmEJn/vDkS70Rt2A7WYjiXGyXs1mphMtdtp7v5DOgLKnv2Dm52IalHJWqCANKUCbbYkIoCpKit2J5Qqe52JiTHtQbNG1jTWF1kLkBggd5Vn7j9t/e/+L9abeNt3gpG2AQU14psGdIGdFq5I83I24s3ISN9oovc7nxRSsCx093DQ2oW4UAotbUX1GPymEWL+UGcK+Vt25HgpLkVYGMBENNQwfZKDZ9JUJcH4lN8JoG1dsig/WIHhID/uKheE87Mq2plTAxhPsmkszuwD1RcdIUzjKKYJJBEAZ7KWN22F5F5EQw/gVEjPempmbIG5KN2qILQcoXg5JRb/YGtkjq2fQTpinNSOE9bHUD4h086DR7xH+FMsb5L1lK5UtVgCVURtvGnd+4VX6rFMtG0UmnQxceuy6Irj1drwlI26cfBTPwDga5FkF6TssHFnJYHll2uoXm/956kPyG89a4cgngk68nX+99/Wrm+zYPD7a4s2d31vR7/b77vqnoUpfXyvr+bebaYyjKCsyr2osTupgk+wU9SxceUFhgy6uN2nZHCPiJf2bZ7BPFrZKpGl/oMOWRB2p8Zae/+VZ7cPfGgbcnlpFCgBvq/nkM1r4ZFpHfwY5vzgxOSfaqzpDA81TcCOcRzScZAAKygzPz5Q4duBsTRV8A+Efnvri082r0a+mrt+alWi057ZfWnxgFHqkXxZ/TsBqvnNp69UqqN5HOnbdw43IfgoNl3A4vfkHkBjJ8HiyYqus5X486SLmiSF46XWQmAPJGHCkG/kxnCSonjhbrZsvqAqNO1cuJ4fZTG0XnpY0hGvS7DSkml2OUk80FhTkeKGWGmY42fClykXx58CmYL1kzxzmZ2pyDOv6TsYgcrFZEMBiWsIuS+xJ1/I+D8YJyj3UB5WfDYE+bPt4hdwryckUMcwg6fceBGxHsr1aWUurUJzFXgp39aQFr3XiJuqw1qak4JaoVT/tRz2/pbHH+slFc48OXJCKuBpGZlMTfMBH1XgRoalDHPyedTIl3ZqXiDC9XHo/a2mIxcKtyKiNoMnNObgrCkTygafWQvjOEg0rbC5ROo6g5CCKF/9sHhMU3ugxWBXqqOjVMONitvG5C6rYe57bp9m+pQ5FgbiqYAtdS8Fe7euPYEZA9uNLmKRl2lNrJd0sUj93zznJFc8I+/iKW1tYd9IhDP5TO9WWVtZN7Y/zamXNvOA16DF8Y1a3k1J5p2wNetliO4fguGsDGExg7lyMuMgVrlaP29dLXLoHLJa204A0cTnGYCmroputyKDSFAbZQHRtHwTZPpJsdG26C7sJSqJo4Ro+19HpIZfnwZlglh5SEr6SOAx6s8n74L7bHJrNlJEfrimD69FQVER50sd4pDAEQvFC4GVOE/ebCETP58qmC5QS0rpaWyOgzIpMuN/lBSXH6HQu0Nbqw3mUL9CyEnfZYWURGQbVu23KgaBi75d8wWAk08QrUwOBjvcQ2oAQmIlmNus/WqeFn1aqntAYYL2uInP034312QoQwiFu8GHt67yUXcHEdmcHMe6wj86OXTvZzs7vlmHQSRb7k0fRfeuo7ExuTES3NFXLkRNHwjMA2/FIJv079jJ8nzafmH/+bPef0qI7Q8plxviw8Y5/5rbM5lsy++uzFdBPDX968HGhH5Av4okAB45dam8C5xUz6VP8+aytik9qYtRhJAeqzDkKhgFMh+Iqq8xvB5oPPB1fOscGtuhhnw8cSzXLn2SlZwrJps4al66y1N5mkqSwb3v7J/Vaxtn7k0rTzgX/wQ5vsjC8sU4wZKc38cjWAu7CHPnrmYRz77MxnLjxlbYo4o3zzDc8nVvt0L7667pzIr5E24DUE0BSTRAe9Bs3yA23CUxpJX4BsTCMg6vmM8Eu0d0xrSSOkUx/Feha8Nmc5kxkAVpI3xUMz4oDz+eeZTHTRau3yJrGO5iuUYeQ1zsg3yw9BjsGMgCeLuBOF5MDBF+O6GZrmtnyn23UcVcgDps1MZgUOY+KBNT0fvO64UeHNpu56OXNjdMOTnNksji2MsLtqSBquOAbxAqs6OmsE043pqZi3K2LsdsxWzczJlSbPh8Mg8P3gJO62X+CM5bN0UfYMyT24VzIKDfaGfUk77xrZjzOZOsqykYo/k7cf2LNbt3pAEMyFHlqWGI9aO7sKvYSHDqHN7cKhzMIDiHZppo7ZvMpbrWbT91kj7ikj6NM+IROcdwhVp79rPg9GWa6xvSsuYEobdtV8RhOSAL1ZiZShzBfY+7j7hNcCljJPTbFXCD4PHJxdT85YKwKyygiiSZLIzLw+l+rxb/LN8+T1WMcCgS+E4+q8shKV5dS9R5kxMY7egPv5DkbI9SvO6qOm9GyZ6W6g4ycmmvlRtE8wLBbRyihEx6g3Vgiisg3uX+c2Sn73aQf7h6/CvViIrpJjbdDTDVV08LD6G9kgDWj0FOXHmMfe4xzVW2XjV04Cq3Xem6Gj+NQwdP11P7HmpfgVsX25hMse5cxv4+a7Qz0TqgosY29tQpPSXZWNjTNXvD7Os4b+MaNVRiSiokFMQwYFZtOpbTfSursgcrfCzFBVTS1PhBqWjuvhFjR6b8/4iZi19pSnfxJoVcRv9H/Web3zWXRFb4DOY10mYHmZL8zqjmSQ+lIr5N6kS63BAF0ihJZs3rrTz6r/BELhgD84ZPtBwuHZCdY//1zeSar1P/gDmXN7e7Oi7f/5ny8mmu7f/m1E8q4ZgRzpSfHe61pig2//X128+OPg4TeCQG05elGdl0PkAl8/XPcuECJyg+pv8YD4cs5YO4c7sSOyQY3CMIHS/eibkUPQjJJYt985Sq/4DLbvRxPReo9YNDS+6yiYB8Ouzd9XtCiu70H21b3SwOfNYciM24nZ25215/uHyyFu4G8L2Cqv6Yv6zPB977HDejimBXbNy3WPbkYdDtURLXjp6XmhzQLJ1m33WFd7pcP35aX5z5vN9rRZfS4mrtfmkEd/d1OOWxRInKtrnKshgnV5p3ShvSC22HeowGt9GRj6e4RuqTRgOa4SQXEvaOqQWMz12/GFUMKzpYw0SCdRFBBVwb1VDwRQj/3kmeaVm1Xj09tegNqwUDjvjHCVoA69Z7BNPFVtnnfaYGsoYpbaylebOaB510b8UCe9FubLLTiyZnJyuAMvZGoltDHfJ/nOcGRyuAcHVZ608ehUpxoipAU/391Vm20PQFlzV6PQ4hVSqAbleV2olMSYIS4E+Y9QNfm6+z7c9x57XtuV2lcbjugZ3H4/SLINpqRcNbTyi3WmtFplmdGgaqE8k2edAQrH0H+fla8U9V1KocFszJNx4SapkwlMBKWWzYkGQ155rltbsDTnZdYiST50HrsCKmcFisBMsN7n2k0SgyXNV4ZSFT5Pb+Pu7E2nhT3NU/QUjPGsXUhPtmtLcKnBD5m7zEn4tLM40qauR6bpLDsx4DmsFy2yhCfXNxjLYNQJyU7go8hRdmsmM/TgF13DSgWX+XH56D4cWzFILeMfLu47hzlOD7v4iS/ggq2+aQWrNLKANPKnjx0IWmVLNxJ3poG+1jU0OpkZt4bj8bCFZ7Yh9qxT6P6hVYtnShJIajLSJgN2ljFJoWFyKVKapjZMD5Ym19dEqn+WTJVIj6ajPtws2ECqbiLhrbOTbo6XQqpL2eWm1GtBK9mP1Xj2NpzhCDcm9rPhWeGJhVr/Lbpjq1+zvbpatkMfDluXQTqT5fj10qvPUc/w3YP5d6EuZE5lYWVC4UPHfwyH8x7XT265FHev3E9IBGLbNs034bCsYNVAnCluYuFJ4KGIQrGv7sC3BGLWs35SXugfmGMUuoLN3Gej6uXSDdZDbunTb5dEYJpyvTHu17vNV9RqLPPpEq4g+xfj/A5LWKpY9MZrQDblNMICVo1FCPpJJPCchBCFa3BAAph4xCEYOhB18d3D7jNUT8OUFVARdPqa7Bcrn5P9ou/elZl4U4FO2KTez6b1+jTr0+vVYhIBucwFvx+kW/wmFDkAko8sqxdbeMO5rvcZN5K58H2a3kagkknciQ9MdtV6fZLC7gtfc9vffgHvE9WXPZ6S1e3mq3Yc5yeqi1tduUqNQh2X1Ooy+ZK+kx2+wEpGBh9ebhVMjRIACLWB/NgVsoPBIkfKyc5VXFSNiWcebaP+USvoJhP1j2Kb1FQVT1SYwZdk85Wo0OVjvchiajazUWVP+MjydQX8Sre7OhTUX8vC683YctuYiPC2EpMibjeYLhvKMUpyYGGQz5EislRBPLiIiiopaz0jteXg+zjj0v1v0HfEsJGFG0Zxwm0anopj1UcxpRvkeqt5ouDucfD0lf7VLNR2UWTReKVw/BPbINfAWrPRIAO5zxCUl3w8Pvtjtbsx8R3cr32jkxBWXM1VauabhrpmrorKL16x2JXD6zUWeTy6uNLmGMlbPRRH2m6zPFb2OxmWzcTjITViI7kZZCqedbGcjFinbFym+ruvi+MWkG64gqo1Pdyom+u+g2CJaW4L/6A0WrKV2O1uTigKfxxTYjMKnghBqdbx/Fr/eIKxXTs316jY2zfS8bVAo1IpFskGaAxuboIUUrDdyE3UNIG5mHwizfMLIZ3kJtGMnqsBjvOfyo4t2TtFAC7evQJW3p0DucjD714AC7yWCSsf7BHjK5tcwFEr2Far2TVhZMHT3jUEQ7n7z+xukUqDdHS9DYCUIgGtUvQB8EQSf9qEwPPDvks+xpYRDMs5UVwU6TAXooV8EfZILqrz/ILTvZQSgZkql1OpCurw6hdFK58yVePWcIlVhoIP4TtpVHTY8ylQeJYNmavO+vMUsiO/IJmMFjusi5Xqg0G9HjbpTlXm/XhI4eu9cFuzCKKo1oqoQqRHW6C1ftdesPddR4GjTjAG4wecJ1mr6gsYw3ykExrh1skJqPlQY7tko2wa74eyIIhUcwEeTKHavRNwscg8gc49tO0wjKeFLiHtGE/bvX70bKd1oJLHhsJsxNkrFH61nu1u4WeATRKR/c8yu5qbUWpeUGVGj6ZnMpjcBr3d1I7tMjHFgT+yREZvjCMfMZciXpr0IujJiQfnpOR+YbeeolloPH0yGPngfIxPituZN7iwxAgxkALQWqphDJ0K+CZzFPoyRNjBId8fMCzAakDmlvxY+Pj6V51G3Y4xGlhfbrcYfE6tUmMWKWLuBCADkOlABJTrcyXTt/MzC071r85dxVj5TGGXo45TFdDYmqhJqWvQMfFUL9ZT+K9HIqri0UE7lgVe6Ika5XAByhxSXl80YqNYGNpC4xtHb1pU8YCQQocC4tlVNM2idpcG02CwSVD180HJkozIUjAr5WiwAMdxA9+nHfOwXZweyx9XHkZgshSbsmPODgFUf5pdQQavKHEIKY8d+e6ONZ7EvT9VUUu0JFdp9TElFPF0cpEp0imopF6oM/qXttrtBnsLPoqISWHMqROV5sCOg/VHcOvR3uNBPhWn0ZSS4NS2LcHjuLqJkEnFR6JriGwF5hIS0c48RPe5u1ZTcO0a1ndiePkP8A9Ve9eX8KVYQ3gYmplmF4cbxLoRtkgQc6XNZnmEQqKx7M5QnuhNcqf+3bDyTtInr3EpFYMgVgR8MkBz2R73/TRVBW80t25ZCQnHyd2yJoW34MaEg9l6paARKVsRdSTunQNXrqsqJoZxtPt7830onL3nWgssvHJtBzrq2m2vrlxQ4CeHYNQxXEHkOxfcGQ8dN1q3PGSZow3BmhKZcBp9jnumWI7254W2J5FYf4CRJi9YFPSYGqPciAnI8n3DYFsWmcvovB1LpRlZpqqUNqau9zjuJFnBDQKeSjEwBGAc1Kikg0TaLv8lkvmfat5wVrmins2rB/0n7K4nMDRxBOLIeSGP/P5onwfXIoBRUf92aw7zMnD1jxu1slAjcsMkfFThQ7n8ei3Cl1q0j250u6MA+5L1iq2HXeTHklliGFTds2qS0RFpg7QFpBUKK1ssp3uU0zd8SdOTS1L+wSgvERy4bgGgMW3aUioQw2NSKgbhpVQiKqIRvRIUWlpMLtiOwhq8M7Se1iuCt/ZGS4efPdjwkaNHqHX40QvHl+WFGidKKHtyE2iqKc1n/Rejf0kYD5wOnPWvcX2hvysV6YFRs8LUbyCdYBfGhc2ivj4u3+tIfLvdGJh11FHWmg5QoKitUcuCeRNTKkQUBm7kphHfLOtQxBnNBLi7pusyJEpQD0SeSYhRBHHbc6UhHhZrhQlW++t/EV1pma2fPpxZ3WKwg9rQC2E8sjYBPXoeadTC3h3UTTsvPUlWE80lIwnpAzuCOtZzGYcMKDsS5Aew9Gm7NMe/JphJU5of1yTBO+dDnvXWLGACIjdQlJZ+ldAjSG4+HIZuqLXsOe9iTL3WnPWeHGw+Ut1FcF8bsIJ1vu+vDU5DqsHEn1P/PFSjy3e8tRla/ITzpiPD4asOkxu+P/PdmS/Nd3KtD3dtnFgbz+v9DGRXr2+yRFo6depIozy/k48TbMsj+mxKB6gZZoPhRZAf9JJ4a9CiIbb//F+Lkq/qRzIVuXPRaSDiSiz0chYOCwME1w/brrRZWaV1kO4q2uMqi+q8anQfEDLbtDZflk55GLL4Mjdn5xFXMpGnITMAxyCkGzQrLoEErNsx6kww75S2VeeXbrfMAAjihw+DFfQEgcgAKkKCKokiFshfwTIFrvEpKPBIFbZQQdZR13CQN1cqjVmkAqr/Ik3TeIFnaEYS19cEvDyXPcIZd+LrK1vUwILn6Y2Nfl7YjQt9GOau0Nc6GzMpMkUpzpUbKZx6ZTRT5Pqxo7EhCOU78XVniFCscpfv3h3E70qZ6ydhJvSdTG4kbPUTIhHBs/x/LZsYhFP63mZC0T1RV494awwd9u5LM/Z6998fdhJaOLZEYbmAbtuR1heR2c1JIhfN2g5a9wwcH6EYwt7jLAbg2KKyIlPR47QE9xocQxvfY50c/ZxprmqLccgCszOgajmOT2tavW3nqF/AYQIGBHPqi65Waar0y6CP/bmXzb0qDCtvngnLaa/62TxzAaDnjgYowcrRW283twOu3crZ/MKhzpPeVw1CXE81ZNlWX2R5DjbjsAZYttejByC54aW1ejuLZTwWgM1y1mM0NjfYcIYij1xk1vQC3YmvQH+JlmOXhRvZ8+QlgozlcKMY6YFSvDD5ze6LUdj2c3Zb3H/z4YfEPp5VL8u3qRlvKhdZZDW2VuPxykJd1sfQrdwN0icxmQ8eYlKfAaN5hlRoSVy8cuMJJLKr2qDatgqoCYMW9XssSQpmQ4MY4YQEIWy667y/KA8OKg5f89Il0zrcr3G/KVtWPifft9USTy9PTvbbfvA5N45lcdhoOHYtRTBYsw30AyUjPYaEXCx4eTop9yN3EPDR1DZK01rH/RwQdO7n5ORknudzgpYBGKZjH9hUM3tCjO2T5E752ioQFhe4I9bc1FOCABQV8BQRPo5cRTEgIOLQXtQCkdudl905bd3CuFepa1EOcjfgq7PNpX4LvBhHR2BL6DomESwacnriwC5R8ttppj0AldSPXdbpbI65K0hIP+l1p/H0xvMaHbXZpLQspRQV98nJRsj+7EMB95cCAUVRO8pFfzTyRbTJkX4nvk5u3LaVpkmVKEo2pzYNNUX2z1v/XV3zpUh609FdXRR1F02gUSwrQHfia75oICBw/b8o1W33drnz0KU9zVVPk/5UO277TpcXTlcUnYPucRO3yY1THMwH84JxkwOgh3DPoG2c1iO+v7iZmPTE9uB0NjsFTxZ2VZ8wl1JhyUvBOZWKZmpKARTixE4TnJf0Q7fRaHtmuLyQvXRqdFq9mKRcv5vWcT2b1THa2Pyd+BpR20mLhjgFcRxSIGMp+vJ2+jIEX4CWxVv2aBpPGXvyGSFuu75TvuENYz1uhJN6oPsFz+tFvGDN51jNTSkUPOQ8nM3Ja1v+QAx3yndoe+WMk6soubpKIvREfd6bhyS72m0ZaVlEDV7JDH+ZWb5vZUi5d6d8zW2kQtCFAUUeQKTwH47jxeZslz9qSsI9i1ceXPHcpRzQ5SeL8SLP55WgK5FOABOHWrSU+iRqlUiJrFa04sTX6riSLHA4W9rcx/JfABLtE0H5zx1CsfOvh+ib6XM/RhCY3I/vs/E8Rg6cXgU8VKleFnOVfDAMiJkH7SABoocRAMz/TWFk255bbukWB7IFQGTUBLpQFKKKAOcyCWHvpMKJ561dx1V3xIUpFX8wdLyaw1S2i5CpxPNBqgd60LgpL8/noWnaAYuDw4iqmH5UyTqI/0F8rWEvcf7bhM3gC4Ryf4rK+TG/Bd/P4D+JbyP3uFZMhcFnTh2h3Mhyw8gztPRpKHinxkrmkVbnvY6HHRbXhQebYMyIz44AYw97nIJg5lDPjBzIfWZyeVHHmIt1wkWlfAD93s1t/peUYHELRDTXcJPENZCwmUygmim4skwWBY8FCE7EKWuT9GSUpqMTxOcMwaUOO1Vh6U11ARbG2Oxu4GOyNm5APLOo6Zap0wlbNEUMN9bfxCLHtCwfo1hhU+SIerncraF/tyUBFiSGG2PLAkSRxWumO3iASUhgEFsaZOD4rx0wwescuJ+Tb+Z27gNEuY1bo6pnJtsIWZhphhw/UUFGbhY8FQcR21gQLznbTpFDPv4YCPdTzwALgUxVI71vsQ93VO6UghC83U7TZP1OfC1QmTHbRG3X7hZ48ExQJyspVjiL0HGXWYqM6iqyAtkKqiqwZKwVrDVFvc5FEv6Ec+j65Z8EriDwmnqgB7llneSjMHmKPIdiy3EuK+CGTLSNEjVNpCBSsd7UFd0OIiZT6GFOwjRCYFCs8S4PxOeW2TzyOBPp2Ea6jZCtoxwszsQehtjGJUciy+JBhGsSxZvwm9WFR662u2kOx1fQWypmjNM+8mtSeK1jvuypNCk4LDbd+PZGavtuyP43eiPayH/zAcYQwSKkRsAHUpDmbeqDSW7aJuC6l6eAaJVXpiWGYe4A2zaW3rT7vd6KDp/wepumDoEA1o4ywsL7dc2d2zOhhXe/KWJ4CcdK1YbvszWngesgPNiUyDGjYobRu+hZNWOZhjGQFcB4gI+9gxEdPKfXvdrRlJZcBH7A8aoGAa9pfAA4wWa8IszRVEA8pyKOQyoyAl+UgjxHhPrOauItKjlDlmhPioA65sN6xJiO+VMMqR/TAGUjI6OgtLMhA2vnMrGMOC+YbYlqh2EcnX5jIqwALXRMTiJKUmntivebgGoWQvxCRp14RTeJbXnUa7b96dSvid4tFp1u4XORbjjkeyKwGjusTlEuumiN2WFJmIoirY936Bg6dDS8torzggJChXs0VooQ6JECkaJEgCaEKlcQJKSn2FOIWINwbXgPu6j2i3+4oE5Oe0oPMro3QxJWJn56FimTsyg6myj4ighLCoQg3fPRLCUkRqDeMR+u5U/UouSF3Krh9CSKB878IKLFtMCh5UyNErHjsziKQKMHIs7gOhX72qz0YwqAzE4gF9R3AhGNuKKbN4R1kZKVrYypEdGdsQbYCeh8pvebG+WmkeiMUexEMBt9eUNf4+Hw2RDiFA5TZUSIAe5m21jq55hjpEl0TDUQHMGJTAokqCpyBiYJIqUktUPIn8+866nJSQiFPF4K7aGD/qBxL/lpTUOp0HPFCVAzPEFiGIroxBM2UxrYIxbKutajikVwMXgCD1L/oRE7ioY2Kf8OBHIb2u97LHjxvkV4s6A60DcYb3TAD87/VfkWMthyP0ZcuOR+DJ1YatvYxWNyFqvgyaAAyLEdL4qPpPjQzTJwl82WGTVCEHROEDgdNRYN1HJQLDZT4tjhIt9kI6jbEXR4kgPsLZRaZx8OEsJLGFEU8PQgGgOlaGw6jjnW8LSgtpKwAEWRYIWMeaQeDL+xuvWj/Kt0cx7TpPQp73p81oM8MJPABMBBgvcSPVtELNXZxdRhZQ01JCnRhhOe6NP5czzNpNllJTxXrvg3ipeu6FYb0eubeySnBdHpfHuv4NzQcUKXK+6diDdBug6tgUkGmaKs3ag5Zdr26mrKP2Q7eDEMoojg2i5rwwe+4n2dWmuhkUk3VCpTBDBd2Zlc06hgNtIcTmBrcDxQgWQ9ygHHV3c152i2ooFOz4QhPb/pC2wveXt5XhTnS5sXHpPUXRO8Yv7KuDqYLoQlXtIYiZGIl6yB28GUvOJWdJzDvXHwjcC4VvDxR957b2jFfOmRC6HRCE18env34KU+cPs39nDSa+A1tHpgv4bQa7MPKuHtMM3DLeurm5t4dM1qyKonz9yoyWGQ4pXBF3AaoxUFifJwX8tNCGNxw5GKfY95rji+RV07bma1d9QJs2AE+EX9DP7OhH7g3Kn5m0UkiKKgM8ftrhL0YUCIL8YBj9kjouR4kWO+VqggKced/hgYpW2XAlrBLEdPgiTD8GEoRAM6xShqoWqysfrzyugYg6M/GE5oGKGDFlkuEiJOHcbyTHSzzBVRqQy5TFgJwbDpLL6ctc1Kr9E+OGLm5EfNOu6vl4kzQSPTQaPlcoQcU9itj6vNgrAmmWrVQltoLryopOMyOlHeGFS5ttgF3JKyF/+cnFg5XmXVvaMO2FFr4YrXK7Rb4U28w5sN3sX4xv3FeDSH1WzD9nA+ix9IynHM65M4fbQYDLm8YCbkSlDNPBb8OirbBHjzcx4UfWJ5CqqMsNcB77EgkOIhEyqrNiUGt1u1A4dwFPUfyEahifeSY6p5aeohdLr6bCxQVyIPFShNu8SQFTretiZpwSJOAo3lNKhnLJg7Vc5xeeXgxn8rBZ/aNoTZ8/XoyErmKI1TdAxuiYxslaeBgbER/HFQcnqQ5iZrEPKGWBAm/2p2o0NPSB31VsgQzERrmx4erP8faa6DMPQmxaKIHVSa/cxl6xA7DnIjwp52Y4YR9K5AoHWoUfglNoaiMKGAYLI9SCJKGEK3CMNismWtvChLN+n7uWeafY4maxcmLgCboKt7vXNkfrZFSU93+jTna4SJ0RRFY6BZlxpjKE4fZQHIkK0yL8heQI9a2Af28MD1q9YHw7RJ+9HtLxn93uLbbt5KZ43dnjXNWWvjq9UxGhiAO8YsI99EZWnMmYD30pT1PX5MHl6UYibtJUaFS6TFb8Cvw/FCP9Y3x31T10UUXUuSujL7B8WxV/dr/SFST/fq6fVkcn2q7oXX0sfowWSLu3XH66uVeGCnsG4aJ2UrePuo8jWmQqI8Ihi8xdhEOaBQ24n58V/LUkiLZ8EFES1GxxgdS1CEohgWgBexmhsMR6Oa+UMpnNTTRMPzOIPIzBBSm+IE3Z7rDbP+Fy6gv5LE7nnWu1xtWzVA81FvFLIrc54XT6vvA4ow2Fp1ezg9uPTbrmtcJvGcupbD/d7YADQt6k6SHi0D7zh2KCYBAtKCEVjEq5GF9mZrwJ8SuVm9ug/CSD1eIjQvyQqd5RCd5flZBLjD/a4IN4M/MQuuSgsb0r9/KzQkyQhRwrFD6EeSTHCj8lPFDIuo5iI+h8Z4sohqWi7THrIJ99BQ1Lukou4D0MtAjmPZRiNMbc4iUxyMqC2AJrGqakj+3GvLLKiaUoh5AgB5E1caHWvFoAqZzU3TkpZhpinidBmXcdTofbtd9FAhkcETwhsR3vh91sSyw4ZSjOLYiNDJYJ1w9GS1ZjUMOHvAKeAqf9U894KagB6GqbWkVb5TkHi2rlzxrKrORBdfWTTO18oO4+lkko7YCrEN0/Xie4Wh65BMVWj6WDvcAeYlfFHEfK/Lsu+aWi673PcB4B6dr802N6692OYQ4uzYq8firaK/pUBM2L1x5bEoajI2mlYX76xuciX7Z/aZoUWUXE0Egeect8iV0vVnwaLfxIbMVRld7fLlaLTMd1fCTaLXqKruNtNLFvmieAVxXhS7KqLr0s0uoqbKR/SY5bSLCMWPirDlfEFZnFLA4PQUXLQl/Z49XETRo7h1p6b6/gvuJGJHZkmELBSC1VysuL5dUZZnhmuKWSaariFsYlptScA6M8tjazlgU5JMlbOUdBzBdQwRQSDFhGNH+QCzbxC3aTK1+uDl3gT94/l5eK/fbZ4oSLxJrhNbvFla34h2Iryp7wvksWYzfaI8nGJ8vts1Z+xyasQkje3o1fI2ZW0XOVPwWpVuFc5sqzadYEAifLH/GczcUwAAuackth5NV1vYhmkabgEfGorEEIvNnfJlaM/OmbbCDLlkBE4HeyPCBhLl7/WOEfRV2XLPaIHHF+6v3nl1nBKD7sBXLXD6alm+egr4TQONOLnlTh/sSftg37b7Bwilhqj9qRgtmKNZACKtEnUdihaEV9cNZf5r3oF7ih6W3FPaX2SpbNKpfeFMLhzfdy4m+H5DNTZQEZUM7lgPZnJGZtksA42Q3Z3y5fuA24L0DZGxaHSYOci31fIPKzq+9E/KN4DA4J4Rh4MG3nWrAaD22hNeC9Aith8UYSqRHz/L5sRONfkEtTKSUdqSw/mQCtc4AdxLRJ49tBzUsmaJF8Bj6sQ9QwpvVSsYoeaeEn0latP2lc3mlTbF9qdEWoC7yj3gw+995/72w1fElrj6MEGfmqVXiHvjhuJFohYeb1cPPsChR4vFalwgZv+xRyTyhguxbpY9iySEYkZ5g1dHCVdi0djRwqrcyBE1+ncWqs7vlG9SWIK6KYVNWW4EtDdpe8KaORnLcMBRG2jA54dNIbEpNHYr8G1V6FJ/gLXxWkjDYULISqfb5xk+sL69fmfJilvPzmGzuS08/BpBwS3bHbdkuuVK9PhR5cv3H4WldXykk0U+qedkJ3ZIa+GF0wilwwH9pbrcU0pfaenw9I6RdPCKqxPyV6aCMH0Fvb1M8yJeAe+zi9eZVa+A36+kKb+XpD2PjCnpJL2XiIfKG3gNg/OoOmJr4EyaVlktXEpr2pyQ4YqfkPvcU5Irp3m0Wj1qHHzrpeDIYIVW55sNulot4J9HObNjhm3s5zSRQ6ZgWThkQ8dkiaTcIjx+vmVvF6ZjVqUUgSGG1mCJ6+Dvp+/rgItj1LWD7jlS1167mFu77prD+FKju/hOfBXaS/vMDnIEYDJYkGuGdVvD8b3YXcHnnRD/wgv3FBqE3HNwkG9fvWYOwRwF83mAUFfRgKUrcgZpAIToYSCOB7Ms1q4Gti0wFK7K6G06vqsR6YPu5WCD2xP6KqbXmuv2+tXz29vzV69b4dMjAnuuRabcv70PsMbsxfVHWLc0AY5fXpRl/CZbw/dVux+ScjuYVkVxslARN6/WyYGnzGlpms5pqvAcz8vzi+HFGxPavB2hKwk9kfRX2bbZPXmj2e2aN57gD/mpfFn5APJWNJ9L2ysXWwqC+eVIgctLUJA1IqdDJG+AToS4uEkyWgiiWYkGThTO3l8Rr4/oMXrvJt0tsQ9C/9L1B29vP3gPdV+vevKZPKzmb5QfQ1ruOT29lb/anBjCZ2c++9Zbn7XQ1+X0ytvGX00+75FL9Lj3sDFe9ePFOE8ev/8SeQ/HiffwoZeM8eIVog0X5OuLeGIwOwxEbBNO4EjBeXguovdHiraYX9IMXb0dYMO7U77l336g3Xv/SfkWfHgDPKXhk59H6JPZefa+sfHJVWP8vmxOviyhL9e7+W6x+MyajR/9IAveLwtPD2/rtCt8M4vgM7Ngw03x4NBHPgojZbj7GEsswcApTrWrOTpBjKhuQ/zf3hR13hZZYuCTLa1Ha5vWkJZyXYtivY7xLf3FhYPZNTvviyAbmZMMrnaZtJObYhCfLtcAaLnkO+Hklal88Pp/mRkE0QZlhVmMqOA775nTqncR+9M4oV9+4p3wjtDn/cb3Lnb0xeU3Xvr0x73S7KVveB//tPCjCs03DAANrQT84V2K99VYnDa9+Xj9bXb9ns96KKkv7t2gMpmdkbevS+SXhG0HlmIJ2qJF8TRFMLnfqpurYOlIAuNuZJ5eAl1LvSRhK0ovHnreRX3W6RcXeneGH2lofc3CPAzNXWJOquVxB+MBw/UAI7ZTV6FqrF1INerV1G7TngLRtZ/lFDCvpSymvpcD0gE8hEqZDp5iv8rnZNHJEuYvZkWnbXbho9FEq0xJCjKKDbZ0fMUHh0k46nBE1lay75uWq+evR1cWRSdGdLPCECxFA5ZLMNDYo+aOqZyv2eDZ/CyblvyUn9pFqbAhDsI8JfIRNhviAfAFq+/Xn4aM6j5vVJXBo7FMJzWrKhOzBTTMXjThVuSFbjKMgHLTCxCaRkZv6WD6sozBEBH+gQadY4hYC6wXrMIgyMbUyiix8NbX0M+ZNANgeDgRMWPKr2hLCJsrxh04DukcW2riVBNFbYpmjjL81MR1RcfBJpvDetAFiBBCVEO0S9m4r+ngAx7L9iKhZEqiqGuiXwW57vD40IQDg5J7WWBi0JlNN/sgs+0smOB2RNXAII4DGYMQYLn+i3+0TqFMa4ghJA+OFmNIHsJLw5EufKdxUtMEQzxOQWqYKSQ6iFnpAVcw7V6iNZFafW0oz7DBdk/+sCVhWw/MPrReUQp/X5Z1oVgY2yg6OoGFCpxZ2MKeeDS2DZnHJiC0eRC8Yj1gHzZxfrmZpgaXZWJdUhAdzSw1TC6Ow8wV/pj7tC04B48eg07u0OXfq/G78IedKvyT+CZ2MOOekaeO16q6HqPz/Jgd/kn5CsLDkvsxVCReyjKJR2ad/vcKwDBra3Uc48+JwqJ77lkC7vEkOaaQTTbfS3uYpft9OgP8cHSkp/2XWo9OpJMD07Zok3Lp6QmXohNklCzuCy5rRHHLpzafakOpotCHZKIEZtqJ7ehITuDv4mhBfeOuFMVb7MYuK7dlIQqD2gXDDrvg75Mfajlo8VwJLhAUBSA0rY8U5PWd8uWHbdskbNZ2b9EwVWXYEir4VIwszINjNBytTaF2XcJZcwJzX7oAuJR8fGUct8/SPRSv74k7oS7FzW585K8RWvsoUdl+cJNM0GwD88gSfUHHm+lwTJKs3aS2We1VbTbjPjqWRrq+CgIGGfucGHGQPkzC+A7PQT74w4103CC78OJ9cBCA4kQFM4x7pzvwvqxkG4B5xR+cH9auh5yW/SAAmPvJI9odbRU/hju1YtFQPAqiKvdKPAgEiUMixrHJRGr1JAi385tumQHgY5fxGV/6R1dzGPANySIZTVhiWu3wKKzTUos/yhwBzlTGR4tkg2IIKGCu6YSK3l8cJ6KJzlOlcYLAISQDf3DFUUOIbtdwGwi0fq9ekkKL5OOpbu7ZKZmn7XzepmhfbI5x0KYpJB7RV6yG2yQmPNiN/d8d0dZ2XJMQB5r8PK91rYVifNRWyLW0GmmAEGjofC0fZ+RsYHVCiL5kiQma1uqtPNzQeVhbFR1opOv43dBDzHQNWoF7aLyZv5TRSEZ5juQRXs8qNoVh+aygr2U5aETLc40gtxwSOZEPuEMKo7IcGlfgkCRu/VbXt8oNTLjneAdyGZMYd/l+133/En2Ed14F/KuPzH1b7WjJnX2I1Qk7uLP67KyeqXhjiWrKTvX+bUxl7E1gtyHjY9LplVbTjKBphxgSpL7tEIy457xrpLR4NswiXwzWMoC9Rp09p8dW0zPWlLYdYZ0dlGR1p3zlQSFBNo2J9t2GjutS6ercHYlePh61BbaAEGzRTC3vlG/HzIW67jjWWuiP4jg/NzYbB53fv+8Qdg0uuf7tVKqaDVR0pvkE67+1v4voNGaxPPbWgL9/+cHVSyBavbv/Tlz5+oJG6bFjtf/kApv7SDu5+tDrJwDb1z90JXxyKgYrLS7g7dSp2zLx8gPJ3Y0L6f2GR0VURLuPsidoxuUHnMmTtcAsGCOTIFFVjfjigj+Sf0rczI77uXdPKChaqU4fOq4Kh9B1wwOowoNEOCi5DXP4Ut1LX8P63LHA+dpBlfRZjNLGSRoWJluSFtQaIi8BREUFmxpRkWIy7nm4W9n25drrcgA38bqHykXXXSgP8WPD5XJ61NwwEbCVwJKl4bFLsJiS+3fKV+4v5TFHsyY4nvu/mDpblDoFROm8WZWH56euq61pqFlS0tXzpJnNmuQJfmUqEd4VuAcD3dmVky4VlqFJy3uf7WPh+vqlKDcZhMrGuXYgt0DtiLRli/QR98qdL7ovjC7n9yG1RrXy/nxkpUButV+91GoPT9iCzUeH4Wq6uhGupitTEMzVFHcSu88/G5/2lONOiWgZ01fx2lZQ/jaaFKAU6dx9MdbYxl8VJtAoo6uoZ7Hvo1NDsO70ZW2cPp0QsRnaQ/c0HoWQxVugE2lrwsXX9zc0uvHNqjL9+/iRiY4nkiZIDx9KgoZHIZvzjMe7KtLL6WG1stkrNHx6Q/N2I80DCLXRTvgwSa/5kt0/XU31WI4v3kDKE5abDLRwy1Rtr6cMLzO0HEx3eqcsnQmaRb2bvrAIwbbREQOR14DwD3hzoStHlq4krUGc1fVMBHweH5kTLHGAA3Mp5gOkEGZHcSmcVJV/hN/fA/ePF6OKdVHZuvH36/Xeb/BjE/U6gM3yUL6wr0jsOMJJ0RV+lD9dtjnQuaXOSOGskCAgygrfRCyan+2qU3YDdbaEQRzNX3TpEbwI4Gc0Pvwwvy0QCQV6HLcAY4i65hg2VrRAsNibuDXWr3OkCKkK54z9l1ahSihPqH9KrdJtdS4lOnh0vHihZny2CF+0AVuXHeXdQKAeV6ZDsIJUIlZAx7tBcICqgEB710+KP07yJ1vSZaq7HlE1pOMAj3tG7iTus2kXm6PqTvmmYxpujA1/1JZuBdjCFuSMQ/ICTnXRByx65IblZq2rTCxqyKGQquKDq4AC+gRLfIAJiVmhD4Lspg6kyvqpb04rFYN21FSw9QjReVE6chn0gKVQIRi8EAoTwPSKY6Vaz2Dq4b8az6kWonC5LKHHjWCaQoN2Je3qZhmJTRQ1IprlyuN+RJVeynYrg38E3gpL66rdTOOjV1LoEXe1comOu7N+oCRuXLdZrlbWmk2cEYjKQ29Eaxmik2okif0mZ4hpao76k01tX/nC2S4WWwftTDrRVbYInFSKFo4kOQt0WkRkstHEXnSQreaQEZZhfCmol0ErE0DXNAvRHGCRaFiSYy0DD+6E1Kz57VRuNrG9qvJkNE0oqEobi5zNFktRVcUS8fmLRoYkJKKq7hT2fq35i3OTpkIVTgUhNdHYp1WaIDOBBKYbfDiXDjPBXiRhO3d0KzSRnkr75zIocmJ4kmUJd93XY+LWtZu0+FyknwdVA2swElfl5SXr4NlQFLvcvUCM6QNV5wShvRIeoKhcdL7TB4fcc39V01EgpNfzmntOlwYcWtkw5PYAwit+enrLgudQEbbenS72oRJVibJ/UiWn+/1pUmH5iUSOikFtOYvKFDQZEn4QrNJKDi80lzdYRl8X2eihv+BSqtOqC8FQVUNY4ItTTnr6rBvklpWNiFgxGqyD2EcIWAMFbC+GTUHX+0hEKfvQSQQ4GpjUO7yUGb6gKtCfqo8TLMApAvJ0708DF5HIBk9RdVNVTR1pnBBJmgjXf+oRHKU7vh+FpZUu7jm2iG0biyj3rO0NMUMhl3r9QGcYpisaEUZIy/CRdtJBYNtCwR1maY0mwkxUPBtLjiMZUrCxKy6EgolQYjqQg0iOZKQNHRwPGpuixkGw2E6dzZT9RZS1mzk/mFmBPvatNHAUTqDK34VdJQjK+dwqYwYtOkmZMzUuxdFA6l7v/+FS3oRgy/SpGAy0yK4vEB0BCgUAbL6unBVZFw5Zr4lT4GZBYd4Eo683b87YXE2naSP7yJw35MIpl0ilkDDsgBwhUUth1A6g7c8jGOn6fUKv69JxlDsVGkFHrrjR3pnPnf0IP4lXdyDesuH0uvvIaULvkqUVyvfEIamHB2gd0TtAYGaEGTkKyCwa9ZntYNYvaV6BuF+4NC299uwfvw4W91O2zLAIH27HhM8eK8s6uR751jMBYK6FfE6vloGEY4jpWxFg8//fq8NkwLuUMvDQzG/lXM3dtnVzFc/rzvdz0C7KbHxqb10/RyhQshub41lahO9e39UM5IP+4P9g2+73o1xnJytGnjcq0GKNuOOkBVaLRTQZoE48SMjA2z+mEq0GMMaHwi/KBTsKKg1c0TP/NwQjS1+GuvCAc3wDF2YBUJhoFFMbmKbPGQ4mniWmpS5qFx43g1WCsPhIhVMKAqZi7jlKgM1bg5O7Ldauy4VtL8oa71TVpjhRW2Ibrn8Ci+7ONJIR7yQvxEUwSyZKjcVCzGGycno3yjF5qGBIEsQG4UIGIp3VUgjN2o08ZzgQdVw/BSo9LXZNXgfdXCo/IjaBjxRJm6rqWkIBqioy8S6ugf/yy2z4T3mp76jCj+CnKA86Z9GUz6SsMtA+wmdOBkHRG7a0UnM+AqFUNb8FLPG/YwKfnH22DzaZtDa1bghON7C7rkm2Zgo8X0HwEuSzwf79f8JlqYYr9ilc4mnjWp0bGDCTo0c7s5PcIMcWjFureJMHQu/+X/zy95v6MWPggb/up7+t9SIKj9nutort7xcmwt2d6wceI/RA3lm6yZL+XquK6/PmGs2LX0jhh0mLBs/P+O0Ncxy1TP3/78StXrBJjBuFbz94WAXgjG2eGBKnyg3Ng206XZEwNSXVBqT3Sp8JdRN/sbEBqLBEqV1f+udcrbTjxpZWYjqpX8drX/jPbWSr0pr/HTQSlec9ZoF5/9Yx5T1Dv/ImDYpP89p4EkRoeozX4TSQQqoA2fCX4wQPnXbptbEUAnz+8ycAAHay71QhXljQX1v93y+erT8XBjnq9bLpcxyonr/UHdb9k0j7wOEbcFN0JGZZhPXmzIdFiRqO6m2PgjMfcPVgqQ+xypJ+UCoN9Oj02fZ7ffz4MUQzD5zylKKY2PxCJjcrJEYUTCVZC7YpRPUWYj9BJEjyzGLee93CffnuiUSAlzdZBYOdjJU1BF50EFMjRasUmaLmK9xjk9ovi0BYiFbPTi2vjxob8+ogtkZqDp7PZkLkHZY6QTGYRyNVziWAfjRoDqaa8cZv8ApyEEKWp2Mrn2Tv+D8KpHRirOuh9ImHuJytSAHisxRnVNiBcjIhMkcFtgEhcLZhN2qumVdGzMfMZxvx1NrXvgo3gADnn16AIMcfL7NoN8C0wPegIWiptJJWkYVgCLVYWz5s2w00lJ8HouKQoWuqAHwIQdbm5FEKDAWY2384crUFFjo7dV5MYckpn0Z9b1B6n+0W1/E3Gw2jbhd0ri8qKl7DbRDQu50ERF0+hAlSa2wyMB4P+pUVyhYi4HJbsM5zJT93KbguUMpVZCM3ya/FZSCkeDnVFXja6xy9xjsue68UG4vahgW6grV6XQdyUDHX4Zh9p/cXwJwZn6XEeX+wfq1RTInPURZSCEN+olHLle9BQU+7YeGKQBlHpUnmsQHmcYlxjCW11cv4kl4xyc2tRL+MkTRNyyUcJXBfYW50s/nYe38Yb3wWGuopA/abkzvWxnhsaCoPlq1hp+aHlQLA98fqX29/N9nPZckpFVF9nMarltP9ajqt9mmn6+4qUxRuutgddvQDMKhzeuLMLxC8C3/pq64ELxZxJxIccKj0bJJUvcHkFHlrG6KGZ7jbxrANm1rbf0w0KZxDQW/Wa4HZYCcgDJ1nnyomwOIL7JdEoTwkIqn8dWxnqf7SSfzl0k8cRiYWhu4WJZP16eo0tLZYnSN/zcjLyxyq9XoOmI46/1TYodr+Q5EWhc0tfmrPIbhnwGI8mhTcBTm42YDOLJsv85BoNzD7p0ngqCYIkOcgUM48jxGT46G4rq1bZ+J+w1/qE0sWPoLvuUiXFWSlO7FYQlioHRUiWfIG4xnWU10Wmz+HJnTwuYmak9WacBPPc1arQo1LW4mdKJXYlK7MnXg2aYjYYZLKhJnTwHtBz2guetR2kJjAmbyIGu6IFcNEwh1Ov8HgguNkhJzOJto+wFDaTfelzcQoJqM53EGL816nyq2xiMbXMKrMo8Z7pNUPFxiE7MD3B2xIZ4QwFAz6bYwl3s/2u+u9lZNscuJOEuFqW5Qn245G69DAiLTVDW11v4l3YgZvaulf23fPphPNWtTsYyhoaHfssIsfkG9g7XwT3c6MdpK0jYzJY6cwjAekaYyC4yh9/12ipHs4P6z29hrNRxeiUfKqXHNbKrVZw/zCT2VVZuDbWPeIgTUMrLW6S2hOpFaclnBD7SHK5eHjg8AYzEuEKEkoREgk8iX1BA52GFNWXA2HpHCKX6tmNUTA2yhUM/3dL49IfKClWojIVV94H7UHVxKnSvS6XQ8pZD75BrMJ1O/GUEIcUm3wfXIaZTkRv6T9kOh32dBPYMSbgcAE/7JOY8bI9d4xHcbxpUVWUnB1f2aPHnqS313AnDkKKNwgXbiHZgKmd3YGu5f5pPeA8hoqDw73BVuv1VhqVwVCIsbRUgNt1eo/9PtmdsodPs/Vxo+MTU3iZgAQwDOafKMH3Vy5ZdF+mHgT1m/O5zPsx3FgNGG8TvAnFb/qRfiIihHLq/9CBkGzRbsVMD/yh46Utul9sfVoQgdLPqTzZqTuolacAroL41HophaozJp1O+tUVvHmIjIYmgxcqCCHC2AZWED1Yn9ibGos3eenfxH+i5Cdbn+1Mi7iNTqyKOjd0++0nwiI7tGb7NIfmXBSKbwG7EdzJs60YdTALjHIjLobZoTZlg8u3XlHkPvPcpMTqS8ge2TSv/NORWAXClaAgNhDRNiKcRJmUSSitD7lKOWKddWw22yoyaBTam5VWudkPQkc16mcY+f2lilHOeJCFnneJsLo8Ox8TgXwM75mfkr1K5ODgIIlgCZ+FOKqqlvAO3tFDq+lnAe4CkvI/YhJkd16FCpdMM5jErixG/Nsdis6nmE6GxldJIMoRiEYelLVp4rDYJIEM5lQcEXtEjOQMmOoGgpMJ08817Iw2jjomOgrU4RdXXUWDC55a0qrb+DzNBWxvw1Uiyol3cRJHW1yyRi1UQMcpaZpSrVkYjPCQPi/nJxQgFfjF2IlpFEtIh2qM3w3JlqYRgLwzbF5dF1iKElbqMNGh9LtYSkkcb4eoBFSKk7wKSCRml6K3QscoS2gUJmPOtPOCeTQEqw+ru5CLjdAKOtpO5+RKWPHmK4NwDdwUSKioQJPBdXG9yNpWYQAYDfwg5qnKD3LN6vrXbKPbrpWRMYuWkCCz1Lt4toWFy8Ke82g+eoSxDcV4gDJWkCRate/LjpFsjKMpGSozMgUVF3yl5uZTU72qUBjtuiWrKpskFq2nc1B/Qjr+mXnlh0Fi1KNC4F3nMM7tnAcnhdfIs5KxHJGaW0e3ZCw5HlW5MSPxzl/RpKG9fPZfwsHYC63i5jP0sQ1HABrd2ymUYcOOuiI/HfRoowd4gTM8IpPY7c9PIxKpMg6SVi93Xb56EokHHiARFzQ3fKDt+Lzel7GynAssqWbUbcgwRQcNtPQRbm5mWJsm2gXoZFAPGOOUP9CnZy6/aEDUKrHtR2xmPQDOMASGqV0ed2yOeCmrNr7eHn7kgyW6ZH9o+1xsK2H6qsJGAaHrqIgrW/Gs6H0GIOCyC4uQ/DirfaqZMuJBXnzz5HO5qd9bntlOeVxWZnnPUlkynXcKGmNRq2EgrfLKujsmhdZ/wV8iICuV9tp18WyuU1DNuls+UYgwjEzBjN05KeU6vBIWjYnl1Bt0xqrM7UaPbvy5d2v3HP/9x/oWu7UbUvf83l91131A/d4fKSZXIDfXcTUytN2+7Sk7mAbQaczarubi+tNOHrwXqvP98WeJcb4TDcU9qozR6ttC1xDzWdVTxaIkiCsiCU5yCrq9nrueBc+3DxSrm276gYjn3GQ+vl+JvxyPey2ETjX/R/FbKs837Bm2JDCV6i5Plxg2j2gxd5ecfhr6mqB1lJoWJgDW+RGkaaFkTNsxaH+OASJl73j1Pa72vm9vjHWV9dCjcfIxQUC+aaGtcZHJzq6zvXjYGVx1U7dh41V+A3whnbSWCuDahAiAM7+m1WrNmxMO9GJvWj+dty2KLWftZX27Q4Cn2iLDyPge9mIjfRIakBir/KL2HZpYIMhbWCFl1HwYGXbjqSO476HCg6wKrJ2O/4RtyA/MJ+dVFpjYpLYgPhfKlrard3RLRj3Lv1aczRqflD7ZDIG22QGbGBNCRnFY54FHKc5yU26J5alYxJqM7xtVZ6fXF8C0WY5SzH99FnATSogbf7hRO7/g5zlsMWnTFAi78AAGJ9JxOJ8XbKyK0dGuou7XQWjYiiz3d0oBxaHdenEaGo5/+zVyEx1pft+iGFRs/9J/tXM/P3768uvhoyymrs9vXbB2KFiezd3ACdMAtwNIlHlQH8yTQF2g9GlNIgStEURVuRO4XLdyRyO+/AwraSOS6VQML57tswdnpsdo9WGlGNYZfoSAYHq4eK6c+7cWC2EpRdQXVyMHnpW+cCpOfgoH6+ND5oFBbp7evsygS44vsgBCHTEC4KANoAABO8sgvuLiIX4+qAQnsdZwdzD2PhLD3CYSy/3h3uK+22WjVwJzxp8hjuKN7iUJ2SUJ2Ow8A2fEavkYQArGHCf+2xAWmBGhjUzeXpxZb0DZ8BVcLgvhTPcn0PJWeiBOhvxtz8p67P2UxaceKGxUaHOVqZnP6fXy0P8W9YZGSoM/sRCj+iexsjatlZ4vHB+ooo0ONDJApKWN/fUEnkArq2RbXVhI+tEAAwWkMLq2lyce3h4Es19hhfqufPftSe4c0umOR7nlFAn4Gk6+AVzmDseq/9f8PFMz1KiXoHVSjlMKjQoyB8A2bR5+Zqqvbl8fL69e3pouaSip4JEbVD08gctmWS0mqJVLUvTyxUNgjsn1ejZnYLLFi5Pt5eDdmFzzNYCN4VQVWlzg0ZwU+xuhERRFdgNm1YhslWX5fByVYgtl6er0A3l5dCgqkrLKf6Ro2cSduNgGUuHgfOHxi+dWiO2PADtmq0glaFpaMts2OHTHRVow+zuhR3j8zbbc6JNMowbQk2kSt2gsdrSQrfgsLhCg1sOWGHZiWf+SvzEJ0Iw1T6RAIC4W3BWLKJL5OAB1jATPHYh1X0BL9Dv6gPsNfIEPsFhNyxR7tbPOfmv0cFi12eMLAYTLzozftzIFo/io1UeftI/wB+M3ov3GumEP8OfcVbD+Cs50VpDLYqaRhmlqf1rcRZCwHgE+Zc5k9mX3v9W/MNsntyzpNYMIj9jqe9nHm/8wDmwgM583JtN4UvwbxjD3kmGBOjFxISP5fEnoMT8lvJ9UCmzwTF3GP/Mczjzcifs/g4fA1u5H38kh3k2E5xrppmSLAyZVMyMTUu5BIoysqN/+cLCRqUL31cJ16Aq7ThmlP8azwMHFNe6lCp/ZwLtE28rxWxBLUaENEzVTQPYewOlkvlHbZLZbyYcIPau+LHiYNzcPz9e4vu+6QGvsySnvjR8uyUe3jKBCHkRXO2rLyFFNyAjl9qGMd+lA+L77/yMMqGz+dJ6/3QntpX6HAlwM0Lnt5cqa8DhecB4DuBuWPtkYCsKiqS4Z9khNBIaOH2V+wInq2gu484FyY/2+Q98KZVpm2ZSIWWJfSHU/qmVNAzgxALBduLcJ5LbZvpjSaw4/xktk7s2UFRKCzsEIKhvBQ6rGMbAMilITqB8laCgTFSY4klDKwNlwIkLlrbHfKqF8M7kv8M+y6/PVfLKWtQ+XPg1vqLTZb2eTtf1ErUF4NdGHKu4F0B4jfnqhhFXOE0TGQ1A+WP4DrDB53NwmQrqIY/i06HeL8yNAyiTxjGDyqrmi43vghxoCQVR0lTJD7d3/blIM19waGLFINbFMHl664Ig+YPaC8ZJ/ew5lFSiLg7cReoHOrdViM3OWAAEHTw1ubaWUFVrLOFtigMcS1fhoXBRSTDtAkTmIopSk3A/WHyBlVU+wj9QG7ORzHrg7uODj7xeky5BetOZlPIKot4Sx4URXnihOmSDvawtiCPNnycVQXgOJNuE8JBajFOlOt/9c3wXGOiTgF6UjZ2kUSAzsp2z/BxtDgtLCLCHnIEw9BPbnzECt05ALV1M6wML6FQ/t0Vm8P9hxchVJDDDp78+YxxUMi4t5iciDCtKAVTCUWJk8KR0AarGMoGamtCInd3F16YzB7vpraWAya4edGuXz6VquBch9S2mbYQsqWJgVd5i1mJ4IHCVWacdgCeIRkIHikKZjGhWq7ztYj9JOaQp53aNhhzVdqNVPcVS2gqzwQlBTmkeQFh4javc4Wu5DTi36E1LQKG8a1WwFtZiNWq+tPVSJ0CUe8dB8Vni+qbn8OxmDpCe6QgGEVohvmUu0jLCTDPYd4Gm1zVjmvdI+6snfnuLpOHUhnB3GgnShaYv1gy51d+/yOHg3Bri1hkguzqzuH9HVqubIT5b3Cx058x3zosbaYA+4zqZGSpkMS0klEQdkQAzxabr+i98BnjrPDcwFs+dWzgYl1uL+6erB6ch3s5PCz1zyq1ze5IG6E2ok8JoHeHRuM+UQ9Z5ix3j0T2sEQnjoJ+PVAoUQWq+eQG3io8Gux2SEZz1DOGpoHmIWhLlTo3VKOBd9BQKYuWhgsfIImRBfyMuZbhyPv2Fvf1ASxi7qRcr6rE2Aio+yjztQQtnm9z3YfTABAcbZ5wIEMTtHe3BuRakWM70dW6SpVclpa5oIhE7A2JSk4DkPhbfyQAfe9fIQEBmJXDnxo61H+rz0/SjeF72pp9v0AR1JHbxy85iu2W2G17oKUkELC7oMcBJ8uYGpAYMK4uUg8ZxG9Tt2MQvWLiNlYUcgbjHxKnt2nZNBbWmASQMP2NafojOs+JLGl9mXn7+Vht1o3bWw+N5F8N0XMjnJqMqJ8/qs+YMPjvztQG9WI9e/CZAoe2UNEMvWUztnf7rZbA7vNOvhiUYxM77oOGDu2FVe7TNF/StemaFJJB3aivHje9ajiHrrcjRh84tRjDSvs/6clTjU5RJTIktr3RE05IC3A2ApWGEliWyS+Qv1zzw59xUubfYQ5a1WQObjJBGP0iDCDT2bDGrQNPuE83BwaW2t2LN6T0TJPlvdg/ZLpZaqdKXFY/CrHo9s6LVwbYH/mHQeZRIojKMtouaLgrF2OgAgRNFIAXOjFCeftUpExmfmNBObTIhf80B5EI2EYqIi88zF+NqhdsOmFEZN8tgFbFNPTK3GAszjdV5Rqjmpz/DeTWNwkkDtJPsqiIqI73JmaQcycz3sVGQ+CWidwdGWQ41SqQ3YlRkbuFsl05yZO0SRSjIBlwW2GgZm0hFu5f74M3ktBx0EGDPCpGBLyeiYF3ixSmr1rfM9TWpceXB5gn+o/uOpocZO9Qd+X2QAA53yxaicpS6SlAgwN/7ARQi4j04CvKhMDhsuxU1ljFr6L8HEIhH2yGJPX3E9OXFPbZB4YxuGWd1nGAe4EWpoHWK0xwYvNa1e3/M5vXkppVqmmMmwKLm0Qgol+UR1C7O0tfQnkgXeAjxaBJ7B/RffEE7i5gneTnXS+LYktJMc57pbBPxuGsmq/IUFpnnd97O052MxEBn2IcqHFdXCUVLgFn5KOnIc6/3OJeSsc0qosDAkbm1JKptwglryHtEbBRmtXK1088S4F+2taQTB2xj4FbJxxhxYOAfG60oMaOJgu25ZxnDNoog1hwW+LDseNmrACY5i0TBuAk5h26GOuavV6GQP0RaLKqOhsXy82ffpZO9T8iJK4qq8Zr3MhoGFJ+bd+BLHawFIQzNZqQBaZC+IPu0kz6xp8TE/E+2mLRAmQw0duQdK7AMJ96phEoO9eduUpSsWSicwR17tBquej9AaU82JZ+ST13S0095EalAu97kca36n83UzUoAt3KUNbyT01qAEU4EtXi6TTKqf36ppeAEjYSkivp9CJ973w+J4CGlQQgtTu7atJShZc2AFlQUVpB0AoxO1pMpZcMcJL3UxoPOmjokyRIt9Z5VmDt7Ie80B5zbfiz6ZnTnZkL+pd3v8oFBnxXDb9ZCFlJLpwfKF+uwq4fODg95DsAzGd2WrUzxaup3Hny5WT/kBQDPVzgz2U7cV7/aO9uaBFkuUaqgGiokJK3JBS7K1YaDQBhmvzuQzO0HCQ/jO29WQK6oxM17IBXULgpv52Lbf1kJUC4H5tq5+LRTkttdrARZqpACJ1/aUncBYgDmVpWjeq2f7YdKzwEodt8LcoQ4xrdQM+UtwlThzD6wY6XY1nMJHzRxbT2BdnEgwdUOa751m7hpw4VYFHU10YOXiRkO7XZqykyrvXV9MEk7uJ6DbJ0Jo273cMHvtwEC9gB+CHCby/r38E28i09l4neR+ZIOR2wM6K+m7gd3NsbDSN/5pmIYbyz2k1YvJn0vBu0eyHjPCeO0WrZsTW85uOo7f/U8Bw7nuB/N9l09CJVs3QX0hgH7O87eug2AR0yiqVtW1hr9Epl3xOHCinhEpXR4vIORlOeFtGq/NQSJSzx4l4sdECDmdroAAQFTciSSKD5bVJY1MYdHI0QnkdAQWRgskQSDkXhKVqisfU3A8WUSBc3mvMQaT3nAjeJynaiRn+aIrRTmCm9BmD9BDxIoYiAgaxPs1DohCCMd7JGgkew/c4V3pE3OgR1Wb9svy2lwrlrVT6eJZfFtYNSLSbENWeq+mEUfRP87XR2uzl433vbbis9zV+qSXYRbxs5Mu0Ckx7c21l2/KRG0A3jXHiBH0FFv+xmtRF0yCq+Q0dmOuq3M72rpNVT/ujV3xxp4NfOAIMEM8tZIEyOFIqdMUgwyiCgCx5wjIk6PmaGgFvpNnS8hX2aKlozT9CNw5f688/TguPuCEeI1AIrbO0qD+RGYY/ZX0CZLGcCEr4n3GQfiDklFd9c+Cx2bDO07nYy9wjMD8B3zz4C2QHEzOnRZm4kXbjJ6/VXXe9UJP+kkZGzsB+AT8w97/5aUjlzSCknAP8voEHVuWnZGGmlAHZ53bAyucyGI1+Auy+RnyeCkGoQkOtAAyz4NZYo6V7n/3r6/7vLn5oMoGjiyTXRIyhC9ffKkRblMZob7OO9tox5V3t9cMD1cpCl6fQF3N2e9uXECUNMAtiMV2SHsCYUdohEXvlS1GMIqHG9flaKpgGgvLsTz+tKLzsvNer25dKLH2U2iXXfidf6PvLKDLxPiD2eX4WpGWrkQq1AFGuEiyquWC3OFh0xHmpeSLXqeAkBGN+lzyNlIgVVKbWKXDIiKbA0NvIjMYvA/tVh8/s5REBWxSRfXf/0Cikrrn7yHbNVicZrxpf8slEM/Hatn/gwrZWm6eGZsjJO2t6QkV5d5OLaUg8OLCtzC+0ZavRIZ7qCrTjR6nDPzH+5cWYm7fR3NG7aTV/BZmi3fBCm7lTM+KLfhuilCebPDFebR+VW3qzTXdwHTc8Nw480RweJ5hZpyvDuc0jtn3xatV/9VC/SfmY09rV3DqnZIhiqFOrVbAoHBZXbzXmYAzgvsmG25tRJGzAr9+yyIWLA9CosEZmKGguR6EhMg1aDqx8+FXsZ9mHCE79I+e4YKBs8/iP63wQRjLvvdTeyPyfVhKVSq6MKLOiCiTye1CBehKD5KNnnazuB3VqIPADi+yn3iM5Mh4mbMZkHU9RHqTpfQGx57FCMXPJjtwu9lF4PIFt3C1m3fHY9ZFE42BA+muqFEwuWbPoAJ1ejauSFMPf9qFJobkKkPgEMrZ00zNoSoL1YN/Srcoa6AW0FmJ94yDSKKBBgxoqj4ASNCpHh4+3y5uOl7WfdGCEc7uRVuUm7MxFVrAgdEx2seVSuxhlG0XgjKMJbJLSYARCImiB9fXfLu3PXhs7wXF0GSBEtoY082z1ATMnjtVLf+3iEVhBANxQC4cdEqJ0/HQ1FWqehbHkV8DnUtQra7bqovh3d5LL0LwRRLqCmb33kxDSFeRywyEmcHnQH3Wl2XBhsvc4Z71DyuuvV/qjCFCP55R850+8T/WE8Pnr3Prxv85E0fxINrWs3a9g3t6QODdnvwwJTBvX+/KrT3ysvwgOb2G95u3PVqf9fq0nq9uvnwsITsYDZudoay58WSrnon0r/BXVWrxYo2IPHRetCexkGWNfIsngj5rlQ8pSXGcf/n3R0zUC2iHvG3kT03cPkYgnAFBLAw/DbmyzUgAL7LlV54kONiC0Cgllp1KYOZgh5LU0+dHNP64MCrsFKNlBrcuLpS4eC42lD7Tm28uk9q3OsiwPEJzgf4JUQrIHSlj/RZ3eW0HAofmy5r+UY6CG2uj8EIQwWT0QCllMIlVaBISZ9wBGE59ty1aIjZcZJmcmVpkqBV7VngXllIRfEoRLtQr1xNQAI3TtZKtkdoU+uMQF3x89laQJgBq7m9J2CEHtwroIY1mpHzTIbJUllOnscpS3gSidgwgHuc8JFFMNMXxDnBJ6Y/iYmOEWNNwzo103FErU0wjFZq1QYk5L0v0v9sOutfj/sXhjQDmt+3fAFI6f2D50BJa63kihUFU2sxlY0JVpHp1zJNFVFJdGWtWMxVSFQAa9USAEQGUpm51iKAoligI0vnDV292HpEVUZW2FpJSSQLBVakhKwO5LqVANnVEed6Zf7US9bhYGwUcFpl1Tqc/rN+4idy81m5iMwCGRG2k1iVeFSrWpUgbWoFjEgKiBmVGZnrgEAlHzq5mhODwgqV+eCgdumCdxFxYYF4rBIYY4LI4beS+NGSsFqt9VoWrKEBsJ/EhWoBVVwFs8SqzJLWLe+rleAF3rlVKliDit5b3aDI3AxWF1lZyurkmBdqKrQAtbhKAgD8zFxrlsBKVc3kApBYPXoQGqSq1EgS+dS0m+v1ESTqsSOk630hgNsyn2BfVNUWVLa4tvbyN1qoJXGd0FiqSFpgWWJaVmBFELAKCzOA1LEeRVZBgFYM0VcZy+gjGJK18NYu8AkRyjJ+TWhkooph9EsOr8GIzGoLhwBuI6NBhdAmrUNtxOYl0LliKwyVvdRqyS3sZKdYFxYrCv7XU/VMKgUm4klaus8ZQFNjZtEc0Cf5FZWJnaGeVRFxc66zW6zJAzbXagvwWJXoYyRBI2ca0SRWwlCrFVBvpBLxF8omgIyA+IEb+1Zh6q0VRkMkoOUKAu7LDDEq4EMjUblLo4SfUQ5rqpEUSmTUUXkA7GT9afFWAh2OpnumgTKRJl2iUvA4/YwwNsvIiny0EZA8yBLaMWAZV/BIIA0hHV3VLWMG/pkwBKNWqFaTxEELSR7ta8UD+ehF/AC0YVjAGuYB2QAMhVyK/axCAJDPUIHjitcFZy4yWiqgHrgnFgIIvZ4tcKsHLENJ8eCLwM+glzrgAtq6X6mFTsUlIyPIArmAZgGhSpvhO0rF+VmAM/VTyJaQ6aMrJusnyp1TIx7PyfIOKmGifh4KlRT7KggUtJYyYhV4Mxy8dRS1DHgWVy6kWlBLNkxkBm5zCK1IPHrpL6vwZTnI6xW2r+OqeINtFS36FmGnSMvJl002zhLrxAK6nv8t0S2lzlWVtb1LQ8eDqKm0JpunnFWhg5fDuFx2xk3b+14p/acpFO4ida0WnjESEOc5TaHS5aJyXXZfdTgqL/laJ1gVLXC6WgDHU8RjEaaCDySH81Cl+lAkgTtbyG5rRZF01p5NTruker0DAbR1d45s+SRFPax/5klb+cADOix26KiUrfyzwHf2RKX3IAl8JcOGz2eJfnBK5yFSJHIrC93jsBHZYKdF5hboo6Mc92LxJ10FfqXyXLQMYdFclivTwWEqb2XU3zmgujrWT/388+TP05NTNUI80MKDvW2lUmC/WlFxqkaZiR5LlBWPeiL15GM9UJlYAayqvVjlaAU1KkR6KWTRA2qHgQ3QUkjwFbMp208OnMhDXWM9FWCBzByAknIesAoA22v9qTOOJ2nUGAeqdPhoOCANjlpJwIjA5Qw0gUl/FKkBPocALwzuj1DLf/SzSmgZpFMg//mnFHBVBwarsaWqD6ilyncMgm/C2EyOq1d86ijMu1gMVCpLTuhrVq0MkN9TSSWEFvXGIii7XHCizWT5qmUKFy1kgMpIvFxyo2pi8AVfdPos0Ypjga10okz6EoQqq0oGAFiZ2KXvFLOUeU672q+qoDgM4IP0xarf+dH1vqlqiUzWubYWYrdv/fyUJbmQXrnH+p4NcMwpZ9i46ZX9PxEVUXyUZRykgo87lBHTfU2lVc2Ybyv1qw4eU+t8uGCuAx3ZsW7STJTvo4vXtA8Xf7fOER2Of6iQw07p8vHPkFvdtvnF3ypZAmfvzhNJqC2CIvzCBfCTpCoxBHUZZf+joF98Jnt963U7aaAfRKU00mhuFzKkbZpl2WcXkcnaV1g8Ah+5NH5iMPDvcRWVQwm06rfjtrVCcxl1lcU5K9ZAeSeyc00VVLA1Mx9OeUtn8P0qeuYDKEKHxXP74RcXvSIW9WSSGTuDXqZ6BQPZV2mgVTtrW3nbokmKRxFZ2klJtzVSvL3xuShYtdzNRrCYY5Qltiwky4wmnZIj1mm29Uzd+Ui1Yzn2Mhg1s0oXVa/+BlH5k8zu9UzUFzOjHvNdMRqSg/aK+EXnyp0EiUCpdYnKZV2NQfTWVU1qqjJWFGJDwkupQp47/eyGayxjfGuDkHJvUt01mXEU/Ah8q5w3dFKxCFoUePIR13d32U0xuHNJhef++0MQeEEo+JUjAR6U2hBL49bLC3DbCgJdjTsBAwbfI2qx7ChKttsS15TSdGTX0QJbJaEAmIEeGEUr1KRpeTM6BnXn4udBGlbfOEAQeyhgdBTaWVl7dkNVpkUMlfbPJkKgYfOYWzF7XxSd9yrtosAJi46J1lLNOGcq63xoeVuIcGgQZyESTdY/xBBqCOhEu+9EoJhHiYUOIQa0ms84AzTKftUiIxOAWpRuCOBrFo4tFoBQr5s+mm5bnarbt84+zLMlakVmwIC1WVY9LKEsd6qB+r8iAboAqPJZuEY9gVrV2qfRmwrELGJDZy3om3LdM1btMSGZKvbxwqOLa6YRQ2ElE2oREg0AxIuyyir5rCktQMydcKOAJG1h7V6KCCeWvwK6PIIBdmxE96DkXYK9BV8dwdSlbL0VEwkkuOCE4bW4UGE5hsFrfjN42oSBgce09ftRJZhjzSVMmpGtRiHWih1dRavTkmyPMO6ZSXjC/Wo3cp6lbkeJhgJA5994RT0AAGKEIKigEmw9BBxXzha8cpHWUkE97EPDoESzN1B0FZCPgplDO1Q3QChL9JXFK0QYWYhaJsCOKFpQFTJ8z8Ei6DTTKsw6ie4u15YBA0RlxCCVQqF5FYymFQF+cVr1i1pV4cDPIIufu4riSzaiEQuFKxZbnip1G4uzohwoxoGaRZMQkwgx7rLgqf1ewJhW1zkPYLdz3pZIG5lgn7Q7Fp9KljpSGojsqsiwK78e2RgczrSjU+QcJqd8tn0zRawz6nByAB+h7DGol9Q8aWeq7K60p8sq7IQBeunurNvypSw/zLO3RAMdpaX5K+n/Wd0BoN/UDujbRd54v9fD23mImwTliQJPC9v0hFxwsCVqTtH9BCSaEJmAUQHQ1SJVBPKSyTmuMHYqgdbOqWHr53bXL9Qpt/vTxMk+jwlglrBdNSL42ZspIosO6e+8QJQA/3QlGV4j0hXWYh7yj9gALX7RfJXrS4LnMf3leaq5Hi9qlCrHKUcAzVDDR/xFWzxMKzVqa13n3ecu9iYcV4ESDQMwnJmNLjTRxa5aWD91jysicSlwbkrvIMflTC5IolnmRqj9AadMbtq5WeO9ROrFZ+/zIXm7gOICgQzoAhxMqQoHXFW/SBZ6aVQ/gD7AlgVhPywXHbS0G2WSZFXSGqgSYVNRBGgudKkEHcIL7igTqSQLEuvWYONBjPEMUxf8xFRRSarVCmUKYjR/WBLNVRVKWMsEQpNd3UHFq9dAkGw1onI2n5pMV2Qcobm7ilNGsRu5suppSTSvdQhVJa5TJfuIYx8yiUBQ4jXSlmTDIP+RgkSDqgrKR2Gd1Ux384ufehX8w3PsE8nWWQQpIq0u4OVR7s2WaLbx0UVr+3AhshGqPDzySJINIArRcR4V+iKLymSYksUIUPFfjlIuBYNxb9mQhRJnKNdyd3W3VyCluTAzZDjZLeIehyoXVM005OVgw9c0zTGbmOAjBYUEITMlEJVoUA6JAOe0yLSPlJTdIV4jZyVaqGReI3lvRIQmUzFTZnUlyHmd7l7T8DmMH8sD2E+UaM4E5WmgbY1btzdjBMFsbl/tuu1HYklDDHt2t9VkoMr13uOCZLFqn6mb6ZrcJh37D8RmcmjoisQVRKfWD8GMftiKNTbMojjUTFi0sCCYuFnQVVVKaareQpmCkmSEbqAOmXGk2hLC4jSy3KwIUWQwtckz2B3iGqg3xQGQSUD/SlIrFsstUKglxUtheNlK4kKhRhN+yUqKp3+VKQn2QmFLuj1gl0Rz3WFxS2YyCQVyxZuI6s5F8vAqMy8oNWoaus01AjEMjpu0RzB3qDVsRo5hkyG26WRBvZxVMzQLEEaJE+zutbeIduEHt6mRF6W1jwxuQt7Pq9BFsFN1fQrVwHtrdY/ty3TQB4O/pr4HcKoS4L2bqovCGlpIAWbJgHVnZS+sRvJxTU1MBfn7WWKYS04QonZZaMGdhquNBMkrO3ENytIhBUqgReE+5OLDKixSwomqItFYpVMEIVMYWmGpY9SUGJ+sgk6yqm9Vfai+ZVUSbmE4h8LDl9KMal/Ck//5mHzoOhIslOybX2JHtjtWFby9SDdUMItQLUhBoplR8Va20EnGoN6nnORSI3RR7KdL5XorxS2Lowl1F5LJB0o8uKOYJmCNO0JR21wgsGXijkcNG9JyNQwJZS6TqWjagRjXUmquq2qBww2we403s/cXd4IGLJ4h9VoN13TBdCY1hF9u1nJVixypWsIYZZui+CnwTouFzMeeNhrc0m29OPD8REvslFvNHY5iR+GzUn19VLCZVqpioiCwIJpZ492CaFeVaNr47sjAGpYMwN8E/octXt5J3lj8TCw1tgcMDDp6oWKlg66bAbBS2eQ0SUUCngVIJPcrUQgWLEWL8yfLRD5jG0Td4syAX9WCJEnuTkaDOVgsDqZXJwg+s5hGklXGWOVtM56RoXV7ISGBArEgFD/YhoOzImHS6Vfw4VnmGJkMW7UmjXRvqmDy0dDmLcrHDoaFaPQK6novLthRWF6DmTXPmnnvZyuAn+0WpUehwuwCTExQzJEk3AEmo+AZxAmkEFjncRZzA+SGvrUDwA3CuSPZWlxxoxhBexvVJ6m61e4N2F377EGrcBIF6AC7sz2WL93uh43ukWgOEDqQ+ZK6xkyxNx/VCT6Ae+ctQaK58X3fRPgmD5EOy+WNAk8L28yEXHCwj47M2yQfl9iwXFUqKvArZDl7qUmLdovqAIfDRE8sdW59e8TGjvUDieZUYMocsZnpSlPKGXuDezdVunm6KlTi7fQ1eLp4laISk7QOMq8SylIMJKKy5B+xAVqQQIISTUTvL62kjJESZJs5LncE0Aq1RBtMbKgusgEPcQB/etDd8K0yqDQGcMKnI6AHG1Mwy3ywgRmJhjA61Pbeui6kbB4emURsSDo4//wzlxpkg1pgNRxdfsq1ONlrCEdzmpRWXHd/p/lJZ8y7qBO24QqlfU8AYbyysFHHnCsoyGAdMEvRgjAWwH92kmiA2JCFwRaAh1pGL3Z3eGs3msviXGSrnMRrrOj8TitsSqtC7bsBuvJcZRRdIq2suSeqxoWDUg5rZGw5KK1VpzJzJ2Ozmqr7VFHdccCTD0o070bSeJh7uo+QTyeAcYRoczhlFLvtRlZdMiDRPJ2ohfErE86B6mW3jzj2Te5EWR/wWjduJTUK8hETLIB6cFiF8FFYZ7X3zPDLs9vNAf/w3u5Ty9ZZBEGk1QX8z7sBiYbpbtXvval3Foq8sM2qsEcjkuQiPzODQpkS118lPj6Bm5ayBRXNhKG9swoZDCLM85NttkUZtihidK/wZYPXbvhrvK3JF3fL+6fEV80wWO4epFCUaGhpS7mOwzjWIbPUs4xqkWhuQzk4ZSCAeI3aK9FCxSeycVv5bVdWSTQ7SLfX6S42efcqLkprhvs8MgXVHWLc3j3G53gPZrRapx/HX8YjsWg2FKpnpnHBkFi5drFFInDt0VR7r2ehvrxr4HH/jSsi1I/NyqyQrai4gku5tGOp6Xek0mqzJbTP7SMqK11BQUwxArEpKSuJBpCRtsVu50GR3vNMbKIpc3SBtfdERdhqTECoOqxHiDC2usS2+xzeqrUscDGTrLXqG8teWm34yJ1447q5ECwh2uxpZWfVOQfWv4OG1uuTVT7pJ4goZPp3UoH7niSuGAyjxTL+kJ+bt2r6/Gr9J01yrBvWLASSGUI+PIy1KqZyT1cdZu5prdPwdBCrqHPOrloR1tR4wqI6pN3scFY1HesytjgkB7ofA9nnDm/YlYx3zEnQD/S+VgpBD+PWjAmf+2fSFcUiTW0GhYJTM2p6pKKOQuH0Qt2Pj6oK1sHAuDlbe8TZcUF26Ug03hetkZXgBbYR3ZNsRUawzpDHUi3fnKYlQsiw6vaSrbxoOTzKwkF2lHCCqokCQCGqe/dWuW2NlPIgi+cCmQlaFO7BwVIJsV82GKJ1dkfMWqzlhZmjkoESuElkhUP8SJ7EgWgPllpKBXrEt1o+1NgSSXdCCbkzH0TKdioP04zW417IffvfnYeSUgi75OgvfkcIgd3qO1dfP8VIJrtFQUKRVYxC/O7M5ls0I1qnCP+xZ4/lJKK0Zil03eJoQoUWx0W7ykmFNMpfqXS39bkrmjT2h1oaIAx85grtvUnJ7eZAtlpbFO9AtJmRlDZAY4vSOVcYpu0AEDUBREn4NuytdOZbLLfPr4Ft67Sx3TxNTOvz+LMtPpkWWPW4R6cNm7vu9osDz8O2p9zejt1iy7GjmAXUvipkRZgJna8hc1rae5o4c3fTEkmlRLNOmay0QsnddGyMZwJh9/9EF5C3qmSJe1Szw155hNbdBfmwLR1KKVVMCds8+1DwoMXf6op6PelQ2reoFrrSggWoDSMWOFumW6OlzCj6ARcrRn4SfrDlIp5UPQaFv5+/fpJb5PZuivhM3+fIuu8huzJPO8rPTe0STBaPM9JrLlV609lTNs0kq7vjmE6JLP9zyuRPsh/Z4i8MFLBIPnp9BpLg5AAyhHCEKT6Kf7CNTOcdSzi25mHd9qYnxU2eZjEDE3aKGWPYeLlzK6hK0+benRJYMV/RZm7uOFfbTr8uFKwIRsfhOdbvq/qetTzJdXtbJrv556nwY3D9ipMnZdXIneydMBlTM/t0g66S6yxCddlYXT6ebbfdfpzVNRmddHKkx60Uaau4/Saqd1F1q72XtLvdb4lbhSdxgg64O7uP5cvevR+WfXAcEfXQAx3IfCVV85xi7/zpUac/gHuvaJuPJ5n8fh2Z+PhOHSIdlqtvFHha2OZMyAUH++is+mZIT1kbuowqlYafrtJtE+aDspchluZa58iSBhQCz3geb8aiRHPVjvrkqdZpoTlnI6V2P7XvVnQMH9LLibeuxbW29fXE8BOPhHXYenHlg4TvPk2ywl2qbXBhNscDn96ALCT0KiHzrnwv0/ZDP6/imeymu6Fu94xZAwTQj81RUYOP2+Rs8XVvhn/ebA59MmTsTKkDe0yqHKdtbnAfu7u3uDeX8C2hreE9u+eLpLDOAZ9LHgt1uady//mRaKDjNZsU+5m7/JSxqFIJunWF0VvxcX2JyQ9NzLtYLLwlBFUlRaLaglC3mv8oPSXItQz1WVGQKFSYOlWALQtKAxU05iRkiI6BKbaIM/xsBdiGS4UAoTmkgfZNbcKTIju/U91oQyhMHzVqcKM4TvqSLrJJ6/S/uhtZ5VLbeUTZZLSNXgtYSxXdsVYfEeNlZHWngUqwqmOZtk+fyP4zsuqdyXw6kYwjNJ9Dcsoodrc3s+pCkwVhipO1MD6qSlz3AQkdcexXeUeyfshr3bi13TjJR06wAOrJYRXRR2GdVd1zDr88+2ZzwL/xPZ5VXd2zCFJEWl3A8f+92zRvRWQc7855ZbKmDkGYwu32aY/0FDgshs1/DxO1RlLVriVamWylVyQkS1HolOv02AGf0vfm7FbcLT0Pr4+ecwZityfnql02XW3v7jyrslpBsM/f+FMrDG7vDifjJiQaWsJvcjh0OwN2f2tEPWHgmswAUXZOHlXRLTc9AezZuNh7D4HR+AaVAo79yaxGnAkEeyvNj63a63QXt/a+R+KJXLBuvD+DmWbXJ51ndt85Y7ROt1rb25+EWt/kI7FoNRTeFl5ptyxWizU271DdgwXXvfHsdV991qLLu+TKyHJ1MjLRzhel0LDos45rucnuKPHMaCy2r6SsbEg0RAOMo1sUUhyQ9G/KnGlDgJWqpsYZ6pxJ9JndfGz0qDDbBrOtJpOae/lmRLSoJSZdF/WrJw21YhdDyJAodVfq3stOCYZ7YHQTg8kc5czlCCCaITXOGIjsoyh0jqidrnKZhlWrqCBACpRaHsZGYo3aHdHiZ8/YnTvzrw753ntw7e6d7jOcFtHAhByTDEp8S/YZpc2mFW8bNmTzaEZ9elqmJUf1fZHyi4Q4Yd4CbFh7GxviFZgLJ+s9YvjOgsbIhXCDsz9s1A8fOVf5Dq2oCECGVhJ37HMs4g/erw5Ha5yGjnjpxkn76bJ9yYcTPedORlQxV58QY3aQmaBFcVWBbl4thwyTMQuQaPRFCzRhKLH3DesOvY07bANddvStow/zbIl6MRINqTZyut8Nbbx9jQ6Z2aFJE9snfQa7x3szzAcTjbEO34RqjfxzKshP5dXyOeWIytmJDHNoCvHn1Ed6QSkQBypXpQTRqLJpwpJnsurFBihs+bRQcIUg6HExW8nEtSuNgJWqjmopBUuH3/vG6l32QaQVtUsEWp4SlwFFIGTY6XPcbp4e3RH2BK/p7/H4Sg0E7BUqIsq0fpPyDTjd0TNRi50tJ/GaS0Q4YmhuyqVOGJvNs1+BCaGjikQYyzIHySKUt8p3yhVJMSQ6rpoteOUiraWCJdH83KQh5OrNyQEiiXvR9pUdgVIcAJQfWEWzfA5BohLwLMCNtZLwiHFiGwdvgNQqHUvHZwj56pOH7wMJ7LLNX+lIFZWx9Jb1IRSdfqHw0SAkJ2iRadFYcLMiIeUCBUOgIIiP4l8sZ40Q6PRraZvU+I5+sa0deWdXDGDvzU7ruNzE5b2XA37v67rEy2z1zcyUb97rtHB5OXmU27eIZlYoAxB6b/X2DgOc2SCcjirc2XZT5zeRPY2KvZ21H5j5dKJ49Y5OoCepVeTO1bNn+1cJqEEHwO0jcu9v0ffvnn0zMN13/PN9yotDlM0d8WsdwtD9GzAb7I+QwC9YW9djFr7INA+xelnrjAGZlMkkZLpdDwnX+K4mpFPFc/euc/GqOWRVu/cwldx+w5xXtKdGn1wDirGlBWrGzugOSd26U16ttQc/Siyw2cXKSP4RG6AFCb7yXc39e03v126J5syzu9Uz9EzfNuFZd6hNI51muzczjjTH+qj55M0+JW8HKkEnS/lOpM5xdKjTOjNHKs7gHrKQ9Xgfd29H2zwPQCD3pv2Se9I/Ek1QR9YCKy7u2nAFL3klK9e7V379wM0ePEyZxbyLxQIhDm45Hknc9tZot6yBPc+2zKUh0WQpCwXgbLNtWdB2YW/WsiC3c0AOU6gjfLC6wzsmgCiAwzEaCgp3b5kO3cpRlZodSzzsyrjHQ0v6nB6AJNK6OjlD0LcfRtp3Jf2i6SZxYjrxj4PVTFd3Gl0QVujddPeda8wM+nUEkXEEzb1wGxTPXsK7d/a8dnMqN52DQEcc+0tmIhCUeI207e6mk7wo0aCqkstHYZ1Vd9blF/+tV8F/93t7DjGURZAi0uoC/h0kmp8Ghh7eDCeAu/1KTyva7qYeRSeYEGln1z87ezzb0ysg0U4YbBrACgbpuXOO5ozPQ/r/Im0T9+4VEDzU3MJg5l3M+Zo3fh9i9g+JcrPB+3R73CRONWqL/tY2qbOpPzbeJpBYiERzlcNZ5YwY1cizD97FwBb5QAt4RdfcfwhDEvuej1PiKO/31s/FQTJdaVS1Gl+57j7zZo05ujMenz79TWr0q3waiiCjJXxUh/QkxsSLl3zTJTfJxtvLGvXByTHxz1P3zIR1jpratACveVwUX0SPOJNl3r29LU2/4WatQcq00r5KXdtm5QRJPWmqsI9giB3OgEAyCAr3bjW11lM2nHkL2MfMnFbRMqP327zJjjGJ8b/wzkd6m6+ZopXIVSRTZowH7Jn0t3rRCbPCvhFZflKYpZ3t3IJUrozP6RtwbxvmgPgFbjul2xhDi1okhkqG41QEXB0eQooQa2zw0hmte7bjZW5JNGNvV/YScHHtXadPtuVJ993aY0neO2FOqJfMP0A3TWmflHU0bOVnW3jaiehY7e2+s6eNI233uy3ZJ7RaU0SRQE0mzed4pHXZVo19io/GXcXnVolG7FruVZkYyDwmk6BprmPbuevcJr6JkrazIoS7LXMvrTZFGsRcojmciRe0SNNNjziegjk+XUxMcsORV2eGC+GWfqdQLq28Ap+AFgVlnoSq+2qoxG8ZdKYeP7KWW6VT4nq8ZAqTpqPnvAf4J/Upv4GEMrz031Pn+JbpQ86WSKUuu2y5W8kS4Tlq29WMuuOekPTfzrYfEuFJcPaaEqdvphnsHvIqe/FaWSrtscybHyCpoADz791JfTugjNRlyaX5k8vx6AaMv/eiE0IQi4QqWAE3sHCf2UoT0AOJgTvkPZzgoelhw3E0lYr4K9zeO9O1xzzu1LMlmgGKZGwmMzj+dsP+crDA0yeYiqbu4702PdOu/82JTd5pZ8Lq+G3ttCJ77v/cgd+qMQQ8PggtE88xPv0R1RTuFDfH5t3WuB07WqJM9G4RYeI898z2HHXvGfGenVil7kOVRKMtPo9FIlGpKgvQaAIYgheI0UT5FPdTjwsdLO1eGbRaoQyzIYPO8nRTmFbhPMA+pETjYDa97pc4ybjHhFo18JVGSLRuR5YfZHESlVWJepeG3Vb3BLEJi78r7tuKJgUKyl9CQCA3qGKZHLudmQLcdOltG0xjE/GoCYZZKcecVCXRqGK4qEtFo0hEK6Oqa5lZSCUgPor/qqVRuoutXHKzRmeytxyPOuczXzL4aOhzlZl2t3LtVh2dOGfz1CB+XTiECMWO17vtrwX+vO87JK1Pqm0ixuqco58H41/xWlu0MXKn5ymYjOVZ93u/elVaZ/EyPt5YffzybPts75ZoNiFGrzk54Xvb0roOyP4RqK8t0WntZ7Pb3b2/u1gqfBMU6EC7s+e1fLnPPg/z/JpEAx3IfLB2egPZe7/GGhAPilv6ZISiS5O/v0dmPd43HSIZ+pZ/osDTwjbvhFxwsKVqfhb2czTTac1iW6I5mgyhaYaKNtEdjNPF4wdpYdSgPr7tpcTPLL0z/RK1F7lSqcdv2PdTdMa3v1IsfMfTIZFg7fTJ6kkPTCfwD5O4pKgdb05sPNy9AVqyL7pf+e5T3f3nikSTjnyW7vH2Zo73PmPyHrlmr9nu6d0Th/YV2zf5jdiZ2/tcbXXeLQIA5L3eRsWvLrnO3RKVeyHvlvC1f/cwvC7ELRj3mARj1jI5Rjf27pm/ZgKwcvMkAE8OPFzteCWR6zORv66eGA0BcTvaFzurpCgb3r77cXREzkZzI4HeLlBA08Y1tnos2+eFPBg8TNMiMKDdDAh2gwLcgh2Eoeg5RA0wNvuc2qD1l1SnNtSd9nLf2zI2GGns6jZ5N3kb6J6pN9zdUu4ZTgQQYeSejOCLVd1BDEZAdc2bPZ2rfaqUTyeJcYTmt9k5ZRS7T0pZ1XfMHz30jngtpVDltdHBtkB0xLF/yFwEghKvkbbd3XSR35CP/x0Jh1WKfRTWWe1dVfzy4R9FJ8Pf/XmHhhjKIkgRaXUB51iRSTRMEarhU/SLB3bvu0j07IqPg0gJbhvOjjzJAFU94GXPWeIdSHTHdbBnGqxgEJtrdbTP9nlI/x8bH9TbFSuc3JW9uw/8FZw9VzMa6UkvWrYykFak7j7BroyGICaSPTVr+8jeqQrrkFnqSYO9+Yqd9O7jnv5zGs+5/CyRtyGxZeG2wb8SJnEQo9lhuzduQxcPeX/eGhel+01njga/FXrT9ked8P1yD2bcvv2rx9LfUmLTTlgz/q2uJoPcOXeU8kfujMPFwWcv26gPb07/78veRPutVxV3MGDEI/ZT1peYbe2daH2kPm3v+QJdqC3GdmtXd6byBelgtY5SlbXnXp8jlHFo9nYFSDV/1fnZObhfdeZ2e47B88Iz93iPfWbO98g9Z8Ru9XJVNyLwL2O8zB2RHU8UXh/BAXj3tfJqPl4KH/rdg7PzBrjfDDn7knVUqUrR06wxzXSZwvFnVjpnmq1N4S99ArcaaIxHkzbv2q1jmXgfWkXpYey0WGODr6Acvx2Ir8hpoKD7e0ZLNI3TF3e/yxVw7+z5KM5pu/ue7GFn2+xOq6/S1D43/8b09dY4f+9A7+nW9hs6vT+p0+M+ffb39ur5RbRhn0eiaJOd1vdF+lC7IebjUw3C72PToVHZ6aGqlcOrIc4egcZOR6L5vjiN2+5o64267NOJTPNTdEczbzT9+vHpsgSpRGbhBS3ipJFHRUPrOLSdLltM0unszE8H/PME4uY4aCY17xn4BB3Ref2ydeR8wCgnNbuP6Na9H3H2nsvUW5F+JVTuV2Tr7UF3X5aZryaAb6YP+pY1dV3c7napwjNprTLO3tVsL8Cj/+3pRyd6Om1G+/Q/XLb2fMZopT7C+Ra6TVe5fE67NUPagBPK/35mRfw5SWemLksuzXcig9Z1hiXTHL+pLk5CFawABICc+1vjNDGldveUSdp71tnBCOPrFpXIfrs+0D7z9KysUayWoXKZFPIJDmTZDHzOND93l5nu3j23N9WUR58OfFytS2l2K4/0Jvuj1CfVX4XuCd65//eUPbscNPj4tdBqb9n1zbsDI/OTuxqbI2IXVyt2tNQOKq8e17Sc/lE7u72i6e1U61ONrDac0i3RhJswDCgFYJSgk1YCDU2FOi7MFrxykdZSQT3sT/DUVLdEAyFXvd21B5kl1GfmG0uaRPchR9Ow/UA39LWKiQhITtYQxPCsNRB2pTRsZBBVMsXPQowG3zfVC/4w/LIVbf11fPIw3pp2HET1l2uhu14ApTI59qFlCnCrS2/bYJp1H8OTyiZMdoqQaJgUR2EoelJyE8D+5qUd1QFVDgQKDfFR/B+2yWzpYV3Md7LWvbP7zFcBb795mZ1idKP57UnDTTuf/13Uzr/dquts1xs9zlmcNhhf+w6kmek8+Ym97d9H/ufzelVJrF91YtvnnM6/kPPMM2V/bBt28xM79FrYZOz+hD0fC26X1/n40fiNmPmNy7Pt9px51Ea1AWHn4ehLi6uaJLcZaAPVdkGntdNLsbsRl2uBCjUhAB3I7myp5csoxsEy148j/qMDHtCBzEeqHpTWVE/p3Ud/1APunQ93kWhufF43ofhUPkQ6LEc7CjwtbNMTcsHBPhqINlaRI3A1E8lSjjOydqcqXYm2G3MpOmktGwPCePwFcMTKuZYDccdt42+8/lx+XZsKIs561Rzmhcyj29ubeUP13TTThXe7j9/DfOH1al5BXLnS7sTyHJY5EFHSV4IEMksR8ZpAKkBPGMNY8o/YAK2xlaRbvhtjfl0V1hO56Og1rjNmRt4gz1SqKgNSCZMCkya6ZzuwI2oz3npuIgTVjgoGwUAFMwInAlgGILCxHTuxpQ3sDYU/vY2IuryPM0vGRuBIn5NZKUmDeXv9Z/ixB2aD+Nu19toLWNYrSZCWk3UyX+PzPJ9/IkZMHiJo3sXihH1PQB9H1BeJV2Yt+kbiwlBTU0Q9CEJrPxBMlocsmKciHl4GaBnuRfL+uRrLyeEhOum+nEHG4qBz+MKKNYZV052d343VT/K6YMwGuHdGhkxmROrZybm65QLNZOY8eFg3YijT8/Va6/Xi2qWP18vnfI3NdDOKIKrNFas6Niwzt/bI/jOyUptFPp0iGEdo3juCU0axu9WRVRcUURCmsa3ejDgflrhuCJJ9xLGPDHBlLAJBiddI28xs0sizNHDxdXHCYRUtPgrrrNxVlV+efTCugn/4GcCJZOssghSRVhfwl4CWCIK6WXn56rsoy8Qavdv4ZozbWUb2p7KCHvEVH77RLG3aaJ9HFG2Px0hR3SoB3oEgohnXWjt7WgCV6hgd441azWjOBFXJRBxVaOvxsDJ3NyLwv3o/xugzRSEFBveE0uOZWN3IYoZXXfNuoucUfOTxZJVKCAXqGdHl15gNxoFz1OTGPVVRnglvIN8r0UJlWbit/G1jI84ZI9hbaX7stfqPp7vY5I1B8UQuaBQsz+CcGVqPVhxpvuUIXTgsCk2bHjCEL5VLYlkTkYj1VgPjMU2I1fQdu1Eglb881+3friO6Lz8/YOXydL60k2S2iL2HmWusseLqC0OSv8UshMoW4+5mJ6B8k7RlcgODmOQYMQ5Jnz4ZFUkbpneR6BYiATp6WVnrxF3Kuu821+ktCUQ2lvemmz0yd6koqd83nrXGEIMvzEmuMdaPoHxkmQRAjFtZhCb5WmFXnjGKDFKaa73vd4gGz8igD0EoFQDECIvZzFnODDgmXGSMz2R0J51RHusrI8faM+fMKWRk2nREoBWz4a5hemB5GGtWRLXquxhDOLs5Ng5sPleOvO/3vdYwE3ttbRPBMubd6CJAdhvTaSScNMRPXr6s9jaSGxUJe54iS2QUDrqpu7qYYLH1fqqZD0EsoJ0MFEmGhyK5NwuxAa4wyzkk1vOd82EhNPcat2nGhTzg7LhCdulI0DQPbzpXJcZhFlHGBWECTVtjwO9OMDpFboZLEHNPuIdhLwEEnpThURF4WEwfwBXLl0oMJ3qfO2lSxnLugPfMPpFlWEe0FYfNCoykfqkNT5AVpiidWs7zFgNq6sTe7zDvoG28nUxlFTOXHX3r6MM8WyKFZFC4BetawrOCOiklezZ49L89vJBgsp4Z1fY3HIjKY8YYcTf7vZOEwyYmughGpjuwFsYKk97fNUzwFcqw0U1OBKoczeWYQ1M+fteIP9wPhxLqGGfODbQnSojQiDSBVVrNKYtQ0Iy5042IrwemrZHy13hVTtJROUvZnMnhivt8/RWpCCYdqbXu6JXau4SDSu/8oCLumIjbkH+w7vlMM0aXOCzeojhSfKN6A61Y/PdU/nZjOpZfHhtahlizePgxYQZ82zMfOmQHDUUxdnQd2u9VDqrDI0wSHUf0itMeU2Hc2k3u50NC+IQ9eKh9mdOfcqX4BPIKUBbYPcyRssmrlV0AgpuFrI6tszhzq6DVCjzMxnEPnllYqqZE2zzgGfLTXVtIWeZte+8/LU+Fnnu0PTUb7xOGHj4hL/VR0NMASKxIrbJWLFzXU5lqBer13Gehv4n+6rSy9d/g73u5tnbJHZln2t7mDL7Zg2Gy+KtZKcDHOEXUEtc+E9RN50hvqmLREMEDK7+uzMkvFxYSjUxUELABbzNqU7KSY330/h/v0LWrKtgTrzUPJPwGp5tTvfluXX36UxINGFVDld9z8ehRO2//XVSdf2MxeAV8ccYMU9oZtK/9DmYrs/Mditxdb1/zt7n/7Ps2q3g9MKaABs5x6How/hV3uhNFH7mztiWYjMGZdN+vXk2ssxhcT22snnq5tt1R86XD5zojT04Oea8I1O7O7Y+BurtYp7VPr7C7jdm9HhXeiSboALuzxy2ftll0cN/+R3oND1IuHch8TnoQt2eect9zz8QL7p1vFr6az/1+lrBRiu+eDpEOy/lPFHha2OaekAsO9tHT/ceYvJpFZemMbjkpo5+DZ7TdmIvK/iYX6vJDgYnZLZFBrFrukYmnPmm8MP5e3bgGvBZwn93eUmuv3cZKOoZV1dZNUU7v9tES9ntYg2McuraGq1zGJekhm5IRLNlSZta7qQXAWEwaM0NgmSX/iA3gWinBV76rpX6O6UMjXTS27GpSyMaNki1qBZMtFEwWUzLRoF3Io+fUCZ/GrujWarWrkExk1xSQ7wrSJ0nwbnfhzbwBb7y9Kfzp3YR4fuAqVapF2CyqWljxqVallNwBJZpDbZ6WybZ51048wClzAPRT525cuS4N+/bgvRIHjAB8CgLzLhYX8J6An9mZY4a3XnsjotozNhId/RwloYwGCEOOR0kNGOAMpyJJIuwG6TbCQU3MNMzfJwMtr8h3Z4QSniMjR3R9P2bMvTMix7pNZ6BzAFmC7KACJ3hP5X0LGTJZgPTq5BzcHXC5VlrvK5MyrKWoMTLGyGVdpl2GOrgUltUdP6frfs2FqaQv6YZLNDO0aksT+XQCGEdodq/glFHsHljNqgtdURCmcadahPnKnZyDbYHoiGPvZBCBoMRrpK2kRpM8SwMXXz4mHFbx6qOwzqp3d+eXL/xYE8l/97PNhhjKIkgRaXUB51iRSTR35vHpnFemh56pEw6KGOpXc4VnxNdZY8CZpU2bllGp7NTHE9TUSs1UPgJibvA9NcKAuoJBZItyrLWhHUilWiWLuN3VnW8vkyGlGypVlprS7goidZ0ThoE9MDCRwaCNNZWT2OmYognG2bvtSnbaXGJTE4FE3pD08LjGpoFoaM7JW27pivLrYhy18ynHrIXKslSQzP+YnSNGjPEgkebHhp9vp7t4lLc3xxO5oFmwPINziuXf3niroauDo3hLU9Phw1+G1u3H9ZBY1iSK8C8PEz4+f03wzeKjlVX7fIX86d+uY7ovfz/5evk+48g5Xfn2x5zR32J4vsTHaKd+BdMvBo2tDxc+ZnQ4s+XDqemzi1FQLsmM9rCkFUvclZg2W6p4DA0RJLVefYlxz0Qg4+meorsFAFLWIY8TjDkb1EIeqTNG+z7drJn5yrUyfZj/R1i1vtyBoPLwp2hf0no5ZoZgm5KpRnb/jNmazTjJVwy5jTa0JROGiXU4Z1oZGbkSzdhMu9BjIoi70P8Rlvmdy71oDooyo810x8y09/KszUNIEZAArvNRohWfMB4fTbD5o3GkPmP008ecpfu8EY8StR+qj7WjxEzd9siCLJOQLKmEhMzjj1TebddK+17K2iJht4eOcQ81pUptPphLneubqfTMUyXmZkkIdpXu4N3wbilH2O1MCv59yXJ3y8jDm+cy40IecPYIUHTuhMnMfg4O0+7d9tqbWMzD5maMj0uKZ6lb/JO3W55WHTUrMdGikwoetfq/YvmAyVIxj8Gin94xXDKJae3I6Fl9zazIPsoY1ycFON9Y2qcV0aHK0gbL7QOPzJ1MEt8+QboDLhGTko6UMs9MOuXtvnX0ofOWrWRIuAXrWsKTkJTPmdOoZnvxDifCWBclVAqqsF1fk8ktT5qisXuc6ZY8Y8G5cuVRplCFyHRPc8z/Xrtr+50uNDtAJ55F54knOJwyDhfsv9dm3wpikVAFK0ClBGPz+93FNAF+ozVlwJysCOZUi0Hanhv/eHp6p5S2yq23fPQPDaUqu7VC1N1RvJ3V6HL/zCnYzmK9Os51l1kGEcbI0yEMVNg9vTE7zoPAcnq0R5U/RrjNkveh/7sCV+9dZiYv356VpZgQ13hjhVIhY1uILvr22LOV5tjxWu5UecwM0AJoBXCavaLp3V0JH9+J7hpFpycdjptpfXcRHf0j6yG5c7f+G5myXwPPr/e9bI5H1h+MZZZ0XD5b8MpFWksFMczGvUvqvzI8l100lUJH4+vzKWzSNwtV9SEJQKQ2c9eIdAhKp1k+9Ty6vpdz3fQarmh8vSb9IcPh1Kfjbip8v2S9Vj6S+aAbifin6hlDqoAMcGSerVbBpfWw1sKCoA+yKSUt0URPMIIApQTOAyYss2WtsUgDg1yDbq+x9BQf5QXY4dlM8NcDmFYIWzjFR/H/sI18/5yvIZ7EPJDWt42yG+wpyibD6LSiUBP20BPCeHlqlYdFm0zFnkVtV9Y3pqCBlleLR44ooOLZHgwmAAbjMdoY1pMT+bw/n4jW3h4LMFobxj8e1GHdcrOdR+biMpJsFnlwYDK2mBVGN+gq2zqLR/DTGqvVDrDtNgyHPiK1MRrZyeG4pI5diwi3n4HqsyQCTfus1uzusOcaLVQ4EmTQAe3OrmH5dIRFB5efP1IYJOACOpD5JOhB2+PkU/bneT8zH3Dv/ADak8Xct59L2CjFN5dDpMNy8hkFnha22RNywcGWXPMGzAf/jaOkOcNgJjdVBZO0UNeig0otzn29h9Fg8bQw6bNIynheW/nx5hLNVa3um+1iPFRAem0evaZjBKrWV1cU6cY7asXfA58BsOSo0iOqWYRaPXLB36caj1IlalDkOgwS7K4y9ohnV+lOxNoALVUJvn7rebBnvY69F3DQJRA4pgRKMKsyDOYOoqGMUPtSMHHFKxrHRTS70It5EA2y6OQEkkjPQVJEcRNFCDmOXtRbJDjGrDNdnZbwLREXT1wOVU0TuIJg4Lgpb0HhqgpRqMP09394O9+ALpYAUiVcYbfwsEBHrpDEK8mqF76lDz/wgwh4mFoW8y4WGcSGQ241pw9IS5Mz22zV2otYuIEKhWgJjagaiZDsjzAmc4PWlCUi9mZSMYJOUqnNbGnGLu8/V8wGqqSpalpJk4TUBJUQEwBaIe3WT15uquqxYwA3vTJebtcPA5FXdyS8BU6ykh8bm22rFJHZOAdTSF0qDKDqt28i55kCQ9O3U5kBgKumrO6cm0ldTmCnAoaNR/af3tWInC2fTmaMIzSP0RqnjKJ/gresumCtFYRp2LnegJ0PS1w3GMk+4tiXMhOBoMRrpC2AS+R8fYaGBVAnDquM5qOwzmqtMQa/PLvjEIT/7vOOeHQtiyBFpNVFyMFNntZgHwYgOMrmLDI0eABGqIbhOEY/ATweJpHhHg4t4pt6u7+JYq4GEwsxZcxy9Yw6PDgQtRaBznA7iG7depCFcZiqyHAVZdpjxBgYQ81Fud5NqDI/kTaouae2LCsaJmY9GBmhz1iOAMQErUaouZumuvnkII6RHQoydiyLaoJWugYRQIRzFOWWajEZ2Fl9Ra+rbBjOzSY7qMpTyMicnxHloaCC0YyV5sdArm+nu7jIu2/EEzmAF3HPpDAVabk60/awFcOlNg8zMe7oeIax8av7IbG87XBrInkfsysrkwwmWQDPIB7m9ZtWWetxzKu+cm2CDvmvenRIWjLGI1OF7G5NxAHGF5v2VFFnmp5K0YqQAPPUDRESGjVFNXAuSeh4C4CzcvpqZAQ0VJUjnF8iFhSjWVS+xIhkmlrqs3quc8YwdwFrSLU10BINE1fmpRp781UKwADJmcyZAiA/ldVLq6Gq0xMAnl4CPsUxNA2miGeZnUVe60mOxNpNG+qjWdktcE2OTs5L9u+Zx4mTNThsiotYmq9QNJBX0m9KeJR9opQqytq0vboTDpFYwkMFi8jRw1gAEsBVdwhh8xyBxwbwo7MQaNbee9UKiC29DBtJhXMm6AoOF46sHkm6IUmGFRJ7cSs0yTWSlAx2Uk7vV0BcRXzylAjY8nBRloWw59M79AaDS8ZqAPEEgFZ9NsgYcG6buUpTvIaQF9WPt55FBEPzgiOfWCv3iBxeHoE3oyNRfNgCenvE5SpEhTYTHLGQCmLoqyuDYmljk4mJR5ktoeoJRJoR0SxFTtLmUZGV49RRQptQBIgRRp+5PcQAelXBiR2sBi9jwHgLWrSEZteLp32SvIjRcEU3SmTOMPp73+FUEWFAXUiM8QzLHcYwnr5q84o/1lQQ2cO3jj503rKVepEmcnVHS3jsPGzNnGHVbC/Ao//twUFJqYK6Knk8JWvTunIuSv4E4tkBcA3i4CyicjA87zVTNEGMfn6/p/PrOZQTrlOOCdOZ47BwQTm03NLBNMflIcs1ocLg1XhlbKmAiGXThEtVNuKt0LkF1loj8Zkky5xFTIIlf8HMRVFrj/aXdP+oVhBaVC3MRMSbJBJdqpTX86nkHUKeJSY6xIFGVqy0JlgZDWSQmtXSIrpNsd1oecgOaVcPOBy/vYe91zQ0Vj3kJ1hKOK3IMe2aLtpYH3NMnZpmgB0mseMxz/TTzZAWtrBLm/imhnQXzDlc6OnXdDZcWDzUKdGM13m+Db2zJwgAMB8AzvytPsT91R69YRcY4ZuVEfO4ZLZgtUhrqSAe37jnBPpF2M607KBnXBTZoJapiuQ6AVLVzUBrppFTaLWqIV4NUtwsn2hIrK7v5eCbNbDtOL+R+0NO6/kos5TegOn9kuuPZz4qcusMBrdvDWtvVW0UanFmnk2qUinkKThPZ6uGpWdKr9CLQATzDXGLOnezlQjTGJHxfGPuK1m/fa+vcWGB4YKtb3wiDwc7PKQEfz3ACBvhFE7xUfyDbVKqROdd7obAJpDWN5i7OlfoDikxePgB4GalPWqe86opqrLz+WtRc/4dtI/mOsP4vHmmsxoBFb8uIbEiBq60eW/r96n++Pz8OSfz+RHTYMwr+OeppIfB9Ste5z5hqCN3cswTJmPGzHR3g67OWOdMqnrFZVcXH2DbbQ099D2gg9E+nRxgw4qrWlW5/TFR/bxkdlp7Xcx2d8Xr2jxVuBM7QQeyO3tvy6drWnRwy+tHCicNpIAOZL4KepD3Ljhl/3x9XicOuHd+mfGTxapff42xR3iFL9ZDpMNy+iMKPC1s85qQCw62nDVvFDgopVL4WwUXcIq7OYY2oYkNPgjqDx3byCmy+FxQVpLQWap6gS++znQm/P8oOHovMyNeNbC7x0It7knhGDX3Pq8JaumB1yCi34NAAtx6bMyPHIaDkuYjncP8/YKmpTqgKjDpwRwgCbVSsk5NQjpErQ3QmhrVVN3y3fS2z7GJ+ctzPFuIx4yai0UnjbAY3USWi5uZB9Ssq6oNApbItSC3yEonYyzpJxl+m4suaiL1zFXU81Lq7I8sksdkRSzIWkLy2RLywH+6w0z17ibd/KiHQ1sL6+5h6ubdIv7wh7fzDfkWhaisnHxv21yMBBa9sWEI6sDjcR/5+/v9/U8imHpJl6V5F4sCPzzGAapDcHypvgmqVjyYfPaqlBNE14mWWo+mZfuzUD8rBJPVklydNDMlRJWaUXQY9KNaTGXSMG9NFEubKjXzZlNunZQ0kaWGItIeICom12rRVEmWqhKbN6uMIU58Uy3oWsaimTmZJ1BUhfwJ4oKqe9kQaWXG5U7+eJgBdE3L8wNMBABkUK7ubEJwtlAADR5mO3bSj3Ja8zwjn073xMw4QvPezJwyiv4jOGfVhWAuCNPpddYbjPNhiesGJtlHHPulLEQgKPEaaWtml3ae12fGWAB15rDKZh+FdVbXtffml6vPhG3w/nM7n7V25XsWQYpIq4uQg5s4zLgPJ2Q8yp9ZdWmTQKOMtrDDHGkQX4OUQpe10GxRP6BhGQU1iLGFxtDuK1SdzWFcB8vc9vTyR4++t+8da0qfHTPcodFdHbz3Hnvb3t57ROjqw3j3cWfEEs5o9di/LT9rbYh+Phb6NNOuxlRCnuneTTwvGSy5cnc3CXRQT6J2kxsRsk44R0k+vCUUQdUj/R6zXTTnHC1UfCKfyjHz7zlbMjAY94Kk+QnQ+7G4Dpje52PxRA7kZacgGPtfSHsvyO4z7rG7UmAHnTFt2Xs+jn+tfkgs60t2Yf1az+lwcF0ZIjrfsecQRIz2zUa7rnQsUV99P3k51H/40RFpY810sq1HA62X+OOxnnW6XS2EV8+l+TkGhoosuxR6Vl4tZ5PK2Ugp8AVVLU2KO7Ez8uqAsTFCEPEEKNYZEIbA2tS82vM5clt7RE9/VIbCBmrbSynTcoSLXO7juuRVK+JSxjecZ6E+UH+7uAgR0R4jIlIVZiDgU4PSmtICGBpRqn48bw7NYoOMtD2muESESGZgcPDGwFAtWsRS0hcCSkq8hykpR2P9YWyp3qeVMoqLkRGcpTnriOV0qGAzB3oYGwoJ4KpXB6cpew19bBzY/NHYSq/retYKRFNHnb6yq2jPas8ho0OkdI4MI82AUGuWaKFWAsbMUEwJNsmfr67orsohG2NoPPvoMEHX4fcdU+2tolJLBqmyLFVVarFIMZd2oUekKxneE8zN9evLSlXFtBra9SxEXMgDzh5BTHE6EjTN+2Krgtu7usI2TYlL5ulzQUx7nybKY6k2aUz2dtvTqmENYx6tdJ9R6KgocII7SigTSgAxxuj73j7QoxQxLTvEeqRvgRmzqzMlmEzjz8NKZ8FBwpBlWUYCt3aojHEhZ6oRSc1z3oD2hSlr3dZMmc25l53O6ZvXh8CWJSknbdwW1h3CU+fhamaOMYSa7cU7nLWG6kEJZRqYcbj+3Ao4bOfcnOJ96LinqkpLlpTcXUXJjFqh1krV6c/Xe3f5fk+XjKnLdiLiyb1Ck8pDPaN0MC30FQPLPaHC4NX6mintQlcoZdOE4hiS0s7BzjIN1lpWfibZC7Myk2JXCJQe/1oGZX76EIlEWsGdm6e7qsZgCBJr1/px38Z9qv4ZBHzaOUHsLdSe2ySdHym7oqlS2syvcH12X7p1XAM0x9DOc/Wnz/Kv5w4lUTvUWwUKASl3Xf5aHUZirwhdtizvodLVY4DtJS9+uj1A4lt3GYFfCMfsqnvPDn7O1+4SqoDoSlJclD7njhj2wOKa+P6qaB5eWcsW91eX13gXj6w/yJir6bgwW/DKRVpLBesxCDLZZu2HLPdYQe2S4ul1fyu7yelCC5Sp1D+9dz5XrH5aT5IF7dwdiqA7OWasyiQiFss9FOG+VgxX+HE2C9fyWEEfFuv94vcIDv+1lbmhBanQT9LnGAo9Oc0TDjG1TZXaum7IVly8SZ9Yc3oNVuUkmtU83LPOf/BKjPX1I9gaa9EARkheh6GxnqGLUdaPfnBkOf56gDQNhJ/hEh/Fb9jGe5X5vMvdUNgE0vr2xm5zCR3BuyykSTQ5caObM+eRsps4n38tasq/55Auw6k8slJp5bSz5kOTGGLiTpdc15ozzH79+PbtwjP9/BoJwf49Fkpp8iN22yQ/ylXU5RhJyljbCMJkLDpzH92gq5LrLFLXlzRWkw4d224jsEBtVCejsTk5qhsormoz4/bXQvVtSnZaOyeJ3d3jNQctFV6JF9ABdmefy/LpXhYt4L6+/0iP5AKVQwcy36HU0HXt1hvfXh9fmx6Ae+e3g/p8d3/+sYSNUnxXO0Q6LGe/osDTwjYfE3LBwZZSc9JrEFlo0g4lEXxFTgOzBz7qYCWQSUtDJw7K+wtWtoK1qNRVm0UrveRV0lmPPx5BHB29VuZHGzq81u5e18VgyU03RJuNWrrLKwvT70GhUnpsCQQSpM2mJ69cVvg7L6pdbsVZUHLynagFxzSNdipL/hEboAUJvn7reSoUn5YGABZ6tpo6Dg5jRBQbjsgK5jAxg5mLGkIVyKLamKMr38yRepGt+GDNvWAdKcuVAzlKsdHOvUSCYyK6cO+8hG8J7uL2+sk0qFUDkyawcDnCEeZuWsW9Ar/ybyOSF1RYmSG8rm3nKmlSQdvWXZJlXypm/+affuAH84OHKWUx72Jxh3VPQLztkbLtWtZq3jKFY43DI2xFjWJ0GpVoEdKhY49WMnsM1MlGJ1FSqFE3mlajrJ/LiLUaD3twbj9PXnHyGOJGbSRjS2zdxBD5WVp4CId16+ReMFS1yM1cQ022Ii++tKv2DtKmYCNZKpuZFH4fRVpV3bZLWQAS2mElHg93gNHyjucDXBURdfE5QqQMyEZpgJoyHSOGRDNpq35tJfPpRMI4QvMYJJwyiv4rOGXVhUFSEKa0lHqDeT4scd1AJPuIY5/KQgSCEq+Rtg5c+lauz1ywAOrCYZVBPgrrrOYcY/DL1Y8l2OC/+/gx89G1LIIUkVYXcI4VmURzR45X57wyPRyZOmG4O19B4IXkKKyfP1Jaz4tCo/5PiUrUFMIgH4jUsBXJBFB3hpZ3OBHtwSD2ZnprHC2kuZkiqqkJXeRzxWcparijR7qLm7XwzgSomov/VCTN2BCdJhoJkAEjbhR2C9UWvcnZec1YZzg4pGkiJYseefC3lgGfQIRzlOW7V8vo91I28FrtfJXJrFx4hqpMNDkSLPO/lUdydByPVk7zY2ivx23oYirv40fEE1nwjzplZTGRBT++nsKjZtw5AqXr8NCQhoZ3hoR86nVZv2Y5pBKg9v05mosJtUupPQ6+ksW9ng9f9Ho9jntf+o6vJ88LfP7dF6LZp/b+KOI7EVq/xB9pT5bvXS1oP9d1rVNeKzUhEnZDdWuy6Swn183tmSvfBmBnHTJFQkh2d+PMYERI6TM6nCoMgS8RhbLpvttK+84eEaJiKSc/F8rJu0s4c3XP++b30RC3kz20lGFHQvu3s8ud3rOS6rPpM5WIzE5uNs7mSBfoEXuzb6+bA6tySIhTkuPnu7KwUE5JeSzFgb2qrKZMPJKyFXmWoRjiFP8TjEd7L17rrB27caAkGmBVY2s+VGmCKXsYS0ACuOpdlfKFayQeG8CP0krJ2+/7nkdD5sva8ex97cZaV4+ZnFVFFC1Xi2KnmRTzVaFS3Mk0+2qunYNC1+/fK7S6Kg1ckomYNauaaEX6/apN7QMYcphmcWcJhYIot7j1jsr0hOghQa+nMpnQj5+2NzNqtoWKrTJzIQ84ewR5Qd8JC1vzz8HjLLSvIqq0Ga3QxFqJil7bBJxLRwOuyNqWm4unVcN6RqmzIr/RaPgOFr2dKBsmlAFilKNf9/ZUA+hVBTt2KPfUvmHMiL0nAxEz+LA6BTloWcQ9qfCwCpXWJtbMrCAE7v0FfeedXtZM2et6Tj/t3TevD4EtS1Je6tZtX78cwlMvrWbmGGOo2V68wxk9gYVcj+PIwz8KlgIsHHat58QTr9R8NUCl6Fm76qoqWiIKtR7UuSX/9/PDqPzx1Z3X/Pgp8sW5B8Jh4YBb17OSD5oK3pEqbkuoVd39+D4el2kVqqUjTYySQ6+au6xverrYSWWru5AM0+cpbDTlL4XjX8ugzC5RfwhJV5qVqPuFL+MSU32ieWtf75fR3FBmhYZa1wAI7DCeV4mL0VN06GlO+RH5HI5Zna+oeqeUvTITXcDPz90/zytQQHTo81ZlzwALOSqGv0dVI6V7BIYNW+8FruoaOx5LTckrpYgIV40ML0S3VhXj6lXptd+jSgCqjP2g9CRnrSemsTMaDqoiTmyMSwYhJZRP6gIherMrUR/XMVuwWqS1VFAL27OXqO675ucqWLjVMWlO/Wr5o04iKRreHqDvuvPR6W1VafLNpUOGuB3oEbIS0F+/jqHfD3YpmgPbTukpVf2YBJU69c1yOVH5/ZLnt9q3iVw+UsDlp/h93+ZG0sz1yDybNqM2fbsNe02NKfby7Zxax8XSG68Fu1F3N57ryUKDK7MSnKp9JVdOvPjJ23BB1ne3wCjr1A+ObMdfD4jhhfAaHuKj+Avb5KiKwF3uhsEmkNa3jV5RNe1OOTCkhwm750496RxjvM9cfgIAvxc1t9WtuntdnfcL41mxOO2s4+kZlKnyyi/MueZbeNLfv379GoP5n88aDmfOXCjluR+52w7M/VW94xxJco59UGAyZuxynzuIasc6izzbB43Vmxc4tt329AVqo7oYzd3JcX/KwaT4BLdt6ktG9YzCgaaN8fGwu86VqA9WoSamBR2o3VlWy6eBLWq4c/mRwsgCI6ADma831DxUO+vps6ylNQC4VwdnaqlRk9vbJjOPxlf7CR2W6y9R4GlhG52QCw62aH/UmjcOLHzJYcNY9vw4dhPvUFEAbTdmAVkXvFiSy8D7chNj5XM08vSMbzJ+7/ns9McjyOMrWF7jLsvvaouqvd8XBZjKjOf1vhSN9MTHTsK/B8OR0kcs54eDgxIorMg+6x6rqZb1abuZwrVVEXm0gZLzE6UjnrzKP2IDtErnmNHiu+nmX5dk7i/P8jWH9HHqXtUzKVZ69uaqWTXCI1ItvJm5dwYukTZNPqqmSGr2S5q4mJqgibkIXiJAqcNU9NKL9XK9Mi/VWzpwLzFHILp1py1ZqOyypalHVsyp3qLWsPbmm2f9648nnKyfZlBTdeh2uRg1A6urniq7YyjOyxHxOP/4rP9FntoMWE5mwbyLxQOkJlFoRAieWt3YzMbP2Jlk7zMAYUULpegVFFHCLgXKHsPY7DkwCohexAjTk4YxaTeoXKMzdiqLROell5OSdk8X3LhEDoksMQiUSd6fxgxmPp0X986aO3YLOr+nhlbmjU53uy5nPc005CSb20V0bCbpY+tO7JOzZ8CdeV0jaKQUgbjofOaaMMwQ0baU6s4M8Yr/b80JrWvvPnM+D/YXebz2Wvl0YmYcUfOczJwyiv5HcM6qC4u5IEx5XevNE+fDEtcNTLKPOPbF9cmhzEQgKPEaacvMTV/IR0ywAOqVwyot+iisszqO1hq/XP26kDd4/7qdl4268j2LIEWk1UXIwU2cGO/7gDvVfFTBTLTUuJMN0ZuND8tIL5Wv35h7BnlAAkzKD6YxWIUjttcyskImoFTyDpgqQd0L1t/BdHOz3uUzQ2sBL4a8dUY2F1JMvbW8oqu7qXK1rIrdzRTTliIkIlEESJCS9wyipp5unkZEK8zkJDG4BRgECVGAQ04ANu+hDIaOxAB7Jso3CZdysjizc/LFRtE0blCIJdf9g2UNdguVZSmQzO9S9ixZMozGrTQ/luhOp7tYtPd6cTyRG/AOiSvBtQ7T/ecLoXmxM3fnML2roWHlyo/yOPFe/bYhGQbiUuBt4cerV0XBtC1P27MzjJxANe8PGfz53I+Gvu3nwXRzvpdoUmEl3yM87yZD/Hdpvvnh05E0RdWpObo7OEFSHvx0OFOZfKrhhu9eHRYgdML8qk4qqwwHGFub2cOvydcrT/7tZZI6gUAORjYJGbODckqW8jHSmcp5euyxem5/6akHkNtOFEESqRk4jV3yJDGuuqa+v0dUw3znJOeqBG403lFSdDujRRlRMrGBrvGwXRfm0B30q0e6t6tGa9G6XmmlFlFBqFCrxLuHMUexxugwiCJK3NzMiOMRtrBdo23EPLNREp7wXfTuyS2aPeTR4DsxhZ3mZdWSNBJMn48hvmUiRk0N3Ae6unVFQ5dxaEa6VEobUQ9ai6X1GTOE50KawqUJN9KeF8aIu75+8UostknCOS7K7BGAk9NRA3n4dnUV3UExCtEkruqkpSm/nwSOk2iUo6CktdueVg3r/aosaZxEwaNioofF2YcWiaYS7070fXcKH6oKLarPWKDFqxJHsWGoxCM2H5O6kOC4rwtI/Tn3Bag7lPIwKTAOgJj7nZXS2YeOW3ZWWbcLRUKEbS/+K6vFsRMRy3P9PTRBVG4zMh39yIQIoaJ3G7hJZmCzjSzTd/Cvf7qqpcdROE15n3JMmKYSioo5tBzywTTFUx1XckIdwyXqBv4+vQHvDV3ThI5N3WKSaPp3VjeG+JKVcPyCaszOgrWsuMXdFQEBQUp7v78fFC0j3oJQkDPqTglNUmLYPSCImxv7rNhNYlPD4RCe2wWV3Jd8fnWMK3HlbKHVgBdXOauN8WtqcTM5vTamE4sVOzq14pj1/RBU2My+N9ER9IqmWotB7HknjtBuO0k00TsZ6WXPoaKIcQjfdRqOa5steOUiraWCLdHc0GvEz0mtiXHF6M5k0jgwgChgcztKzmVWEpdwcPgEyghC0cIhRM/TqPFU67W1FqOkVXsxAKseT+HXwGsMJrhWNEXjZjiRpL952W4U8l0Q0ZBEXW73JC2RvyVdv09XK6T5kqD4jeUAhECnX9d6dkXn4bDqr+h1VtNrPfesDjifP5VO+Zfzm9sjLbdWWpnyUZp3fmvva/7g3PnPf/7+rjWl337tKigpuSOl2pe3N3AfSSavC5iMJgyE+xIpqCy6TpCdvhZK3n0miabXG5hVvUo4nVVRiit/Z+bOn2/Cvs9yTXb/eaZkz3Z/nj1V1dt3yAJ0me3Oqd3y0q4WuXFf5x/x2z0IqZsOyE61O32DU++rO/Xv5/tTogH3DuwhCbG//mePOlXnh4iH5e5/joKYWvZQn6ALEWxVaw4xGq7a6pOLzlWqmYgBWZnc1i5eAJMapWU7A0VM22zMCEpnOpf8sDfy3wpOfxbVsW8fhnisEX7RY7iekGom1z9KjL+x53z3/gTdF7HZsdNA9w5iRIFsxr0BiKPAxTPIIgxboDZMs9tvtZMby8dtVosI4tHJBYh7ZDfxkgXAFTV+0s2QRTITSyHRAErweFHfNHpp4CBAyEAOJAB0AADYaIMWIxHHfaqSb1q2LYGN/JaVnT9rVoYsiqJuqGKS1Uz5MZ7FTU+224lO6y4TK5UQAMJwfwkiFaQqf3nwB4B7AMaLwjY132JxBSws8Xf2GM023rBsfE5OATPvHZvagYgGLSCucU/EJcMxBOekyAhbpQMxKaedxtilzsEEvvesk6J9wEk5cl0xSlSi6E4KZ9SjUApipAxuTRLu3gFQUFgBp90jnLE9o7p+B/AmKU17atTiuUHKOWeGOeYlHGkRszNdaQzp3u3XndJ8OsNTSowjNPeeEqeMov8KnrLq0k5Jonn6rdabu54PS1yn8S/7iGM/yVwEghKvkQYPNGMhH3WCBVCvHFbpyUdhne15dt/jl2d/vuNW8E/e32sdYuhajSBFpNUFnGPFYYnmbu3uoizTw56pEwwVMUa/uFSwjvg6+56VvWOab1G2RPMmBJGTOHthVyQfgokdxh+iibuoIgJ2EF3fWgWvTtVUiT0rKei9l5B2y27GzYsZdoPq1ntbQKy2W3DCPonYGkR8OnkVYf+Rpchi3HQMXQyQsQCiz89pgk6ZCCTyEwy5ppRzqEs0tMg3JoYdEWup4QuVUkFSGbNA/w+2a3+plSAPab6UGTzdxUre+7vERetn1LjVabb/ehH0XP0qI3M0HObkVKXJszo6frR8M4VRuFBo1v7zPao1GZ6/FWm/huBRAM1KSDL56+t+dOrbfj15uHl9tVtJlRG9T7XKzpI5XuL3vL+UpIexZgTPM3U9a+UqhK4PIV64bik+kuA6+nTa+ekisoG6lQRpOeteplirUEYTjpw+kPIXj50jUtAIX19tlv2p3d2JSSsF3EPSXPciN8RiVq8LXzvnvAfQb6O13vec+Z+dVOQMuYlf2YlbrankllhLgNP07AQs7hvzjx8PcJkDmjRJyHLV7DlojZNWbXdPcZEtI4CbwxmbaVuoVSUy5GDy1wly53cbRIOW70YjOS6EZY7N56F0doM0eRirAgngqo9CMC0/RpX7BvBjNMFdYlzXde6cS1m97e895tWR89znWbFmRiRpdY4ZeY7AyDK7MUaRRFT7HIM65qQ0//xZmLMxp4wH1cp+5ppZkYsUezxzY30TZNrDaxIByiwsKdhOwn1IxtQReVdMrzcDcNp//U03Zj4DXCXL0krpB1cavDwCM0RHgqZ5X9xDwe1dWRAlgAno2arMdJ4uP15KDGVpo4KxcYktT6uOzsVxH4lAfpImj1rPWHo9UbY2oQUglqbo12d7ZUPQq4ps6AvEcOvbnSmwR1mW8hGuGV7/bZfh9IDRWIgiM2ewtHZhfjAz4Cjg3h+gG+8yxsOqKrNz+TXA09598/oQ2LIkZaVu3fb5yzxrupaJkYQ1893VLkA6cnV7+7nBFX8ceXjKhUWQIOuxlG6TfVWuzybCFHEhpyyyJU6qMUTsEidr/dff3o6CH89uOJ/eJZwIWvIYLkmGKp7G6WCay8srr7SEOsbboA1eR8xchDkZpokJAkG+arynrIsIahCPebRY4iPm0gqf4+O8Pym52AZoRP00nqUWojEYCgT1GHdmnUDEk/Fg/vHbU6E0Zmj/jLN17HIIC8G+ZpyHoJEmARcOfaTp1nS48ZUdjlz4qpRarVK48J8+h/04D5eIQQ54bowsjJQYsgx/jcKaMHy2y9Ch8+dmzGwcOxpbccz6PkoYI1zRlF1eCOOWWY6jF4arvUYmF2FGyZZsB6WPtFsDSpMUCho0I9poNCEFhNT3MnAXCLGb01jWcfFswWqR1lJBHWzPUCeN0bRMLdzq+Grjhq7vptFFWIc8x7A5548YQ1Ul+tXtUpHF2nV0MqJUzUrZZQJgcs3Zmg8iMxEHHY3E3dFslGbqqUAm7xe/H7Q+M+KzPncM17/p+Prtt7mmqkM9HbB5bk15jPbpg1qTDu1fq5UdY4w27BR94QOm6mM49Dr17KAVTUTGtKRNM5u2ziGTcptMMiIQeeG6FpnBNxFeL9oY6xOkD89hKz6Kf8I22quIQ2+EBodNIK1vG1XNXPVRaUennk3YQ4TqmZrHeIXJSEDn869Fjfm32yprdVwHjumcxWlrjkkmDNNkpjr92DOuuXEI968//WkMxN++6nDx0Zyt6jBPdhvrtiJe67WKSxhJYh3r4MBkjLLL7VoxUK24zplp3l8R+NULb2Dbbat2UxvVhtG1OjkiG15c1SEIbu8D1Z9eMgJN+3oh2t1aP14XDhVeia+gA9qdHZfl0zosunHH7UcKkwhmAR3IfEGowevarXf96ePrY5Ub4F5d3GupqSbPf96y2dx8q5jQYbnwFQWeFra5JuSCgy1rzRsTuVHuFx9um6pU3wmQYMKgIImi042oFvpTkAW3IkYKjCHvQYJnwP3G4WudBnv/Dfw3glCPYfCKVR5Fby+1dT1SOMY853q8DlBPL/w+Ulp+D3x009T01mSgCzAC/CIp83nTPjNR9jlEUWVxbgUR77sxRk0MvFPjQs2IWRugNeLBZ7T47luJ+vdtwbr7jbYkCJTgmbzWpLVY7c2Ja2Z3c/qym1tTNe8gchC1U+mduRJVrv2gRkbKSlJJnUgeeVTiylqf+OQT+HQ+az2ZTzh8kTJHhFZtnrNn9ZaNNuY8UotUsky5YtJe/2hsVsuvfz2cBsI6q7Aym/AyhJkEeRbkcBCzDJYwRNzv8/H5+eNvRBPtREyERPMuFndsyQBKjKzTqkM1BYUYBTsmyO2AKSBopFM0KJVowl0sEvdgRtVpwK0QaCBKIBwNoZ0kAj+qYVaEnSKoToDVkiqkmBRNMeqkSacUOWCcJrp0BVAECBJLNAOuqgoYQVGpD86ABwQWPU9DjsycEZ15U2WAsyYSUc2+PYTYDHGu7inf7zLe7z7MJS/3Ue37OI48pqW6A6/4knqj3GxuL77qNd0eZSpjXU0+nYEJkXFEzdeFyCmj6C/BMasuVMSCME3rWm8mPB+WuE7jX/YRx/4iqyIQlHiNtHX3xlfyESdYAHXKYZULfRTW2b5el+/xy7Ov8WYIvP9az0cIXfmeRZAi0uoi5OAmDeK0AaaJTlCNZiGKLiYmI4jt1VWuImPEV7gIiovxyUL6yWEiFFVjNvRqdVh1flHkHTBVgroH1bOfozml2UHyhZVjcB1VRslZrLasWejSwLsu/3F6bbUUO0MiZ+561HISMqnmIuh76D1jxIfs+X2rdZhpNUcQBiCCpImAGg9irmu8R3FkA4mx9MxRma5ZFsL8jHMU5Qs+lPILMkcyjH7EFwzg4tRp8ksWk+EtEGDuzw0dG3GHTJMWoTTvj6L/8iSMEwR5X18eT+QGqzeO17ttkUr8cQpdbdS3XjIMilylaunwlPwcVSZ+OdttxyQMxE1m5+OcHa5nwVDy89Pd+NmJS+npd8nj6zXdzrov/HjydHP8KbeiVLpe17wx3aY0RX2JT1P90oIfxXJjbn0Jgd7GYYeLtPzualvcWlrY0WVzm2c3P83dA+xGHQm3mdVSMo+jnTgp0DkavGDD+Ly1YEJNr9expvY8rtaamuRDIxwPx3WtRVthHqUc7+/8I8Z5rk76O902r3Ga5V8KF+YF0km7snPcNzbSiY+SVgHDuamSeWshiOvbBzdfBDJm9DTJ+a22qd8ozbQlNix5uIcMAdkFmqFp/xaOIzsYtUTxD5l9jtfuIcRQeDeWEOA0J6xbbJkPFSQw0+xh7HBIAFd970pz4efj8GnjwOZoUn/37q8YpwWznfGqj+XHNra+WH4bfHQTUT+PRTPYoipovgiboDuqHteirhc3yrJ8fnazXsyo8VPHsPrWj25ZbPioH5/9tPzlbBJVBpqxNHNzTNTQ7Xp4Z7xYLCLM52VMRvHHH3IIQpAZ9PDu2474Jc6u3WaPgAo7d8LClvnnoDtr1tc9qrSB7CzDlkDInN7OX5DUY+lo5mpK63L4tlmD5DrLsnacjESA3Jixeav/ejtRtjKhCBCjOfr2jA0T4QJVFQ9qh0DP3teMZYIWLTlyvZLhYXsnnjMtUEoZBGzWYXIc71gyGZmFnK/rA3pTL3k8PmzOyuyyLC87vS7fGh9wBrYsSZVSM1K4VWcUtbDouJBO1Zr5tWa7AOkjd2xvPze4MR3HLWdqw9xZueXXugae+TXs+DzdTUDWNoA+siXDnDGpxqRzxPWvf/x6dv7l8yq8zN4lHBQvnOfjsHCMW9fLOB80Ffxow8RtCTWw4GGLSYZu42eJdPkd8qOUnM2cu6zPdZecEuv6XJ3QzJaVUTn702+h6t56Cdg6F8wLpbMts5Q6ATYSvxgKm0nFZo4ewv7xmamfZszqVq1c1tyQ0Tnz6+lcJKNTdUtmOB9EbeZF2FUvZtXgtgBTijGRb/aPn4U/6yI4mmFovO7OOHTmAciNXJGzeKDJDqsqRhf99tye1RIDbCnSJ7OGxTUiMwQ0uZm8EOKSd7gs2cNc07l4K4jOGcyk80HpRF7MyGnWrdQ5GMH8Suem4WqhuKVHGIpxEb65ueh9XJgteOUiraWCGGYj4L2ZMY2Yxa2OmWHH/Vv4mLxe6MJrn3sq9ee5twc61vso+QybDsTyvSREmqgtl7RtZmC2HkS5RNxVE/3yh9AzfzUKi6bEYWHZtJKsof6VVZ/lOcQZ/4D+en/PJSMJIN8zj2lbo+i+Pc3DbnZ0tLeyLVHcfXOeRZ8JAEJkdwEcM82GIwoBhDVL/3N6Xf3prFLFXNLuBAhdu3umkF/464Gb4RfhGv4SH8X/wrYpv1LmrFNl6nXb4X7J3gXaIjys2qwNFAk34iqlnGPr4mgMFXMuKjN8u5pb5L2Y2+ZKe87itLOWNqLTLTrseHXbZr+F4/j19ft3Kcb85dGLoBgTY0Op2GZYnrg5t91CLRYcR5ImlhuYjBoMhLfb1Kdyc+t0wShPY5hPwwjSttscudFHpDagDDs5MV5Sx67HceT2q6D6fUoJNO15GmN3Y7zOzRQVboncQAd+d7Zslk97sajh3lw/UkAdRAEdyHwjUmO27WG97ff1dd0iAO65KJ1KNNfk058mi6bxXcdDpMNy41cUeFrYZpuQCw628Jo3jNhgH+5tYXsn51RJPV5v52l+mxXNOMEoFi63aZ67OaC5tchAxtlBH8M4e8aKmfOGJz/9B8MEmnIwZhsjbp6aF911W+agZOUGcTkXTCWD+yjz3P0ccgqEbLnJ3zVDABNAduMsLS/V3x2ptKogsUOBFCw+b9LrkGfp6CBAQiHC1gZojcggM1pNbfAsr2b5d9OdSENbUy10Fg8S4kwhSMxJwEXvVESOa5dbODGxZIO4AsSV4N25CBBdzCtEYCDHgBFIAHDPF47jzXuwsMJqYBVYQ1gdrCsgXzwEJ1OJNemIJ9X5MSRRJxo8qgRJ6oNy+6KTRL+279e/GcYBxdmyWzYrbtvDzdTFFttieqqZP8zTw721aX37hz/88b+qs0ZVc6GN5lssBhB34Q5gedlcOkqmzADOFxP184CpCIMCXaI5U48S7zf3+lmBmawWNk6ihWTCYTCcXgaVuXdGowKdIEvjUTBnwt0M/l9yLQx5yVQWAksCy8LWR2bOTJwcBpbCduSciYEzF70e1lmenMzy61XZwMyaSDMLORvz2yBxz7m38O5qpTAvR2vUpknDNKW0HH2dJhPjPBNZafPmxsM8gMA0S9mVxEuRLW4tAABg327c5dMwR8YRsu23CaeMoj+Cm6y60I0pCBNeeb1p3fmwxHWDIdlHHPupLIpAUOI10uCBptzIRzfBAqhzDqtsxkdhne15br7HL8/fbVdDbkn/tb5fTiRbZxGkiLS6CDm4CWNMuwEQOUJtt6x11EYLGo2ojrjXsoLF4es3tEWnHTsABB3YCWws+fGdYyuRQ+GoDrzjIcoA1N38NqmiqEMwiK4W1gXiEnEJesvkkJS8s5suK1bxMQXveY2lSNddc4m+ggEg0vBWJY/aUdVYNN4ecYjnujFTZLUzuvmtNs80nfeSK5wu9C/Vi4uYkJjDnpaam+apZ8gS4hylcmcdE7wZjAVTyjKdZcOSnTEJk9hpeA7WQObfljK2hhgCM8hWmp8g6vzXu65DLN7Xl8RFaRjjPot2vIvq/fhZEbZUwjNvkeeAW4gUcJFVrhIx4s81NYfHMTeCUbDjR50drivaIeTnJ4u4I4MLIU9/Zep4nm/wSn3D5/MNjed/eijGdMa6tpyb9qZJSTzyRhpX2rx7kgg2pk5me+RCRZyL+mSkm+LNdD4bdrecWvR4m9Jt7jE/yCZjzQ15W7xALhEQMY620ZQplYaBtwYzGRyPY+lN30sNMSKjFBznUtn0rC0YPUD2vjyfcA1Diy1b/KsoRErDG6qvHnqyE9lIvLKtkjc+sUlMau6DJdP2hJY4hMcwPM93G7kLVowYnt7k/Bjiv/Q5wrYzn/maUrKwPDw3u2yaKUZmK7YU4ZlsnOz4U0FadbkX+ZCHh9044CAamSWKdXioxOzBth5CCgAJ4Mgz4ffJxe8197aZEcc/+poo5/k8xvGNsSUtwxpqtySg1OV6ZCiJnENeShfLTF2Mbibugmc3MxvEsnYx4wrRiusej8SUPJGNsGPOHI5UEomjxNm/f8SF5ZOB3YguG2ZwkZnZTDYaobVyArOC49HM7flCYNmO1y99DMPQBkuFE9+EtDx143zms0cwe3DuBBzr8OdgyyxSX+Io2gtyD3CZO4kYzLmIY8giGlXwxEdIrvBTpp2Ormf44IEYbxQTucV3x946SigTSgFito2+3mKZRLjQq/xD7XBzz6MvElMLLVpiQ9Zk57BHstAWWibxPtPMRAkky3KieyjFgCOD1/UdqEPFKrW+WxFltqNTEdPw+ub1IbBlScqXunVbnD8ewlNfw6lm9PZC0L3txTucrRbmhqpZ6J5oz8T8zAC0UfeebdT610zlYxFmN7tbG0Af2QIZkXlCHEZsteu/ffzcEnx9rB58ruUU+c5DD4TDwgyYQ8tze9C04IqZxG0JtUoPOb6vC+ZEmYmMhzQxgZaBrhq6Ks1ldjJNgP1T2R+Smt0xwRQW+euVzDHp07POObaUMSmFySY7Gdev2xc7seio9ZqH4Xz/EJsWJgBkCqQrRWYDhkHg2AUUxbD1TBOxaTdn9uD5TAH2mOiZ0SylZKKJf/hZ/a/TawWeYZwaj3ceGlsCNAyJt/BZE4lx0x4iV63a3dZntY8BtleZUsae0bg5M8aT3eXthfC0JOJtXxPZc7225IIwEXAmWw5KR/0QIUnzQbXLYKbIR7qQZZiH8paR6agug8jNU6q9jstmC165SGupoA6258IvXJe8K8ssklsdm07XeP9p9P10r3zb57rGfd9/313ZAt/Pr6Nk4L4sSvjgUwdgll+lFb0NPE3ki7kGwGxWmW9BA3BK3iTp5Zwl/f2SrwxAcVfE3W/ZMZhfho/nU70Y62bj/jrznLeIHZlvt8SPu5OGDZ/+TnNUcMu+Fc2YZ2sM9KOzm9w6TOoMtFYtU0kmF+Xryo4VrZmzRL4Fijy0O4moxq+IHC9y3D7DLfwSH8X/x7atPjP9eQkDOA+k9W0jDrHnmjjrs+DgAtZowv6vb9eZ/FqvMxLr/wgzQ1cP6dR3u2exNbjvvnbnLE47a+0y9aajnm708OdpP7lp+v7+x3+sFeCvnlsNHABK4R+vW2Bs4u79eU+D1OTG08idUOodJmPgXcGfd2+o7n6dj6dZXwDeX9CAbbd98Y0+IjUAws61Mt0WGIIJ3H5XVP94SQ007XUB2N1SXtcJVYVnEu6gg7g7W0/L1/Jaihru4+uvFKgJioAOZL6JqYHzHKx3/uPr+3XPALjnSuhUooUm3/9vsgyN75gOkQ7LTd9R4Glhm3NCLjjYImreeOaG/zZQVHCPdsvyQGuNbYMRywbn4BqSddkr1B8SIQk8MisqkBvjME1WBC647nSMZICBgMFcgOdc+JnUrN+8c7fpGB9iLPu1axrSM39Va/vfgyIJca/N0+abYQACUGm2oZMtdCliDJ1uIkocaEnOuVZdDaiJ2tDZRwnlH7EBXMtw0frKd9M1/LFZxeAvT3MxuoPNh4ghF6s5+7IuAalEiuG7NTJr8IuKDy/8s74jlkPwB1FBLFTWHRf0KKQoBTUg8jsi83xPiZAOOoCOQEfOB9NxEPJF8hxhLC9RI0mjfI/L5ctqMSeOIYUlJpP6+sJZfEl//t9pOlF5I2ESIi902zMRiuM+B5p2JOJKPFbmGN7YRw/+DWMbgDVd0rWoeReLAwhsheeJpOPeFC9WYJoZVjA2LpP+kQ0LdKZddCmUowb2E3P9rABMVkvcG1FPhACd6GwwXYkh9kiICjDibE+Q7ife4o2INbNR8AqzdMVp5yyNbuoov+wCIGBh5DnP3gMVEbEwg4LiWimC2+3IrMfhgSYiis5F5ocIWXtk60RUU3w8Gcl7gG7r0cY3Yu0bKbrbek+IU0OLqJq9lc4MmeQxu/kNdXiEEM5ydgAAQLf9Lnw+5fMMRsYRsvO3CaeMon8Gh6zqm0B2BJToIepN58+HJa4bQMs+4tgvZUUEghKvkcLsHrtzxA3P1+nkTTiscoKPwjrb6zp9j18e/zNzYOb993pep6kr37MIUkRaXYQc/DWAjqBuoljrg/2usjFFJx3UGLl7Qr7YFa4OX7+hHfWGlZAY9ZNzBh2LeCbvQtFctUR64R1+MadmYgEoIYY91TkYJL6Zed+obIW3HKP4vEZJjKdIzYVr91SWnJI/Sk2Ju2tuJR0IhKIx91lF8UH+lHSrqYj58vRJ2bzXosFZJguI1qhBwIUqEuXbuSdPRRYhxtLTRa275sYpqxRtyuXBBdqc7GQd2a3u82Vr3VaydobKspTFzH+ude4cOhyfM2OaH0Nzezvdhaqg82R4T3haGuWxbNm6+fGImOZfB+O5bPlzfS7eJn7mIln2sIef25jY8PtYmlNIOyCCSLZe53NPHNlNOddMDZ4+KlLOq/lr1+brauGhNh9/1TQ23v9/hHBuFz72Tgi3thZLYrrFpWALyo+ooaDLS6+r+1irVM+Uw6cXvRuxuj5WUHqodDTSe1HVwQziFnBwp2LtMeBaMyohENZ5lYoJGgJltjPw/PGx3dz6rEfOmZVD5dnWU+2Nr4fD1CGuMdbPC1/T1OJanfx1lg+RqUXzq5MK2RvYQfZsZ9TjTjiRkwm37BS6rYgTzXkcx8+PHy5rn12AAGpauQovuSAhuS6IIFdZpaof/MCGBrJZsigouFqDWnXFuPl3QN+a28OPox8j7oZGymFGs7JFYj09VNMa0XUeQgoACeDI5yLfJ3t8nrl2MyOkE63L/nL90UvAFe11m/Z09L2iLn1tHyvWRYjEb7UvzWpfMlnVPkW9/0IC4br3pcqOxQXu371bVEpUdQWfvK6aP5a6SCBZ/Jo+v8qm4acf6zYxrVYVqajNAOMy+KU251sQDiSdwHS3m6BTmF+/w8gZu+yk+qJ3xdhA51URxOy4gnnMKZAc1tM77vUqz7L0FY2KuyAakFbtNaXJXVtgxdWLRgMmYXyhqq0mYIvV1CvF9KGVTgrgUYvvjnt0lHBMKAOIuS76uMdWESGUQswPfWxiNPRlYcFBi8IFbiBOAQ+XYXHYNVpmiXEly6oLVLbtQp8Zg0ikvO8/IDod2M1r/AEbgjLbs15mGl7fvD4EtixJRdLGbWHd3KsPbfJwNStGX8ZqL+j6Duc8qmoDt4bjyMPWVlWP7Ep4v/Eau/hYtf7YvSoburcB9JEtKIRgZ+Zp5s742+9vP58Lfv/YI/pcyylSdGA6z6PfOoqt6wXbHTR3wSuvIm5LqFUd/PF9PDSLrF4UIqaJUacoV/C2bgCqFIxBuT2Vm/k8oueSG7rcHV6qe8sSa48/As4d41wp78UtzgBZO44jBMckXTQ6jtfnV3DLroLIXrLEXYsqIHgM+PH0GDmAd0llVoVu9/DMUT+WhO9lkWtlu9Wqiy76b79f0++PZ1aLs2m8+1QUFWRQXPRMP89FApB5z1nPeMb+flFcNMUAe55ySRnPlS3ZVTGe8pAxX4gkWxF9PvdF3Mf+dS6cvYqgikoPSkf9Us31gVhc5/dXlV+kK1ODONS3hKpkC51Eb+7a6OO4fLbglYu0lgrqYHt2+ej7re+KAGW91TG5mKBWPT+/+70a8yo7Hq3ZIPX70rsGXOrzKAmL1p9ObdorWAIKEn2qxs8hjCmF/owxWUoxbqRZtvoxa1b4jruFx3JVfp/5ynp9j/K7F5/YKzeXf2r75Q9/GMdQy6x5zjymr2PYWvyqLSVN2g40HHF7Xf0bv/lKHZbZOby78Q2+1tnukTZSOrPq/X+oCy5+0iDBmgvem+ULKWlcCmnD5SrBAZXbd4S38C0+iv/DNjcGOc2a72St206W1150DZ+VJ8p8lEaUEWWof56vM5JDDaIqvhYVDt+uOOhQEw4nnv05i9POevaVRdezyHb2jNdlPzlj/u7v/v3flwPxr97vZ9KEWCv/eH2HsYkB8RrSoDSa1IzcifUcYDJG3ZXiNaChGnCdj++reSHG+MIGbCvx7SXuI1KjUIadayndlhQDA27/7kT17y85Ak37eiHa3Vq/XxeeKrySNIAOeHf2vCxfy2spariv33+lwFywCOhA5jNKz+F1Tdb3179/f/8etAHcq2tKtdRKk3/+/yar2PieZkKH5czfRYGnhW2uCbngYMtQczJrUbWhadQckMbunMoRF0d/XckF54FtpoY2dwHnbql4HFaNHFBoLtPzKL4z+MLX0I8ZBzghOLwW4mWqfi619trzerp0TMyl1OfrqWhOX/VvDuduvweDhdKjN5cvNi0AAnS1LvdqzX3JUnJvVx+iaJJtIaLWlLc6++hypyaLbJBobYDWSJ7zjFZTX3NM/9Bs/M6OE2loS7aHPaYiaa0urGuqx5ZEatGck9PnFXPaYojpQNV35u0j8K/e5pmr1OOdN04cJLKvHBKz/3F7RA+XUrn3lMNA0gPr+q5yS4cvUueI59Etl2LPTshbSbznrKmsi5a0pK0sS44lL3uqy58PIxm5vkvwEkSil/tRm6GJtK9JzHOqmXaKzqeulVv+7evvv/1vzl0AzokR6uV5F4sjEYSfCVg39DKaGoMLaKyn/e2YspnglBDU0D7aG/VRQKL2I98FZDK3yDXhrSh+szeT1g1PdwLElbF0Lt/MxoXQx1SjDcGBhYApogl987H3TmYyPZOvh63n0eGsZrUxotRwjaPFKxV5P6UgPd2sGt7fE6pRkUKUVccQ1LmP1fGvm/tLHidnKk6Jnpt9za60OM8tNtvv2w1xNlOLaFZ3X1ZVXMUPlk2LNg0ppatevXo1th/DgPmUzzMSGUfIrt8mnDKK/hUcs6pXgeyoocSeqt708XxY4roBtewjjv2lrIpAUOI1UpgPfXSR30C9TidvwmGVJ/oorLN9vS7f45fH/8yaVPmzv/u7JYoI2TqLIEWk1UXIwU0cxH4DMKYY1DFkY6ouephxT3prOj1H2lp8/Yb2LDqNyqKsSgTxTWsISSVRqnE9Ys2CBgb2Pg2YZU2imkvOXnXd7CDlzVzfT6ln9c+1FB/XvYSifFnuiCSvUuq2Lkt8r4dJ7W70rMsHo3AIZVWRvmeKXzMEyQfv4aLU1zOlUGMmp+KQxUEARt7kOHe69bHlJUn1myeplu+hZ6O4/XfJwBpTcoMK+eD1uHVxsyNx5/G0r2Li7+L+QlhTZph/GnaQ+R/nYXpPPYW/6mVFDsxPoLu3D12jekJ4Mv2dSKPwq7crwmYcMi/294eXaz/Xn8e1RbfotVa/+md6T38838QT//i+N1cl3UUci4x+f3w+B8miZJ4vMkdK8nWwrutu3/xqX68O3mnf/Jtx2YBhG4n3j4Pvt5ek9YZ8Dd59TTw8ob/+cTV/i2QvfQnyjQMEQACBHuH0/mIDgu2B/f8zfLS1WRH/jhpeyCVGBS6aqlqQvHOupDDeXEn0vcZ5Bp2jP0+sL5GzyoT6nFVSpMebdbukOjmVBoHSPbSfimmQdlIjbVSMwr0goQ96BrTV3xRjQ3EpqiRejWFvYZJOComwFst5WAmVUbaBI0hTOlKfNlrCOTisCDB+oKTlPI3jsg5VIoTMQkyoRJfHekSEEyno73EjZJ6LKUioT+0IKAvKAhpdghcd6zKIVolRZ9ymx+HPOq+CdmtfTFhn4SgwDXsHrjA2T8iHhUum9Zvxqp/YXBavAomaINarVw/SZ9klqlUveIYOcpKRfsA62Jm3oz1DKyvcuXoi3UJnD/3TVkcBS23SVQDkFwxW4y1+VHsUawonqHy1dsNHvKWRfoyutLlqqaSlQ8IbzAOfzzShzaDPUFHCJ/TzCN4WZ+Btq9pr8orQkefcK3mUgvRGywuueRpNk6MU4+zhfa3HTncmD7xQFXlGgo4HGzPGgwnWlSdIexGxBgDOAc1oH7Sdfu3KNifIF1bkEPuax+un2XhmxqHbLgcoAO/I5ES/esEU/FDp50MMYkBLUta+SA3hjtXrQURMQoCLiycLTbokPqDhLWtPOivNUYcij2k2no6fm82qp6AOCa/ADLAJfAAbqaSTWrG2wT7wDYzZmZmLpFuGucoSu49OkOHB5TJWoEXSvACLnKHLc4EtYEYMOAPuwTd4BKayQ6Y75yNYDwpsiQG5M+U4odfzLp7EArMnOU4ACbAGeYRM2GNo0grkEzICjSkWsAGLQgUGIRU1ZoKHx3qZcxegFYXyW82ap0yaF1c/qrDptjst7ANvWTu8Hurg6ecWDMd7i48pxPzAKfYb+yJm15lF0BkT+p5nCMSdJU/1z6HSTBll6531fjdiFdkeqSOLGb1jQ6VBrUCtQbVgtxAf1xGkndG2yzwoOypUItQSCMh96ifeO2QasmnPVzl8iKtidLwLeQP0UB9z3GHneBqOtUfnlvGRNycpb31B9Y9S07O4HVg1kdiG6vCkxC2N9Wt3nFvc9HZTro+fgxwSYEA8AYDoviAQX/+BhaiVpQQz4svKVLAFtR/UwOG6gdzCJ7CD3DSSuSmH19qkvdxhZUhPV3k05iLNx3N18DroMWecDjcg0nNV1ejUrL6qu7eRA5EFLO19Tsq18QnnMECxRnwyFb/M6xAT2GiYITEz3pPmiCkPxCvOl8qhr0kKXA9CEn2/S9e6bEds2BTYCPq9xBBqm3/gFgTnya41US4x66TFDj9p5RkklUNVa+b03bzKcpWqlUr4PzKL0yfwQseYPRGsH8mC6/n0zt1BgdFJHxeTmgcFvzDsJzSQLRkXJTN6wfNXdkc/N9ZUffFNU72SLIWpEVe9xkZpCg6NtWZcnSI0MA1P2m51FNNgP17KWpgLq6apVlgywBOQciYLZ24sO2Vx1VDQKqWr5Gw+3uwgXMUwbsImX8glvLxlnmvkR1BRPG7i1EtLrepihXNU4YA9XJ33CCRbofOPk0vb0ouonoUKFR+X6MwU4484TK8v89bJ/M3InrchvkVq5/pB3ItUUSsdRdSb8AI5ABbF+1C80wJLUfHXZWy7XHM4f5wQc6xYsgNZAB7bZwOrPz0jURsSYw55wfp99/UM1kJ9JN6i6dBrbiZCWD2QxfVURF5ziyxEitoFwa8Ov01HFiMIZ+ITLCMr5yIBszXMtx1H1nyGBoY8vinWf+X+UlQMzUEniPGVP43tPRQ+El8+WjBDd0THcbeY8deZxJyUBY7HBUJ8CYuC6LkFQfT2ogArCawFgjqOU/im4asURvSkmIM6EjwHlIY0iIE+Cs6q6hG3YAs9h0istmpFDQNgPM6LpBNbzSeEzqG1tFr/GJkLRana5gy+H+dW0VpaTX+EqgYoZ4LYIh2WTxZdTeuKYEBwqfZqxEqTuX+wWt9avx/Q7wDvPh8GeqvVgzWT2aqsgdG8YNorzq0pqbX0h6oa4wtHIr3VgzWT2ypaS6vpj1CVeHLxhOJJapST7+yqJkqLnEv1hrS6UMfGD87i3iSnQws68uJbvnVVFgKLr/se1WpXM+2ZjUIlU5zU80OPUSKxBSP11RFHf/6aPNpjB7Uc1DtyZVSFH9NR1T17m8xAcLHUmZPPpLW0UYlO7w8zHpjWqyIwEOem1OmBSc2N0wzER+l+GgqmvRXz87zg4toYTQP/oqvNAkpckdVFhoyp0ovhWtrU1Q+I9gohVRgi39Vi7m0RwZHcyr4CoJVYV0IMIB1nPKQN0inSRXTlbKlOuNSFdtQtvmhAqZhai7XkYNrtqEvoekAga7ghP8kfFm+j1dqD+jBn1so8EXfmQ5VT5vPory6h8GILZmRdMnvqvKu3oz32MapcXctZPSeS0R7rKm2EQqOd2LVYcp5hvt9S2T6EDhZpMoO7OpB3FDnzT4y8xaT6sNdQciC1kTpWO1tQUqfLTU/MKB8Gy8ogodEsl2a9/uHvsJTywhi6RSeI5kxfuDdNGI2MnpHJZnn1sKzdLV7opExmAl4GKAuNnytPHklN1s+i8I8ErKuH7VAqw4BlCPibjHJqCOv9Fc6cFxRlm49YVhQjcUlGE8w3Il0wroM5Dx3XXDHmO49fPg309I7NYG31ihQ16wuJFuO8Y6mPwkicnVdZj5V7a1J86HV0OFmAzfBx/tD+dl4dgRgFkM0zciJftZzGz+jeQpRd3GwhRjF8FTN5lZOnPhKWVyJ/H7wukwNNDahSo2avlqSYTnmeXg5ciUajcn7rfhr1YDhnJpgJDujNhBKd4umCiCGkkiaYqJLmZQKFubK77pUis5R0UFNglCASbFJovRaTJ5eLYPAJKu+ISHsXYrNaLGe/bxLdq3RoLq1rzXKFvXx0G4UZWN+XNg3RnhNEuglhyRjBm3MGl8kkpbiG9skGn03y9kK3h5LqsavF6ACuo+VTEV9yNFJ50oJ0pnlRmjpZatatqwJTTDkBry05n2q3vdbIZtKxiBBbxNDmkfUHPA8YacObTeRhRLGSJETTN6qnMwx5ngU6qQ/95vh0sn//zAnJiwjgymV6mk5UGtcjNY2MfQ8cjCXUlfMHvNncfA69Dj3CVAV2ty6ShajVv5UR1Vg7knLi6Ij9n/O80jjZexqMJZsAwibulqO3FLVmrlCI3/dwBsKZxFwSBzKduRvqm05a9LA/iJNGuWTJJZUp6jIbgDxSRskeA5BEgDyZaYpJU+B0KiOR4XBhl+JNkoaVX49VlnpTENqXEuoklUvWchYHdkVYaaU0crKDpbK8wcpV6n6yhLqJkAO8qVJrDh3CVCgrZ4CkcBivd6+R6wbNEGuXWHs7yVICYh0TLHJB3SBTwBV6UayHgjv+ziB9gPwAUgn81h25Yty1gEG5wk9g6NWG9uI6nZkBVGkk832mtlXGXHwJyFmesralpRxj81J8T8zN+G2IL8PnVU44J3+ER0SZytI2Ciuo27wQD/tTxjT1p+hJ+dPPQTAvBYfGjL2OQ2sOnTkkLFHZlaZjSJoIGbR2mrQrZNvFfH8NQCqRg0LezkHtIbPZO4+M7A97EnAgawPwWjV2w2I6ojfAJzzXc5FGR2dCVYv5rO95yxIfpQ7ns3xaMEIVy4k8le2Xgq+vxE1Py+Gzb26+C83JLNyFRnIt6rtkInIuiUkttNDeGmJjwoi9SyZbLfSPlY/Nl0wiLXRsXckKaKG/pYbY502uIS10LCWroYX2gn2k8aciTsR8n84oflHG0hMf1LocuKojeBHzHQg/bvW5nyYVuMvxjF3uHmKKIl2XGzygBkjw3EtXC9o+DdYfCedWy1qyBMqWpxcaN7BelCZovk7pq3qAYjmftP0aP3WCXkg5pSpPK7X25JbUIRiptm2snACU7VaeAVf0ca5lILZr2obXz5hTQ8NiP4n7lQlXetn5EJsgha4LvmFIVx7dwUNCmum6f+wOG/VzRJJsUgdZqVtxjbzLJ5SJXkJ6AKN1yTpsV5T0O+eQlFnWSwarOxLqerptIIaxcEbMbMwBTdChc/iQeJUS8iVor2c4Durpz6z9r67Mql6qRrgqV8ORJ52QNqKZUjPxWOJqfQ6SBct3LpPKsp75Xt3JBV8lxEKMCEN5gcC5/jZwhX5ec2AYN1u38XotylZnU5PUYeFsIX0cN8tdCAA5lUL1A0BuUWS7VPIutTRhAnt34PvftSWiU6geYZ3GchPOU76I7P2h/fXTau3ZP5LW57f2esCwJ0CpfrKk3122u04rq7Ot5cH3MptZi9oclUphWdfy4nyaKtLnD+c5J0iiScJE5ZSrdgmlbbSfgZxls/tw3IFft47WJXOkpuv17/VVT4FsBYCR3Tr7Klb2gLHMMgkyLczHMGvCnAtjGt+cyh1UUsLq906e+4R4rzTvY641RKtBzMdLrOXWcf5BezmnrSfwvau0VvWG7uoRE7JWO79pp4UWaJR/KgvN1+8+tZLiJFp6yReoDrWu1Sp9XYZ9GPZq4WGv+fKI/qz5nNqgIto2YmC++Xw5nrTq0+cf0KJknVHKtTCDRWro1G2iRclX3Cs6qWPoY/2baQGBzwnvUDjhst6mhL+nH+SOp137aHs3vVy3gxkq28MsKBXu23baS5Z2HrURDh/45IvxBzFhVQIvTUjSgv4EtAFjlnRcF1A/jWnC2ckgi9DRvCI3+M8RgvkgZa5k4Z6CViLqwlMaAisVwC6sJmd333hpBiGFNbkwrtx2yrJmuiXLqlLGSctOX2lyBAQLGh0gQVg+T+UjCkVNXLV2UcyacvgdmHFC0Fmrg7KQQwBLI8rNmlG36nEQ/54MYl4uGtvmVQG7hcaMzM/FcA0SAtsX2AmC2iUXsCughenYb9GuUiXwszLBOc5PFWC+0HszWVy5dBE0WEJCr/w2CYCpiJ5BV/gB2qeqoNNfhRCPfF+R5RUQCHRgF/ZigOVKXCMEgSO4IgauJlTrvoNZSx2jxZGgcqzIEvAAq8UagUV4a7GUxZlz7GaIsSYhyDDVgCRpEbXxAM29MCsTdQCch4noMMK9G4xWAbzWsYMa+iJCJPU2DEcu0cOaCGBowbuwvySjhYml30QciGvBHVAK4dWAVvYgjx0HcHjShYngsS1/gLoN96I3wAv9Ue9XCRfGz3FQB5wtWoAVwLlo7fhJ3IbxuKH/OdmdcseVjPch2IvhA+SPYsk3hmJlpNHe6vdA7i2UW+jYaSYVe8yZ20IIquRCYfJ4DAXdca0Qrg8ZG0vHKKCOoBa484y+XX5Y/fJQysSKqKwk2cBtqvp1zHmb80v71Xm/KpNyjCkW2GY/TFoiskR0RJ4W6hv9AWcP2ciiqGUzLC5qAP9r6GeVhLRNjvnlwuyfcEzXWFYUcQQuVICBL7lgYyIBWELLKOPjZDlnb/FjkVlry06HGBa1X1A2YO0iN4y3SB2L5xx6x7xDzYnYgRB3HNo2Iljj7Dtz+UYppIkgCzfijcSxmVRosJxC5GnUVVHpkFTqregbuktg0JIIbcGjeEuiJne1sFuA+RZ0Oa6P97YsG8vLsQDtQoce/awrCpROl3+jelLaIY2V4gekcjbMz2Msa6legRSXI5EgR62/TaF/FH6hwtLCUu/npmG564rOBnW7aVyPW2ytpGBGWykx1TjC9eRx5fGnrOLRl/6FZ11askfamWaHyCVvpUU8aXbH/Rd021VACgl/ao52XJF+vAt8auJpfJabA7ShDQnxad9DXkVGKjXr/AW4pZ42EI9z+NxHTBiGRp7pIiCjNjnHSOx78bnBwK4lC5+lZd6f48c+56AJ1j5X6vsu6DMAhPJLc+gdEhqRnLCoocJ33odXUgPmR98e/p7z3gQQ5BbuMxCM806k12M5GiIP0SIV3Ut6vUV83JsggXUcIsvuqu2nIS+6nT6CE9LVmn3E5wEaPMsa5PqsxJL5q4qcpXWorJ5mS6d8a7rXooYvBwNyIvr9esk/7948UJOopa0k5MI8vr/tOXkMWRnikeZvh/V5Q4cS5Mxa0dEKtCFaEPXPW3tARTdyQgqEm+Ko4YcMnhzKYR6HCkd7O0Cs4OU+FK7iHN5OBnEFMVW178KfeK19eeybezq39XqYGTBUkQg37FuCvm74v/lOqUR1Br5b13y9fK7L9HpHy8nLBVxy90CacxvtyC0Wo3ryIODxmzKNjp0n4suNOPmGcuO4hq7q3zFdJhu0yP4NvGTNUz2xc4PUstOpYnHXnKnK1ZnlUGs4WzX8mdz4SkKJpZ0oD6D8OdtQDcUjS37KL19f8k/N3UXF6FKqPuSvUz7ud3IAWKlmGMrOsCvef9J4pXzd8fQecGeVKXxecrsjZzmayfnKetTk5de7a8sVqUHe7Myb3HtXqvVtZbMzaP+oWoygXdq6n90wonJyLqRy7lg2wKYNEg1O54S0gI/oIHtzyl3orBCfBYNWKr+AH/hZ43OW3XDynBXscltgvuGaaMNnP8Ek2T63Zx7OHODJ4Vrc5/Qo2XV3e17TqRiDmteCU0p9hzGNu/riu925y3UC3FQ97pBxIbySMHxj+V7+bd67cp1dtUD2SPc2B/EkAG8AqkjkF3CZckBuVuz7nSNKivKnwVFmT1w56vitGDDeq7RIiszuKqULsi8pZu0cXip1j2ndsVIYJU3N5s97+5iSq2FXc42jvESUEPtLwO46ziYIZZcJS+t+UKtyWRbA/rhWM94Y1Q1nHXVaUlypbztJue6h3GulbOWAQi8/j2ngW0oWI4Ok1HycPbkw6IW0rhYTk9nu5xxmUkaSOlr24y8YBtDfXTU/6l3gqgJCLlWS3VImDK7gR4kNl2QPq0A5aieyMqxJJqzLJA8WxUoww4yFge0OMUGm70iNUOVDWdWZzbZXGAg2pc0skGE9fPl5LdSDtWQJUJIDGA5FZGloso6OgBraAOiYF0knt4x1QO6OBkKIPD+SKDipDMLkJwPO5G8EpR9MwLGI2uQVo7bSyCpiAxX4hAiUbQIe5hXA3CbgE0RgFwKeIQJALyK/heTM2M46PM8vWQOFM4hRxB3ojbLGvADREalshRVBQOijbgrOYNDqG8yz+VGHBK7AMUQGG57VX1DKMHNYwC+sBAWMaY0UZRPHPEVpc2LLek+Ac2E9fMI9/ytiTi56EPQ0esxoPREvCi202YYoQWBeVnJHSbOnwd4pl8IDzyjzcUYgpbZ+TTxCOrWeo8CfguzHRupATqnjCX0g2ehr9QOjKe2sp0OFTtGoaIq+XmErgZDX4SsGzSyPodrTg2HVn5zJFkyrFQSAPfafNQ+d5IirJ2j7U7Tq3Apxp0W0PnvyBRZH/rL0c7lAIewEDq6B13jPsviNke3ncs6ovJc0mjnh8mDojEHL6ddJu5XRh7MecbrzUXqoszoeoccR2lg4zRH6V8gLee6T9HNC8wrrrbDuXJQOcgNpKoMQ9AKkOYJKtJgKAe9i74ldXigSQ2BVFSvrqS7pdLTEBVmSRZfywbqp+kpdMaB8KevrpHBNzTIt3ZcWi+U1f/p75c+S5p7F91GDDD1leQoqVWolabZIdeUaRvSpdRuU4+x3ib8PPaFpoU1w5b1aS21xJqi2oDiHLJFqK890qLPPG9RfAPCjAIyXxqTO9m9qSzzy9BRXbO5jvZ91FpnoSJWRCLqfYkocWZEJUIqilt8SZ64lTX/Hl32Io2uJKquHakI/mfvm699tF+QUwVwYMSxeCBoBIs9JVHKkASwLyFQvBiAuaGwhf60kC2XGvIMiTSWMiPyUWi7ioPV/66QZPw/m4q8zQnx//3qRi6KBuHK/VP/HqFDI7qe5kKNUFsRtcTVC5K/UsjQF5Zr8GRcs02jHtbIaQLjKdDvXeV+QYTxH0FnyYPmRTvobRRQ+uJMXeWsIW0mvaI76ij3W1esSVk+b9AJvcHqdbcRxemPAZylcLtpXPrgjyZN9vn7cJzAOVUJdE8XnGFOOeQCRpogOOkEb6CC9T6fZy2OuV3QZdjTgQdF8k9BUJnGyTdGw3m+NmDGf6ua2MEZ8BdyQ27jEQbzBNbjGgnNPQQ5nZDOpYQklJ55svNh4uXnnjNw3f5yjB7pbj3Ww+iroaruminERrmXvL91Z1JU47rzn9gAuitRZbHVj4jXOq7B8KjsvjrTRNJ7A0awrjQd7NEXzePEbP8Q2Br8hhdxV9IS1hWxrOB2oq9IPspNSkPdp+WZfisvOcmqJPs8AkXbNRePSxj7HTtIZXssOSXkGOpfjgCu3HO9oJk1YK8aIPQz7OTXxkCPLAv2wPMYfPMpsM1mecls7e40Eytcag1i9RMBDPJXGtWYNxwx1CPqrCBUbDfFFMn2/2rW5tOxIZIvJZsRXJJHUCLu+zQoIVhQZzMvQTk54YWvhBkdxNoNBO0KenHvJRDa42TV+Dz+HSzipGguxlV7rFgLg29w9iXO/Vgr7mZbSjkHaH7wqG6D96tgcCmfOXLTQx3zrurrVs9boQ6uV1rrky69oLdIY2h98AOcYPHqFlZaF64MchYovpXPdZEyoJPhuEPToV0I+aktlJAyY1+femlW6dLCuEiukM+HUtO5ziEw30v2hq6+i24IexUu4SIS6BNuvJt17+p27993qJ9pQHbisNeczlbwGQvFB+JQ6ZUoWztqrLFX20mxNqSWVH7qS7qbVe4d+53j6lS19RLdcJ3RCOWoO9TQV41P3EfiNg4B3audTZPFlMNuDa5I9b2cdXxPa2ndcOM5xjBVm7csMuwJa8MM80+ZqAEHJbRi6oNp/4GJqsUFDZKoxyWCMMDjMkQfutNS/F2sFzJLziaxRFswuu0GWMDDuE5TT6f5MoTolJgTveDofdg4JswUvm53uisF8p1OQBE00Ubog13TTN+XOZXm9QNo6N7XW8vZnaJSWuSZc7VOEMXUTarJpEb1GhmH0/APQE5D5TeMOmi6KNvURw4WYuIi5vcKt0RZz0TIq5V8w1MboTOsM9ggeJlndBk9llJ6+7DFhEFUoaaJ5CGLlWq31pmPHlH5e0tApU6k5kfVnSAqVaWTW2UO9p/xxp5uM+6UmiMVJnK/Omm7hvtTCNKf5rdyM+swGEwLWxfIhp7/dJemwSXdkXwA+GphG/F8U/CUC8OlNNwDeTeGT8KKUYbwaANRTOvsEgvR/ASCE2kDY+TqAYHg1QPjY61fe8dddpeof0pSuYGCD4/1Bb/895erbbFNqnmQEgiAIgiAIgiC/Ap1iY74uxDxiKtNOVIEoaB6GgIQCwPgXeXnCvwK+jZAPBQiTkJxoQAQKQUQWrJLHMV8wsX/c3k8BNko06HEP6hHqwEQauKP5GN9X4v1/6sf9uEKaBrJnwB3NIsnPC/svXHhFOwXVUDkixkgSor0bZqYYXDHNMoOIi/l82QpyXhULLU3wY9gD0IZZuaLpTcXdGsGX9ajf10AN/Rh921BgNDJYuE7gzIuyjBOLNDCw9Hq3AKKSQcx45LlXeDdFyK58oV9WTLQtEpatgp41m7YdY/e6VIpTcZRbtnjAq1d8H+xnYEnKa3vrEetCTxnzjoQYWTIqAWe5cHv4VxynGt0tOKJTFwYMj9HagCkx0sDAclIYB3etLrFiK/SKF4ICYtTn+Qkms+I+j1esxWIFyWzFysZbtC0WsENqc3054jb0Nmyt4gxsF0lj4iGpjF3n8ZOijYmWM9UzZgqb7XsVFYvlzmRZNhwe7W9DwYSegY03J53JAffypt2W3JZ+rmyqVouiFWP9+GkhEMSoTaKok6SpTpvjO91YxTwWy8WtSMrsxsrGlgRgh0Vt+nzo9ZjvQ2cCEwe/o5rQ6VjiEyfFc8DVQ7tvJalsquZqBn2931+JUnhLR0tw8+jfBzgsSUVt7zzQQjCIUUIULZdULGLVCq3CGutssGmFXZXMcVjZsgUGaxwe7c+hXAP7HBbg8Ah6aGVBVc1oXpcLFS8RY66TEG0hjJKY7VLPN5XvixAkFADGgjLnERfEXeJYguPGxQsBESkZP8QrT0NBRUPHaG9Qjqp5dbo5zVa5oDpK6kC3L0fXb2pgeWpIPoyuID6HOAQklEPXo3GkLA4vijNOzJGSQUFNS9AzAhMLe+10LnP5pNdCQU5YBHGz+Ve29l9WTLR0LWv1zmbv9q+JTpnIC7DRssZQEqKVxDwlacoRr/i+TvIxITexkQUTY2KNa2GES/xKxNFydx/n7RU5Ts0DZo3RuVGTbo7oVsfaZibGxKKO0e0/o/uv87++XFY9o9+AhnaM7kOJLNg11MfgUZ8vCmNiBdx1Mm5mdjExhk8clAYGll6lgqFFlIxjxiPPvcK7KV7GlS/9tuJz5Zxqq7UWTSxbBT1rNm27x+6FFeIUxCgpSpcqzBLi1DpRB7byWMskK7K1ztIBJsG0YatWWzPT1Rv0fehhBmydqGBgYANbiR5NUt5HSb23h9fPCz3HBTEKmKBFITPFzWLmUPN8CEgogAxScUQsrXS0Cmuss8FmvCEgJoGMgoqGjmHlua9K5gNgZau6atWEj81hbTV4yDzL1xF8GyIKwAHQsACPSCIFBR2fIyAho6Cq0enKCEwsbD2IsBjT4pWjqapFU0eLvJWPhwrx3hzYyCLsSjCwdRYADKzWBQCD97UAALxh5U8AAACAUzrAJbXyDkrqvT280kUCNeY7CdHSYhpJmhIXV1M+IpD0BkrgVUzNEhnXJ48mCBEJOaUjFTR0jPa6c6BWvdat0RzVoa7VW1yDB8hbUMPIpxFH8DnEISThzUXpY8MRH6P5HCSxfol2m/Q5uSlFqGlJumVYZmBh65UuGE1YBHHJUHM1tTW6vT28JiugdR5fb5xjcpfpZm29RTF5OvpfNpoDx8yMrEhaRr3Y7N1ZqTeVkdpJMayOiFHQGIeEqCNhURJTxU33szKY9Ve8sDnDzRsbAaTTLkXh21KaIVBAx4irzS6iOdaJPVJLLS63JeudB6ioWK9EHK0solVYY90Ns9oMeYMSZiYKCbkP18NrPWc5vo+WkpKkGho6Rlt527DDrh8HrOjV3uKo9tcHcx/HzHqMbMuhGtVHfzTSrVk316C73dyzpV/QO6Q2HVEHun1R66v1s1e4/qAG5M3pOG9Y4DeKI/gc4qIAHcDwMMAjkkhBuSeFfYecaGKKDum4+wbFeqfi3EuoK+KbboLEQUjJQkFNS9AzDDMrsJ3E5xiuniN9m1lghEVG3F3SwyJuST0VvThvfJRa2TjzwhVR2XerVENTO4GuhVi2op7WwabtuGP39f54XSkqrBWWLdcPeB8KIRg85agf6UImixhklGVMFQlRT8V0lCzWu/hIGy+9DeahCIOE8m0+MwGgY4KrzqLMVZwca5Z8jZvZyoRWxRrrbLAZL4REkJC9VthyC31ESi1VaOgYbeVtww6762ke6T1fe8ui6m+tWVdROz0Okl4PkO05VKP66O422WIGiw6p7R1RB7p9vt59sU4NNiBPPa5xzBC/URzB5xAXBcsBGGGARySRgnKPz75DHdHEFB1yHc287fj51JI+w2nnHj8BQVEVEnIKqGmGnhGYWNhOWsgRrp6nfZtTsETCIiPuLul+oTyQ9GS89EYfXrlcquqgqR13dM9LnNLX9D8zhfZnRSCjyHomRkZfZnMQkFAAmIodsbRCq7DGOhtsxpMAIhKy13rOcqWUIhU0dAwrcNVx/pbDX9tfeubDYGVbdXG3ezmt4MN3SG3yyPcj+DZEFIgD8MMCPEKQUUALxWMtvhUBCRkFNR1MbCeVcHALIS4ZSklVHTS7U/ajwlmR0kYCxtSREO39MCuJqc5XIo7KHexljsixatQaHcw5qgPdBjTkGH1u6ELnYROLNDCwnARwcPV6vyApoqR7tC+8kDQiZhgFjKkgIYqGRUnWCQA+cKfAdxIIyKbzqPBtZjMKKFowXHXWJuYqzo81S4K4ma3MaVWsuQ65AbZZxI9LECIS8joBBr4mpBSphoaO0VbeNuywa8Ws9pZC1d8aNP88U+b6YWV7DtWoPtS7sC3dgnTYVJuOqAPddfQP3E3wVeSNWBr4qjHEbxRHMLNcFIADQGEShykRSaSg3GOy71BFNDFFh1xHM287fj6j4Gc47dzjJyRMSxyBlAwKapqhZ4CZFdjr6AcHH7gUvlTQRFhkxN0l3S+UB5Kear3AWx9euVyq6qhZodpxR/c8+gf+7zd5PjRQU8VdErdcvv3Cm2j38qufrHWahXVSHgdXL1Ciita9Sy98DOaFpi76zzhNu0gtmGKKKaaYOlHtfsf1gHV9P4EjUI3mkQ8tbwoW5x+9+wCGvbz8tuS2/Ou2L7Jn2cbYY7qTfWwIchwOCcOBInihV3qpyanO9BoWuuR8cRZarLnU+d7v81ehXcNyih/36/ZbM+d40Ls0coNm93Jb3KDXH3r9f9Dfb9SlwPVX0T84ScHBbZabFbfofMuoF5s/3XU+qjea+Lrr/QYv9sbp8WahgOPWhFAYIuaFEmQkUQBiaha0xCuBRENCRkFFQ8fInEM9D/wjuA8JJERkEQW0Iy1wSSSDgoqOiU1I3KxvdM3sHWY2WHv5MLZ2/QBbWAAAAAAAADh5wLNhiy5aM7o/4nqg59MAAAAA0ZOhoaGhoaGhoaEHbRy99weX5gIaGhoaGvoX0xv90tddP64WAhyHROQYDhCZ9yYISKeLR4Vv+98MgSIGZzttoWzzI1qgRWOpdwSfIEQkZBRUNHSMzIVWNw/6vY2U3KBZ68GC7hed7quZ9YXXcS2fK7DPIQ4BCQV9HevLRhOcl8W5SsqTQUFFx8T2m/+FEPvQ6WbjzAIVqqNl1IvNsftxf9x4FRp3hBfE14ZRGIXdAgoA42Lh+BwBEQk5BVQ0dAz3i1ene4G3VpEChXMgJKEFCjrJki1FqOiY2ITEo3vUexYdY82/MzF/MkeY1yGhJdKiAMTUWmlqVayxzgab8a0JICIho6CioWNU7c5cUHVqLRGYB/4RfAyxLxvMgkcUkUmUoBNIMuQUUNPBxCYkruqr8d15NQu5TgQ2768EDRlVBIgBPiESSQI5JUl1NHSMzAnUbfGD5IF/BdyHBBoCEio6SSIZFFR0zGwIiUf3aJXXkh0IJArA4AlEEplCpdEZ6jz+PXgOQSBRaBKZQqUz2UIxNUf3aPdsYcYMwSK2e4FvnoaAdLpnoiIAjIW+E08CiEjIKKho6BiZM6vLe5205VBQebV8juDbEAhIKGhHfQcuCeQUUNExsQmJm/WN7le3N/q7r7uueI+v4g2+ih/7R1FXccfm6K37dBOsXu+WhCm3PG9BK2O9t2exo2FhB7uJBSwsLCzsG7uangx2RStnvVTpXtsZEmAkGTA8Rt82RETDwCIgGu0ffxHa81/nxX2YhIM7+Tx+fPn8oAgHBwcHBwcX9ykRLuXVZygqygruXw/8Y3jxfE1JbYJCpVKpVCqNRqPRaDSPhUmSZGZmZh+oecRG6ZppWmut0VrTxhhjjGHEC+BTozDnBNd/3HbzbR/2R/tl87fd1m3Z6bqJp7J3YM8xzl53VIeyZygdR+bvl6hCasFJY5URwYjqwsYGx4VxzZZ2gbjWkW2yIwqJUXEHOvm4xN+STw7glRHORM/jUif7kqO/bsDNYNMTgIItWiNfqbUmtY1uA9j2UBCm84LLHqNnjq/PI01dp8dQ+ws9kSYzf57p6K0lTtiIkq+Y0KRNt35tvsvkETscS+3PZz/z7jMMJpOZdTyxWCwWi8VisVgsFovFyh7NZrPZbDabzWaz2Ww2O+cJ43A4HA6Hw+FwOBwOh7f8qhUt3HW/ldrpPdv37uMTYYRaegZbdCFbjiiVzXkcFGKDGDVUFDAVMA9BQEoxneVZebjMvr5QXsJxvo7gc4TLh6EIk1hyNPO0BLBF5yADzEIQkQXa7CBapTWODouwe255l3hrMI89c33VPo9EBSCUaNDjhtLH/X2Kp/ESM4EYBddqjYYfNTYACQVwFrKiR2ZfXxR5Ccf53VfgHyNYn59nECYpkqMZ0hLAFp2H+ggUEpE2W4lWaYojXHTp3XJ8fR6JCgAo0aDHDaUPGlO5O+hkDBW1fK3KcFeyGO6KKAes3ZRrZ3RlLQ13JRw3HJdfNIoj+Bih587CHe6yBS4uLu7pYrq/DRVwQkQudtHP/YWLi3smXHji+RIuLi7uqbe8T++L68c+joznjsPFxcXFxcWlSXM0d4H1pNI8mWObNyOiFulQABnLnWVZ0S1zkE1Ztbr7Ismj48gfdwX+XOnR3AUQKgI7SS05l7njud40R3M1hboJFKKIw7bZQbRKaxxtjQ7XOqfL6DbpsejZr6/a55EohtMqAKBEgx43lD7WmOrmu8gJAhIKAIOHfwTfRiBBDiJAaEQ6/tQ0bu2vSICZFDhJ8nmDWo+D4TXS+rAxIUxTaCKhYXru18DAIiDqvpWymqvledGfXlzQm6YYBCMYIYTQm1b3k8ErWjnrpfi1IL2sIIQQQvAwG8+CZdmxC1iSBcuyLHtS2jCby+Pr65GPVgmeaBtirpsy0Su0aaYZyGxpcd0E/cB5VgtJvdo1GPQxzYjbLB+zcZvjcy7PnxeEsGwbLXW0QlGIkywNWfMQBYu6VaNmUUu06dClV781PNoTjufxXVqP0TO9JX16X/Rj1+8afD/SrBLiRyhQokGPe1DBbyOCazzg9rIAjlMRqAUaD+4Z1uoC3+AqTmvEaXU/AQI5HacrL+iElwZcHa1oCcgpp5y+na6ZT97gYlodNWu0agcduvTqt67VHXC7FkAgcMCV9OlLA654/4WXJj0Jf5Fl8zEzMzMzMzNz/zs3InKOiIiIiIiIiICAss0Gm3+ZliRJkiQpQwEAAMC2bdu2bYcYX5AAAAAAAAAAAAAAAAAAAAAAAAAAAADUHWpJkiRJkqR+CeiP/bZt27ZtO9b4Y/lU+12pZdvytiTbtmRbzo0hAAwAAAAAAAAAAAAAAAAA2AYAAAAAAAAAAAAAAAAMAAAAAFA+/IgAAAAAAAAAMKONdQsAAECgv6UDAAAAAADAxFwLAAAgsPM5pLm/5mSMMcYY4+RkjDHtm3r7nb211lprbf+Wlp9XCgAAAID6NKirszYyzu9vLyRJkiRJkiRJCkh3AyVJkpSHBAAAAAAAAHB3d3d3tOMfH+RmxXp0OUlk2qrCNePYrLeQr7CQuMn/YnycH9MAMLk1B6beADCNYuOeE+9smcYzaRlZA5gee+619wEAAPgCZQMyHwAAAAAAAAAAAAAAAAAAAGC1eIQJqe4co3ibeXjoBQAAwDgNAGBB96McAAAAAAAAWNS/G7IzR7bmcgEAAAAAAAAr9Hqj+ZoGAAAAAAAAAAAAAAAAAADABZONZ3IAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAQAAAAAAAAAAAEC48U4Arx/+vdzdD1bWkPk4PwAikiSRRESSNGHnRaGq7iQiSb/3tcqmsXHOTauttd5Gm1WHY46dm/CEqlfzQyTwN6YrcX77Yl8AAAAmITEpeSY1LT1jJqfawNSpOwDARAyAiR2YlNQBAPsCAPC773gALEVmIiLHGAPMYAxgDIyZhMSk5JTUtPSMgRkMAIyBYa7gHRIRGRU9mLgxxphJTklNz8wemMEYwKa+zbU7fIHaKiboOQMAAAAAAAAAAGABAAAAAAAAAABA0RsXdBXrCCHkyJEjtMY1G4Smvs18+arihl9lAZsiA0yJAVNyAADAADARkQMAAAAAAAAAAAAATOxM3EyrrbU+AABMYlLyYAAAJjUtPWOm7XbaHYABADAAAFNtAAAAAE9wAGDq1B0AAAAAAAAAAACm2sMCPCKJFJR7Uth3yIkmpuiQjrtvUKx3Ks69hLoivukmSByElCwU1LQEPcMws+Kw16+yyAUAAABgiooHAABgeutjADAVA0x1zQAAmFb1rdsMAP4bNe4efX1LCCETiBlGhExSckpqWnrGTPXu5Z3juJRyR8tDefRCJq9CodKZbKH46kLrcQYAAAAAAAAAAAAAAAAAAAAAAAAAACAsJQCAAwAAHDgAAAAACN3zu0ODiEtYfOWr/jny0Zd4dndpt9ullNLt3H0fULuw2oXWdomdyckd7WJeO4A6wRirMTZGjY2NMcZYa93XkxehtGWdEtwTYNz3aQXLMMHWCaImU2EZ+kz4kvW+PPclCKmZ0ebcRpHAwpEklsXmyybvE0C6W6xDKnKMY5q4UynNBrlQ3KpoI7bs2s/H5VUfBCPEoaHmseVO4txFx/W6q+r1r4YvTz8tHlnCu3f6+5RZ7wWBrHwXORJlTcD/ZoXpIFJS0rd0FYs5wIKUdKS7Anz69yxbprnkCCQGR88wzuXXmieESa4pm0x7fmVifZd8Wis9vUe319fJ/06sqK4u6rJr6IrFuZl5FMsIckRFDYlxEdqlcXq82MTAeV+TXCgSiUQikWoTCXA5BlHvf8wU3Xt375BzPZ0znHiPAAAiBIQQBABEAICAEHIT7rKduT20lhgxUyluTBQjZqqNmKlTt0HDa3QQM2kZWTM5uTNFI2SS0Fy9w8SOSUJzoGcfdT7qAwAAAAAAABj05auzXEmOJEeSJEmO40iO5DgACCCAAAAgIiAgEqHevtvIa0vdvPqHaX1Y5FsjgJVSSimllNbGGGOMMcZYy/D7bR7vNvTmQs4/jiiPTuxMq6213kabw6O8yR483lxtQw/zYBEen7Dw6FS/muc9Pbq+/f8d4ePz+UvY8PHxYSKjAjEDfODz+TCJSckD+DBp6RnDn2oDfHx8/tQdfD5/GuY3uoI5HhEZdQ9zo48ApqKNLRGkZFBQ0xL0jMDEwm4yIsdw9VooyAmLRHzN5q//HcGFqa0bAPi9+eEjN+uDxBOmyIbjJiowHMdNYlJySmpaesZwM30CMHuVh4l4yOKhiN5M3CPZI5OSmp6ZXVi88X1XIm9hU1NTU1MAAGAKAAAAIJhuxwAAAAAAAAAAAABAsDr9AAAAAAAAAADM6l6PJEmSJEmSJEmSJEmSu7u7u7u7u7u7u7sHnbUEAAAAAAAAAFBVVVVVVQN1wnR3AwAAAAAAAAAAAAUAAAAAAAAAAAAAAFNR8wUAAAAAAADTAAAAABClKgABKKEAEAAohUIFFYoEgAAgSIIkAAkiSRADAAAAAAAAAAAA2kdKM7OJ4/MvrlvdkiRJnufxow50Oh0AQDJ8fSillFJKKW+iPx/Q7/TH8dLPnD9uSUmlExEZFYiZiZ1ptbXW22hzJiExKXlISSc1LT1jpFIpPynpZM90d0hJpVN7Jv8KIAfpVGNYgEckkYKCForDxrciICGjoKaDie2kEg5uIcQlQympqoNmd6792p5HkckYY4wt8QkzScnDJi09Y6b6yGRsruCwRkRGPXTySDwyKanpmY9NYfGru78n+4EOMCVGPiUHTETkwDQzADCxA9NqawNMQmJS8mBS09IzZtpup90BgMmeqTbIJzhTe6ZO3QEAAIB5iOQhidpM+wPT4cDEznQ+wCSnpA4ATE7uyAEATC+99TEAAGZpGhsKCoqJiBxNIGY0CYlJySmpaekZQyFNcCb/Ct5IRGRU9EzcTHJKanpmdmHx6Nfft3zCJ0uRgc/ptcG0MAAA+AQAgAkOMHEz/TOTkzsApr7NfH13I+9m25gplTYobZttYIYNxkDJKCkpOep+aFdVVVVVVVVBmXLZCgAAAAAAAABg27Zt27Zt27ZDjNd3AAAAAAAAAAAAAAAAAAAAAAAAAEASAIBImJrzCwAB38sAAAAAAAAAAABgYq4FAAAAaNbrAQD09HoMBBK1AAApBwAAAAAAAAAAAAAAAIDhev4CAAAAAIAxBgAAAMBgDDAc11sAACAEX68AAAAAAAAAAAAAAAAAAAAAAIAqSZIkSZIkSZIkSZI0cVzPXyRJkiSpvpH2QuHaP+/d9rZzetrr6TgyM1vGFLdwJF3MTCJDErOxIQ4Xbrumdrz361u20t5XJv6igN+xnv38rmgC1tc//DzB6yui336Vh8pKQVJPBfYi7ktUkJpJMsccOZfAAk+GSjRQukMMM0kTbGGXiltNuDYzb9vetnt+gzV+LcsX9VHoMxIdaKhx6gyX43rdPfT/VM523X8R335K4wl8/kiTL/TaKhQKhUKhUCgUCoVCoZ7/RRxb3c9te/4R8ZNfdXHb7faM201rQ8UxYnfbjMPhcKf/XyeiXDjvXy3PS9sQwz+36T0lISA3fvj7EtdNHTOjyBEWcNIsm/Y+THdYNWadtiEwzUTrQllrtaFt9/wcU7vI1eqdwIGBE5dxDbYw2LZgwwAAAAAAAAAAAM6xpZcAAACA07jUrvHJKr2a0l/modHoobfMYugVCzQ6/Z0fGn29/PR8FqWVF0XMu3/s+zIeOQI5/4QTYI1latnA6V2qLxo0zr+qbKb3JRSpBfIXAnxOpxPrQux6LsNvRsGBKxYgCIIgCIIgCA7cTkkXIAiCIDhwQ0C6TwylImu/41gGguCJ1oXilt6qaANbdu2XgsurPgjr+1EQBEEQBMHohRWKjulBe8BMkwlBlMxPNsm6XN6fxzcEQRAEQSfLdtfegaJDHIIgabMztGs93mgtZVrFOsohCIIgCIKgTVlz1oEOQRBUfYifNaBUDQktazNREeeXrz33MvWoN5tKoa0KxdqaUUsbJ3DwmFhHEnXNBtQcneeQI5Dzlz4BmSIHPQPncf3P42zh+GQmiDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYf0yg2XOZnCA5Pa95DE0v4pk2O9VrL7LPOcT6fnfSUiP+cb5C2Vz/vnixnGRRHet3Tz2/PB7LTZAjLGxPmmUGM38XkwvMzpFcrd4LCYcGdSo6a1xaPQArNm3P57MGHqfCqOWAi4q/XyZEjkBitHXloG+A87g+7AquLTGvTnbKCrbOt2FXdNK+qJtJd0IgMVrEPZWzfIe9xjWfju63/TInRyAxOIbVmtvaM4j19TYOh8PhcLh8Hx6Px+Pxw2+VBf5nv2ydIUcgMdp0js6Ma2EagUAgEAgnFmufEgozi8dZcfKI+1wdCRNFEkyTWm1rVjnZowRjdfyQkEUJOtb1xaIBAAAglgv9/s1uRETMvpyWKh2EEEJI2ZjaSimllNYJlDHGGGON8/snoWGNV6fSRPiqEvXLS/j5/GFDvOCyMF5414xIkc4DMuCK2Lsv+nHB2vdrmGOTGvvHOZk7USYc6eBF+vtZIS+uwOKF9yIdKxNKab7FBGSacC9M/v6CYYxRxg03KYWUxAXTRpcrykOholUS5SpNVKlVxwZWy2xLolNX9OqrAQ1h5FiUiVNZzUa0oGW4Al33EF0QGw77pOWF6ezxed/FOzRw4P0aBIPf1zVtfWObDj+vbkUkDv9+TXzsY/tibFuJBzogU4DvPvDceLYzY5DdTWFT2NgUNkVhw0+yjFxeIlKsvsFN2f/u/nH+zACy8cOvf5xOsnYRvjpOxcwUGKiXfvex+yVIScelMZOpWFCpLpuu1KJuH7OWuA6jHXt/6XUmc1pVRh+0noNJZk08dExOFL7SKS6TfF7QjdtgEiEleR7TjpWz8lCoaJVEuUoTVWrVqeW1qQM9+gwZMXHqdrMOFi3DFea6u+hkNuw6ME71m/FZJePAekumaZp+9SwGL6Ssw3iRCF8ZVDoPLMM6toYzTduopHUzYcWwqQY69j328hk0AK7927VzefT3nL3dy+6zXIFj3n1VP15Ja+VwBABg2GELWAAAAAAAAAAAAAAAAPHn6QfwvX5tuXWVJz8lywVk24e/7yKQ9aiTSYSvztNJIHAdGeP5W+F+sYykWJmgaFOZ7SbtUq5bjiZj/3rP8jVeiLjQARkD330ff1zwkDz4sIqIiIiIiEjyAcrxRwo5o6iykEKSJClChTGWo6B15cRoPDFnvBIyOl54p3TIRM2XIBWZHPfy+p5PWO9V1FkUBM9/oU73XWgZtEaP/x2VKHzhvWsp0q2B5xLau6f47y/ueSQM07yKQaU6tJix3HTfd6oDwBlfda2zHQAAAMilFYZdF2CR6ypgAACDHD0Y9qGZJh0wUaRI5wEZwnj3/H4eOsAAwMmM6+Vq5Z1CxbySKK+jBwBOV3NBzwOILgDAAADAsGnn7SfvYUTgnfYAAOS5v9n8q6C/z3yAy5BXWLgAwNDR0zc0MlkAgAt0R4BzzjnnoCN53GZZgCff+DoIQI7jTsYpiWOD1gtHXcNRXcAR/YrIrNpmHcqTrON4kQhfadR6ORjeasrkF9rtgs/jvv+wPgsffr3mTgjUu0/cj6QpvtGPm5gA+PCre+JP/PN9C18jboGJ3RfX/Ho94xfVd/Dql/4K/r0/Nki7YWm94syMAdGNxGCAwYwbvLvxS5f01hERVfJxTgCdPj+/kuv32Wz9dgK6qqqqiZqJqFmd/Vrn+T+++M+jh/uir1pi1PtZu9ncT7ue16uQGJX7B933F2I+iPgkEQOZQRvmoXagGosWbbjxeu9ZlUzEhnU9r+1mhnh8CtmyATOlIoCD7vtHgT4p9FVMx2rJIkPeTFQjLBvu+d6nMAcAAMDAHyrvN7DNyMIFAAAAcMkrkhnEdFu3dVun+11Iru0Za4emqVCsTcpGYMN8Yfps2ZF5gmEYhuVbi+Pbr24xPGFIjLbK7YLFsTg+fLFx83LlF0Eo2SrIVl4UfpFZl2cdfJNP0jFDZtCGeagZW9hwtVgholhpgiAIgiAIou+Wj7CbKwuTkQFfampUCwOKtX7++N+TOpAYrds6JI/JbupGY9m4L7uPCCAlUkJcD0RERERErEYopZRSSimlOs+6U4/TWmtNc/RurpYqBGnX0l7OYaJ0VBEREZnJTET/zf7kvanaOoAxlx5rMwAACAIQBIBotyzLKCqjqCynrx894wjDxsbGxkaOfVxinDUEhBWNEpA2x9moQnU2uRQ8x0AAAByAAwAAEEAIIIDwNt3sNfQz5xV//jzDk3MVq5hkkine9GOmfyOZZIpJppxik2sUmwrnLwpAsFBSWESKNhEjXgKTnNHSZobTTLacyFdQRSoBUuHYDnW94j9txVNM8RRTPMlTbIBn+uDxnwk8HI6H4+F4PBwPx5+oqwHG9WRcTZ/9Zt7v4/3z6zZu3R2/IFEdMzMzMzMfh4/DGmrtzMxM+zs4O+0HZUHsZ/gPrVUqmFyAbID/0yt88g5YE1dBsMiPVQ8irE3hQthqFthRwwHRTKcAwNEdQKMbWiZ60JIV52qet0LP61aKIbXKL4dHq50V2zqvR1sbcsbHRyO1y+zHSO5clvCAjq/vy7pOoB/LrgNh+mWZqSPciGo4KQYiKXMz0mOPZEGdx1C4ngSh9Oat6oKpGuPt2VUkhz3dqnVy2KOZ9elu5ApX4ce0s/kiWvpeje70bLiXOOZ0Y+VCuVPueb0b5WY5zV9LcbFxaMSJ0qZl4nXqkmfWvc8JXabk9s2aSW06v5bZJgnrL8kZ99TK0ntXZaY009B6X+NGZnJq1SmX/x+ITtXWc4efg4NT8nM36Axdln8nJ+CPSyThLFfwfA+WHl7l1zj5Hp3LDvJI0nULrxjWc2vr+VOmZWJ7TIreFs0zo1r3ntQCfndrLXNwUGvIFFrWcleG3nqe7Cz1MktOJHILy62WLndqLrw6RcEukDKJJrWXJYMhTsj6Pfki7If7usJOlTbJRkcXwOPbnB4tktltm9faWMtbtpRaeOFs1jvnDCHrxLNGZm/F/cXaiU1QJx4yb920sUQHIzNy62FU3VYxPTeafCtH12yq31s+ubJzKtb69YoZszwkoStfjg2WPY3/Di8hLs696lzfTLcdXUzLkjtDW2dXDhkzvp6eJ9FITDYRaOM96wm53Kn3BhlNGrDMevwO04kfNHI+ttX2wZN9CF03kZzno3+2cRUMDGBjXMXD3jHo5u4HyaR64r3B+QBLmzhsPQvclZMR8iRcaImcvnK3NDpLVAIyulKO7YsxPmaO6WN0TBvzjFnG5NXLOiiO02t2O9qbGQ16rYrDYpCxGBQSAYOAAF5cu6Dof0XyXLxnjBwXI1qERx7ygmer+iHURaUa9hnWrfIWVlve0F/p2jIxqWB6p5+PnjCQiJOXd/f48tFOjBywR/Z3ju6zJeLYZfOzWnBPJGza1Q6RnW2jOyyROHR74a4e7BGSsM257HHdYJxBGHee0u2rdupaT7I34F4WWC9f2uMu7l8D+wv83+vFrZRvTg4aw0X3Ax+JGD92t/b5dOIBw6WigL9K3ifLTwiv6q/szn3pjgSMqadwAtU46BLjk5Wxyz2DvVDPogcCdC7s/yR/Vb8MXKR7su3gPdrfvqGreJNEq8ZoB06iVHXkdwtI3Gf3Yt4sZKy2kmb+VTUfaZMvwSpv6GTaFGE4fkirytyrvS0VKIli9xDmHh6s/+4yeCNb+tmADbg3DZmPD/zm2Ey//UKQHE5L+rRXDZifa1jNEfw7qVYalE8MNxobari+dYV8R/JtRUDuBPw/C8yZq9Yyl7doNWr4OhZNv7yB4aRu7G6cScrsYZmdLTj0Qv7gxS89qs1EIwjj5pl3pX8oXn2kGAePXqzATkg7nWDc4ic+jpiUTn/eGHFafJDrErO1Uuz+D0Nqk8KJvZU+CE3YWZu4+dbKkXmrHbl6Fy1bYV5vPsKTdfdqWX6EZ9TeFLnY+j7/eR5/vcZ9tVeU5TdR3baZJ3EbhyFAWmx9Z69UuhSVNHKY817EOP5Awc8PEI56AcbDIcZ4tL+pXS5PZVhmcz/4KdE4GvvWG32A8VLMXgw1/0+oxES7sH/eDbZdd8u1Nl3jTKHeU0inC3GrQLMCrLtP9vCd+BnIwTvxswB4Aj8NwPvxATDwAt4HOp7D86CDxgtwpqNvo1+UfETOcaAfGUHg2y8DQBRfpnfbL03EqMFhhAoSFCghgX+CCrAjEQf6XfTH6bfon+4uQGMMf4N+MUfh8s0P/G477+trq8bZc/qZc8aJDX1zw1hc0peXjNFYn4wN+ElOAwaafqlBALg1v4ZP3L1zPIEHoV9mnd3O/ZNzPlVVrI2QkaGMG0BiVsRgLNJ6bNBL9Fcp/Y/wq8C5auwTH/0/QOytoY9DW8ueLbyvBZbbWR/+t5DeqA1a3rqt3Zqt3i7aaTtuaYupo4YqSjfVXz/rUsw5xHErmKeOtDLPGk6Sgiae6YKD9cteTOmrfuZIVF5IKHExPVJlJGddyvsJnZxt5Vl9n1BA8A357Cu+YRzC0Gl5+MQhH88syOsl4qg/xgbqvGJAffcLB7EuVgBOHx+fEXhSBFgU0j4w7Z6E9onuRoZkYEvchvzAupS7OdrlTa8W9uTKG59I2V43LpALWKCVgU85vfueew2YLajJavEB4B+++x7OcInBbx1O4KrTqkDgxIMSH6k3K1t5oEn1+mWc4gfX+ZILTj07JkrGjZWAvuMuX/ZuG6UrJKRLyDnOUGKOIippUv/FpeYlS8UtMZJD3FaOZcgsQ5EEhkDAy8hgPx6HxSDKoNwQN8gZOT2n48SEj3QxAAA=) format("woff"); - font-style: normal; - font-weight: 400; - font-display: swap; -} -body { - background: #f8f9fa; - text-align: left; -} -html[lang^=ar] body { - font-family: "Segoe UI"; -} -html[lang^=en] body { - font-family: "Noto Sans"; -} -@media print { - body { - background: #fff; - } -} - -.page { - background: white; - display: block; - margin: 0.5cm auto; - box-shadow: rgba(122, 136, 146, 0.15) 0px 1px 3px 1px; - width: 21cm; - height: 29.7cm; -} -@media print { - .page { - margin: 0; - box-shadow: 0 0 0; - width: 100%; - height: auto; - } -} -.page[size=A4] { - width: 21cm; - height: 29.7cm; -} -.page[size=A4][layout=landscape] { - width: 29.7cm; - height: 21cm; -} -.page[size=A3] { - width: 29.7cm; - height: 42cm; -} -.page[size=A3][layout=landscape] { - width: 42cm; - height: 29.7cm; -} -.page[size=A5] { - width: 14.8cm; - height: 21cm; -} -.page[size=A5][layout=landscape] { - width: 21cm; - height: 14.8cm; -} - -.receipt { - text-align: left; - padding: 45px; -} -.receipt__header { - display: flex; - align-items: center; - justify-content: space-between; - margin: 0 0 60px; -} -.receipt__header .organization .title { - margin: 0 0 10px; -} -.receipt__header .paper .title { - font-weight: 400; - text-transform: uppercase; - margin: 0 0 6px; - font-size: 26px; -} -.receipt__meta { - display: flex; - flex-wrap: wrap; - margin-bottom: 40px; -} -.receipt__meta-item { - flex: 0 1 25%; - padding-right: 10px; - font-size: 16px; - font-weight: 400; - line-height: 1.6rem; - margin-bottom: 20px; - display: flex; - flex-direction: column; -} -.receipt__meta-item .value { - color: #000; -} -.receipt__meta-item .label { - color: #555; - margin-bottom: 2px; -} -.receipt__meta-item--amount { - flex: 0 1 50%; -} -.receipt__meta-item--amount .value { - font-weight: bold; - font-size: 20px; -} -.receipt__meta-item--billed-to { - flex: 0 1 50%; -} -.receipt__table { - display: flex; - flex-direction: column; - margin-bottom: 60px; -} -.receipt__table table { - font-size: 15px; - color: #000; - border-top: 2px solid #000; - text-align: left; -} -.receipt__table table thead th, -.receipt__table table tbody tr td { - margin-bottom: 15px; - background: transparent; -} -.receipt__table table thead tr { - color: #000; -} -.receipt__table table thead th { - font-size: 16px; - font-weight: 400; - border-bottom: none; - padding: 10px; -} -.receipt__table table thead th:first-child { - padding-left: 0; -} -.receipt__table table thead th:last-child { - padding-right: 0; -} -.receipt__table table tbody tr td { - font-size: 15px; - padding: 10px; - border-bottom: 1px solid #cecbcb; -} -.receipt__table table tbody tr td:first-child { - padding-left: 0; -} -.receipt__table table tbody tr td::last-child { - padding-right: 0; -} -.receipt__table table thead tr th.item { - width: 45%; -} -.receipt__table table thead tr th.rate { - width: 18%; -} -.receipt__table table thead tr th.quantity { - width: 16%; -} -.receipt__table table thead tr th.total { - width: 21%; -} -.receipt__conditions__title { - color: #666; -} \ No newline at end of file diff --git a/server/resources/scss/base.scss b/server/resources/scss/base.scss deleted file mode 100644 index f401595f7..000000000 --- a/server/resources/scss/base.scss +++ /dev/null @@ -1,35 +0,0 @@ -@import "./normalize.scss"; - -*, -*::before, -*::after { - box-sizing: border-box; -} - -th { - text-align: inherit; // 2 - text-align: -webkit-match-parent; // 3 -} - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; -} - -body{ - margin: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - background-color: #fff; - direction: ltr; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: transparent; -} \ No newline at end of file diff --git a/server/resources/scss/fonts.scss b/server/resources/scss/fonts.scss deleted file mode 100644 index 000d1500c..000000000 --- a/server/resources/scss/fonts.scss +++ /dev/null @@ -1,26 +0,0 @@ - -$SegoeUIFont: "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"; - - -$NotoSansSrc: "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"; - -// Noto Sans -// ------------------------------------- -@font-face { - font-family: "Noto Sans"; - src: local('Noto Sans'), url(data:font/woff2;base64,#{$NotoSansSrc}) format('woff'); - font-style: normal; - font-weight: 400; - font-display: swap; -} - -// Segoe UI Arabic -// ------------------------------------- -@font-face { - font-family: 'Segoe UI'; - src: local('Segoe UI'), url(data:application/x-font-woff;charset=utf-8;base64,#{$SegoeUIFont}) format('woff'); - font-style: normal; - font-weight: 400; - font-display: swap; -} - \ No newline at end of file diff --git a/server/resources/scss/layouts/paper-layout.scss b/server/resources/scss/layouts/paper-layout.scss deleted file mode 100644 index e24be0ba7..000000000 --- a/server/resources/scss/layouts/paper-layout.scss +++ /dev/null @@ -1,18 +0,0 @@ -@import "../base.scss"; -@import "../fonts.scss"; - -body { - background: #f8f9fa; - text-align: left; - - html[lang^='ar'] & { - font-family: "Segoe UI"; - } - html[lang^='en'] & { - font-family: "Noto Sans"; - } - - @media print { - background: #fff; - } -} diff --git a/server/resources/scss/modules/estimate.scss b/server/resources/scss/modules/estimate.scss deleted file mode 100644 index 2ea51ca13..000000000 --- a/server/resources/scss/modules/estimate.scss +++ /dev/null @@ -1,141 +0,0 @@ -@import "../layouts/paper-layout.scss"; - -.estimate{ - text-align: left; - padding: 45px; - - &__header{ - display: flex; - align-items: center; - justify-content: space-between; - margin: 0 0 60px; - - .organization{ - - .title{ - margin: 0 0 10px; - } - } - - .paper{ - - .title{ - font-weight: 400; - text-transform: uppercase; - margin: 0 0 6px; - font-size: 26px; - } - } - } - - &__meta{ - display: flex; - flex-wrap: wrap; - margin-bottom: 40px; - - &-item{ - flex: 0 1 25%; - padding-right: 10px; - font-size: 16px; - font-weight: 400; - line-height: 1.6rem; - margin-bottom: 20px; - display: flex; - flex-direction: column; - - .value{ - color: #000; - } - .label{ - color: #555; - margin-bottom: 2px; - } - - &--amount{ - flex: 0 1 50%; - - .value{ - font-weight: bold; - font-size: 20px; - } - } - - &--billed-to{ - flex: 0 1 50%; - } - } - } - - &__table { - display: flex; - flex-direction: column; - margin-bottom: 60px; - - table { - font-size: 15px; - color: #000; - border-top: 2px solid #000; - text-align: left; - - thead th, - tbody tr td { - margin-bottom: 15px; - background: transparent; - } - thead{ - tr { - color: #000; - } - } - thead th { - font-size: 16px; - font-weight: 400; - border-bottom: none; - padding: 10px; - - &:first-child{ - padding-left: 0; - } - - &:last-child{ - padding-right: 0; - } - } - tbody tr td { - font-size: 15px; - padding: 10px; - border-bottom: 1px solid #cecbcb; - - &:first-child{ - padding-left: 0; - } - - &::last-child{ - padding-right: 0; - } - } - - thead tr th{ - &.item{ - width: 45%; - } - &.rate{ - width: 18%; - } - &.quantity{ - width: 16%; - } - &.total{ - width: 21%; - } - } - } - } - - &__conditions{ - - &__title{ - color: #666; - } - } -} \ No newline at end of file diff --git a/server/resources/scss/modules/invoice.scss b/server/resources/scss/modules/invoice.scss deleted file mode 100644 index 177c1d4dc..000000000 --- a/server/resources/scss/modules/invoice.scss +++ /dev/null @@ -1,147 +0,0 @@ -@import "../layouts/paper-layout.scss"; - -.invoice{ - text-align: left; - padding: 45px 40px; - - &__header{ - display: flex; - align-items: center; - justify-content: space-between; - margin: 0 0 60px; - - .organization{ - - .title{ - margin: 0 0 10px; - } - } - - .paper{ - - .title{ - font-weight: 400; - text-transform: uppercase; - margin: 0 0 6px; - font-size: 26px; - } - } - } - - &__meta{ - display: flex; - flex-wrap: wrap; - margin-bottom: 40px; - - &-item{ - flex: 0 1 25%; - padding-right: 10px; - font-size: 16px; - font-weight: 400; - line-height: 1.6rem; - margin-bottom: 20px; - display: flex; - flex-direction: column; - - .value{ - color: #000; - } - .label{ - color: #555; - margin-bottom: 2px; - } - - &--amount{ - flex: 0 1 50%; - - .value{ - font-weight: bold; - font-size: 20px; - } - } - &--billed-to{ - flex: 0 1 50%; - } - } - } - - &__table { - display: flex; - flex-direction: column; - margin-bottom: 60px; - - table { - font-size: 15px; - color: #000; - text-align: left; - - thead th, - tbody tr td { - margin-bottom: 15px; - background: transparent; - } - thead{ - tr { - color: #000; - - th{ - border-top: 2px solid #000; - } - } - } - thead th { - font-size: 16px; - font-weight: 400; - border-bottom: none; - padding: 10px; - - &:first-child{ - padding-left: 0; - } - - &:last-child{ - padding-right: 0; - } - } - tbody tr td { - font-size: 15px; - padding: 10px; - border-bottom: 1px solid #cecbcb; - - &:first-child{ - padding-left: 0; - } - - &::last-child{ - padding-right: 0; - } - } - - thead tr th{ - &.item{ - width: 45%; - } - &.rate{ - width: 18%; - } - &.quantity{ - width: 16%; - } - &.total{ - width: 21%; - } - } - .description{ - font-size: 14px; - color: #666; - } - } - } - - &__conditions{ - - &__title{ - color: #666; - } - } -} \ No newline at end of file diff --git a/server/resources/scss/modules/receipt.scss b/server/resources/scss/modules/receipt.scss deleted file mode 100644 index 2ce41fefe..000000000 --- a/server/resources/scss/modules/receipt.scss +++ /dev/null @@ -1,140 +0,0 @@ -@import "../layouts/paper-layout.scss"; - -.receipt{ - text-align: left; - padding: 45px; - - &__header{ - display: flex; - align-items: center; - justify-content: space-between; - margin: 0 0 60px; - - .organization{ - - .title{ - margin: 0 0 10px; - } - } - - .paper{ - - .title{ - font-weight: 400; - text-transform: uppercase; - margin: 0 0 6px; - font-size: 26px; - } - } - } - - &__meta{ - display: flex; - flex-wrap: wrap; - margin-bottom: 40px; - - &-item{ - flex: 0 1 25%; - padding-right: 10px; - font-size: 16px; - font-weight: 400; - line-height: 1.6rem; - margin-bottom: 20px; - display: flex; - flex-direction: column; - - .value{ - color: #000; - } - .label{ - color: #555; - margin-bottom: 2px; - } - - &--amount{ - flex: 0 1 50%; - - .value{ - font-weight: bold; - font-size: 20px; - } - } - &--billed-to{ - flex: 0 1 50%; - } - } - } - - &__table { - display: flex; - flex-direction: column; - margin-bottom: 60px; - - table { - font-size: 15px; - color: #000; - border-top: 2px solid #000; - text-align: left; - - thead th, - tbody tr td { - margin-bottom: 15px; - background: transparent; - } - thead{ - tr { - color: #000; - } - } - thead th { - font-size: 16px; - font-weight: 400; - border-bottom: none; - padding: 10px; - - &:first-child{ - padding-left: 0; - } - - &:last-child{ - padding-right: 0; - } - } - tbody tr td { - font-size: 15px; - padding: 10px; - border-bottom: 1px solid #cecbcb; - - &:first-child{ - padding-left: 0; - } - - &::last-child{ - padding-right: 0; - } - } - - thead tr th{ - &.item{ - width: 45%; - } - &.rate{ - width: 18%; - } - &.quantity{ - width: 16%; - } - &.total{ - width: 21%; - } - } - } - } - - &__conditions{ - - &__title{ - color: #666; - } - } -} \ No newline at end of file diff --git a/server/resources/scss/normalize.scss b/server/resources/scss/normalize.scss deleted file mode 100644 index 5096fd90f..000000000 --- a/server/resources/scss/normalize.scss +++ /dev/null @@ -1,379 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ - -html { - line-height: 1.15; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers. - */ - -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ - -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ - -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ - -hr { - box-sizing: content-box; - /* 1 */ - height: 0; - /* 1 */ - overflow: visible; - /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Remove the gray background on active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ - -abbr[title] { - border-bottom: none; - /* 1 */ - text-decoration: underline; - /* 2 */ - text-decoration: underline dotted; - /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove the border on images inside links in IE 10. - */ - -img { - border-style: none; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - line-height: 1.15; - /* 1 */ - margin: 0; - /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ - -button, -input { - /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ - -button, -select { - /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ - -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ - -legend { - box-sizing: border-box; - /* 1 */ - color: inherit; - /* 2 */ - display: table; - /* 1 */ - max-width: 100%; - /* 1 */ - padding: 0; - /* 3 */ - white-space: normal; - /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ - -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ - -[type="checkbox"], -[type="radio"] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ - -[type="search"] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ - -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ - -/** - * Add the correct display in IE 10+. - */ - -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ - -[hidden] { - display: none; -} \ No newline at end of file diff --git a/server/resources/views/PaperTemplateLayout.pug b/server/resources/views/PaperTemplateLayout.pug deleted file mode 100644 index 4678ae166..000000000 --- a/server/resources/views/PaperTemplateLayout.pug +++ /dev/null @@ -1,7 +0,0 @@ -html(lang=locale) - head - title My Site - #{title} - block head - body - div.paper-template - block content \ No newline at end of file diff --git a/server/resources/views/modules/estimate-regular.pug b/server/resources/views/modules/estimate-regular.pug deleted file mode 100644 index e6cc8331f..000000000 --- a/server/resources/views/modules/estimate-regular.pug +++ /dev/null @@ -1,70 +0,0 @@ -extends ../PaperTemplateLayout.pug - -block head - style - if (isRtl) - include ../../css/modules/estimate-rtl.css - else - include ../../css/modules/estimate.css - -block content - div.estimate - div.estimate__header - div.organization - h3.title #{organizationName} - if organizationEmail - span.email #{organizationEmail} - - div.paper - h1.title #{__("estimate.paper.estimate")} - span.email #{saleEstimate.estimateNumber} - - div.estimate__meta - div.estimate__meta-item.estimate__meta-item--amount - span.label #{__('estimate.paper.amount')} - span.value #{saleEstimate.formattedAmount} - - div.estimate__meta-item.estimate__meta-item--billed-to - span.label #{__("estimate.paper.billed_to")} - span.value #{saleEstimate.customer.displayName} - - div.estimate__meta-item.estimate__meta-item--estimate-date - span.label #{__("estimate.paper.estimate_date")} - span.value #{saleEstimate.formattedEstimateDate} - - if saleEstimate.estimateNumber - div.estimate__meta-item.estimate__meta-item--estimate-number - span.label #{__("estimate.paper.estimate_number")} - span.value #{saleEstimate.estimateNumber} - - div.estimate__meta-item.estimate__meta-item--due-date - span.label #{__("estimate.paper.expiration_date")} - span.value #{saleEstimate.formattedExpirationDate} - - div.estimate__table - table - thead - tr - th.item #{__("item_entry.paper.item_name")} - th.rate #{__("item_entry.paper.rate")} - th.quantity #{__("item_entry.paper.quantity")} - th.total #{__("item_entry.paper.total")} - tbody - each entry in saleEstimate.entries - tr - td.item - div.title=entry.item.name - span.description=entry.description - td.rate=entry.rate - td.quantity=entry.quantity - td.total=entry.amount - - if saleEstimate.termsConditions - div.estimate__conditions - h3 #{__("estimate.paper.conditions_title")} - p #{saleEstimate.termsConditions} - - if saleEstimate.note - div.estimate__notes - h3 #{__("estimate.paper.notes_title")} - p #{saleEstimate.note} \ No newline at end of file diff --git a/server/resources/views/modules/invoice-regular.pug b/server/resources/views/modules/invoice-regular.pug deleted file mode 100644 index 6e4c3e765..000000000 --- a/server/resources/views/modules/invoice-regular.pug +++ /dev/null @@ -1,71 +0,0 @@ -extends ../PaperTemplateLayout.pug - -block head - style - if (isRtl) - include ../../css/modules/invoice-rtl.css - else - include ../../css/modules/invoice.css - -block content - div.invoice - div.invoice__header - div.organization - h3.title #{organizationName} - if organizationEmail - span.email #{organizationEmail} - - div.paper - h1.title #{__("invoice.paper.invoice")} - if saleInvoice.invoiceNo - span.email #{saleInvoice.invoiceNo} - - div.invoice__meta - div.invoice__meta-item.invoice__meta-item--amount - span.label #{__('invoice.paper.due_amount')} - span.value #{saleInvoice.formattedAmount} - - div.invoice__meta-item.invoice__meta-item--billed-to - span.label #{__("invoice.paper.billed_to")} - span.value #{saleInvoice.customer.displayName} - - div.invoice__meta-item.invoice__meta-item--invoice-date - span.label #{__("invoice.paper.invoice_date")} - span.value #{saleInvoice.formattedInvoiceDate} - - if saleInvoice.invoiceNo - div.invoice__meta-item.invoice__meta-item--invoice-number - span.label #{__("invoice.paper.invoice_number")} - span.value #{saleInvoice.invoiceNo} - - div.invoice__meta-item.invoice__meta-item--due-date - span.label #{__("invoice.paper.due_date")} - span.value #{saleInvoice.formattedDueDate} - - div.invoice__table - table - thead - tr - th.item #{__("item_entry.paper.item_name")} - th.rate #{__("item_entry.paper.rate")} - th.quantity #{__("item_entry.paper.quantity")} - th.total #{__("item_entry.paper.total")} - tbody - each entry in saleInvoice.entries - tr - td.item - div.title=entry.item.name - span.description=entry.description - td.rate=entry.rate - td.quantity=entry.quantity - td.total=entry.amount - - if saleInvoice.termsConditions - div.invoice__conditions - h3 #{__("invoice.paper.conditions_title")} - p #{saleInvoice.termsConditions} - - if saleInvoice.invoiceMessage - div.invoice__notes - h3 #{__("invoice.paper.notes_title")} - p #{saleInvoice.invoiceMessage} \ No newline at end of file diff --git a/server/resources/views/modules/payment-receipt-regular.pug b/server/resources/views/modules/payment-receipt-regular.pug deleted file mode 100644 index e69de29bb..000000000 diff --git a/server/resources/views/modules/purchase-invoice-regular.pug b/server/resources/views/modules/purchase-invoice-regular.pug deleted file mode 100644 index e69de29bb..000000000 diff --git a/server/resources/views/modules/receipt-regular.pug b/server/resources/views/modules/receipt-regular.pug deleted file mode 100644 index d37b1d07c..000000000 --- a/server/resources/views/modules/receipt-regular.pug +++ /dev/null @@ -1,64 +0,0 @@ -extends ../PaperTemplateLayout.pug - -block head - style - if (isRtl) - include ../../css/modules/receipt-rtl.css - else - include ../../css/modules/receipt.css - -block content - div.receipt - div.receipt__header - div.organization - h3.title #{organizationName} - if organizationEmail - span.email #{organizationEmail} - - div.paper - h1.title #{__("receipt.paper.receipt")} - span.email #{saleReceipt.receiptNumber} - - div.receipt__meta - div.receipt__meta-item.receipt__meta-item--amount - span.label #{__('receipt.paper.receipt_amount')} - span.value #{saleReceipt.formattedAmount} - - div.receipt__meta-item.receipt__meta-item--billed-to - span.label #{__("receipt.paper.billed_to")} - span.value #{saleReceipt.customer.displayName} - - div.receipt__meta-item.receipt__meta-item--invoice-date - span.label #{__("receipt.paper.receipt_date")} - span.value #{saleReceipt.formattedReceiptDate} - - if saleReceipt.receiptNumber - div.receipt__meta-item.receipt__meta-item--invoice-number - span.label #{__("receipt.paper.receipt_number")} - span.value #{saleReceipt.receiptNumber} - - div.receipt__table - table - thead - tr - th.item #{__("item_entry.paper.item_name")} - th.rate #{__("item_entry.paper.rate")} - th.quantity #{__("item_entry.paper.quantity")} - th.total #{__("item_entry.paper.total")} - tbody - each entry in saleReceipt.entries - tr - td.item=entry.item.name - td.rate=entry.rate - td.quantity=entry.quantity - td.total=entry.amount - - if saleReceipt.statement - div.receipt__conditions - h3 #{__("receipt.paper.statement_title")} - p #{saleReceipt.statement} - - if saleReceipt.receiptMessage - div.receipt__notes - h3 #{__("receipt.paper.notes_title")} - p #{saleReceipt.receiptMessage} \ No newline at end of file diff --git a/server/scripts/gulpConfig.js b/server/scripts/gulpConfig.js deleted file mode 100644 index 4c584cc8c..000000000 --- a/server/scripts/gulpConfig.js +++ /dev/null @@ -1,125 +0,0 @@ -/** - * # Gulp Configuration. - * ------------------------------------------------------------------ - */ - -const RESOURCES_PATH = '../resources/'; -module.exports = { - banner: [ - '/**', - ' * <%= pkg.name %> - <%= pkg.description %>', - ' * @version v<%= pkg.version %>', - ' * @link <%= pkg.homepage %>', - ' * @author <%= pkg.author %>', - ' * @license <%= pkg.license %>', - '**/', - '', - ].join('\n'), - - // Browser Sync - browsersync: { - files: ['**/*', '!**.map', '!**.css'], // Exclude map files. - notify: false, // - open: true, // Set it to false if you don't like the broser window opening automatically. - port: 8080, // - proxy: 'localhost/customatic', // - watchOptions: { - debounceDelay: 2000, // This introduces a small delay when watching for file change events to avoid triggering too many reloads - }, - snippetOptions: { - whitelist: ['/wp-admin/admin-ajax.php'], - blacklist: ['/wp-admin/**'], - }, - }, - - // Style Related. - style: { - clean: ['style.css', 'style.min.css', 'style-rtl.css', 'style-rtl.min.css'], - build: [ - { - src: `${RESOURCES_PATH}/scss/modules/invoice.scss`, - dest: `${RESOURCES_PATH}/css/modules`, - // sourcemaps: true, // Allow to enable/disable sourcemaps or pass object to configure it. - // minify: true, // Allow to enable/disable minify the source. - }, - { - src: `${RESOURCES_PATH}/scss/modules/estimate.scss`, - dest: `${RESOURCES_PATH}/css/modules`, - // sourcemaps: true, // Allow to enable/disable sourcemaps or pass object to configure it. - // minify: true, // Allow to enable/disable minify the source. - }, - { - src: `${RESOURCES_PATH}/scss/modules/receipt.scss`, - dest: `${RESOURCES_PATH}/css/modules`, - // sourcemaps: true, // Allow to enable/disable sourcemaps or pass object to configure it. - // minify: true, // Allow to enable/disable minify the source. - }, - // { - // src: './assets/sass/editor-style.scss', - // dest: './assets/css', - // sourcemaps: true, - // minify: true, - // }, - ], - // RTL builds. - rtl: [ - { - src: `${RESOURCES_PATH}/css/modules/invoice.css`, - dest: `${RESOURCES_PATH}/css/modules`, - }, - { - src: `${RESOURCES_PATH}/css/modules/estimate.css`, - dest: `${RESOURCES_PATH}/css/modules`, - }, - { - src: `${RESOURCES_PATH}/css/modules/receipt.css`, - dest: `${RESOURCES_PATH}/css/modules`, - }, - ], - - // Browsers you care about for auto-prefixing. - autoprefixer: { - browsers: [ - 'Android 2.3', - 'Android >= 4', - 'Chrome >= 20', - 'Firefox >= 24', - 'Explorer >= 9', - 'iOS >= 6', - 'Opera >= 12', - 'Safari >= 6', - ], - }, - - // SASS Configuration for all builds. - sass: { - errLogToConsole: true, - // outputStyle: 'compact', - }, - - // CSS MQ Packer configuration for all builds and style tasks. - cssMqpacker: {}, - - // CSS nano configuration for all builds. - cssnano: {}, - - // rtlcss configuration for all builds. - rtlcss: {}, - }, - - // Clean specific files. - clean: [ - '**/.DS_Store', - './assets/js/**/*.min.js', - '**/*.map', - '**/*.min.css', - 'assets/js/hypernews.js', - ], - - // Watch related. - watch: { - css: ['./assets/sass/**/*'], - js: ['assets/js/**/*.js', '!assets/js/**/*.min.js'], - images: ['./assets/images/**/*'], - }, -}; diff --git a/server/scripts/gulpfile.js b/server/scripts/gulpfile.js deleted file mode 100644 index 00eb828a5..000000000 --- a/server/scripts/gulpfile.js +++ /dev/null @@ -1,50 +0,0 @@ -const gulp = require('gulp'); -const sass = require('sass'); -const gulpSass = require('gulp-sass')(sass); // Gulp pluign for Sass compilation. -const mergeStream = require('merge-stream'); - -const rename = require('gulp-rename'); // Renames files E.g. style.css -> style.min.css - -// Style related. -const postcss = require('gulp-postcss'); // Transforming styles with JS plugins -const rtlcss = require('rtlcss'); // Convert LTR CSS to RTL. - -const config = require('./gulpConfig'); - -gulp.task('styles', () => { - const builds = config.style.build.map((build) => { - return gulp - .src(build.src) - .pipe(gulpSass(config.style.sass)) - .pipe(gulp.dest(build.dest)); - }); - return mergeStream(builds); -}); - -/** - * Task: `styles-rtl` - * - * This task does the following. - * 1. Gets the source css files. - * 2. Covert LTR CSS to RTL. - * 3. Suffix all CSS files to `-rtl`. - * 4. Reloads css files via browser sync stream. - * 5. Combine matching media queries for `.min.css` version. - * 6. Minify all CSS files. - * 7. Reload minified css files via browser sync stream. - */ -gulp.task('styles-rtl', () => { - const builds = config.style.rtl.map((build) => { - return gulp - .src(build.src) - .pipe( - postcss([ - rtlcss(config.style.rtlcss), // Convert LTR CSS to RTL. - ]), - ) - .pipe(rename({ suffix: '-rtl' })) // Append "-rtl" to the filename. - .pipe(gulp.dest(build.dest)); - }); - - return mergeStream(builds); -}); diff --git a/server/scripts/install.sh b/server/scripts/install.sh deleted file mode 100644 index ad899bf99..000000000 --- a/server/scripts/install.sh +++ /dev/null @@ -1,4 +0,0 @@ - -npm install -npm run build -npm run copy-i18n \ No newline at end of file diff --git a/server/scripts/run_test_db.sh b/server/scripts/run_test_db.sh deleted file mode 100644 index 80412012d..000000000 --- a/server/scripts/run_test_db.sh +++ /dev/null @@ -1,31 +0,0 @@ -MYSQL_USER="ratteb" -MYSQL_DATABASE="ratteb" -MYSQL_CONTAINER_NAME="ratteb_test" - -MYSQL_ROOT_PASSWORD="root" -MYSQL_PASSWORD="root" - -echo "Start the testing MySql database..." - -docker \ - run \ - --detach \ - --env MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \ - --env MYSQL_USER=${MYSQL_USER} \ - --env MYSQL_PASSWORD=${MYSQL_PASSWORD} \ - --env MYSQL_DATABASE=${MYSQL_DATABASE} \ - --name ${MYSQL_CONTAINER_NAME} \ - --publish 3306:3306 \ - --tmpfs /var/lib/mysql:rw \ - mysql:5.7; - -echo "Sleeping for 10 seconds to allow time for the DB to be provisioned:" -for i in `seq 1 10`; -do - echo "." - sleep 1 -done - -echo "Database '${MYSQL_DATABASE}' running." -echo " Username: ${MYSQL_USER}" -echo " Password: ${MYSQL_PASSWORD}" diff --git a/server/src/api/controllers/AccountTypes.ts b/server/src/api/controllers/AccountTypes.ts deleted file mode 100644 index 792a8ba6a..000000000 --- a/server/src/api/controllers/AccountTypes.ts +++ /dev/null @@ -1,42 +0,0 @@ - import { Service, Inject } from 'typedi'; -import { Request, Response, Router, NextFunction } from 'express'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseController from 'api/controllers/BaseController'; -import AccountsTypesService from 'services/Accounts/AccountsTypesServices'; - -@Service() -export default class AccountsTypesController extends BaseController { - @Inject() - accountsTypesService: AccountsTypesService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get('/', asyncMiddleware(this.getAccountTypesList.bind(this))); - - return router; - } - - /** - * Retrieve accounts types list. - * @param {Request} req - Request. - * @param {Response} res - Response. - * @return {Response} - */ - getAccountTypesList(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - - try { - const accountTypes = this.accountsTypesService.getAccountsTypes(tenantId); - - return res.status(200).send({ - account_types: this.transfromToResponse(accountTypes, ['label'], req), - }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/Accounts.ts b/server/src/api/controllers/Accounts.ts deleted file mode 100644 index 0965ba58e..000000000 --- a/server/src/api/controllers/Accounts.ts +++ /dev/null @@ -1,473 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { check, param, query } from 'express-validator'; -import { Service, Inject } from 'typedi'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseController from 'api/controllers/BaseController'; -import AccountsService from 'services/Accounts/AccountsService'; -import { IAccountDTO, IAccountsFilter } from 'interfaces'; -import { ServiceError } from 'exceptions'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { DATATYPES_LENGTH } from 'data/DataTypes'; -import I18nService from 'services/I18n/I18nService'; - -@Service() -export default class AccountsController extends BaseController { - @Inject() - accountsService: AccountsService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject() - i18nService: I18nService; - - /** - * Router constructor method. - */ - router() { - const router = Router(); - - router.get( - '/transactions', - [query('account_id').optional().isInt().toInt()], - this.asyncMiddleware(this.accountTransactions.bind(this)), - this.catchServiceErrors - ); - router.post( - '/:id/activate', - [...this.accountParamSchema], - asyncMiddleware(this.activateAccount.bind(this)), - this.catchServiceErrors - ); - router.post( - '/:id/inactivate', - [...this.accountParamSchema], - asyncMiddleware(this.inactivateAccount.bind(this)), - this.catchServiceErrors - ); - router.post( - '/:id/close', - [...this.accountParamSchema, ...this.closingAccountSchema], - this.validationResult, - asyncMiddleware(this.closeAccount.bind(this)), - this.catchServiceErrors - ); - router.post( - '/:id', - [...this.accountDTOSchema, ...this.accountParamSchema], - this.validationResult, - asyncMiddleware(this.editAccount.bind(this)), - this.catchServiceErrors - ); - router.post( - '/', - [...this.accountDTOSchema], - this.validationResult, - asyncMiddleware(this.newAccount.bind(this)), - this.catchServiceErrors - ); - router.get( - '/:id', - [...this.accountParamSchema], - this.validationResult, - asyncMiddleware(this.getAccount.bind(this)), - this.catchServiceErrors - ); - router.get( - '/', - [...this.accountsListSchema], - this.validationResult, - asyncMiddleware(this.getAccountsList.bind(this)), - this.dynamicListService.handlerErrorsToResponse, - this.catchServiceErrors - ); - router.delete( - '/:id', - [...this.accountParamSchema], - this.validationResult, - asyncMiddleware(this.deleteAccount.bind(this)), - this.catchServiceErrors - ); - return router; - } - - /** - * Account DTO Schema validation. - */ - get accountDTOSchema() { - return [ - check('name') - .exists() - .isLength({ min: 3, max: DATATYPES_LENGTH.STRING }) - .trim() - .escape(), - check('code') - .optional({ nullable: true }) - .isLength({ min: 3, max: 6 }) - .trim() - .escape(), - check('account_type') - .exists() - .isLength({ min: 3, max: DATATYPES_LENGTH.STRING }) - .trim() - .escape(), - check('description') - .optional({ nullable: true }) - .isLength({ max: DATATYPES_LENGTH.TEXT }) - .trim() - .escape(), - check('parent_account_id') - .optional({ nullable: true }) - .isInt({ min: 0, max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - ]; - } - - get accountParamSchema() { - return [param('id').exists().isNumeric().toInt()]; - } - - /** - * Accounts list validation schema. - */ - get accountsListSchema() { - return [ - query('view_slug').optional({ nullable: true }).isString().trim(), - query('stringified_filter_roles').optional().isJSON(), - - query('column_sort_by').optional(), - query('sort_order').optional().isIn(['desc', 'asc']), - - query('inactive_mode').optional().isBoolean().toBoolean(), - query('search_keyword').optional({ nullable: true }).isString().trim(), - ]; - } - - get closingAccountSchema() { - return [ - check('to_account_id').exists().isNumeric().toInt(), - check('delete_after_closing').exists().isBoolean(), - ]; - } - - /** - * Creates a new account. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async newAccount(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const accountDTO: IAccountDTO = this.matchedBodyData(req); - - try { - const account = await this.accountsService.newAccount( - tenantId, - accountDTO - ); - - return res.status(200).send({ - id: account.id, - message: 'The account has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edit account details. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async editAccount(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: accountId } = req.params; - const accountDTO: IAccountDTO = this.matchedBodyData(req); - - try { - const account = await this.accountsService.editAccount( - tenantId, - accountId, - accountDTO - ); - - return res.status(200).send({ - id: account.id, - message: 'The account has been edited successfully', - }); - } catch (error) { - next(error); - } - } - - /** - * Get details of the given account. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async getAccount(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: accountId } = req.params; - - try { - const account = await this.accountsService.getAccount( - tenantId, - accountId - ); - return res - .status(200) - .send({ account: this.transfromToResponse(account) }); - } catch (error) { - next(error); - } - } - - /** - * Delete the given account. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async deleteAccount(req: Request, res: Response, next: NextFunction) { - const { id: accountId } = req.params; - const { tenantId } = req; - - try { - await this.accountsService.deleteAccount(tenantId, accountId); - - return res.status(200).send({ - id: accountId, - message: 'The deleted account has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Activate the given account. - * @param {Response} res - - * @param {Request} req - - * @return {Response} - */ - async activateAccount(req: Request, res: Response, next: Function) { - const { id: accountId } = req.params; - const { tenantId } = req; - - try { - await this.accountsService.activateAccount(tenantId, accountId, true); - - return res.status(200).send({ - id: accountId, - message: 'The account has been activated successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Inactive the given account. - * @param {Response} res - - * @param {Request} req - - * @return {Response} - */ - async inactivateAccount(req: Request, res: Response, next: Function) { - const { id: accountId } = req.params; - const { tenantId } = req; - - try { - await this.accountsService.activateAccount(tenantId, accountId, false); - - return res.status(200).send({ - id: accountId, - message: 'The account has been inactivated successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve accounts datatable list. - * @param {Request} req - * @param {Response} res - * @param {Response} - */ - public async getAccountsList( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - - // Filter query. - const filter = { - sortOrder: 'asc', - columnSortBy: 'name', - inactiveMode: false, - ...this.matchedQueryData(req), - }; - - try { - const { accounts, filterMeta } = - await this.accountsService.getAccountsList(tenantId, filter); - - return res.status(200).send({ - accounts: this.transfromToResponse(accounts, 'accountTypeLabel', req), - filter_meta: this.transfromToResponse(filterMeta), - }); - } catch (error) { - next(error); - } - } - - /** - * Closes the given account. - * @param {Request} req - * @param {Response} res - * @param next - */ - async closeAccount(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: accountId } = req.params; - const closeAccountQuery = this.matchedBodyData(req); - - try { - await this.accountsService.closeAccount( - tenantId, - accountId, - closeAccountQuery.toAccountId, - closeAccountQuery.deleteAfterClosing - ); - return res.status(200).send({ id: accountId }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve accounts transactions list. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - * @returns {Response} - */ - async accountTransactions(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const transactionsFilter = this.matchedQueryData(req); - - try { - const { transactions } = - await this.accountsService.getAccountsTransactions( - tenantId, - transactionsFilter - ); - return res.status(200).send({ - transactions: this.transfromToResponse(transactions), - }); - } catch (error) { - next(error); - } - } - - /** - * Transforms service errors to response. - * @param {Error} - * @param {Request} req - * @param {Response} res - * @param {ServiceError} error - */ - private catchServiceErrors( - error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'account_not_found') { - return res.boom.notFound('The given account not found.', { - errors: [{ type: 'ACCOUNT.NOT.FOUND', code: 100 }], - }); - } - if (error.errorType === 'account_name_not_unqiue') { - return res.boom.badRequest('The given account not unique.', { - errors: [{ type: 'ACCOUNT.NAME.NOT.UNIQUE', code: 150 }], - }); - } - if (error.errorType === 'account_type_not_found') { - return res.boom.badRequest('The given account type not found.', { - errors: [{ type: 'ACCOUNT_TYPE_NOT_FOUND', code: 200 }], - }); - } - if (error.errorType === 'account_type_not_allowed_to_changed') { - return res.boom.badRequest( - 'Not allowed to change account type of the account.', - { - errors: [{ type: 'NOT.ALLOWED.TO.CHANGE.ACCOUNT.TYPE', code: 300 }], - } - ); - } - if (error.errorType === 'parent_account_not_found') { - return res.boom.badRequest('The parent account not found.', { - errors: [{ type: 'PARENT_ACCOUNT_NOT_FOUND', code: 400 }], - }); - } - if (error.errorType === 'parent_has_different_type') { - return res.boom.badRequest('The parent account has different type.', { - errors: [ - { type: 'PARENT.ACCOUNT.HAS.DIFFERENT.ACCOUNT.TYPE', code: 500 }, - ], - }); - } - if (error.errorType === 'account_code_not_unique') { - return res.boom.badRequest('The given account code is not unique.', { - errors: [{ type: 'NOT_UNIQUE_CODE', code: 600 }], - }); - } - if (error.errorType === 'account_has_associated_transactions') { - return res.boom.badRequest( - 'You could not delete account has associated transactions.', - { - errors: [ - { type: 'ACCOUNT.HAS.ASSOCIATED.TRANSACTIONS', code: 800 }, - ], - } - ); - } - if (error.errorType === 'account_predefined') { - return res.boom.badRequest('You could not delete predefined account', { - errors: [{ type: 'ACCOUNT.PREDEFINED', code: 900 }], - }); - } - if (error.errorType === 'accounts_not_found') { - return res.boom.notFound('Some of the given accounts not found.', { - errors: [{ type: 'SOME.ACCOUNTS.NOT_FOUND', code: 1000 }], - }); - } - if (error.errorType === 'predefined_accounts') { - return res.boom.badRequest( - 'Some of the given accounts are predefined.', - { errors: [{ type: 'ACCOUNTS_PREDEFINED', code: 1100 }] } - ); - } - if (error.errorType === 'close_account_and_to_account_not_same_type') { - return res.boom.badRequest( - 'The close account has different root type with to account.', - { - errors: [ - { - type: 'CLOSE_ACCOUNT_AND_TO_ACCOUNT_NOT_SAME_TYPE', - code: 1200, - }, - ], - } - ); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Agendash.ts b/server/src/api/controllers/Agendash.ts deleted file mode 100644 index ba566e83f..000000000 --- a/server/src/api/controllers/Agendash.ts +++ /dev/null @@ -1,25 +0,0 @@ - -import { Router } from 'express' -import basicAuth from 'express-basic-auth'; -import agendash from 'agendash' -import { Container } from 'typedi' -import config from 'config' - -export default class AgendashController { - - static router() { - const router = Router(); - const agendaInstance = Container.get('agenda') - - router.use('/dash', - basicAuth({ - users: { - [config.agendash.user]: config.agendash.password, - }, - challenge: true, - }), - agendash(agendaInstance) - ); - return router; - } -} diff --git a/server/src/api/controllers/Authentication.ts b/server/src/api/controllers/Authentication.ts deleted file mode 100644 index 7e344c333..000000000 --- a/server/src/api/controllers/Authentication.ts +++ /dev/null @@ -1,314 +0,0 @@ -import { Request, Response, Router } from 'express'; -import { check, ValidationChain } from 'express-validator'; -import { Service, Inject } from 'typedi'; -import countries from 'country-codes-list'; -import parsePhoneNumber from 'libphonenumber-js'; -import BaseController from 'api/controllers/BaseController'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import AuthenticationService from 'services/Authentication'; -import { ILoginDTO, ISystemUser, IRegisterDTO } from 'interfaces'; -import { ServiceError, ServiceErrors } from 'exceptions'; -import { DATATYPES_LENGTH } from 'data/DataTypes'; -import LoginThrottlerMiddleware from 'api/middleware/LoginThrottlerMiddleware'; -import config from 'config'; - -@Service() -export default class AuthenticationController extends BaseController { - @Inject() - authService: AuthenticationService; - - /** - * Constructor method. - */ - router() { - const router = Router(); - - router.post( - '/login', - this.loginSchema, - this.validationResult, - LoginThrottlerMiddleware, - asyncMiddleware(this.login.bind(this)), - this.handlerErrors - ); - router.post( - '/register', - this.registerSchema, - this.validationResult, - asyncMiddleware(this.register.bind(this)), - this.handlerErrors - ); - router.post( - '/send_reset_password', - this.sendResetPasswordSchema, - this.validationResult, - asyncMiddleware(this.sendResetPassword.bind(this)), - this.handlerErrors - ); - router.post( - '/reset/:token', - this.resetPasswordSchema, - this.validationResult, - asyncMiddleware(this.resetPassword.bind(this)), - this.handlerErrors - ); - return router; - } - - /** - * Login schema. - */ - get loginSchema(): ValidationChain[] { - return [ - check('crediential').exists().isEmail(), - check('password').exists().isLength({ min: 5 }), - ]; - } - - /** - * Register schema. - */ - get registerSchema(): ValidationChain[] { - return [ - check('first_name') - .exists() - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('last_name') - .exists() - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('email') - .exists() - .isString() - .isEmail() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('phone_number') - .exists() - .isString() - .trim() - .escape() - .custom(this.phoneNumberValidator) - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('password') - .exists() - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('country') - .exists() - .isString() - .trim() - .escape() - .custom(this.countryValidator) - .isLength({ max: DATATYPES_LENGTH.STRING }), - ]; - } - - /** - * Country validator. - */ - countryValidator(value, { req }) { - const { - countries: { whitelist, blacklist }, - } = config.registration; - const foundCountry = countries.findOne('countryCode', value); - - if (!foundCountry) { - throw new Error('The country code is invalid.'); - } - if ( - // Focus with me! In case whitelist is not empty and the given coutry is not - // in whitelist throw the error. - // - // Or in case the blacklist is not empty and the given country exists - // in the blacklist throw the goddamn error. - (whitelist.length > 0 && whitelist.indexOf(value) === -1) || - (blacklist.length > 0 && blacklist.indexOf(value) !== -1) - ) { - throw new Error('The country code is not supported yet.'); - } - return true; - } - - /** - * Phone number validator. - */ - phoneNumberValidator(value, { req }) { - const phoneNumber = parsePhoneNumber(value, req.body.country); - - if (!phoneNumber || !phoneNumber.isValid()) { - throw new Error('Phone number is invalid with the given country code.'); - } - return true; - } - - /** - * Reset password schema. - */ - get resetPasswordSchema(): ValidationChain[] { - return [ - check('password') - .exists() - .isLength({ min: 5 }) - .custom((value, { req }) => { - if (value !== req.body.confirm_password) { - throw new Error("Passwords don't match"); - } else { - return value; - } - }), - ]; - } - - /** - * Send reset password validation schema. - */ - get sendResetPasswordSchema(): ValidationChain[] { - return [check('email').exists().isEmail().trim().escape()]; - } - - /** - * Handle user login. - * @param {Request} req - * @param {Response} res - */ - async login(req: Request, res: Response, next: Function): Response { - const userDTO: ILoginDTO = this.matchedBodyData(req); - - try { - const { token, user, tenant } = await this.authService.signIn( - userDTO.crediential, - userDTO.password - ); - return res.status(200).send({ token, user, tenant }); - } catch (error) { - next(error); - } - } - - /** - * Organization register handler. - * @param {Request} req - * @param {Response} res - */ - async register(req: Request, res: Response, next: Function) { - const registerDTO: IRegisterDTO = this.matchedBodyData(req); - - try { - const registeredUser: ISystemUser = await this.authService.register( - registerDTO - ); - - return res.status(200).send({ - type: 'success', - code: 'REGISTER.SUCCESS', - message: 'Register organization has been success.', - }); - } catch (error) { - next(error); - } - } - - /** - * Send reset password handler - * @param {Request} req - * @param {Response} res - */ - async sendResetPassword(req: Request, res: Response, next: Function) { - const { email } = this.matchedBodyData(req); - - try { - await this.authService.sendResetPassword(email); - - return res.status(200).send({ - code: 'SEND_RESET_PASSWORD_SUCCESS', - message: 'The reset password message has been sent successfully.', - }); - } catch (error) { - if (error instanceof ServiceError) { - } - next(error); - } - } - - /** - * Reset password handler - * @param {Request} req - * @param {Response} res - */ - async resetPassword(req: Request, res: Response, next: Function) { - const { token } = req.params; - const { password } = req.body; - - try { - await this.authService.resetPassword(token, password); - - return res.status(200).send({ - type: 'RESET_PASSWORD_SUCCESS', - message: 'The password has been reset successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Handles the service errors. - */ - handlerErrors(error, req: Request, res: Response, next: Function) { - if (error instanceof ServiceError) { - if ( - ['INVALID_DETAILS', 'invalid_password'].indexOf(error.errorType) !== -1 - ) { - return res.boom.badRequest(null, { - errors: [{ type: 'INVALID_DETAILS', code: 100 }], - }); - } - if (error.errorType === 'USER_INACTIVE') { - return res.boom.badRequest(null, { - errors: [{ type: 'USER_INACTIVE', code: 200 }], - }); - } - if ( - error.errorType === 'TOKEN_INVALID' || - error.errorType === 'TOKEN_EXPIRED' - ) { - return res.boom.badRequest(null, { - errors: [{ type: 'TOKEN_INVALID', code: 300 }], - }); - } - if (error.errorType === 'USER_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'USER_NOT_FOUND', code: 400 }], - }); - } - if (error.errorType === 'EMAIL_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'EMAIL.NOT.REGISTERED', code: 500 }], - }); - } - } - if (error instanceof ServiceErrors) { - const errorReasons = []; - - if (error.hasType('PHONE_NUMBER_EXISTS')) { - errorReasons.push({ type: 'PHONE_NUMBER_EXISTS', code: 100 }); - } - if (error.hasType('EMAIL_EXISTS')) { - errorReasons.push({ type: 'EMAIL.EXISTS', code: 200 }); - } - if (errorReasons.length > 0) { - return res.boom.badRequest(null, { errors: errorReasons }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/BaseController.ts b/server/src/api/controllers/BaseController.ts deleted file mode 100644 index d67d8c15a..000000000 --- a/server/src/api/controllers/BaseController.ts +++ /dev/null @@ -1,140 +0,0 @@ -import { Response, Request, NextFunction } from 'express'; -import { matchedData, validationResult } from 'express-validator'; -import accepts from 'accepts'; -import { isArray, drop, first, camelCase, snakeCase, omit, set, get } from 'lodash'; -import { mapKeysDeep } from 'utils'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; - -export default class BaseController { - /** - * Converts plain object keys to cameCase style. - * @param {Object} data - */ - protected dataToCamelCase(data) { - return mapKeysDeep(data, (v, k) => camelCase(k)); - } - - /** - * Matches the body data from validation schema. - * @param {Request} req - * @param options - */ - protected matchedBodyData(req: Request, options: any = {}) { - const data = matchedData(req, { - locations: ['body'], - includeOptionals: true, - ...omit(options, ['locations']), // override any propery except locations. - }); - return this.dataToCamelCase(data); - } - - /** - * Matches the query data from validation schema. - * @param {Request} req - */ - protected matchedQueryData(req: Request) { - const data = matchedData(req, { - locations: ['query'], - }); - return this.dataToCamelCase(data); - } - - /** - * Validate validation schema middleware. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - protected validationResult(req: Request, res: Response, next: NextFunction) { - const validationErrors = validationResult(req); - - if (!validationErrors.isEmpty()) { - return res.boom.badData(null, { - code: 'validation_error', - ...validationErrors, - }); - } - next(); - } - - /** - * Sets localization to response object by the given path. - * @param {Response} response - - * @param {string} path - - * @param {Request} req - - */ - private setLocalizationByPath( - response: any, - path: string, - req: Request, - ) { - const DOT = '.'; - - if (isArray(response)) { - response.forEach((va) => { - const currentPath = first(path.split(DOT)); - const value = get(va, currentPath); - - if (isArray(value)) { - const nextPath = drop(path.split(DOT)).join(DOT); - this.setLocalizationByPath(value, nextPath, req); - } else { - set(va, path, req.__(value)); - } - }) - } else { - const value = get(response, path); - set(response, path, req.__(value)); - } - } - - /** - * Transform the given data to response. - * @param {any} data - */ - protected transfromToResponse( - data: any, - translatable?: string | string[], - req?: Request - ) { - const response = mapKeysDeep(data, (v, k) => snakeCase(k)); - - if (translatable) { - const translatables = Array.isArray(translatable) - ? translatable - : [translatable]; - - translatables.forEach((path) => { - this.setLocalizationByPath(response, path, req); - }); - } - return response; - } - - /** - * Async middleware. - * @param {function} callback - */ - protected asyncMiddleware(callback) { - return asyncMiddleware(callback); - } - - /** - * - * @param {Request} req - * @returns - */ - protected accepts(req) { - return accepts(req); - } - - /** - * - * @param {Request} req - * @param {string[]} types - * @returns {string} - */ - protected acceptTypes(req: Request, types: string[]) { - return this.accepts(req).types(types); - } -} diff --git a/server/src/api/controllers/Contacts/Contacts.ts b/server/src/api/controllers/Contacts/Contacts.ts deleted file mode 100644 index 26749902f..000000000 --- a/server/src/api/controllers/Contacts/Contacts.ts +++ /dev/null @@ -1,396 +0,0 @@ -import { check, param, query, body, ValidationChain } from 'express-validator'; -import { Router, Request, Response, NextFunction } from 'express'; -import { Inject, Service } from 'typedi'; -import { ServiceError } from 'exceptions'; -import BaseController from 'api/controllers/BaseController'; -import ContactsService from 'services/Contacts/ContactsService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { DATATYPES_LENGTH } from 'data/DataTypes'; - -@Service() -export default class ContactsController extends BaseController { - @Inject() - contactsService: ContactsService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Express router. - */ - router() { - const router = Router(); - - router.get( - '/auto-complete', - [...this.autocompleteQuerySchema], - this.validationResult, - this.asyncMiddleware(this.autocompleteContacts.bind(this)), - this.dynamicListService.handlerErrorsToResponse - ); - router.get( - '/:id', - [param('id').exists().isNumeric().toInt()], - this.validationResult, - this.asyncMiddleware(this.getContact.bind(this)) - ); - router.post( - '/:id/inactivate', - [param('id').exists().isNumeric().toInt()], - this.validationResult, - this.asyncMiddleware(this.inactivateContact.bind(this)), - this.handlerServiceErrors - ); - router.post( - '/:id/activate', - [param('id').exists().isNumeric().toInt()], - this.validationResult, - this.asyncMiddleware(this.activateContact.bind(this)), - this.handlerServiceErrors - ); - return router; - } - - /** - * Auto-complete list query validation schema. - */ - get autocompleteQuerySchema() { - return [ - query('column_sort_by').optional().trim().escape(), - query('sort_order').optional().isIn(['desc', 'asc']), - - query('stringified_filter_roles').optional().isJSON(), - query('limit').optional().isNumeric().toInt(), - ]; - } - - /** - * Retrieve details of the given contact. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async getContact(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: contactId } = req.params; - - try { - const contact = await this.contactsService.getContact( - tenantId, - contactId, - ); - return res.status(200).send({ - customer: this.transfromToResponse(contact), - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve auto-complete contacts list. - * @param {Request} req - Request object. - * @param {Response} res - Response object. - * @param {NextFunction} next - */ - async autocompleteContacts(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = { - filterRoles: [], - sortOrder: 'asc', - columnSortBy: 'display_name', - limit: 10, - ...this.matchedQueryData(req), - }; - try { - const contacts = await this.contactsService.autocompleteContacts( - tenantId, - filter - ); - return res.status(200).send({ contacts }); - } catch (error) { - next(error); - } - } - - /** - * @returns {ValidationChain[]} - */ - get contactDTOSchema(): ValidationChain[] { - return [ - check('salutation') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('first_name') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('last_name') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('company_name') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - - check('display_name') - .exists() - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - - check('email') - .optional({ nullable: true }) - .isString() - .normalizeEmail() - .isEmail() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('website') - .optional({ nullable: true }) - .isString() - .trim() - .isURL() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('work_phone') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('personal_phone') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - - check('billing_address_1') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('billing_address_2') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('billing_address_city') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('billing_address_country') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('billing_address_email') - .optional({ nullable: true }) - .isString() - .isEmail() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('billing_address_postcode') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('billing_address_phone') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('billing_address_state') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - - check('shipping_address_1') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('shipping_address_2') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('shipping_address_city') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('shipping_address_country') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('shipping_address_email') - .optional({ nullable: true }) - .isString() - .isEmail() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('shipping_address_postcode') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('shipping_address_phone') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('shipping_address_state') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - - check('note') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.TEXT }), - check('active').optional().isBoolean().toBoolean(), - ]; - } - - /** - * Contact new DTO schema. - * @returns {ValidationChain[]} - */ - get contactNewDTOSchema(): ValidationChain[] { - return [ - check('opening_balance') - .optional({ nullable: true }) - .isInt({ min: 0, max: DATATYPES_LENGTH.DECIMAL_13_3 }) - .toInt(), - body('opening_balance_at') - .if(body('opening_balance').exists()) - .exists() - .isISO8601(), - ]; - } - - /** - * Contact edit DTO schema. - * @returns {ValidationChain[]} - */ - get contactEditDTOSchema(): ValidationChain[] { - return []; - } - - /** - * @returns {ValidationChain[]} - */ - get specificContactSchema(): ValidationChain[] { - return [param('id').exists().isNumeric().toInt()]; - } - - /** - * Activates the given contact. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async activateContact(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: contactId } = req.params; - - try { - await this.contactsService.activateContact(tenantId, contactId); - - return res.status(200).send({ - id: contactId, - message: 'The given contact activated successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Inactivate the given contact. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async inactivateContact(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: contactId } = req.params; - - try { - await this.contactsService.inactivateContact(tenantId, contactId); - - return res.status(200).send({ - id: contactId, - message: 'The given contact inactivated successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private handlerServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'contact_not_found') { - return res.boom.badRequest(null, { - errors: [{ type: 'CONTACT.NOT.FOUND', code: 100 }], - }); - } - if (error.errorType === 'CONTACT_ALREADY_ACTIVE') { - return res.boom.badRequest(null, { - errors: [{ type: 'CONTACT_ALREADY_ACTIVE', code: 700 }], - }); - } - if (error.errorType === 'CONTACT_ALREADY_INACTIVE') { - return res.boom.badRequest(null, { - errors: [{ type: 'CONTACT_ALREADY_INACTIVE', code: 800 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Contacts/Customers.ts b/server/src/api/controllers/Contacts/Customers.ts deleted file mode 100644 index 5cca6859f..000000000 --- a/server/src/api/controllers/Contacts/Customers.ts +++ /dev/null @@ -1,334 +0,0 @@ -import { Request, Response, Router, NextFunction } from 'express'; -import { Service, Inject } from 'typedi'; -import { check, query } from 'express-validator'; -import ContactsController from 'api/controllers/Contacts/Contacts'; -import CustomersService from 'services/Contacts/CustomersService'; -import { ServiceError } from 'exceptions'; -import { ICustomerNewDTO, ICustomerEditDTO } from 'interfaces'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; - -@Service() -export default class CustomersController extends ContactsController { - @Inject() - customersService: CustomersService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Express router. - */ - router() { - const router = Router(); - - router.post( - '/', - [ - ...this.contactDTOSchema, - ...this.contactNewDTOSchema, - ...this.customerDTOSchema, - ...this.createCustomerDTOSchema, - ], - this.validationResult, - asyncMiddleware(this.newCustomer.bind(this)), - this.handlerServiceErrors - ); - router.post( - '/:id/opening_balance', - [ - ...this.specificContactSchema, - check('opening_balance').exists().isNumeric().toFloat(), - check('opening_balance_at').optional().isISO8601(), - ], - this.validationResult, - asyncMiddleware(this.editOpeningBalanceCustomer.bind(this)), - this.handlerServiceErrors - ); - router.post( - '/:id', - [ - ...this.contactDTOSchema, - ...this.contactEditDTOSchema, - ...this.customerDTOSchema, - ], - this.validationResult, - asyncMiddleware(this.editCustomer.bind(this)), - this.handlerServiceErrors - ); - router.delete( - '/:id', - [...this.specificContactSchema], - this.validationResult, - asyncMiddleware(this.deleteCustomer.bind(this)), - this.handlerServiceErrors - ); - router.get( - '/', - [...this.validateListQuerySchema], - this.validationResult, - asyncMiddleware(this.getCustomersList.bind(this)), - this.dynamicListService.handlerErrorsToResponse - ); - router.get( - '/:id', - [...this.specificContactSchema], - this.validationResult, - asyncMiddleware(this.getCustomer.bind(this)), - this.handlerServiceErrors - ); - return router; - } - - /** - * Customer DTO schema. - */ - get customerDTOSchema() { - return [ - check('customer_type') - .exists() - .isIn(['business', 'individual']) - .trim() - .escape(), - ]; - } - - /** - * Create customer DTO schema. - */ - get createCustomerDTOSchema() { - return [ - check('currency_code') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: 3 }), - ]; - } - - /** - * List param query schema. - */ - get validateListQuerySchema() { - return [ - query('column_sort_by').optional().trim().escape(), - query('sort_order').optional().isIn(['desc', 'asc']), - - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - - query('view_slug').optional().isString().trim(), - query('stringified_filter_roles').optional().isJSON(), - - query('inactive_mode').optional().isBoolean().toBoolean(), - query('search_keyword').optional({ nullable: true }).isString().trim() - ]; - } - - /** - * Creates a new customer. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async newCustomer(req: Request, res: Response, next: NextFunction) { - const contactDTO: ICustomerNewDTO = this.matchedBodyData(req); - const { tenantId, user } = req; - - try { - const contact = await this.customersService.newCustomer( - tenantId, - contactDTO, - user - ); - - return res.status(200).send({ - id: contact.id, - message: 'The customer has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edits the given customer details. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async editCustomer(req: Request, res: Response, next: NextFunction) { - const contactDTO: ICustomerEditDTO = this.matchedBodyData(req); - const { tenantId, user } = req; - const { id: contactId } = req.params; - - try { - await this.customersService.editCustomer( - tenantId, - contactId, - contactDTO, - user - ); - - return res.status(200).send({ - id: contactId, - message: 'The customer has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Changes the opening balance of the given customer. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async editOpeningBalanceCustomer( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId, user } = req; - const { id: customerId } = req.params; - const { openingBalance, openingBalanceAt } = this.matchedBodyData(req); - - try { - await this.customersService.changeOpeningBalance( - tenantId, - customerId, - openingBalance, - openingBalanceAt - ); - return res.status(200).send({ - id: customerId, - message: - 'The opening balance of the given customer has been changed successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve details of the given customer id. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getCustomer(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: contactId } = req.params; - - try { - const customer = await this.customersService.getCustomer( - tenantId, - contactId, - user - ); - - return res.status(200).send({ - customer: this.transfromToResponse(customer), - }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the given customer from the storage. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async deleteCustomer(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: contactId } = req.params; - - try { - await this.customersService.deleteCustomer(tenantId, contactId, user); - - return res.status(200).send({ - id: contactId, - message: 'The customer has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve customers paginated and filterable list. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getCustomersList(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - - const filter = { - inactiveMode: false, - sortOrder: 'asc', - columnSortBy: 'created_at', - page: 1, - pageSize: 12, - ...this.matchedQueryData(req), - }; - - try { - const { - customers, - pagination, - filterMeta, - } = await this.customersService.getCustomersList(tenantId, filter); - - return res.status(200).send({ - customers: this.transfromToResponse(customers), - pagination: this.transfromToResponse(pagination), - filter_meta: this.transfromToResponse(filterMeta), - }); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - handlerServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'contact_not_found') { - return res.boom.badRequest(null, { - errors: [{ type: 'CUSTOMER.NOT.FOUND', code: 100 }], - }); - } - if (error.errorType === 'contacts_not_found') { - return res.boom.badRequest(null, { - errors: [{ type: 'CUSTOMERS.NOT.FOUND', code: 200 }], - }); - } - if (error.errorType === 'OPENING_BALANCE_DATE_REQUIRED') { - return res.boom.badRequest(null, { - errors: [{ type: 'OPENING_BALANCE_DATE_REQUIRED', code: 500 }], - }); - } - if (error.errorType === 'CUSTOMER_HAS_TRANSACTIONS') { - return res.boom.badRequest(null, { - errors: [{ type: 'CUSTOMER_HAS_TRANSACTIONS', code: 600 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Contacts/Vendors.ts b/server/src/api/controllers/Contacts/Vendors.ts deleted file mode 100644 index 3039b5fd4..000000000 --- a/server/src/api/controllers/Contacts/Vendors.ts +++ /dev/null @@ -1,307 +0,0 @@ -import { Request, Response, Router, NextFunction } from 'express'; -import { Service, Inject } from 'typedi'; -import { body, query, ValidationChain, check } from 'express-validator'; - -import ContactsController from 'api/controllers/Contacts/Contacts'; -import VendorsService from 'services/Contacts/VendorsService'; -import { ServiceError } from 'exceptions'; -import { IVendorNewDTO, IVendorEditDTO, IVendorsFilter } from 'interfaces'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; - -@Service() -export default class VendorsController extends ContactsController { - @Inject() - vendorsService: VendorsService; - - /** - * Express router. - */ - router() { - const router = Router(); - - router.post( - '/', - [ - ...this.contactDTOSchema, - ...this.contactNewDTOSchema, - ...this.vendorDTOSchema, - ], - this.validationResult, - asyncMiddleware(this.newVendor.bind(this)), - this.handlerServiceErrors - ); - router.post( - '/:id/opening_balance', - [ - ...this.specificContactSchema, - check('opening_balance').exists().isNumeric().toFloat(), - check('opening_balance_at').optional().isISO8601(), - ], - this.validationResult, - asyncMiddleware(this.editOpeningBalanceVendor.bind(this)), - this.handlerServiceErrors - ); - router.post( - '/:id', - [ - ...this.contactDTOSchema, - ...this.contactEditDTOSchema, - ...this.vendorDTOSchema, - ], - this.validationResult, - asyncMiddleware(this.editVendor.bind(this)), - this.handlerServiceErrors - ); - router.delete( - '/:id', - [...this.specificContactSchema], - this.validationResult, - asyncMiddleware(this.deleteVendor.bind(this)), - this.handlerServiceErrors - ); - router.get( - '/:id', - [...this.specificContactSchema], - this.validationResult, - asyncMiddleware(this.getVendor.bind(this)), - this.handlerServiceErrors - ); - router.get( - '/', - [...this.vendorsListSchema], - this.validationResult, - asyncMiddleware(this.getVendorsList.bind(this)) - ); - return router; - } - - /** - * Vendor DTO schema. - * @returns {ValidationChain[]} - */ - get vendorDTOSchema(): ValidationChain[] { - return [ - check('currency_code') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ min: 3, max: 3 }), - ]; - } - - /** - * Vendors datatable list validation schema. - * @returns {ValidationChain[]} - */ - get vendorsListSchema() { - return [ - query('view_slug').optional().isString().trim(), - query('stringified_filter_roles').optional().isJSON(), - - query('column_sort_by').optional(), - query('sort_order').optional().isIn(['desc', 'asc']), - - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - - query('inactive_mode').optional().isBoolean().toBoolean(), - query('search_keyword').optional({ nullable: true }).isString().trim(), - ]; - } - - /** - * Creates a new vendor. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async newVendor(req: Request, res: Response, next: NextFunction) { - const contactDTO: IVendorNewDTO = this.matchedBodyData(req); - const { tenantId, user } = req; - - try { - const vendor = await this.vendorsService.newVendor( - tenantId, - contactDTO, - user - ); - - return res.status(200).send({ - id: vendor.id, - message: 'The vendor has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edits the given vendor details. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async editVendor(req: Request, res: Response, next: NextFunction) { - const contactDTO: IVendorEditDTO = this.matchedBodyData(req); - const { tenantId, user } = req; - const { id: contactId } = req.params; - - try { - await this.vendorsService.editVendor( - tenantId, - contactId, - contactDTO, - user - ); - - return res.status(200).send({ - id: contactId, - message: 'The vendor has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Changes the opening balance of the given vendor. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async editOpeningBalanceVendor( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId, user } = req; - const { id: vendorId } = req.params; - const { openingBalance, openingBalanceAt } = this.matchedBodyData(req); - - try { - await this.vendorsService.changeOpeningBalance( - tenantId, - vendorId, - openingBalance, - openingBalanceAt - ); - return res.status(200).send({ - id: vendorId, - message: - 'The opening balance of the given vendor has been changed successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the given vendor from the storage. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async deleteVendor(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: contactId } = req.params; - - try { - await this.vendorsService.deleteVendor(tenantId, contactId, user); - - return res.status(200).send({ - id: contactId, - message: 'The vendor has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve details of the given vendor id. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getVendor(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: vendorId } = req.params; - - try { - const vendor = await this.vendorsService.getVendor( - tenantId, - vendorId, - user - ); - return res.status(200).send(this.transfromToResponse({ vendor })); - } catch (error) { - next(error); - } - } - - /** - * Retrieve vendors datatable list. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getVendorsList(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - - const vendorsFilter: IVendorsFilter = { - inactiveMode: false, - sortOrder: 'asc', - columnSortBy: 'created_at', - page: 1, - pageSize: 12, - ...this.matchedQueryData(req), - }; - - try { - const { vendors, pagination, filterMeta } = - await this.vendorsService.getVendorsList(tenantId, vendorsFilter); - - return res.status(200).send({ - vendors: this.transfromToResponse(vendors), - pagination: this.transfromToResponse(pagination), - filter_meta: this.transfromToResponse(filterMeta), - }); - } catch (error) { - next(error); - } - } - - /** - * Handle service errors. - * @param {Error} error - - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - handlerServiceErrors(error, req: Request, res: Response, next: NextFunction) { - if (error instanceof ServiceError) { - if (error.errorType === 'contact_not_found') { - return res.boom.badRequest(null, { - errors: [{ type: 'VENDOR.NOT.FOUND', code: 100 }], - }); - } - if (error.errorType === 'contacts_not_found') { - return res.boom.badRequest(null, { - errors: [{ type: 'VENDORS.NOT.FOUND', code: 200 }], - }); - } - if (error.errorType === 'OPENING_BALANCE_DATE_REQUIRED') { - return res.boom.badRequest(null, { - errors: [{ type: 'OPENING_BALANCE_DATE_REQUIRED', code: 500 }], - }); - } - if (error.errorType === 'VENDOR_HAS_TRANSACTIONS') { - return res.boom.badRequest(null, { - errors: [{ type: 'VENDOR_HAS_TRANSACTIONS', code: 600 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Currencies.ts b/server/src/api/controllers/Currencies.ts deleted file mode 100644 index f878ceea7..000000000 --- a/server/src/api/controllers/Currencies.ts +++ /dev/null @@ -1,211 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { check, param, query, ValidationChain } from 'express-validator'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseController from './BaseController'; -import CurrenciesService from 'services/Currencies/CurrenciesService'; -import { Inject, Service } from 'typedi'; -import { ServiceError } from 'exceptions'; - -@Service() -export default class CurrenciesController extends BaseController { - @Inject() - currenciesService: CurrenciesService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - [...this.listSchema], - this.validationResult, - asyncMiddleware(this.all.bind(this)) - ); - router.post( - '/', - [...this.currencyDTOSchemaValidation], - this.validationResult, - asyncMiddleware(this.newCurrency.bind(this)), - this.handlerServiceError - ); - router.post( - '/:id', - [...this.currencyIdParamSchema, ...this.currencyEditDTOSchemaValidation], - this.validationResult, - asyncMiddleware(this.editCurrency.bind(this)), - this.handlerServiceError - ); - router.delete( - '/:currency_code', - [...this.currencyParamSchema], - this.validationResult, - asyncMiddleware(this.deleteCurrency.bind(this)), - this.handlerServiceError - ); - return router; - } - - get currencyDTOSchemaValidation(): ValidationChain[] { - return [ - check('currency_name').exists().trim(), - check('currency_code').exists().trim(), - check('currency_sign').exists().trim(), - ]; - } - - get currencyEditDTOSchemaValidation(): ValidationChain[] { - return [ - check('currency_name').exists().trim(), - check('currency_sign').exists().trim(), - ]; - } - - get currencyIdParamSchema(): ValidationChain[] { - return [param('id').exists().isNumeric().toInt()]; - } - - get currencyParamSchema(): ValidationChain[] { - return [param('currency_code').exists().trim().escape()]; - } - - get listSchema(): ValidationChain[] { - return [ - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - ]; - } - - /** - * Retrieve all registered currency details. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async all(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - - try { - const currencies = await this.currenciesService.listCurrencies(tenantId); - - return res.status(200).send({ - currencies: this.transfromToResponse(currencies), - }); - } catch (error) { - next(error); - } - } - - /** - * Creates a new currency on the storage. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async newCurrency(req: Request, res: Response, next: Function) { - const { tenantId } = req; - const currencyDTO = this.matchedBodyData(req); - - try { - await this.currenciesService.newCurrency(tenantId, currencyDTO); - - return res.status(200).send({ - currency_code: currencyDTO.currencyCode, - message: 'The currency has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edits details of the given currency. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async deleteCurrency(req: Request, res: Response, next: Function) { - const { tenantId } = req; - const { currency_code: currencyCode } = req.params; - - try { - await this.currenciesService.deleteCurrency(tenantId, currencyCode); - return res.status(200).send({ - currency_code: currencyCode, - message: 'The currency has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the currency. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async editCurrency(req: Request, res: Response, next: Function) { - const { tenantId } = req; - const { id: currencyId } = req.params; - const editCurrencyDTO = this.matchedBodyData(req); - - try { - const currency = await this.currenciesService.editCurrency( - tenantId, - currencyId, - editCurrencyDTO - ); - return res.status(200).send({ - currency_code: currency.currencyCode, - message: 'The currency has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Handles currencies service error. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - handlerServiceError( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'currency_not_found') { - return res.boom.badRequest(null, { - errors: [{ type: 'CURRENCY_NOT_FOUND', code: 100 }], - }); - } - if (error.errorType === 'currency_code_exists') { - return res.boom.badRequest(null, { - errors: [{ - type: 'CURRENCY_CODE_EXISTS', - message: 'The given currency code is already exists.', - code: 200, - }], - }); - } - if (error.errorType === 'CANNOT_DELETE_BASE_CURRENCY') { - return res.boom.badRequest(null, { - errors: [ - { - type: 'CANNOT_DELETE_BASE_CURRENCY', - code: 300, - message: 'Cannot delete the base currency.', - }, - ], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/ExchangeRates.ts b/server/src/api/controllers/ExchangeRates.ts deleted file mode 100644 index 157f1cfca..000000000 --- a/server/src/api/controllers/ExchangeRates.ts +++ /dev/null @@ -1,220 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { Router, Request, Response, NextFunction } from 'express'; -import { check, param, query } from 'express-validator'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseController from './BaseController'; -import { ServiceError } from 'exceptions'; -import ExchangeRatesService from 'services/ExchangeRates/ExchangeRatesService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; - -@Service() -export default class ExchangeRatesController extends BaseController { - @Inject() - exchangeRatesService: ExchangeRatesService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Constructor method. - */ - router() { - const router = Router(); - - router.get( - '/', - [...this.exchangeRatesListSchema], - this.validationResult, - asyncMiddleware(this.exchangeRates.bind(this)), - this.dynamicListService.handlerErrorsToResponse, - this.handleServiceError, - ); - router.post( - '/', - [...this.exchangeRateDTOSchema], - this.validationResult, - asyncMiddleware(this.addExchangeRate.bind(this)), - this.handleServiceError - ); - router.post( - '/:id', - [...this.exchangeRateEditDTOSchema, ...this.exchangeRateIdSchema], - this.validationResult, - asyncMiddleware(this.editExchangeRate.bind(this)), - this.handleServiceError - ); - router.delete( - '/:id', - [...this.exchangeRateIdSchema], - this.validationResult, - asyncMiddleware(this.deleteExchangeRate.bind(this)), - this.handleServiceError - ); - return router; - } - - get exchangeRatesListSchema() { - return [ - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - - query('column_sort_by').optional(), - query('sort_order').optional().isIn(['desc', 'asc']), - ]; - } - - get exchangeRateDTOSchema() { - return [ - check('exchange_rate').exists().isNumeric().toFloat(), - check('currency_code').exists().trim().escape(), - check('date').exists().isISO8601(), - ]; - } - - get exchangeRateEditDTOSchema() { - return [check('exchange_rate').exists().isNumeric().toFloat()]; - } - - get exchangeRateIdSchema() { - return [param('id').isNumeric().toInt()]; - } - - get exchangeRatesIdsSchema() { - return [ - query('ids').isArray({ min: 2 }), - query('ids.*').isNumeric().toInt(), - ]; - } - - /** - * Retrieve exchange rates. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async exchangeRates(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = { - page: 1, - pageSize: 12, - filterRoles: [], - columnSortBy: 'created_at', - sortOrder: 'asc', - ...this.matchedQueryData(req), - }; - if (filter.stringifiedFilterRoles) { - filter.filterRoles = JSON.parse(filter.stringifiedFilterRoles); - } - try { - const exchangeRates = await this.exchangeRatesService.listExchangeRates( - tenantId, - filter - ); - return res.status(200).send({ exchange_rates: exchangeRates }); - } catch (error) { - next(error); - } - } - - /** - * Adds a new exchange rate on the given date. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async addExchangeRate(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const exchangeRateDTO = this.matchedBodyData(req); - - try { - const exchangeRate = await this.exchangeRatesService.newExchangeRate( - tenantId, - exchangeRateDTO - ); - return res.status(200).send({ id: exchangeRate.id }); - } catch (error) { - next(error); - } - } - - /** - * Edit the given exchange rate. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async editExchangeRate(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: exchangeRateId } = req.params; - const exchangeRateDTO = this.matchedBodyData(req); - - try { - const exchangeRate = await this.exchangeRatesService.editExchangeRate( - tenantId, - exchangeRateId, - exchangeRateDTO - ); - - return res.status(200).send({ - id: exchangeRateId, - message: 'The exchange rate has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Delete the given exchange rate from the storage. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async deleteExchangeRate(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: exchangeRateId } = req.params; - - try { - await this.exchangeRatesService.deleteExchangeRate( - tenantId, - exchangeRateId - ); - return res.status(200).send({ id: exchangeRateId }); - } catch (error) { - next(error); - } - } - - /** - * Handle service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - handleServiceError( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'EXCHANGE_RATE_NOT_FOUND') { - return res.status(404).send({ - errors: [{ type: 'EXCHANGE.RATE.NOT.FOUND', code: 200 }], - }); - } - if (error.errorType === 'NOT_FOUND_EXCHANGE_RATES') { - return res.status(400).send({ - errors: [{ type: 'EXCHANGE.RATES.IS.NOT.FOUND', code: 100 }], - }); - } - if (error.errorType === 'EXCHANGE_RATE_PERIOD_EXISTS') { - return res.status(400).send({ - errors: [{ type: 'EXCHANGE.RATE.PERIOD.EXISTS', code: 300 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Expenses.ts b/server/src/api/controllers/Expenses.ts deleted file mode 100644 index 7d81a1107..000000000 --- a/server/src/api/controllers/Expenses.ts +++ /dev/null @@ -1,422 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { check, param, query } from 'express-validator'; -import { Router, Request, Response, NextFunction } from 'express'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseController from 'api/controllers/BaseController'; -import ExpensesService from 'services/Expenses/ExpensesService'; -import { IExpenseDTO } from 'interfaces'; -import { ServiceError } from 'exceptions'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { DATATYPES_LENGTH } from 'data/DataTypes'; -import HasItemEntries from 'services/Sales/HasItemsEntries'; - -@Service() -export default class ExpensesController extends BaseController { - @Inject() - expensesService: ExpensesService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Express router. - */ - router() { - const router = Router(); - - router.post( - '/', - [...this.expenseDTOSchema], - this.validationResult, - asyncMiddleware(this.newExpense.bind(this)), - this.catchServiceErrors - ); - router.post( - '/:id/publish', - [...this.expenseParamSchema], - this.validationResult, - asyncMiddleware(this.publishExpense.bind(this)), - this.catchServiceErrors - ); - router.post( - '/:id', - [...this.editExpenseDTOSchema, ...this.expenseParamSchema], - this.validationResult, - asyncMiddleware(this.editExpense.bind(this)), - this.catchServiceErrors - ); - router.delete( - '/:id', - [...this.expenseParamSchema], - this.validationResult, - asyncMiddleware(this.deleteExpense.bind(this)), - this.catchServiceErrors - ); - router.get( - '/', - [...this.expensesListSchema], - this.validationResult, - asyncMiddleware(this.getExpensesList.bind(this)), - this.dynamicListService.handlerErrorsToResponse, - this.catchServiceErrors - ); - router.get( - '/:id', - [this.expenseParamSchema], - this.validationResult, - asyncMiddleware(this.getExpense.bind(this)), - this.catchServiceErrors - ); - return router; - } - - /** - * Expense DTO schema. - */ - get expenseDTOSchema() { - return [ - check('reference_no') - .optional({ nullable: true }) - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('payment_date').exists().isISO8601(), - check('payment_account_id') - .exists() - .isInt({ max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('description') - .optional({ nullable: true }) - .isString() - .isLength({ max: DATATYPES_LENGTH.TEXT }), - check('currency_code').optional().isString().isLength({ max: 3 }), - check('exchange_rate').optional({ nullable: true }).isNumeric().toFloat(), - check('publish').optional().isBoolean().toBoolean(), - check('payee_id').optional({ nullable: true }).isNumeric().toInt(), - - check('categories').exists().isArray({ min: 1 }), - check('categories.*.index') - .exists() - .isInt({ max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('categories.*.expense_account_id') - .exists() - .isInt({ max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('categories.*.amount') - .optional({ nullable: true }) - .isFloat({ max: DATATYPES_LENGTH.DECIMAL_13_3 }) // 13, 3 - .toFloat(), - check('categories.*.description') - .optional() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('categories.*.landed_cost').optional().isBoolean().toBoolean(), - ]; - } - - /** - * Edit expense validation schema. - */ - get editExpenseDTOSchema() { - return [ - check('reference_no') - .optional({ nullable: true }) - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('payment_date').exists().isISO8601(), - check('payment_account_id') - .exists() - .isInt({ max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('description') - .optional({ nullable: true }) - .isString() - .isLength({ max: DATATYPES_LENGTH.TEXT }), - check('currency_code').optional().isString().isLength({ max: 3 }), - check('exchange_rate').optional({ nullable: true }).isNumeric().toFloat(), - check('publish').optional().isBoolean().toBoolean(), - check('payee_id').optional({ nullable: true }).isNumeric().toInt(), - - check('categories').exists().isArray({ min: 1 }), - check('categories.*.id').optional().isNumeric().toInt(), - check('categories.*.index') - .exists() - .isInt({ max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('categories.*.expense_account_id') - .exists() - .isInt({ max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('categories.*.amount') - .optional({ nullable: true }) - .isFloat({ max: DATATYPES_LENGTH.DECIMAL_13_3 }) // 13, 3 - .toFloat(), - check('categories.*.description') - .optional() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('categories.*.landed_cost').optional().isBoolean().toBoolean(), - ]; - } - - /** - * Expense param validation schema. - */ - get expenseParamSchema() { - return [param('id').exists().isNumeric().toInt()]; - } - - /** - * Expenses list validation schema. - */ - get expensesListSchema() { - return [ - query('view_slug').optional({ nullable: true }).isString().trim(), - query('stringified_filter_roles').optional().isJSON(), - - query('column_sort_by').optional(), - query('sort_order').optional().isIn(['desc', 'asc']), - - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - - query('search_keyword').optional({ nullable: true }).isString().trim(), - ]; - } - - /** - * Creates a new expense on - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async newExpense(req: Request, res: Response, next: NextFunction) { - const expenseDTO: IExpenseDTO = this.matchedBodyData(req); - const { tenantId, user } = req; - - try { - const expense = await this.expensesService.newExpense( - tenantId, - expenseDTO, - user - ); - return res.status(200).send({ - id: expense.id, - message: 'The expense has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edits details of the given expense. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async editExpense(req: Request, res: Response, next: NextFunction) { - const { id: expenseId } = req.params; - const expenseDTO: IExpenseDTO = this.matchedBodyData(req); - const { tenantId, user } = req; - - try { - await this.expensesService.editExpense( - tenantId, - expenseId, - expenseDTO, - user - ); - return res.status(200).send({ - id: expenseId, - message: 'The expense has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the given expense. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async deleteExpense(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: expenseId } = req.params; - - try { - await this.expensesService.deleteExpense(tenantId, expenseId, user); - - return res.status(200).send({ - id: expenseId, - message: 'The expense has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Publishs the given expense. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async publishExpense(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: expenseId } = req.params; - - try { - await this.expensesService.publishExpense(tenantId, expenseId, user); - - return res.status(200).send({ - id: expenseId, - message: 'The expense has been published successfully', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve expneses list. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getExpensesList(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = { - sortOrder: 'asc', - columnSortBy: 'created_at', - page: 1, - pageSize: 12, - ...this.matchedQueryData(req), - }; - - try { - const { expenses, pagination, filterMeta } = - await this.expensesService.getExpensesList(tenantId, filter); - - return res.status(200).send({ - expenses: this.transfromToResponse(expenses), - pagination: this.transfromToResponse(pagination), - filter_meta: this.transfromToResponse(filterMeta), - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve expense details. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getExpense(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: expenseId } = req.params; - - try { - const expense = await this.expensesService.getExpense( - tenantId, - expenseId - ); - return res.status(200).send(this.transfromToResponse({ expense })); - } catch (error) { - next(error); - } - } - - /** - * Transform service errors to api response errors. - * @param {Response} res - * @param {ServiceError} error - */ - private catchServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'expense_not_found') { - return res.boom.badRequest('Expense not found.', { - errors: [{ type: 'EXPENSE_NOT_FOUND', code: 100 }], - }); - } - if (error.errorType === 'EXPENSES_NOT_FOUND') { - return res.boom.badRequest('Expenses not found.', { - errors: [{ type: 'EXPENSES_NOT_FOUND', code: 110 }], - }); - } - if (error.errorType === 'total_amount_equals_zero') { - return res.boom.badRequest('Expense total should not equal zero.', { - errors: [{ type: 'TOTAL.AMOUNT.EQUALS.ZERO', code: 200 }], - }); - } - if (error.errorType === 'payment_account_not_found') { - return res.boom.badRequest('Payment account not found.', { - errors: [{ type: 'PAYMENT.ACCOUNT.NOT.FOUND', code: 300 }], - }); - } - if (error.errorType === 'some_expenses_not_found') { - return res.boom.badRequest('Some expense accounts not found.', { - errors: [{ type: 'SOME.EXPENSE.ACCOUNTS.NOT.FOUND', code: 400 }], - }); - } - if (error.errorType === 'payment_account_has_invalid_type') { - return res.boom.badRequest('Payment account has invalid type.', { - errors: [{ type: 'PAYMENT.ACCOUNT.HAS.INVALID.TYPE', code: 500 }], - }); - } - if (error.errorType === 'expenses_account_has_invalid_type') { - return res.boom.badRequest(null, { - errors: [{ type: 'EXPENSES.ACCOUNT.HAS.INVALID.TYPE', code: 600 }], - }); - } - if (error.errorType === 'expense_already_published') { - return res.boom.badRequest(null, { - errors: [{ type: 'EXPENSE_ALREADY_PUBLISHED', code: 700 }], - }); - } - if (error.errorType === 'contact_not_found') { - return res.boom.badRequest(null, { - errors: [{ type: 'CONTACT_NOT_FOUND', code: 800 }], - }); - } - if (error.errorType === 'EXPENSE_HAS_ASSOCIATED_LANDED_COST') { - return res.status(400).send({ - errors: [{ type: 'EXPENSE_HAS_ASSOCIATED_LANDED_COST', code: 900 }], - }); - } - if (error.errorType === 'ENTRIES_ALLOCATED_COST_COULD_NOT_DELETED') { - return res.status(400).send({ - errors: [ - { type: 'ENTRIES_ALLOCATED_COST_COULD_NOT_DELETED', code: 1000 }, - ], - }); - } - if ( - error.errorType === 'LOCATED_COST_ENTRIES_SHOULD_BIGGE_THAN_NEW_ENTRIES' - ) { - return res.status(400).send({ - errors: [ - { - type: 'LOCATED_COST_ENTRIES_SHOULD_BIGGE_THAN_NEW_ENTRIES', - code: 1100, - }, - ], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/FinancialStatements.ts b/server/src/api/controllers/FinancialStatements.ts deleted file mode 100644 index 6c3aaf5dc..000000000 --- a/server/src/api/controllers/FinancialStatements.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { Router } from 'express'; -import { Container, Service } from 'typedi'; - -import BalanceSheetController from './FinancialStatements/BalanceSheet'; -import TrialBalanceSheetController from './FinancialStatements/TrialBalanceSheet'; -import GeneralLedgerController from './FinancialStatements/GeneralLedger'; -import JournalSheetController from './FinancialStatements/JournalSheet'; -import ProfitLossController from './FinancialStatements/ProfitLossSheet'; -import ARAgingSummary from './FinancialStatements/ARAgingSummary'; -import APAgingSummary from './FinancialStatements/APAgingSummary'; -import PurchasesByItemsController from './FinancialStatements/PurchasesByItem'; -import SalesByItemsController from './FinancialStatements/SalesByItems'; -import InventoryValuationController from './FinancialStatements/InventoryValuationSheet'; -import CustomerBalanceSummaryController from './FinancialStatements/CustomerBalanceSummary'; -import VendorBalanceSummaryController from './FinancialStatements/VendorBalanceSummary'; -import TransactionsByCustomers from './FinancialStatements/TransactionsByCustomers'; -import TransactionsByVendors from './FinancialStatements/TransactionsByVendors'; -import CashFlowStatementController from './FinancialStatements/CashFlow/CashFlow'; -import InventoryDetailsController from './FinancialStatements/InventoryDetails'; -import TransactionsByReferenceController from './FinancialStatements/TransactionsByReference'; - -@Service() -export default class FinancialStatementsService { - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.use( - '/balance_sheet', - Container.get(BalanceSheetController).router() - ); - router.use( - '/profit_loss_sheet', - Container.get(ProfitLossController).router() - ); - router.use( - '/general_ledger', - Container.get(GeneralLedgerController).router() - ); - router.use( - '/trial_balance_sheet', - Container.get(TrialBalanceSheetController).router() - ); - router.use('/journal', Container.get(JournalSheetController).router()); - router.use( - '/receivable_aging_summary', - Container.get(ARAgingSummary).router() - ); - router.use( - '/payable_aging_summary', - Container.get(APAgingSummary).router() - ); - router.use( - '/purchases-by-items', - Container.get(PurchasesByItemsController).router() - ); - router.use( - '/sales-by-items', - Container.get(SalesByItemsController).router() - ); - router.use( - '/inventory-valuation', - Container.get(InventoryValuationController).router() - ); - router.use( - '/customer-balance-summary', - Container.get(CustomerBalanceSummaryController).router(), - ); - router.use( - '/vendor-balance-summary', - Container.get(VendorBalanceSummaryController).router(), - ); - router.use( - '/transactions-by-customers', - Container.get(TransactionsByCustomers).router(), - ); - router.use( - '/transactions-by-vendors', - Container.get(TransactionsByVendors).router(), - ); - router.use( - '/cash-flow', - Container.get(CashFlowStatementController).router(), - ); - router.use( - '/inventory-item-details', - Container.get(InventoryDetailsController).router(), - ); - router.use( - '/transactions-by-reference', - Container.get(TransactionsByReferenceController).router(), - ) - return router; - } -} diff --git a/server/src/api/controllers/FinancialStatements/APAgingSummary.ts b/server/src/api/controllers/FinancialStatements/APAgingSummary.ts deleted file mode 100644 index f827019fd..000000000 --- a/server/src/api/controllers/FinancialStatements/APAgingSummary.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { query } from 'express-validator'; -import { Inject } from 'typedi'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import APAgingSummaryReportService from 'services/FinancialStatements/AgingSummary/APAgingSummaryService'; -import BaseFinancialReportController from './BaseFinancialReportController'; - -export default class APAgingSummaryReportController extends BaseFinancialReportController { - @Inject() - APAgingSummaryService: APAgingSummaryReportService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - asyncMiddleware(this.payableAgingSummary.bind(this)) - ); - return router; - } - - /** - * Validation schema. - */ - get validationSchema() { - return [ - ...this.sheetNumberFormatValidationSchema, - query('as_date').optional().isISO8601(), - query('aging_days_before').optional().isNumeric().toInt(), - query('aging_periods').optional().isNumeric().toInt(), - query('vendors_ids').optional().isArray({ min: 1 }), - query('vendors_ids.*').isInt({ min: 1 }).toInt(), - query('none_zero').default(true).isBoolean().toBoolean(), - ]; - } - - /** - * Retrieve payable aging summary report. - */ - async payableAgingSummary(req: Request, res: Response, next: NextFunction) { - const { tenantId, settings } = req; - const filter = this.matchedQueryData(req); - - try { - const { - data, - columns, - query, - meta - } = await this.APAgingSummaryService.APAgingSummary(tenantId, filter); - - return res.status(200).send({ - data: this.transfromToResponse(data), - columns: this.transfromToResponse(columns), - query: this.transfromToResponse(query), - meta: this.transfromToResponse(meta) - }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/ARAgingSummary.ts b/server/src/api/controllers/FinancialStatements/ARAgingSummary.ts deleted file mode 100644 index fbf79195c..000000000 --- a/server/src/api/controllers/FinancialStatements/ARAgingSummary.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { Router, Request, Response } from 'express'; -import { query } from 'express-validator'; -import ARAgingSummaryService from 'services/FinancialStatements/AgingSummary/ARAgingSummaryService'; -import BaseFinancialReportController from './BaseFinancialReportController'; - -@Service() -export default class ARAgingSummaryReportController extends BaseFinancialReportController { - @Inject() - ARAgingSummaryService: ARAgingSummaryService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - this.validationResult, - this.asyncMiddleware(this.receivableAgingSummary.bind(this)) - ); - return router; - } - - /** - * AR aging summary validation roles. - */ - get validationSchema() { - return [ - ...this.sheetNumberFormatValidationSchema, - - query('as_date').optional().isISO8601(), - query('aging_days_before').optional().isInt({ max: 500 }).toInt(), - query('aging_periods').optional().isInt({ max: 12 }).toInt(), - query('customers_ids').optional().isArray({ min: 1 }), - query('customers_ids.*').isInt({ min: 1 }).toInt(), - query('none_zero').default(true).isBoolean().toBoolean(), - ]; - } - - /** - * Retrieve AR aging summary report. - */ - async receivableAgingSummary(req: Request, res: Response) { - const { tenantId, settings } = req; - const filter = this.matchedQueryData(req); - - try { - const { - data, - columns, - query, - meta, - } = await this.ARAgingSummaryService.ARAgingSummary(tenantId, filter); - - return res.status(200).send({ - data: this.transfromToResponse(data), - columns: this.transfromToResponse(columns), - query: this.transfromToResponse(query), - meta: this.transfromToResponse(meta), - }); - } catch (error) { - console.log(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/BalanceSheet.ts b/server/src/api/controllers/FinancialStatements/BalanceSheet.ts deleted file mode 100644 index 0d5ca9bec..000000000 --- a/server/src/api/controllers/FinancialStatements/BalanceSheet.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { Router, Request, Response, NextFunction } from 'express'; -import { query, ValidationChain } from 'express-validator'; -import { castArray } from 'lodash'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BalanceSheetStatementService from 'services/FinancialStatements/BalanceSheet/BalanceSheetService'; -import BaseFinancialReportController from './BaseFinancialReportController'; - -@Service() -export default class BalanceSheetStatementController extends BaseFinancialReportController { - @Inject() - balanceSheetService: BalanceSheetStatementService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.balanceSheetValidationSchema, - this.validationResult, - asyncMiddleware(this.balanceSheet.bind(this)) - ); - return router; - } - - /** - * Balance sheet validation schecma. - * @returns {ValidationChain[]} - */ - get balanceSheetValidationSchema(): ValidationChain[] { - return [ - ...this.sheetNumberFormatValidationSchema, - query('accounting_method').optional().isIn(['cash', 'accural']), - query('from_date').optional(), - query('to_date').optional(), - query('display_columns_type').optional().isIn(['date_periods', 'total']), - query('display_columns_by') - .optional({ nullable: true, checkFalsy: true }) - .isIn(['year', 'month', 'week', 'day', 'quarter']), - query('account_ids').isArray().optional(), - query('account_ids.*').isNumeric().toInt(), - query('none_zero').optional().isBoolean().toBoolean(), - query('none_transactions').optional().isBoolean().toBoolean(), - ]; - } - - /** - * Retrieve the balance sheet. - */ - async balanceSheet(req: Request, res: Response, next: NextFunction) { - const { tenantId, settings } = req; - let filter = this.matchedQueryData(req); - - filter = { - ...filter, - accountsIds: castArray(filter.accountsIds), - }; - - try { - const { - data, - columns, - query, - meta, - } = await this.balanceSheetService.balanceSheet(tenantId, filter); - - return res.status(200).send({ - data: this.transfromToResponse(data), - columns: this.transfromToResponse(columns), - query: this.transfromToResponse(query), - meta: this.transfromToResponse(meta), - }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/BaseFinancialReportController.ts b/server/src/api/controllers/FinancialStatements/BaseFinancialReportController.ts deleted file mode 100644 index 7fccd76f1..000000000 --- a/server/src/api/controllers/FinancialStatements/BaseFinancialReportController.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { query } from 'express-validator'; -import BaseController from "../BaseController"; - -export default class BaseFinancialReportController extends BaseController { - - - get sheetNumberFormatValidationSchema() { - return [ - query('number_format.precision') - .optional() - .isInt({ min: 0, max: 5 }) - .toInt(), - query('number_format.divide_on_1000').optional().isBoolean().toBoolean(), - query('number_format.show_zero').optional().isBoolean().toBoolean(), - query('number_format.format_money') - .optional() - .isIn(['total', 'always', 'none']) - .trim(), - query('number_format.negative_format') - .optional() - .isIn(['parentheses', 'mines']) - .trim() - .escape(), - ]; - } -} \ No newline at end of file diff --git a/server/src/api/controllers/FinancialStatements/CashFlow/CashFlow.ts b/server/src/api/controllers/FinancialStatements/CashFlow/CashFlow.ts deleted file mode 100644 index aa0943833..000000000 --- a/server/src/api/controllers/FinancialStatements/CashFlow/CashFlow.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { query } from 'express-validator'; -import { - NextFunction, - Router, - Request, - Response, - ValidationChain, -} from 'express'; -import BaseFinancialReportController from '../BaseFinancialReportController'; -import CashFlowStatementService from 'services/FinancialStatements/CashFlow/CashFlowService'; -import { ICashFlowStatementDOO, ICashFlowStatement } from 'interfaces'; -import CashFlowTable from 'services/FinancialStatements/CashFlow/CashFlowTable'; -import HasTenancyService from 'services/Tenancy/TenancyService'; - -@Service() -export default class CashFlowController extends BaseFinancialReportController { - @Inject() - cashFlowService: CashFlowStatementService; - - @Inject() - tenancy: HasTenancyService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.cashflowValidationSchema, - this.validationResult, - this.asyncMiddleware(this.cashFlow.bind(this)) - ); - return router; - } - - /** - * Balance sheet validation schecma. - * @returns {ValidationChain[]} - */ - get cashflowValidationSchema(): ValidationChain[] { - return [ - ...this.sheetNumberFormatValidationSchema, - query('from_date').optional(), - query('to_date').optional(), - query('display_columns_type').optional().isIn(['date_periods', 'total']), - query('display_columns_by') - .optional({ nullable: true, checkFalsy: true }) - .isIn(['year', 'month', 'week', 'day', 'quarter']), - query('none_zero').optional().isBoolean().toBoolean(), - query('none_transactions').optional().isBoolean().toBoolean(), - ]; - } - - /** - * Retrieve the cashflow statment to json response. - * @param {ICashFlowStatement} cashFlow - - */ - private transformJsonResponse(cashFlowDOO: ICashFlowStatementDOO) { - const { data, query, meta } = cashFlowDOO; - - return { - data: this.transfromToResponse(data), - query: this.transfromToResponse(query), - meta: this.transfromToResponse(meta), - }; - } - - /** - * Transformes the report statement to table rows. - * @param {ITransactionsByVendorsStatement} statement - - */ - private transformToTableRows(cashFlowDOO: ICashFlowStatementDOO, tenantId: number) { - const i18n = this.tenancy.i18n(tenantId); - const cashFlowTable = new CashFlowTable(cashFlowDOO, i18n); - - return { - table: { - data: cashFlowTable.tableRows(), - columns: cashFlowTable.tableColumns(), - }, - query: this.transfromToResponse(cashFlowDOO.query), - meta: this.transfromToResponse(cashFlowDOO.meta), - }; - } - - /** - * Retrieve the cash flow statment. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - * @returns {Response} - */ - async cashFlow(req: Request, res: Response, next: NextFunction) { - const { tenantId, settings } = req; - const filter = { - ...this.matchedQueryData(req), - }; - - try { - const cashFlow = await this.cashFlowService.cashFlow(tenantId, filter); - - const accept = this.accepts(req); - const acceptType = accept.types(['json', 'application/json+table']); - - switch (acceptType) { - case 'application/json+table': - return res.status(200).send(this.transformToTableRows(cashFlow, tenantId)); - case 'json': - default: - return res.status(200).send(this.transformJsonResponse(cashFlow)); - } - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/CustomerBalanceSummary/index.ts b/server/src/api/controllers/FinancialStatements/CustomerBalanceSummary/index.ts deleted file mode 100644 index 99140c25a..000000000 --- a/server/src/api/controllers/FinancialStatements/CustomerBalanceSummary/index.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { query } from 'express-validator'; -import { Inject } from 'typedi'; -import { ICustomerBalanceSummaryStatement } from 'interfaces'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import CustomerBalanceSummary from 'services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryService'; -import BaseFinancialReportController from '../BaseFinancialReportController'; -import CustomerBalanceSummaryTableRows from 'services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryTableRows'; - -export default class CustomerBalanceSummaryReportController extends BaseFinancialReportController { - @Inject() - customerBalanceSummaryService: CustomerBalanceSummary; - - @Inject() - customerBalanceSummaryTableRows: CustomerBalanceSummaryTableRows; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - this.validationResult, - asyncMiddleware(this.customerBalanceSummary.bind(this)) - ); - return router; - } - - /** - * Validation schema. - */ - get validationSchema() { - return [ - ...this.sheetNumberFormatValidationSchema, - - // As date. - query('as_date').optional().isISO8601(), - - // Customers ids. - query('customers_ids').optional().isArray({ min: 1 }), - query('customers_ids.*').exists().isInt().toInt(), - ]; - } - - /** - * Transformes the balance summary statement to table rows. - * @param {ICustomerBalanceSummaryStatement} statement - - */ - private transformToTableRows({ - data, - columns, - }: ICustomerBalanceSummaryStatement) { - return { - table: { - rows: this.customerBalanceSummaryTableRows.tableRowsTransformer(data), - columns: this.transfromToResponse(columns), - }, - query: this.transfromToResponse(query), - }; - } - - /** - * Transformes the balance summary statement to raw json. - * @param {ICustomerBalanceSummaryStatement} customerBalance - - */ - private transformToJsonResponse({ - data, - columns, - query, - }: ICustomerBalanceSummaryStatement) { - return { - data: this.transfromToResponse(data), - columns: this.transfromToResponse(columns), - query: this.transfromToResponse(query), - }; - } - - /** - * Retrieve payable aging summary report. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async customerBalanceSummary( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId, settings } = req; - const filter = this.matchedQueryData(req); - - try { - const customerBalanceSummary = await this.customerBalanceSummaryService.customerBalanceSummary( - tenantId, - filter - ); - - const accept = this.accepts(req); - const acceptType = accept.types(['json', 'application/json+table']); - - switch (acceptType) { - case 'application/json+table': - return res - .status(200) - .send(this.transformToTableRows(customerBalanceSummary)); - case 'application/json': - default: - return res - .status(200) - .send(this.transformToJsonResponse(customerBalanceSummary)); - } - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/GeneralLedger.ts b/server/src/api/controllers/FinancialStatements/GeneralLedger.ts deleted file mode 100644 index ce4ce3e44..000000000 --- a/server/src/api/controllers/FinancialStatements/GeneralLedger.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { query, ValidationChain } from 'express-validator'; -import { Inject, Service } from 'typedi'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import GeneralLedgerService from 'services/FinancialStatements/GeneralLedger/GeneralLedgerService'; -import BaseFinancialReportController from './BaseFinancialReportController'; - -@Service() -export default class GeneralLedgerReportController extends BaseFinancialReportController { - @Inject() - generalLedgetService: GeneralLedgerService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - this.validationResult, - asyncMiddleware(this.generalLedger.bind(this)) - ); - return router; - } - - /** - * Validation schema. - */ - get validationSchema(): ValidationChain[] { - return [ - query('from_date').optional().isISO8601(), - query('to_date').optional().isISO8601(), - query('basis').optional(), - query('number_format.no_cents').optional().isBoolean().toBoolean(), - query('number_format.divide_1000').optional().isBoolean().toBoolean(), - query('none_transactions').default(true).isBoolean().toBoolean(), - query('accounts_ids').optional().isArray({ min: 1 }), - query('accounts_ids.*').isInt().toInt(), - query('orderBy').optional().isIn(['created_at', 'name', 'code']), - query('order').optional().isIn(['desc', 'asc']), - ]; - } - - /** - * Retrieve the general ledger financial statement. - * @param {Request} req - - * @param {Response} res - - */ - async generalLedger(req: Request, res: Response, next: NextFunction) { - const { tenantId, settings } = req; - const filter = this.matchedQueryData(req); - - try { - const { data, query, meta } = await this.generalLedgetService.generalLedger( - tenantId, - filter - ); - return res.status(200).send({ - meta: this.transfromToResponse(meta), - data: this.transfromToResponse(data), - query: this.transfromToResponse(query), - }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/InventoryDetails/index.ts b/server/src/api/controllers/FinancialStatements/InventoryDetails/index.ts deleted file mode 100644 index 78138c317..000000000 --- a/server/src/api/controllers/FinancialStatements/InventoryDetails/index.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { query } from 'express-validator'; -import { - NextFunction, - Router, - Request, - Response, - ValidationChain, -} from 'express'; -import BaseController from 'api/controllers/BaseController'; -import InventoryDetailsService from 'services/FinancialStatements/InventoryDetails/InventoryDetailsService'; -import InventoryDetailsTable from 'services/FinancialStatements/InventoryDetails/InventoryDetailsTable'; -import HasTenancyService from 'services/Tenancy/TenancyService'; - -@Service() -export default class InventoryDetailsController extends BaseController { - @Inject() - inventoryDetailsService: InventoryDetailsService; - - @Inject() - tenancy: HasTenancyService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - this.validationResult, - this.asyncMiddleware(this.inventoryDetails.bind(this)) - ); - return router; - } - - /** - * Balance sheet validation schecma. - * @returns {ValidationChain[]} - */ - get validationSchema(): ValidationChain[] { - return [ - query('number_format.precision') - .optional() - .isInt({ min: 0, max: 5 }) - .toInt(), - query('number_format.divide_on_1000').optional().isBoolean().toBoolean(), - query('number_format.negative_format') - .optional() - .isIn(['parentheses', 'mines']) - .trim() - .escape(), - query('from_date').optional(), - query('to_date').optional(), - - query('none_zero').optional().isBoolean().toBoolean(), - query('none_transactions').optional().isBoolean().toBoolean(), - - query('items_ids').optional().isArray(), - query('items_ids.*').optional().isInt().toInt(), - ]; - } - - /** - * Retrieve the cashflow statment to json response. - * @param {ICashFlowStatement} cashFlow - - */ - private transformJsonResponse(inventoryDetails) { - const { data, query, meta } = inventoryDetails; - - return { - data: this.transfromToResponse(data), - query: this.transfromToResponse(query), - meta: this.transfromToResponse(meta), - }; - } - - /** - * Transformes the report statement to table rows. - */ - private transformToTableRows(inventoryDetails, tenantId: number) { - const i18n = this.tenancy.i18n(tenantId); - const inventoryDetailsTable = new InventoryDetailsTable(inventoryDetails, i18n); - - return { - table: { - data: inventoryDetailsTable.tableData(), - columns: inventoryDetailsTable.tableColumns(), - }, - query: this.transfromToResponse(inventoryDetails.query), - meta: this.transfromToResponse(inventoryDetails.meta), - }; - } - - /** - * Retrieve the cash flow statment. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - * @returns {Response} - */ - async inventoryDetails(req: Request, res: Response, next: NextFunction) { - const { tenantId, settings } = req; - const filter = { - ...this.matchedQueryData(req), - }; - - try { - const inventoryDetails = - await this.inventoryDetailsService.inventoryDetails(tenantId, filter); - - const accept = this.accepts(req); - const acceptType = accept.types(['json', 'application/json+table']); - - switch (acceptType) { - case 'application/json+table': - return res - .status(200) - .send(this.transformToTableRows(inventoryDetails, tenantId)); - case 'json': - default: - return res - .status(200) - .send(this.transformJsonResponse(inventoryDetails)); - } - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/InventoryValuationSheet.ts b/server/src/api/controllers/FinancialStatements/InventoryValuationSheet.ts deleted file mode 100644 index 266cc4e82..000000000 --- a/server/src/api/controllers/FinancialStatements/InventoryValuationSheet.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { query, ValidationChain } from 'express-validator'; -import { Inject, Service } from 'typedi'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseFinancialReportController from './BaseFinancialReportController'; -import InventoryValuationService from 'services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheetService'; - -@Service() -export default class InventoryValuationReportController extends BaseFinancialReportController { - @Inject() - inventoryValuationService: InventoryValuationService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - this.validationResult, - asyncMiddleware(this.inventoryValuation.bind(this)) - ); - return router; - } - - /** - * Validation schema. - */ - get validationSchema(): ValidationChain[] { - return [ - query('from_date').optional().isISO8601(), - query('to_date').optional().isISO8601(), - - query('items_ids').optional().isArray(), - query('items_ids.*').optional().isInt().toInt(), - - query('number_format.no_cents').optional().isBoolean().toBoolean(), - query('number_format.divide_1000').optional().isBoolean().toBoolean(), - query('none_transactions').default(true).isBoolean().toBoolean(), - query('orderBy').optional().isIn(['created_at', 'name', 'code']), - query('order').optional().isIn(['desc', 'asc']), - ]; - } - - /** - * Retrieve the general ledger financial statement. - * @param {Request} req - - * @param {Response} res - - */ - async inventoryValuation(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = this.matchedQueryData(req); - - try { - const { - data, - query, - meta, - } = await this.inventoryValuationService.inventoryValuationSheet( - tenantId, - filter - ); - return res.status(200).send({ - meta: this.transfromToResponse(meta), - data: this.transfromToResponse(data), - query: this.transfromToResponse(query), - }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/JournalSheet.ts b/server/src/api/controllers/FinancialStatements/JournalSheet.ts deleted file mode 100644 index 6c82e7a42..000000000 --- a/server/src/api/controllers/FinancialStatements/JournalSheet.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { Request, Response, Router, NextFunction } from 'express'; -import { castArray } from 'lodash'; -import { query, oneOf } from 'express-validator'; -import BaseFinancialReportController from './BaseFinancialReportController'; -import JournalSheetService from 'services/FinancialStatements/JournalSheet/JournalSheetService'; - -@Service() -export default class JournalSheetController extends BaseFinancialReportController { - @Inject() - journalService: JournalSheetService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.journalValidationSchema, - this.validationResult, - this.asyncMiddleware(this.journal.bind(this)) - ); - return router; - } - - /** - * Validation schema. - */ - get journalValidationSchema() { - return [ - query('from_date').optional().isISO8601(), - query('to_date').optional().isISO8601(), - query('transaction_type').optional().trim().escape(), - query('transaction_id').optional().isInt().toInt(), - oneOf( - [ - query('account_ids').optional().isArray({ min: 1 }), - query('account_ids.*').optional().isNumeric().toInt(), - ], - [query('account_ids').optional().isNumeric().toInt()] - ), - query('from_range').optional().isNumeric().toInt(), - query('to_range').optional().isNumeric().toInt(), - query('number_format.no_cents').optional().isBoolean().toBoolean(), - query('number_format.divide_1000').optional().isBoolean().toBoolean(), - ]; - } - - /** - * Retrieve the ledger report of the given account. - * @param {Request} req - - * @param {Response} res - - */ - async journal(req: Request, res: Response, next: NextFunction) { - const { tenantId, settings } = req; - let filter = this.matchedQueryData(req); - - filter = { - ...filter, - accountsIds: castArray(filter.accountsIds), - }; - - try { - const { data, query, meta } = await this.journalService.journalSheet( - tenantId, - filter - ); - - return res.status(200).send({ - data: this.transfromToResponse(data), - query: this.transfromToResponse(query), - meta: this.transfromToResponse(meta), - }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/ProfitLossSheet.ts b/server/src/api/controllers/FinancialStatements/ProfitLossSheet.ts deleted file mode 100644 index bf2b9da95..000000000 --- a/server/src/api/controllers/FinancialStatements/ProfitLossSheet.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { Router, Request, Response, NextFunction } from 'express'; -import { query, ValidationChain } from 'express-validator'; -import ProfitLossSheetService from 'services/FinancialStatements/ProfitLossSheet/ProfitLossSheetService'; -import BaseFinancialReportController from './BaseFinancialReportController'; - -@Service() -export default class ProfitLossSheetController extends BaseFinancialReportController { - @Inject() - profitLossSheetService: ProfitLossSheetService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - this.validationResult, - this.asyncMiddleware(this.profitLossSheet.bind(this)), - ); - return router; - } - - /** - * Validation schema. - */ - get validationSchema(): ValidationChain[] { - return [ - ...this.sheetNumberFormatValidationSchema, - query('basis').optional(), - query('from_date').optional().isISO8601(), - query('to_date').optional().isISO8601(), - query('basis').optional(), - query('none_zero').optional().isBoolean().toBoolean(), - query('none_transactions').optional().isBoolean().toBoolean(), - query('accounts_ids').isArray().optional(), - query('accounts_ids.*').isNumeric().toInt(), - query('display_columns_type').optional().isIn(['total', 'date_periods']), - query('display_columns_by') - .optional({ nullable: true, checkFalsy: true }) - .isIn(['year', 'month', 'week', 'day', 'quarter']), - ]; - } - - /** - * Retrieve profit/loss financial statement. - * @param {Request} req - - * @param {Response} res - - */ - async profitLossSheet(req: Request, res: Response, next: NextFunction) { - const { tenantId, settings } = req; - const filter = this.matchedQueryData(req); - - try { - const { - data, - columns, - query, - meta - } = await this.profitLossSheetService.profitLossSheet(tenantId, filter); - - return res.status(200).send({ - data: this.transfromToResponse(data), - columns: this.transfromToResponse(columns), - query: this.transfromToResponse(query), - meta: this.transfromToResponse(meta) - }); - } catch (error) { - next(error); - } - } -} \ No newline at end of file diff --git a/server/src/api/controllers/FinancialStatements/PurchasesByItem.ts b/server/src/api/controllers/FinancialStatements/PurchasesByItem.ts deleted file mode 100644 index 7a5063dcf..000000000 --- a/server/src/api/controllers/FinancialStatements/PurchasesByItem.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { query, ValidationChain } from 'express-validator'; -import moment from 'moment'; -import { Inject, Service } from 'typedi'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseFinancialReportController from './BaseFinancialReportController'; -import PurchasesByItemsService from 'services/FinancialStatements/PurchasesByItems/PurchasesByItemsService'; - -@Service() -export default class PurchasesByItemReportController extends BaseFinancialReportController { - @Inject() - purchasesByItemsService: PurchasesByItemsService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - this.validationResult, - asyncMiddleware(this.purchasesByItems.bind(this)) - ); - return router; - } - - /** - * Validation schema. - * @return {ValidationChain[]} - */ - get validationSchema(): ValidationChain[] { - return [ - query('from_date').optional().isISO8601(), - query('to_date').optional().isISO8601(), - - query('number_format.no_cents').optional().isBoolean().toBoolean(), - query('number_format.divide_1000').optional().isBoolean().toBoolean(), - query('none_transactions').default(true).isBoolean().toBoolean(), - - query('items_ids').optional().isArray(), - query('items_ids.*').optional().isInt().toInt(), - - query('orderBy').optional().isIn(['created_at', 'name', 'code']), - query('order').optional().isIn(['desc', 'asc']), - ]; - } - - /** - * Retrieve the general ledger financial statement. - * @param {Request} req - - * @param {Response} res - - */ - async purchasesByItems(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = this.matchedQueryData(req); - - try { - const { - data, - query, - meta, - } = await this.purchasesByItemsService.purchasesByItems( - tenantId, - filter - ); - return res.status(200).send({ - meta: this.transfromToResponse(meta), - data: this.transfromToResponse(data), - query: this.transfromToResponse(query), - }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/SalesByItems.ts b/server/src/api/controllers/FinancialStatements/SalesByItems.ts deleted file mode 100644 index 5987d9418..000000000 --- a/server/src/api/controllers/FinancialStatements/SalesByItems.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { query, ValidationChain } from 'express-validator'; -import moment from 'moment'; -import { Inject, Service } from 'typedi'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseFinancialReportController from './BaseFinancialReportController'; -import SalesByItemsReportService from 'services/FinancialStatements/SalesByItems/SalesByItemsService'; - -@Service() -export default class SalesByItemsReportController extends BaseFinancialReportController { - @Inject() - salesByItemsService: SalesByItemsReportService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - this.validationResult, - asyncMiddleware(this.purchasesByItems.bind(this)) - ); - return router; - } - - /** - * Validation schema. - */ - get validationSchema(): ValidationChain[] { - return [ - query('from_date').optional().isISO8601(), - query('to_date').optional().isISO8601(), - - query('items_ids').optional().isArray(), - query('items_ids.*').optional().isInt().toInt(), - - query('number_format.no_cents').optional().isBoolean().toBoolean(), - query('number_format.divide_1000').optional().isBoolean().toBoolean(), - query('none_transactions').default(true).isBoolean().toBoolean(), - query('orderBy').optional().isIn(['created_at', 'name', 'code']), - query('order').optional().isIn(['desc', 'asc']), - ]; - } - - /** - * Retrieve the general ledger financial statement. - * @param {Request} req - - * @param {Response} res - - */ - async purchasesByItems(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = this.matchedQueryData(req); - - try { - const { - data, - query, - meta, - } = await this.salesByItemsService.salesByItems( - tenantId, - filter - ); - return res.status(200).send({ - meta: this.transfromToResponse(meta), - data: this.transfromToResponse(data), - query: this.transfromToResponse(query), - }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/TransactionsByCustomers/index.ts b/server/src/api/controllers/FinancialStatements/TransactionsByCustomers/index.ts deleted file mode 100644 index d88f2daf2..000000000 --- a/server/src/api/controllers/FinancialStatements/TransactionsByCustomers/index.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { query } from 'express-validator'; -import { Inject, Service } from 'typedi'; -import { ITransactionsByCustomersStatement } from 'interfaces'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseFinancialReportController from '../BaseFinancialReportController'; -import TransactionsByCustomersService from 'services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersService'; -import TransactionsByCustomersTableRows from 'services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersTableRows'; -import HasTenancyService from 'services/Tenancy/TenancyService'; - -@Service() -export default class TransactionsByCustomersReportController extends BaseFinancialReportController { - @Inject() - transactionsByCustomersService: TransactionsByCustomersService; - - @Inject() - tenancy: HasTenancyService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - this.validationResult, - asyncMiddleware(this.transactionsByCustomers.bind(this)) - ); - return router; - } - - /** - * Validation schema. - */ - private get validationSchema() { - return [ - ...this.sheetNumberFormatValidationSchema, - query('from_date').optional().isISO8601(), - query('to_date').optional().isISO8601(), - - query('none_zero').optional().isBoolean().toBoolean(), - query('none_transactions').optional().isBoolean().toBoolean(), - - // Customers ids. - query('customers_ids').optional().isArray({ min: 1 }), - query('customers_ids.*').exists().isInt().toInt(), - ]; - } - - /** - * Transformes the statement to table rows response. - * @param {ITransactionsByCustomersStatement} statement - - */ - private transformToTableResponse( - customersTransactions, - tenantId - ) { - const i18n = this.tenancy.i18n(tenantId); - const table = new TransactionsByCustomersTableRows( - customersTransactions, - i18n - ); - return { - table: { - rows: table.tableRows(), - }, - }; - } - - /** - * Transformes the statement to json response. - * @param {ITransactionsByCustomersStatement} statement - - */ - private transfromToJsonResponse( - data, - columns - ): ITransactionsByCustomersStatement { - return { - data: this.transfromToResponse(data), - columns: this.transfromToResponse(columns), - query: this.transfromToResponse(query), - }; - } - - /** - * Retrieve payable aging summary report. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async transactionsByCustomers( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const filter = this.matchedQueryData(req); - - try { - const report = - await this.transactionsByCustomersService.transactionsByCustomers( - tenantId, - filter - ); - const accept = this.accepts(req); - const acceptType = accept.types(['json', 'application/json+table']); - - switch (acceptType) { - case 'json': - return res - .status(200) - .send(this.transfromToJsonResponse(transactionsByCustomers)); - case 'application/json+table': - default: - return res - .status(200) - .send( - this.transformToTableResponse(report.data, tenantId) - ); - } - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/TransactionsByReference/index.ts b/server/src/api/controllers/FinancialStatements/TransactionsByReference/index.ts deleted file mode 100644 index 59ee88e37..000000000 --- a/server/src/api/controllers/FinancialStatements/TransactionsByReference/index.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { Router, Request, Response, NextFunction } from 'express'; -import { query, ValidationChain } from 'express-validator'; -import BaseController from 'api/controllers/BaseController'; -import TransactionsByReferenceService from 'services/FinancialStatements/TransactionsByReference'; -import { ITransactionsByReferenceTransaction } from 'interfaces'; -@Service() -export default class TransactionsByReferenceController extends BaseController { - @Inject() - private transactionsByReferenceService: TransactionsByReferenceService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - this.validationResult, - this.asyncMiddleware(this.transactionsByReference.bind(this)) - ); - return router; - } - - /** - * Validation schema. - */ - get validationSchema(): ValidationChain[] { - return [ - query('reference_id').exists().isInt(), - query('reference_type').exists().isString(), - - query('number_format.precision') - .optional() - .isInt({ min: 0, max: 5 }) - .toInt(), - query('number_format.divide_on_1000').optional().isBoolean().toBoolean(), - query('number_format.negative_format') - .optional() - .isIn(['parentheses', 'mines']) - .trim() - .escape(), - ]; - } - - /** - * Retrieve transactions by the given reference type and id. - * @param {Request} req - Request object. - * @param {Response} res - Response. - * @param {NextFunction} next - * @returns - */ - public async transactionsByReference( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const filter = this.matchedQueryData(req); - - try { - const data = - await this.transactionsByReferenceService.getTransactionsByReference( - tenantId, - filter - ); - - return res - .status(200) - .send(this.transformToJsonResponse(data.transactions)); - } catch (error) { - next(error); - } - } - - /** - * Transformes the given report transaction to json response. - * @param transactions - * @returns - */ - private transformToJsonResponse( - transactions: ITransactionsByReferenceTransaction[] - ) { - return { - transactions: this.transfromToResponse(transactions), - }; - } -} diff --git a/server/src/api/controllers/FinancialStatements/TransactionsByVendors/index.ts b/server/src/api/controllers/FinancialStatements/TransactionsByVendors/index.ts deleted file mode 100644 index ffe1f95b0..000000000 --- a/server/src/api/controllers/FinancialStatements/TransactionsByVendors/index.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { query, ValidationChain } from 'express-validator'; -import { Inject } from 'typedi'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseFinancialReportController from '../BaseFinancialReportController'; -import TransactionsByVendorsTableRows from 'services/FinancialStatements/TransactionsByVendor/TransactionsByVendorTableRows'; -import TransactionsByVendorsService from 'services/FinancialStatements/TransactionsByVendor/TransactionsByVendorService'; -import { ITransactionsByVendorsStatement } from 'interfaces'; -import HasTenancyService from 'services/Tenancy/TenancyService'; - -export default class TransactionsByVendorsReportController extends BaseFinancialReportController { - @Inject() - transactionsByVendorsService: TransactionsByVendorsService; - - @Inject() - tenancy: HasTenancyService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - this.validationResult, - asyncMiddleware(this.transactionsByVendors.bind(this)) - ); - return router; - } - - /** - * Validation schema. - */ - get validationSchema(): ValidationChain[] { - return [ - ...this.sheetNumberFormatValidationSchema, - - query('from_date').optional().isISO8601(), - query('to_date').optional().isISO8601(), - - query('none_zero').optional().isBoolean().toBoolean(), - query('none_transactions').optional().isBoolean().toBoolean(), - - // Vendors ids. - query('vendors_ids').optional().isArray({ min: 1 }), - query('vendors_ids.*').exists().isInt().toInt(), - ]; - } - - /** - * Transformes the report statement to table rows. - * @param {ITransactionsByVendorsStatement} statement - - */ - private transformToTableRows( - tenantId: number, - transactions: any[] - ) { - const i18n = this.tenancy.i18n(tenantId); - const table = new TransactionsByVendorsTableRows(transactions, i18n); - - return { - table: { - data: table.tableRows(), - }, - }; - } - - /** - * Transformes the report statement to json response. - * @param {ITransactionsByVendorsStatement} statement - - */ - private transformToJsonResponse({ - data, - columns, - query, - }: ITransactionsByVendorsStatement) { - return { - data: this.transfromToResponse(data), - columns: this.transfromToResponse(columns), - query: this.transfromToResponse(query), - }; - } - - /** - * Retrieve payable aging summary report. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async transactionsByVendors(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = this.matchedQueryData(req); - - try { - const report = - await this.transactionsByVendorsService.transactionsByVendors( - tenantId, - filter - ); - const accept = this.accepts(req); - const acceptType = accept.types(['json', 'application/json+table']); - - switch (acceptType) { - case 'application/json+table': - return res - .status(200) - .send(this.transformToTableRows(tenantId, report.data)); - case 'json': - default: - return res - .status(200) - .send(this.transformToJsonResponse(report)); - } - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/TrialBalanceSheet.ts b/server/src/api/controllers/FinancialStatements/TrialBalanceSheet.ts deleted file mode 100644 index 6255ae8a9..000000000 --- a/server/src/api/controllers/FinancialStatements/TrialBalanceSheet.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { Request, Response, Router, NextFunction } from 'express'; -import { query, ValidationChain } from 'express-validator'; -import { castArray } from 'lodash'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import TrialBalanceSheetService from 'services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetService'; -import BaseFinancialReportController from './BaseFinancialReportController'; - -@Service() -export default class TrialBalanceSheetController extends BaseFinancialReportController { - @Inject() - trialBalanceSheetService: TrialBalanceSheetService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.trialBalanceSheetValidationSchema, - this.validationResult, - asyncMiddleware(this.trialBalanceSheet.bind(this)) - ); - return router; - } - - /** - * Validation schema. - * @return {ValidationChain[]} - */ - get trialBalanceSheetValidationSchema(): ValidationChain[] { - return [ - ...this.sheetNumberFormatValidationSchema, - query('basis').optional(), - query('from_date').optional().isISO8601(), - query('to_date').optional().isISO8601(), - query('account_ids').isArray().optional(), - query('account_ids.*').isNumeric().toInt(), - query('basis').optional(), - query('none_zero').optional().isBoolean().toBoolean(), - ]; - } - - /** - * Retrieve the trial balance sheet. - */ - public async trialBalanceSheet( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId, settings } = req; - let filter = this.matchedQueryData(req); - - filter = { - ...filter, - accountsIds: castArray(filter.accountsIds), - }; - - try { - const { - data, - query, - meta - } = await this.trialBalanceSheetService.trialBalanceSheet( - tenantId, - filter - ); - - return res.status(200).send({ - data: this.transfromToResponse(data), - query: this.transfromToResponse(query), - meta: this.transfromToResponse(meta), - }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/FinancialStatements/VendorBalanceSummary/index.ts b/server/src/api/controllers/FinancialStatements/VendorBalanceSummary/index.ts deleted file mode 100644 index 41b2e88c1..000000000 --- a/server/src/api/controllers/FinancialStatements/VendorBalanceSummary/index.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { query } from 'express-validator'; -import { Inject } from 'typedi'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseFinancialReportController from '../BaseFinancialReportController'; -import VendorBalanceSummaryTableRows from 'services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryTableRows'; -import VendorBalanceSummaryService from 'services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryService'; -import { IVendorBalanceSummaryStatement } from 'interfaces'; -export default class VendorBalanceSummaryReportController extends BaseFinancialReportController { - @Inject() - vendorBalanceSummaryService: VendorBalanceSummaryService; - - @Inject() - vendorBalanceSummaryTableRows: VendorBalanceSummaryTableRows; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.validationSchema, - asyncMiddleware(this.vendorBalanceSummary.bind(this)) - ); - return router; - } - - /** - * Validation schema. - */ - get validationSchema() { - return [ - ...this.sheetNumberFormatValidationSchema, - query('as_date').optional().isISO8601(), - - // Vendors ids. - query('vendors_ids').optional().isArray({ min: 1 }), - query('vendors_ids.*').exists().isInt().toInt(), - ]; - } - - /** - * Transformes the report statement to table rows. - * @param {IVendorBalanceSummaryStatement} statement - - */ - private transformToTableRows({ data }: IVendorBalanceSummaryStatement) { - return { - table: { - data: this.vendorBalanceSummaryTableRows.tableRowsTransformer(data), - }, - }; - } - - /** - * Transformes the report statement to raw json. - * @param {IVendorBalanceSummaryStatement} statement - - */ - private transformToJsonResponse({ - data, - columns, - }: IVendorBalanceSummaryStatement) { - return { - data: this.transfromToResponse(data), - columns: this.transfromToResponse(columns), - query: this.transfromToResponse(query), - }; - } - - /** - * Retrieve vendors balance summary. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async vendorBalanceSummary(req: Request, res: Response, next: NextFunction) { - const { tenantId, settings } = req; - const filter = this.matchedQueryData(req); - - try { - const vendorBalanceSummary = - await this.vendorBalanceSummaryService.vendorBalanceSummary( - tenantId, - filter - ); - const accept = this.accepts(req); - const acceptType = accept.types(['json', 'application/json+table']); - - switch (acceptType) { - case 'application/json+table': - return res - .status(200) - .send(this.transformToTableRows(vendorBalanceSummary)); - case 'json': - default: - return res - .status(200) - .send(this.transformToJsonResponse(vendorBalanceSummary)); - } - - return res.status(200).send({}); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/Inventory/InventoryAdjustments.ts b/server/src/api/controllers/Inventory/InventoryAdjustments.ts deleted file mode 100644 index 3f7591706..000000000 --- a/server/src/api/controllers/Inventory/InventoryAdjustments.ts +++ /dev/null @@ -1,304 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { Router, Request, Response, NextFunction } from 'express'; -import { check, query, param } from 'express-validator'; -import { ServiceError } from 'exceptions'; -import BaseController from '../BaseController'; -import InventoryAdjustmentService from 'services/Inventory/InventoryAdjustmentService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { Request } from 'express-validator/src/base'; -import { ResponseType } from 'axios'; - -@Service() -export default class InventoryAdjustmentsController extends BaseController { - @Inject() - inventoryAdjustmentService: InventoryAdjustmentService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.post( - '/:id/publish', - [param('id').exists().isNumeric().toInt()], - this.validationResult, - this.asyncMiddleware(this.publishInventoryAdjustment.bind(this)), - this.handleServiceErrors - ); - router.delete( - '/:id', - [param('id').exists().isNumeric().toInt()], - this.validationResult, - this.asyncMiddleware(this.deleteInventoryAdjustment.bind(this)), - this.handleServiceErrors - ); - router.post( - '/quick', - this.validatateQuickAdjustment, - this.validationResult, - this.asyncMiddleware(this.createQuickInventoryAdjustment.bind(this)), - this.handleServiceErrors - ); - router.get( - '/:id', - [param('id').exists().isNumeric().toInt()], - this.validationResult, - this.asyncMiddleware(this.getInventoryAdjustment.bind(this)), - this.handleServiceErrors - ); - router.get( - '/', - [...this.validateListQuerySchema], - this.validationResult, - this.asyncMiddleware(this.getInventoryAdjustments.bind(this)), - this.dynamicListService.handlerErrorsToResponse, - this.handleServiceErrors - ); - return router; - } - - /** - * Validate list query schema - */ - get validateListQuerySchema() { - return [ - query('column_sort_by').optional().trim().escape(), - query('sort_order').optional().isIn(['desc', 'asc']), - - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - - query('stringified_filter_roles').optional().isJSON(), - ]; - } - - /** - * Quick inventory adjustment validation schema. - */ - get validatateQuickAdjustment() { - return [ - check('date').exists().isISO8601(), - check('type') - .exists() - .isIn(['increment', 'decrement', 'value_adjustment']), - check('reference_no').exists(), - check('adjustment_account_id').exists().isInt().toInt(), - check('reason').exists().isString().exists(), - check('description').optional().isString(), - check('item_id').exists().isInt().toInt(), - check('quantity') - .if(check('type').exists().isIn(['increment', 'decrement'])) - .exists() - .isInt() - .toInt(), - check('cost') - .if(check('type').exists().isIn(['increment'])) - .exists() - .isFloat() - .toInt(), - check('publish').default(false).isBoolean().toBoolean(), - ]; - } - - /** - * Creates a quick inventory adjustment. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async createQuickInventoryAdjustment( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId, user } = req; - const quickInventoryAdjustment = this.matchedBodyData(req); - - try { - const inventoryAdjustment = - await this.inventoryAdjustmentService.createQuickAdjustment( - tenantId, - quickInventoryAdjustment, - user - ); - - return res.status(200).send({ - id: inventoryAdjustment.id, - message: 'The inventory adjustment has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the given inventory adjustment transaction. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async deleteInventoryAdjustment( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const { id: adjustmentId } = req.params; - - try { - await this.inventoryAdjustmentService.deleteInventoryAdjustment( - tenantId, - adjustmentId - ); - return res.status(200).send({ - id: adjustmentId, - message: 'The inventory adjustment has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Publish the given inventory adjustment transaction. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async publishInventoryAdjustment( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const { id: adjustmentId } = req.params; - - try { - await this.inventoryAdjustmentService.publishInventoryAdjustment( - tenantId, - adjustmentId - ); - return res.status(200).send({ - id: adjustmentId, - message: 'The inventory adjustment has been published successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the specific inventory adjustment transaction of the given id. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async getInventoryAdjustment( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const { id: adjustmentId } = req.params; - - try { - const inventoryAdjustment = - await this.inventoryAdjustmentService.getInventoryAdjustment( - tenantId, - adjustmentId - ); - - return res.status(200).send({ - data: this.transfromToResponse(inventoryAdjustment), - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the inventory adjustments paginated list. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getInventoryAdjustments( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const filter = { - page: 1, - pageSize: 12, - columnSortBy: 'created_at', - sortOrder: 'desc', - filterRoles: [], - ...this.matchedQueryData(req), - }; - - try { - const { pagination, inventoryAdjustments } = - await this.inventoryAdjustmentService.getInventoryAdjustments( - tenantId, - filter - ); - - return res.status(200).send({ - inventoy_adjustments: inventoryAdjustments, - pagination: this.transfromToResponse(pagination), - }); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - handleServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'INVENTORY_ADJUSTMENT_NOT_FOUND') { - return res.status(400).send({ - errors: [ - { - type: 'INVENTORY_ADJUSTMENT.NOT.FOUND', - code: 100, - message: 'The inventory adjustment not found.', - }, - ], - }); - } - if (error.errorType === 'NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'ITEM.NOT.FOUND', code: 140 }], - }); - } - if (error.errorType === 'account_not_found') { - return res.boom.notFound('The given account not found.', { - errors: [{ type: 'ACCOUNT.NOT.FOUND', code: 100 }], - }); - } - if (error.errorType === 'ITEM_SHOULD_BE_INVENTORY_TYPE') { - return res.boom.badRequest( - 'You could not make adjustment on item has no inventory type.', - { errors: [{ type: 'ITEM_SHOULD_BE_INVENTORY_TYPE', code: 300 }] } - ); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/InviteUsers.ts b/server/src/api/controllers/InviteUsers.ts deleted file mode 100644 index 0b22269bd..000000000 --- a/server/src/api/controllers/InviteUsers.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { Router, Request, Response, NextFunction } from 'express'; -import { check, body, param } from 'express-validator'; -import { IInviteUserInput } from 'interfaces'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import InviteUserService from 'services/InviteUsers'; -import { ServiceErrors, ServiceError } from 'exceptions'; -import BaseController from './BaseController'; - -@Service() -export default class InviteUsersController extends BaseController { - @Inject() - inviteUsersService: InviteUserService; - - /** - * Routes that require authentication. - */ - authRouter() { - const router = Router(); - - router.post( - '/send', - [body('email').exists().trim().escape()], - this.validationResult, - asyncMiddleware(this.sendInvite.bind(this)), - this.handleServicesError - ); - router.post( - '/resend/:userId', - [ - param('userId').exists().isNumeric().toInt() - ], - this.validationResult, - this.asyncMiddleware(this.resendInvite.bind(this)), - this.handleServicesError - ); - return router; - } - - /** - * Routes that non-required authentication. - */ - nonAuthRouter() { - const router = Router(); - - router.post( - '/accept/:token', - [...this.inviteUserDTO], - this.validationResult, - asyncMiddleware(this.accept.bind(this)), - this.handleServicesError - ); - router.get( - '/invited/:token', - [param('token').exists().trim().escape()], - this.validationResult, - asyncMiddleware(this.invited.bind(this)), - this.handleServicesError - ); - - return router; - } - - /** - * Invite DTO schema validation. - */ - get inviteUserDTO() { - return [ - check('first_name').exists().trim().escape(), - check('last_name').exists().trim().escape(), - check('phone_number').exists().trim().escape(), - check('password').exists().trim().escape(), - param('token').exists().trim().escape(), - ]; - } - - /** - * Invite a user to the authorized user organization. - * @param {Request} req - Request object. - * @param {Response} res - Response object. - * @param {NextFunction} next - Next function. - */ - async sendInvite(req: Request, res: Response, next: Function) { - const { email } = req.body; - const { tenantId } = req; - const { user } = req; - - try { - const { invite } = await this.inviteUsersService.sendInvite( - tenantId, - email, - user - ); - return res.status(200).send({ - type: 'success', - code: 'INVITE.SENT.SUCCESSFULLY', - message: 'The invite has been sent to the given email.', - }); - } catch (error) { - next(error); - } - } - - /** - * Resend the user invite. - * @param {Request} req - Request object. - * @param {Response} res - Response object. - * @param {NextFunction} next - Next function. - */ - async resendInvite(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { userId } = req.params; - - try { - await this.inviteUsersService.resendInvite(tenantId, userId, user); - - return res.status(200).send({ - type: 'success', - code: 'INVITE.RESEND.SUCCESSFULLY', - message: 'The invite has been sent to the given email.', - }); - } catch (error) { - next(error); - } - } - - /** - * Accept the inviation. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async accept(req: Request, res: Response, next: Function) { - const inviteUserInput: IInviteUserInput = this.matchedBodyData(req, { - locations: ['body'], - includeOptionals: true, - }); - const { token } = req.params; - - try { - await this.inviteUsersService.acceptInvite(token, inviteUserInput); - - return res.status(200).send({ - type: 'success', - code: 'USER.INVITE.ACCEPTED', - message: 'User invite has been accepted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Check if the invite token is valid. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async invited(req: Request, res: Response, next: Function) { - const { token } = req.params; - - try { - const { - inviteToken, - orgName, - } = await this.inviteUsersService.checkInvite(token); - - return res.status(200).send({ - inviteToken: inviteToken.token, - email: inviteToken.email, - organizationName: orgName?.value, - }); - } catch (error) { - next(error); - } - } - - /** - * Handles the service error. - */ - handleServicesError(error, req: Request, res: Response, next: Function) { - if (error instanceof ServiceError) { - if (error.errorType === 'EMAIL_EXISTS') { - return res.status(400).send({ - errors: [ - { - type: 'EMAIL.ALREADY.EXISTS', - code: 100, - message: 'Email already exists in the users.', - }, - ], - }); - } - if (error.errorType === 'EMAIL_ALREADY_INVITED') { - return res.status(400).send({ - errors: [ - { - type: 'EMAIL.ALREADY.INVITED', - code: 200, - message: 'Email already invited.', - }, - ], - }); - } - if (error.errorType === 'INVITE_TOKEN_INVALID') { - return res.status(400).send({ - errors: [ - { - type: 'INVITE.TOKEN.INVALID', - code: 300, - message: 'Invite token is invalid, please try another one.', - }, - ], - }); - } - if (error.errorType === 'PHONE_NUMBER_EXISTS') { - return res.status(400).send({ - errors: [ - { - type: 'PHONE_NUMBER.EXISTS', - code: 400, - message: - 'Phone number is already invited, please try another unique one.', - }, - ], - }); - } - if (error.errorType === 'USER_RECENTLY_INVITED') { - return res.status(400).send({ - errors: [ - { - type: 'USER_RECENTLY_INVITED', - code: 500, - message: - 'This person was recently invited. No need to invite them again just yet.', - }, - ], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/ItemCategories.ts b/server/src/api/controllers/ItemCategories.ts deleted file mode 100644 index 89cdb7a02..000000000 --- a/server/src/api/controllers/ItemCategories.ts +++ /dev/null @@ -1,311 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { check, param, query } from 'express-validator'; -import ItemCategoriesService from 'services/ItemCategories/ItemCategoriesService'; -import { Inject, Service } from 'typedi'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import { IItemCategoryOTD } from 'interfaces'; -import { ServiceError } from 'exceptions'; -import BaseController from 'api/controllers/BaseController'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { DATATYPES_LENGTH } from 'data/DataTypes'; - -@Service() -export default class ItemsCategoriesController extends BaseController { - @Inject() - itemCategoriesService: ItemCategoriesService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Router constructor method. - */ - router() { - const router = Router(); - - router.post( - '/:id', - [ - ...this.categoryValidationSchema, - ...this.specificCategoryValidationSchema, - ], - this.validationResult, - asyncMiddleware(this.editCategory.bind(this)), - this.handlerServiceError - ); - router.post( - '/', - [...this.categoryValidationSchema], - this.validationResult, - asyncMiddleware(this.newCategory.bind(this)), - this.handlerServiceError - ); - router.delete( - '/:id', - [...this.specificCategoryValidationSchema], - this.validationResult, - asyncMiddleware(this.deleteItem.bind(this)), - this.handlerServiceError - ); - router.get( - '/:id', - [...this.specificCategoryValidationSchema], - this.validationResult, - asyncMiddleware(this.getCategory.bind(this)), - this.handlerServiceError - ); - router.get( - '/', - [...this.categoriesListValidationSchema], - this.validationResult, - asyncMiddleware(this.getList.bind(this)), - this.handlerServiceError, - this.dynamicListService.handlerErrorsToResponse - ); - return router; - } - - /** - * Item category validation schema. - */ - get categoryValidationSchema() { - return [ - check('name') - .exists() - .trim() - .escape() - .isLength({ min: 0, max: DATATYPES_LENGTH.STRING }), - check('description') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.TEXT }), - check('sell_account_id') - .optional({ nullable: true }) - .isInt({ min: 0, max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('cost_account_id') - .optional({ nullable: true }) - .isInt({ min: 0, max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('inventory_account_id') - .optional({ nullable: true }) - .isInt({ min: 0, max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - ]; - } - - /** - * Validate items categories schema. - */ - get categoriesListValidationSchema() { - return [ - query('column_sort_by').optional().trim().escape(), - query('sort_order').optional().trim().escape().isIn(['desc', 'asc']), - - query('stringified_filter_roles').optional().isJSON(), - ]; - } - - /** - * Validate specific item category schema. - */ - get specificCategoryValidationSchema() { - return [param('id').exists().toInt()]; - } - - /** - * Creates a new item category. - * @param {Request} req - * @param {Response} res - */ - async newCategory(req: Request, res: Response, next: NextFunction) { - const { user, tenantId } = req; - const itemCategoryOTD: IItemCategoryOTD = this.matchedBodyData(req); - - try { - const itemCategory = await this.itemCategoriesService.newItemCategory( - tenantId, - itemCategoryOTD, - user - ); - return res.status(200).send({ - id: itemCategory.id, - message: 'The item category has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edit details of the given category item. - * @param {Request} req - - * @param {Response} res - - * @return {Response} - */ - async editCategory(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: itemCategoryId } = req.params; - const itemCategoryOTD: IItemCategoryOTD = this.matchedBodyData(req); - - try { - await this.itemCategoriesService.editItemCategory( - tenantId, - itemCategoryId, - itemCategoryOTD, - user - ); - return res.status(200).send({ - id: itemCategoryId, - message: 'The item category has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Delete the give item category. - * @param {Request} req - - * @param {Response} res - - * @return {Response} - */ - async deleteItem(req: Request, res: Response, next: NextFunction) { - const { id: itemCategoryId } = req.params; - const { tenantId, user } = req; - - try { - await this.itemCategoriesService.deleteItemCategory( - tenantId, - itemCategoryId, - user - ); - return res.status(200).send({ - id: itemCategoryId, - message: 'The item category has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the list of items. - * @param {Request} req - - * @param {Response} res - - * @return {Response} - */ - async getList(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - - const itemCategoriesFilter = { - sortOrder: 'asc', - columnSortBy: 'created_at', - ...this.matchedQueryData(req), - }; - - try { - const { - itemCategories, - filterMeta, - } = await this.itemCategoriesService.getItemCategoriesList( - tenantId, - itemCategoriesFilter, - user - ); - return res.status(200).send({ - item_categories: itemCategories, - filter_meta: this.transfromToResponse(filterMeta), - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve details of the given category. - * @param {Request} req - - * @param {Response} res - - * @return {Response} - */ - async getCategory(req: Request, res: Response, next: NextFunction) { - const itemCategoryId: number = req.params.id; - const { tenantId, user } = req; - - try { - const itemCategory = await this.itemCategoriesService.getItemCategory( - tenantId, - itemCategoryId, - user - ); - return res.status(200).send({ category: itemCategory }); - } catch (error) { - next(error); - } - } - - /** - * Handles service error. - * @param {Error} error - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - */ - handlerServiceError( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'CATEGORY_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'ITEM_CATEGORY_NOT_FOUND', code: 100 }], - }); - } - if (error.errorType === 'ITEM_CATEGORIES_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'ITEM_CATEGORIES_NOT_FOUND', code: 200 }], - }); - } - if (error.errorType === 'CATEGORY_NAME_EXISTS') { - return res.boom.badRequest(null, { - errors: [{ type: 'CATEGORY_NAME_EXISTS', code: 300 }], - }); - } - if (error.errorType === 'COST_ACCOUNT_NOT_FOUMD') { - return res.boom.badRequest(null, { - errors: [{ type: 'COST.ACCOUNT.NOT.FOUND', code: 400 }], - }); - } - if (error.errorType === 'COST_ACCOUNT_NOT_COGS') { - return res.boom.badRequest(null, { - errors: [{ type: 'COST.ACCOUNT.NOT.COGS.TYPE', code: 500 }], - }); - } - if (error.errorType === 'SELL_ACCOUNT_NOT_INCOME') { - return res.boom.badRequest(null, { - errors: [{ type: 'SELL.ACCOUNT.NOT.FOUND', code: 600 }], - }); - } - if (error.errorType === 'SELL_ACCOUNT_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'SELL.ACCOUNT.NOT.INCOME.TYPE', code: 700 }], - }); - } - if (error.errorType === 'INVENTORY_ACCOUNT_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'INVENTORY.ACCOUNT.NOT.FOUND', code: 800 }], - }); - } - if (error.errorType === 'INVENTORY_ACCOUNT_NOT_INVENTORY') { - return res.boom.badRequest(null, { - errors: [{ type: 'INVENTORY.ACCOUNT.NOT.CURRENT.ASSET', code: 900 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Items.ts b/server/src/api/controllers/Items.ts deleted file mode 100644 index 58dab405d..000000000 --- a/server/src/api/controllers/Items.ts +++ /dev/null @@ -1,498 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { Router, Request, Response, NextFunction } from 'express'; -import { check, param, body, query, ValidationChain } from 'express-validator'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import ItemsService from 'services/Items/ItemsService'; -import BaseController from 'api/controllers/BaseController'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { ServiceError } from 'exceptions'; -import { IItemDTO } from 'interfaces'; -import { DATATYPES_LENGTH } from 'data/DataTypes'; - -@Service() -export default class ItemsController extends BaseController { - @Inject() - itemsService: ItemsService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.post( - '/', - this.validateItemSchema, - this.validationResult, - asyncMiddleware(this.newItem.bind(this)), - this.handlerServiceErrors - ); - router.post( - '/:id/activate', - this.validateSpecificItemSchema, - this.validationResult, - asyncMiddleware(this.activateItem.bind(this)), - this.handlerServiceErrors - ); - router.post( - '/:id/inactivate', - [...this.validateSpecificItemSchema], - this.validationResult, - asyncMiddleware(this.inactivateItem.bind(this)), - this.handlerServiceErrors - ); - router.post( - '/:id', - [...this.validateItemSchema, ...this.validateSpecificItemSchema], - this.validationResult, - asyncMiddleware(this.editItem.bind(this)), - this.handlerServiceErrors - ); - router.delete( - '/:id', - [...this.validateSpecificItemSchema], - this.validationResult, - asyncMiddleware(this.deleteItem.bind(this)), - this.handlerServiceErrors - ); - router.get( - '/:id', - [...this.validateSpecificItemSchema], - this.validationResult, - asyncMiddleware(this.getItem.bind(this)), - this.handlerServiceErrors - ); - router.get( - '/', - [...this.validateListQuerySchema], - this.validationResult, - asyncMiddleware(this.getItemsList.bind(this)), - this.dynamicListService.handlerErrorsToResponse, - this.handlerServiceErrors - ); - return router; - } - - /** - * Validate item schema. - */ - get validateItemSchema(): ValidationChain[] { - return [ - check('name') - .exists() - .isString() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('type') - .exists() - .isString() - .trim() - .escape() - .isIn(['service', 'non-inventory', 'inventory']), - check('code') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - // Purchase attributes. - check('purchasable').optional().isBoolean().toBoolean(), - check('cost_price') - .optional({ nullable: true }) - .isFloat({ min: 0, max: DATATYPES_LENGTH.DECIMAL_13_3 }) - .toFloat() - .if(check('purchasable').equals('true')) - .exists(), - check('cost_account_id').if(check('purchasable').equals('true')).exists(), - check('cost_account_id') - .optional({ nullable: true }) - .isInt({ min: 0, max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - // Sell attributes. - check('sellable').optional().isBoolean().toBoolean(), - check('sell_price') - .optional({ nullable: true }) - .isFloat({ min: 0, max: DATATYPES_LENGTH.DECIMAL_13_3 }) - .toFloat() - .if(check('sellable').equals('true')) - .exists(), - check('sell_account_id').if(check('sellable').equals('true')).exists(), - check('sell_account_id') - .optional({ nullable: true }) - .isInt({ min: 0, max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('inventory_account_id') - .if(check('type').equals('inventory')) - .exists(), - check('inventory_account_id') - .optional({ nullable: true }) - .isInt({ min: 0, max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('sell_description') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.TEXT }), - check('purchase_description') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.TEXT }), - check('category_id') - .optional({ nullable: true }) - .isInt({ min: 0, max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('note') - .optional() - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.TEXT }), - check('active').optional().isBoolean().toBoolean(), - - check('media_ids').optional().isArray(), - check('media_ids.*').exists().isNumeric().toInt(), - ]; - } - - /** - * Validate specific item params schema. - * @return {ValidationChain[]} - */ - get validateSpecificItemSchema(): ValidationChain[] { - return [param('id').exists().isNumeric().toInt()]; - } - - /** - * Validate list query schema. - */ - get validateListQuerySchema() { - return [ - query('column_sort_by').optional().trim().escape(), - query('sort_order').optional().isIn(['desc', 'asc']), - - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - - query('view_slug').optional({ nullable: true }).isString().trim(), - query('stringified_filter_roles').optional().isJSON(), - - query('inactive_mode').optional().isBoolean().toBoolean(), - query('search_keyword').optional({ nullable: true }).isString().trim(), - ]; - } - - /** - * Validate autocomplete list query schema. - */ - get autocompleteQuerySchema() { - return [ - query('column_sort_by').optional().trim().escape(), - query('sort_order').optional().isIn(['desc', 'asc']), - - query('stringified_filter_roles').optional().isJSON(), - query('limit').optional().isNumeric().toInt(), - - query('keyword').optional().isString().trim().escape(), - ]; - } - - /** - * Stores the given item details to the storage. - * @param {Request} req - * @param {Response} res - */ - async newItem(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const itemDTO: IItemDTO = this.matchedBodyData(req); - - try { - const storedItem = await this.itemsService.newItem(tenantId, itemDTO); - - return res.status(200).send({ - id: storedItem.id, - message: 'The item has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Updates the given item details on the storage. - * @param {Request} req - * @param {Response} res - */ - async editItem(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const itemId: number = req.params.id; - const item: IItemDTO = this.matchedBodyData(req); - - try { - await this.itemsService.editItem(tenantId, itemId, item); - - return res.status(200).send({ - id: itemId, - message: 'The item has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Activates the given item. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async activateItem(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const itemId: number = req.params.id; - - try { - await this.itemsService.activateItem(tenantId, itemId); - - return res.status(200).send({ - id: itemId, - message: 'The item has been activated successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Inactivates the given item. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async inactivateItem(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const itemId: number = req.params.id; - - try { - await this.itemsService.inactivateItem(tenantId, itemId); - - return res.status(200).send({ - id: itemId, - message: 'The item has been inactivated successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the given item from the storage. - * @param {Request} req - * @param {Response} res - */ - async deleteItem(req: Request, res: Response, next: NextFunction) { - const itemId: number = req.params.id; - const { tenantId } = req; - - try { - await this.itemsService.deleteItem(tenantId, itemId); - - return res.status(200).send({ - id: itemId, - message: 'The item has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve details the given item id. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async getItem(req: Request, res: Response, next: NextFunction) { - const itemId: number = req.params.id; - const { tenantId } = req; - - try { - const item = await this.itemsService.getItem(tenantId, itemId); - - return res.status(200).send({ - item: this.transfromToResponse(item) - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve items datatable list. - * @param {Request} req - * @param {Response} res - */ - async getItemsList(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - - const filter = { - sortOrder: 'asc', - columnSortBy: 'created_at', - page: 1, - pageSize: 12, - inactiveMode: false, - ...this.matchedQueryData(req), - }; - - try { - const { - items, - pagination, - filterMeta, - } = await this.itemsService.itemsList(tenantId, filter); - - return res.status(200).send({ - items: this.transfromToResponse(items), - pagination: this.transfromToResponse(pagination), - filter_meta: this.transfromToResponse(filterMeta), - }); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private handlerServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'ITEM.NOT.FOUND', code: 140 }], - }); - } - if (error.errorType === 'ITEMS_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'ITEMS_NOT_FOUND', code: 130 }], - }); - } - if (error.errorType === 'ITEM_CATEOGRY_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'ITEM_CATEGORY.NOT.FOUND', code: 140 }], - }); - } - if (error.errorType === 'ITEM_NAME_EXISTS') { - return res.status(400).send({ - errors: [{ type: 'ITEM.NAME.ALREADY.EXISTS', code: 210 }], - }); - } - if (error.errorType === 'COST_ACCOUNT_NOT_FOUMD') { - return res.status(400).send({ - errors: [{ type: 'COST.ACCOUNT.NOT.FOUND', code: 120 }], - }); - } - if (error.errorType === 'COST_ACCOUNT_NOT_COGS') { - return res.status(400).send({ - errors: [{ type: 'COST.ACCOUNT.NOT.COGS.TYPE', code: 220 }], - }); - } - if (error.errorType === 'SELL_ACCOUNT_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'SELL.ACCOUNT.NOT.FOUND', code: 130 }], - }); - } - if (error.errorType === 'SELL_ACCOUNT_NOT_INCOME') { - return res.status(400).send({ - errors: [{ type: 'SELL.ACCOUNT.NOT.INCOME.TYPE', code: 230 }], - }); - } - if (error.errorType === 'COST_ACCOUNT_NOT_FOUMD') { - return res.status(400).send({ - errors: [{ type: 'COST.ACCOUNT.NOT.FOUND', code: 120 }], - }); - } - if (error.errorType === 'COST_ACCOUNT_NOT_COGS') { - return res.status(400).send({ - errors: [{ type: 'COST.ACCOUNT.NOT.COGS.TYPE', code: 220 }], - }); - } - if (error.errorType === 'SELL_ACCOUNT_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'SELL.ACCOUNT.NOT.FOUND', code: 130 }], - }); - } - if (error.errorType === 'INVENTORY_ACCOUNT_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'INVENTORY.ACCOUNT.NOT.FOUND', code: 200 }], - }); - } - if (error.errorType === 'SELL_ACCOUNT_NOT_INCOME') { - return res.status(400).send({ - errors: [{ type: 'SELL.ACCOUNT.NOT.INCOME.TYPE', code: 230 }], - }); - } - if (error.errorType === 'INVENTORY_ACCOUNT_NOT_INVENTORY') { - return res.status(400).send({ - errors: [{ type: 'INVENTORY.ACCOUNT.NOT.INVENTORY.TYPE', code: 300 }], - }); - } - if (error.errorType === 'ITEMS_HAVE_ASSOCIATED_TRANSACTIONS') { - return res.status(400).send({ - errors: [{ type: 'ITEMS_HAVE_ASSOCIATED_TRANSACTIONS', code: 310 }], - }); - } - if (error.errorType === 'ITEM_HAS_ASSOCIATED_TRANSACTINS') { - return res.status(400).send({ - errors: [{ type: 'ITEM_HAS_ASSOCIATED_TRANSACTINS', code: 320 }], - }); - } - if (error.errorType === 'ITEM_HAS_ASSOCIATED_INVENTORY_ADJUSTMENT') { - return res.status(400).send({ - errors: [ - { type: 'ITEM_HAS_ASSOCIATED_INVENTORY_ADJUSTMENT', code: 330 }, - ], - }); - } - if (error.errorType === 'ITEM_CANNOT_CHANGE_INVENTORY_TYPE') { - return res.status(400).send({ - errors: [{ - type: 'ITEM_CANNOT_CHANGE_INVENTORY_TYPE', - message: 'Cannot change inventory item type', - code: 340, - }], - }); - } - if (error.errorType === 'TYPE_CANNOT_CHANGE_WITH_ITEM_HAS_TRANSACTIONS') { - return res.status(400).send({ - errors: [{ - type: 'TYPE_CANNOT_CHANGE_WITH_ITEM_HAS_TRANSACTIONS', - message: 'Cannot change item type to inventory with item has associated transactions.', - code: 350, - }], - }); - } - if (error.errorType === 'INVENTORY_ACCOUNT_CANNOT_MODIFIED') { - return res.status(400).send({ - errors: [{ - type: 'INVENTORY_ACCOUNT_CANNOT_MODIFIED', - message: 'Cannot change item inventory account while the item has transactions.', - code: 360, - }] - }) - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Jobs.ts b/server/src/api/controllers/Jobs.ts deleted file mode 100644 index 38c5b07a0..000000000 --- a/server/src/api/controllers/Jobs.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { Router, Request, Response, NextFunction } from 'express'; -import BaseController from 'api/controllers/BaseController'; -import { ServiceError } from 'exceptions'; -import JobsService from 'services/Jobs/JobsService'; - -@Service() -export default class ItemsController extends BaseController { - @Inject() - jobsService: JobsService; - - /** - * Router constructor. - */ - public router() { - const router = Router(); - - router.get('/:id', this.getJob, this.handlerServiceErrors); - - return router; - } - - /** - * Retrieve job details. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private getJob = async (req: Request, res: Response, next: NextFunction) => { - const { id } = req.params; - - try { - const job = await this.jobsService.getJob(id); - - return res.status(200).send({ - job: this.transfromToResponse(job), - }); - } catch (error) { - next(error); - } - }; - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private handlerServiceErrors = ( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) => { - if (error instanceof ServiceError) { - } - next(error); - }; -} diff --git a/server/src/api/controllers/ManualJournals.ts b/server/src/api/controllers/ManualJournals.ts deleted file mode 100644 index fbd886720..000000000 --- a/server/src/api/controllers/ManualJournals.ts +++ /dev/null @@ -1,400 +0,0 @@ -import { Request, Response, Router, NextFunction } from 'express'; -import { check, param, query } from 'express-validator'; -import BaseController from 'api/controllers/BaseController'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import ManualJournalsService from 'services/ManualJournals/ManualJournalsService'; -import { Inject, Service } from 'typedi'; -import { ServiceError } from 'exceptions'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { DATATYPES_LENGTH } from 'data/DataTypes'; - -@Service() -export default class ManualJournalsController extends BaseController { - @Inject() - manualJournalsService: ManualJournalsService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - [...this.manualJournalsListSchema], - this.validationResult, - asyncMiddleware(this.getManualJournalsList.bind(this)), - this.dynamicListService.handlerErrorsToResponse, - this.catchServiceErrors.bind(this) - ); - router.get( - '/:id', - asyncMiddleware(this.getManualJournal.bind(this)), - this.catchServiceErrors.bind(this) - ); - router.post( - '/:id/publish', - [...this.manualJournalParamSchema], - this.validationResult, - asyncMiddleware(this.publishManualJournal.bind(this)), - this.catchServiceErrors.bind(this) - ); - router.post( - '/:id', - [...this.manualJournalValidationSchema, ...this.manualJournalParamSchema], - this.validationResult, - asyncMiddleware(this.editManualJournal.bind(this)), - this.catchServiceErrors.bind(this) - ); - router.delete( - '/:id', - [...this.manualJournalParamSchema], - this.validationResult, - asyncMiddleware(this.deleteManualJournal.bind(this)), - this.catchServiceErrors.bind(this) - ); - router.post( - '/', - [...this.manualJournalValidationSchema], - this.validationResult, - asyncMiddleware(this.makeJournalEntries.bind(this)), - this.catchServiceErrors.bind(this) - ); - return router; - } - - /** - * Specific manual journal id param validation schema. - */ - get manualJournalParamSchema() { - return [param('id').exists().isNumeric().toInt()]; - } - - /** - * Manual journal DTO schema. - */ - get manualJournalValidationSchema() { - return [ - check('date').exists().isISO8601(), - check('journal_number') - .optional() - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('journal_type') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('reference') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('description') - .optional({ nullable: true }) - .isString() - .trim() - .escape() - .isLength({ max: DATATYPES_LENGTH.TEXT }), - check('publish').optional().isBoolean().toBoolean(), - check('entries').isArray({ min: 2 }), - check('entries.*.index') - .exists() - .isInt({ max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('entries.*.credit') - .optional({ nullable: true }) - .isFloat({ min: 0, max: DATATYPES_LENGTH.DECIMAL_13_3 }) - .toFloat(), - check('entries.*.debit') - .optional({ nullable: true }) - .isFloat({ min: 0, max: DATATYPES_LENGTH.DECIMAL_13_3 }) - .toFloat(), - check('entries.*.account_id') - .isInt({ max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - check('entries.*.note') - .optional({ nullable: true }) - .isString() - .isLength({ max: DATATYPES_LENGTH.STRING }), - check('entries.*.contact_id') - .optional({ nullable: true }) - .isInt({ max: DATATYPES_LENGTH.INT_10 }) - .toInt(), - ]; - } - - /** - * Manual journals list validation schema. - */ - get manualJournalsListSchema() { - return [ - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - query('custom_view_id').optional().isNumeric().toInt(), - - query('column_sort_by').optional().trim().escape(), - query('sort_order').optional().isIn(['desc', 'asc']), - - query('stringified_filter_roles').optional().isJSON(), - query('search_keyword').optional({ nullable: true }).isString().trim(), - ]; - } - - /** - * Make manual journal. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async makeJournalEntries(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const manualJournalDTO = this.matchedBodyData(req); - - try { - const { - manualJournal, - } = await this.manualJournalsService.makeJournalEntries( - tenantId, - manualJournalDTO, - user - ); - - return res.status(200).send({ - id: manualJournal.id, - message: 'The manual journal has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edit the given manual journal. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async editManualJournal(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: manualJournalId } = req.params; - const manualJournalDTO = this.matchedBodyData(req); - - try { - const { - manualJournal, - } = await this.manualJournalsService.editJournalEntries( - tenantId, - manualJournalId, - manualJournalDTO, - user - ); - return res.status(200).send({ - id: manualJournal.id, - message: 'The manual journal has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the given manual journal details. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getManualJournal(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: manualJournalId } = req.params; - - try { - const manualJournal = await this.manualJournalsService.getManualJournal( - tenantId, - manualJournalId - ); - return res.status(200).send({ - manual_journal: this.transfromToResponse(manualJournal), - }); - } catch (error) { - next(error); - } - } - - /** - * Publish the given manual journal. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async publishManualJournal(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: manualJournalId } = req.params; - - try { - await this.manualJournalsService.publishManualJournal( - tenantId, - manualJournalId - ); - - return res.status(200).send({ - id: manualJournalId, - message: 'The manual journal has been published successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Delete the given manual journal. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async deleteManualJournal(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: manualJournalId } = req.params; - - try { - await this.manualJournalsService.deleteManualJournal( - tenantId, - manualJournalId - ); - - return res.status(200).send({ - id: manualJournalId, - message: 'Manual journal has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve manual journals list. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getManualJournalsList(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = { - sortOrder: 'asc', - columnSortBy: 'created_at', - page: 1, - pageSize: 12, - ...this.matchedQueryData(req), - }; - try { - const { - manualJournals, - pagination, - filterMeta, - } = await this.manualJournalsService.getManualJournals(tenantId, filter); - - return res.status(200).send({ - manual_journals: this.transfromToResponse(manualJournals), - pagination: this.transfromToResponse(pagination), - filter_meta: this.transfromToResponse(filterMeta), - }); - } catch (error) { - next(error); - } - } - - /** - * Catches all service errors. - * @param error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - catchServiceErrors(error, req: Request, res: Response, next: NextFunction) { - if (error instanceof ServiceError) { - if (error.errorType === 'manual_journal_not_found') { - res.boom.badRequest('Manual journal not found.', { - errors: [{ type: 'MANUAL.JOURNAL.NOT.FOUND', code: 100 }], - }); - } - if (error.errorType === 'credit_debit_not_equal_zero') { - return res.boom.badRequest( - 'Credit and debit should not be equal zero.', - { - errors: [ - { - type: 'CREDIT.DEBIT.SUMATION.SHOULD.NOT.EQUAL.ZERO', - code: 200, - }, - ], - } - ); - } - if (error.errorType === 'credit_debit_not_equal') { - return res.boom.badRequest('Credit and debit should be equal.', { - errors: [{ type: 'CREDIT.DEBIT.NOT.EQUALS', code: 300 }], - }); - } - if (error.errorType === 'acccounts_ids_not_found') { - return res.boom.badRequest( - 'Journal entries some of accounts ids not exists.', - { errors: [{ type: 'ACCOUNTS.IDS.NOT.FOUND', code: 400 }] } - ); - } - if (error.errorType === 'journal_number_exists') { - return res.boom.badRequest('Journal number should be unique.', { - errors: [{ type: 'JOURNAL.NUMBER.ALREADY.EXISTS', code: 500 }], - }); - } - if (error.errorType === 'ENTRIES_SHOULD_ASSIGN_WITH_CONTACT') { - return res.boom.badRequest('', { - errors: [ - { - type: 'ENTRIES_SHOULD_ASSIGN_WITH_CONTACT', - code: 600, - meta: this.transfromToResponse(error.payload), - }, - ], - }); - } - if (error.errorType === 'CONTACTS_SHOULD_ASSIGN_WITH_VALID_ACCOUNT') { - return res.boom.badRequest('', { - errors: [ - { - type: 'CONTACTS_SHOULD_ASSIGN_WITH_VALID_ACCOUNT', - code: 700, - meta: this.transfromToResponse(error.payload), - }, - ], - }); - } - if (error.errorType === 'contacts_not_found') { - return res.boom.badRequest('', { - errors: [{ type: 'CONTACTS_NOT_FOUND', code: 800 }], - }); - } - if (error.errorType === 'MANUAL_JOURNAL_ALREADY_PUBLISHED') { - return res.boom.badRequest('', { - errors: [{ type: 'MANUAL_JOURNAL_ALREADY_PUBLISHED', code: 900 }], - }); - } - if (error.errorType === 'MANUAL_JOURNAL_NO_REQUIRED') { - return res.boom.badRequest('', { - errors: [{ - type: 'MANUAL_JOURNAL_NO_REQUIRED', - message: 'The manual journal number required.', - code: 1000 - }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Media.ts b/server/src/api/controllers/Media.ts deleted file mode 100644 index 469d6564b..000000000 --- a/server/src/api/controllers/Media.ts +++ /dev/null @@ -1,212 +0,0 @@ - -import { Router, Request, Response, NextFunction } from 'express'; -import { - param, - query, - check, -} from 'express-validator'; -import { camelCase, upperFirst } from 'lodash'; -import { Inject, Service } from 'typedi'; -import { IMediaLinkDTO } from 'interfaces'; -import fs from 'fs'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseController from './BaseController'; -import MediaService from 'services/Media/MediaService'; -import { ServiceError } from 'exceptions'; - -const fsPromises = fs.promises; - -@Service() -export default class MediaController extends BaseController { - @Inject() - mediaService: MediaService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.post('/upload', [ - ...this.uploadValidationSchema, - ], - this.validationResult, - asyncMiddleware(this.uploadMedia.bind(this)), - this.handlerServiceErrors, - ); - router.post('/:id/link', [ - ...this.mediaIdParamSchema, - ...this.linkValidationSchema, - ], - this.validationResult, - asyncMiddleware(this.linkMedia.bind(this)), - this.handlerServiceErrors, - ); - router.delete('/', [ - ...this.deleteValidationSchema, - ], - this.validationResult, - asyncMiddleware(this.deleteMedia.bind(this)), - this.handlerServiceErrors, - ); - router.get('/:id', [ - ...this.mediaIdParamSchema, - ], - this.validationResult, - asyncMiddleware(this.getMedia.bind(this)), - this.handlerServiceErrors, - ); - return router; - } - - get uploadValidationSchema() { - return [ - // check('attachment'), - check('model_name').optional().trim().escape(), - check('model_id').optional().isNumeric().toInt(), - ]; - } - - get linkValidationSchema() { - return [ - check('model_name').exists().trim().escape(), - check('model_id').exists().isNumeric().toInt(), - ] - } - - get deleteValidationSchema() { - return [ - query('ids').exists().isArray(), - query('ids.*').exists().isNumeric().toInt(), - ]; - } - - get mediaIdParamSchema() { - return [ - param('id').exists().isNumeric().toInt(), - ]; - } - - /** - * Retrieve all or the given attachment ids. - * @param {Request} req - - * @param {Response} req - - * @param {NextFunction} req - - */ - async getMedia(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: mediaId } = req.params; - - try { - const media = await this.mediaService.getMedia(tenantId, mediaId); - return res.status(200).send({ media }); - } catch (error) { - next(error); - } - } - - /** - * Uploads media. - * @param {Request} req - - * @param {Response} req - - * @param {NextFunction} req - - */ - async uploadMedia(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { attachment } = req.files - - const linkMediaDTO: IMediaLinkDTO = this.matchedBodyData(req); - const modelName = linkMediaDTO.modelName - ? upperFirst(camelCase(linkMediaDTO.modelName)) : ''; - - try { - const media = await this.mediaService.upload(tenantId, attachment, modelName, linkMediaDTO.modelId); - return res.status(200).send({ media_id: media.id }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the given attachment ids from file system and database. - * @param {Request} req - - * @param {Response} req - - * @param {NextFunction} req - - */ - async deleteMedia(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { ids: mediaIds } = req.query; - - try { - await this.mediaService.deleteMedia(tenantId, mediaIds); - return res.status(200).send({ - media_ids: mediaIds - }); - } catch (error) { - next(error); - } - } - - /** - * Links the given media to the specific resource model. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async linkMedia(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: mediaId } = req.params; - const linkMediaDTO: IMediaLinkDTO = this.matchedBodyData(req); - const modelName = upperFirst(camelCase(linkMediaDTO.modelName)); - - try { - await this.mediaService.linkMedia(tenantId, mediaId, linkMediaDTO.modelId, modelName); - return res.status(200).send({ media_id: mediaId }); - } catch (error) { - next(error); - } - } - - /** - * Handler service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - handlerServiceErrors(error, req: Request, res: Response, next: NextFunction) { - if (error instanceof ServiceError) { - if (error.errorType === 'MINETYPE_NOT_SUPPORTED') { - return res.boom.badRequest(null, { - errors: [{ type: 'MINETYPE_NOT_SUPPORTED', code: 100, }] - }); - } - if (error.errorType === 'MEDIA_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'MEDIA_NOT_FOUND', code: 200 }] - }); - } - if (error.errorType === 'MODEL_NAME_HAS_NO_MEDIA') { - return res.boom.badRequest(null, { - errors: [{ type: 'MODEL_NAME_HAS_NO_MEDIA', code: 300 }] - }); - } - if (error.errorType === 'MODEL_ID_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'MODEL_ID_NOT_FOUND', code: 400 }] - }); - } - if (error.errorType === 'MEDIA_IDS_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'MEDIA_IDS_NOT_FOUND', code: 500 }], - }); - } - if (error.errorType === 'MEDIA_LINK_EXISTS') { - return res.boom.badRequest(null, { - errors: [{ type: 'MEDIA_LINK_EXISTS', code: 600 }], - }); - } - } - next(error); - } -}; diff --git a/server/src/api/controllers/Miscellaneous/index.ts b/server/src/api/controllers/Miscellaneous/index.ts deleted file mode 100644 index 8d7099a12..000000000 --- a/server/src/api/controllers/Miscellaneous/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { Router, Request, Response, NextFunction } from 'express'; -import BaseController from 'api/controllers/BaseController'; -import MiscService from 'services/Miscellaneous/MiscService'; -import DateFormatsService from 'services/Miscellaneous/DateFormats'; - -@Service() -export default class MiscController extends BaseController { - @Inject() - dateFormatsService: DateFormatsService; - - /** - * Express router. - */ - router() { - const router = Router(); - - router.get( - '/date_formats', - this.validationResult, - this.asyncMiddleware(this.dateFormats.bind(this)) - ); - return router; - } - - /** - * Retrieve date formats options. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - dateFormats(req: Request, res: Response, next: NextFunction) { - try { - const dateFormats = this.dateFormatsService.getDateFormats(); - - return res.status(200).send({ data: dateFormats }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/Organization.ts b/server/src/api/controllers/Organization.ts deleted file mode 100644 index edc04c4c4..000000000 --- a/server/src/api/controllers/Organization.ts +++ /dev/null @@ -1,200 +0,0 @@ -import { Inject, Service } from 'typedi'; -import moment from 'moment-timezone'; -import { Router, Request, Response, NextFunction } from 'express'; -import { check, ValidationChain } from 'express-validator'; - -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import JWTAuth from 'api/middleware/jwtAuth'; -import TenancyMiddleware from 'api/middleware/TenancyMiddleware'; -import SubscriptionMiddleware from 'api/middleware/SubscriptionMiddleware'; -import AttachCurrentTenantUser from 'api/middleware/AttachCurrentTenantUser'; -import OrganizationService from 'services/Organization'; -import { - ACCEPTED_CURRENCIES, - MONTHS, - ACCEPTED_LOCALES, -} from 'services/Organization/constants'; -import { DATE_FORMATS } from 'services/Miscellaneous/DateFormats/constants'; - -import { ServiceError } from 'exceptions'; -import BaseController from 'api/controllers/BaseController'; - -const ACCEPTED_LOCATIONS = ['libya']; - -@Service() -export default class OrganizationController extends BaseController { - @Inject() - organizationService: OrganizationService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - // Should before build tenant database the user be authorized and - // most important than that, should be subscribed to any plan. - router.use(JWTAuth); - router.use(AttachCurrentTenantUser); - router.use(TenancyMiddleware); - - router.use('/build', SubscriptionMiddleware('main')); - router.post( - '/build', - this.organizationValidationSchema, - this.validationResult, - asyncMiddleware(this.build.bind(this)), - this.handleServiceErrors.bind(this) - ); - router.put( - '/', - this.organizationValidationSchema, - this.validationResult, - this.asyncMiddleware(this.updateOrganization.bind(this)), - this.handleServiceErrors.bind(this) - ); - router.get( - '/', - asyncMiddleware(this.currentOrganization.bind(this)), - this.handleServiceErrors.bind(this) - ); - return router; - } - - /** - * Organization setup schema. - * @return {ValidationChain[]} - */ - private get organizationValidationSchema(): ValidationChain[] { - return [ - check('name').exists().trim(), - check('industry').optional().isString(), - check('location').exists().isString().isIn(ACCEPTED_LOCATIONS), - check('base_currency').exists().isIn(ACCEPTED_CURRENCIES), - check('timezone').exists().isIn(moment.tz.names()), - check('fiscal_year').exists().isIn(MONTHS), - check('language').exists().isString().isIn(ACCEPTED_LOCALES), - check('date_format').optional().isIn(DATE_FORMATS), - ]; - } - - /** - * Builds tenant database and migrate database schema. - * @param {Request} req - Express request. - * @param {Response} res - Express response. - * @param {NextFunction} next - */ - private async build(req: Request, res: Response, next: Function) { - const { tenantId } = req; - const buildDTO = this.matchedBodyData(req); - - try { - const result = await this.organizationService.buildRunJob( - tenantId, - buildDTO - ); - return res.status(200).send({ - type: 'success', - code: 'ORGANIZATION.DATABASE.INITIALIZED', - message: 'The organization database has been initialized.', - data: result, - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the current organization of the associated authenticated user. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private async currentOrganization( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - - try { - const organization = await this.organizationService.currentOrganization( - tenantId - ); - return res.status(200).send({ - organization: this.transfromToResponse(organization), - }); - } catch (error) { - next(error); - } - } - - /** - * Update the organization information. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - * @returns - */ - private async updateOrganization( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const tenantDTO = this.matchedBodyData(req); - - try { - await this.organizationService.updateOrganization( - tenantId, - tenantDTO - ); - return res.status(200).send( - this.transfromToResponse({ - tenantId, - message: 'Organization information has been updated successfully.', - }) - ); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private handleServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'tenant_not_found') { - return res.status(400).send({ - errors: [{ type: 'TENANT.NOT.FOUND', code: 100 }], - }); - } - if (error.errorType === 'TENANT_ALREADY_BUILT') { - return res.status(400).send({ - errors: [{ type: 'TENANT_ALREADY_BUILT', code: 200 }], - }); - } - if (error.errorType === 'TENANT_IS_BUILDING') { - return res.status(400).send({ - errors: [{ type: 'TENANT_IS_BUILDING', code: 300 }], - }); - } - if (error.errorType === 'BASE_CURRENCY_MUTATE_LOCKED') { - return res.status(400).send({ - errors: [{ type: 'BASE_CURRENCY_MUTATE_LOCKED', code: 400 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/OrganizationDashboard.ts b/server/src/api/controllers/OrganizationDashboard.ts deleted file mode 100644 index 9e408d06d..000000000 --- a/server/src/api/controllers/OrganizationDashboard.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { Request, Response, Router } from 'express'; -import BaseController from 'api/controllers/BaseController'; -import OrganizationService from 'services/Organization'; - -@Service() -export default class OrganizationDashboardController extends BaseController { - @Inject() - organizationService: OrganizationService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/base_currency_mutate', - this.baseCurrencyMutateAbility.bind(this) - ); - return router; - } - - private async baseCurrencyMutateAbility( - req: Request, - res: Response, - next: Function - ) { - const { tenantId } = req; - - try { - const abilities = - await this.organizationService.mutateBaseCurrencyAbility(tenantId); - - return res.status(200).send({ abilities }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/Ping.ts b/server/src/api/controllers/Ping.ts deleted file mode 100644 index df199d8c2..000000000 --- a/server/src/api/controllers/Ping.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Router, Request, Response } from 'express'; - -export default class Ping { - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/', - this.ping, - ); - return router; - } - - /** - * Handle the ping request. - * @param {Request} req - * @param {Response} res - */ - async ping(req: Request, res: Response) - { - return res.status(200).send({ - server: true, - }); - } -} \ No newline at end of file diff --git a/server/src/api/controllers/Purchases/Bills.ts b/server/src/api/controllers/Purchases/Bills.ts deleted file mode 100644 index 55d974e88..000000000 --- a/server/src/api/controllers/Purchases/Bills.ts +++ /dev/null @@ -1,475 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { check, param, query } from 'express-validator'; -import * as R from 'ramda'; -import { Service, Inject } from 'typedi'; -import { IBillDTO, IBillEditDTO } from 'interfaces'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BillsService from 'services/Purchases/Bills'; -import BaseController from 'api/controllers/BaseController'; -import ItemsService from 'services/Items/ItemsService'; -import TenancyService from 'services/Tenancy/TenancyService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { ServiceError } from 'exceptions'; - -@Service() -export default class BillsController extends BaseController { - @Inject() - itemsService: ItemsService; - - @Inject() - billsService: BillsService; - - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.post( - '/', - [...this.billValidationSchema], - this.validationResult, - asyncMiddleware(this.newBill.bind(this)), - this.handleServiceError - ); - router.post( - '/:id/open', - [...this.specificBillValidationSchema], - this.validationResult, - asyncMiddleware(this.openBill.bind(this)), - this.handleServiceError - ); - router.post( - '/:id', - [...this.billEditValidationSchema, ...this.specificBillValidationSchema], - this.validationResult, - asyncMiddleware(this.editBill.bind(this)), - this.handleServiceError - ); - router.get( - '/due', - [...this.dueBillsListingValidationSchema], - this.validationResult, - asyncMiddleware(this.getDueBills.bind(this)), - this.handleServiceError - ); - router.get( - '/:id', - [...this.specificBillValidationSchema], - this.validationResult, - asyncMiddleware(this.getBill.bind(this)), - this.handleServiceError - ); - router.get( - '/', - [...this.billsListingValidationSchema], - this.validationResult, - asyncMiddleware(this.billsList.bind(this)), - this.handleServiceError, - this.dynamicListService.handlerErrorsToResponse - ); - router.delete( - '/:id', - [...this.specificBillValidationSchema], - this.validationResult, - asyncMiddleware(this.deleteBill.bind(this)), - this.handleServiceError - ); - return router; - } - - /** - * Common validation schema. - */ - get billValidationSchema() { - return [ - check('bill_number').exists().trim().escape(), - check('reference_no').optional().trim().escape(), - check('bill_date').exists().isISO8601(), - check('due_date').optional().isISO8601(), - check('vendor_id').exists().isNumeric().toInt(), - check('note').optional().trim().escape(), - check('open').default(false).isBoolean().toBoolean(), - - check('entries').isArray({ min: 1 }), - - check('entries.*.index').exists().isNumeric().toInt(), - check('entries.*.item_id').exists().isNumeric().toInt(), - check('entries.*.rate').exists().isNumeric().toFloat(), - check('entries.*.quantity').exists().isNumeric().toFloat(), - check('entries.*.discount') - .optional({ nullable: true }) - .isNumeric() - .toFloat(), - check('entries.*.description') - .optional({ nullable: true }) - .trim() - .escape(), - check('entries.*.landed_cost') - .optional({ nullable: true }) - .isBoolean() - .toBoolean(), - ]; - } - - /** - * Common validation schema. - */ - get billEditValidationSchema() { - return [ - check('bill_number').optional().trim().escape(), - check('reference_no').optional().trim().escape(), - check('bill_date').exists().isISO8601(), - check('due_date').optional().isISO8601(), - check('vendor_id').exists().isNumeric().toInt(), - check('note').optional().trim().escape(), - check('open').default(false).isBoolean().toBoolean(), - - check('entries').isArray({ min: 1 }), - - check('entries.*.id').optional().isNumeric().toInt(), - check('entries.*.index').exists().isNumeric().toInt(), - check('entries.*.item_id').exists().isNumeric().toInt(), - check('entries.*.rate').exists().isNumeric().toFloat(), - check('entries.*.quantity').exists().isNumeric().toFloat(), - check('entries.*.discount') - .optional({ nullable: true }) - .isNumeric() - .toFloat(), - check('entries.*.description') - .optional({ nullable: true }) - .trim() - .escape(), - check('entries.*.landed_cost') - .optional({ nullable: true }) - .isBoolean() - .toBoolean(), - ]; - } - - /** - * Bill validation schema. - */ - get specificBillValidationSchema() { - return [param('id').exists().isNumeric().toInt()]; - } - - /** - * Bills list validation schema. - */ - get billsListingValidationSchema() { - return [ - query('view_slug').optional().isString().trim(), - query('stringified_filter_roles').optional().isJSON(), - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - query('column_sort_by').optional(), - query('sort_order').optional().isIn(['desc', 'asc']), - query('search_keyword').optional({ nullable: true }).isString().trim(), - ]; - } - - get dueBillsListingValidationSchema() { - return [ - query('vendor_id').optional().trim().escape(), - query('payment_made_id').optional().trim().escape(), - ]; - } - - /** - * Creates a new bill and records journal transactions. - * @param {Request} req - * @param {Response} res - * @param {Function} next - */ - async newBill(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const billDTO: IBillDTO = this.matchedBodyData(req); - - try { - const storedBill = await this.billsService.createBill( - tenantId, - billDTO, - user - ); - - return res.status(200).send({ - id: storedBill.id, - message: 'The bill has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edit bill details with associated entries and rewrites journal transactions. - * @param {Request} req - * @param {Response} res - */ - async editBill(req: Request, res: Response, next: NextFunction) { - const { id: billId } = req.params; - const { tenantId, user } = req; - const billDTO: IBillEditDTO = this.matchedBodyData(req); - - try { - await this.billsService.editBill(tenantId, billId, billDTO, user); - - return res.status(200).send({ - id: billId, - message: 'The bill has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Open the given bill. - * @param {Request} req - - * @param {Response} res - - */ - async openBill(req: Request, res: Response, next: NextFunction) { - const { id: billId } = req.params; - const { tenantId } = req; - - try { - await this.billsService.openBill(tenantId, billId); - - return res.status(200).send({ - id: billId, - message: 'The bill has been opened successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the given bill details with associated item entries. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async getBill(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: billId } = req.params; - - try { - const bill = await this.billsService.getBill(tenantId, billId); - - return res.status(200).send(this.transfromToResponse({ bill })); - } catch (error) { - next(error); - } - } - - /** - * Deletes the given bill with associated entries and journal transactions. - * @param {Request} req - - * @param {Response} res - - * @return {Response} - */ - async deleteBill(req: Request, res: Response, next: NextFunction) { - const billId = req.params.id; - const { tenantId } = req; - - try { - await this.billsService.deleteBill(tenantId, billId); - return res.status(200).send({ - id: billId, - message: 'The given bill deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Listing bills with pagination meta. - * @param {Request} req - - * @param {Response} res - - * @return {Response} - */ - public async billsList(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = { - page: 1, - pageSize: 12, - sortOrder: 'asc', - columnSortBy: 'created_at', - ...this.matchedQueryData(req), - }; - - try { - const { bills, pagination, filterMeta } = - await this.billsService.getBills(tenantId, filter); - - return res.status(200).send({ - bills: this.transfromToResponse(bills), - pagination: this.transfromToResponse(pagination), - filter_meta: this.transfromToResponse(filterMeta), - }); - } catch (error) { - next(error); - } - } - - /** - * Listing all due bills of the given vendor. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - public async getDueBills(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { vendorId } = this.matchedQueryData(req); - - try { - const bills = await this.billsService.getDueBills(tenantId, vendorId); - return res.status(200).send({ bills }); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private handleServiceError( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'BILL_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'BILL_NOT_FOUND', code: 100 }], - }); - } - if (error.errorType === 'BILL_NUMBER_EXISTS') { - return res.status(400).send({ - errors: [{ type: 'BILL.NUMBER.EXISTS', code: 500 }], - }); - } - if (error.errorType === 'BILL_VENDOR_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'BILL_VENDOR_NOT_FOUND', code: 600 }], - }); - } - if (error.errorType === 'BILL_ITEMS_NOT_PURCHASABLE') { - return res.status(400).send({ - errors: [{ type: 'BILL_ITEMS_NOT_PURCHASABLE', code: 700 }], - }); - } - if (error.errorType === 'NOT_PURCHASE_ABLE_ITEMS') { - return res.status(400).send({ - errors: [{ type: 'NOT_PURCHASE_ABLE_ITEMS', code: 800 }], - }); - } - if (error.errorType === 'BILL_ITEMS_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'ITEMS.IDS.NOT.FOUND', code: 400 }], - }); - } - if (error.errorType === 'BILL_ENTRIES_IDS_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'BILL_ENTRIES_IDS_NOT_FOUND', code: 900 }], - }); - } - if (error.errorType === 'ITEMS_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'ITEMS_NOT_FOUND', code: 1000 }], - }); - } - if (error.errorType === 'BILL_ALREADY_OPEN') { - return res.boom.badRequest(null, { - errors: [{ type: 'BILL_ALREADY_OPEN', code: 1100 }], - }); - } - if (error.errorType === 'contact_not_found') { - return res.boom.badRequest(null, { - errors: [ - { - type: 'VENDOR_NOT_FOUND', - message: 'Vendor not found.', - code: 1200, - }, - ], - }); - } - if (error.errorType === 'BILL_HAS_ASSOCIATED_PAYMENT_ENTRIES') { - return res.status(400).send({ - errors: [ - { - type: 'BILL_HAS_ASSOCIATED_PAYMENT_ENTRIES', - message: - 'Cannot delete bill that has associated payment transactions.', - code: 1200, - }, - ], - }); - } - if (error.errorType === 'BILL_HAS_ASSOCIATED_LANDED_COSTS') { - return res.status(400).send({ - errors: [ - { - type: 'BILL_HAS_ASSOCIATED_LANDED_COSTS', - message: - 'Cannot delete bill that has associated landed cost transactions.', - code: 1300, - }, - ], - }); - } - if (error.errorType === 'ENTRIES_ALLOCATED_COST_COULD_NOT_DELETED') { - return res.status(400).send({ - errors: [ - { - type: 'ENTRIES_ALLOCATED_COST_COULD_NOT_DELETED', - code: 1400, - message: - 'Bill entries that have landed cost type can not be deleted.', - }, - ], - }); - } - if ( - error.errorType === 'LOCATED_COST_ENTRIES_SHOULD_BIGGE_THAN_NEW_ENTRIES' - ) { - return res.status(400).send({ - errors: [ - { - type: 'LOCATED_COST_ENTRIES_SHOULD_BIGGE_THAN_NEW_ENTRIES', - code: 1500, - }, - ], - }); - } - if (error.errorType === 'LANDED_COST_ENTRIES_SHOULD_BE_INVENTORY_ITEMS') { - return res.status(400).send({ - errors: [ - { - type: 'LANDED_COST_ENTRIES_SHOULD_BE_INVENTORY_ITEMS', - message: - 'Landed cost entries should be only with inventory items.', - code: 1600, - }, - ], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Purchases/BillsPayments.ts b/server/src/api/controllers/Purchases/BillsPayments.ts deleted file mode 100644 index 666f57012..000000000 --- a/server/src/api/controllers/Purchases/BillsPayments.ts +++ /dev/null @@ -1,431 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { Service, Inject } from 'typedi'; -import { check, param, query, ValidationChain } from 'express-validator'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import { ServiceError } from 'exceptions'; -import BaseController from 'api/controllers/BaseController'; -import BillPaymentsService from 'services/Purchases/BillPayments/BillPayments'; -import BillPaymentsPages from 'services/Purchases/BillPayments/BillPaymentsPages'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import AccountsService from 'services/Accounts/AccountsService'; - - -/** - * Bills payments controller. - * @service - */ -@Service() -export default class BillsPayments extends BaseController { - @Inject() - billPaymentService: BillPaymentsService; - - @Inject() - accountsService: AccountsService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject() - billPaymentsPages: BillPaymentsPages; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.post( - '/', - [...this.billPaymentSchemaValidation], - this.validationResult, - asyncMiddleware(this.createBillPayment.bind(this)), - this.handleServiceError - ); - router.post( - '/:id', - [ - ...this.billPaymentSchemaValidation, - ...this.specificBillPaymentValidateSchema, - ], - this.validationResult, - asyncMiddleware(this.editBillPayment.bind(this)), - this.handleServiceError - ); - router.delete( - '/:id', - [...this.specificBillPaymentValidateSchema], - this.validationResult, - asyncMiddleware(this.deleteBillPayment.bind(this)), - this.handleServiceError - ); - router.get( - '/new-page/entries', - [query('vendor_id').exists()], - this.validationResult, - asyncMiddleware(this.getBillPaymentNewPageEntries.bind(this)), - this.handleServiceError - ); - router.get( - '/:id/edit-page', - this.specificBillPaymentValidateSchema, - this.validationResult, - asyncMiddleware(this.getBillPaymentEditPage.bind(this)), - this.handleServiceError - ); - router.get( - '/:id/bills', - this.specificBillPaymentValidateSchema, - this.validationResult, - asyncMiddleware(this.getPaymentBills.bind(this)), - this.handleServiceError - ); - router.get( - '/:id', - this.specificBillPaymentValidateSchema, - this.validationResult, - asyncMiddleware(this.getBillPayment.bind(this)), - this.handleServiceError - ); - router.get( - '/', - this.listingValidationSchema, - this.validationResult, - asyncMiddleware(this.getBillsPayments.bind(this)), - this.handleServiceError, - this.dynamicListService.handlerErrorsToResponse - ); - - return router; - } - - /** - * Bill payments schema validation. - */ - get billPaymentSchemaValidation(): ValidationChain[] { - return [ - check('vendor_id').exists().isNumeric().toInt(), - check('payment_account_id').exists().isNumeric().toInt(), - check('payment_number').optional({ nullable: true }).trim().escape(), - check('payment_date').exists(), - check('statement').optional().trim().escape(), - check('reference').optional().trim().escape(), - - check('entries').exists().isArray({ min: 1 }), - check('entries.*.bill_id').exists().isNumeric().toInt(), - check('entries.*.payment_amount').exists().isNumeric().toInt(), - ]; - } - - /** - * Specific bill payment schema validation. - */ - get specificBillPaymentValidateSchema(): ValidationChain[] { - return [param('id').exists().isNumeric().toInt()]; - } - - /** - * Bills payment list validation schema. - */ - get listingValidationSchema(): ValidationChain[] { - return [ - query('custom_view_id').optional().isNumeric().toInt(), - query('stringified_filter_roles').optional().isJSON(), - query('column_sort_by').optional(), - query('sort_order').optional().isIn(['desc', 'asc']), - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - query('search_keyword').optional({ nullable: true }).isString().trim(), - ]; - } - - /** - * Retrieve bill payment new page entries. - * @param {Request} req - - * @param {Response} res - - */ - async getBillPaymentNewPageEntries(req: Request, res: Response) { - const { tenantId } = req; - const { vendorId } = this.matchedQueryData(req); - - try { - const entries = await this.billPaymentsPages.getNewPageEntries( - tenantId, - vendorId - ); - return res.status(200).send({ - entries: this.transfromToResponse(entries), - }); - } catch (error) {} - } - - /** - * Retrieve the bill payment edit page details. - * @param {Request} req - * @param {Response} res - */ - async getBillPaymentEditPage( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const { id: paymentReceiveId } = req.params; - - try { - const { - billPayment, - entries, - } = await this.billPaymentsPages.getBillPaymentEditPage( - tenantId, - paymentReceiveId - ); - - return res.status(200).send({ - bill_payment: this.transfromToResponse(billPayment), - entries: this.transfromToResponse(entries), - }); - } catch (error) { - next(error); - } - } - - /** - * Creates a bill payment. - * @async - * @param {Request} req - * @param {Response} res - * @param {Response} res - */ - async createBillPayment(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const billPaymentDTO = this.matchedBodyData(req); - - try { - const billPayment = await this.billPaymentService.createBillPayment( - tenantId, - billPaymentDTO - ); - - return res.status(200).send({ - id: billPayment.id, - message: 'Payment made has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edits the given bill payment details. - * @param {Request} req - * @param {Response} res - */ - async editBillPayment(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const billPaymentDTO = this.matchedBodyData(req); - const { id: billPaymentId } = req.params; - - try { - const paymentMade = await this.billPaymentService.editBillPayment( - tenantId, - billPaymentId, - billPaymentDTO - ); - return res.status(200).send({ - id: paymentMade.id, - message: 'Payment made has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the bill payment and revert the journal - * transactions with accounts balance. - * @param {Request} req - - * @param {Response} res - - * @return {Response} res - - */ - async deleteBillPayment(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: billPaymentId } = req.params; - - try { - await this.billPaymentService.deleteBillPayment(tenantId, billPaymentId); - - return res.status(200).send({ - id: billPaymentId, - message: 'Payment made has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the bill payment. - * @param {Request} req - * @param {Response} res - */ - async getBillPayment(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: billPaymentId } = req.params; - - try { - const billPayment = await this.billPaymentService.getBillPayment( - tenantId, - billPaymentId - ); - - return res.status(200).send({ - bill_payment: this.transfromToResponse(billPayment), - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve associated bills for the given payment made. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getPaymentBills(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: billPaymentId } = req.params; - - try { - const bills = await this.billPaymentService.getPaymentBills( - tenantId, - billPaymentId - ); - return res.status(200).send({ bills }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve bills payments listing with pagination metadata. - * @param {Request} req - - * @param {Response} res - - * @return {Response} - */ - async getBillsPayments(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const billPaymentsFilter = { - page: 1, - pageSize: 12, - filterRoles: [], - sortOrder: 'asc', - columnSortBy: 'created_at', - ...this.matchedQueryData(req), - }; - - try { - const { - billPayments, - pagination, - filterMeta, - } = await this.billPaymentService.listBillPayments( - tenantId, - billPaymentsFilter - ); - - return res.status(200).send({ - bill_payments: this.transfromToResponse(billPayments), - pagination: this.transfromToResponse(pagination), - filter_meta: this.transfromToResponse(filterMeta), - }); - } catch (error) { - next(error); - } - } - - /** - * Handle service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - handleServiceError( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'PAYMENT_MADE_NOT_FOUND') { - return res.status(404).send({ - message: 'Payment made not found.', - errors: [{ type: 'BILL_NOT_FOUND', code: 100 }], - }); - } - if (error.errorType === 'VENDOR_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'BILL.PAYMENT.VENDOR.NOT.FOUND', code: 200 }], - }); - } - if (error.errorType === 'PAYMENT_ACCOUNT_NOT_CURRENT_ASSET_TYPE') { - return res.status(400).send({ - errors: [ - { type: 'PAYMENT_ACCOUNT.NOT.CURRENT_ASSET.TYPE', code: 300 }, - ], - }); - } - if (error.errorType === 'BILL_PAYMENT_NUMBER_NOT_UNQIUE') { - return res.status(400).send({ - errors: [{ type: 'PAYMENT.NUMBER.NOT.UNIQUE', code: 400 }], - }); - } - if (error.errorType === 'PAYMENT_ACCOUNT_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'PAYMENT.ACCOUNT.NOT.FOUND', code: 500 }], - }); - } - if (error.errorType === 'PAYMENT_ACCOUNT_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'PAYMENT.ACCOUNT.NOT.FOUND', code: 600 }], - }); - } - if (error.errorType === '') { - return res.status(400).send({ - errors: [{ type: 'BILLS.IDS.NOT.EXISTS', code: 700 }], - }); - } - if (error.errorType === 'BILL_PAYMENT_ENTRIES_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'ENTEIES.IDS.NOT.FOUND', code: 800 }], - }); - } - if (error.errorType === 'INVALID_BILL_PAYMENT_AMOUNT') { - return res.status(400).send({ - errors: [{ type: 'INVALID_BILL_PAYMENT_AMOUNT', code: 900 }], - }); - } - if (error.errorType === 'BILL_ENTRIES_IDS_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'BILLS_NOT_FOUND', code: 1000 }], - }); - } - if (error.errorType === 'PAYMENT_NUMBER_SHOULD_NOT_MODIFY') { - return res.status(400).send({ - errors: [{ type: 'PAYMENT_NUMBER_SHOULD_NOT_MODIFY', code: 1100 }], - }); - } - if (error.errorType === 'BILLS_NOT_OPENED_YET') { - return res.status(400).send({ - errors: [{ - type: 'BILLS_NOT_OPENED_YET', - message: 'The given bills are not opened yet.', - code: 1200, - }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Purchases/LandedCost.ts b/server/src/api/controllers/Purchases/LandedCost.ts deleted file mode 100644 index bf149c2ff..000000000 --- a/server/src/api/controllers/Purchases/LandedCost.ts +++ /dev/null @@ -1,291 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { check, param, query } from 'express-validator'; -import { Service, Inject } from 'typedi'; -import { ServiceError } from 'exceptions'; -import AllocateLandedCostService from 'services/Purchases/LandedCost'; -import LandedCostListing from 'services/Purchases/LandedCost/LandedCostListing'; -import BaseController from '../BaseController'; - -@Service() -export default class BillAllocateLandedCost extends BaseController { - @Inject() - allocateLandedCost: AllocateLandedCostService; - - @Inject() - landedCostListing: LandedCostListing; - - /** - * Router constructor. - */ - public router() { - const router = Router(); - - router.post( - '/bills/:billId/allocate', - [ - check('transaction_id').exists().isInt(), - check('transaction_type').exists().isIn(['Expense', 'Bill']), - check('transaction_entry_id').exists().isInt(), - - check('allocation_method').exists().isIn(['value', 'quantity']), - check('description').optional({ nullable: true }), - - check('items').isArray({ min: 1 }), - check('items.*.entry_id').isInt(), - check('items.*.cost').isDecimal(), - ], - this.validationResult, - this.calculateLandedCost.bind(this), - this.handleServiceErrors - ); - router.delete( - '/:allocatedLandedCostId', - [param('allocatedLandedCostId').exists().isInt()], - this.validationResult, - this.deleteAllocatedLandedCost.bind(this), - this.handleServiceErrors - ); - router.get( - '/transactions', - [query('transaction_type').exists().isIn(['Expense', 'Bill'])], - this.validationResult, - this.getLandedCostTransactions.bind(this), - this.handleServiceErrors - ); - router.get( - '/bills/:billId/transactions', - [param('billId').exists()], - this.validationResult, - this.getBillLandedCostTransactions.bind(this), - this.handleServiceErrors - ); - return router; - } - - /** - * Retrieve the landed cost transactions of the given query. - * @param {Request} req - Request - * @param {Response} res - Response. - * @param {NextFunction} next - Next function. - */ - private async getLandedCostTransactions( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const query = this.matchedQueryData(req); - - try { - const transactions = - await this.landedCostListing.getLandedCostTransactions(tenantId, query); - return res.status(200).send({ transactions }); - } catch (error) { - next(error); - } - } - - /** - * Allocate landed cost. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - * @returns {Response} - */ - public async calculateLandedCost( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const { billId: purchaseInvoiceId } = req.params; - const landedCostDTO = this.matchedBodyData(req); - - try { - const { billLandedCost } = - await this.allocateLandedCost.allocateLandedCost( - tenantId, - landedCostDTO, - purchaseInvoiceId - ); - - return res.status(200).send({ - id: billLandedCost.id, - message: 'The items cost are located successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the allocated landed cost. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - * @returns {Response} - */ - public async deleteAllocatedLandedCost( - req: Request, - res: Response, - next: NextFunction - ): Promise { - const { tenantId } = req; - const { allocatedLandedCostId } = req.params; - - try { - await this.allocateLandedCost.deleteAllocatedLandedCost( - tenantId, - allocatedLandedCostId - ); - - return res.status(200).send({ - id: allocatedLandedCostId, - message: 'The allocated landed cost are delete successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the list unlocated landed costs. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - public async listLandedCosts( - req: Request, - res: Response, - next: NextFunction - ) { - const query = this.matchedQueryData(req); - const { tenantId } = req; - - try { - const transactions = - await this.landedCostListing.getLandedCostTransactions(tenantId, query); - return res.status(200).send({ transactions }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the bill landed cost transactions. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - public async getBillLandedCostTransactions( - req: Request, - res: Response, - next: NextFunction - ): Promise { - const { tenantId } = req; - const { billId } = req.params; - - try { - const transactions = - await this.landedCostListing.getBillLandedCostTransactions( - tenantId, - billId - ); - - return res.status(200).send({ - billId, - transactions: this.transfromToResponse(transactions) - }); - } catch (error) { - next(error); - } - } - - /** - * Handle service errors. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - * @param {Error} error - */ - public handleServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'BILL_NOT_FOUND') { - return res.status(400).send({ - errors: [ - { - type: 'BILL_NOT_FOUND', - message: 'The give bill id not found.', - code: 100, - }, - ], - }); - } - if (error.errorType === 'LANDED_COST_TRANSACTION_NOT_FOUND') { - return res.status(400).send({ - errors: [ - { - type: 'LANDED_COST_TRANSACTION_NOT_FOUND', - message: 'The given landed cost transaction id not found.', - code: 200, - }, - ], - }); - } - if (error.errorType === 'LANDED_COST_ENTRY_NOT_FOUND') { - return res.status(400).send({ - errors: [ - { - type: 'LANDED_COST_ENTRY_NOT_FOUND', - message: 'The given landed cost tranasction entry id not found.', - code: 300, - }, - ], - }); - } - if (error.errorType === 'COST_AMOUNT_BIGGER_THAN_UNALLOCATED_AMOUNT') { - return res.status(400).send({ - errors: [ - { - type: 'COST_AMOUNT_BIGGER_THAN_UNALLOCATED_AMOUNT', - code: 400, - }, - ], - }); - } - if (error.errorType === 'LANDED_COST_ITEMS_IDS_NOT_FOUND') { - return res.status(400).send({ - errors: [ - { - type: 'LANDED_COST_ITEMS_IDS_NOT_FOUND', - message: 'The given entries ids of purchase invoice not found.', - code: 500, - }, - ], - }); - } - if (error.errorType === 'BILL_LANDED_COST_NOT_FOUND') { - return res.status(400).send({ - errors: [ - { - type: 'BILL_LANDED_COST_NOT_FOUND', - message: 'The given bill located landed cost not found.', - code: 600, - }, - ], - }); - } - if (error.errorType === 'COST_TRASNACTION_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'COST_TRASNACTION_NOT_FOUND', code: 500 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Purchases/index.ts b/server/src/api/controllers/Purchases/index.ts deleted file mode 100644 index 2ee3686f2..000000000 --- a/server/src/api/controllers/Purchases/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Router } from 'express'; -import { Container, Service } from 'typedi'; -import Bills from 'api/controllers/Purchases/Bills' -import BillPayments from 'api/controllers/Purchases/BillsPayments'; -import BillAllocateLandedCost from './LandedCost'; - -@Service() -export default class PurchasesController { - - router() { - const router = Router(); - - router.use('/bills', Container.get(Bills).router()); - router.use('/bill_payments', Container.get(BillPayments).router()); - router.use('/landed-cost', Container.get(BillAllocateLandedCost).router()); - - return router; - } -} \ No newline at end of file diff --git a/server/src/api/controllers/Resources.ts b/server/src/api/controllers/Resources.ts deleted file mode 100644 index a0eee4338..000000000 --- a/server/src/api/controllers/Resources.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { Router, Request, Response, NextFunction } from 'express'; -import { param } from 'express-validator'; -import BaseController from './BaseController'; -import { ServiceError } from 'exceptions'; -import ResourceService from 'services/Resource/ResourceService'; - -@Service() -export default class ResourceController extends BaseController { - @Inject() - resourcesService: ResourceService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/:resource_model/meta', - [ - param('resource_model').exists().trim().escape() - ], - this.asyncMiddleware(this.resourceMeta.bind(this)), - this.handleServiceErrors - ); - return router; - } - - /** - * Retrieve resource model meta. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - * @returns {Response} - */ - public resourceMeta = ( - req: Request, - res: Response, - next: NextFunction - ): Response => { - const { tenantId } = req; - const { resource_model: resourceModel } = req.params; - - try { - const resourceMeta = this.resourcesService.getResourceMeta( - tenantId, - resourceModel - ); - return res.status(200).send({ - resource_meta: this.transfromToResponse( - resourceMeta, - ), - }); - } catch (error) { - next(error); - } - }; - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private handleServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'RESOURCE_MODEL_NOT_FOUND') { - return res.status(400).send({ - errors: [{ type: 'RESOURCE.MODEL.NOT.FOUND', code: 100 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Sales/PaymentReceives.ts b/server/src/api/controllers/Sales/PaymentReceives.ts deleted file mode 100644 index ad7282e6e..000000000 --- a/server/src/api/controllers/Sales/PaymentReceives.ts +++ /dev/null @@ -1,467 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { check, param, query, ValidationChain } from 'express-validator'; -import { Inject, Service } from 'typedi'; -import { IPaymentReceiveDTO } from 'interfaces'; -import BaseController from 'api/controllers/BaseController'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import PaymentReceiveService from 'services/Sales/PaymentReceives/PaymentsReceives'; -import PaymentReceivesPages from 'services/Sales/PaymentReceives/PaymentReceivesPages'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { ServiceError } from 'exceptions'; - -/** - * Payments receives controller. - * @service - */ -@Service() -export default class PaymentReceivesController extends BaseController { - @Inject() - paymentReceiveService: PaymentReceiveService; - - @Inject() - PaymentReceivesPages: PaymentReceivesPages; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.post( - '/:id', - this.editPaymentReceiveValidation, - this.validationResult, - asyncMiddleware(this.editPaymentReceive.bind(this)), - this.handleServiceErrors - ); - router.post( - '/', - [...this.newPaymentReceiveValidation], - this.validationResult, - asyncMiddleware(this.newPaymentReceive.bind(this)), - this.handleServiceErrors - ); - router.get( - '/:id/edit-page', - this.paymentReceiveValidation, - this.validationResult, - asyncMiddleware(this.getPaymentReceiveEditPage.bind(this)), - this.handleServiceErrors - ); - router.get( - '/new-page/entries', - [query('customer_id').exists().isNumeric().toInt()], - this.validationResult, - asyncMiddleware(this.getPaymentReceiveNewPageEntries.bind(this)), - this.getPaymentReceiveNewPageEntries.bind(this) - ); - router.get( - '/:id/invoices', - this.paymentReceiveValidation, - this.validationResult, - asyncMiddleware(this.getPaymentReceiveInvoices.bind(this)), - this.handleServiceErrors - ); - router.get( - '/:id', - this.paymentReceiveValidation, - this.asyncMiddleware(this.getPaymentReceive.bind(this)), - this.handleServiceErrors - ); - router.get( - '/', - this.validatePaymentReceiveList, - this.validationResult, - asyncMiddleware(this.getPaymentReceiveList.bind(this)), - this.handleServiceErrors, - this.dynamicListService.handlerErrorsToResponse - ); - router.delete( - '/:id', - this.paymentReceiveValidation, - this.validationResult, - asyncMiddleware(this.deletePaymentReceive.bind(this)), - this.handleServiceErrors - ); - return router; - } - - /** - * Payment receive schema. - * @return {Array} - */ - get paymentReceiveSchema(): ValidationChain[] { - return [ - check('customer_id').exists().isNumeric().toInt(), - check('payment_date').exists(), - check('reference_no').optional(), - check('deposit_account_id').exists().isNumeric().toInt(), - check('payment_receive_no').optional({ nullable: true }).trim().escape(), - check('statement').optional().trim().escape(), - - check('entries').isArray({ min: 1 }), - - check('entries.*.id').optional({ nullable: true }).isNumeric().toInt(), - check('entries.*.invoice_id').exists().isNumeric().toInt(), - check('entries.*.payment_amount').exists().isNumeric().toInt(), - ]; - } - - /** - * Payment receive list validation schema. - */ - get validatePaymentReceiveList(): ValidationChain[] { - return [ - query('stringified_filter_roles').optional().isJSON(), - - query('view_slug').optional({ nullable: true }).isString().trim(), - - query('column_sort_by').optional(), - query('sort_order').optional().isIn(['desc', 'asc']), - - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - - query('search_keyword').optional({ nullable: true }).isString().trim(), - ]; - } - - /** - * Validate payment receive parameters. - */ - get paymentReceiveValidation() { - return [param('id').exists().isNumeric().toInt()]; - } - - /** - * New payment receive validation schema. - * @return {Array} - */ - get newPaymentReceiveValidation() { - return [...this.paymentReceiveSchema]; - } - - /** - * Edit payment receive validation. - */ - get editPaymentReceiveValidation() { - return [ - param('id').exists().isNumeric().toInt(), - ...this.paymentReceiveSchema, - ]; - } - - /** - * Records payment receive to the given customer with associated invoices. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async newPaymentReceive(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const paymentReceive: IPaymentReceiveDTO = this.matchedBodyData(req); - - try { - const storedPaymentReceive = - await this.paymentReceiveService.createPaymentReceive( - tenantId, - paymentReceive, - user - ); - return res.status(200).send({ - id: storedPaymentReceive.id, - message: 'The payment receive has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edit the given payment receive. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async editPaymentReceive(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: paymentReceiveId } = req.params; - - const paymentReceive: IPaymentReceiveDTO = this.matchedBodyData(req); - - try { - await this.paymentReceiveService.editPaymentReceive( - tenantId, - paymentReceiveId, - paymentReceive, - user - ); - return res.status(200).send({ - id: paymentReceiveId, - message: 'The payment receive has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Delets the given payment receive id. - * @param {Request} req - * @param {Response} res - */ - async deletePaymentReceive(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: paymentReceiveId } = req.params; - - try { - await this.paymentReceiveService.deletePaymentReceive( - tenantId, - paymentReceiveId, - user - ); - - return res.status(200).send({ - id: paymentReceiveId, - message: 'The payment receive has been deleted successfully', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve sale invoices that associated with the given payment receive. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getPaymentReceiveInvoices( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const { id: paymentReceiveId } = req.params; - - try { - const saleInvoices = - await this.paymentReceiveService.getPaymentReceiveInvoices( - tenantId, - paymentReceiveId - ); - - return res.status(200).send(this.transfromToResponse({ saleInvoices })); - } catch (error) { - next(error); - } - } - - /** - * Retrieve payment receive list with pagination metadata. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async getPaymentReceiveList(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = { - sortOrder: 'asc', - columnSortBy: 'created_at', - page: 1, - pageSize: 12, - ...this.matchedQueryData(req), - }; - - try { - const { paymentReceives, pagination, filterMeta } = - await this.paymentReceiveService.listPaymentReceives(tenantId, filter); - - return res.status(200).send({ - payment_receives: this.transfromToResponse(paymentReceives), - pagination: this.transfromToResponse(pagination), - filter_meta: this.transfromToResponse(filterMeta), - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve payment receive new page receivable entries. - * @param {Request} req - Request. - * @param {Response} res - Response. - */ - async getPaymentReceiveNewPageEntries( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const { customerId } = this.matchedQueryData(req); - - try { - const entries = await this.PaymentReceivesPages.getNewPageEntries( - tenantId, - customerId - ); - return res.status(200).send({ - entries: this.transfromToResponse(entries), - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the given payment receive details. - * @asycn - * @param {Request} req - - * @param {Response} res - - */ - async getPaymentReceiveEditPage( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId, user } = req; - const { id: paymentReceiveId } = req.params; - - try { - const { paymentReceive, entries } = - await this.PaymentReceivesPages.getPaymentReceiveEditPage( - tenantId, - paymentReceiveId, - user - ); - - return res.status(200).send({ - payment_receive: this.transfromToResponse({ ...paymentReceive }), - entries: this.transfromToResponse([...entries]), - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the payment receive details. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getPaymentReceive(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: paymentReceiveId } = req.params; - - try { - const paymentReceive = await this.paymentReceiveService.getPaymentReceive( - tenantId, - paymentReceiveId - ); - - return res - .status(200) - .send({ payment_receive: this.transfromToResponse(paymentReceive) }); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param error - * @param req - * @param res - * @param next - */ - handleServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'DEPOSIT_ACCOUNT_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'DEPOSIT.ACCOUNT.NOT.EXISTS', code: 300 }], - }); - } - if (error.errorType === 'PAYMENT_RECEIVE_NO_EXISTS') { - return res.boom.badRequest(null, { - errors: [{ type: 'PAYMENT_RECEIVE_NO_EXISTS', code: 300 }], - }); - } - if (error.errorType === 'PAYMENT_RECEIVE_NOT_EXISTS') { - return res.boom.badRequest(null, { - errors: [{ type: 'PAYMENT_RECEIVE_NOT_EXISTS', code: 300 }], - }); - } - if (error.errorType === 'DEPOSIT_ACCOUNT_INVALID_TYPE') { - return res.boom.badRequest(null, { - errors: [{ type: 'DEPOSIT_ACCOUNT_INVALID_TYPE', code: 300 }], - }); - } - if (error.errorType === 'INVALID_PAYMENT_AMOUNT_INVALID') { - return res.boom.badRequest(null, { - errors: [{ type: 'INVALID_PAYMENT_AMOUNT', code: 300 }], - }); - } - if (error.errorType === 'INVOICES_IDS_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'INVOICES_IDS_NOT_FOUND', code: 300 }], - }); - } - if (error.errorType === 'ENTRIES_IDS_NOT_EXISTS') { - return res.boom.badRequest(null, { - errors: [{ type: 'ENTRIES_IDS_NOT_FOUND', code: 300 }], - }); - } - if (error.errorType === 'contact_not_found') { - return res.boom.badRequest(null, { - errors: [{ type: 'CUSTOMER_NOT_FOUND', code: 300 }], - }); - } - if (error.errorType === 'INVALID_PAYMENT_AMOUNT') { - return res.boom.badRequest(null, { - errors: [{ type: 'INVALID_PAYMENT_AMOUNT', code: 1000 }], - }); - } - if (error.errorType === 'INVOICES_NOT_DELIVERED_YET') { - return res.boom.badRequest(null, { - errors: [ - { - type: 'INVOICES_NOT_DELIVERED_YET', - code: 200, - data: { - not_delivered_invoices_ids: - error.payload.notDeliveredInvoices.map( - (invoice) => invoice.id - ), - }, - }, - ], - }); - } - if (error.errorType === 'PAYMENT_RECEIVE_NO_IS_REQUIRED') { - return res.boom.badRequest(null, { - errors: [{ type: 'PAYMENT_RECEIVE_NO_IS_REQUIRED', code: 1100 }], - }); - } - if (error.errorType === 'PAYMENT_CUSTOMER_SHOULD_NOT_UPDATE') { - return res.boom.badRequest(null, { - errors: [{ type: 'PAYMENT_CUSTOMER_SHOULD_NOT_UPDATE', code: 1200 }], - }); - } - if (error.errorType === 'PAYMENT_RECEIVE_NO_REQUIRED') { - return res.boom.badRequest(null, { - errors: [{ type: 'PAYMENT_RECEIVE_NO_REQUIRED', code: 1300 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Sales/SalesEstimates.ts b/server/src/api/controllers/Sales/SalesEstimates.ts deleted file mode 100644 index c8573c56c..000000000 --- a/server/src/api/controllers/Sales/SalesEstimates.ts +++ /dev/null @@ -1,454 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { check, param, query, matchedData } from 'express-validator'; -import { Inject, Service } from 'typedi'; -import { ISaleEstimateDTO } from 'interfaces'; -import BaseController from 'api/controllers/BaseController'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import SaleEstimateService from 'services/Sales/SalesEstimate'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { ServiceError } from 'exceptions'; -import SaleEstimatesPdfService from 'services/Sales/Estimates/SaleEstimatesPdf'; - -const ACCEPT_TYPE = { - APPLICATION_PDF: 'application/pdf', - APPLICATION_JSON: 'application/json', -}; -@Service() -export default class SalesEstimatesController extends BaseController { - @Inject() - saleEstimateService: SaleEstimateService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject() - saleEstimatesPdf: SaleEstimatesPdfService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.post( - '/', - [...this.estimateValidationSchema], - this.validationResult, - asyncMiddleware(this.newEstimate.bind(this)), - this.handleServiceErrors - ); - router.post( - '/:id/deliver', - [...this.validateSpecificEstimateSchema], - this.validationResult, - asyncMiddleware(this.deliverSaleEstimate.bind(this)), - this.handleServiceErrors - ); - router.post( - '/:id/approve', - [this.validateSpecificEstimateSchema], - this.validationResult, - asyncMiddleware(this.approveSaleEstimate.bind(this)), - this.handleServiceErrors - ); - router.post( - '/:id/reject', - [this.validateSpecificEstimateSchema], - this.validationResult, - asyncMiddleware(this.rejectSaleEstimate.bind(this)), - this.handleServiceErrors - ); - router.post( - '/:id', - [ - ...this.validateSpecificEstimateSchema, - ...this.estimateValidationSchema, - ], - this.validationResult, - asyncMiddleware(this.editEstimate.bind(this)), - this.handleServiceErrors - ); - router.delete( - '/:id', - [this.validateSpecificEstimateSchema], - this.validationResult, - asyncMiddleware(this.deleteEstimate.bind(this)), - this.handleServiceErrors - ); - router.get( - '/:id', - this.validateSpecificEstimateSchema, - this.validationResult, - asyncMiddleware(this.getEstimate.bind(this)), - this.handleServiceErrors - ); - router.get( - '/', - this.validateEstimateListSchema, - this.validationResult, - asyncMiddleware(this.getEstimates.bind(this)), - this.handleServiceErrors, - this.dynamicListService.handlerErrorsToResponse - ); - return router; - } - - /** - * Estimate validation schema. - */ - get estimateValidationSchema() { - return [ - check('customer_id').exists().isNumeric().toInt(), - check('estimate_date').exists().isISO8601(), - check('expiration_date').optional().isISO8601(), - check('reference').optional(), - check('estimate_number').optional().trim().escape(), - check('delivered').default(false).isBoolean().toBoolean(), - - check('entries').exists().isArray({ min: 1 }), - check('entries.*.index').exists().isNumeric().toInt(), - check('entries.*.item_id').exists().isNumeric().toInt(), - check('entries.*.quantity').exists().isNumeric().toInt(), - check('entries.*.rate').exists().isNumeric().toFloat(), - check('entries.*.description') - .optional({ nullable: true }) - .trim() - .escape(), - check('entries.*.discount') - .optional({ nullable: true }) - .isNumeric() - .toFloat(), - - check('note').optional().trim().escape(), - check('terms_conditions').optional().trim().escape(), - check('send_to_email').optional().trim().escape(), - ]; - } - - /** - * Specific sale estimate validation schema. - */ - get validateSpecificEstimateSchema() { - return [param('id').exists().isNumeric().toInt()]; - } - - /** - * Sales estimates list validation schema. - */ - get validateEstimateListSchema() { - return [ - query('view_slug').optional().isString().trim(), - query('stringified_filter_roles').optional().isJSON(), - query('column_sort_by').optional(), - query('sort_order').optional().isIn(['desc', 'asc']), - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - query('search_keyword').optional({ nullable: true }).isString().trim(), - ]; - } - - /** - * Handle create a new estimate with associated entries. - * @param {Request} req - - * @param {Response} res - - * @return {Response} res - - */ - async newEstimate(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const estimateDTO: ISaleEstimateDTO = this.matchedBodyData(req); - - try { - const storedEstimate = await this.saleEstimateService.createEstimate( - tenantId, - estimateDTO - ); - - return res.status(200).send({ - id: storedEstimate.id, - message: 'The sale estimate has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Handle update estimate details with associated entries. - * @param {Request} req - * @param {Response} res - */ - async editEstimate(req: Request, res: Response, next: NextFunction) { - const { id: estimateId } = req.params; - const { tenantId } = req; - const estimateDTO: ISaleEstimateDTO = this.matchedBodyData(req); - - try { - // Update estimate with associated estimate entries. - await this.saleEstimateService.editEstimate( - tenantId, - estimateId, - estimateDTO - ); - - return res.status(200).send({ - id: estimateId, - message: 'The sale estimate has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the given estimate with associated entries. - * @param {Request} req - * @param {Response} res - */ - async deleteEstimate(req: Request, res: Response, next: NextFunction) { - const { id: estimateId } = req.params; - const { tenantId } = req; - - try { - await this.saleEstimateService.deleteEstimate(tenantId, estimateId); - - return res.status(200).send({ - id: estimateId, - message: 'The sale estimate has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Deliver the given sale estimate. - * @param {Request} req - * @param {Response} res - */ - async deliverSaleEstimate(req: Request, res: Response, next: NextFunction) { - const { id: estimateId } = req.params; - const { tenantId } = req; - - try { - await this.saleEstimateService.deliverSaleEstimate(tenantId, estimateId); - - return res.status(200).send({ - id: estimateId, - message: 'The sale estimate has been delivered successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Marks the sale estimate as approved. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async approveSaleEstimate(req: Request, res: Response, next: NextFunction) { - const { id: estimateId } = req.params; - const { tenantId } = req; - - try { - await this.saleEstimateService.approveSaleEstimate(tenantId, estimateId); - - return res.status(200).send({ - id: estimateId, - message: 'The sale estimate has been approved successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Marks the sale estimate as rejected. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async rejectSaleEstimate(req: Request, res: Response, next: NextFunction) { - const { id: estimateId } = req.params; - const { tenantId } = req; - - try { - await this.saleEstimateService.rejectSaleEstimate(tenantId, estimateId); - - return res.status(200).send({ - id: estimateId, - message: 'The sale estimate has been rejected successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the given estimate with associated entries. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getEstimate(req: Request, res: Response, next: NextFunction) { - const { id: estimateId } = req.params; - const { tenantId } = req; - - try { - const estimate = await this.saleEstimateService.getEstimate( - tenantId, - estimateId - ); - // Response formatter. - res.format({ - // JSON content type. - [ACCEPT_TYPE.APPLICATION_JSON]: () => { - return res.status(200).send(this.transfromToResponse({ estimate })); - }, - // PDF content type. - [ACCEPT_TYPE.APPLICATION_PDF]: async () => { - const pdfContent = await this.saleEstimatesPdf.saleEstimatePdf( - tenantId, - estimate - ); - res.set({ - 'Content-Type': 'application/pdf', - 'Content-Length': pdfContent.length, - }); - res.send(pdfContent); - }, - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve estimates with pagination metadata. - * @param {Request} req - * @param {Response} res - */ - async getEstimates(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = { - sortOrder: 'asc', - columnSortBy: 'created_at', - page: 1, - pageSize: 12, - ...this.matchedQueryData(req), - }; - - try { - const { salesEstimates, pagination, filterMeta } = - await this.saleEstimateService.estimatesList(tenantId, filter); - - res.format({ - [ACCEPT_TYPE.APPLICATION_JSON]: () => { - return res.status(200).send( - this.transfromToResponse({ - salesEstimates, - pagination, - filterMeta, - }) - ); - }, - }); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private handleServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'ITEMS_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'ITEMS.IDS.NOT.EXISTS', code: 100 }], - }); - } - if (error.errorType === 'ENTRIES_IDS_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'ENTRIES.IDS.NOT.EXISTS', code: 200 }], - }); - } - if (error.errorType === 'ITEMS_IDS_NOT_EXISTS') { - return res.boom.badRequest(null, { - errors: [{ type: 'ITEMS.IDS.NOT.EXISTS', code: 300 }], - }); - } - if (error.errorType === 'NOT_PURCHASE_ABLE_ITEMS') { - return res.boom.badRequest(null, { - errors: [{ type: 'NOT_PURCHASABLE_ITEMS', code: 400 }], - }); - } - if (error.errorType === 'SALE_ESTIMATE_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_ESTIMATE_NOT_FOUND', code: 500 }], - }); - } - if (error.errorType === 'CUSTOMER_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'CUSTOMER_NOT_FOUND', code: 600 }], - }); - } - if (error.errorType === 'SALE_ESTIMATE_NUMBER_EXISTANCE') { - return res.boom.badRequest(null, { - errors: [{ type: 'ESTIMATE.NUMBER.IS.NOT.UNQIUE', code: 700 }], - }); - } - if (error.errorType === 'NOT_SELL_ABLE_ITEMS') { - return res.boom.badRequest(null, { - errors: [{ type: 'NOT_SELL_ABLE_ITEMS', code: 800 }], - }); - } - if (error.errorType === 'SALE_ESTIMATE_ALREADY_APPROVED') { - return res.boom.badRequest(null, { - errors: [{ type: 'CUSTOMER_NOT_FOUND', code: 1000 }], - }); - } - if (error.errorType === 'SALE_ESTIMATE_NOT_DELIVERED') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_ESTIMATE_NOT_DELIVERED', code: 1100 }], - }); - } - if (error.errorType === 'SALE_ESTIMATE_ALREADY_REJECTED') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_ESTIMATE_ALREADY_REJECTED', code: 1200 }], - }); - } - if (error.errorType === 'contact_not_found') { - return res.boom.badRequest(null, { - errors: [{ type: 'CUSTOMER_NOT_FOUND', code: 1300 }], - }); - } - if (error.errorType === 'SALE_ESTIMATE_NO_IS_REQUIRED') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_ESTIMATE_NO_IS_REQUIRED', code: 1400 }], - }); - } - if (error.errorType === 'SALE_ESTIMATE_CONVERTED_TO_INVOICE') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_ESTIMATE_CONVERTED_TO_INVOICE', code: 1500 }], - }); - } - if (error.errorType === 'SALE_ESTIMATE_ALREADY_DELIVERED') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_ESTIMATE_ALREADY_DELIVERED', code: 1600 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Sales/SalesInvoices.ts b/server/src/api/controllers/Sales/SalesInvoices.ts deleted file mode 100644 index 34e192f52..000000000 --- a/server/src/api/controllers/Sales/SalesInvoices.ts +++ /dev/null @@ -1,463 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { check, param, query } from 'express-validator'; -import { Service, Inject } from 'typedi'; -import BaseController from '../BaseController'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import SaleInvoiceService from 'services/Sales/SalesInvoices'; -import ItemsService from 'services/Items/ItemsService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { ServiceError } from 'exceptions'; -import { ISaleInvoiceDTO, ISaleInvoiceCreateDTO } from 'interfaces'; -import SaleInvoicePdf from 'services/Sales/SaleInvoicePdf'; - -const ACCEPT_TYPE = { - APPLICATION_PDF: 'application/pdf', - APPLICATION_JSON: 'application/json', -}; -@Service() -export default class SaleInvoicesController extends BaseController { - @Inject() - itemsService: ItemsService; - - @Inject() - saleInvoiceService: SaleInvoiceService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject() - saleInvoicePdf: SaleInvoicePdf; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.post( - '/', - [ - ...this.saleInvoiceValidationSchema, - check('from_estimate_id').optional().isNumeric().toInt(), - ], - this.validationResult, - asyncMiddleware(this.newSaleInvoice.bind(this)), - this.handleServiceErrors - ); - router.post( - '/:id/deliver', - [...this.specificSaleInvoiceValidation], - this.validationResult, - asyncMiddleware(this.deliverSaleInvoice.bind(this)), - this.handleServiceErrors - ); - router.post( - '/:id', - [ - ...this.saleInvoiceValidationSchema, - ...this.specificSaleInvoiceValidation, - ], - this.validationResult, - asyncMiddleware(this.editSaleInvoice.bind(this)), - this.handleServiceErrors - ); - router.delete( - '/:id', - this.specificSaleInvoiceValidation, - this.validationResult, - asyncMiddleware(this.deleteSaleInvoice.bind(this)), - this.handleServiceErrors - ); - router.get( - '/payable', - [...this.dueSalesInvoicesListValidationSchema], - this.validationResult, - asyncMiddleware(this.getPayableInvoices.bind(this)), - this.handleServiceErrors - ); - router.get( - '/:id', - this.specificSaleInvoiceValidation, - this.validationResult, - asyncMiddleware(this.getSaleInvoice.bind(this)), - this.handleServiceErrors - ); - router.get( - '/', - this.saleInvoiceListValidationSchema, - this.validationResult, - asyncMiddleware(this.getSalesInvoices.bind(this)), - this.handleServiceErrors, - this.dynamicListService.handlerErrorsToResponse - ); - return router; - } - - /** - * Sale invoice validation schema. - */ - get saleInvoiceValidationSchema() { - return [ - check('customer_id').exists().isNumeric().toInt(), - check('invoice_date').exists().isISO8601(), - check('due_date').exists().isISO8601(), - check('invoice_no').optional().trim().escape(), - check('reference_no').optional().trim().escape(), - check('delivered').default(false).isBoolean().toBoolean(), - - check('invoice_message').optional().trim().escape(), - check('terms_conditions').optional().trim().escape(), - - check('entries').exists().isArray({ min: 1 }), - - check('entries.*.index').exists().isNumeric().toInt(), - check('entries.*.item_id').exists().isNumeric().toInt(), - check('entries.*.rate').exists().isNumeric().toFloat(), - check('entries.*.quantity').exists().isNumeric().toFloat(), - check('entries.*.discount') - .optional({ nullable: true }) - .isNumeric() - .toFloat(), - check('entries.*.description') - .optional({ nullable: true }) - .trim() - .escape(), - ]; - } - - /** - * Specific sale invoice validation schema. - */ - get specificSaleInvoiceValidation() { - return [param('id').exists().isNumeric().toInt()]; - } - - /** - * Sales invoices list validation schema. - */ - get saleInvoiceListValidationSchema() { - return [ - query('view_slug').optional({ nullable: true }).isString().trim(), - query('stringified_filter_roles').optional().isJSON(), - query('column_sort_by').optional(), - query('sort_order').optional().isIn(['desc', 'asc']), - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - query('search_keyword').optional({ nullable: true }).isString().trim(), - ]; - } - - /** - * Due sale invoice list validation schema. - */ - get dueSalesInvoicesListValidationSchema() { - return [query('customer_id').optional().isNumeric().toInt()]; - } - - /** - * Creates a new sale invoice. - * @param {Request} req - * @param {Response} res - * @param {Function} next - */ - async newSaleInvoice(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const saleInvoiceDTO: ISaleInvoiceCreateDTO = this.matchedBodyData(req); - - try { - // Creates a new sale invoice with associated entries. - const storedSaleInvoice = await this.saleInvoiceService.createSaleInvoice( - tenantId, - saleInvoiceDTO, - user - ); - return res.status(200).send({ - id: storedSaleInvoice.id, - message: 'The sale invoice has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edit sale invoice details. - * @param {Request} req - * @param {Response} res - * @param {Function} next - */ - async editSaleInvoice(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: saleInvoiceId } = req.params; - const saleInvoiceOTD: ISaleInvoiceDTO = this.matchedBodyData(req); - - try { - // Update the given sale invoice details. - await this.saleInvoiceService.editSaleInvoice( - tenantId, - saleInvoiceId, - saleInvoiceOTD, - user - ); - return res.status(200).send({ - id: saleInvoiceId, - message: 'The sale invoice has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Deliver the given sale invoice. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - */ - async deliverSaleInvoice(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: saleInvoiceId } = req.params; - - try { - await this.saleInvoiceService.deliverSaleInvoice( - tenantId, - saleInvoiceId, - user - ); - return res.status(200).send({ - id: saleInvoiceId, - message: 'The given sale invoice has been delivered successfully', - }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the sale invoice with associated entries and journal transactions. - * @param {Request} req - * @param {Response} res - * @param {Function} next - */ - async deleteSaleInvoice(req: Request, res: Response, next: NextFunction) { - const { id: saleInvoiceId } = req.params; - const { tenantId, user } = req; - - try { - // Deletes the sale invoice with associated entries and journal transaction. - await this.saleInvoiceService.deleteSaleInvoice( - tenantId, - saleInvoiceId, - user - ); - - return res.status(200).send({ - id: saleInvoiceId, - message: 'The sale invoice has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the sale invoice with associated entries. - * @param {Request} req - Request object. - * @param {Response} res - Response object. - */ - async getSaleInvoice(req: Request, res: Response, next: NextFunction) { - const { id: saleInvoiceId } = req.params; - const { tenantId, user } = req; - - try { - const saleInvoice = await this.saleInvoiceService.getSaleInvoice( - tenantId, - saleInvoiceId, - user - ); - // Response formatter. - res.format({ - // JSON content type. - [ACCEPT_TYPE.APPLICATION_JSON]: () => { - return res.status(200).send(this.transfromToResponse({ saleInvoice })); - }, - // PDF content type. - [ACCEPT_TYPE.APPLICATION_PDF]: async () => { - const pdfContent = await this.saleInvoicePdf.saleInvoicePdf( - tenantId, - saleInvoice - ); - res.set({ - 'Content-Type': 'application/pdf', - 'Content-Length': pdfContent.length, - }); - res.send(pdfContent); - }, - }); - } catch (error) { - next(error); - } - } - /** - * Retrieve paginated sales invoices with custom view metadata. - * @param {Request} req - * @param {Response} res - * @param {Function} next - */ - public async getSalesInvoices( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const filter = { - sortOrder: 'asc', - columnSortBy: 'created_at', - page: 1, - pageSize: 12, - ...this.matchedQueryData(req), - }; - try { - const { salesInvoices, filterMeta, pagination } = - await this.saleInvoiceService.salesInvoicesList(tenantId, filter); - - return res.status(200).send({ - sales_invoices: this.transfromToResponse(salesInvoices), - pagination: this.transfromToResponse(pagination), - filter_meta: this.transfromToResponse(filterMeta), - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve due sales invoices. - * @param {Request} req - - * @param {Response} res - - * @param {NextFunction} next - - * @return {Response|void} - */ - public async getPayableInvoices( - req: Request, - res: Response, - next: NextFunction - ) { - const { tenantId } = req; - const { customerId } = this.matchedQueryData(req); - - try { - const salesInvoices = await this.saleInvoiceService.getPayableInvoices( - tenantId, - customerId - ); - return res.status(200).send({ - sales_invoices: this.transfromToResponse(salesInvoices), - }); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private handleServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'INVOICE_NUMBER_NOT_UNIQUE') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE.INVOICE.NUMBER.IS.EXISTS', code: 100 }], - }); - } - if (error.errorType === 'SALE_INVOICE_NOT_FOUND') { - return res.status(404).send({ - errors: [{ type: 'SALE.INVOICE.NOT.FOUND', code: 200 }], - }); - } - if (error.errorType === 'ENTRIES_ITEMS_IDS_NOT_EXISTS') { - return res.boom.badRequest(null, { - errors: [{ type: 'ENTRIES_ITEMS_IDS_NOT_EXISTS', code: 300 }], - }); - } - if (error.errorType === 'NOT_SELLABLE_ITEMS') { - return res.boom.badRequest(null, { - errors: [{ type: 'NOT_SELLABLE_ITEMS', code: 400 }], - }); - } - if (error.errorType === 'SALE_INVOICE_NO_NOT_UNIQUE') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_INVOICE_NO_NOT_UNIQUE', code: 500 }], - }); - } - if (error.errorType === 'ITEMS_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'ITEMS_NOT_FOUND', code: 600 }], - }); - } - if (error.errorType === 'ENTRIES_IDS_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'ENTRIES_IDS_NOT_FOUND', code: 700 }], - }); - } - if (error.errorType === 'NOT_SELL_ABLE_ITEMS') { - return res.boom.badRequest(null, { - errors: [{ type: 'NOT_SELL_ABLE_ITEMS', code: 800 }], - }); - } - if (error.errorType === 'contact_not_found') { - return res.boom.badRequest(null, { - errors: [{ type: 'CUSTOMER_NOT_FOUND', code: 900 }], - }); - } - if (error.errorType === 'SALE_INVOICE_ALREADY_DELIVERED') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_INVOICE_ALREADY_DELIVERED', code: 1000 }], - }); - } - if (error.errorType === 'INVOICE_HAS_ASSOCIATED_PAYMENT_ENTRIES') { - return res.boom.badRequest(null, { - errors: [ - { type: 'INVOICE_HAS_ASSOCIATED_PAYMENT_ENTRIES', code: 1100 }, - ], - }); - } - if (error.errorType === 'SALE_ESTIMATE_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'FROM_SALE_ESTIMATE_NOT_FOUND', code: 1200 }], - }); - } - if (error.errorType === 'SALE_ESTIMATE_CONVERTED_TO_INVOICE') { - return res.boom.badRequest(null, { - errors: [ - { - type: 'SALE_ESTIMATE_IS_ALREADY_CONVERTED_TO_INVOICE', - code: 1300, - }, - ], - }); - } - if (error.errorType === 'INVOICE_AMOUNT_SMALLER_THAN_PAYMENT_AMOUNT') { - return res.boom.badRequest(null, { - errors: [ - { type: 'INVOICE_AMOUNT_SMALLER_THAN_PAYMENT_AMOUNT', code: 1400 }, - ], - }); - } - if (error.errorType === 'SALE_INVOICE_NO_IS_REQUIRED') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_INVOICE_NO_IS_REQUIRED', code: 1500 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Sales/SalesReceipts.ts b/server/src/api/controllers/Sales/SalesReceipts.ts deleted file mode 100644 index 5277a75f4..000000000 --- a/server/src/api/controllers/Sales/SalesReceipts.ts +++ /dev/null @@ -1,375 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { check, param, query } from 'express-validator'; -import { Inject, Service } from 'typedi'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import SaleReceiptService from 'services/Sales/SalesReceipts'; -import SaleReceiptsPdfService from 'services/Sales/Receipts/SaleReceiptsPdfService'; -import BaseController from '../BaseController'; -import { ISaleReceiptDTO } from 'interfaces/SaleReceipt'; -import { ServiceError } from 'exceptions'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; - -@Service() -export default class SalesReceiptsController extends BaseController { - @Inject() - saleReceiptService: SaleReceiptService; - - @Inject() - saleReceiptsPdf: SaleReceiptsPdfService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.post( - '/:id/close', - [...this.specificReceiptValidationSchema], - this.validationResult, - asyncMiddleware(this.closeSaleReceipt.bind(this)), - this.handleServiceErrors - ); - - router.post( - '/:id', - [ - ...this.specificReceiptValidationSchema, - ...this.salesReceiptsValidationSchema, - ], - this.validationResult, - asyncMiddleware(this.editSaleReceipt.bind(this)), - this.handleServiceErrors - ); - router.post( - '/', - this.salesReceiptsValidationSchema, - this.validationResult, - asyncMiddleware(this.newSaleReceipt.bind(this)), - this.handleServiceErrors - ); - router.delete( - '/:id', - this.specificReceiptValidationSchema, - this.validationResult, - asyncMiddleware(this.deleteSaleReceipt.bind(this)), - this.handleServiceErrors - ); - router.get( - '/', - this.listSalesReceiptsValidationSchema, - this.validationResult, - asyncMiddleware(this.getSalesReceipts.bind(this)), - this.handleServiceErrors, - this.dynamicListService.handlerErrorsToResponse - ); - router.get( - '/:id', - [...this.specificReceiptValidationSchema], - this.validationResult, - asyncMiddleware(this.getSaleReceipt.bind(this)), - this.handleServiceErrors - ); - return router; - } - - /** - * Sales receipt validation schema. - * @return {Array} - */ - get salesReceiptsValidationSchema() { - return [ - check('customer_id').exists().isNumeric().toInt(), - check('deposit_account_id').exists().isNumeric().toInt(), - check('receipt_date').exists().isISO8601(), - check('receipt_number').optional().trim().escape(), - check('reference_no').optional().trim().escape(), - check('closed').default(false).isBoolean().toBoolean(), - - check('entries').exists().isArray({ min: 1 }), - - check('entries.*.id').optional({ nullable: true }).isNumeric().toInt(), - check('entries.*.index').exists().isNumeric().toInt(), - check('entries.*.item_id').exists().isNumeric().toInt(), - check('entries.*.quantity').exists().isNumeric().toInt(), - check('entries.*.rate').exists().isNumeric().toInt(), - check('entries.*.discount') - .optional({ nullable: true }) - .isNumeric() - .toInt(), - check('entries.*.description') - .optional({ nullable: true }) - .trim() - .escape(), - - check('receipt_message').optional().trim().escape(), - check('statement').optional().trim().escape(), - ]; - } - - /** - * Specific sale receipt validation schema. - */ - get specificReceiptValidationSchema() { - return [param('id').exists().isNumeric().toInt()]; - } - - /** - * List sales receipts validation schema. - */ - get listSalesReceiptsValidationSchema() { - return [ - query('view_slug').optional().isString().trim(), - query('stringified_filter_roles').optional().isJSON(), - query('column_sort_by').optional(), - query('sort_order').optional().isIn(['desc', 'asc']), - query('page').optional().isNumeric().toInt(), - query('page_size').optional().isNumeric().toInt(), - query('search_keyword').optional({ nullable: true }).isString().trim(), - ]; - } - - /** - * Creates a new receipt. - * @param {Request} req - * @param {Response} res - */ - async newSaleReceipt(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const saleReceiptDTO: ISaleReceiptDTO = this.matchedBodyData(req); - - try { - // Store the given sale receipt details with associated entries. - const storedSaleReceipt = await this.saleReceiptService.createSaleReceipt( - tenantId, - saleReceiptDTO - ); - return res.status(200).send({ - id: storedSaleReceipt.id, - message: 'Sale receipt has been created successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the sale receipt with associated entries and journal transactions. - * @param {Request} req - * @param {Response} res - */ - async deleteSaleReceipt(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: saleReceiptId } = req.params; - - try { - // Deletes the sale receipt. - await this.saleReceiptService.deleteSaleReceipt(tenantId, saleReceiptId); - - return res.status(200).send({ - id: saleReceiptId, - message: 'Sale receipt has been deleted successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Edit the sale receipt details with associated entries and re-write - * journal transaction on the same date. - * @param {Request} req - - * @param {Response} res - - */ - async editSaleReceipt(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: saleReceiptId } = req.params; - const saleReceipt = this.matchedBodyData(req); - - try { - // Update the given sale receipt details. - await this.saleReceiptService.editSaleReceipt( - tenantId, - saleReceiptId, - saleReceipt - ); - return res.status(200).send({ - id: saleReceiptId, - message: 'Sale receipt has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Marks the given the sale receipt as closed. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async closeSaleReceipt(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { id: saleReceiptId } = req.params; - - try { - // Update the given sale receipt details. - await this.saleReceiptService.closeSaleReceipt(tenantId, saleReceiptId); - return res.status(200).send({ - id: saleReceiptId, - message: 'Sale receipt has been closed successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Listing sales receipts. - * @param {Request} req - * @param {Response} res - */ - async getSalesReceipts(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const filter = { - sortOrder: 'asc', - columnSortBy: 'created_at', - page: 1, - pageSize: 12, - ...this.matchedQueryData(req), - }; - - try { - const { data, pagination, filterMeta } = - await this.saleReceiptService.salesReceiptsList(tenantId, filter); - - const response = this.transfromToResponse({ - data, - pagination, - filterMeta, - }); - return res.status(200).send(response); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the sale receipt with associated entries. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getSaleReceipt(req: Request, res: Response, next: NextFunction) { - const { id: saleReceiptId } = req.params; - const { tenantId } = req; - - try { - const saleReceipt = await this.saleReceiptService.getSaleReceipt( - tenantId, - saleReceiptId - ); - - res.format({ - 'application/json': () => { - return res - .status(200) - .send(this.transfromToResponse({ saleReceipt })); - }, - 'application/pdf': async () => { - const pdfContent = await this.saleReceiptsPdf.saleReceiptPdf( - tenantId, - saleReceipt - ); - res.set({ - 'Content-Type': 'application/pdf', - 'Content-Length': pdfContent.length, - }); - res.send(pdfContent); - }, - }); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - handleServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'SALE_RECEIPT_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_RECEIPT_NOT_FOUND', code: 100 }], - }); - } - if (error.errorType === 'DEPOSIT_ACCOUNT_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'DEPOSIT_ACCOUNT_NOT_FOUND', code: 200 }], - }); - } - if (error.errorType === 'DEPOSIT_ACCOUNT_NOT_CURRENT_ASSET') { - return res.boom.badRequest(null, { - errors: [{ type: 'DEPOSIT_ACCOUNT_NOT_CURRENT_ASSET', code: 300 }], - }); - } - if (error.errorType === 'ITEMS_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'ITEMS_NOT_FOUND', code: 400 }], - }); - } - if (error.errorType === 'ENTRIES_IDS_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'ENTRIES_IDS_NOT_FOUND', code: 500 }], - }); - } - if (error.errorType === 'NOT_SELL_ABLE_ITEMS') { - return res.boom.badRequest(null, { - errors: [{ type: 'NOT_SELL_ABLE_ITEMS', code: 600 }], - }); - } - if (error.errorType === 'SALE.RECEIPT.NOT.FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE.RECEIPT.NOT.FOUND', code: 700 }], - }); - } - if (error.errorType === 'DEPOSIT.ACCOUNT.NOT.EXISTS') { - return res.boom.badRequest(null, { - errors: [{ type: 'DEPOSIT.ACCOUNT.NOT.EXISTS', code: 800 }], - }); - } - if (error.errorType === 'SALE_RECEIPT_NUMBER_NOT_UNIQUE') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_RECEIPT_NUMBER_NOT_UNIQUE', code: 900 }], - }); - } - if (error.errorType === 'SALE_RECEIPT_IS_ALREADY_CLOSED') { - return res.boom.badRequest(null, { - errors: [{ type: 'SALE_RECEIPT_IS_ALREADY_CLOSED', code: 1000 }], - }); - } - if (error.errorType === 'SALE_RECEIPT_NO_IS_REQUIRED') { - return res.boom.badRequest(null, { - errors: [{ - type: 'SALE_RECEIPT_NO_IS_REQUIRED', - message: 'The sale receipt number is required.', - code: 1100, - }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Sales/index.ts b/server/src/api/controllers/Sales/index.ts deleted file mode 100644 index 419fde88b..000000000 --- a/server/src/api/controllers/Sales/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Router } from 'express'; -import { Container, Service } from 'typedi'; -import SalesEstimates from './SalesEstimates'; -import SalesReceipts from './SalesReceipts'; -import SalesInvoices from './SalesInvoices' -import PaymentReceives from './PaymentReceives'; - -@Service() -export default class SalesController { - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.use('/invoices', Container.get(SalesInvoices).router()); - router.use('/estimates', Container.get(SalesEstimates).router()); - router.use('/receipts', Container.get(SalesReceipts).router()); - router.use('/payment_receives', Container.get(PaymentReceives).router()); - - return router; - } -} \ No newline at end of file diff --git a/server/src/api/controllers/Settings.ts b/server/src/api/controllers/Settings.ts deleted file mode 100644 index 74a5e31aa..000000000 --- a/server/src/api/controllers/Settings.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { Router, Request, Response } from 'express'; -import { body, query } from 'express-validator'; -import { pick } from 'lodash'; -import { IOptionDTO, IOptionsDTO } from 'interfaces'; -import BaseController from 'api/controllers/BaseController'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import { getDefinedOptions, isDefinedOptionConfigurable } from 'utils'; -import SettingsService from 'services/Settings/SettingsService'; - -@Service() -export default class SettingsController extends BaseController { - @Inject() - settingsService: SettingsService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.post( - '/', - this.saveSettingsValidationSchema, - this.validationResult, - asyncMiddleware(this.saveSettings.bind(this)) - ); - router.get( - '/', - this.getSettingsSchema, - this.validationResult, - asyncMiddleware(this.getSettings.bind(this)) - ); - return router; - } - - /** - * Save settings validation schema. - */ - private get saveSettingsValidationSchema() { - return [ - body('options').isArray({ min: 1 }), - body('options.*.key').exists().trim().isLength({ min: 1 }), - body('options.*.value').exists().trim(), - body('options.*.group').exists().trim().isLength({ min: 1 }), - ]; - } - - /** - * Retrieve the application options from the storage. - */ - private get getSettingsSchema() { - return [ - query('key').optional().trim().escape(), - query('group').optional().trim().escape(), - ]; - } - - /** - * Saves the given options to the storage. - * @param {Request} req - - * @param {Response} res - - */ - public async saveSettings(req: Request, res: Response, next) { - const { tenantId } = req; - const optionsDTO: IOptionsDTO = this.matchedBodyData(req); - const { settings } = req; - - const errorReasons: { type: string; code: number; keys: [] }[] = []; - const notDefinedOptions = this.settingsService.validateNotDefinedSettings( - tenantId, - optionsDTO.options - ); - - if (notDefinedOptions.length) { - errorReasons.push({ - type: 'OPTIONS.KEY.NOT.DEFINED', - code: 200, - keys: notDefinedOptions.map((o) => ({ ...pick(o, ['key', 'group']) })), - }); - } - if (errorReasons.length) { - return res.status(400).send({ errors: errorReasons }); - } - optionsDTO.options.forEach((option: IOptionDTO) => { - settings.set({ ...option }); - }); - try { - await settings.save(); - - return res.status(200).send({ - type: 'success', - code: 'OPTIONS.SAVED.SUCCESSFULLY', - message: 'Options have been saved successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve settings. - * @param {Request} req - * @param {Response} res - */ - public getSettings(req: Request, res: Response) { - const { settings } = req; - const allSettings = settings.all(); - - return res.status(200).send({ settings: allSettings }); - } -} diff --git a/server/src/api/controllers/Setup.ts b/server/src/api/controllers/Setup.ts deleted file mode 100644 index eaf598d21..000000000 --- a/server/src/api/controllers/Setup.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { check, ValidationChain } from 'express-validator'; -import BaseController from './BaseController'; -import SetupService from 'services/Setup/SetupService'; -import { Inject, Service } from 'typedi'; -import { IOrganizationSetupDTO } from 'interfaces'; -import { ServiceError } from 'exceptions'; -// Middlewares -import JWTAuth from 'api/middleware/jwtAuth'; -import AttachCurrentTenantUser from 'api/middleware/AttachCurrentTenantUser'; -import SubscriptionMiddleware from 'api/middleware/SubscriptionMiddleware'; -import TenancyMiddleware from 'api/middleware/TenancyMiddleware'; -import EnsureTenantIsInitialized from 'api/middleware/EnsureTenantIsInitialized'; -import SettingsMiddleware from 'api/middleware/SettingsMiddleware'; - -@Service() -export default class SetupController extends BaseController { - @Inject() - setupService: SetupService; - - router() { - const router = Router('/setup'); - - router.use(JWTAuth); - router.use(AttachCurrentTenantUser); - router.use(TenancyMiddleware); - router.use(SubscriptionMiddleware('main')); - router.use(EnsureTenantIsInitialized); - router.use(SettingsMiddleware); - router.post( - '/organization', - this.organizationSetupSchema, - this.validationResult, - this.asyncMiddleware(this.organizationSetup.bind(this)), - this.handleServiceErrors - ); - return router; - } - - /** - * Organization setup schema. - */ - private get organizationSetupSchema(): ValidationChain[] { - return [ - check('organization_name').exists().trim(), - check('base_currency').exists(), - check('time_zone').exists(), - check('fiscal_year').exists(), - check('industry').optional(), - ]; - } - - /** - * Organization setup. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - * @returns - */ - async organizationSetup(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const setupDTO: IOrganizationSetupDTO = this.matchedBodyData(req); - - try { - await this.setupService.organizationSetup(tenantId, setupDTO); - - return res.status(200).send({ - message: 'The setup settings set successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - handleServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'TENANT_IS_ALREADY_SETUPED') { - return res.status(400).send({ - errors: [{ type: 'TENANT_IS_ALREADY_SETUPED', code: 1000 }], - }); - } - if (error.errorType === 'BASE_CURRENCY_INVALID') { - return res.status(400).send({ - errors: [{ type: 'BASE_CURRENCY_INVALID', code: 110 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Subscription/Licenses.ts b/server/src/api/controllers/Subscription/Licenses.ts deleted file mode 100644 index d090c7aa9..000000000 --- a/server/src/api/controllers/Subscription/Licenses.ts +++ /dev/null @@ -1,250 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { Router, Request, Response, NextFunction } from 'express'; -import { check, oneOf, ValidationChain } from 'express-validator'; -import basicAuth from 'express-basic-auth'; -import config from 'config'; -import { License } from 'system/models'; -import { ServiceError } from 'exceptions'; -import BaseController from 'api/controllers/BaseController'; -import LicenseService from 'services/Payment/License'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import { ILicensesFilter, ISendLicenseDTO } from 'interfaces'; - -@Service() -export default class LicensesController extends BaseController { - @Inject() - licenseService: LicenseService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.use( - basicAuth({ - users: { - [config.licensesAuth.user]: config.licensesAuth.password, - }, - challenge: true, - }) - ); - router.post( - '/generate', - this.generateLicenseSchema, - this.validationResult, - asyncMiddleware(this.generateLicense.bind(this)), - this.catchServiceErrors, - ); - router.post( - '/disable/:licenseId', - this.validationResult, - asyncMiddleware(this.disableLicense.bind(this)), - this.catchServiceErrors, - ); - router.post( - '/send', - this.sendLicenseSchemaValidation, - this.validationResult, - asyncMiddleware(this.sendLicense.bind(this)), - this.catchServiceErrors, - ); - router.delete( - '/:licenseId', - asyncMiddleware(this.deleteLicense.bind(this)), - this.catchServiceErrors, - ); - router.get('/', asyncMiddleware(this.listLicenses.bind(this))); - return router; - } - - /** - * Generate license validation schema. - */ - get generateLicenseSchema(): ValidationChain[] { - return [ - check('loop').exists().isNumeric().toInt(), - check('period').exists().isNumeric().toInt(), - check('period_interval') - .exists() - .isIn(['month', 'months', 'year', 'years', 'day', 'days']), - check('plan_slug').exists().trim().escape(), - ]; - } - - /** - * Specific license validation schema. - */ - get specificLicenseSchema(): ValidationChain[] { - return [ - oneOf( - [check('license_id').exists().isNumeric().toInt()], - [check('license_code').exists().isNumeric().toInt()] - ), - ]; - } - - /** - * Send license validation schema. - */ - get sendLicenseSchemaValidation(): ValidationChain[] { - return [ - check('period').exists().isNumeric(), - check('period_interval').exists().trim().escape(), - check('plan_slug').exists().trim().escape(), - oneOf([ - check('phone_number').exists().trim().escape(), - check('email').exists().trim().escape(), - ]), - ]; - } - - /** - * Generate licenses codes with given period in bulk. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async generateLicense(req: Request, res: Response, next: Function) { - const { loop = 10, period, periodInterval, planSlug } = this.matchedBodyData( - req - ); - - try { - await this.licenseService.generateLicenses( - loop, - period, - periodInterval, - planSlug - ); - return res.status(200).send({ - code: 100, - type: 'LICENSEES.GENERATED.SUCCESSFULLY', - message: 'The licenses have been generated successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Disable the given license on the storage. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async disableLicense(req: Request, res: Response, next: Function) { - const { licenseId } = req.params; - - try { - await this.licenseService.disableLicense(licenseId); - - return res.status(200).send({ license_id: licenseId }); - } catch (error) { - next(error); - } - } - - /** - * Deletes the given license code on the storage. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async deleteLicense(req: Request, res: Response, next: Function) { - const { licenseId } = req.params; - - try { - await this.licenseService.deleteLicense(licenseId); - - return res.status(200).send({ license_id: licenseId }); - } catch (error) { - next(error) - } - } - - /** - * Send license code in the given period to the customer via email or phone number - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async sendLicense(req: Request, res: Response, next: Function) { - const sendLicenseDTO: ISendLicenseDTO = this.matchedBodyData(req); - - try { - await this.licenseService.sendLicenseToCustomer(sendLicenseDTO); - - return res.status(200).send({ - status: 100, - code: 'LICENSE.CODE.SENT', - message: 'The license has been sent to the given customer.', - }); - } catch (error) { - next(error); - } - } - - /** - * Listing licenses. - * @param {Request} req - * @param {Response} res - */ - async listLicenses(req: Request, res: Response) { - const filter: ILicensesFilter = { - disabled: false, - used: false, - sent: false, - active: false, - ...req.query, - }; - const licenses = await License.query().onBuild((builder) => { - builder.modify('filter', filter); - builder.orderBy('createdAt', 'ASC'); - }); - return res.status(200).send({ licenses }); - } - - /** - * Catches all service errors. - */ - catchServiceErrors(error, req: Request, res: Response, next: NextFunction) { - if (error instanceof ServiceError) { - if (error.errorType === 'PLAN_NOT_FOUND') { - return res.status(400).send({ - errors: [{ - type: 'PLAN.NOT.FOUND', - code: 100, - message: 'The given plan not found.', - }], - }); - } - if (error.errorType === 'LICENSE_NOT_FOUND') { - return res.status(400).send({ - errors: [{ - type: 'LICENSE_NOT_FOUND', - code: 200, - message: 'The given license id not found.' - }], - }); - } - if (error.errorType === 'LICENSE_ALREADY_DISABLED') { - return res.status(400).send({ - errors: [{ - type: 'LICENSE.ALREADY.DISABLED', - code: 200, - message: 'License is already disabled.' - }], - }); - } - if (error.errorType === 'NO_AVALIABLE_LICENSE_CODE') { - return res.status(400).send({ - status: 110, - message: 'There is no licenses availiable right now with the given period and plan.', - code: 'NO.AVALIABLE.LICENSE.CODE', - }); - } - } - next(error); - } -} diff --git a/server/src/api/controllers/Subscription/PaymentMethod.ts b/server/src/api/controllers/Subscription/PaymentMethod.ts deleted file mode 100644 index 73d3e5932..000000000 --- a/server/src/api/controllers/Subscription/PaymentMethod.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Inject } from 'typedi'; -import { Request, Response } from 'express'; -import { Plan } from 'system/models'; -import BaseController from 'api/controllers/BaseController'; -import SubscriptionService from 'services/Subscription/SubscriptionService'; - -export default class PaymentMethodController extends BaseController { - @Inject() - subscriptionService: SubscriptionService; - - /** - * Validate the given plan slug exists on the storage. - * - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - * - * @return {Response|void} - */ - async validatePlanSlugExistance(req: Request, res: Response, next: Function) { - const { planSlug } = this.matchedBodyData(req); - const foundPlan = await Plan.query().where('slug', planSlug).first(); - - if (!foundPlan) { - return res.status(400).send({ - errors: [{ type: 'PLAN.SLUG.NOT.EXISTS', code: 110 }], - }); - } - next(); - } -} \ No newline at end of file diff --git a/server/src/api/controllers/Subscription/PaymentViaLicense.ts b/server/src/api/controllers/Subscription/PaymentViaLicense.ts deleted file mode 100644 index 46faaf035..000000000 --- a/server/src/api/controllers/Subscription/PaymentViaLicense.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { NextFunction, Router, Request, Response } from 'express'; -import { check } from 'express-validator'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import PaymentMethodController from 'api/controllers/Subscription/PaymentMethod'; -import { - NotAllowedChangeSubscriptionPlan, - NoPaymentModelWithPricedPlan, - PaymentAmountInvalidWithPlan, - PaymentInputInvalid, - VoucherCodeRequired, -} from 'exceptions'; -import { ILicensePaymentModel } from 'interfaces'; -import instance from 'tsyringe/dist/typings/dependency-container'; - -@Service() -export default class PaymentViaLicenseController extends PaymentMethodController { - @Inject('logger') - logger: any; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.post( - '/payment', - this.paymentViaLicenseSchema, - this.validationResult, - asyncMiddleware(this.validatePlanSlugExistance.bind(this)), - asyncMiddleware(this.paymentViaLicense.bind(this)), - this.handleErrors, - ); - return router; - } - - /** - * Payment via license validation schema. - */ - get paymentViaLicenseSchema() { - return [ - check('plan_slug').exists().trim().escape(), - check('license_code').exists().trim().escape(), - ]; - } - - /** - * Handle the subscription payment via license code. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - async paymentViaLicense(req: Request, res: Response, next: Function) { - const { planSlug, licenseCode } = this.matchedBodyData(req); - const { tenant } = req; - - try { - const licenseModel: ILicensePaymentModel = { licenseCode }; - - await this.subscriptionService.subscriptionViaLicense( - tenant.id, - planSlug, - licenseModel - ); - - return res.status(200).send({ - type: 'success', - code: 'PAYMENT.SUCCESSFULLY.MADE', - message: 'Payment via license has been made successfully.', - }); - } catch (exception) { - next(exception); - } - } - - /** - * Handle service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private handleErrors( - exception: Error, - req: Request, - res: Response, - next: NextFunction - ) { - const errorReasons = []; - - if (exception instanceof VoucherCodeRequired) { - errorReasons.push({ - type: 'VOUCHER_CODE_REQUIRED', - code: 100, - }); - } - if (exception instanceof NoPaymentModelWithPricedPlan) { - errorReasons.push({ - type: 'NO_PAYMENT_WITH_PRICED_PLAN', - code: 140, - }); - } - if (exception instanceof NotAllowedChangeSubscriptionPlan) { - errorReasons.push({ - type: 'NOT.ALLOWED.RENEW.SUBSCRIPTION.WHILE.ACTIVE', - code: 120, - }); - } - if (errorReasons.length > 0) { - return res.status(400).send({ errors: errorReasons }); - } - if (exception instanceof PaymentInputInvalid) { - return res.status(400).send({ - errors: [{ type: 'LICENSE.CODE.IS.INVALID', code: 120 }], - }); - } - if (exception instanceof PaymentAmountInvalidWithPlan) { - return res.status(400).send({ - errors: [{ type: 'LICENSE.NOT.FOR.GIVEN.PLAN' }], - }); - } - next(exception); - } -} diff --git a/server/src/api/controllers/Subscription/index.ts b/server/src/api/controllers/Subscription/index.ts deleted file mode 100644 index 3eecb80a1..000000000 --- a/server/src/api/controllers/Subscription/index.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { Container, Service, Inject } from 'typedi'; -import JWTAuth from 'api/middleware/jwtAuth'; -import TenancyMiddleware from 'api/middleware/TenancyMiddleware'; -import AttachCurrentTenantUser from 'api/middleware/AttachCurrentTenantUser'; -import PaymentViaLicenseController from 'api/controllers/Subscription/PaymentViaLicense'; -import SubscriptionService from 'services/Subscription/SubscriptionService'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; - -@Service() -export default class SubscriptionController { - @Inject() - subscriptionService: SubscriptionService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.use(JWTAuth); - router.use(AttachCurrentTenantUser); - router.use(TenancyMiddleware); - - router.use('/license', Container.get(PaymentViaLicenseController).router()); - router.get('/', asyncMiddleware(this.getSubscriptions.bind(this))); - - return router; - } - - /** - * Retrieve all subscriptions of the authenticated user's tenant. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async getSubscriptions(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - - try { - const subscriptions = await this.subscriptionService.getSubscriptions( - tenantId - ); - return res.status(200).send({ subscriptions }); - } catch (error) { - next(error); - } - } -} diff --git a/server/src/api/controllers/Users.ts b/server/src/api/controllers/Users.ts deleted file mode 100644 index ebecedcdd..000000000 --- a/server/src/api/controllers/Users.ts +++ /dev/null @@ -1,281 +0,0 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { Service, Inject } from 'typedi'; -import { - check, - query, - param, -} from 'express-validator'; -import JWTAuth from 'api/middleware/jwtAuth'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import BaseController from 'api/controllers/BaseController'; -import UsersService from 'services/Users/UsersService'; -import TenancyMiddleware from 'api/middleware/TenancyMiddleware'; -import AttachCurrentTenantUser from 'api/middleware/AttachCurrentTenantUser'; -import { ServiceError, ServiceErrors } from 'exceptions'; -import { ISystemUserDTO } from 'interfaces'; - -@Service() -export default class UsersController extends BaseController{ - @Inject() - usersService: UsersService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.use(JWTAuth); - router.use(AttachCurrentTenantUser); - router.use(TenancyMiddleware); - - router.put('/:id/inactivate', [ - ...this.specificUserSchema, - ], - this.validationResult, - asyncMiddleware(this.inactivateUser.bind(this)), - this.catchServiceErrors, - ); - router.put('/:id/activate', [ - ...this.specificUserSchema - ], - this.validationResult, - asyncMiddleware(this.activateUser.bind(this)), - this.catchServiceErrors, - ); - router.post('/:id', [ - ...this.userDTOSchema, - ...this.specificUserSchema, - ], - this.validationResult, - asyncMiddleware(this.editUser.bind(this)), - this.catchServiceErrors, - ); - router.get('/', - this.listUsersSchema, - this.validationResult, - asyncMiddleware(this.listUsers.bind(this)), - ); - router.get('/:id', [ - ...this.specificUserSchema, - ], - this.validationResult, - asyncMiddleware(this.getUser.bind(this)), - this.catchServiceErrors, - ); - router.delete('/:id', [ - ...this.specificUserSchema - ], - this.validationResult, - asyncMiddleware(this.deleteUser.bind(this)), - this.catchServiceErrors, - ); - return router; - } - - /** - * User DTO Schema. - */ - get userDTOSchema() { - return [ - check('first_name').exists(), - check('last_name').exists(), - check('email').exists().isEmail(), - check('phone_number').optional().isMobilePhone(), - ] - } - - get specificUserSchema() { - return [ - param('id').exists().isNumeric().toInt(), - ]; - } - - get listUsersSchema() { - return [ - query('page_size').optional().isNumeric().toInt(), - query('page').optional().isNumeric().toInt(), - ]; - } - - /** - * Edit details of the given user. - * @param {Request} req - * @param {Response} res - * @return {Response|void} - */ - async editUser(req: Request, res: Response, next: NextFunction) { - const userDTO: ISystemUserDTO = this.matchedBodyData(req); - const { tenantId } = req; - const { id: userId } = req.params; - - try { - await this.usersService.editUser(tenantId, userId, userDTO); - - return res.status(200).send({ - id: userId, - message: 'The user has been edited successfully.', - }); - } catch (error) { - next(error); - } - } - - /** - * Soft deleting the given user. - * @param {Request} req - * @param {Response} res - * @return {Response|void} - */ - async deleteUser(req: Request, res: Response, next: Function) { - const { id } = req.params; - const { tenantId } = req; - - try { - await this.usersService.deleteUser(tenantId, id); - - return res.status(200).send({ - id, - message: 'The user has been deleted successfully.' - }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve user details of the given user id. - * @param {Request} req - * @param {Response} res - * @return {Response|void} - */ - async getUser(req: Request, res: Response, next: NextFunction) { - const { id: userId } = req.params; - const { tenantId } = req; - - try { - const user = await this.usersService.getUser(tenantId, userId); - return res.status(200).send({ user }); - } catch (error) { - next(error); - } - } - - /** - * Retrieve the list of users. - * @param {Request} req - * @param {Response} res - * @return {Response|void} - */ - async listUsers(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - try { - const users = await this.usersService.getList(tenantId); - - return res.status(200).send({ users }); - } catch (error) { - next(error); - } - } - - /** - * Activate the given user. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - async activateUser(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: userId } = req.params; - - try { - await this.usersService.activateUser(tenantId, userId, user); - - return res.status(200).send({ - id: userId, - message: 'The user has been activated successfully.', - }); - } catch(error) { - next(error); - } - } - - /** - * Inactivate the given user. - * @param {Request} req - * @param {Response} res - * @return {Response|void} - */ - async inactivateUser(req: Request, res: Response, next: NextFunction) { - const { tenantId, user } = req; - const { id: userId } = req.params; - - try { - await this.usersService.inactivateUser(tenantId, userId, user); - - return res.status(200).send({ - id: userId, - message: 'The user has been inactivated successfully.', - }); - } catch(error) { - next(error); - } - } - - /** - * Catches all users service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - catchServiceErrors(error: Error, req: Request, res: Response, next: NextFunction) { - - if (error instanceof ServiceErrors) { - const errorReasons = []; - - if (error.hasType('EMAIL_ALREADY_EXISTS')) { - errorReasons.push({ type: 'EMAIL_ALREADY_EXIST', code: 100 }); - } - if (error.hasType('PHONE_NUMBER_ALREADY_EXIST')) { - errorReasons.push({ type: 'PHONE_NUMBER_ALREADY_EXIST', code: 200 }); - } - if (errorReasons.length > 0) { - return res.status(400).send({ errors: errorReasons }); - } - } - if (error instanceof ServiceError) { - if (error.errorType === 'USER_NOT_FOUND') { - return res.boom.badRequest( - 'User not found.', - { errors: [{ type: 'USER.NOT.FOUND', code: 100 }] } - ); - } - if (error.errorType === 'USER_ALREADY_ACTIVE') { - return res.boom.badRequest( - 'User is already active.', - { errors: [{ type: 'USER.ALREADY.ACTIVE', code: 200 }] }, - ); - } - if (error.errorType === 'USER_ALREADY_INACTIVE') { - return res.boom.badRequest( - 'User is already inactive.', - { errors: [{ type: 'USER.ALREADY.INACTIVE', code: 200 }] }, - ); - } - if (error.errorType === 'USER_SAME_THE_AUTHORIZED_USER') { - return res.boom.badRequest( - 'You could not activate/inactivate the same authorized user.', - { errors: [{ type: 'CANNOT.TOGGLE.ACTIVATE.AUTHORIZED.USER', code: 300 }] }, - ) - } - if (error.errorType === 'CANNOT_DELETE_LAST_USER') { - return res.boom.badRequest( - 'Cannot delete last user in the organization.', - { errors: [{ type: 'CANNOT_DELETE_LAST_USER', code: 400 }] }, - ); - } - } - next(error); - } -}; \ No newline at end of file diff --git a/server/src/api/controllers/Views.ts b/server/src/api/controllers/Views.ts deleted file mode 100644 index ee45cea49..000000000 --- a/server/src/api/controllers/Views.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { Router, Request, NextFunction, Response } from 'express'; -import { check, param } from 'express-validator'; -import asyncMiddleware from 'api/middleware/asyncMiddleware'; -import ViewsService from 'services/Views/ViewsService'; -import BaseController from 'api/controllers/BaseController'; -import { IViewDTO, IViewEditDTO } from 'interfaces'; -import { ServiceError } from 'exceptions'; - -@Service() -export default class ViewsController extends BaseController { - @Inject() - viewsService: ViewsService; - - /** - * Router constructor. - */ - router() { - const router = Router(); - - router.get( - '/resource/:resource_model', - [...this.viewsListSchemaValidation], - this.validationResult, - asyncMiddleware(this.listResourceViews.bind(this)), - this.handlerServiceErrors - ); - return router; - } - - /** - * Custom views list validation schema. - */ - get viewsListSchemaValidation() { - return [param('resource_model').exists().trim().escape()]; - } - - /** - * List all views that associated with the given resource. - * @param {Request} req - Request object. - * @param {Response} res - Response object. - * @param {NextFunction} next - Next function. - */ - async listResourceViews(req: Request, res: Response, next: NextFunction) { - const { tenantId } = req; - const { resource_model: resourceModel } = req.params; - - try { - const views = await this.viewsService.listResourceViews( - tenantId, - resourceModel - ); - return res.status(200).send({ - views: this.transfromToResponse(views, ['name', 'columns.label'], req), - }); - } catch (error) { - next(error); - } - } - - /** - * Handles service errors. - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - handlerServiceErrors( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'VIEW_NAME_NOT_UNIQUE') { - return res.boom.badRequest(null, { - errors: [{ type: 'VIEW_NAME_NOT_UNIQUE', code: 110 }], - }); - } - if (error.errorType === 'RESOURCE_MODEL_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'RESOURCE_MODEL_NOT_FOUND', code: 150 }], - }); - } - if (error.errorType === 'INVALID_LOGIC_EXPRESSION') { - return res.boom.badRequest(null, { - errors: [{ type: 'VIEW.ROLES.LOGIC.EXPRESSION.INVALID', code: 400 }], - }); - } - if (error.errorType === '') { - return res.boom.badRequest(null, { - errors: [{ type: 'RESOURCE_FIELDS_NOT_EXIST', code: 100 }], - }); - } - if (error.errorType === '') { - return res.boom.badRequest(null, { - errors: [{ type: 'COLUMNS_NOT_EXIST', code: 200 }], - }); - } - if (error.errorType === 'VIEW_NOT_FOUND') { - return res.boom.notFound(null, { - errors: [{ type: 'VIEW_NOT_FOUND', code: 100 }], - }); - } - if (error.errorType === 'VIEW_PREDEFINED') { - return res.boom.badRequest(null, { - errors: [{ type: 'PREDEFINED_VIEW', code: 200 }], - }); - } - if (error.errorType === 'RESOURCE_FIELDS_KEYS_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'RESOURCE_FIELDS_KEYS_NOT_FOUND', code: 300 }], - }); - } - if (error.errorType === 'RESOURCE_COLUMNS_KEYS_NOT_FOUND') { - return res.boom.badRequest(null, { - errors: [{ type: 'RESOURCE_COLUMNS_KEYS_NOT_FOUND', code: 310 }], - }); - } - } - next(error); - } -} diff --git a/server/src/api/index.ts b/server/src/api/index.ts deleted file mode 100644 index 750f82d70..000000000 --- a/server/src/api/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { Router } from 'express'; -import { Container } from 'typedi'; -import i18n from 'i18n'; - -// Middlewares -import JWTAuth from 'api/middleware/jwtAuth'; -import AttachCurrentTenantUser from 'api/middleware/AttachCurrentTenantUser'; -import SubscriptionMiddleware from 'api/middleware/SubscriptionMiddleware'; -import TenancyMiddleware from 'api/middleware/TenancyMiddleware'; -import EnsureTenantIsInitialized from 'api/middleware/EnsureTenantIsInitialized'; -import SettingsMiddleware from 'api/middleware/SettingsMiddleware'; -import I18nMiddleware from 'api/middleware/I18nMiddleware'; -import I18nAuthenticatedMiddlware from 'api/middleware/I18nAuthenticatedMiddlware'; -import EnsureTenantIsSeeded from 'api/middleware/EnsureTenantIsSeeded'; - -// Routes -import Authentication from 'api/controllers/Authentication'; -import InviteUsers from 'api/controllers/InviteUsers'; -import Organization from 'api/controllers/Organization'; -import Users from 'api/controllers/Users'; -import Items from 'api/controllers/Items'; -import ItemCategories from 'api/controllers/ItemCategories'; -import Accounts from 'api/controllers/Accounts'; -import AccountTypes from 'api/controllers/AccountTypes'; -import Views from 'api/controllers/Views'; -import ManualJournals from 'api/controllers/ManualJournals'; -import FinancialStatements from 'api/controllers/FinancialStatements'; -import Expenses from 'api/controllers/Expenses'; -import Settings from 'api/controllers/Settings'; -import Currencies from 'api/controllers/Currencies'; -import Contacts from 'api/controllers/Contacts/Contacts'; -import Customers from 'api/controllers/Contacts/Customers'; -import Vendors from 'api/controllers/Contacts/Vendors'; -import Sales from 'api/controllers/Sales' -import Purchases from 'api/controllers/Purchases'; -import Resources from './controllers/Resources'; -import ExchangeRates from 'api/controllers/ExchangeRates'; -import Media from 'api/controllers/Media'; -import Ping from 'api/controllers/Ping'; -import Subscription from 'api/controllers/Subscription'; -import Licenses from 'api/controllers/Subscription/Licenses'; -import InventoryAdjustments from 'api/controllers/Inventory/InventoryAdjustments'; -import asyncRenderMiddleware from './middleware/AsyncRenderMiddleware'; -import Jobs from './controllers/Jobs'; -import Miscellaneous from 'api/controllers/Miscellaneous'; -import OrganizationDashboard from 'api/controllers/OrganizationDashboard'; - -export default () => { - const app = Router(); - - // - Global routes. - // --------------------------- - app.use(asyncRenderMiddleware); - app.use(i18n.init); - app.use(I18nMiddleware); - - app.use('/auth', Container.get(Authentication).router()); - app.use('/invite', Container.get(InviteUsers).nonAuthRouter()); - app.use('/licenses', Container.get(Licenses).router()); - app.use('/subscription', Container.get(Subscription).router()); - app.use('/organization', Container.get(Organization).router()); - app.use('/ping', Container.get(Ping).router()); - app.use('/jobs', Container.get(Jobs).router()); - app.use('/users', Container.get(Users).router()); - - // - Dashboard routes. - // --------------------------- - const dashboard = Router(); - - dashboard.use(JWTAuth); - dashboard.use(AttachCurrentTenantUser); - dashboard.use(TenancyMiddleware); - dashboard.use(SubscriptionMiddleware('main')); - dashboard.use(EnsureTenantIsInitialized); - dashboard.use(SettingsMiddleware); - dashboard.use(I18nAuthenticatedMiddlware); - dashboard.use(EnsureTenantIsSeeded); - - dashboard.use('/organization', Container.get(OrganizationDashboard).router()); - dashboard.use('/invite', Container.get(InviteUsers).authRouter()); - dashboard.use('/currencies', Container.get(Currencies).router()); - dashboard.use('/settings', Container.get(Settings).router()); - dashboard.use('/accounts', Container.get(Accounts).router()); - dashboard.use('/account_types', Container.get(AccountTypes).router()); - dashboard.use('/manual-journals', Container.get(ManualJournals).router()); - dashboard.use('/views', Container.get(Views).router()); - dashboard.use('/items', Container.get(Items).router()); - dashboard.use('/item_categories', Container.get(ItemCategories).router()); - dashboard.use('/expenses', Container.get(Expenses).router()); - dashboard.use('/financial_statements', Container.get(FinancialStatements).router()); - dashboard.use('/contacts', Container.get(Contacts).router()); - dashboard.use('/customers', Container.get(Customers).router()); - dashboard.use('/vendors', Container.get(Vendors).router()); - dashboard.use('/sales', Container.get(Sales).router()); - dashboard.use('/purchases', Container.get(Purchases).router()); - dashboard.use('/resources', Container.get(Resources).router()); - dashboard.use('/exchange_rates', Container.get(ExchangeRates).router()); - dashboard.use('/media', Container.get(Media).router()); - dashboard.use('/inventory_adjustments', Container.get(InventoryAdjustments).router()); - - dashboard.use('/', Container.get(Miscellaneous).router()); - - app.use('/', dashboard); - - return app; -}; diff --git a/server/src/api/middleware/AsyncRenderMiddleware.ts b/server/src/api/middleware/AsyncRenderMiddleware.ts deleted file mode 100644 index 5bd6e736a..000000000 --- a/server/src/api/middleware/AsyncRenderMiddleware.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Request, Response } from 'express'; - -const asyncRender = (app) => (path: string, attributes = {}) => - new Promise((resolve, reject) => { - app.render(path, attributes, (error, data) => { - if (error) { reject(error); } - - resolve(data); - }); - }); - -/** - * Injects `asyncRender` method to response object. - * @param {Request} req Express req Object - * @param {Response} res Express res Object - * @param {NextFunction} next Express next Function - */ -const asyncRenderMiddleware = (req: Request, res: Response, next: Function) => { - res.asyncRender = asyncRender(req.app); - next(); -}; - -export default asyncRenderMiddleware; diff --git a/server/src/api/middleware/AttachCurrentTenantUser.ts b/server/src/api/middleware/AttachCurrentTenantUser.ts deleted file mode 100644 index 0ba44f689..000000000 --- a/server/src/api/middleware/AttachCurrentTenantUser.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Container } from 'typedi'; -import { Request, Response } from 'express'; - -/** - * Attach user to req.currentUser - * @param {Request} req Express req Object - * @param {Response} res Express res Object - * @param {NextFunction} next Express next Function - */ -const attachCurrentUser = async (req: Request, res: Response, next: Function) => { - const Logger = Container.get('logger'); - const { systemUserRepository } = Container.get('repositories'); - - try { - Logger.info('[attach_user_middleware] finding system user by id.'); - const user = await systemUserRepository.findOneById(req.token.id); - - if (!user) { - Logger.info('[attach_user_middleware] the system user not found.'); - return res.boom.unauthorized(); - } - if (!user.active) { - Logger.info('[attach_user_middleware] the system user not found.'); - return res.boom.badRequest( - 'The authorized user is inactivated.', - { errors: [{ type: 'USER_INACTIVE', code: 100, }] }, - ); - } - // Delete password property from user object. - Reflect.deleteProperty(user, 'password'); - req.user = user; - return next(); - } catch (e) { - Logger.error('[attach_user_middleware] error attaching user to req: %o', e); - return next(e); - } -}; - -export default attachCurrentUser; diff --git a/server/src/api/middleware/ConvertEmptyStringsToNull.ts b/server/src/api/middleware/ConvertEmptyStringsToNull.ts deleted file mode 100644 index aa7b41690..000000000 --- a/server/src/api/middleware/ConvertEmptyStringsToNull.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; -import deepMap from 'deep-map'; -import { convertEmptyStringToNull } from 'utils'; - -function convertEmptyStringsToNull(data) { - return deepMap(data, (value) => convertEmptyStringToNull(value)); -} - -export default (req: Request, res: Response, next: NextFunction) => { - const transfomedBody = convertEmptyStringsToNull(req.body); - req.body = transfomedBody; - next(); -}; \ No newline at end of file diff --git a/server/src/api/middleware/EnsureTenantIsInitialized.ts b/server/src/api/middleware/EnsureTenantIsInitialized.ts deleted file mode 100644 index 2f546cb01..000000000 --- a/server/src/api/middleware/EnsureTenantIsInitialized.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Container } from 'typedi'; -import { Request, Response } from 'express'; - - -export default (req: Request, res: Response, next: Function) => { - const Logger = Container.get('logger'); - - if (!req.tenant) { - Logger.info('[ensure_tenant_intialized_middleware] no tenant model.'); - throw new Error('Should load this middleware after `TenancyMiddleware`.'); - } - if (!req.tenant.initializedAt) { - Logger.info('[ensure_tenant_initialized_middleware] tenant database not initalized.'); - - return res.boom.badRequest( - 'Tenant database is not migrated with application schema yut.', - { errors: [{ type: 'TENANT.DATABASE.NOT.INITALIZED' }] }, - ); - } - next(); -}; \ No newline at end of file diff --git a/server/src/api/middleware/EnsureTenantIsSeeded.ts b/server/src/api/middleware/EnsureTenantIsSeeded.ts deleted file mode 100644 index 69f92c76a..000000000 --- a/server/src/api/middleware/EnsureTenantIsSeeded.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Container } from 'typedi'; -import { Request, Response } from 'express'; - -export default (req: Request, res: Response, next: Function) => { - const Logger = Container.get('logger'); - - if (!req.tenant) { - Logger.info('[ensure_tenant_intialized_middleware] no tenant model.'); - throw new Error('Should load this middleware after `TenancyMiddleware`.'); - } - if (!req.tenant.seededAt) { - Logger.info( - '[ensure_tenant_initialized_middleware] tenant databae not seeded.' - ); - return res.boom.badRequest( - 'Tenant database is not seeded with initial data yet.', - { errors: [{ type: 'TENANT.DATABASE.NOT.SEED' }] } - ); - } - next(); -}; diff --git a/server/src/api/middleware/I18nAuthenticatedMiddlware.ts b/server/src/api/middleware/I18nAuthenticatedMiddlware.ts deleted file mode 100644 index 2e3b80aad..000000000 --- a/server/src/api/middleware/I18nAuthenticatedMiddlware.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Container } from 'typedi'; -import { Request, Response, NextFunction } from 'express'; -import i18n from 'i18n'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { injectI18nUtils } from './TenantDependencyInjection'; - -/** - * I18n from organization settings. - */ -export default (req: Request, res: Response, next: NextFunction) => { - const Logger = Container.get('logger'); - const { settings, tenantId } = req; - - if (!req.user) { - throw new Error('Should load this middleware after `JWTAuth`.'); - } - if (!req.settings) { - throw new Error('Should load this middleware after `SettingsMiddleware`.'); - } - // Get the organization language from settings. - const language = settings.get({ group: 'organization', key: 'language' }); - - if (language) { - i18n.setLocale(req, language); - } - Logger.info('[i18n_authenticated_middleware] set locale language to i18n.', { - language, - user: req.user, - }); - const tenantServices = Container.get(HasTenancyService); - const tenantContainer = tenantServices.tenantContainer(tenantId); - - tenantContainer.set('i18n', injectI18nUtils(req)); - - next(); -}; diff --git a/server/src/api/middleware/I18nMiddleware.ts b/server/src/api/middleware/I18nMiddleware.ts deleted file mode 100644 index 2db5fd9a2..000000000 --- a/server/src/api/middleware/I18nMiddleware.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Container } from 'typedi'; -import { Request, Response, NextFunction } from 'express'; -import { lowerCase } from 'lodash'; -import i18n from 'i18n'; - -/** - * Set the language from request `accept-language` header -* or default application language. - */ -export default (req: Request, res: Response, next: NextFunction) => { - const Logger = Container.get('logger'); - - // Parses the accepted language from request object. - const language = lowerCase(req.headers['accept-language']) || 'en'; - - Logger.info('[i18n_middleware] set locale language to i18n.', { - language, - user: req.user, - }); - i18n.setLocale(req, language); - - next(); -}; diff --git a/server/src/api/middleware/LoggerMiddleware.ts b/server/src/api/middleware/LoggerMiddleware.ts deleted file mode 100644 index e57952cd3..000000000 --- a/server/src/api/middleware/LoggerMiddleware.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NextFunction, Request } from 'express'; -import { Container } from 'typedi'; - -function loggerMiddleware(request: Request, response: Response, next: NextFunction) { - const Logger = Container.get('logger'); - - Logger.info(`[routes] ${request.method} ${request.path}`); - next(); -} - -export default loggerMiddleware; diff --git a/server/src/api/middleware/LoginThrottlerMiddleware.ts b/server/src/api/middleware/LoginThrottlerMiddleware.ts deleted file mode 100644 index df770e365..000000000 --- a/server/src/api/middleware/LoginThrottlerMiddleware.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Container } from 'typedi'; -import { Request, Response, NextFunction } from 'express'; -import config from 'config'; - -const MAX_CONSECUTIVE_FAILS = config.throttler.login.points; - -export default async (req: Request, res: Response, next: NextFunction) => { - const { crediential } = req.body; - const loginThrottler = Container.get('rateLimiter.login'); - - // Retrieve the rate limiter response of the given crediential. - const emailRateRes = await loginThrottler.get(crediential); - - if (emailRateRes !== null && emailRateRes.consumedPoints >= MAX_CONSECUTIVE_FAILS) { - const retrySecs = Math.round(emailRateRes.msBeforeNext / 1000) || 1; - - res.set('Retry-After', retrySecs); - res.status(429).send({ - errors: [{ type: 'LOGIN_TO_MANY_ATTEMPTS', code: 400 }], - }); - } else { - next(); - } -} \ No newline at end of file diff --git a/server/src/api/middleware/RateLimiterMiddleware.ts b/server/src/api/middleware/RateLimiterMiddleware.ts deleted file mode 100644 index 69a79f7e9..000000000 --- a/server/src/api/middleware/RateLimiterMiddleware.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Container } from 'typedi'; -import { Request, Response, NextFunction } from 'express'; - -/** - * Rate limiter middleware. - */ -export default (req: Request, res: Response, next: NextFunction) => { - const requestRateLimiter = Container.get('rateLimiter.request'); - - requestRateLimiter.attempt(req.ip).then(() => { - next(); - }) - .catch(() => { - res.status(429).send('Too Many Requests'); - }); -} \ No newline at end of file diff --git a/server/src/api/middleware/SettingsMiddleware.ts b/server/src/api/middleware/SettingsMiddleware.ts deleted file mode 100644 index 28b87acee..000000000 --- a/server/src/api/middleware/SettingsMiddleware.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; -import { Container } from 'typedi'; -import SettingsStore from 'services/Settings/SettingsStore'; - -export default async (req: Request, res: Response, next: NextFunction) => { - const { tenantId } = req.user; - - const Logger = Container.get('logger'); - const tenantContainer = Container.of(`tenant-${tenantId}`); - - if (tenantContainer && !tenantContainer.has('settings')) { - const { settingRepository } = tenantContainer.get('repositories'); - - const settings = new SettingsStore(settingRepository); - tenantContainer.set('settings', settings); - } - const settings = tenantContainer.get('settings'); - - await settings.load(); - - req.settings = settings; - - res.on('finish', async () => { - await settings.save(); - }); - next(); -} \ No newline at end of file diff --git a/server/src/api/middleware/SubscriptionMiddleware.ts b/server/src/api/middleware/SubscriptionMiddleware.ts deleted file mode 100644 index ce7d45258..000000000 --- a/server/src/api/middleware/SubscriptionMiddleware.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; -import { Container } from 'typedi'; - -export default (subscriptionSlug = 'main') => async ( - req: Request, - res: Response, - next: NextFunction -) => { - const { tenant, tenantId } = req; - const Logger = Container.get('logger'); - const { subscriptionRepository } = Container.get('repositories'); - - if (!tenant) { - throw new Error('Should load `TenancyMiddlware` before this middleware.'); - } - Logger.info('[subscription_middleware] trying get tenant main subscription.'); - const subscription = await subscriptionRepository.getBySlugInTenant( - subscriptionSlug, - tenantId - ); - // Validate in case there is no any already subscription. - if (!subscription) { - Logger.info('[subscription_middleware] tenant has no subscription.', { - tenantId, - }); - return res.boom.badRequest('Tenant has no subscription.', { - errors: [{ type: 'TENANT.HAS.NO.SUBSCRIPTION' }], - }); - } - // Validate in case the subscription is inactive. - else if (subscription.inactive()) { - Logger.info( - '[subscription_middleware] tenant main subscription is expired.', - { tenantId } - ); - return res.boom.badRequest(null, { - errors: [{ type: 'ORGANIZATION.SUBSCRIPTION.INACTIVE' }], - }); - } - next(); -}; diff --git a/server/src/api/middleware/TenancyMiddleware.ts b/server/src/api/middleware/TenancyMiddleware.ts deleted file mode 100644 index e8235419d..000000000 --- a/server/src/api/middleware/TenancyMiddleware.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Container } from 'typedi'; -import { Request, Response, NextFunction } from 'express'; -import tenantDependencyInjection from 'api/middleware/TenantDependencyInjection' - -export default async (req: Request, res: Response, next: NextFunction) => { - const Logger = Container.get('logger'); - const organizationId = req.headers['organization-id'] || req.query.organization; - - const notFoundOrganization = () => { - Logger.info('[tenancy_middleware] organization id not found.'); - return res.boom.unauthorized( - 'Organization identication not found.', - { errors: [{ type: 'ORGANIZATION.ID.NOT.FOUND', code: 100 }] }, - ); - } - // In case the given organization not found. - if (!organizationId) { - return notFoundOrganization(); - } - const { tenantRepository } = Container.get('repositories'); - - Logger.info('[tenancy_middleware] trying get tenant by org. id from storage.'); - const tenant = await tenantRepository.findOne({ organizationId }); - - // When the given organization id not found on the system storage. - if (!tenant) { - return notFoundOrganization(); - } - // When user tenant not match the given organization id. - if (tenant.id !== req.user.tenantId) { - Logger.info('[tenancy_middleware] authorized user not match org. tenant.'); - return res.boom.unauthorized(); - } - tenantDependencyInjection(req, tenant); - next(); -} diff --git a/server/src/api/middleware/TenantDependencyInjection.ts b/server/src/api/middleware/TenantDependencyInjection.ts deleted file mode 100644 index af01c264e..000000000 --- a/server/src/api/middleware/TenantDependencyInjection.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Container } from 'typedi'; -import { ITenant } from 'interfaces'; -import { Request } from 'express'; -import TenancyService from 'services/Tenancy/TenancyService'; -import TenantsManagerService from 'services/Tenancy/TenantsManager'; -import rtlDetect from 'rtl-detect'; - -export default (req: Request, tenant: ITenant) => { - const { id: tenantId, organizationId } = tenant; - - const tenantServices = Container.get(TenancyService); - const tenantsManager = Container.get(TenantsManagerService); - - // Initialize the knex instance. - tenantsManager.setupKnexInstance(tenant); - - const knexInstance = tenantServices.knex(tenantId); - const models = tenantServices.models(tenantId); - const repositories = tenantServices.repositories(tenantId) - const cacheInstance = tenantServices.cache(tenantId); - - const tenantContainer = tenantServices.tenantContainer(tenantId); - - tenantContainer.set('i18n', injectI18nUtils(req)); - - req.knex = knexInstance; - req.organizationId = organizationId; - req.tenant = tenant; - req.tenantId = tenant.id; - req.models = models; - req.repositories = repositories; - req.cache = cacheInstance; -} - - -export const injectI18nUtils =(req) => { - const locale = req.getLocale(); - const direction = rtlDetect.getLangDir(locale); - - return { - locale, - __: req.__, - direction, - isRtl: direction === 'rtl', - isLtr: direction === 'ltr', - } -} \ No newline at end of file diff --git a/server/src/api/middleware/asyncMiddleware.ts b/server/src/api/middleware/asyncMiddleware.ts deleted file mode 100644 index ece9dd2cf..000000000 --- a/server/src/api/middleware/asyncMiddleware.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; -import { Container } from 'typedi'; - -export default ( - fn: (rq: Request, rs: Response, next?: NextFunction) => {}) => - (req: Request, res: Response, next: NextFunction) => { - const Logger = Container.get('logger'); - - Promise.resolve(fn(req, res, next)) - .catch((error) => { - console.log(error); - Logger.error('[async_middleware] error.', { error }); - next(error); - }); -}; \ No newline at end of file diff --git a/server/src/api/middleware/jwtAuth.ts b/server/src/api/middleware/jwtAuth.ts deleted file mode 100644 index 8189c9b2a..000000000 --- a/server/src/api/middleware/jwtAuth.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; -import { Container } from 'typedi'; -import jwt from 'jsonwebtoken'; -import config from 'config'; - -const authMiddleware = (req: Request, res: Response, next: NextFunction) => { - const Logger = Container.get('logger'); - const token = req.headers['x-access-token'] || req.query.token; - - const onError = () => { - Logger.info('[auth_middleware] jwt verify error.'); - res.boom.unauthorized(); - }; - const onSuccess = (decoded) => { - req.token = decoded; - Logger.info('[auth_middleware] jwt verify success.'); - next(); - }; - if (!token) { return onError(); } - - const verify = new Promise((resolve, reject) => { - jwt.verify(token, config.jwtSecret, async (error, decoded) => { - if (error) { - reject(error); - } else { - resolve(decoded); - } - }); - }); - verify.then(onSuccess).catch(onError); -}; -export default authMiddleware; diff --git a/server/src/before.ts b/server/src/before.ts deleted file mode 100644 index 9d753e36a..000000000 --- a/server/src/before.ts +++ /dev/null @@ -1,8 +0,0 @@ -import path from 'path'; -import moment from 'moment'; - -global.__root = path.resolve(__dirname); - -moment.prototype.toMySqlDateTime = function () { - return this.format('YYYY-MM-DD HH:mm:ss'); -}; diff --git a/server/src/collection/BudgetEntriesSet.js b/server/src/collection/BudgetEntriesSet.js deleted file mode 100644 index 1be8c34b8..000000000 --- a/server/src/collection/BudgetEntriesSet.js +++ /dev/null @@ -1,76 +0,0 @@ - - -export default class BudgetEntriesSet { - - constructor() { - this.accounts = {}; - this.totalSummary = {} - this.orderSize = null; - } - - setZeroPlaceholder() { - if (!this.orderSize) { return; } - - Object.values(this.accounts).forEach((account) => { - - for (let i = 0; i <= this.orderSize.length; i++) { - if (typeof account[i] === 'undefined') { - account[i] = { amount: 0 }; - } - } - }); - } - - static from(accounts, configs) { - const collection = new this(configs); - - accounts.forEach((entry) => { - if (typeof this.accounts[entry.accountId] === 'undefined') { - collection.accounts[entry.accountId] = {}; - } - if (entry.order) { - collection.accounts[entry.accountId][entry.order] = entry; - } - }); - return collection; - } - - toArray() { - const output = []; - - Object.key(this.accounts).forEach((accountId) => { - const entries = this.accounts[accountId]; - output.push({ - account_id: accountId, - entries: [ - ...Object.key(entries).map((order) => { - const entry = entries[order]; - return { - order, - amount: entry.amount, - }; - }), - ], - }); - }); - } - - calcTotalSummary() { - const totalSummary = {}; - - for (let i = 0; i < this.orderSize.length; i++) { - Object.value(this.accounts).forEach((account) => { - if (typeof totalSummary[i] !== 'undefined') { - totalSummary[i] = { amount: 0, order: i }; - } - totalSummary[i].amount += account[i].amount; - }); - } - this.totalSummary = totalSummary; - } - - toArrayTotalSummary() { - return Object.values(this.totalSummary); - } - -} diff --git a/server/src/collection/Cachable.js b/server/src/collection/Cachable.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/server/src/collection/Metable.js b/server/src/collection/Metable.js deleted file mode 100644 index 80f6a9e7e..000000000 --- a/server/src/collection/Metable.js +++ /dev/null @@ -1,279 +0,0 @@ - - -export default { - METADATA_GROUP: 'default', - KEY_COLUMN: 'key', - VALUE_COLUMN: 'value', - TYPE_COLUMN: 'type', - - extraColumns: [], - metadata: [], - shouldReload: true, - extraMetadataQuery: () => {}, - - /** - * Set the value column key to query from. - * @param {String} name - - */ - setKeyColumnName(name) { - this.KEY_COLUMN = name; - }, - - /** - * Set the key column name to query from. - * @param {String} name - - */ - setValueColumnName(name) { - this.VALUE_COLUMN = name; - }, - - /** - * Set extra columns to be added to the rows. - * @param {Array} columns - - */ - setExtraColumns(columns) { - this.extraColumns = columns; - }, - - /** - * Metadata database query. - * @param {Object} query - - * @param {String} groupName - - */ - whereQuery(query, key) { - const groupName = this.METADATA_GROUP; - - if (groupName) { - query.where('group', groupName); - } - if (key) { - if (Array.isArray(key)) { - query.whereIn('key', key); - } else { - query.where('key', key); - } - } - }, - - /** - * Loads the metadata from the storage. - * @param {String|Array} key - - * @param {Boolean} force - - */ - async load(force = false) { - if (this.shouldReload || force) { - const metadataCollection = await this.query((query) => { - this.whereQuery(query); - this.extraMetadataQuery(query); - }).fetchAll(); - - this.shouldReload = false; - this.metadata = []; - - const metadataArray = this.mapMetadataCollection(metadataCollection); - metadataArray.forEach((metadata) => { this.metadata.push(metadata); }); - } - }, - - /** - * Fetches all the metadata that associate with the current group. - */ - async allMeta(force = false) { - await this.load(force); - return this.metadata; - }, - - /** - * Find the given metadata key. - * @param {String} key - - * @return {object} - Metadata object. - */ - findMeta(key) { - return this.metadata.find((meta) => meta.key === key); - }, - - /** - * Fetch the metadata of the current group. - * @param {*} key - - */ - async getMeta(key, defaultValue, force = false) { - await this.load(force); - - const metadata = this.findMeta(key); - return metadata ? metadata.value : defaultValue || false; - }, - - /** - * Markes the metadata to should be deleted. - * @param {String} key - - */ - async removeMeta(key) { - await this.load(); - const metadata = this.findMeta(key); - - if (metadata) { - metadata.markAsDeleted = true; - } - this.shouldReload = true; - - - /** - * Remove all meta data of the given group. - * @param {*} group - */ - removeAllMeta(group = 'default') { - this.metdata.map((meta) => ({ - ...(meta.group !== group) ? { markAsDeleted: true } : {}, - ...meta, - })); - this.shouldReload = true; - }, - - /** - * Set the meta data to the stack. - * @param {String} key - - * @param {String} value - - */ - async setMeta(key, value, payload) { - if (Array.isArray(key)) { - const metadata = key; - metadata.forEach((meta) => { - this.setMeta(meta.key, meta.value); - }); - return; - } - - await this.load(); - const metadata = this.findMeta(key); - - if (metadata) { - metadata.value = value; - metadata.markAsUpdated = true; - } else { - this.metadata.push({ - value, key, ...payload, markAsInserted: true, - }); - } - }, - - /** - * Saved the modified metadata. - */ - async saveMeta() { - const inserted = this.metadata.filter((m) => (m.markAsInserted === true)); - const updated = this.metadata.filter((m) => (m.markAsUpdated === true)); - const deleted = this.metadata.filter((m) => (m.markAsDeleted === true)); - - const metadataDeletedKeys = deleted.map((m) => m.key); - const metadataInserted = inserted.map((m) => this.mapMetadata(m, 'format')); - const metadataUpdated = updated.map((m) => this.mapMetadata(m, 'format')); - - const batchUpdate = (collection) => knex.transaction((trx) => { - const queries = collection.map((tuple) => { - const query = knex(this.tableName); - this.whereQuery(query, tuple.key); - this.extraMetadataQuery(query); - return query.update(tuple).transacting(trx); - }); - return Promise.all(queries).then(trx.commit).catch(trx.rollback); - }); - - await Promise.all([ - knex.insert(metadataInserted).into(this.tableName), - batchUpdate(metadataUpdated), - metadataDeletedKeys.length > 0 - ? this.query('whereIn', this.KEY_COLUMN, metadataDeletedKeys).destroy({ - require: true, - }) : null, - ]); - this.shouldReload = true; - }, - - /** - * Purge all the cached metadata in the memory. - */ - purgeMetadata() { - this.metadata = []; - this.shouldReload = true; - }, - - /** - * Parses the metadata value. - * @param {String} value - - * @param {String} valueType - - */ - parseMetaValue(value, valueType) { - let parsedValue; - - switch (valueType) { - case 'integer': - parsedValue = parseInt(value, 10); - break; - case 'float': - parsedValue = parseFloat(value); - break; - case 'boolean': - parsedValue = Boolean(value); - break; - case 'json': - parsedValue = JSON.parse(parsedValue); - break; - default: - parsedValue = value; - break; - } - return parsedValue; - }, - - /** - * Format the metadata before saving to the database. - * @param {String|Number|Boolean} value - - * @param {String} valueType - - * @return {String|Number|Boolean} - - */ - formatMetaValue(value, valueType) { - let parsedValue; - - switch (valueType) { - case 'number': - parsedValue = `${value}`; - break; - case 'boolean': - parsedValue = value ? '1' : '0'; - break; - case 'json': - parsedValue = JSON.stringify(parsedValue); - break; - default: - parsedValue = value; - break; - } - return parsedValue; - }, - - mapMetadata(attr, parseType = 'parse') { - return { - key: attr[this.KEY_COLUMN], - value: (parseType === 'parse') - ? this.parseMetaValue( - attr[this.VALUE_COLUMN], - this.TYPE_COLUMN ? attr[this.TYPE_COLUMN] : false, - ) - : this.formatMetaValue( - attr[this.VALUE_COLUMN], - this.TYPE_COLUMN ? attr[this.TYPE_COLUMN] : false, - ), - ...this.extraColumns.map((extraCol) => ({ - [extraCol]: attr[extraCol] || null, - })), - }; - }, - - /** - * Parse the metadata collection. - * @param {Array} collection - - */ - mapMetadataCollection(collection, parseType = 'parse') { - return collection.map((model) => this.mapMetadata(model.attributes, parseType)); - }, -}; diff --git a/server/src/collection/NestedSet/index.js b/server/src/collection/NestedSet/index.js deleted file mode 100644 index e7480e900..000000000 --- a/server/src/collection/NestedSet/index.js +++ /dev/null @@ -1,116 +0,0 @@ - -export default class NestedSet { - /** - * Constructor method. - * @param {Object} options - - */ - constructor(items, options) { - this.options = { - parentId: 'parent_id', - id: 'id', - ...options, - }; - this.items = items || []; - this.tree = this.linkChildren(); - } - - setItems(items) { - this.items = items; - this.tree = this.linkChildren(); - } - - /** - * Link nodes children. - */ - linkChildren() { - if (this.items.length <= 0) return false; - - const map = {}; - this.items.forEach((item) => { - map[item.id] = item; - map[item.id].children = {}; - }); - - this.items.forEach((item) => { - const parentNodeId = item[this.options.parentId]; - if (parentNodeId) { - map[parentNodeId].children[item.id] = item; - } - }); - return map; - } - - toArray() { - const stack = []; - const treeNodes = this.items.map((i) => ({ ...i })); - - const walk = (nodes) => { - nodes.forEach((node) => { - if (!node[this.options.parentId]) { - stack.push(node); - } - if (node.children) { - const childrenNodes = Object.values(node.children) - .map((i) => ({ ...i })); - - node.children = childrenNodes; - walk(childrenNodes); - } - }); - }; - walk(treeNodes); - return stack; - } - - getTree() { - return this.tree; - } - - getElementById(id) { - return this.tree[id] || null - } - - getParents(id) { - const item = this.getElementById(id); - const parents = []; - let index = 0; - - const walk = (_item) => { - if (!item) return; - - if (index) { - parents.push(_item); - } - if (_item[this.options.parentId]) { - const parentItem = this.getElementById(_item[this.options.parentId]); - - index++; - walk(parentItem); - } - }; - walk(item); - return parents; - } - - toFlattenArray(nodeMapper) { - const flattenTree = []; - - const traversal = (nodes, parentNode) => { - nodes.forEach((node) => { - let nodeMapped = node; - - if (typeof nodeMapper === 'function') { - nodeMapped = nodeMapper(nodeMapped, parentNode); - } - flattenTree.push(nodeMapped); - - if (node.children && node.children.length > 0) { - traversal(node.children, node); - } - }); - }; - traversal(this.collection); - - return flattenTree; - } -} diff --git a/server/src/collection/ResourceFieldMetadataCollection.js b/server/src/collection/ResourceFieldMetadataCollection.js deleted file mode 100644 index b1d460111..000000000 --- a/server/src/collection/ResourceFieldMetadataCollection.js +++ /dev/null @@ -1,14 +0,0 @@ -import MetableCollection from 'lib/Metable/MetableCollection'; -import ResourceFieldMetadata from 'models/ResourceFieldMetadata'; - -export default class ResourceFieldMetadataCollection extends MetableCollection { - /** - * Constructor method. - */ - constructor() { - super(); - - this.setModel(ResourceFieldMetadata); - this.extraColumns = ['resource_id', 'resource_item_id']; - } -} diff --git a/server/src/collection/SoftDeleteQueryBuilder.js b/server/src/collection/SoftDeleteQueryBuilder.js deleted file mode 100644 index 2bd15fe30..000000000 --- a/server/src/collection/SoftDeleteQueryBuilder.js +++ /dev/null @@ -1,73 +0,0 @@ -import moment from 'moment'; -import { Model } from 'objection'; - -const options = { - columnName: 'deleted_at', - deletedValue: moment().format('YYYY-MM-DD HH:mm:ss'), - notDeletedValue: null, -}; - -export default class SoftDeleteQueryBuilder extends Model.QueryBuilder { - constructor(...args) { - super(...args); - - this.onBuild((builder) => { - if (builder.isFind() || builder.isDelete() || builder.isUpdate()) { - builder.whereNotDeleted(); - } - }); - } - - /** - * override the normal delete function with one that patches the row's "deleted" column - */ - delete() { - this.context({ - softDelete: true, - }); - const patch = {}; - patch[options.columnName] = options.deletedValue; - return this.patch(patch); - } - - /** - * Provide a way to actually delete the row if necessary - */ - hardDelete() { - return super.delete(); - } - - /** - * Provide a way to undo the delete - */ - undelete() { - this.context({ - undelete: true, - }); - const patch = {}; - patch[options.columnName] = options.notDeletedValue; - return this.patch(patch); - } - - /** - * Provide a way to filter to ONLY deleted records without having to remember the column name - */ - whereDeleted() { - const prefix = this.modelClass().tableName; - - // this if is for backwards compatibility, to protect those that used a nullable `deleted` field - if (options.deletedValue === true) { - return this.where(`${prefix}.${options.columnName}`, options.deletedValue); - } - // qualify the column name - return this.whereNot(`${prefix}.${options.columnName}`, options.notDeletedValue); - } - - // provide a way to filter out deleted records without having to remember the column name - whereNotDeleted() { - const prefix = this.modelClass().tableName; - - // qualify the column name - return this.where(`${prefix}.${options.columnName}`, options.notDeletedValue); - } -} diff --git a/server/src/config/index.js b/server/src/config/index.js deleted file mode 100644 index c9e89ca64..000000000 --- a/server/src/config/index.js +++ /dev/null @@ -1,175 +0,0 @@ -import dotenv from 'dotenv'; - -// Set the NODE_ENV to 'development' by default -process.env.NODE_ENV = process.env.NODE_ENV || 'development'; - -const envFound = dotenv.config(); -if (envFound.error) { - // This error should crash whole process - throw new Error("⚠️ Couldn't find .env file ⚠️"); -} - -export default { - /** - * Your favorite port - */ - port: parseInt(process.env.PORT, 10), - - /** - * System database configuration. - */ - system: { - db_client: process.env.SYSTEM_DB_CLIENT, - db_host: process.env.SYSTEM_DB_HOST, - db_user: process.env.SYSTEM_DB_USER, - db_password: process.env.SYSTEM_DB_PASSWORD, - db_name: process.env.SYSTEM_DB_NAME, - charset: process.env.SYSTEM_DB_CHARSET, - migrations_dir: process.env.SYSTEM_MIGRATIONS_DIR, - seeds_dir: process.env.SYSTEM_SEEDS_DIR, - }, - - /** - * Tenant database configuration. - */ - tenant: { - db_client: process.env.TENANT_DB_CLIENT, - db_name_prefix: process.env.TENANT_DB_NAME_PERFIX, - db_host: process.env.TENANT_DB_HOST, - db_user: process.env.TENANT_DB_USER, - db_password: process.env.TENANT_DB_PASSWORD, - charset: process.env.TENANT_DB_CHARSET, - migrations_dir: process.env.TENANT_MIGRATIONS_DIR, - seeds_dir: process.env.TENANT_SEEDS_DIR, - }, - - /** - * Databases manager config. - */ - manager: { - superUser: process.env.DB_MANAGER_SUPER_USER, - superPassword: process.env.DB_MANAGER_SUPER_PASSWORD, - }, - - /** - * Mail. - */ - mail: { - host: process.env.MAIL_HOST, - port: process.env.MAIL_PORT, - secure: !!parseInt(process.env.MAIL_SECURE, 10), - username: process.env.MAIL_USERNAME, - password: process.env.MAIL_PASSWORD, - }, - - /** - * Mongo DB. - */ - mongoDb: { - /** - * That long string from mlab - */ - databaseURL: process.env.MONGODB_DATABASE_URL, - }, - - /** - * Agenda - */ - agenda: { - dbCollection: process.env.AGENDA_DB_COLLECTION, - pooltime: process.env.AGENDA_POOL_TIME, - concurrency: parseInt(process.env.AGENDA_CONCURRENCY, 10), - }, - - /** - * Agendash. - */ - agendash: { - user: process.env.AGENDASH_AUTH_USER, - password: process.env.AGENDASH_AUTH_PASSWORD - }, - - /** - * Easy SMS gateway. - */ - easySMSGateway: { - api_key: process.env.EASY_SMS_TOKEN - }, - - /** - * JWT secret. - */ - jwtSecret: process.env.JWT_SECRET, - resetPasswordSeconds: 600, - - /** - * - */ - customerSuccess: { - email: 'success@bigcapital.ly', - phoneNumber: '(218) 92 791 8381' - }, - - baseURL: process.env.BASE_URL, - - /** - * General API prefix. - */ - api: { - prefix: '/api' - }, - - /** - * Licenses api basic authentication. - */ - licensesAuth: { - user: process.env.LICENSES_AUTH_USER, - password: process.env.LICENSES_AUTH_PASSWORD, - }, - - /** - * Redis storage configuration. - */ - redis: { - port: 6379, - }, - - /** - * Throttler configuration. - */ - throttler: { - login: { - points: 5, - duration: 60 * 60 * 24 * 1, // Store number for 90 days since first fail - blockDuration: 60 * 15, - }, - requests: { - points: 60, - duration: 60, - blockDuration: 60 * 10, - } - }, - - /** - * Users registeration configuration. - */ - registration: { - countries: { - whitelist: [ - 'LY', - ], - blacklist: [], - } - }, - - /** - * Puppeteer remote browserless connection. - */ - puppeteer: { - browserWSEndpoint: process.env.BROWSER_WS_ENDPOINT, - }, - - protocol: '', - hostname: '', - scheduleComputeItemCost: 'in 5 seconds' -}; \ No newline at end of file diff --git a/server/src/config/knexConfig.ts b/server/src/config/knexConfig.ts deleted file mode 100644 index a0b6dd27f..000000000 --- a/server/src/config/knexConfig.ts +++ /dev/null @@ -1,58 +0,0 @@ -import config from 'config'; -import { ITenant } from 'interfaces'; - -export const tenantKnexConfig = (tenant: ITenant) => { - const { organizationId, id } = tenant; - - return { - client: config.tenant.db_client, - connection: { - host: config.tenant.db_host, - user: config.tenant.db_user, - password: config.tenant.db_password, - database: `${config.tenant.db_name_prefix}${organizationId}`, - charset: config.tenant.charset, - }, - migrations: { - directory: config.tenant.migrations_dir, - }, - seeds: { - directory: config.tenant.seeds_dir, - }, - pool: { min: 0, max: 5 }, - userParams: { - tenantId: id, - organizationId - } - }; -}; - -export const systemKnexConfig = { - client: config.system.db_client, - connection: { - host: config.system.db_host, - user: config.system.db_user, - password: config.system.db_password, - database: config.system.db_name, - charset: 'utf8', - }, - migrations: { - directory: config.system.migrations_dir, - }, - seeds: { - directory: config.system.seeds_dir, - }, - pool: { min: 0, max: 7 }, -}; - -export const systemDbManager = { - collate: [], - superUser: config.manager.superUser, - superPassword: config.manager.superPassword, -}; - -export const tenantSeedConfig = (tenant: ITenant) => { - return { - directory: config.tenant.seeds_dir, - }; -} \ No newline at end of file diff --git a/server/src/data/AccountTypes.ts b/server/src/data/AccountTypes.ts deleted file mode 100644 index ceef16bb1..000000000 --- a/server/src/data/AccountTypes.ts +++ /dev/null @@ -1,223 +0,0 @@ -export const ACCOUNT_TYPE = { - CASH: 'cash', - BANK: 'bank', - ACCOUNTS_RECEIVABLE: 'accounts-receivable', - INVENTORY: 'inventory', - OTHER_CURRENT_ASSET: 'other-current-asset', - FIXED_ASSET: 'fixed-asset', - NON_CURRENT_ASSET: 'none-current-asset', - - ACCOUNTS_PAYABLE: 'accounts-payable', - CREDIT_CARD: 'credit-card', - TAX_PAYABLE: 'tax-payable', - OTHER_CURRENT_LIABILITY: 'other-current-liability', - LOGN_TERM_LIABILITY: 'long-term-liability', - NON_CURRENT_LIABILITY: 'non-current-liability', - - EQUITY: 'equity', - INCOME: 'income', - OTHER_INCOME: 'other-income', - COST_OF_GOODS_SOLD: 'cost-of-goods-sold', - EXPENSE: 'expense', - OTHER_EXPENSE: 'other-expense', -}; - -export const ACCOUNT_PARENT_TYPE = { - CURRENT_ASSET: 'current-asset', - FIXED_ASSET: 'fixed-asset', - NON_CURRENT_ASSET: 'non-current-asset', - - CURRENT_LIABILITY: 'current-liability', - LOGN_TERM_LIABILITY: 'long-term-liability', - NON_CURRENT_LIABILITY: 'non-current-liability', - - EQUITY: 'equity', - EXPENSE: 'expense', - INCOME: 'income', -}; - -export const ACCOUNT_ROOT_TYPE = { - ASSET: 'asset', - LIABILITY: 'liability', - EQUITY: 'equity', - EXPENSE: 'expense', - INCOME: 'income', -}; - -export const ACCOUNT_NORMAL = { - CREDIT: 'credit', - DEBIT: 'debit', -}; -export const ACCOUNT_TYPES = [ - { - label: 'Cash', - key: ACCOUNT_TYPE.CASH, - normal: ACCOUNT_NORMAL.DEBIT, - parentType: ACCOUNT_PARENT_TYPE.CURRENT_ASSET, - rootType: ACCOUNT_ROOT_TYPE.ASSET, - balanceSheet: true, - incomeSheet: false, - }, - { - label: 'Bank', - key: ACCOUNT_TYPE.BANK, - normal: ACCOUNT_NORMAL.DEBIT, - parentType: ACCOUNT_PARENT_TYPE.CURRENT_ASSET, - rootType: ACCOUNT_ROOT_TYPE.ASSET, - balanceSheet: true, - incomeSheet: false, - }, - { - label: 'Accounts Receivable', - key: ACCOUNT_TYPE.ACCOUNTS_RECEIVABLE, - normal: ACCOUNT_NORMAL.DEBIT, - rootType: ACCOUNT_ROOT_TYPE.ASSET, - parentType: ACCOUNT_PARENT_TYPE.CURRENT_ASSET, - balanceSheet: true, - incomeSheet: false, - }, - { - label: 'Inventory', - key: ACCOUNT_TYPE.INVENTORY, - normal: ACCOUNT_NORMAL.DEBIT, - rootType: ACCOUNT_ROOT_TYPE.ASSET, - parentType: ACCOUNT_PARENT_TYPE.CURRENT_ASSET, - balanceSheet: true, - incomeSheet: false, - }, - { - label: 'Other Current Asset', - key: ACCOUNT_TYPE.OTHER_CURRENT_ASSET, - normal: ACCOUNT_NORMAL.DEBIT, - rootType: ACCOUNT_ROOT_TYPE.ASSET, - parentType: ACCOUNT_PARENT_TYPE.CURRENT_ASSET, - balanceSheet: true, - incomeSheet: false, - }, - { - label: 'Fixed Asset', - key: ACCOUNT_TYPE.FIXED_ASSET, - normal: ACCOUNT_NORMAL.DEBIT, - rootType: ACCOUNT_ROOT_TYPE.ASSET, - parentType: ACCOUNT_PARENT_TYPE.FIXED_ASSET, - balanceSheet: true, - incomeSheet: false, - }, - { - label: 'Non-Current Asset', - key: ACCOUNT_TYPE.NON_CURRENT_ASSET, - normal: ACCOUNT_NORMAL.DEBIT, - rootType: ACCOUNT_ROOT_TYPE.ASSET, - parentType: ACCOUNT_PARENT_TYPE.FIXED_ASSET, - balanceSheet: true, - incomeSheet: false, - }, - { - label: 'Accounts Payable', - key: ACCOUNT_TYPE.ACCOUNTS_PAYABLE, - normal: ACCOUNT_NORMAL.CREDIT, - rootType: ACCOUNT_ROOT_TYPE.LIABILITY, - parentType: ACCOUNT_PARENT_TYPE.CURRENT_LIABILITY, - balanceSheet: true, - incomeSheet: false, - }, - { - label: 'Credit Card', - key: ACCOUNT_TYPE.CREDIT_CARD, - normal: ACCOUNT_NORMAL.CREDIT, - rootType: ACCOUNT_ROOT_TYPE.LIABILITY, - parentType: ACCOUNT_PARENT_TYPE.CURRENT_LIABILITY, - balanceSheet: true, - incomeSheet: false, - }, - { - label: 'Tax Payable', - key: ACCOUNT_TYPE.TAX_PAYABLE, - normal: ACCOUNT_NORMAL.CREDIT, - rootType: ACCOUNT_ROOT_TYPE.LIABILITY, - parentType: ACCOUNT_PARENT_TYPE.CURRENT_LIABILITY, - balanceSheet: true, - incomeSheet: false, - }, - { - label: 'Other Current Liability', - key: ACCOUNT_TYPE.OTHER_CURRENT_LIABILITY, - normal: ACCOUNT_NORMAL.CREDIT, - rootType: ACCOUNT_ROOT_TYPE.LIABILITY, - parentType: ACCOUNT_PARENT_TYPE.CURRENT_LIABILITY, - balanceSheet: false, - incomeSheet: true, - }, - { - label: 'Long Term Liability', - key: ACCOUNT_TYPE.LOGN_TERM_LIABILITY, - normal: ACCOUNT_NORMAL.CREDIT, - rootType: ACCOUNT_ROOT_TYPE.LIABILITY, - parentType: ACCOUNT_PARENT_TYPE.LOGN_TERM_LIABILITY, - balanceSheet: false, - incomeSheet: true, - }, - { - label: 'Non-Current Liability', - key: ACCOUNT_TYPE.NON_CURRENT_LIABILITY, - normal: ACCOUNT_NORMAL.CREDIT, - rootType: ACCOUNT_ROOT_TYPE.LIABILITY, - parentType: ACCOUNT_PARENT_TYPE.NON_CURRENT_LIABILITY, - balanceSheet: false, - incomeSheet: true, - }, - { - label: 'Equity', - key: ACCOUNT_TYPE.EQUITY, - normal: ACCOUNT_NORMAL.CREDIT, - rootType: ACCOUNT_ROOT_TYPE.EQUITY, - parentType: ACCOUNT_PARENT_TYPE.EQUITY, - balanceSheet: true, - incomeSheet: false, - }, - { - label: 'Income', - key: ACCOUNT_TYPE.INCOME, - normal: ACCOUNT_NORMAL.CREDIT, - rootType: ACCOUNT_ROOT_TYPE.INCOME, - parentType: ACCOUNT_PARENT_TYPE.INCOME, - balanceSheet: false, - incomeSheet: true, - }, - { - label: 'Other Income', - key: ACCOUNT_TYPE.OTHER_INCOME, - normal: ACCOUNT_NORMAL.CREDIT, - rootType: ACCOUNT_ROOT_TYPE.INCOME, - parentType: ACCOUNT_PARENT_TYPE.INCOME, - balanceSheet: false, - incomeSheet: true, - }, - { - label: 'Cost of Goods Sold', - key: ACCOUNT_TYPE.COST_OF_GOODS_SOLD, - normal: ACCOUNT_NORMAL.DEBIT, - rootType: ACCOUNT_ROOT_TYPE.EXPENSE, - parentType: ACCOUNT_PARENT_TYPE.EXPENSE, - balanceSheet: false, - incomeSheet: true, - }, - { - label: 'Expense', - key: ACCOUNT_TYPE.EXPENSE, - normal: ACCOUNT_NORMAL.DEBIT, - rootType: ACCOUNT_ROOT_TYPE.EXPENSE, - parentType: ACCOUNT_PARENT_TYPE.EXPENSE, - balanceSheet: false, - incomeSheet: true, - }, - { - label: 'Other Expense', - key: ACCOUNT_TYPE.OTHER_EXPENSE, - normal: ACCOUNT_NORMAL.DEBIT, - rootType: ACCOUNT_ROOT_TYPE.EXPENSE, - parentType: ACCOUNT_PARENT_TYPE.EXPENSE, - balanceSheet: false, - incomeSheet: true, - }, -]; diff --git a/server/src/data/BalanceSheetStructure.ts b/server/src/data/BalanceSheetStructure.ts deleted file mode 100644 index 0e90a720c..000000000 --- a/server/src/data/BalanceSheetStructure.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { IBalanceSheetStructureSection } from 'interfaces'; -import { - ACCOUNT_TYPE -} from 'data/AccountTypes'; - -const balanceSheetStructure: IBalanceSheetStructureSection[] = [ - { - name: 'Assets', - sectionType: 'assets', - type: 'section', - children: [ - { - name: 'Current Asset', - sectionType: 'assets', - type: 'section', - children: [ - { - name: 'Cash and cash equivalents', - type: 'accounts_section', - accountsTypes: [ACCOUNT_TYPE.CASH, ACCOUNT_TYPE.BANK], - }, - { - name: 'Accounts Receivable', - type: 'accounts_section', - accountsTypes: [ACCOUNT_TYPE.ACCOUNTS_RECEIVABLE], - }, - { - name: 'Inventories', - type: 'accounts_section', - accountsTypes: [ACCOUNT_TYPE.INVENTORY], - }, - { - name: 'Other current assets', - type: 'accounts_section', - accountsTypes: [ACCOUNT_TYPE.OTHER_CURRENT_ASSET], - }, - ], - alwaysShow: true, - }, - { - name: 'Fixed Asset', - type: 'accounts_section', - accountsTypes: [ACCOUNT_TYPE.FIXED_ASSET], - }, - { - name: 'Non-Current Assets', - type: 'accounts_section', - accountsTypes: [ACCOUNT_TYPE.NON_CURRENT_ASSET], - } - ], - alwaysShow: true, - }, - { - name: 'Liabilities and Equity', - sectionType: 'liabilities_equity', - type: 'section', - children: [ - { - name: 'Liabilities', - sectionType: 'liability', - type: 'section', - children: [ - { - name: 'Current Liabilties', - type: 'accounts_section', - accountsTypes: [ - ACCOUNT_TYPE.ACCOUNTS_PAYABLE, - ACCOUNT_TYPE.TAX_PAYABLE, - ACCOUNT_TYPE.CREDIT_CARD, - ACCOUNT_TYPE.OTHER_CURRENT_LIABILITY, - ], - }, - { - name: 'Long-Term Liabilities', - type: 'accounts_section', - accountsTypes: [ACCOUNT_TYPE.LOGN_TERM_LIABILITY], - }, - { - name: 'Non-Current Liabilities', - type: 'accounts_section', - accountsTypes: [ACCOUNT_TYPE.NON_CURRENT_LIABILITY], - } - ], - }, - { - name: 'Equity', - sectionType: 'equity', - type: 'accounts_section', - accountsTypes: [ACCOUNT_TYPE.EQUITY], - }, - ], - alwaysShow: true, - }, -]; - -export default balanceSheetStructure; \ No newline at end of file diff --git a/server/src/data/DataTypes.js b/server/src/data/DataTypes.js deleted file mode 100644 index d5ab1086f..000000000 --- a/server/src/data/DataTypes.js +++ /dev/null @@ -1,8 +0,0 @@ - -export const DATATYPES_LENGTH = { - STRING: 255, - TEXT: 65535, - INT_10: 4294967295, - DECIMAL_13_3: 9999999999.999, - DECIMAL_15_5: 999999999999.999, -}; diff --git a/server/src/data/ResourceFieldsKeys.js b/server/src/data/ResourceFieldsKeys.js deleted file mode 100644 index 8504d3fdf..000000000 --- a/server/src/data/ResourceFieldsKeys.js +++ /dev/null @@ -1,205 +0,0 @@ -/* eslint-disable quote-props */ - -export default { - // Expenses. - expense: { - payment_date: { - column: 'payment_date', - }, - payment_account: { - column: 'payment_account_id', - relation: 'accounts.id', - }, - amount: { - column: 'total_amount', - }, - currency_code: { - column: 'currency_code', - }, - reference_no: { - column: 'reference_no' - }, - description: { - column: 'description', - }, - published: { - column: 'published', - }, - user: { - column: 'user_id', - relation: 'users.id', - relationColumn: 'users.id', - }, - }, - - // Accounts - Account: { - name: { - column: 'name', - }, - type: { - column: 'account_type_id', - relation: 'account_types.id', - relationColumn: 'account_types.key', - }, - description: { - column: 'description', - }, - code: { - column: 'code', - }, - root_type: { - column: 'account_type_id', - relation: 'account_types.id', - relationColumn: 'account_types.root_type', - }, - created_at: { - column: 'created_at', - columnType: 'date', - }, - active: { - column: 'active', - }, - balance: { - column: 'amount', - columnType: 'number' - }, - currency: { - column: 'currency_code', - }, - normal: { - column: 'account_type_id', - relation: 'account_types.id', - relationColumn: 'account_types.normal' - }, - }, - - // Items - item: { - type: { - column: 'type', - }, - name: { - column: 'name', - }, - sellable: { - column: 'sellable', - }, - purchasable: { - column: 'purchasable', - }, - sell_price: { - column: 'sell_price' - }, - cost_price: { - column: 'cost_price', - }, - currency_code: { - column: 'currency_code', - }, - cost_account: { - column: 'cost_account_id', - relation: 'accounts.id', - }, - sell_account: { - column: 'sell_account_id', - relation: 'accounts.id', - }, - inventory_account: { - column: 'inventory_account_id', - relation: 'accounts.id', - }, - sell_description: { - column: 'sell_description', - }, - purchase_description: { - column: 'purchase_description', - }, - quantity_on_hand: { - column: 'quantity_on_hand', - }, - note: { - column: 'note', - }, - category: { - column: 'category_id', - relation: 'categories.id', - }, - user: { - column: 'user_id', - relation: 'users.id', - relationColumn: 'users.id', - }, - created_at: { - column: 'created_at', - } - }, - - // Item category. - item_category: { - name: { - column: 'name', - }, - description: { - column: 'description', - }, - parent_category_id: { - column: 'parent_category_id', - relation: 'items_categories.id', - relationColumn: 'items_categories.id', - }, - user: { - column: 'user_id', - relation: 'users.id', - relationColumn: 'users.id', - }, - cost_account: { - column: 'cost_account_id', - relation: 'accounts.id', - }, - sell_account: { - column: 'sell_account_id', - relation: 'accounts.id', - }, - inventory_account: { - column: 'inventory_account_id', - relation: 'accounts.id', - }, - cost_method: { - column: 'cost_method', - }, - }, - - // Manual Journals - manual_journal: { - date: { - column: 'date', - }, - journal_number: { - column: 'journal_number', - }, - reference: { - column: 'reference', - }, - status: { - column: 'status', - }, - amount: { - column: 'amount', - }, - description: { - column: 'description', - }, - user: { - column: 'user_id', - relation: 'users.id', - relationColumn: 'users.id', - }, - journal_type: { - column: 'journal_type', - }, - created_at: { - column: 'created_at', - }, - } -}; diff --git a/server/src/data/options.js b/server/src/data/options.js deleted file mode 100644 index 8e65196ad..000000000 --- a/server/src/data/options.js +++ /dev/null @@ -1,127 +0,0 @@ -export default { - organization: { - name: { - type: 'string', - }, - base_currency: { - type: 'string', - }, - industry: { - type: 'string', - }, - location: { - type: 'string', - }, - fiscal_year: { - type: 'string', - }, - financial_date_start: { - type: 'string', - }, - language: { - type: 'string', - }, - time_zone: { - type: 'string', - }, - date_format: { - type: 'string', - }, - accounting_basis: { - type: 'string', - }, - }, - manual_journals: { - next_number: { - type: 'string', - }, - number_prefix: { - type: 'string', - }, - auto_increment: { - type: 'boolean', - }, - }, - bill_payments: { - withdrawal_account: { - type: 'number', - }, - }, - sales_estimates: { - next_number: { - type: 'string', - }, - number_prefix: { - type: 'string', - }, - auto_increment: { - type: 'boolean', - }, - }, - sales_receipts: { - next_number: { - type: 'string', - }, - number_prefix: { - type: 'string', - }, - auto_increment: { - type: 'boolean', - }, - preferred_deposit_account: { - type: 'number', - }, - }, - sales_invoices: { - next_number: { - type: 'string', - }, - number_prefix: { - type: 'string', - }, - auto_increment: { - type: 'boolean', - }, - }, - payment_receives: { - next_number: { - type: 'string', - }, - number_prefix: { - type: 'string', - }, - auto_increment: { - type: 'boolean', - }, - preferred_deposit_account: { - type: 'number', - }, - preferred_advance_deposit: { - type: 'number', - }, - }, - items: { - preferred_sell_account: { - type: 'number', - }, - preferred_cost_account: { - type: 'number', - }, - preferred_inventory_account: { - type: 'number', - }, - }, - expenses: { - preferred_payment_account: { - type: 'number', - }, - }, - accounts: { - account_code_required: { - type: 'boolean', - }, - account_code_unique: { - type: 'boolean', - }, - }, -}; diff --git a/server/src/database/factories/index.js b/server/src/database/factories/index.js deleted file mode 100644 index 34a49fce6..000000000 --- a/server/src/database/factories/index.js +++ /dev/null @@ -1,390 +0,0 @@ -import KnexFactory from 'lib/KnexFactory'; -import faker from 'faker'; -import { hashPassword } from 'utils'; - - -export default (tenantDb) => { - const factory = new KnexFactory(tenantDb); - - factory.define('user', 'users', async () => { - // const hashedPassword = await hashPassword('admin'); - - return { - first_name: faker.name.firstName(), - last_name: faker.name.lastName(), - email: faker.internet.email(), - phone_number: faker.phone.phoneNumberFormat().replace('-', ''), - active: 1, - // password: hashedPassword, - }; - }); - - factory.define('password_reset', 'password_resets', async () => { - return { - user_id: null, - token: faker.lorem.slug, - }; - }); - - factory.define('account_type', 'account_types', async () => ({ - name: faker.lorem.words(2), - normal: 'debit', - })); - - factory.define('account_balance', 'account_balances', async () => { - const account = await factory.create('account'); - - return { - account_id: account.id, - amount: faker.random.number(), - currency_code: 'USD', - }; - }); - - factory.define('account', 'accounts', async () => { - const accountType = await factory.create('account_type'); - return { - name: faker.lorem.word(), - code: faker.random.number(), - account_type_id: accountType.id, - description: faker.lorem.paragraph(), - }; - }); - - factory.define('account_transaction', 'accounts_transactions', async () => { - const account = await factory.create('account'); - const user = await factory.create('user'); - - return { - account_id: account.id, - credit: faker.random.number(), - debit: 0, - user_id: user.id, - }; - }); - - factory.define('manual_journal', 'manual_journals', async () => { - const user = await factory.create('user'); - - return { - journal_number: faker.random.number(), - transaction_type: '', - amount: faker.random.number(), - date: faker.date.future, - status: 1, - user_id: user.id, - }; - }); - - factory.define('item_category', 'items_categories', () => ({ - name: faker.name.firstName(), - description: faker.lorem.text(), - parent_category_id: null, - })); - - factory.define('item_metadata', 'items_metadata', async () => { - const item = await factory.create('item'); - - return { - key: faker.lorem.slug(), - value: faker.lorem.word(), - item_id: item.id, - }; - }); - - factory.define('item', 'items', async () => { - const category = await factory.create('item_category'); - const costAccount = await factory.create('account'); - const sellAccount = await factory.create('account'); - const inventoryAccount = await factory.create('account'); - - return { - name: faker.lorem.word(), - note: faker.lorem.paragraph(), - cost_price: faker.random.number(), - sell_price: faker.random.number(), - cost_account_id: costAccount.id, - sell_account_id: sellAccount.id, - inventory_account_id: inventoryAccount.id, - category_id: category.id, - }; - }); - - factory.define('setting', 'settings', async () => { - const user = await factory.create('user'); - return { - key: faker.lorem.slug(), - user_id: user.id, - type: 'string', - value: faker.lorem.words(), - group: 'default', - }; - }); - - factory.define('role', 'roles', async () => ({ - name: faker.lorem.word(), - description: faker.lorem.words(), - predefined: false, - })); - - factory.define('user_has_role', 'user_has_roles', async () => { - const user = await factory.create('user'); - const role = await factory.create('role'); - - return { - user_id: user.id, - role_id: role.id, - }; - }); - - factory.define('permission', 'permissions', async () => { - const permissions = ['create', 'edit', 'delete', 'view', 'owner']; - const randomPermission = permissions[Math.floor(Math.random() * permissions.length)]; - - return { - name: randomPermission, - }; - }); - - factory.define('role_has_permission', 'role_has_permissions', async () => { - const permission = await factory.create('permission'); - const role = await factory.create('role'); - const resource = await factory.create('resource'); - - return { - role_id: role.id, - permission_id: permission.id, - resource_id: resource.id, - }; - }); - - factory.define('resource', 'resources', () => ({ - name: faker.lorem.word(), - })); - - factory.define('view', 'views', async () => { - const resource = await factory.create('resource'); - return { - name: faker.lorem.word(), - resource_id: resource.id, - predefined: false, - }; - }); - - factory.define('resource_field', 'resource_fields', async () => { - const resource = await factory.create('resource'); - const dataTypes = ['select', 'date', 'text']; - - return { - label_name: faker.lorem.words(), - key: faker.lorem.slug(), - data_type: dataTypes[Math.floor(Math.random() * dataTypes.length)], - help_text: faker.lorem.words(), - default: faker.lorem.word(), - resource_id: resource.id, - active: true, - columnable: true, - predefined: false, - }; - }); - - factory.define('resource_custom_field_metadata', 'resource_custom_fields_metadata', async () => { - const resource = await factory.create('resource'); - - return { - resource_id: resource.id, - resource_item_id: 1, - key: faker.lorem.words(), - value: faker.lorem.words(), - }; - }); - - factory.define('view_role', 'view_roles', async () => { - const view = await factory.create('view'); - const field = await factory.create('resource_field'); - - return { - view_id: view.id, - index: faker.random.number(), - field_id: field.id, - value: '', - comparator: '', - }; - }); - - factory.define('view_column', 'view_has_columns', async () => { - const view = await factory.create('view'); - const field = await factory.create('resource_field'); - - return { - field_id: field.id, - view_id: view.id, - // index: 1, - }; - }); - - factory.define('expense', 'expenses_transactions', async () => { - const paymentAccount = await factory.create('account'); - const expenseAccount = await factory.create('account'); - const user = await factory.create('user'); - - return { - total_amount: faker.random.number(), - currency_code: 'USD', - description: '', - reference_no: faker.random.number(), - payment_account_id: paymentAccount.id, - published: true, - user_id: user.id, - }; - }); - - factory.define('expense_category', 'expense_transaction_categories', async () => { - const expense = await factory.create('expense'); - - return { - expense_account_id: expense.id, - description: '', - amount: faker.random.number(), - expense_id: expense.id, - }; - }); - - factory.define('option', 'options', async () => { - return { - key: faker.lorem.slug(), - value: faker.lorem.slug(), - group: faker.lorem.slug(), - }; - }); - - factory.define('currency', 'currencies', async () => { - return { - currency_name: faker.lorem.slug(), - currency_code: 'USD', - }; - }); - - factory.define('exchange_rate', 'exchange_rates', async () => { - return { - date: '2020-02-02', - currency_code: 'USD', - exchange_rate: faker.random.number(), - }; - }); - - factory.define('budget', 'budgets', async () => { - return { - name: faker.lorem.slug(), - fiscal_year: '2020', - period: 'month', - account_types: 'profit_loss', - }; - }); - - factory.define('budget_entry', 'budget_entries', async () => { - const budget = await factory.create('budget'); - const account = await factory.create('account'); - - return { - account_id: account.id, - budget_id: budget.id, - amount: 1000, - order: 1, - }; - }); - - factory.define('customer', 'customers', async () => { - return { - customer_type: 'business', - }; - }); - - factory.define('vendor', 'vendors', async () => { - return { - customer_type: 'business', - }; - }); - - factory.define('sale_estimate', 'sales_estimates', async () => { - const customer = await factory.create('customer'); - - return { - customer_id: customer.id, - estimate_date: faker.date.past, - expiration_date: faker.date.future, - reference: '', - estimate_number: faker.random.number, - note: '', - terms_conditions: '', - }; - }); - - factory.define('sale_estimate_entry', 'sales_estimate_entries', async () => { - const estimate = await factory.create('sale_estimate'); - const item = await factory.create('item'); - - return { - estimate_id: estimate.id, - item_id: item.id, - description: '', - discount: faker.random.number, - quantity: faker.random.number, - rate: faker.random.number, - }; - }); - - factory.define('sale_receipt', 'sales_receipts', async () => { - const depositAccount = await factory.create('account'); - const customer = await factory.create('customer'); - - return { - deposit_account_id: depositAccount.id, - customer_id: customer.id, - reference_no: faker.random.number, - receipt_date: faker.date.past, - }; - }); - - factory.define('sale_receipt_entry', 'sales_receipt_entries', async () => { - const saleReceipt = await factory.create('sale_receipt'); - const item = await factory.create('item'); - - return { - sale_receipt_id: saleReceipt.id, - item_id: item.id, - rate: faker.random.number, - quantity: faker.random.number, - }; - }); - - factory.define('sale_invoice', 'sales_invoices', async () => { - - return { - - }; - }); - - factory.define('sale_invoice_entry', 'sales_invoices_entries', async () => { - return { - - }; - }); - - factory.define('payment_receive', 'payment_receives', async () => { - - }); - - factory.define('payment_receive_entry', 'payment_receives_entries', async () => { - - }); - - - factory.define('bill', 'bills', async () => { - return { - - } - }); - - return factory; -} diff --git a/server/src/database/factories/system.js b/server/src/database/factories/system.js deleted file mode 100644 index 890202827..000000000 --- a/server/src/database/factories/system.js +++ /dev/null @@ -1,16 +0,0 @@ -import KnexFactory from 'lib/KnexFactory'; -import systemDb from 'database/knex'; -import faker from 'faker'; - -export default () => { - const factory = new KnexFactory(systemDb); - - factory.define('password_reset', 'password_resets', async () => { - return { - email: faker.lorem.email, - token: faker.lorem.slug, - }; - }); - - return factory; -}; \ No newline at end of file diff --git a/server/src/database/migrations/20190822214303_create_accounts_table.js b/server/src/database/migrations/20190822214303_create_accounts_table.js deleted file mode 100644 index 81abcaf26..000000000 --- a/server/src/database/migrations/20190822214303_create_accounts_table.js +++ /dev/null @@ -1,19 +0,0 @@ -exports.up = function (knex) { - return knex.schema.createTable('accounts', (table) => { - table.increments('id').comment('Auto-generated id'); - table.string('name').index(); - table.string('slug'); - table.string('account_type').index(); - table.integer('parent_account_id').unsigned().references('id').inTable('accounts'); - table.string('code', 10).index(); - table.text('description'); - table.boolean('active').defaultTo(true).index(); - table.integer('index').unsigned(); - table.boolean('predefined').defaultTo(false).index(); - table.decimal('amount', 15, 5); - table.string('currency_code', 3).index(); - table.timestamps(); - }).raw('ALTER TABLE `ACCOUNTS` AUTO_INCREMENT = 1000'); -}; - -exports.down = (knex) => knex.schema.dropTableIfExists('accounts'); diff --git a/server/src/database/migrations/20190822214304_create_items_categories_table.js b/server/src/database/migrations/20190822214304_create_items_categories_table.js deleted file mode 100644 index 2fe1ec9ef..000000000 --- a/server/src/database/migrations/20190822214304_create_items_categories_table.js +++ /dev/null @@ -1,19 +0,0 @@ - -exports.up = function (knex) { - return knex.schema.createTable('items_categories', (table) => { - table.increments(); - table.string('name').index(); - - table.text('description'); - table.integer('user_id').unsigned().index(); - - table.integer('cost_account_id').unsigned().references('id').inTable('accounts'); - table.integer('sell_account_id').unsigned().references('id').inTable('accounts'); - table.integer('inventory_account_id').unsigned().references('id').inTable('accounts'); - - table.string('cost_method'); - table.timestamps(); - }); -}; - -exports.down = (knex) => knex.schema.dropTableIfExists('items_categories'); diff --git a/server/src/database/migrations/20190822214306_create_items_table.js b/server/src/database/migrations/20190822214306_create_items_table.js deleted file mode 100644 index 16ac1ed66..000000000 --- a/server/src/database/migrations/20190822214306_create_items_table.js +++ /dev/null @@ -1,30 +0,0 @@ - -exports.up = function (knex) { - return knex.schema.createTable('items', (table) => { - table.increments(); - table.string('name').index(); - table.string('type').index(); - table.string('code'); - table.boolean('sellable').index(); - table.boolean('purchasable').index(); - table.decimal('sell_price', 13, 3).unsigned(); - table.decimal('cost_price', 13, 3).unsigned(); - table.string('currency_code', 3); - table.string('picture_uri'); - table.integer('cost_account_id').nullable().unsigned().references('id').inTable('accounts'); - table.integer('sell_account_id').nullable().unsigned().references('id').inTable('accounts'); - table.integer('inventory_account_id').unsigned().references('id').inTable('accounts'); - table.text('sell_description').nullable(); - table.text('purchase_description').nullable(); - table.integer('quantity_on_hand'); - table.boolean('landed_cost').nullable(); - - table.text('note').nullable(); - table.boolean('active'); - table.integer('category_id').unsigned().index().references('id').inTable('items_categories'); - table.integer('user_id').unsigned().index(); - table.timestamps(); - }).raw('ALTER TABLE `ITEMS` AUTO_INCREMENT = 1000'); -}; - -exports.down = (knex) => knex.schema.dropTableIfExists('items'); diff --git a/server/src/database/migrations/20190822214903_create_views_table.js b/server/src/database/migrations/20190822214903_create_views_table.js deleted file mode 100644 index eb3929c47..000000000 --- a/server/src/database/migrations/20190822214903_create_views_table.js +++ /dev/null @@ -1,15 +0,0 @@ - -exports.up = function (knex) { - return knex.schema.createTable('views', (table) => { - table.increments(); - table.string('name').index(); - table.string('slug').index(); - table.boolean('predefined'); - table.string('resource_model').index(); - table.boolean('favourite'); - table.string('roles_logic_expression'); - table.timestamps(); - }).raw('ALTER TABLE `VIEWS` AUTO_INCREMENT = 1000'); -}; - -exports.down = (knex) => knex.schema.dropTableIfExists('views'); diff --git a/server/src/database/migrations/20190822214904_create_settings_table.js b/server/src/database/migrations/20190822214904_create_settings_table.js deleted file mode 100644 index 65f3f4fdc..000000000 --- a/server/src/database/migrations/20190822214904_create_settings_table.js +++ /dev/null @@ -1,13 +0,0 @@ - -exports.up = function (knex) { - return knex.schema.createTable('settings', (table) => { - table.increments(); - table.integer('user_id').unsigned().index(); - table.string('group').index(); - table.string('type'); - table.string('key').index(); - table.string('value'); - }).raw('ALTER TABLE `SETTINGS` AUTO_INCREMENT = 2000'); -}; - -exports.down = (knex) => knex.schema.dropTableIfExists('settings'); diff --git a/server/src/database/migrations/20190822214905_create_views_columns.js b/server/src/database/migrations/20190822214905_create_views_columns.js deleted file mode 100644 index 4fc76e399..000000000 --- a/server/src/database/migrations/20190822214905_create_views_columns.js +++ /dev/null @@ -1,11 +0,0 @@ - -exports.up = function (knex) { - return knex.schema.createTable('view_has_columns', (table) => { - table.increments(); - table.integer('view_id').unsigned().index().references('id').inTable('views'); - table.string('field_key'); - table.integer('index').unsigned(); - }).raw('ALTER TABLE `ITEMS_CATEGORIES` AUTO_INCREMENT = 1000'); -}; - -exports.down = (knex) => knex.schema.dropTableIfExists('view_has_columns'); diff --git a/server/src/database/migrations/20190822214905_create_views_roles_table.js b/server/src/database/migrations/20190822214905_create_views_roles_table.js deleted file mode 100644 index e9add11eb..000000000 --- a/server/src/database/migrations/20190822214905_create_views_roles_table.js +++ /dev/null @@ -1,13 +0,0 @@ - -exports.up = function (knex) { - return knex.schema.createTable('view_roles', (table) => { - table.increments(); - table.integer('index'); - table.string('field_key').index(); - table.string('comparator'); - table.string('value'); - table.integer('view_id').unsigned().index().references('id').inTable('views'); - }).raw('ALTER TABLE `VIEW_ROLES` AUTO_INCREMENT = 1000'); -}; - -exports.down = (knex) => knex.schema.dropTableIfExists('view_roles'); \ No newline at end of file diff --git a/server/src/database/migrations/20200104232644_create_contacts_table.js b/server/src/database/migrations/20200104232644_create_contacts_table.js deleted file mode 100644 index 09e0accde..000000000 --- a/server/src/database/migrations/20200104232644_create_contacts_table.js +++ /dev/null @@ -1,54 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('contacts', table => { - table.increments(); - - table.string('contact_service'); - table.string('contact_type'); - - table.decimal('balance', 13, 3).defaultTo(0); - table.string('currency_code', 3); - - table.decimal('opening_balance', 13, 3).defaultTo(0); - table.date('opening_balance_at'); - - table.string('salutation').nullable(); - table.string('first_name').nullable(); - table.string('last_name').nullable(); - table.string('company_name').nullable(); - - table.string('display_name'); - - table.string('email').nullable(); - table.string('work_phone').nullable(); - table.string('personal_phone').nullable(); - table.string('website').nullable(); - - table.string('billing_address_1').nullable(); - table.string('billing_address_2').nullable(); - table.string('billing_address_city').nullable(); - table.string('billing_address_country').nullable(); - table.string('billing_address_email').nullable(); - table.string('billing_address_postcode').nullable(); - table.string('billing_address_phone').nullable(); - table.string('billing_address_state').nullable(), - - table.string('shipping_address_1').nullable(); - table.string('shipping_address_2').nullable(); - table.string('shipping_address_city').nullable(); - table.string('shipping_address_country').nullable(); - table.string('shipping_address_email').nullable(); - table.string('shipping_address_postcode').nullable(); - table.string('shipping_address_phone').nullable(); - table.string('shipping_address_state').nullable(); - - table.text('note'); - table.boolean('active').defaultTo(true); - - table.timestamps(); - }); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('contacts'); -}; diff --git a/server/src/database/migrations/20200104232647_create_accounts_transactions_table.js b/server/src/database/migrations/20200104232647_create_accounts_transactions_table.js deleted file mode 100644 index 50fe6d396..000000000 --- a/server/src/database/migrations/20200104232647_create_accounts_transactions_table.js +++ /dev/null @@ -1,36 +0,0 @@ -exports.up = function (knex) { - return knex.schema - .createTable('accounts_transactions', (table) => { - table.increments(); - table.decimal('credit', 13, 3); - table.decimal('debit', 13, 3); - table.string('transaction_type').index(); - table.string('reference_type').index(); - table.integer('reference_id').index(); - table - .integer('account_id') - .unsigned() - .index() - .references('id') - .inTable('accounts'); - table.string('contact_type').nullable().index(); - table.integer('contact_id').unsigned().nullable().index(); - table.string('transaction_number').nullable().index(); - table.string('reference_number').nullable().index(); - table.integer('item_id').unsigned().nullable().index(); - table.integer('item_quantity').unsigned().nullable().index(), - table.string('note'); - table.integer('user_id').unsigned().index(); - - table.integer('index_group').unsigned().index(); - table.integer('index').unsigned().index(); - - table.date('date').index(); - table.datetime('created_at').index(); - }) - .raw('ALTER TABLE `ACCOUNTS_TRANSACTIONS` AUTO_INCREMENT = 1000'); -}; - -exports.down = function (knex) { - return knex.schema.dropTableIfExists('accounts_transactions'); -}; diff --git a/server/src/database/migrations/20200105014405_create_expenses_table.js b/server/src/database/migrations/20200105014405_create_expenses_table.js deleted file mode 100644 index 169856f33..000000000 --- a/server/src/database/migrations/20200105014405_create_expenses_table.js +++ /dev/null @@ -1,29 +0,0 @@ -exports.up = function (knex) { - return knex.schema - .createTable('expenses_transactions', (table) => { - table.increments(); - table.string('currency_code', 3); - table.text('description'); - table - .integer('payment_account_id') - .unsigned() - .references('id') - .inTable('accounts'); - table.integer('payee_id').unsigned().references('id').inTable('contacts'); - table.string('reference_no'); - - table.decimal('total_amount', 13, 3); - table.decimal('landed_cost_amount', 13, 3).defaultTo(0); - table.decimal('allocated_cost_amount', 13, 3).defaultTo(0); - - table.date('published_at').index(); - table.integer('user_id').unsigned().index(); - table.date('payment_date').index(); - table.timestamps(); - }) - .raw('ALTER TABLE `EXPENSES_TRANSACTIONS` AUTO_INCREMENT = 1000'); -}; - -exports.down = function (knex) { - return knex.schema.dropTableIfExists('expenses'); -}; diff --git a/server/src/database/migrations/20200105195823_create_manual_journals_table.js b/server/src/database/migrations/20200105195823_create_manual_journals_table.js deleted file mode 100644 index 8c2714648..000000000 --- a/server/src/database/migrations/20200105195823_create_manual_journals_table.js +++ /dev/null @@ -1,21 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('manual_journals', (table) => { - table.increments(); - table.string('journal_number').index(); - table.string('reference').index(); - table.string('journal_type').index(); - table.decimal('amount', 13, 3); - table.string('currency_code', 3); - table.date('date').index(); - table.string('description'); - table.date('published_at').index(); - table.string('attachment_file'); - table.integer('user_id').unsigned().index(); - table.timestamps(); - }).raw('ALTER TABLE `MANUAL_JOURNALS` AUTO_INCREMENT = 1000'); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('manual_journals'); -}; diff --git a/server/src/database/migrations/20200105195825_create_manual_journals_entries_table.js b/server/src/database/migrations/20200105195825_create_manual_journals_entries_table.js deleted file mode 100644 index ecf22cf4c..000000000 --- a/server/src/database/migrations/20200105195825_create_manual_journals_entries_table.js +++ /dev/null @@ -1,17 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('manual_journals_entries', (table) => { - table.increments(); - table.decimal('credit', 13, 3); - table.decimal('debit', 13, 3); - table.integer('index').unsigned(); - table.integer('account_id').unsigned().index().references('id').inTable('accounts'); - table.integer('contact_id').unsigned().nullable().index(); - table.string('note'); - table.integer('manual_journal_id').unsigned().index().references('id').inTable('manual_journals'); - }).raw('ALTER TABLE `MANUAL_JOURNALS_ENTRIES` AUTO_INCREMENT = 1000'); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('manual_journals_entries'); -}; diff --git a/server/src/database/migrations/20200419171451_create_currencies_table.js b/server/src/database/migrations/20200419171451_create_currencies_table.js deleted file mode 100644 index 4d06717b9..000000000 --- a/server/src/database/migrations/20200419171451_create_currencies_table.js +++ /dev/null @@ -1,14 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('currencies', table => { - table.increments(); - table.string('currency_name').index(); - table.string('currency_code', 4).index(); - table.string('currency_sign').index(); - table.timestamps(); - }).raw('ALTER TABLE `CURRENCIES` AUTO_INCREMENT = 1000'); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('currencies'); -}; diff --git a/server/src/database/migrations/20200419191832_create_exchange_rates_table.js b/server/src/database/migrations/20200419191832_create_exchange_rates_table.js deleted file mode 100644 index 99db76530..000000000 --- a/server/src/database/migrations/20200419191832_create_exchange_rates_table.js +++ /dev/null @@ -1,14 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('exchange_rates', table => { - table.increments(); - table.string('currency_code', 4).index(); - table.decimal('exchange_rate'); - table.date('date').index(); - table.timestamps(); - }).raw('ALTER TABLE `EXCHANGE_RATES` AUTO_INCREMENT = 1000'); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('exchange_rates'); -}; diff --git a/server/src/database/migrations/20200423201600_create_media_table.js b/server/src/database/migrations/20200423201600_create_media_table.js deleted file mode 100644 index 64ffc3940..000000000 --- a/server/src/database/migrations/20200423201600_create_media_table.js +++ /dev/null @@ -1,12 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('media', (table) => { - table.increments(); - table.string('attachment_file'); - table.timestamps(); - }); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('media'); -}; diff --git a/server/src/database/migrations/20200503032011_create_media_links_table.js b/server/src/database/migrations/20200503032011_create_media_links_table.js deleted file mode 100644 index 31d26be4b..000000000 --- a/server/src/database/migrations/20200503032011_create_media_links_table.js +++ /dev/null @@ -1,13 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('media_links', table => { - table.increments(); - table.string('model_name').index(); - table.integer('media_id').unsigned().references('id').inTable('media'); - table.integer('model_id').unsigned().index(); - }) -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('media_links'); -}; diff --git a/server/src/database/migrations/20200606113848_create_expense_transactions_categories_table.js b/server/src/database/migrations/20200606113848_create_expense_transactions_categories_table.js deleted file mode 100644 index a1bc88052..000000000 --- a/server/src/database/migrations/20200606113848_create_expense_transactions_categories_table.js +++ /dev/null @@ -1,29 +0,0 @@ -exports.up = function (knex) { - return knex.schema - .createTable('expense_transaction_categories', (table) => { - table.increments(); - table - .integer('expense_account_id') - .unsigned() - .index() - .references('id') - .inTable('accounts'); - table.integer('index').unsigned(); - table.text('description'); - table.decimal('amount', 13, 3); - table.decimal('allocated_cost_amount', 13, 3).defaultTo(0); - table.boolean('landed_cost').defaultTo(false); - table - .integer('expense_id') - .unsigned() - .index() - .references('id') - .inTable('expenses_transactions'); - table.timestamps(); - }) - .raw('ALTER TABLE `EXPENSE_TRANSACTION_CATEGORIES` AUTO_INCREMENT = 1000'); -}; - -exports.down = function (knex) { - return knex.schema.dropTableIfExists('expense_transaction_categories'); -}; diff --git a/server/src/database/migrations/20200713192127_create_sales_estimates_table.js b/server/src/database/migrations/20200713192127_create_sales_estimates_table.js deleted file mode 100644 index 6bd95c289..000000000 --- a/server/src/database/migrations/20200713192127_create_sales_estimates_table.js +++ /dev/null @@ -1,32 +0,0 @@ -const { default: TrialBalanceSheet } = require("services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheet"); - -exports.up = function(knex) { - return knex.schema.createTable('sales_estimates', (table) => { - table.increments(); - table.decimal('amount', 13, 3); - table.string('currency_code', 3); - table.integer('customer_id').unsigned().index().references('id').inTable('contacts'); - table.date('estimate_date').index(); - table.date('expiration_date').index(); - table.string('reference'); - table.string('estimate_number').index(); - table.text('note'); - table.text('terms_conditions'); - table.text('send_to_email'); - - table.date('delivered_at').index(); - table.date('approved_at').index(); - table.date('rejected_at').index(); - - table.integer('user_id').unsigned().index(); - - table.integer('converted_to_invoice_id').unsigned(); - table.date('converted_to_invoice_at'); - - table.timestamps(); - }); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('sales_estimates'); -}; diff --git a/server/src/database/migrations/20200713213303_create_sales_receipt_table.js b/server/src/database/migrations/20200713213303_create_sales_receipt_table.js deleted file mode 100644 index c1f093312..000000000 --- a/server/src/database/migrations/20200713213303_create_sales_receipt_table.js +++ /dev/null @@ -1,22 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('sales_receipts', table => { - table.increments(); - table.decimal('amount', 13, 3); - table.string('currency_code', 3); - table.integer('deposit_account_id').unsigned().index().references('id').inTable('accounts'); - table.integer('customer_id').unsigned().index().references('id').inTable('contacts'); - table.date('receipt_date').index(); - table.string('receipt_number').index(); - table.string('reference_no').index(); - table.string('send_to_email'); - table.text('receipt_message'); - table.text('statement'); - table.date('closed_at').index(); - table.timestamps(); - }) -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('sales_receipts'); -}; diff --git a/server/src/database/migrations/20200715193633_create_sale_invoices_table.js b/server/src/database/migrations/20200715193633_create_sale_invoices_table.js deleted file mode 100644 index 010a17c26..000000000 --- a/server/src/database/migrations/20200715193633_create_sale_invoices_table.js +++ /dev/null @@ -1,28 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('sales_invoices', table => { - table.increments(); - table.integer('customer_id').unsigned().index().references('id').inTable('contacts') - table.date('invoice_date').index(); - table.date('due_date'); - table.string('invoice_no').index(); - table.string('reference_no'); - - table.text('invoice_message'); - table.text('terms_conditions'); - - table.decimal('balance', 13, 3); - table.decimal('payment_amount', 13, 3); - table.string('currency_code', 3); - - table.string('inv_lot_number').index(); - - table.date('delivered_at').index(); - table.integer('user_id').unsigned(); - table.timestamps(); - }); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('sales_invoices'); -}; diff --git a/server/src/database/migrations/20200715194514_create_payment_receives_table.js b/server/src/database/migrations/20200715194514_create_payment_receives_table.js deleted file mode 100644 index c9a73ba13..000000000 --- a/server/src/database/migrations/20200715194514_create_payment_receives_table.js +++ /dev/null @@ -1,30 +0,0 @@ -const { knexSnakeCaseMappers } = require('objection'); - -exports.up = function (knex) { - return knex.schema.createTable('payment_receives', (table) => { - table.increments(); - table - .integer('customer_id') - .unsigned() - .index() - .references('id') - .inTable('contacts'); - table.date('payment_date').index(); - table.decimal('amount', 13, 3).defaultTo(0); - table.string('currency_code', 3); - table.string('reference_no').index(); - table - .integer('deposit_account_id') - .unsigned() - .references('id') - .inTable('accounts'); - table.string('payment_receive_no').nullable(); - table.text('statement'); - table.integer('user_id').unsigned().index(); - table.timestamps(); - }); -}; - -exports.down = function (knex) { - return knex.schema.dropTableIfExists('payment_receives'); -}; diff --git a/server/src/database/migrations/20200718161031_create_payment_receives_entries_table.js b/server/src/database/migrations/20200718161031_create_payment_receives_entries_table.js deleted file mode 100644 index 0e396550c..000000000 --- a/server/src/database/migrations/20200718161031_create_payment_receives_entries_table.js +++ /dev/null @@ -1,13 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('payment_receives_entries', table => { - table.increments(); - table.integer('payment_receive_id').unsigned().index().references('id').inTable('payment_receives'); - table.integer('invoice_id').unsigned().index().references('id').inTable('sales_invoices'); - table.decimal('payment_amount', 13, 3).unsigned(); - }) -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('payment_receives_entries'); -}; diff --git a/server/src/database/migrations/20200719152005_create_bills_table.js b/server/src/database/migrations/20200719152005_create_bills_table.js deleted file mode 100644 index 34cb845ef..000000000 --- a/server/src/database/migrations/20200719152005_create_bills_table.js +++ /dev/null @@ -1,30 +0,0 @@ -exports.up = function (knex) { - return knex.schema.createTable('bills', (table) => { - table.increments(); - table - .integer('vendor_id') - .unsigned() - .index() - .references('id') - .inTable('contacts'); - table.string('bill_number'); - table.date('bill_date').index(); - table.date('due_date').index(); - table.string('reference_no').index(); - table.string('status').index(); - table.text('note'); - table.decimal('amount', 13, 3).defaultTo(0); - table.string('currency_code'); - table.decimal('payment_amount', 13, 3).defaultTo(0); - table.decimal('landed_cost_amount', 13, 3).defaultTo(0); - table.decimal('allocated_cost_amount', 13, 3).defaultTo(0); - table.string('inv_lot_number').index(); - table.date('opened_at').index(); - table.integer('user_id').unsigned(); - table.timestamps(); - }); -}; - -exports.down = function (knex) { - return knex.schema.dropTableIfExists('bills'); -}; diff --git a/server/src/database/migrations/20200719153909_create_bills_payments_table.js b/server/src/database/migrations/20200719153909_create_bills_payments_table.js deleted file mode 100644 index 568302f3e..000000000 --- a/server/src/database/migrations/20200719153909_create_bills_payments_table.js +++ /dev/null @@ -1,21 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('bills_payments', table => { - table.increments(); - table.integer('vendor_id').unsigned().index().references('id').inTable('contacts'); - table.decimal('amount', 13, 3).defaultTo(0); - table.string('currency_code'); - table.integer('payment_account_id').unsigned().references('id').inTable('accounts'); - table.string('payment_number').nullable().index(); - table.date('payment_date').index(); - table.string('payment_method'); - table.string('reference'); - table.integer('user_id').unsigned().index(); - table.text('statement'); - table.timestamps(); - }); -}; - -exports.down = function(knex) { - -}; diff --git a/server/src/database/migrations/20200722164251_create_inventory_transactions_table.js b/server/src/database/migrations/20200722164251_create_inventory_transactions_table.js deleted file mode 100644 index bf8de6184..000000000 --- a/server/src/database/migrations/20200722164251_create_inventory_transactions_table.js +++ /dev/null @@ -1,24 +0,0 @@ -exports.up = function (knex) { - return knex.schema.createTable('inventory_transactions', (table) => { - table.increments('id'); - table.date('date').index(); - table.string('direction').index(); - table - .integer('item_id') - .unsigned() - .index() - .references('id') - .inTable('items'); - table.integer('quantity').unsigned(); - table.decimal('rate', 13, 3).unsigned(); - - table.string('transaction_type').index(); - table.integer('transaction_id').unsigned().index(); - - table.integer('entry_id').unsigned().index(); - table.integer('cost_account_id').unsigned(); - table.timestamps(); - }); -}; - -exports.down = function (knex) {}; diff --git a/server/src/database/migrations/20200722164252_create_landed_cost_table.js b/server/src/database/migrations/20200722164252_create_landed_cost_table.js deleted file mode 100644 index f315e1bde..000000000 --- a/server/src/database/migrations/20200722164252_create_landed_cost_table.js +++ /dev/null @@ -1,21 +0,0 @@ -exports.up = function (knex) { - return knex.schema.createTable('bill_located_costs', (table) => { - table.increments(); - - table.decimal('amount', 13, 3).unsigned(); - - table.integer('fromTransactionId').unsigned(); - table.string('fromTransactionType'); - table.integer('fromTransactionEntryId').unsigned(); - - table.string('allocationMethod'); - table.integer('costAccountId').unsigned(); - table.text('description'); - - table.integer('billId').unsigned(); - - table.timestamps(); - }); -}; - -exports.down = function (knex) {}; diff --git a/server/src/database/migrations/20200722164253_create_landed_cost_entries_table.js b/server/src/database/migrations/20200722164253_create_landed_cost_entries_table.js deleted file mode 100644 index 96cdc5d77..000000000 --- a/server/src/database/migrations/20200722164253_create_landed_cost_entries_table.js +++ /dev/null @@ -1,11 +0,0 @@ -exports.up = function (knex) { - return knex.schema.createTable('bill_located_cost_entries', (table) => { - table.increments(); - - table.decimal('cost', 13, 3).unsigned(); - table.integer('entry_id').unsigned(); - table.integer('bill_located_cost_id').unsigned(); - }); -}; - -exports.down = function (knex) {}; diff --git a/server/src/database/migrations/20200722164255_create_inventory_transaction_meta_table.js b/server/src/database/migrations/20200722164255_create_inventory_transaction_meta_table.js deleted file mode 100644 index 15f348a17..000000000 --- a/server/src/database/migrations/20200722164255_create_inventory_transaction_meta_table.js +++ /dev/null @@ -1,11 +0,0 @@ -exports.up = function (knex) { - return knex.schema.createTable('inventory_transaction_meta', (table) => { - table.increments('id'); - table.string('transaction_number'); - table.text('description'); - table.integer('inventory_transaction_id').unsigned(); - }); - }; - - exports.down = function (knex) {}; - \ No newline at end of file diff --git a/server/src/database/migrations/20200722173423_create_items_entries_table.js b/server/src/database/migrations/20200722173423_create_items_entries_table.js deleted file mode 100644 index b480540de..000000000 --- a/server/src/database/migrations/20200722173423_create_items_entries_table.js +++ /dev/null @@ -1,39 +0,0 @@ -exports.up = function (knex) { - return knex.schema.createTable('items_entries', (table) => { - table.increments(); - table.string('reference_type').index(); - table.string('reference_id').index(); - - table.integer('index').unsigned(); - table - .integer('item_id') - .unsigned() - .index() - .references('id') - .inTable('items'); - table.text('description'); - table.integer('discount').unsigned(); - table.integer('quantity').unsigned(); - table.integer('rate').unsigned(); - - table - .integer('sell_account_id') - .unsigned() - .references('id') - .inTable('accounts'); - table - .integer('cost_account_id') - .unsigned() - .references('id') - .inTable('accounts'); - - table.boolean('landed_cost').defaultTo(false); - table.decimal('allocated_cost_amount', 13, 3).defaultTo(0); - - table.timestamps(); - }); -}; - -exports.down = function (knex) { - return knex.schema.dropTableIfExists('items_entries'); -}; diff --git a/server/src/database/migrations/20200728161617_create_bill_payments_entries.js b/server/src/database/migrations/20200728161617_create_bill_payments_entries.js deleted file mode 100644 index 166bb9087..000000000 --- a/server/src/database/migrations/20200728161617_create_bill_payments_entries.js +++ /dev/null @@ -1,14 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('bills_payments_entries', table => { - table.increments(); - - table.integer('bill_payment_id').unsigned().index().references('id').inTable('bills_payments'); - table.integer('bill_id').unsigned().index().references('id').inTable('bills'); - table.decimal('payment_amount', 13, 3).unsigned(); - }) -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('bills_payments_entries'); -}; diff --git a/server/src/database/migrations/20200810121807_create_inventory_cost_lot_tracker_table.js b/server/src/database/migrations/20200810121807_create_inventory_cost_lot_tracker_table.js deleted file mode 100644 index d490cbcc7..000000000 --- a/server/src/database/migrations/20200810121807_create_inventory_cost_lot_tracker_table.js +++ /dev/null @@ -1,26 +0,0 @@ -exports.up = function (knex) { - return knex.schema.createTable('inventory_cost_lot_tracker', (table) => { - table.increments(); - table.date('date').index(); - table.string('direction').index(); - - table.integer('item_id').unsigned().index(); - table.integer('quantity').unsigned().index(); - table.decimal('rate', 13, 3); - table.integer('remaining'); - table.decimal('cost', 13, 3); - - table.string('transaction_type').index(); - table.integer('transaction_id').unsigned().index(); - - table.integer('entry_id').unsigned().index(); - table.integer('cost_account_id').unsigned(); - table.integer('inventory_transaction_id').unsigned().index(); - - table.datetime('created_at').index(); - }); -}; - -exports.down = function (knex) { - return knex.schema.dropTableIfExists('inventory_cost_lot_tracker'); -}; diff --git a/server/src/database/migrations/20200810121809_create_inventory_adjustments_table.js b/server/src/database/migrations/20200810121809_create_inventory_adjustments_table.js deleted file mode 100644 index 4774fcd23..000000000 --- a/server/src/database/migrations/20200810121809_create_inventory_adjustments_table.js +++ /dev/null @@ -1,19 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('inventory_adjustments', table => { - table.increments(); - table.date('date').index(); - table.string('type').index(); - table.integer('adjustment_account_id').unsigned().references('id').inTable('accounts'); - table.string('reason'); - table.string('reference_no').index(); - table.string('description'); - table.integer('user_id').unsigned(); - table.date('published_at'); - table.timestamps(); - }); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('inventory_adjustments'); -}; diff --git a/server/src/database/migrations/20200810121810_create_inventory_adjustments_entries_table.js b/server/src/database/migrations/20200810121810_create_inventory_adjustments_entries_table.js deleted file mode 100644 index c40f877e2..000000000 --- a/server/src/database/migrations/20200810121810_create_inventory_adjustments_entries_table.js +++ /dev/null @@ -1,25 +0,0 @@ -exports.up = function (knex) { - return knex.schema.createTable('inventory_adjustments_entries', (table) => { - table.increments(); - table - .integer('adjustment_id') - .unsigned() - .index() - .references('id') - .inTable('inventory_adjustments'); - table.integer('index').unsigned(); - table - .integer('item_id') - .unsigned() - .index() - .references('id') - .inTable('items'); - table.integer('quantity'); - table.decimal('cost', 13, 3).unsigned(); - table.decimal('value', 13, 3).unsigned(); - }); -}; - -exports.down = function (knex) { - return knex.schema.dropTableIfExists('inventory_adjustments_entries'); -}; diff --git a/server/src/database/objection.js b/server/src/database/objection.js deleted file mode 100644 index cf57361c4..000000000 --- a/server/src/database/objection.js +++ /dev/null @@ -1,8 +0,0 @@ -import { Model } from 'objection'; - -// Bind all Models to a knex instance. If you only have one database in -// your server this is all you have to do. For multi database systems, see -// the Model.bindKnex() method. -export default ({ knex }) => { - Model.knex(knex); -}; diff --git a/server/src/database/seeds/core/20190423085242_seed_accounts.js b/server/src/database/seeds/core/20190423085242_seed_accounts.js deleted file mode 100644 index 3c36f60f0..000000000 --- a/server/src/database/seeds/core/20190423085242_seed_accounts.js +++ /dev/null @@ -1,24 +0,0 @@ -import Container from 'typedi'; -import { get } from 'lodash'; -import TenancyService from 'services/Tenancy/TenancyService'; -import AccountsData from '../data/accounts'; - -exports.up = function (knex) { - const tenancyService = Container.get(TenancyService); - const i18n = tenancyService.i18n(knex.userParams.tenantId); - - const data = AccountsData.map((account) => { - return { - ...account, - name: i18n.__(account.name), - description: i18n.__(account.description), - }; - }); - - return knex('accounts').then(async () => { - // Inserts seed entries. - return knex('accounts').insert(data); - }); -}; - -exports.down = function (knex) {}; diff --git a/server/src/database/seeds/core/20200810121809_seed_settings.js b/server/src/database/seeds/core/20200810121809_seed_settings.js deleted file mode 100644 index cf5e8eb4e..000000000 --- a/server/src/database/seeds/core/20200810121809_seed_settings.js +++ /dev/null @@ -1,37 +0,0 @@ - -exports.up = (knex) => { - const settings = [ - // Orgnization settings. - { group: 'organization', key: 'accounting_basis', value: 'accural' }, - - // Accounts settings. - { group: 'accounts', key: 'account_code_unique', value: true }, - - // Manual journals settings. - { group: 'manual_journals', key: 'next_number', value: '00001' }, - { group: 'manual_journals', key: 'auto_increment', value: true }, - - // Sale invoices settings. - { group: 'sales_invoices', key: 'next_number', value: '00001' }, - { group: 'sales_invoices', key: 'number_prefix', value: 'INV-' }, - { group: 'sales_invoices', key: 'auto_increment', value: true }, - - // Sale receipts settings. - { group: 'sales_receipts', key: 'next_number', value: '00001' }, - { group: 'sales_receipts', key: 'number_prefix', value: 'REC-' }, - { group: 'sales_receipts', key: 'auto_increment', value: true }, - - // Sale estimates settings. - { group: 'sales_estimates', key: 'next_number', value: '00001' }, - { group: 'sales_estimates', key: 'number_prefix', value: 'EST-' }, - { group: 'sales_estimates', key: 'auto_increment', value: true }, - - // Payment receives settings. - { group: 'payment_receives', key: 'number_prefix', value: 'PAY-' }, - { group: 'payment_receives', key: 'next_number', value: '00001' }, - { group: 'payment_receives', key: 'auto_increment', value: true }, - ]; - return knex('settings').insert(settings); -}; - -exports.down = (knex) => {}; diff --git a/server/src/database/seeds/core/20200810121909_seed_items_settings.js b/server/src/database/seeds/core/20200810121909_seed_items_settings.js deleted file mode 100644 index c86d53fba..000000000 --- a/server/src/database/seeds/core/20200810121909_seed_items_settings.js +++ /dev/null @@ -1,27 +0,0 @@ -exports.up = async (knex) => { - const costAccount = await knex('accounts') - .where('slug', 'cost-of-goods-sold') - .first(); - - const sellAccount = await knex('accounts') - .where('slug', 'sales-of-product-income') - .first(); - - const inventoryAccount = await knex('accounts') - .where('slug', 'inventory-asset') - .first(); - - const settings = [ - // Items settings. - { group: 'items', key: 'preferred_sell_account', value: sellAccount?.id }, - { group: 'items', key: 'preferred_cost_account', value: costAccount?.id }, - { - group: 'items', - key: 'preferred_inventory_account', - value: inventoryAccount?.id, - }, - ]; - return knex('settings').insert(settings); -}; - -exports.down = (knex) => {}; diff --git a/server/src/database/seeds/data/accounts.js b/server/src/database/seeds/data/accounts.js deleted file mode 100644 index fb6bf6c07..000000000 --- a/server/src/database/seeds/data/accounts.js +++ /dev/null @@ -1,318 +0,0 @@ - -export default [ - { - name:'Bank Account', - slug: 'bank-account', - account_type: 'bank', - code: '10001', - description: '', - active: 1, - index: 1, - predefined: 1, - }, - { - name:'Saving Bank Account', - slug: 'saving-bank-account', - account_type: 'bank', - code: '10002', - description: '', - active: 1, - index: 1, - predefined: 0, - }, - { - name:'Undeposited Funds', - slug: 'undeposited-funds', - account_type: 'cash', - code: '10003', - description: '', - active: 1, - index: 1, - predefined: 1, - }, - { - name:'Petty Cash', - slug: 'petty-cash', - account_type: 'cash', - code: '10004', - description: '', - active: 1, - index: 1, - predefined: 1, - }, - { - name:'Computer Equipment', - slug: 'computer-equipment', - code: '10005', - account_type: 'fixed-asset', - predefined: 0, - parent_account_id: null, - index: 1, - active: 1, - description: '', - }, - { - name:'Office Equipment', - slug: 'office-equipment', - code: '10006', - account_type: 'fixed-asset', - predefined: 0, - parent_account_id: null, - index: 1, - active: 1, - description: '', - }, - { - name:'Accounts Receivable (A/R)', - slug: 'accounts-receivable', - account_type: 'accounts-receivable', - code: '10007', - description: '', - active: 1, - index: 1, - predefined: 1, - }, - { - name:'Inventory Asset', - slug: 'inventory-asset', - code: '10008', - account_type: 'inventory', - predefined: 1, - parent_account_id: null, - index: 1, - active: 1, - description:'An account that holds valuation of products or goods that availiable for sale.', - }, - - // Libilities - { - name:'Accounts Payable (A/P)', - slug: 'accounts-payable', - account_type: 'accounts-payable', - parent_account_id: null, - code: '20001', - description: '', - active: 1, - index: 1, - predefined: 1, - }, - { - name:'Owner A Drawings', - slug: 'owner-drawings', - account_type: 'other-current-liability', - parent_account_id: null, - code: '20002', - description:'Withdrawals by the owners.', - active: 1, - index: 1, - predefined: 0, - }, - { - name:'Loan', - slug: 'owner-drawings', - account_type: 'other-current-liability', - code: '20003', - description:'Money that has been borrowed from a creditor.', - active: 1, - index: 1, - predefined: 0, - }, - { - name:'Opening Balance Liabilities', - slug: 'opening-balance-liabilities', - account_type: 'other-current-liability', - code: '20004', - description:'This account will hold the difference in the debits and credits entered during the opening balance..', - active: 1, - index: 1, - predefined: 0, - }, - { - name:'Revenue Received in Advance', - slug: 'revenue-received-in-advance', - account_type: 'other-current-liability', - parent_account_id: null, - code: '20005', - description: 'When customers pay in advance for products/services.', - active: 1, - index: 1, - predefined: 0, - }, - { - name:'Sales Tax Payable', - slug: 'owner-drawings', - account_type: 'other-current-liability', - code: '20006', - description: '', - active: 1, - index: 1, - predefined: 1, - }, - - // Equity - { - name:'Retained Earnings', - slug: 'retained-earnings', - account_type: 'equity', - code: '30001', - description:'Retained earnings tracks net income from previous fiscal years.', - active: 1, - index: 1, - predefined: 1, - }, - { - name:'Opening Balance Equity', - slug: 'opening-balance-equity', - account_type: 'equity', - code: '30002', - description:'When you enter opening balances to the accounts, the amounts enter in Opening balance equity. This ensures that you have a correct trial balance sheet for your company, without even specific the second credit or debit entry.', - active: 1, - index: 1, - predefined: 1, - }, - { - name: "Owner's Equity", - slug: 'owner-equity', - account_type: 'equity', - code: '30003', - description: '', - active: 1, - index: 1, - predefined: 1, - }, - { - name:`Drawings`, - slug: 'drawings', - account_type: 'equity', - code: '30003', - description:'Goods purchased with the intention of selling these to customers', - active: 1, - index: 1, - predefined: 1, - }, - - // Expenses - { - name:'Other Expenses', - slug: 'other-expenses', - account_type: 'other-expense', - parent_account_id: null, - code: '40001', - description: '', - active: 1, - index: 1, - predefined: 1, - }, - { - name:'Cost of Goods Sold', - slug: 'cost-of-goods-sold', - account_type: 'cost-of-goods-sold', - parent_account_id: null, - code: '40002', - description:'Tracks the direct cost of the goods sold.', - active: 1, - index: 1, - predefined: 1, - }, - { - name:'Office expenses', - slug: 'office-expenses', - account_type: 'expense', - parent_account_id: null, - code: '40003', - description: '', - active: 1, - index: 1, - predefined: 0, - }, - { - name:'Rent', - slug: 'rent', - account_type: 'expense', - parent_account_id: null, - code: '40004', - description: '', - active: 1, - index: 1, - predefined: 0, - }, - { - name:'Exchange Gain or Loss', - slug: 'exchange-grain-loss', - account_type: 'other-expense', - parent_account_id: null, - code: '40005', - description:'Tracks the gain and losses of the exchange differences.', - active: 1, - index: 1, - predefined: 1, - }, - { - name:'Bank Fees and Charges', - slug: 'bank-fees-and-charges', - account_type: 'expense', - parent_account_id: null, - code: '40006', - description: 'Any bank fees levied is recorded into the bank fees and charges account. A bank account maintenance fee, transaction charges, a late payment fee are some examples.', - active: 1, - index: 1, - predefined: 0, - }, - { - name:'Depreciation Expense', - slug: 'depreciation-expense', - account_type: 'expense', - parent_account_id: null, - code: '40007', - description: '', - active: 1, - index: 1, - predefined: 0, - }, - - // Income - { - name:'Sales of Product Income', - slug: 'sales-of-product-income', - account_type: 'income', - predefined: 1, - parent_account_id: null, - code: '50001', - index: 1, - active: 1, - description: '', - }, - { - name:'Sales of Service Income', - slug: 'sales-of-service-income', - account_type: 'income', - predefined: 0, - parent_account_id: null, - code: '50002', - index: 1, - active: 1, - description: '', - }, - { - name:'Uncategorized Income', - slug: 'uncategorized-income', - account_type: 'income', - parent_account_id: null, - code: '50003', - description: '', - active: 1, - index: 1, - predefined: 1, - }, - { - name:'Other Income', - slug: 'other-income', - account_type: 'other-income', - parent_account_id: null, - code: '50004', - description:'The income activities are not associated to the core business.', - active: 1, - index: 1, - predefined: 0, - } -]; \ No newline at end of file diff --git a/server/src/decorators/eventDispatcher.ts b/server/src/decorators/eventDispatcher.ts deleted file mode 100644 index 4ac9a6d50..000000000 --- a/server/src/decorators/eventDispatcher.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { EventDispatcher as EventDispatcherClass } from 'event-dispatch'; -import { Container } from 'typedi'; - -export function EventDispatcher() { - return (object: any, propertyName: string, index?: number): void => { - const eventDispatcher = new EventDispatcherClass(); - Container.registerHandler({ object, propertyName, index, value: () => eventDispatcher }); - }; -} - -export { EventDispatcher as EventDispatcherInterface } from 'event-dispatch'; diff --git a/server/src/exceptions/HttpException.ts b/server/src/exceptions/HttpException.ts deleted file mode 100644 index 217b082ae..000000000 --- a/server/src/exceptions/HttpException.ts +++ /dev/null @@ -1,9 +0,0 @@ -class HttpException extends Error { - public status: number; - public message: string; - constructor(status: number, message: string) { - super(message); - this.status = status; - this.message = message; - } -} \ No newline at end of file diff --git a/server/src/exceptions/ModelEntityNotFound.ts b/server/src/exceptions/ModelEntityNotFound.ts deleted file mode 100644 index a7bd6dfe1..000000000 --- a/server/src/exceptions/ModelEntityNotFound.ts +++ /dev/null @@ -1,8 +0,0 @@ - -export default class ModelEntityNotFound extends Error { - - constructor(entityId, message?) { - message = message || `Entity with id ${entityId} does not exist`; - super(message); - } -} \ No newline at end of file diff --git a/server/src/exceptions/NoPaymentModelWithPricedPlan.ts b/server/src/exceptions/NoPaymentModelWithPricedPlan.ts deleted file mode 100644 index 938ec8b4a..000000000 --- a/server/src/exceptions/NoPaymentModelWithPricedPlan.ts +++ /dev/null @@ -1,8 +0,0 @@ - - -export default class NoPaymentModelWithPricedPlan { - - constructor() { - - } -} \ No newline at end of file diff --git a/server/src/exceptions/NotAllowedChangeSubscriptionPlan.ts b/server/src/exceptions/NotAllowedChangeSubscriptionPlan.ts deleted file mode 100644 index 3c5380259..000000000 --- a/server/src/exceptions/NotAllowedChangeSubscriptionPlan.ts +++ /dev/null @@ -1,8 +0,0 @@ - - -export default class NotAllowedChangeSubscriptionPlan { - - constructor() { - this.name = "NotAllowedChangeSubscriptionPlan"; - } -} \ No newline at end of file diff --git a/server/src/exceptions/PaymentAmountInvalidWithPlan.ts b/server/src/exceptions/PaymentAmountInvalidWithPlan.ts deleted file mode 100644 index 834e8cbe1..000000000 --- a/server/src/exceptions/PaymentAmountInvalidWithPlan.ts +++ /dev/null @@ -1,7 +0,0 @@ - - -export default class PaymentAmountInvalidWithPlan{ - constructor() { - - } -} \ No newline at end of file diff --git a/server/src/exceptions/PaymentInputInvalid.ts b/server/src/exceptions/PaymentInputInvalid.ts deleted file mode 100644 index 065bfb3b4..000000000 --- a/server/src/exceptions/PaymentInputInvalid.ts +++ /dev/null @@ -1,5 +0,0 @@ - - -export default class PaymentInputInvalid { - constructor() {} -} \ No newline at end of file diff --git a/server/src/exceptions/ServiceError.ts b/server/src/exceptions/ServiceError.ts deleted file mode 100644 index 2e3139805..000000000 --- a/server/src/exceptions/ServiceError.ts +++ /dev/null @@ -1,14 +0,0 @@ - - -export default class ServiceError { - errorType: string; - message: string; - payload: any; - - constructor(errorType: string, message?: string, payload?: any) { - this.errorType = errorType; - this.message = message || null; - - this.payload = payload; - } -} \ No newline at end of file diff --git a/server/src/exceptions/ServiceErrors.ts b/server/src/exceptions/ServiceErrors.ts deleted file mode 100644 index cb15ff196..000000000 --- a/server/src/exceptions/ServiceErrors.ts +++ /dev/null @@ -1,15 +0,0 @@ -import ServiceError from './ServiceError'; - - -export default class ServiceErrors { - errors: ServiceError[]; - - constructor(errors: ServiceError[]) { - this.errors = errors; - } - - hasType(errorType: string) { - return this.errors - .some((error: ServiceError) => error.errorType === errorType); - } -} \ No newline at end of file diff --git a/server/src/exceptions/TenantAlreadyInitialized.ts b/server/src/exceptions/TenantAlreadyInitialized.ts deleted file mode 100644 index 72c11f810..000000000 --- a/server/src/exceptions/TenantAlreadyInitialized.ts +++ /dev/null @@ -1,7 +0,0 @@ - - -export default class TenantAlreadyInitialized { - constructor() { - - } -} \ No newline at end of file diff --git a/server/src/exceptions/TenantAlreadySeeded.ts b/server/src/exceptions/TenantAlreadySeeded.ts deleted file mode 100644 index b4fac0bb0..000000000 --- a/server/src/exceptions/TenantAlreadySeeded.ts +++ /dev/null @@ -1,9 +0,0 @@ - - - - -export default class TenantAlreadySeeded { - constructor() { - - } -} \ No newline at end of file diff --git a/server/src/exceptions/TenantDBAlreadyExists.ts b/server/src/exceptions/TenantDBAlreadyExists.ts deleted file mode 100644 index 72c51890d..000000000 --- a/server/src/exceptions/TenantDBAlreadyExists.ts +++ /dev/null @@ -1,9 +0,0 @@ - - - - -export default class TenantDBAlreadyExists { - constructor() { - - } -} \ No newline at end of file diff --git a/server/src/exceptions/TenantDatabaseNotBuilt.ts b/server/src/exceptions/TenantDatabaseNotBuilt.ts deleted file mode 100644 index 8b655e10a..000000000 --- a/server/src/exceptions/TenantDatabaseNotBuilt.ts +++ /dev/null @@ -1,7 +0,0 @@ - - -export default class TenantDatabaseNotBuilt { - constructor() { - - } -} \ No newline at end of file diff --git a/server/src/exceptions/VoucherCodeRequired.ts b/server/src/exceptions/VoucherCodeRequired.ts deleted file mode 100644 index b92eb155c..000000000 --- a/server/src/exceptions/VoucherCodeRequired.ts +++ /dev/null @@ -1,6 +0,0 @@ - -export default class VoucherCodeRequired { - constructor() { - this.name = 'VoucherCodeRequired'; - } -} diff --git a/server/src/exceptions/index.ts b/server/src/exceptions/index.ts deleted file mode 100644 index a18746d02..000000000 --- a/server/src/exceptions/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import NotAllowedChangeSubscriptionPlan from './NotAllowedChangeSubscriptionPlan'; -import ServiceError from './ServiceError'; -import ServiceErrors from './ServiceErrors'; -import NoPaymentModelWithPricedPlan from './NoPaymentModelWithPricedPlan'; -import PaymentInputInvalid from './PaymentInputInvalid'; -import PaymentAmountInvalidWithPlan from './PaymentAmountInvalidWithPlan'; -import TenantAlreadyInitialized from './TenantAlreadyInitialized'; -import TenantAlreadySeeded from './TenantAlreadySeeded'; -import TenantDBAlreadyExists from './TenantDBAlreadyExists'; -import TenantDatabaseNotBuilt from './TenantDatabaseNotBuilt'; -import VoucherCodeRequired from './VoucherCodeRequired'; - -export { - NotAllowedChangeSubscriptionPlan, - NoPaymentModelWithPricedPlan, - PaymentAmountInvalidWithPlan, - ServiceError, - ServiceErrors, - PaymentInputInvalid, - TenantAlreadyInitialized, - TenantAlreadySeeded, - TenantDBAlreadyExists, - TenantDatabaseNotBuilt, - VoucherCodeRequired, -}; \ No newline at end of file diff --git a/server/src/interfaces/APAgingSummaryReport.ts b/server/src/interfaces/APAgingSummaryReport.ts deleted file mode 100644 index 451b6bc85..000000000 --- a/server/src/interfaces/APAgingSummaryReport.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { - IAgingPeriod, - IAgingPeriodTotal, - IAgingAmount -} from './AgingReport'; -import { - INumberFormatQuery -} from './FinancialStatements'; - -export interface IAPAgingSummaryQuery { - asDate: Date | string; - agingDaysBefore: number; - agingPeriods: number; - numberFormat: INumberFormatQuery; - vendorsIds: number[]; - noneZero: boolean; -} - -export interface IAPAgingSummaryVendor { - vendorName: string, - current: IAgingAmount, - aging: IAgingPeriodTotal[], - total: IAgingAmount, -}; - -export interface IAPAgingSummaryTotal { - current: IAgingAmount, - aging: IAgingPeriodTotal[], - total: IAgingAmount, -}; - -export interface IAPAgingSummaryData { - vendors: IAPAgingSummaryVendor[], - total: IAPAgingSummaryTotal, -}; - -export type IAPAgingSummaryColumns = IAgingPeriod[]; - - -export interface IARAgingSummaryMeta { - baseCurrency: string, - organizationName: string, -} - - -export interface IAPAgingSummaryMeta { - baseCurrency: string, - organizationName: string, -} \ No newline at end of file diff --git a/server/src/interfaces/ARAgingSummaryReport.ts b/server/src/interfaces/ARAgingSummaryReport.ts deleted file mode 100644 index 2313fe5c7..000000000 --- a/server/src/interfaces/ARAgingSummaryReport.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { IAgingPeriod, IAgingPeriodTotal, IAgingAmount } from './AgingReport'; -import { INumberFormatQuery } from './FinancialStatements'; - -export interface IARAgingSummaryQuery { - asDate: Date | string; - agingDaysBefore: number; - agingPeriods: number; - numberFormat: INumberFormatQuery; - customersIds: number[]; - noneZero: boolean; -} - -export interface IARAgingSummaryCustomer { - customerName: string; - current: IAgingAmount; - aging: IAgingPeriodTotal[]; - total: IAgingAmount; -} - -export interface IARAgingSummaryTotal { - current: IAgingAmount; - aging: IAgingPeriodTotal[]; - total: IAgingAmount; -} - -export interface IARAgingSummaryData { - customers: IARAgingSummaryCustomer[]; - total: IARAgingSummaryTotal; -} - -export type IARAgingSummaryColumns = IAgingPeriod[]; - -export interface IARAgingSummaryMeta { - organizationName: string, - baseCurrency: string, -} \ No newline at end of file diff --git a/server/src/interfaces/Account.ts b/server/src/interfaces/Account.ts deleted file mode 100644 index fa978e63b..000000000 --- a/server/src/interfaces/Account.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { IDynamicListFilterDTO } from 'interfaces/DynamicFilter'; - -export interface IAccountDTO { - name: string, - code: string, - description: string, - accountType: string, - parentAccountId: number, - active: boolean, -}; - -export interface IAccount { - id: number, - name: string, - slug: string, - code: string, - index: number, - description: string, - accountType: string, - parentAccountId: number, - active: boolean, - predefined: boolean, - amount: number, - currencyCode: string, - transactions?: any[], - type?: any[], - accountNormal: string, - accountParentType: string, -}; - -export interface IAccountsTransactionsFilter { - accountId?: number, -} - -export interface IAccountTransaction { - credit: number; - debit: number; - accountId: number; - contactId: number; - date: string|Date; - referenceNumber: string; - account: IAccount; -} -export interface IAccountResponse extends IAccount { - -} - -export interface IAccountsFilter extends IDynamicListFilterDTO { - stringifiedFilterRoles?: string, - onlyInactive: boolean; -}; - -export interface IAccountType { - label: string, - key: string, - label: string, - normal: string, - rootType: string, - childType: string, - balanceSheet: boolean, - incomeSheet: boolean, -} - -export interface IAccountsTypesService { - getAccountsTypes(tenantId: number): Promise; -} \ No newline at end of file diff --git a/server/src/interfaces/AgingReport.ts b/server/src/interfaces/AgingReport.ts deleted file mode 100644 index 65983d44f..000000000 --- a/server/src/interfaces/AgingReport.ts +++ /dev/null @@ -1,22 +0,0 @@ -export interface IAgingPeriodTotal extends IAgingPeriod { - total: IAgingAmount; -}; - -export interface IAgingAmount { - amount: number; - formattedAmount: string; - currencyCode: string; -} - -export interface IAgingPeriod { - fromPeriod: Date | string; - toPeriod: Date | string; - beforeDays: number; - toDays: number; -} - -export interface IAgingSummaryContact { - current: IAgingAmount; - aging: IAgingPeriodTotal[]; - total: IAgingAmount; -} diff --git a/server/src/interfaces/Authentication.ts b/server/src/interfaces/Authentication.ts deleted file mode 100644 index be86dfdd3..000000000 --- a/server/src/interfaces/Authentication.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { ISystemUser } from './User'; -import { ITenant } from './Tenancy'; - -export interface IRegisterDTO { - firstName: string, - lastName: string, - email: string, - password: string, - organizationName: string, -}; - -export interface ILoginDTO { - crediential: string, - password: string, -}; - -export interface IPasswordReset { - id: number, - email: string, - token: string, - createdAt: Date, -}; - -export interface IAuthenticationService { - signIn(emailOrPhone: string, password: string): Promise<{ user: ISystemUser, token: string, tenant: ITenant }>; - register(registerDTO: IRegisterDTO): Promise; - sendResetPassword(email: string): Promise; - resetPassword(token: string, password: string): Promise; -} \ No newline at end of file diff --git a/server/src/interfaces/BalanceSheet.ts b/server/src/interfaces/BalanceSheet.ts deleted file mode 100644 index 9212161bb..000000000 --- a/server/src/interfaces/BalanceSheet.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { - INumberFormatQuery, - IFormatNumberSettings, -} from './FinancialStatements'; - -export interface IBalanceSheetQuery { - displayColumnsType: 'total' | 'date_periods'; - displayColumnsBy: string; - fromDate: Date | string; - toDate: Date | string; - numberFormat: INumberFormatQuery; - noneTransactions: boolean; - noneZero: boolean; - basis: 'cash' | 'accural'; - accountIds: number[]; -} - -export interface IBalanceSheetMeta { - isCostComputeRunning: boolean, - organizationName: string, - baseCurrency: string, -}; - -export interface IBalanceSheetFormatNumberSettings - extends IFormatNumberSettings { - type: string; -}; - -export interface IBalanceSheetStatementService { - balanceSheet( - tenantId: number, - query: IBalanceSheetQuery - ): Promise; -} - -export interface IBalanceSheetStatementColumns {} - -export interface IBalanceSheetStatementData {} - -export interface IBalanceSheetStatement { - query: IBalanceSheetQuery; - columns: IBalanceSheetStatementColumns; - data: IBalanceSheetStatementData; - meta: IBalanceSheetMeta; -} - -export interface IBalanceSheetStructureSection { - name: string; - sectionType?: string; - type: 'section' | 'accounts_section'; - children?: IBalanceSheetStructureSection[]; - accountsTypes?: string[]; - alwaysShow?: boolean; -} - -export interface IBalanceSheetAccountTotal { - amount: number; - formattedAmount: string; - currencyCode: string; - date?: string | Date; -} - -export interface IBalanceSheetAccount { - id: number; - index: number; - name: string; - code: string; - parentAccountId: number; - type: 'account'; - hasTransactions: boolean; - children?: IBalanceSheetAccount[]; - total: IBalanceSheetAccountTotal; - totalPeriods?: IBalanceSheetAccountTotal[]; -} - -export interface IBalanceSheetSection { - name: string; - sectionType?: string; - type: 'section' | 'accounts_section'; - children: IBalanceSheetAccount[] | IBalanceSheetSection[]; - total: IBalanceSheetAccountTotal; - totalPeriods?: IBalanceSheetAccountTotal[]; - - accountsTypes?: string[]; - _forceShow?: boolean; -} diff --git a/server/src/interfaces/Bill.ts b/server/src/interfaces/Bill.ts deleted file mode 100644 index db22b9a26..000000000 --- a/server/src/interfaces/Bill.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { IDynamicListFilterDTO } from './DynamicFilter'; -import { IItemEntry, IItemEntryDTO } from './ItemEntry'; - -export interface IBillDTO { - vendorId: number; - billNumber: string; - billDate: Date; - dueDate: Date; - referenceNo: string; - status: string; - note: string; - amount: number; - paymentAmount: number; - open: boolean; - entries: IItemEntryDTO[]; -} - -export interface IBillEditDTO { - vendorId: number; - billNumber: string; - billDate: Date; - dueDate: Date; - referenceNo: string; - status: string; - note: string; - amount: number; - paymentAmount: number; - open: boolean; - entries: IItemEntryDTO[]; -} - -export interface IBill { - id?: number; - - vendorId: number; - billNumber: string; - billDate: Date; - dueDate: Date; - referenceNo: string; - status: string; - note: string; - - amount: number; - allocatedCostAmount: number; - landedCostAmount: number; - unallocatedCostAmount: number; - - paymentAmount: number; - currencyCode: string; - - dueAmount: number; - overdueDays: number; - - openedAt: Date | string; - - entries: IItemEntry[]; - userId: number; - - createdAt: Date; - updateAt: Date; -} - -export interface IBillsFilter extends IDynamicListFilterDTO { - stringifiedFilterRoles?: string; - page: number; - pageSize: number; -} - -export interface IBillsService { - validateVendorHasNoBills(tenantId: number, vendorId: number): Promise; -} diff --git a/server/src/interfaces/BillPayment.ts b/server/src/interfaces/BillPayment.ts deleted file mode 100644 index 1ac4eda43..000000000 --- a/server/src/interfaces/BillPayment.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { LongDateFormatKey } from "moment"; - - -export interface IBillPaymentEntry { - id?: number, - billPaymentId: number, - billId: number, - paymentAmount: number, -}; - -export interface IBillPayment { - id?: number, - vendorId: number, - amount: number, - reference: string, - paymentAccountId: number, - paymentNumber: string, - paymentDate: Date, - userId: number, - entries: IBillPaymentEntry[], - statement: string, - createdAt: Date, - updatedAt: Date, -} - -export interface IBillPaymentEntryDTO { - billId: number, - paymentAmount: number, -}; - -export interface IBillPaymentDTO { - vendorId: number, - paymentAccountId: number, - paymentNumber?: string, - paymentDate: Date, - statement: string, - reference: string, - entries: IBillPaymentEntryDTO[], -}; - -export interface IBillReceivePageEntry { - billId: number, - entryType: string, - billNo: string, - dueAmount: number, - amount: number, - totalPaymentAmount: number, - paymentAmount: number, - currencyCode: string, - date: Date|string, -}; - - -export interface IBillPaymentsService { - validateVendorHasNoPayments(tenantId: number, vendorId): Promise; -} \ No newline at end of file diff --git a/server/src/interfaces/CashFlow.ts b/server/src/interfaces/CashFlow.ts deleted file mode 100644 index ade9c4aaa..000000000 --- a/server/src/interfaces/CashFlow.ts +++ /dev/null @@ -1,200 +0,0 @@ -import { INumberFormatQuery } from './FinancialStatements'; -import { IAccount } from './Account'; -import { ILedger } from './Ledger'; -import { ITableRow } from './Table'; - -export interface ICashFlowStatementQuery { - fromDate: Date | string; - toDate: Date | string; - displayColumnsBy: string; - displayColumnsType: string; - noneZero: boolean; - noneTransactions: boolean; - numberFormat: INumberFormatQuery; - basis: string; -} - -export interface ICashFlowStatementTotal { - amount: number; - formattedAmount: string; - currencyCode: string; -} - -export interface ICashFlowStatementTotalPeriod { - fromDate: Date; - toDate: Date; - total: ICashFlowStatementTotal; -} - -export interface ICashFlowStatementCommonSection { - id: string; - label: string; - total: ICashFlowStatementTotal; - footerLabel?: string; -} - -export interface ICashFlowStatementAccountMeta { - id: number; - label: string; - code: string; - total: ICashFlowStatementTotal; - accountType: string; - adjusmentType: string; - sectionType: ICashFlowStatementSectionType.ACCOUNT; -} - -export enum ICashFlowStatementSectionType { - REGULAR = 'REGULAR', - AGGREGATE = 'AGGREGATE', - NET_INCOME = 'NET_INCOME', - ACCOUNT = 'ACCOUNT', - ACCOUNTS = 'ACCOUNTS', - TOTAL = 'TOTAL', - CASH_AT_BEGINNING = 'CASH_AT_BEGINNING', -} - -export interface ICashFlowStatementAccountSection - extends ICashFlowStatementCommonSection { - sectionType: ICashFlowStatementSectionType.ACCOUNTS; - children: ICashFlowStatementAccountMeta[]; - total: ICashFlowStatementTotal; -} - -export interface ICashFlowStatementNetIncomeSection - extends ICashFlowStatementCommonSection { - sectionType: ICashFlowStatementSectionType.NET_INCOME; -} - -export interface ICashFlowStatementTotalSection - extends ICashFlowStatementCommonSection { - sectionType: ICashFlowStatementSectionType.TOTAL; -} - -export type ICashFlowStatementSection = - | ICashFlowStatementAccountSection - | ICashFlowStatementNetIncomeSection - | ICashFlowStatementTotalSection - | ICashFlowStatementCommonSection; - -export interface ICashFlowStatementColumn {} -export interface ICashFlowStatementMeta { - isCostComputeRunning: boolean; - organizationName: string; - baseCurrency: string; -} - -export interface ICashFlowStatementDOO { - data: ICashFlowStatementData; - meta: ICashFlowStatementMeta; - query: ICashFlowStatementQuery; -} - -export interface ICashFlowStatementService { - cashFlow( - tenantId: number, - query: ICashFlowStatementQuery - ): Promise; -} - -// CASH FLOW SCHEMA TYPES. -// ----------------------------- -export interface ICashFlowSchemaCommonSection { - id: string; - label: string; - children: ICashFlowSchemaSection[]; - footerLabel?: string; -} - -export enum CASH_FLOW_ACCOUNT_RELATION { - MINES = 'mines', - PLUS = 'plus', -} - -export enum CASH_FLOW_SECTION_ID { - NET_INCOME = 'NET_INCOME', - OPERATING = 'OPERATING', - OPERATING_ACCOUNTS = 'OPERATING_ACCOUNTS', - INVESTMENT = 'INVESTMENT', - FINANCIAL = 'FINANCIAL', - - NET_OPERATING = 'NET_OPERATING', - NET_INVESTMENT = 'NET_INVESTMENT', - NET_FINANCIAL = 'NET_FINANCIAL', - - CASH_BEGINNING_PERIOD = 'CASH_BEGINNING_PERIOD', - CASH_END_PERIOD = 'CASH_END_PERIOD', - NET_CASH_INCREASE = 'NET_CASH_INCREASE', -} - -export interface ICashFlowSchemaAccountsSection - extends ICashFlowSchemaCommonSection { - sectionType: ICashFlowStatementSectionType.ACCOUNT; - accountsRelations: ICashFlowSchemaAccountRelation[]; -} - -export interface ICashFlowSchemaTotalSection - extends ICashFlowStatementCommonSection { - sectionType: ICashFlowStatementSectionType.TOTAL; - equation: string; -} - -export type ICashFlowSchemaSection = - | ICashFlowSchemaAccountsSection - | ICashFlowSchemaTotalSection - | ICashFlowSchemaCommonSection; - -export type ICashFlowStatementData = ICashFlowSchemaSection[]; - -export interface ICashFlowSchemaAccountRelation { - type: string; - direction: CASH_FLOW_ACCOUNT_RELATION.PLUS; -} - -export interface ICashFlowSchemaSectionAccounts - extends ICashFlowStatementCommonSection { - type: ICashFlowStatementSectionType.ACCOUNT; - accountsRelations: ICashFlowSchemaAccountRelation[]; -} - -export interface ICashFlowSchemaSectionTotal { - type: ICashFlowStatementSectionType.TOTAL; - totalEquation: string; -} - -export interface ICashFlowDatePeriod { - fromDate: ICashFlowDate; - toDate: ICashFlowDate; - total: ICashFlowStatementTotal; -} - -export interface ICashFlowDate { - formattedDate: string; - date: Date; -} - -export interface ICashFlowStatement { - /** - * Constructor method. - * @constructor - */ - constructor( - accounts: IAccount[], - ledger: ILedger, - cashLedger: ILedger, - netIncomeLedger: ILedger, - query: ICashFlowStatementQuery, - baseCurrency: string - ): void; - - reportData(): ICashFlowStatementData; -} - -export interface ICashFlowTable { - constructor(reportStatement: ICashFlowStatement): void; - tableRows(): ITableRow[]; -} - -export interface IDateRange { - fromDate: Date; - toDate: Date; -} diff --git a/server/src/interfaces/Contact.ts b/server/src/interfaces/Contact.ts deleted file mode 100644 index 6a6c0e279..000000000 --- a/server/src/interfaces/Contact.ts +++ /dev/null @@ -1,217 +0,0 @@ - -import { IFilterRole } from "./DynamicFilter"; - -// ---------------------------------- -export interface IContactAddress { - billingAddress1: string, - billingAddress2: string, - billingAddressCity: string, - billingAddressCountry: string, - billingAddressEmail: string, - billingAddressZipcode: string, - billingAddressPhone: string, - billingAddressState: string, - - shippingAddress1: string, - shippingAddress2: string, - shippingAddressCity: string, - shippingAddressCountry: string, - shippingAddressEmail: string, - shippingAddressZipcode: string, - shippingAddressPhone: string, - shippingAddressState: string, -} -export interface IContactAddressDTO { - billingAddress1?: string, - billingAddress2?: string, - billingAddressCity?: string, - billingAddressCountry?: string, - billingAddressEmail?: string, - billingAddressZipcode?: string, - billingAddressPhone?: string, - billingAddressState?: string, - - shippingAddress1?: string, - shippingAddress2?: string, - shippingAddressCity?: string, - shippingAddressCountry?: string, - shippingAddressEmail?: string, - shippingAddressZipcode?: string, - shippingAddressPhone?: string, - shippingAddressState?: string, -}; -export interface IContact extends IContactAddress{ - id?: number, - contactService: 'customer' | 'vendor', - contactType: string, - - balance: number, - currencyCode: string, - - openingBalance: number, - openingBalanceAt: Date, - - salutation: string, - firstName: string, - lastName: string, - companyName: string, - displayName: string, - - email: string, - website: string, - workPhone: string, - personalPhone: string, - - note: string, - active: boolean, -} -export interface IContactNewDTO { - contactType?: string, - - currencyCode?: string, - - openingBalance?: number, - openingBalanceAt?: string, - - salutation?: string, - firstName?: string, - lastName?: string, - companyName?: string, - displayName: string, - - website?: string, - email?: string, - workPhone?: string, - personalPhone?: string, - - note?: string, - active: boolean, -} -export interface IContactEditDTO { - contactType?: string, - - salutation?: string, - firstName?: string, - lastName?: string, - companyName?: string, - displayName: string, - - website?: string, - email?: string, - workPhone?: string, - personalPhone?: string, - - note?: string, - active: boolean, -} - -// Customer Interfaces. -// ---------------------------------- -export interface ICustomer extends IContact { - contactService: 'customer', -} -export interface ICustomerNewDTO extends IContactAddressDTO { - customerType: string, - - currencyCode: string, - - openingBalance?: number, - openingBalanceAt?: string, - - salutation?: string, - firstName?: string, - lastName?: string, - companyName?: string, - displayName: string, - - website?: string, - email?: string, - workPhone?: string, - personalPhone?: string, - - note?: string, - active?: boolean, -}; -export interface ICustomerEditDTO extends IContactAddressDTO { - customerType: string, - - salutation?: string, - firstName?: string, - lastName?: string, - companyName?: string, - displayName: string, - - website?: string, - email?: string, - workPhone?: string, - personalPhone?: string, - - note?: string, - active?: boolean, -}; - -// Vendor Interfaces. -// ---------------------------------- -export interface IVendor extends IContact { - contactService: 'vendor', -} -export interface IVendorNewDTO extends IContactAddressDTO { - currencyCode: string, - - openingBalance?: number, - openingBalanceAt?: string, - - salutation?: string, - firstName?: string, - lastName?: string, - companyName?: string, - displayName: string, - - website?: string, - email?: string, - workPhone?: string, - personalPhone?: string, - - note?: string, - active?: boolean, -}; -export interface IVendorEditDTO extends IContactAddressDTO { - salutation?: string, - firstName?: string, - lastName?: string, - companyName?: string, - displayName?: string, - - website?: string, - email?: string, - workPhone?: string, - personalPhone?: string, - - note?: string, - active?: boolean, -}; - -export interface IVendorsFilter extends IDynamicListFilter { - stringifiedFilterRoles?: string, - page?: number, - pageSize?: number, -}; - -export interface ICustomersFilter extends IDynamicListFilter { - stringifiedFilterRoles?: string, - page?: number, - pageSize?: number, -}; - -export interface IContactsAutoCompleteFilter { - limit: number, - keyword: string, - filterRoles?: IFilterRole[]; - columnSortBy: string; - sortOrder: string; -} - -export interface IContactAutoCompleteItem { - displayName: string, - contactService: string, -} \ No newline at end of file diff --git a/server/src/interfaces/ContactBalanceSummary.ts b/server/src/interfaces/ContactBalanceSummary.ts deleted file mode 100644 index 9500d4f03..000000000 --- a/server/src/interfaces/ContactBalanceSummary.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { INumberFormatQuery } from './FinancialStatements'; - -export interface IContactBalanceSummaryQuery { - asDate: Date; - numberFormat: INumberFormatQuery; - comparison: { - percentageOfColumn: boolean; - }; - noneTransactions: boolean; - noneZero: boolean; -} - -export interface IContactBalanceSummaryAmount { - amount: number; - formattedAmount: string; - currencyCode: string; -} -export interface IContactBalanceSummaryPercentage { - amount: number; - formattedAmount: string; -} - -export interface IContactBalanceSummaryContact { - total: IContactBalanceSummaryAmount; - percentageOfColumn?: IContactBalanceSummaryPercentage; -} - -export interface IContactBalanceSummaryTotal { - total: IContactBalanceSummaryAmount; - percentageOfColumn?: IContactBalanceSummaryPercentage; -} - -export interface ICustomerBalanceSummaryData { - customers: IContactBalanceSummaryContact[]; - total: IContactBalanceSummaryTotal; -} - -export interface ICustomerBalanceSummaryStatement { - data: ICustomerBalanceSummaryData; - columns: {}; - query: IContactBalanceSummaryQuery; -} - -export interface ICustomerBalanceSummaryService { - customerBalanceSummary( - tenantId: number, - query: IContactBalanceSummaryQuery, - ): Promise; -} diff --git a/server/src/interfaces/Currency.ts b/server/src/interfaces/Currency.ts deleted file mode 100644 index 2bcfc5620..000000000 --- a/server/src/interfaces/Currency.ts +++ /dev/null @@ -1,27 +0,0 @@ - - -export interface ICurrencyDTO { - currencyName: string, - currencyCode: string, - currencySign: string, -}; -export interface ICurrencyEditDTO { - currencyName: string, - currencySign: string, -} -export interface ICurrency { - id: number, - currencyName: string, - currencyCode: string, - currencySign: string, - createdAt: Date, - updatedAt: Date, -}; - -export interface ICurrenciesService { - newCurrency(tenantId: number, currencyDTO: ICurrencyDTO): Promise; - editCurrency(tenantId: number, currencyId: number, editCurrencyDTO: ICurrencyEditDTO): Promise; - - deleteCurrency(tenantId: number, currencyCode: string): Promise; - listCurrencies(tenantId: number): Promise; -} \ No newline at end of file diff --git a/server/src/interfaces/CustomerBalanceSummary.ts b/server/src/interfaces/CustomerBalanceSummary.ts deleted file mode 100644 index d89ffa33b..000000000 --- a/server/src/interfaces/CustomerBalanceSummary.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { INumberFormatQuery } from './FinancialStatements'; - -import { - IContactBalanceSummaryQuery, - IContactBalanceSummaryAmount, - IContactBalanceSummaryPercentage, - IContactBalanceSummaryTotal, -} from './ContactBalanceSummary'; - -export interface ICustomerBalanceSummaryQuery - extends IContactBalanceSummaryQuery { - customersIds?: number[]; -} - -export interface ICustomerBalanceSummaryAmount - extends IContactBalanceSummaryAmount {} - -export interface ICustomerBalanceSummaryPercentage - extends IContactBalanceSummaryPercentage {} - -export interface ICustomerBalanceSummaryCustomer { - customerName: string; - total: ICustomerBalanceSummaryAmount; - percentageOfColumn?: ICustomerBalanceSummaryPercentage; -} - -export interface ICustomerBalanceSummaryTotal - extends IContactBalanceSummaryTotal { - total: ICustomerBalanceSummaryAmount; - percentageOfColumn?: ICustomerBalanceSummaryPercentage; -} - -export interface ICustomerBalanceSummaryData { - customers: ICustomerBalanceSummaryCustomer[]; - total: ICustomerBalanceSummaryTotal; -} - -export interface ICustomerBalanceSummaryStatement { - data: ICustomerBalanceSummaryData; - columns: {}; - query: ICustomerBalanceSummaryQuery; -} - -export interface ICustomerBalanceSummaryService { - customerBalanceSummary( - tenantId: number, - query: ICustomerBalanceSummaryQuery - ): Promise; -} diff --git a/server/src/interfaces/DynamicFilter.ts b/server/src/interfaces/DynamicFilter.ts deleted file mode 100644 index 674328fb9..000000000 --- a/server/src/interfaces/DynamicFilter.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { IModel, ISortOrder } from "./Model"; - -export interface IDynamicFilter { - setModel(model: IModel): void; - buildQuery(): void; - getResponseMeta(); -} - -export interface IFilterRole { - fieldKey: string; - value: string; - condition?: string; - index?: number; - comparator?: string; -} -export interface IDynamicListFilter { - customViewId?: number; - filterRoles?: IFilterRole[]; - columnSortBy: ISortOrder; - sortOrder: string; - stringifiedFilterRoles: string; - searchKeyword?: string; -} - -export interface IDynamicListService { - dynamicList( - tenantId: number, - model: any, - filter: IDynamicListFilter - ): Promise; - handlerErrorsToResponse(error, req, res, next): void; -} - -// Search role. -export interface ISearchRole { - fieldKey: string; - comparator: string; -} \ No newline at end of file diff --git a/server/src/interfaces/Entry.ts b/server/src/interfaces/Entry.ts deleted file mode 100644 index b55bb0aa1..000000000 --- a/server/src/interfaces/Entry.ts +++ /dev/null @@ -1,18 +0,0 @@ -export interface ICommonEntry { - id: number; - amount: number; -} - -export interface ICommonLandedCostEntry extends ICommonEntry { - landedCost: boolean; - allocatedCostAmount: number; -} - -export interface ICommonEntryDTO { - id?: number; - amount: number; -} - -export interface ICommonLandedCostEntryDTO extends ICommonEntryDTO { - landedCost?: boolean; -} diff --git a/server/src/interfaces/ExchangeRate.ts b/server/src/interfaces/ExchangeRate.ts deleted file mode 100644 index fc3bd33e4..000000000 --- a/server/src/interfaces/ExchangeRate.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { IFilterRole } from './DynamicFilter'; - -export interface IExchangeRate { - id: number, - currencyCode: string, - exchangeRate: number, - date: Date, - createdAt: Date, - updatedAt: Date, -}; - -export interface IExchangeRateDTO { - currencyCode: string, - exchangeRate: number, - date: Date, -}; - -export interface IExchangeRateEditDTO { - exchangeRate: number, -}; - -export interface IExchangeRateFilter { - page: number, - pageSize: number, - filterRoles?: IFilterRole[]; - columnSortBy: string; - sortOrder: string; -}; - -export interface IExchangeRatesService { - newExchangeRate(tenantId: number, exchangeRateDTO: IExchangeRateDTO): Promise; - editExchangeRate(tenantId: number, exchangeRateId: number, editExRateDTO: IExchangeRateEditDTO): Promise; - - deleteExchangeRate(tenantId: number, exchangeRateId: number): Promise; - listExchangeRates(tenantId: number, exchangeRateFilter: IExchangeRateFilter): Promise; -}; \ No newline at end of file diff --git a/server/src/interfaces/Expenses.ts b/server/src/interfaces/Expenses.ts deleted file mode 100644 index 3cd6d2f87..000000000 --- a/server/src/interfaces/Expenses.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { ISystemUser } from './User'; -import { IFilterRole } from './DynamicFilter'; - -export interface IPaginationMeta { - total: number; - page: number; - pageSize: number; -} - -export interface IExpensesFilter { - page: number; - pageSize: number; - filterRoles?: IFilterRole[]; - columnSortBy: string; - sortOrder: string; - viewSlug?: string; -} - -export interface IExpense { - id: number; - totalAmount: number; - currencyCode: string; - description?: string; - paymentAccountId: number; - peyeeId?: number; - referenceNo?: string; - publishedAt: Date | null; - userId: number; - paymentDate: Date; - payeeId: number; - landedCostAmount: number; - allocatedCostAmount: number; - unallocatedCostAmount: number; - categories: IExpenseCategory[]; -} - -export interface IExpenseCategory { - id?: number; - expenseAccountId: number; - index: number; - description: string; - expenseId: number; - amount: number; - - allocatedCostAmount: number; - unallocatedCostAmount: number; - landedCost: boolean; -} - -export interface IExpenseDTO { - currencyCode: string; - description?: string; - paymentAccountId: number; - peyeeId?: number; - referenceNo?: string; - publish: boolean; - userId: number; - paymentDate: Date; - payeeId: number; - categories: IExpenseCategoryDTO[]; -} - -export interface IExpenseCategoryDTO { - id?: number; - expenseAccountId: number; - index: number; - amount: number; - description?: string; - expenseId: number; - landedCost?: boolean; -} - -export interface IExpensesService { - newExpense( - tenantid: number, - expenseDTO: IExpenseDTO, - authorizedUser: ISystemUser - ): Promise; - - editExpense( - tenantid: number, - expenseId: number, - expenseDTO: IExpenseDTO, - authorizedUser: ISystemUser - ): void; - - publishExpense( - tenantId: number, - expenseId: number, - authorizedUser: ISystemUser - ): Promise; - - deleteExpense( - tenantId: number, - expenseId: number, - authorizedUser: ISystemUser - ): Promise; - - getExpensesList( - tenantId: number, - expensesFilter: IExpensesFilter - ): Promise<{ - expenses: IExpense[]; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }>; - - getExpense(tenantId: number, expenseId: number): Promise; -} diff --git a/server/src/interfaces/FinancialStatements.ts b/server/src/interfaces/FinancialStatements.ts deleted file mode 100644 index c956afd17..000000000 --- a/server/src/interfaces/FinancialStatements.ts +++ /dev/null @@ -1,19 +0,0 @@ -export interface INumberFormatQuery { - precision: number; - divideOn1000: boolean; - showZero: boolean; - formatMoney: 'total' | 'always' | 'none'; - negativeFormat: 'parentheses' | 'mines'; -} - -export interface IFormatNumberSettings { - precision?: number; - divideOn1000?: boolean; - excerptZero?: boolean; - negativeFormat?: 'parentheses' | 'mines'; - thousand?: string; - decimal?: string; - zeroSign?: string; - currencyCode?: string; - money?: boolean, -} diff --git a/server/src/interfaces/GeneralLedgerSheet.ts b/server/src/interfaces/GeneralLedgerSheet.ts deleted file mode 100644 index b071fbd57..000000000 --- a/server/src/interfaces/GeneralLedgerSheet.ts +++ /dev/null @@ -1,80 +0,0 @@ - - -export interface IGeneralLedgerSheetQuery { - fromDate: Date | string, - toDate: Date | string, - basis: string, - numberFormat: { - noCents: boolean, - divideOn1000: boolean, - }, - noneTransactions: boolean, - accountsIds: number[], -}; - -export interface IGeneralLedgerSheetAccountTransaction { - id: number, - - amount: number, - runningBalance: number, - credit: number, - debit: number, - - formattedAmount: string, - formattedCredit: string, - formattedDebit: string, - formattedRunningBalance: string, - - currencyCode: string, - note?: string, - - transactionType?: string, - transactionNumber: string, - - referenceId?: number, - referenceType?: string, - - date: Date|string, -}; - -export interface IGeneralLedgerSheetAccountBalance { - date: Date|string, - amount: number, - formattedAmount: string, - currencyCode: string, -} - -export interface IGeneralLedgerSheetAccount { - id: number, - name: string, - code: string, - index: number, - parentAccountId: number, - transactions: IGeneralLedgerSheetAccountTransaction[], - openingBalance: IGeneralLedgerSheetAccountBalance, - closingBalance: IGeneralLedgerSheetAccountBalance, -} - -export interface IAccountTransaction { - id: number, - index: number, - draft: boolean, - note: string, - accountId: number, - transactionType: string, - referenceType: string, - referenceId: number, - contactId: number, - contactType: string, - credit: number, - debit: number, - date: string|Date, - createdAt: string|Date, - updatedAt: string|Date, -} - -export interface IGeneralLedgerMeta { - isCostComputeRunning: boolean, - organizationName: string, - baseCurrency: string, -}; \ No newline at end of file diff --git a/server/src/interfaces/IInventoryValuationSheet.ts b/server/src/interfaces/IInventoryValuationSheet.ts deleted file mode 100644 index a295020ed..000000000 --- a/server/src/interfaces/IInventoryValuationSheet.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { - INumberFormatQuery, - IFormatNumberSettings, -} from './FinancialStatements'; - -export interface IInventoryValuationReportQuery { - asDate: Date | string; - numberFormat: INumberFormatQuery; - noneTransactions: boolean; - itemsIds: number[], -}; - -export interface IInventoryValuationSheetMeta { - organizationName: string, - baseCurrency: string, - isCostComputeRunning: boolean -}; - -export interface IInventoryValuationItem { - id: number, - name: string, - code: string, - valuation: number, - quantity: number, - average: number, - valuationFormatted: string, - quantityFormatted: string, - averageFormatted: string, - currencyCode: string, -}; - -export interface IInventoryValuationTotal { - valuation: number, - quantity: number, - - valuationFormatted: string, - quantityFormatted: string, -} - -export type IInventoryValuationStatement = { - items: IInventoryValuationItem[], - total: IInventoryValuationTotal -} | {}; - diff --git a/server/src/interfaces/InventoryAdjustment.ts b/server/src/interfaces/InventoryAdjustment.ts deleted file mode 100644 index fc043ebeb..000000000 --- a/server/src/interfaces/InventoryAdjustment.ts +++ /dev/null @@ -1,43 +0,0 @@ -type IAdjustmentTypes = 'increment' | 'decrement'; - -export interface IQuickInventoryAdjustmentDTO { - date: Date | string; - type: IAdjustmentTypes; - adjustmentAccountId: number; - reason: string; - description: string; - referenceNo: string; - itemId: number; - quantity: number; - cost: number; - publish: boolean; -} - -export interface IInventoryAdjustment { - id?: number; - date: Date | string; - adjustmentAccountId: number; - reason: string; - description: string; - referenceNo: string; - inventoryDirection?: 'IN' | 'OUT'; - entries: IInventoryAdjustmentEntry[]; - userId: number; - publishedAt?: Date|null; - createdAt?: Date, -} - -export interface IInventoryAdjustmentEntry { - id?: number; - adjustmentId?: number; - index: number; - itemId: number; - quantity?: number; - cost?: number; - value?: number; -} - -export interface IInventoryAdjustmentsFilter { - page: number; - pageSize: number; -} diff --git a/server/src/interfaces/InventoryCostMethod.ts b/server/src/interfaces/InventoryCostMethod.ts deleted file mode 100644 index 104edc5e3..000000000 --- a/server/src/interfaces/InventoryCostMethod.ts +++ /dev/null @@ -1,6 +0,0 @@ - - -interface IInventoryCostMethod { - computeItemsCost(fromDate: Date): void, - storeInventoryLotsCost(transactions: any[]): void, -} \ No newline at end of file diff --git a/server/src/interfaces/InventoryDetails.ts b/server/src/interfaces/InventoryDetails.ts deleted file mode 100644 index 6591f574f..000000000 --- a/server/src/interfaces/InventoryDetails.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { - INumberFormatQuery, -} from './FinancialStatements'; - -export interface IInventoryDetailsQuery { - fromDate: Date | string; - toDate: Date | string; - numberFormat: INumberFormatQuery; - noneTransactions: boolean; - itemsIds: number[] -} - -export interface IInventoryDetailsNumber { - number: number; - formattedNumber: string; -} - -export interface IInventoryDetailsMoney { - amount: number; - formattedAmount: string; - currencyCode: string; -} - -export interface IInventoryDetailsDate { - date: Date; - formattedDate: string; -} - -export interface IInventoryDetailsOpening { - nodeType: 'OPENING_ENTRY'; - date: IInventoryDetailsDate; - quantity: IInventoryDetailsNumber; - value: IInventoryDetailsNumber; -} - -export interface IInventoryDetailsClosing extends IInventoryDetailsOpening { - nodeType: 'CLOSING_ENTRY'; -} - -export interface IInventoryDetailsItem { - id: number; - nodeType: string; - name: string; - code: string; - children: ( - | IInventoryDetailsItemTransaction - | IInventoryDetailsOpening - | IInventoryDetailsClosing - )[]; -} - -export interface IInventoryDetailsItemTransaction { - nodeType: string; - date: IInventoryDetailsDate; - transactionType: string; - transactionNumber?: string; - - quantityMovement: IInventoryDetailsNumber; - valueMovement: IInventoryDetailsNumber; - - quantity: IInventoryDetailsNumber; - total: IInventoryDetailsNumber; - cost: IInventoryDetailsNumber; - value: IInventoryDetailsNumber; - profitMargin: IInventoryDetailsNumber; - - rate: IInventoryDetailsNumber; - - runningQuantity: IInventoryDetailsNumber; - runningValuation: IInventoryDetailsNumber; - - direction: string; -} - -export type IInventoryDetailsNode = - | IInventoryDetailsItem - | IInventoryDetailsItemTransaction; -export type IInventoryDetailsData = IInventoryDetailsItem[]; - - -export interface IInventoryItemDetailMeta { - isCostComputeRunning: boolean; - organizationName: string; - baseCurrency: string; -} - -export interface IInvetoryItemDetailDOO { - data: IInventoryDetailsData; - query: IInventoryDetailsQuery; - meta: IInventoryItemDetailMeta; -} \ No newline at end of file diff --git a/server/src/interfaces/InventoryTransaction.ts b/server/src/interfaces/InventoryTransaction.ts deleted file mode 100644 index f56666bc3..000000000 --- a/server/src/interfaces/InventoryTransaction.ts +++ /dev/null @@ -1,51 +0,0 @@ -export type TInventoryTransactionDirection = 'IN' | 'OUT'; - -export interface IInventoryTransaction { - id?: number; - date: Date | string; - direction: TInventoryTransactionDirection; - itemId: number; - quantity: number; - rate: number; - transactionType: string; - transcationTypeFormatted: string; - transactionId: number; - entryId: number; - costAccountId: number; - meta?: IInventoryTransactionMeta; - costLotAggregated?: IInventoryCostLotAggregated; - createdAt?: Date; - updatedAt?: Date; -} - -export interface IInventoryTransactionMeta { - id?: number; - transactionNumber: string; - description: string; -} - -export interface IInventoryCostLotAggregated { - cost: number, - quantity: number, -}; - -export interface IInventoryLotCost { - id?: number; - date: Date; - direction: string; - itemId: number; - quantity: number; - rate: number; - remaining: number; - cost: number; - transactionType: string; - transactionId: number; - costAccountId: number; - entryId: number; - createdAt: Date; -} - -export interface IItemsQuantityChanges { - itemId: number; - balanceChange: number; -} diff --git a/server/src/interfaces/Item.ts b/server/src/interfaces/Item.ts deleted file mode 100644 index 981445cff..000000000 --- a/server/src/interfaces/Item.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { IFilterRole } from 'interfaces/DynamicFilter'; - -export interface IItem{ - id: number, - name: string, - type: string, - code: string, - - sellable: boolean, - purchasable: boolean, - - costPrice: number, - sellPrice: number, - currencyCode: string, - - costAccountId: number, - sellAccountId: number, - inventoryAccountId: number, - - sellDescription: string, - purchaseDescription: string, - - quantityOnHand: number, - - note: string, - active: boolean, - - categoryId: number, - userId: number, - - createdAt: Date, - updatedAt: Date, -} - -export interface IItemDTO { - name: string, - type: string, - code: string, - - sellable: boolean, - purchasable: boolean, - - costPrice: number, - sellPrice: number, - - currencyCode: string, - - costAccountId: number, - sellAccountId: number, - inventoryAccountId: number, - - sellDescription: string, - purchaseDescription: string, - - quantityOnHand: number, - - note: string, - active: boolean, - - categoryId: number, -} - -export interface IItemsService { - getItem(tenantId: number, itemId: number): Promise; - deleteItem(tenantId: number, itemId: number): Promise; - editItem(tenantId: number, itemId: number, itemDTO: IItemDTO): Promise; - newItem(tenantId: number, itemDTO: IItemDTO): Promise; - itemsList(tenantId: number, itemsFilter: IItemsFilter): Promise<{items: IItem[]}>; -} - -export interface IItemsFilter extends IDynamicListFilterDTO { - stringifiedFilterRoles?: string, - page: number, - pageSize: number, - inactiveMode: boolean, - viewSlug?: string, -}; - -export interface IItemsAutoCompleteFilter { - limit: number, - keyword: string, - filterRoles?: IFilterRole[]; - columnSortBy: string; - sortOrder: string; -} \ No newline at end of file diff --git a/server/src/interfaces/ItemCategory.ts b/server/src/interfaces/ItemCategory.ts deleted file mode 100644 index 9742d6e51..000000000 --- a/server/src/interfaces/ItemCategory.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { IDynamicListFilterDTO } from "./DynamicFilter"; -import { ISystemUser } from "./User"; - -export interface IItemCategory { - id: number, - name: string, - description?: string, - userId: number, - - costAccountId?: number, - sellAccountId?: number, - inventoryAccountId?: number, - - costMethod?: string, -}; - -export interface IItemCategoryOTD { - name: string, - - description?: string, - userId: number, - - costAccountId?: number, - sellAccountId?: number, - inventoryAccountId?: number, - - costMethod?: string, -}; - -export interface IItemCategoriesFilter extends IDynamicListFilterDTO { - stringifiedFilterRoles?: string, -} - -export interface IItemCategoriesService { - newItemCategory(tenantId: number, itemCategoryOTD: IItemCategoryOTD, authorizedUser: ISystemUser): Promise; - editItemCategory(tenantId: number, itemCategoryId: number, itemCategoryOTD: IItemCategoryOTD, authorizedUser: ISystemUser): Promise; - - deleteItemCategory(tenantId: number, itemCategoryId: number, authorizedUser: ISystemUser): Promise; - deleteItemCategories(tenantId: number, itemCategoriesIds: number[], authorizedUser: ISystemUser): Promise; - - getItemCategory(tenantId: number, itemCategoryId: number, authorizedUser: ISystemUser): Promise; - getItemCategoriesList(tenantId: number, itemCategoriesFilter: IItemCategoriesFilter, authorizedUser: ISystemUser): Promise; -} \ No newline at end of file diff --git a/server/src/interfaces/ItemEntry.ts b/server/src/interfaces/ItemEntry.ts deleted file mode 100644 index 348e5875d..000000000 --- a/server/src/interfaces/ItemEntry.ts +++ /dev/null @@ -1,30 +0,0 @@ -export type IItemEntryTransactionType = 'SaleInvoice' | 'Bill' | 'SaleReceipt'; - -export interface IItemEntry { - id?: number; - - referenceType: string; - referenceId: number; - - index: number; - - itemId: number; - description: string; - discount: number; - quantity: number; - rate: number; - amount: number; - - landedCost: number; - allocatedCostAmount: number; - unallocatedCostAmount: number; - - sellAccountId: number; - costAccountId: number; -} - -export interface IItemEntryDTO { - id?: number, - itemId: number; - landedCost?: boolean; -} diff --git a/server/src/interfaces/Jobs.ts b/server/src/interfaces/Jobs.ts deleted file mode 100644 index 9c40bcd43..000000000 --- a/server/src/interfaces/Jobs.ts +++ /dev/null @@ -1,14 +0,0 @@ -export interface IJobMeta { - id: string; - nextRunAt: Date; - lastModifiedBy: null | Date; - lockedAt: null | Date; - lastRunAt: null | Date; - failCount: number; - failedAt: null | Date; - lastFinishedAt: Date | null; - running: boolean; - queued: boolean; - completed: boolean; - failed: boolean; -} diff --git a/server/src/interfaces/Journal.ts b/server/src/interfaces/Journal.ts deleted file mode 100644 index 220b1bcc1..000000000 --- a/server/src/interfaces/Journal.ts +++ /dev/null @@ -1,52 +0,0 @@ - - -export interface IJournalEntry { - id: number, - index?: number, - - date: Date, - credit: number, - debit: number, - account: number, - referenceType: string, - referenceId: number, - - referenceTypeFormatted: string, - - itemId?: number, - transactionNumber?: string, - referenceNumber?: string, - - transactionType?: string, - note?: string, - userId?: number, - contactType?: string, - contactId?: number, -}; - -export interface IJournalPoster { - entries: IJournalEntry[], - - credit(entry: IJournalEntry): void; - debit(entry: IJournalEntry): void; - - removeEntries(ids: number[]): void; - - saveEntries(): void; - saveBalance(): void; - deleteEntries(): void; - - getAccountBalance(accountId: number, closingDate?: Date | string, dateType?: string): number; - getAccountEntries(accountId: number): IJournalEntry[]; -} - -export type TEntryType = 'credit' | 'debit'; - -export interface IAccountChange { - credit: number, - debit: number, -}; - -export interface IAccountsChange { - [key: string]: IAccountChange, -}; diff --git a/server/src/interfaces/JournalReport.ts b/server/src/interfaces/JournalReport.ts deleted file mode 100644 index 9786e1634..000000000 --- a/server/src/interfaces/JournalReport.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { IJournalEntry } from './Journal'; - -export interface IJournalReportQuery { - fromDate: Date | string, - toDate: Date | string, - numberFormat: { - noCents: boolean, - divideOn1000: boolean, - }, - transactionType: string, - transactionId: string, - - accountsIds: number | number[], - fromRange: number, - toRange: number, -} - -export interface IJournalReportEntriesGroup { - id: string, - entries: IJournalEntry[], - currencyCode: string, - credit: number, - debit: number, - formattedCredit: string, - formattedDebit: string, -} - -export interface IJournalReport { - entries: IJournalReportEntriesGroup[], -} - -export interface IJournalSheetMeta { - isCostComputeRunning: boolean, - organizationName: string, - baseCurrency: string, -} \ No newline at end of file diff --git a/server/src/interfaces/LandedCost.ts b/server/src/interfaces/LandedCost.ts deleted file mode 100644 index 8e9ce2e77..000000000 --- a/server/src/interfaces/LandedCost.ts +++ /dev/null @@ -1,96 +0,0 @@ -export interface IBillLandedCost { - fromTransactionId: number; - fromTransactionType: string; - amount: number; - BillId: number; -} - -export interface IBillLandedCostEntry { - id?: number, - cost: number, - entryId: number, - billLocatedCostId: number, -} - -export interface ILandedCostItemDTO { - entryId: number, - cost: number; -} -export type ILandedCostType = 'Expense' | 'Bill'; - -export interface ILandedCostDTO { - transactionType: ILandedCostType; - transactionId: number; - transactionEntryId: number, - allocationMethod: string; - description: string; - items: ILandedCostItemDTO[]; -} - -export interface ILandedCostQueryDTO { - vendorId: number; - fromDate: Date; - toDate: Date; -} - -export interface IUnallocatedListCost { - costNumber: string; - costAmount: number; - unallocatedAmount: number; -} - -export interface ILandedCostTransactionsQueryDTO { - transactionType: string, - date: Date, -} - -export interface ILandedCostEntriesQueryDTO { - transactionType: string, - transactionId: number, -} - -export interface ILandedCostTransaction { - id: number; - name: string; - amount: number; - allocatedCostAmount: number; - unallocatedCostAmount: number; - transactionType: string; - entries?: ILandedCostTransactionEntry[]; -} - -export interface ILandedCostTransactionEntry { - id: number; - name: string; - code: string; - amount: number; - unallocatedCostAmount: number; - allocatedCostAmount: number; - description: string; - costAccountId: number; -} - -interface ILandedCostEntry { - id: number; - landedCost?: boolean; -} - -export interface IBillLandedCostTransaction { - id: number, - fromTranscationId: number, - fromTransactionType: string; - fromTransactionEntryId: number; - - billId: number, - allocationMethod: string; - costAccountId: number, - description: string; - - allocateEntries?: IBillLandedCostTransactionEntry[], -}; - -export interface IBillLandedCostTransactionEntry { - cost: number; - entryId: number; - billLocatedCostId: number, -} \ No newline at end of file diff --git a/server/src/interfaces/Ledger.ts b/server/src/interfaces/Ledger.ts deleted file mode 100644 index 938a997b5..000000000 --- a/server/src/interfaces/Ledger.ts +++ /dev/null @@ -1,21 +0,0 @@ -export interface ILedger { - entries: ILedgerEntry[]; - - getEntries(): ILedgerEntry[]; - whereAccountId(accountId: number): ILedger; - whereContactId(contactId: number): ILedger; - whereFromDate(fromDate: Date | string): ILedger; - whereToDate(toDate: Date | string): ILedger; - getClosingBalance(): number; -} - -export interface ILedgerEntry { - credit: number; - debit: number; - accountId?: number; - accountNormal: string; - contactId?: number; - date: Date | string; - transactionType?: string, - transactionNumber?: string, -} diff --git a/server/src/interfaces/License.ts b/server/src/interfaces/License.ts deleted file mode 100644 index e58e9a6ea..000000000 --- a/server/src/interfaces/License.ts +++ /dev/null @@ -1,25 +0,0 @@ - - -export interface ILicense { - id?: number, - licenseCode: string, - licensePeriod: number, - sent: boolean, - disabled: boolean, - used: boolean, -}; - -export interface ILicensesFilter { - active: boolean, - disabld: boolean, - used: boolean, - sent: boolean, -}; - -export interface ISendLicenseDTO { - phoneNumber: string, - email: string, - period: string, - periodInterval: string, - planSlug: string, -}; \ No newline at end of file diff --git a/server/src/interfaces/Mailable.ts b/server/src/interfaces/Mailable.ts deleted file mode 100644 index 36cc3c81f..000000000 --- a/server/src/interfaces/Mailable.ts +++ /dev/null @@ -1,16 +0,0 @@ - -export interface IMailable { - constructor( - view: string, - data?: { [key: string]: string | number }, - ); - send(): Promise; - build(): void; - setData(data: { [key: string]: string | number }): IMailable; - setTo(to: string): IMailable; - setFrom(from: string): IMailable; - setSubject(subject: string): IMailable; - setView(view: string): IMailable; - render(data?: { [key: string]: string | number }): string; - getViewContent(): string; -} \ No newline at end of file diff --git a/server/src/interfaces/ManualJournal.ts b/server/src/interfaces/ManualJournal.ts deleted file mode 100644 index 0b0061c96..000000000 --- a/server/src/interfaces/ManualJournal.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { IDynamicListFilterDTO } from './DynamicFilter'; -import { IJournalEntry } from './Journal'; -import { ISystemUser } from './User'; - -export interface IManualJournal { - id?: number; - date: Date | string; - journalNumber: string; - journalType: string; - reference: string; - amount: number; - currencyCode: string; - publishedAt: Date | null; - description: string; - userId: number; - entries: IManualJournalEntry[]; - createdAt: Date; - updatedAt: Date; -} - -export interface IManualJournalEntry { - index: number; - credit: number; - debit: number; - accountId: number; - note: string; - contactId?: number; -} - -export interface IManualJournalEntryDTO { - index: number; - credit: number; - debit: number; - accountId: number; - note: string; - contactId?: number; -} - -export interface IManualJournalDTO { - date: Date; - journalNumber: string; - journalType: string; - reference?: string; - description?: string; - publish?: boolean; - entries: IManualJournalEntryDTO[]; -} - -export interface IManualJournalsFilter extends IDynamicListFilterDTO { - stringifiedFilterRoles?: string; - page: number; - pageSize: number; -} - -export interface IManualJournalsService { - makeJournalEntries( - tenantId: number, - manualJournalDTO: IManualJournalDTO, - authorizedUser: ISystemUser - ): Promise<{ manualJournal: IManualJournal }>; - - editJournalEntries( - tenantId: number, - manualJournalId: number, - manualJournalDTO: IManualJournalDTO, - authorizedUser - ): Promise<{ manualJournal: IManualJournal }>; - - deleteManualJournal(tenantId: number, manualJournalId: number): Promise; - - deleteManualJournals( - tenantId: number, - manualJournalsIds: number[] - ): Promise; - - publishManualJournals( - tenantId: number, - manualJournalsIds: number[] - ): Promise<{ - meta: { - alreadyPublished: number; - published: number; - total: number; - }; - }>; - - publishManualJournal( - tenantId: number, - manualJournalId: number - ): Promise; - - getManualJournals( - tenantId: number, - filter: IManualJournalsFilter - ): Promise<{ - manualJournals: IManualJournal; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }>; -} diff --git a/server/src/interfaces/Media.ts b/server/src/interfaces/Media.ts deleted file mode 100644 index 6cd338583..000000000 --- a/server/src/interfaces/Media.ts +++ /dev/null @@ -1,25 +0,0 @@ - - -export interface IMedia { - id?: number, - attachmentFile: string, - createdAt?: Date, -}; - -export interface IMediaLink { - mediaId: number, - modelName: string, - modelId: number, -}; - -export interface IMediaLinkDTO { - modelName: string, - modelId: number, -}; - -export interface IMediaService { - linkMedia(tenantId: number, mediaId: number, modelId?: number, modelName?: string): Promise; - getMedia(tenantId: number, mediaId: number): Promise; - deleteMedia(tenantId: number, mediaId: number | number[]): Promise; - upload(tenantId: number, attachment: any, modelName?: string, modelId?: number): Promise; -} \ No newline at end of file diff --git a/server/src/interfaces/Metable.ts b/server/src/interfaces/Metable.ts deleted file mode 100644 index 8a16d3055..000000000 --- a/server/src/interfaces/Metable.ts +++ /dev/null @@ -1,28 +0,0 @@ - - -export interface IMetadata { - key: string, - value: string|boolean|number, - group: string, - _markAsDeleted?: boolean, - _markAsInserted?: boolean, - _markAsUpdated?: boolean, -}; - -export interface IMetaQuery { - key: string, - group?: string, -}; - -export interface IMetableStore { - find(query: string|IMetaQuery): IMetadata; - all(): IMetadata[]; - get(query: string|IMetaQuery, defaultValue: any): string|number|boolean; - remove(query: string|IMetaQuery): void; - removeAll(): void; - toArray(): IMetadata[]; -}; - -export interface IMetableStoreStorage { - save(): Promise; -} \ No newline at end of file diff --git a/server/src/interfaces/Model.ts b/server/src/interfaces/Model.ts deleted file mode 100644 index 67b90e872..000000000 --- a/server/src/interfaces/Model.ts +++ /dev/null @@ -1,81 +0,0 @@ -export interface IModel { - name: string; - tableName: string; - fields: { [key: string]: any }; -} - -export interface IFilterMeta { - sortOrder: string; - sortBy: string; -} - -export interface IPaginationMeta { - pageSize: number; - page: number; -} - -export interface IModelMetaDefaultSort { - sortOrder: ISortOrder; - sortField: string; -} - -export type IModelColumnType = - | 'text' - | 'number' - | 'enumeration' - | 'boolean' - | 'relation'; - -export type ISortOrder = 'DESC' | 'ASC'; - -export interface IModelMetaFieldCommon { - name: string; - column: string; - columnable?: boolean; - fieldType: IModelColumnType; - customQuery?: Function; -} - -export interface IModelMetaFieldNumber { - fieldType: 'number'; - minLength?: number; - maxLength?: number; -} - -export interface IModelMetaFieldOther { - fieldType: 'text' | 'boolean'; -} - -export type IModelMetaField = IModelMetaFieldCommon & - (IModelMetaFieldOther | IModelMetaEnumerationField | IModelMetaRelationField); - -export interface IModelMetaEnumerationOption { - key: string; - label: string; -} - -export interface IModelMetaEnumerationField { - fieldType: 'enumeration'; - options: IModelMetaEnumerationOption[]; -} - -export interface IModelMetaRelationFieldCommon { - fieldType: 'relation'; -} - -export interface IModelMetaRelationEnumerationField { - relationType: 'enumeration'; - relationKey: string; - relationEntityLabel: string; - relationEntityKey: string; -} - -export type IModelMetaRelationField = IModelMetaRelationFieldCommon & ( - IModelMetaRelationEnumerationField -); - -export interface IModelMeta { - defaultFilterField: string; - defaultSort: IModelMetaDefaultSort; - fields: { [key: string]: IModelMetaField }; -} diff --git a/server/src/interfaces/Options.ts b/server/src/interfaces/Options.ts deleted file mode 100644 index 51a4e7834..000000000 --- a/server/src/interfaces/Options.ts +++ /dev/null @@ -1,11 +0,0 @@ - - -export interface IOptionDTO { - key: string, - value: string|number, - group: string, -}; - -export interface IOptionsDTO { - options: IOptionDTO[], -}; \ No newline at end of file diff --git a/server/src/interfaces/Payment.ts b/server/src/interfaces/Payment.ts deleted file mode 100644 index 4d5317319..000000000 --- a/server/src/interfaces/Payment.ts +++ /dev/null @@ -1,20 +0,0 @@ - - -export interface IPaymentModel {} - -export interface ILicensePaymentModel extends IPaymentModel { - licenseCode: string; -} - -export interface IPaymentMethod { - makePayment(paymentModel: IPaymentModel): Promise; -} - -export interface ILicensePaymentMethod { - makePayment(paymentModel: ILicensePaymentModel): Promise; -} - -export interface IPaymentContext { - paymentMethod: IPaymentMethod; - makePayment(paymentModel: PaymentModel): Promise; -} \ No newline at end of file diff --git a/server/src/interfaces/PaymentReceive.ts b/server/src/interfaces/PaymentReceive.ts deleted file mode 100644 index 18f1935ee..000000000 --- a/server/src/interfaces/PaymentReceive.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { IDynamicListFilterDTO } from './DynamicFilter'; - -export interface IPaymentReceive { - id?: number; - customerId: number; - paymentDate: Date; - amount: number; - referenceNo: string; - depositAccountId: number; - paymentReceiveNo: string; - statement: string; - entries: IPaymentReceiveEntry[]; - userId: number; - createdAt: Date, - updatedAt: Date, -} -export interface IPaymentReceiveCreateDTO { - customerId: number; - paymentDate: Date; - amount: number; - referenceNo: string; - depositAccountId: number; - paymentReceiveNo?: string; - statement: string; - entries: IPaymentReceiveEntryDTO[]; -} - -export interface IPaymentReceiveEditDTO { - customerId: number; - paymentDate: Date; - amount: number; - referenceNo: string; - depositAccountId: number; - paymentReceiveNo?: string; - statement: string; - entries: IPaymentReceiveEntryDTO[]; -} - -export interface IPaymentReceiveEntry { - id?: number; - paymentReceiveId: number; - invoiceId: number; - paymentAmount: number; -} - -export interface IPaymentReceiveEntryDTO { - id?: number; - paymentReceiveId: number; - invoiceId: number; - paymentAmount: number; -} - -export interface IPaymentReceivesFilter extends IDynamicListFilterDTO { - stringifiedFilterRoles?: string; -} - -export interface IPaymentReceivePageEntry { - invoiceId: number; - entryType: string; - invoiceNo: string; - dueAmount: number; - amount: number; - totalPaymentAmount: number; - paymentAmount: number; - currencyCode: string; - date: Date | string; -} - -export interface IPaymentReceiveEditPage { - paymentReceive: IPaymentReceive; - entries: IPaymentReceivePageEntry[]; -} - -export interface IPaymentsReceiveService { - validateCustomerHasNoPayments( - tenantId: number, - customerId: number - ): Promise; -} diff --git a/server/src/interfaces/ProfitLossSheet.ts b/server/src/interfaces/ProfitLossSheet.ts deleted file mode 100644 index df58c14c7..000000000 --- a/server/src/interfaces/ProfitLossSheet.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { - INumberFormatQuery, -} from './FinancialStatements'; - -export interface IProfitLossSheetQuery { - basis: string, - fromDate: Date | string, - toDate: Date | string, - numberFormat: INumberFormatQuery, - noneZero: boolean, - noneTransactions: boolean, - accountsIds: number[], - displayColumnsType: 'total' | 'date_periods', - displayColumnsBy: string, -}; - -export interface IProfitLossSheetTotal { - amount: number, - formattedAmount: string, - currencyCode: string, - date?: Date|string, -}; - -export interface IProfitLossSheetAccount { - id: number, - index: number, - name: string, - code: string, - parentAccountId: number, - hasTransactions: boolean, - total: IProfitLossSheetTotal, - totalPeriods: IProfitLossSheetTotal[], -}; - -export interface IProfitLossSheetAccountsSection { - name: string, - entryNormal: 'credit' | 'debit', - accounts: IProfitLossSheetAccount[], - total: IProfitLossSheetTotal, - totalPeriods?: IProfitLossSheetTotal[], -}; - -export interface IProfitLossSheetTotalSection { - total: IProfitLossSheetTotal, - totalPeriods?: IProfitLossSheetTotal[], -}; - -export interface IProfitLossSheetStatement { - income: IProfitLossSheetAccountsSection, - costOfSales: IProfitLossSheetAccountsSection, - expenses: IProfitLossSheetAccountsSection, - otherExpenses: IProfitLossSheetAccountsSection, - otherIncome: IProfitLossSheetAccountsSection, - netIncome: IProfitLossSheetTotalSection; - operatingProfit: IProfitLossSheetTotalSection; - netOtherIncome: IProfitLossSheetTotalSection, - grossProfit: IProfitLossSheetTotalSection; -}; - -export interface IProfitLossSheetMeta { - isCostComputeRunning: boolean, - organizationName: string, - baseCurrency: string, -} \ No newline at end of file diff --git a/server/src/interfaces/Resource.ts b/server/src/interfaces/Resource.ts deleted file mode 100644 index d193a94c7..000000000 --- a/server/src/interfaces/Resource.ts +++ /dev/null @@ -1,22 +0,0 @@ - - -export interface IResource { - id: number, - key: string, -} - -export interface IResourceField { - labelName: string, - key: string, - dataType: string, - helpText?: string | null, - default?: string, - predefined: boolean, - active: boolean, - builtin: boolean, - columnable: boolean, - index: number, - dataResource: string, - resourceId: number, - options: any; -} \ No newline at end of file diff --git a/server/src/interfaces/SaleEstimate.ts b/server/src/interfaces/SaleEstimate.ts deleted file mode 100644 index 1b672d770..000000000 --- a/server/src/interfaces/SaleEstimate.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { IItemEntry } from "./ItemEntry"; -import { IDynamicListFilterDTO } from 'interfaces/DynamicFilter'; - -export interface ISaleEstimate { - id?: number, - amount: number, - currencyCode: string, - customerId: number, - estimateDate: Date, - estimateNumber: string, - reference: string, - note: string, - termsConditions: string, - userId: number, - entries: IItemEntry[], - sendToEmail: string, - createdAt?: Date, - deliveredAt: string|Date, - isConvertedToInvoice: boolean -}; -export interface ISaleEstimateDTO { - customerId: number, - estimateDate?: Date, - reference?: string, - estimateNumber?: string, - entries: IItemEntry[], - note: string, - termsConditions: string, - sendToEmail: string, - delivered: boolean, -}; - -export interface ISalesEstimatesFilter extends IDynamicListFilterDTO { - stringifiedFilterRoles?: string, -} - - -export interface ISalesEstimatesService { - validateCustomerHasNoEstimates( - tenantId: number, - customerId: number, - ): Promise; -} \ No newline at end of file diff --git a/server/src/interfaces/SaleInvoice.ts b/server/src/interfaces/SaleInvoice.ts deleted file mode 100644 index adc7d9e85..000000000 --- a/server/src/interfaces/SaleInvoice.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { IDynamicListFilter } from 'interfaces/DynamicFilter'; -import { IItemEntry, IItemEntryDTO } from './ItemEntry'; - -export interface ISaleInvoice { - id: number; - balance: number; - paymentAmount: number; - currencyCode: string; - invoiceDate: Date; - dueDate: Date; - dueAmount: number; - overdueDays: number; - customerId: number; - referenceNo: string; - invoiceNo: string; - entries: IItemEntry[]; - deliveredAt: string | Date; - userId: number; - createdAt: Date, -} - -export interface ISaleInvoiceDTO { - invoiceDate: Date; - dueDate: Date; - referenceNo: string; - invoiceNo: string; - customerId: number; - invoiceMessage: string; - termsConditions: string; - entries: IItemEntryDTO[]; - delivered: boolean; -} - -export interface ISaleInvoiceCreateDTO extends ISaleInvoiceDTO { - fromEstimateId: number; -} - -export interface ISaleInvoiceEditDTO extends ISaleInvoiceDTO {} - -export interface ISalesInvoicesFilter extends IDynamicListFilter { - page: number; - pageSize: number; - searchKeyword?: string; -} - -export interface ISalesInvoicesService { - validateCustomerHasNoInvoices( - tenantId: number, - customerId: number - ): Promise; -} diff --git a/server/src/interfaces/SaleReceipt.ts b/server/src/interfaces/SaleReceipt.ts deleted file mode 100644 index 4aaa2d0a6..000000000 --- a/server/src/interfaces/SaleReceipt.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { ISalesInvoicesFilter } from './SaleInvoice'; - -export interface ISaleReceipt { - id?: number; - customerId: number; - depositAccountId: number; - receiptDate: Date; - sendToEmail: string; - referenceNo: string; - receiptMessage: string; - receiptNumber: string; - amount: number; - currencyCode: string; - statement: string; - closedAt: Date | string; - entries: any[]; - createdAt: Date, - updatedAt: Date, -} - -export interface ISalesReceiptsFilter {} - -export interface ISaleReceiptDTO { - customerId: number; - depositAccountId: number; - receiptDate: Date; - sendToEmail: string; - referenceNo?: string; - receiptNumber?: string; - receiptMessage: string; - statement: string; - closed: boolean; - entries: any[]; -} - -export interface ISalesReceiptsService { - createSaleReceipt( - tenantId: number, - saleReceiptDTO: ISaleReceiptDTO - ): Promise; - - editSaleReceipt(tenantId: number, saleReceiptId: number): Promise; - - deleteSaleReceipt(tenantId: number, saleReceiptId: number): Promise; - - salesReceiptsList( - tennatid: number, - salesReceiptsFilter: ISalesReceiptsFilter - ): Promise<{ - salesReceipts: ISaleReceipt[]; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }>; - - validateCustomerHasNoReceipts( - tenantId: number, - customerId: number - ): Promise; -} diff --git a/server/src/interfaces/SalesByItemsSheet.ts b/server/src/interfaces/SalesByItemsSheet.ts deleted file mode 100644 index 362f4ceea..000000000 --- a/server/src/interfaces/SalesByItemsSheet.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { - INumberFormatQuery, -} from './FinancialStatements'; - -export interface ISalesByItemsReportQuery { - fromDate: Date | string; - toDate: Date | string; - itemsIds: number[], - numberFormat: INumberFormatQuery; - noneTransactions: boolean; -}; - -export interface ISalesByItemsSheetMeta { - organizationName: string, - baseCurrency: string, -}; - -export interface ISalesByItemsItem { - id: number, - name: string, - code: string, - quantitySold: number, - soldCost: number, - averageSellPrice: number, - - quantitySoldFormatted: string, - soldCostFormatted: string, - averageSellPriceFormatted: string, - currencyCode: string, -}; - -export interface ISalesByItemsTotal { - quantitySold: number, - soldCost: number, - quantitySoldFormatted: string, - soldCostFormatted: string, - currencyCode: string, -}; - -export type ISalesByItemsSheetStatement = { - items: ISalesByItemsItem[], - total: ISalesByItemsTotal -} | {}; - diff --git a/server/src/interfaces/Setup.ts b/server/src/interfaces/Setup.ts deleted file mode 100644 index 67742bf4b..000000000 --- a/server/src/interfaces/Setup.ts +++ /dev/null @@ -1,29 +0,0 @@ - - - -export interface IOrganizationSetupDTO{ - organizationName: string, - baseCurrency: string, - fiscalYear: string, - industry: string, - timeZone: string, -} - -export interface IOrganizationBuildDTO { - name: string; - industry: string; - location: string; - baseCurrency: string, - timezone: string; - fiscalYear: string; - dateFormat?: string; -} - -export interface IOrganizationUpdateDTO { - name: string; - location: string; - baseCurrency: string, - timezone: string; - fiscalYear: string; - industry: string; -} \ No newline at end of file diff --git a/server/src/interfaces/Table.ts b/server/src/interfaces/Table.ts deleted file mode 100644 index 944ace6db..000000000 --- a/server/src/interfaces/Table.ts +++ /dev/null @@ -1,25 +0,0 @@ - -export interface IColumnMapperMeta { - key: string; - accessor?: string; - value?: string; -} - -export interface ITableCell { - value: string; - key: string; -} - -export type ITableRow = { - rows: ITableCell[]; -}; - -export interface ITableColumn { - key: string, - label: string, -} - -export interface ITable { - columns: ITableColumn[], - data: ITableRow[], -} \ No newline at end of file diff --git a/server/src/interfaces/Tenancy.ts b/server/src/interfaces/Tenancy.ts deleted file mode 100644 index a49182bc8..000000000 --- a/server/src/interfaces/Tenancy.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Knex } from 'knex'; - -export interface ITenant { - id: number, - organizationId: string, - - initializedAt: Date|null, - seededAt: Date|null, - builtAt: Date|null, - createdAt: Date|null, -} - -export interface ITenantDBManager { - constructor(); - - databaseExists(tenant: ITenant): Promise; - createDatabase(tenant: ITenant): Promise; - - migrate(tenant: ITenant): Promise; - seed(tenant: ITenant): Promise; - - setupKnexInstance(tenant: ITenant): Knex; - getKnexInstance(tenantId: number): Knex; -} - -export interface ITenantManager { - tenantDBManager: ITenantDBManager; - tenant: ITenant; - - constructor(): void; - - createTenant(): Promise; - createDatabase(tenant: ITenant): Promise; - hasDatabase(tenant: ITenant): Promise; - - dropTenant(tenant: ITenant): Promise; - - migrateTenant(tenant: ITenant): Promise; - seedTenant(tenant: ITenant): Promise; - - setupKnexInstance(tenant: ITenant): Knex; - getKnexInstance(tenantId: number): Knex; -} - -export interface ISystemService { - cache(); - repositories(); - knex(); - dbManager(); -} \ No newline at end of file diff --git a/server/src/interfaces/TransactionsByContacts.ts b/server/src/interfaces/TransactionsByContacts.ts deleted file mode 100644 index 82a38002a..000000000 --- a/server/src/interfaces/TransactionsByContacts.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { INumberFormatQuery } from './FinancialStatements'; - -export interface ITransactionsByContactsAmount { - amount: number; - formattedAmount: string; - currencyCode: string; -} - -export interface ITransactionsByContactsTransaction { - date: string|Date, - credit: ITransactionsByContactsAmount; - debit: ITransactionsByContactsAmount; - accountName: string, - runningBalance: ITransactionsByContactsAmount; - currencyCode: string; - transactionType: string; - transactionNumber: string; - createdAt: string|Date, -}; - -export interface ITransactionsByContactsContact { - openingBalance: ITransactionsByContactsAmount, - closingBalance: ITransactionsByContactsAmount, - transactions: ITransactionsByContactsTransaction[], -} - -export interface ITransactionsByContactsFilter { - fromDate: Date|string; - toDate: Date|string; - numberFormat: INumberFormatQuery; - noneTransactions: boolean; - noneZero: boolean; -} diff --git a/server/src/interfaces/TransactionsByCustomers.ts b/server/src/interfaces/TransactionsByCustomers.ts deleted file mode 100644 index fe2fbf5e2..000000000 --- a/server/src/interfaces/TransactionsByCustomers.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - ITransactionsByContactsAmount, - ITransactionsByContactsTransaction, - ITransactionsByContactsFilter, -} from './TransactionsByContacts'; - -export interface ITransactionsByCustomersAmount - extends ITransactionsByContactsAmount {} - -export interface ITransactionsByCustomersTransaction - extends ITransactionsByContactsTransaction {} - -export interface ITransactionsByCustomersCustomer { - customerName: string; - openingBalance: ITransactionsByCustomersAmount; - closingBalance: ITransactionsByCustomersAmount; - transactions: ITransactionsByCustomersTransaction[]; -} - -export interface ITransactionsByCustomersFilter - extends ITransactionsByContactsFilter { - customersIds: number[]; -} - -export type ITransactionsByCustomersData = ITransactionsByCustomersCustomer[]; - -export interface ITransactionsByCustomersStatement { - data: ITransactionsByCustomersData; -} - -export interface ITransactionsByCustomersService { - transactionsByCustomers( - tenantId: number, - filter: ITransactionsByCustomersFilter - ): Promise; -} diff --git a/server/src/interfaces/TransactionsByReference.ts b/server/src/interfaces/TransactionsByReference.ts deleted file mode 100644 index 214fbb09e..000000000 --- a/server/src/interfaces/TransactionsByReference.ts +++ /dev/null @@ -1,31 +0,0 @@ - - -export interface ITransactionsByReferenceQuery { - referenceType: string; - referenceId: string; -} - -export interface ITransactionsByReferenceAmount { - amount: number; - formattedAmount: string; - currencyCode: string; -} - -export interface ITransactionsByReferenceTransaction{ - credit: ITransactionsByReferenceAmount; - debit: ITransactionsByReferenceAmount; - - contactType: string; - formattedContactType: string; - - contactId: number; - - referenceType: string; - formattedReferenceType: string; - - referenceId: number; - - accountName: string; - accountCode: string; - accountId: number; -} \ No newline at end of file diff --git a/server/src/interfaces/TransactionsByVendors.ts b/server/src/interfaces/TransactionsByVendors.ts deleted file mode 100644 index 107c7662e..000000000 --- a/server/src/interfaces/TransactionsByVendors.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - ITransactionsByContactsAmount, - ITransactionsByContactsTransaction, - ITransactionsByContactsFilter, -} from './TransactionsByContacts'; - -export interface ITransactionsByVendorsAmount - extends ITransactionsByContactsAmount {} - -export interface ITransactionsByVendorsTransaction - extends ITransactionsByContactsTransaction {} - -export interface ITransactionsByVendorsVendor { - vendorName: string; - openingBalance: ITransactionsByVendorsAmount; - closingBalance: ITransactionsByVendorsAmount; - transactions: ITransactionsByVendorsTransaction[]; -} - -export interface ITransactionsByVendorsFilter - extends ITransactionsByContactsFilter { - vendorsIds: number[]; -} - -export type ITransactionsByVendorsData = ITransactionsByVendorsVendor[]; - -export interface ITransactionsByVendorsStatement { - data: ITransactionsByVendorsData; -} - -export interface ITransactionsByVendorsService { - transactionsByVendors( - tenantId: number, - filter: ITransactionsByVendorsFilter - ): Promise; -} diff --git a/server/src/interfaces/TrialBalanceSheet.ts b/server/src/interfaces/TrialBalanceSheet.ts deleted file mode 100644 index 2c761eee5..000000000 --- a/server/src/interfaces/TrialBalanceSheet.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { INumberFormatQuery } from './FinancialStatements'; - -export interface ITrialBalanceSheetQuery { - fromDate: Date | string; - toDate: Date | string; - numberFormat: INumberFormatQuery; - basis: 'cash' | 'accural'; - noneZero: boolean; - noneTransactions: boolean; - accountIds: number[]; -} - -export interface ITrialBalanceTotal { - credit: number; - debit: number; - balance: number; - currencyCode: string; - - formattedCredit: string; - formattedDebit: string; - formattedBalance: string; -} - -export interface ITrialBalanceSheetMeta { - isCostComputeRunning: boolean, - organizationName: string, - baseCurrency: string, -}; - -export interface ITrialBalanceAccount extends ITrialBalanceTotal { - id: number; - parentAccountId: number; - name: string; - code: string; - accountNormal: string; - hasTransactions: boolean; -} - -export type ITrialBalanceSheetData = { - accounts: ITrialBalanceAccount[]; - total: ITrialBalanceTotal; -}; - -export interface ITrialBalanceStatement { - data: ITrialBalanceSheetData; - query: ITrialBalanceSheetQuery; - meta: ITrialBalanceSheetMeta, -} diff --git a/server/src/interfaces/User.ts b/server/src/interfaces/User.ts deleted file mode 100644 index 7df463af5..000000000 --- a/server/src/interfaces/User.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { Model } from 'objection'; - -export interface ISystemUser extends Model { - id: number; - firstName: string; - lastName: string; - active: boolean; - password: string; - email: string; - phoneNumber: string; - - roleId: number; - tenantId: number; - - inviteAcceptAt: Date; - lastLoginAt: Date; - deletedAt: Date; - - createdAt: Date; - updatedAt: Date; -} - -export interface ISystemUserDTO { - firstName: string; - lastName: string; - password: string; - phoneNumber: string; - active: boolean; - email: string; -} - -export interface IInviteUserInput { - firstName: string; - lastName: string; - phoneNumber: string; - password: string; -} - -export interface IUserInvite { - id: number; - email: string; - token: string; - tenantId: number; - userId: number; - createdAt?: Date; -} - -export interface IInviteUserService { - acceptInvite(token: string, inviteUserInput: IInviteUserInput): Promise; - resendInvite( - tenantId: number, - userId: number, - authorizedUser: ISystemUser - ): Promise<{ - invite: IUserInvite; - }>; - sendInvite( - tenantId: number, - email: string, - authorizedUser: ISystemUser - ): Promise<{ - invite: IUserInvite; - }>; - checkInvite( - token: string - ): Promise<{ inviteToken: IUserInvite; orgName: object }>; -} diff --git a/server/src/interfaces/VendorBalanceSummary.ts b/server/src/interfaces/VendorBalanceSummary.ts deleted file mode 100644 index 2fd4ecae4..000000000 --- a/server/src/interfaces/VendorBalanceSummary.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { INumberFormatQuery } from './FinancialStatements'; - -export interface IVendorBalanceSummaryQuery { - asDate: Date; - vendorsIds: number[], - numberFormat: INumberFormatQuery; - comparison: { - percentageOfColumn: boolean; - }; - noneTransactions: boolean; - noneZero: boolean; -} - -export interface IVendorBalanceSummaryAmount { - amount: number; - formattedAmount: string; - currencyCode: string; -} -export interface IVendorBalanceSummaryPercentage { - amount: number; - formattedAmount: string; -} - -export interface IVendorBalanceSummaryVendor { - vendorName: string; - total: IVendorBalanceSummaryAmount; - percentageOfColumn?: IVendorBalanceSummaryPercentage; -} - -export interface IVendorBalanceSummaryTotal { - total: IVendorBalanceSummaryAmount; - percentageOfColumn?: IVendorBalanceSummaryPercentage; -} - -export interface IVendorBalanceSummaryData { - vendors: IVendorBalanceSummaryVendor[]; - total: IVendorBalanceSummaryTotal; -} - -export interface IVendorBalanceSummaryStatement { - data: IVendorBalanceSummaryData; - columns: {}; - query: IVendorBalanceSummaryQuery; -} - -export interface IVendorBalanceSummaryService { - vendorBalanceSummary( - tenantId: number, - query: IVendorBalanceSummaryQuery, - ): Promise; -} diff --git a/server/src/interfaces/View.ts b/server/src/interfaces/View.ts deleted file mode 100644 index 39c32190c..000000000 --- a/server/src/interfaces/View.ts +++ /dev/null @@ -1,68 +0,0 @@ - -export interface IView { - id: number, - name: string, - slug: string; - predefined: boolean, - resourceModel: string, - favourite: boolean, - rolesLogicExpression: string, - - roles: IViewRole[], - columns: IViewHasColumn[], -}; - -export interface IViewRole { - id: number, - fieldKey: string, - index: number, - comparator: string, - value: string, - viewId: number, -}; - -export interface IViewHasColumn { - id :number, - viewId: number, - fieldId: number, - index: number, -} - -export interface IViewRoleDTO { - index: number, - fieldKey: string, - comparator: string, - value: string, - viewId: number, -} - -export interface IViewColumnDTO { - id: number, - index: number, - viewId: number, - fieldKey: string, -}; - -export interface IViewDTO { - name: string, - logicExpression: string, - resourceModel: string, - - roles: IViewRoleDTO[], - columns: IViewColumnDTO[], -}; - -export interface IViewEditDTO { - name: string, - logicExpression: string, - - roles: IViewRoleDTO[], - columns: IViewColumnDTO[], -}; - -export interface IViewsService { - listResourceViews(tenantId: number, resourceModel: string): Promise; - newView(tenantId: number, viewDTO: IViewDTO): Promise; - editView(tenantId: number, viewId: number, viewEditDTO: IViewEditDTO): Promise; - deleteView(tenantId: number, viewId: number): Promise; -} \ No newline at end of file diff --git a/server/src/interfaces/index.ts b/server/src/interfaces/index.ts deleted file mode 100644 index e67409173..000000000 --- a/server/src/interfaces/index.ts +++ /dev/null @@ -1,63 +0,0 @@ - -export * from './Model'; -export * from './InventoryTransaction'; -export * from './BillPayment'; -export * from './Bill'; -export * from './InventoryCostMethod'; -export * from './ItemEntry'; -export * from './Item'; -export * from './License'; -export * from './ItemCategory'; -export * from './Payment'; -export * from './SaleInvoice'; -export * from './SaleReceipt'; -export * from './PaymentReceive'; -export * from './SaleEstimate'; -export * from './Authentication'; -export * from './User'; -export * from './Metable'; -export * from './Options'; -export * from './Account'; -export * from './DynamicFilter'; -export * from './Journal'; -export * from './Contact'; -export * from './Expenses'; -export * from './Tenancy'; -export * from './View'; -export * from './ManualJournal'; -export * from './Currency'; -export * from './ExchangeRate'; -export * from './Media'; -export * from './SaleEstimate'; -export * from './FinancialStatements'; -export * from './BalanceSheet'; -export * from './TrialBalanceSheet'; -export * from './GeneralLedgerSheet' -export * from './ProfitLossSheet'; -export * from './JournalReport'; -export * from './AgingReport'; -export * from './ARAgingSummaryReport'; -export * from './APAgingSummaryReport'; -export * from './Mailable'; -export * from './InventoryAdjustment'; -export * from './Setup' -export * from './IInventoryValuationSheet'; -export * from './SalesByItemsSheet'; -export * from './CustomerBalanceSummary'; -export * from './VendorBalanceSummary'; -export * from './ContactBalanceSummary'; -export * from './TransactionsByCustomers'; -export * from './TransactionsByContacts'; -export * from './TransactionsByVendors'; -export * from './Table'; -export * from './Ledger'; -export * from './CashFlow'; -export * from './InventoryDetails'; -export * from './LandedCost'; -export * from './Entry'; -export * from './TransactionsByReference'; -export * from './Jobs'; - -export interface I18nService { - __: (input: string) => string; -} \ No newline at end of file diff --git a/server/src/jobs/ComputeItemCost.ts b/server/src/jobs/ComputeItemCost.ts deleted file mode 100644 index f68e99c11..000000000 --- a/server/src/jobs/ComputeItemCost.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { Container } from 'typedi'; -import {EventDispatcher} from "event-dispatch"; -import events from 'subscribers/events'; -import InventoryService from 'services/Inventory/Inventory'; - -export default class ComputeItemCostJob { - agenda: any; - eventDispatcher: EventDispatcher; - - /** - * Constructor method. - * @param agenda - */ - constructor(agenda) { - this.agenda = agenda; - this.eventDispatcher = new EventDispatcher(); - - agenda.define( - 'compute-item-cost', - { priority: 'high', concurrency: 1 }, - this.handler.bind(this), - ); - this.agenda.on('start:compute-item-cost', this.onJobStart.bind(this)); - this.agenda.on('complete:compute-item-cost', this.onJobCompleted.bind(this)); - } - - /** - * The job handler. - */ - public async handler(job, done: Function): Promise { - const Logger = Container.get('logger'); - const inventoryService = Container.get(InventoryService); - - const { startingDate, itemId, tenantId } = job.attrs.data; - - Logger.info(`Compute item cost - started: ${job.attrs.data}`); - - try { - await inventoryService.computeItemCost(tenantId, startingDate, itemId); - Logger.info(`Compute item cost - completed: ${job.attrs.data}`); - done(); - } catch(e) { - Logger.info(`Compute item cost: ${job.attrs.data}, error: ${e}`); - done(e); - } - } - - /** - * Handle the job started. - */ - async onJobStart(job) { - const { startingDate, itemId, tenantId } = job.attrs.data; - - await this.eventDispatcher.dispatch( - events.inventory.onComputeItemCostJobStarted, - { startingDate, itemId, tenantId } - ); - } - - /** - * Handle job complete items cost finished. - * @param {Job} job - - */ - async onJobCompleted(job) { - const { startingDate, itemId, tenantId } = job.attrs.data; - - await this.eventDispatcher.dispatch( - events.inventory.onComputeItemCostJobCompleted, - { startingDate, itemId, tenantId }, - ); - } -} diff --git a/server/src/jobs/MailNotificationSubscribeEnd.ts b/server/src/jobs/MailNotificationSubscribeEnd.ts deleted file mode 100644 index 1c197defc..000000000 --- a/server/src/jobs/MailNotificationSubscribeEnd.ts +++ /dev/null @@ -1,34 +0,0 @@ -import Container from 'typedi'; -import SubscriptionService from 'services/Subscription/Subscription'; - -export default class MailNotificationSubscribeEnd { - /** - * Job handler. - * @param {Job} job - - */ - handler(job) { - const { tenantId, phoneNumber, remainingDays } = job.attrs.data; - - const subscriptionService = Container.get(SubscriptionService); - const Logger = Container.get('logger'); - - Logger.info( - `Send mail notification subscription end soon - started: ${job.attrs.data}` - ); - - try { - subscriptionService.mailMessages.sendRemainingTrialPeriod( - phoneNumber, - remainingDays - ); - Logger.info( - `Send mail notification subscription end soon - finished: ${job.attrs.data}` - ); - } catch (error) { - Logger.info( - `Send mail notification subscription end soon - failed: ${job.attrs.data}, error: ${e}` - ); - done(e); - } - } -} diff --git a/server/src/jobs/MailNotificationTrialEnd.ts b/server/src/jobs/MailNotificationTrialEnd.ts deleted file mode 100644 index faf39396f..000000000 --- a/server/src/jobs/MailNotificationTrialEnd.ts +++ /dev/null @@ -1,34 +0,0 @@ -import Container from 'typedi'; -import SubscriptionService from 'services/Subscription/Subscription'; - -export default class MailNotificationTrialEnd { - /** - * - * @param {Job} job - - */ - handler(job) { - const { tenantId, phoneNumber, remainingDays } = job.attrs.data; - - const subscriptionService = Container.get(SubscriptionService); - const Logger = Container.get('logger'); - - Logger.info( - `Send mail notification subscription end soon - started: ${job.attrs.data}` - ); - - try { - subscriptionService.mailMessages.sendRemainingTrialPeriod( - phoneNumber, - remainingDays - ); - Logger.info( - `Send mail notification subscription end soon - finished: ${job.attrs.data}` - ); - } catch (error) { - Logger.info( - `Send mail notification subscription end soon - failed: ${job.attrs.data}, error: ${e}` - ); - done(e); - } - } -} diff --git a/server/src/jobs/OrganizationSetup.ts b/server/src/jobs/OrganizationSetup.ts deleted file mode 100644 index c031cffbf..000000000 --- a/server/src/jobs/OrganizationSetup.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Container } from 'typedi'; -import OrganizationService from 'services/Organization'; - -export default class OrganizationSetupJob { - /** - * Constructor method. - */ - constructor(agenda) { - agenda.define( - 'organization-setup', - { priority: 'high', concurrency: 1 }, - this.handler - ); - } - - /** - * Handle job action. - */ - async handler(job, done: Function): Promise { - const { tenantId, _id } = job.attrs.data; - const licenseService = Container.get(OrganizationService); - - try { - await licenseService.build(tenantId); - done(); - } catch (e) { - console.error(e); - - // Unlock build status of the tenant. - await licenseService.revertBuildRunJob(tenantId, _id); - - done(e); - } - } -} diff --git a/server/src/jobs/ResetPasswordMail.ts b/server/src/jobs/ResetPasswordMail.ts deleted file mode 100644 index 60be22500..000000000 --- a/server/src/jobs/ResetPasswordMail.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Container, Inject } from 'typedi'; -import AuthenticationService from 'services/Authentication'; - -export default class WelcomeEmailJob { - /** - * Constructor method. - * @param {Agenda} agenda - */ - constructor(agenda) { - agenda.define( - 'reset-password-mail', - { priority: 'high' }, - this.handler.bind(this), - ); - } - - /** - * Handle send welcome mail job. - * @param {Job} job - * @param {Function} done - */ - public async handler(job, done: Function): Promise { - const { data } = job.attrs; - const { user, token } = data; - const Logger = Container.get('logger'); - const authService = Container.get(AuthenticationService); - - Logger.info(`[send_reset_password] started.`, { data }); - - try { - await authService.mailMessages.sendResetPasswordMessage(user, token); - Logger.info(`[send_reset_password] finished.`, { data }); - done() - } catch (error) { - Logger.error(`[send_reset_password] error.`, { data, error }); - done(error); - } - } -} diff --git a/server/src/jobs/SMSNotificationSubscribeEnd.ts b/server/src/jobs/SMSNotificationSubscribeEnd.ts deleted file mode 100644 index ee43ab0c5..000000000 --- a/server/src/jobs/SMSNotificationSubscribeEnd.ts +++ /dev/null @@ -1,28 +0,0 @@ -import Container from 'typedi'; -import SubscriptionService from 'services/Subscription/Subscription'; - -export default class SMSNotificationSubscribeEnd { - - /** - * - * @param {Job}job - */ - handler(job) { - const { tenantId, phoneNumber, remainingDays } = job.attrs.data; - - const subscriptionService = Container.get(SubscriptionService); - const Logger = Container.get('logger'); - - Logger.info(`Send SMS notification subscription end soon - started: ${job.attrs.data}`); - - try { - subscriptionService.smsMessages.sendRemainingSubscriptionPeriod( - phoneNumber, remainingDays, - ); - Logger.info(`Send SMS notification subscription end soon - finished: ${job.attrs.data}`); - } catch(error) { - Logger.info(`Send SMS notification subscription end soon - failed: ${job.attrs.data}, error: ${e}`); - done(e); - } - } -} \ No newline at end of file diff --git a/server/src/jobs/SMSNotificationTrialEnd.ts b/server/src/jobs/SMSNotificationTrialEnd.ts deleted file mode 100644 index 72796ea50..000000000 --- a/server/src/jobs/SMSNotificationTrialEnd.ts +++ /dev/null @@ -1,28 +0,0 @@ -import Container from 'typedi'; -import SubscriptionService from 'services/Subscription/Subscription'; - -export default class SMSNotificationTrialEnd { - - /** - * - * @param {Job}job - */ - handler(job) { - const { tenantId, phoneNumber, remainingDays } = job.attrs.data; - - const subscriptionService = Container.get(SubscriptionService); - const Logger = Container.get('logger'); - - Logger.info(`Send notification subscription end soon - started: ${job.attrs.data}`); - - try { - subscriptionService.smsMessages.sendRemainingTrialPeriod( - phoneNumber, remainingDays, - ); - Logger.info(`Send notification subscription end soon - finished: ${job.attrs.data}`); - } catch(error) { - Logger.info(`Send notification subscription end soon - failed: ${job.attrs.data}, error: ${e}`); - done(e); - } - } -} \ No newline at end of file diff --git a/server/src/jobs/SendLicenseEmail.ts b/server/src/jobs/SendLicenseEmail.ts deleted file mode 100644 index 91569a91d..000000000 --- a/server/src/jobs/SendLicenseEmail.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Container } from 'typedi'; -import LicenseService from 'services/Payment/License'; - -export default class SendLicenseViaEmailJob { - /** - * Constructor method. - * @param agenda - */ - constructor(agenda) { - agenda.define( - 'send-license-via-email', - { priority: 'high', concurrency: 1, }, - this.handler, - ); - } - - public async handler(job, done: Function): Promise { - const Logger = Container.get('logger'); - const licenseService = Container.get(LicenseService); - const { email, licenseCode } = job.attrs.data; - - Logger.info(`[send_license_via_mail] started: ${job.attrs.data}`); - - try { - await licenseService.mailMessages.sendMailLicense(licenseCode, email); - Logger.info(`[send_license_via_mail] completed: ${job.attrs.data}`); - done(); - } catch(e) { - Logger.error(`[send_license_via_mail] ${job.attrs.data}, error: ${e}`); - done(e); - } - } -} diff --git a/server/src/jobs/SendLicensePhone.ts b/server/src/jobs/SendLicensePhone.ts deleted file mode 100644 index 6301c7058..000000000 --- a/server/src/jobs/SendLicensePhone.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Container } from 'typedi'; -import LicenseService from 'services/Payment/License'; - -export default class SendLicenseViaPhoneJob { - /** - * Constructor method. - */ - constructor(agenda) { - agenda.define( - 'send-license-via-phone', - { priority: 'high', concurrency: 1, }, - this.handler, - ); - } - - public async handler(job, done: Function): Promise { - const { phoneNumber, licenseCode } = job.attrs.data; - - const Logger = Container.get('logger'); - const licenseService = Container.get(LicenseService); - - Logger.debug(`Send license via phone number - started: ${job.attrs.data}`); - - try { - await licenseService.smsMessages.sendLicenseSMSMessage(phoneNumber, licenseCode); - Logger.debug(`Send license via phone number - completed: ${job.attrs.data}`); - done(); - } catch(e) { - Logger.error(`Send license via phone number: ${job.attrs.data}, error: ${e}`); - done(e); - } - } -} diff --git a/server/src/jobs/UserInviteMail.ts b/server/src/jobs/UserInviteMail.ts deleted file mode 100644 index 52a36cff8..000000000 --- a/server/src/jobs/UserInviteMail.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Container, Inject } from 'typedi'; -import InviteUserService from 'services/InviteUsers'; - -export default class UserInviteMailJob { - /** - * Constructor method. - * @param {Agenda} agenda - */ - constructor(agenda) { - agenda.define( - 'user-invite-mail', - { priority: 'high' }, - this.handler.bind(this) - ); - } - - /** - * Handle invite user job. - * @param {Job} job - * @param {Function} done - */ - public async handler(job, done: Function): Promise { - const { invite, authorizedUser, tenantId } = job.attrs.data; - - const Logger = Container.get('logger'); - const inviteUsersService = Container.get(InviteUserService); - - Logger.info(`Send invite user mail - started: ${job.attrs.data}`); - - try { - await inviteUsersService.mailMessages.sendInviteMail( - tenantId, - authorizedUser, - invite - ); - Logger.info(`Send invite user mail - finished: ${job.attrs.data}`); - done(); - } catch (error) { - Logger.info( - `Send invite user mail - error: ${job.attrs.data}, error: ${error}` - ); - done(error); - } - } -} diff --git a/server/src/jobs/WelcomeSMS.ts b/server/src/jobs/WelcomeSMS.ts deleted file mode 100644 index 469607c6a..000000000 --- a/server/src/jobs/WelcomeSMS.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Container, Inject } from 'typedi'; -import AuthenticationService from 'services/Authentication'; - -export default class WelcomeSMSJob { - /** - * Constructor method. - * @param {Agenda} agenda - */ - constructor(agenda) { - agenda.define('welcome-sms', { priority: 'high' }, this.handler); - } - - /** - * Handle send welcome mail job. - * @param {Job} job - * @param {Function} done - */ - public async handler(job, done: Function): Promise { - const { tenant, user } = job.attrs.data; - - const Logger = Container.get('logger'); - const authService = Container.get(AuthenticationService); - - Logger.info(`[welcome_sms] started: ${job.attrs.data}`); - - try { - await authService.smsMessages.sendWelcomeMessage(tenant, user); - Logger.info(`[welcome_sms] finished`, { tenant, user }); - done(); - } catch (error) { - Logger.info(`[welcome_sms] error`, { error, tenant, user }); - done(error); - } - } -} diff --git a/server/src/jobs/welcomeEmail.ts b/server/src/jobs/welcomeEmail.ts deleted file mode 100644 index 1bc038b2f..000000000 --- a/server/src/jobs/welcomeEmail.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Container } from 'typedi'; -import AuthenticationService from 'services/Authentication'; - -export default class WelcomeEmailJob { - /** - * Constructor method. - * @param {Agenda} agenda - - */ - constructor(agenda) { - // Welcome mail and SMS message. - agenda.define( - 'welcome-email', - { priority: 'high' }, - this.handler.bind(this), - ); - } - - /** - * Handle send welcome mail job. - * @param {Job} job - * @param {Function} done - */ - public async handler(job, done: Function): Promise { - const { organizationId, user } = job.attrs.data; - const Logger: any = Container.get('logger'); - const authService = Container.get(AuthenticationService); - - Logger.info(`[welcome_mail] started: ${job.attrs.data}`); - - try { - await authService.mailMessages.sendWelcomeMessage(user, organizationId); - Logger.info(`[welcome_mail] finished: ${job.attrs.data}`); - done(); - } catch (error) { - Logger.error(`[welcome_mail] error: ${job.attrs.data}, error: ${error}`); - done(error); - } - } -} diff --git a/server/src/jobs/writeInvoicesJEntries.ts b/server/src/jobs/writeInvoicesJEntries.ts deleted file mode 100644 index 20bc62a4b..000000000 --- a/server/src/jobs/writeInvoicesJEntries.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Container } from 'typedi'; -import {EventDispatcher} from "event-dispatch"; -import events from 'subscribers/events'; -import SalesInvoicesCost from 'services/Sales/SalesInvoicesCost'; - -export default class WriteInvoicesJournalEntries { - eventDispatcher: EventDispatcher; - - /** - * Constructor method. - */ - constructor(agenda) { - const eventName = 'rewrite-invoices-journal-entries'; - this.eventDispatcher = new EventDispatcher(); - - agenda.define( - eventName, - { priority: 'normal', concurrency: 1 }, - this.handler.bind(this) - ); - agenda.on(`complete:${eventName}`, this.onJobCompleted.bind(this)); - } - - /** - * Handle the job execuation. - */ - public async handler(job, done: Function): Promise { - const Logger = Container.get('logger'); - const { startingDate, tenantId } = job.attrs.data; - - const salesInvoicesCost = Container.get(SalesInvoicesCost); - - Logger.info( - `Write sales invoices journal entries - started: ${job.attrs.data}` - ); - try { - await salesInvoicesCost.writeInventoryCostJournalEntries( - tenantId, - startingDate, - true - ); - Logger.info( - `Write sales invoices journal entries - completed: ${job.attrs.data}` - ); - done(); - } catch (e) { - Logger.info( - `Write sales invoices journal entries: ${job.attrs.data}, error: ${e}` - ); - done(e); - } - } - - /** - * Handle the job complete. - */ - async onJobCompleted(job) { - const { startingDate, itemId, tenantId } = job.attrs.data; - - await this.eventDispatcher.dispatch( - events.inventory.onInventoryCostEntriesWritten, - { startingDate, itemId, tenantId } - ); - } -} diff --git a/server/src/lib/AccountTypes/index.ts b/server/src/lib/AccountTypes/index.ts deleted file mode 100644 index 4d5c9b839..000000000 --- a/server/src/lib/AccountTypes/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { get } from 'lodash'; -import { ACCOUNT_TYPES } from 'data/AccountTypes'; - -export default class AccountTypesUtils { - /** - * Retrieve account types list. - */ - static getList() { - return ACCOUNT_TYPES; - } - - /** - * Retrieve accounts types by the given root type. - * @param {string} rootType - - * @return {string} - */ - static getTypesByRootType(rootType: string) { - return ACCOUNT_TYPES.filter((type) => type.rootType === rootType); - } - - /** - * Retrieve account type by the given account type key. - * @param {string} key - * @param {string} accessor - */ - static getType(key: string, accessor?: string) { - const type = ACCOUNT_TYPES.find((type) => type.key === key); - - if (accessor) { - return get(type, accessor); - } - return type; - } - - /** - * Retrieve accounts types by the parent account type. - * @param {string} parentType - */ - static getTypesByParentType(parentType: string) { - return ACCOUNT_TYPES.filter((type) => type.parentType === parentType); - } - - /** - * Retrieve accounts types by the given account normal. - * @param {string} normal - */ - static getTypesByNormal(normal: string) { - return ACCOUNT_TYPES.filter((type) => type.normal === normal); - } - - /** - * Detarmines whether the root type equals the account type. - * @param {string} key - * @param {string} rootType - */ - static isRootTypeEqualsKey(key: string, rootType: string): boolean { - return ACCOUNT_TYPES.some((type) => { - const isType = type.key === key; - const isRootType = type.rootType === rootType; - - return isType && isRootType; - }); - } - - /** - * Detarmines whether the parent account type equals the account type key. - * @param {string} key - Account type key. - * @param {string} parentType - Account parent type. - */ - static isParentTypeEqualsKey(key: string, parentType: string): boolean { - return ACCOUNT_TYPES.some((type) => { - const isType = type.key === key; - const isParentType = type.parentType === parentType; - - return isType && isParentType; - }); - } - - /** - * Detarmines whether account type has balance sheet. - * @param {string} key - Account type key. - * - */ - static isTypeBalanceSheet(key: string): boolean { - return ACCOUNT_TYPES.some((type) => { - const isType = type.key === key; - return isType && type.balanceSheet; - }); - } - - /** - * Detarmines whether account type has profit/loss sheet. - * @param {string} key - Account type key. - */ - static isTypePLSheet(key: string): boolean { - return ACCOUNT_TYPES.some((type) => { - const isType = type.key === key; - return isType && type.incomeSheet; - }); - } -} \ No newline at end of file diff --git a/server/src/lib/Cachable/CachableModel.js b/server/src/lib/Cachable/CachableModel.js deleted file mode 100644 index 19c9fd239..000000000 --- a/server/src/lib/Cachable/CachableModel.js +++ /dev/null @@ -1,16 +0,0 @@ -import BaseModel from 'models/Model'; -import CacheService from 'services/Cache'; - -export default (Model) => { - return class CachableModel extends Model{ - static flushCache(key) { - const modelName = this.name; - - if (key) { - CacheService.del(`${modelName}.${key}`); - } else { - CacheService.delStartWith(modelName); - } - } - }; -} \ No newline at end of file diff --git a/server/src/lib/Cachable/CachableQueryBuilder.js b/server/src/lib/Cachable/CachableQueryBuilder.js deleted file mode 100644 index 34493c084..000000000 --- a/server/src/lib/Cachable/CachableQueryBuilder.js +++ /dev/null @@ -1,69 +0,0 @@ -import { QueryBuilder } from 'objection'; -import crypto from 'crypto'; -import CacheService from 'services/Cache'; - -export default class CachableQueryBuilder extends QueryBuilder{ - - async then(...args) { - // Flush model cache after insert, delete or update transaction. - if (this.isInsert() || this.isDelete() || this.isUpdate()) { - this.modelClass().flushCache(); - } - if (this.cacheTag && this.isFind()) { - this.setCacheKey(); - return this.getOrStoreCache().then(...args); - } else { - const promise = this.execute(); - - return promise.then((result) => { - this.setCache(result); - return result; - }).then(...args); - } - } - - getOrStoreCache() { - const storeFunction = () => this.execute(); - - return new Promise((resolve, reject) => { - CacheService.get(this.cacheKey, storeFunction) - .then((result) => { resolve(result); }); - }); - } - - setCache(results) { - CacheService.set(`${this.cacheKey}`, results, this.cacheSeconds); - } - - generateCacheKey() { - const knexSql = this.toKnexQuery().toSQL(); - const hashedQuery = crypto.createHash('md5').update(knexSql.sql).digest("hex"); - - return hashedQuery; - } - - remember(key, seconds) { - const modelName = this.modelClass().name; - - this.cacheSeconds = seconds; - this.cacheTag = (key) ? `${modelName}.${key}` : modelName; - - return this; - } - - withGraphFetched(relation, settings) { - if (!this.graphAppends) { - this.graphAppends = [relation]; - } else { - this.graphAppends.push(relation); - } - return super.withGraphFetched(relation, settings); - } - - setCacheKey() { - const hashedQuery = this.generateCacheKey(); - const appends = (this.graphAppends || []).join(this.graphAppends, ','); - - this.cacheKey = `${this.cacheTag}.${hashedQuery}.${appends}`; - } -} \ No newline at end of file diff --git a/server/src/lib/DependencyGraph/index.js b/server/src/lib/DependencyGraph/index.js deleted file mode 100644 index dcc19c7b7..000000000 --- a/server/src/lib/DependencyGraph/index.js +++ /dev/null @@ -1,349 +0,0 @@ -/** - * A simple dependency graph - */ - -/** - * Helper for creating a Topological Sort using Depth-First-Search on a set of edges. - * - * Detects cycles and throws an Error if one is detected (unless the "circular" - * parameter is "true" in which case it ignores them). - * - * @param edges The set of edges to DFS through - * @param leavesOnly Whether to only return "leaf" nodes (ones who have no edges) - * @param result An array in which the results will be populated - * @param circular A boolean to allow circular dependencies - */ -function createDFS(edges, leavesOnly, result, circular) { - var visited = {}; - return function(start) { - if (visited[start]) { - return; - } - var inCurrentPath = {}; - var currentPath = []; - var todo = []; // used as a stack - todo.push({ node: start, processed: false }); - while (todo.length > 0) { - var current = todo[todo.length - 1]; // peek at the todo stack - var processed = current.processed; - var node = current.node; - if (!processed) { - // Haven't visited edges yet (visiting phase) - if (visited[node]) { - todo.pop(); - continue; - } else if (inCurrentPath[node]) { - // It's not a DAG - if (circular) { - todo.pop(); - // If we're tolerating cycles, don't revisit the node - continue; - } - currentPath.push(node); - throw new DepGraphCycleError(currentPath); - } - - inCurrentPath[node] = true; - currentPath.push(node); - var nodeEdges = edges[node]; - // (push edges onto the todo stack in reverse order to be order-compatible with the old DFS implementation) - for (var i = nodeEdges.length - 1; i >= 0; i--) { - todo.push({ node: nodeEdges[i], processed: false }); - } - current.processed = true; - } else { - // Have visited edges (stack unrolling phase) - todo.pop(); - currentPath.pop(); - inCurrentPath[node] = false; - visited[node] = true; - if (!leavesOnly || edges[node].length === 0) { - result.push(node); - } - } - } - }; -} - -/** - * Simple Dependency Graph - */ -var DepGraph = (DepGraph = function DepGraph(opts) { - this.nodes = {}; // Node -> Node/Data (treated like a Set) - this.outgoingEdges = {}; // Node -> [Dependency Node] - this.incomingEdges = {}; // Node -> [Dependant Node] - this.circular = opts && !!opts.circular; // Allows circular deps -}); - -DepGraph.fromArray = (items, options = { itemId: 'id', parentItemId: 'parent_id' }) => { - const depGraph = new DepGraph(); - - items.forEach((item) => { - depGraph.addNode(item[options.itemId], item); - }); - items.forEach((item) => { - if (item[options.parentItemId]) { - depGraph.addDependency(item[options.parentItemId], item[options.itemId]); - } - }); - return depGraph; -} - -DepGraph.prototype = { - /** - * The number of nodes in the graph. - */ - size: function() { - return Object.keys(this.nodes).length; - }, - /** - * Add a node to the dependency graph. If a node already exists, this method will do nothing. - */ - addNode: function(node, data) { - if (!this.hasNode(node)) { - // Checking the arguments length allows the user to add a node with undefined data - if (arguments.length === 2) { - this.nodes[node] = data; - } else { - this.nodes[node] = node; - } - this.outgoingEdges[node] = []; - this.incomingEdges[node] = []; - } - }, - /** - * Remove a node from the dependency graph. If a node does not exist, this method will do nothing. - */ - removeNode: function(node) { - if (this.hasNode(node)) { - delete this.nodes[node]; - delete this.outgoingEdges[node]; - delete this.incomingEdges[node]; - [this.incomingEdges, this.outgoingEdges].forEach(function(edgeList) { - Object.keys(edgeList).forEach(function(key) { - var idx = edgeList[key].indexOf(node); - if (idx >= 0) { - edgeList[key].splice(idx, 1); - } - }, this); - }); - } - }, - /** - * Check if a node exists in the graph - */ - hasNode: function(node) { - return this.nodes.hasOwnProperty(node); - }, - /** - * Get the data associated with a node name - */ - getNodeData: function(node) { - if (this.hasNode(node)) { - return this.nodes[node]; - } else { - throw new Error("Node does not exist: " + node); - } - }, - - /** - * Set the associated data for a given node name. If the node does not exist, this method will throw an error - */ - setNodeData: function(node, data) { - if (this.hasNode(node)) { - this.nodes[node] = data; - } else { - throw new Error("Node does not exist: " + node); - } - }, - /** - * Add a dependency between two nodes. If either of the nodes does not exist, - * an Error will be thrown. - */ - addDependency: function(from, to) { - if (!this.hasNode(from)) { - throw new Error("Node does not exist: " + from); - } - if (!this.hasNode(to)) { - throw new Error("Node does not exist: " + to); - } - if (this.outgoingEdges[from].indexOf(to) === -1) { - this.outgoingEdges[from].push(to); - } - if (this.incomingEdges[to].indexOf(from) === -1) { - this.incomingEdges[to].push(from); - } - return true; - }, - /** - * Remove a dependency between two nodes. - */ - removeDependency: function(from, to) { - var idx; - if (this.hasNode(from)) { - idx = this.outgoingEdges[from].indexOf(to); - if (idx >= 0) { - this.outgoingEdges[from].splice(idx, 1); - } - } - - if (this.hasNode(to)) { - idx = this.incomingEdges[to].indexOf(from); - if (idx >= 0) { - this.incomingEdges[to].splice(idx, 1); - } - } - }, - /** - * Return a clone of the dependency graph. If any custom data is attached - * to the nodes, it will only be shallow copied. - */ - clone: function() { - var source = this; - var result = new DepGraph(); - var keys = Object.keys(source.nodes); - keys.forEach(function(n) { - result.nodes[n] = source.nodes[n]; - result.outgoingEdges[n] = source.outgoingEdges[n].slice(0); - result.incomingEdges[n] = source.incomingEdges[n].slice(0); - }); - return result; - }, - /** - * Get an array containing the nodes that the specified node depends on (transitively). - * - * Throws an Error if the graph has a cycle, or the specified node does not exist. - * - * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned - * in the array. - */ - dependenciesOf: function(node, leavesOnly) { - if (this.hasNode(node)) { - var result = []; - var DFS = createDFS( - this.outgoingEdges, - leavesOnly, - result, - this.circular - ); - DFS(node); - var idx = result.indexOf(node); - if (idx >= 0) { - result.splice(idx, 1); - } - return result; - } else { - throw new Error("Node does not exist: " + node); - } - }, - /** - * get an array containing the nodes that depend on the specified node (transitively). - * - * Throws an Error if the graph has a cycle, or the specified node does not exist. - * - * If `leavesOnly` is true, only nodes that do not have any dependants will be returned in the array. - */ - dependantsOf: function(node, leavesOnly) { - if (this.hasNode(node)) { - var result = []; - var DFS = createDFS( - this.incomingEdges, - leavesOnly, - result, - this.circular - ); - DFS(node); - var idx = result.indexOf(node); - if (idx >= 0) { - result.splice(idx, 1); - } - return result; - } else { - throw new Error("Node does not exist: " + node); - } - }, - /** - * Construct the overall processing order for the dependency graph. - * - * Throws an Error if the graph has a cycle. - * - * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned. - */ - overallOrder: function(leavesOnly) { - var self = this; - var result = []; - var keys = Object.keys(this.nodes); - if (keys.length === 0) { - return result; // Empty graph - } else { - if (!this.circular) { - // Look for cycles - we run the DFS starting at all the nodes in case there - // are several disconnected subgraphs inside this dependency graph. - var CycleDFS = createDFS(this.outgoingEdges, false, [], this.circular); - keys.forEach(function(n) { - CycleDFS(n); - }); - } - - var DFS = createDFS( - this.outgoingEdges, - leavesOnly, - result, - this.circular - ); - // Find all potential starting points (nodes with nothing depending on them) an - // run a DFS starting at these points to get the order - keys - .filter(function(node) { - return self.incomingEdges[node].length === 0; - }) - .forEach(function(n) { - DFS(n); - }); - - // If we're allowing cycles - we need to run the DFS against any remaining - // nodes that did not end up in the initial result (as they are part of a - // subgraph that does not have a clear starting point) - if (this.circular) { - keys - .filter(function(node) { - return result.indexOf(node) === -1; - }) - .forEach(function(n) { - DFS(n); - }); - } - - return result; - } - }, - - mapNodes(mapper) { - - } -}; - -/** - * Cycle error, including the path of the cycle. - */ -var DepGraphCycleError = (exports.DepGraphCycleError = function(cyclePath) { - var message = "Dependency Cycle Found: " + cyclePath.join(" -> "); - var instance = new Error(message); - instance.cyclePath = cyclePath; - Object.setPrototypeOf(instance, Object.getPrototypeOf(this)); - if (Error.captureStackTrace) { - Error.captureStackTrace(instance, DepGraphCycleError); - } - return instance; -}); -DepGraphCycleError.prototype = Object.create(Error.prototype, { - constructor: { - value: Error, - enumerable: false, - writable: true, - configurable: true - } -}); -Object.setPrototypeOf(DepGraphCycleError, Error); - -export default DepGraph; \ No newline at end of file diff --git a/server/src/lib/DynamicFilter/DynamicFilter.ts b/server/src/lib/DynamicFilter/DynamicFilter.ts deleted file mode 100644 index 92dca7203..000000000 --- a/server/src/lib/DynamicFilter/DynamicFilter.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { forEach, uniqBy } from 'lodash'; -import DynamicFilterAbstructor from './DynamicFilterAbstructor'; -import { IDynamicFilter, IFilterRole, IModel } from 'interfaces'; - -export default class DynamicFilter extends DynamicFilterAbstructor{ - private model: IModel; - private tableName: string; - private dynamicFilters: IDynamicFilter[]; - - /** - * Constructor. - * @param {String} tableName - - */ - constructor(model) { - super(); - - this.model = model; - this.tableName = model.tableName; - this.dynamicFilters = []; - } - - /** - * Registers the given dynamic filter. - * @param {IDynamicFilter} filterRole - Filter role. - */ - public setFilter = (dynamicFilter: IDynamicFilter) => { - dynamicFilter.setModel(this.model); - - dynamicFilter.onInitialize(); - - this.dynamicFilters.push(dynamicFilter); - } - - /** - * Retrieve dynamic filter build queries. - * @returns - */ - private dynamicFiltersBuildQuery = () => { - return this.dynamicFilters.map((filter) => { - return filter.buildQuery() - }); - } - - /** - * Retrieve dynamic filter roles. - * @returns {IFilterRole[]} - */ - private dynamicFilterTableColumns = (): IFilterRole[] => { - const localFilterRoles = []; - - this.dynamicFilters.forEach((dynamicFilter) => { - const { filterRoles } = dynamicFilter; - - localFilterRoles.push( - ...(Array.isArray(filterRoles) ? filterRoles : [filterRoles]) - ); - }); - return localFilterRoles; - } - - /** - * Builds queries of filter roles. - */ - public buildQuery = () => { - const buildersCallbacks = this.dynamicFiltersBuildQuery(); - const tableColumns = this.dynamicFilterTableColumns(); - - return (builder) => { - buildersCallbacks.forEach((builderCallback) => { - builderCallback(builder); - }); - this.buildFilterRolesJoins(builder); - }; - } - - /** - * Retrieve response metadata from all filters adapters. - */ - public getResponseMeta = () => { - const responseMeta = {}; - - this.dynamicFilters.forEach((filter) => { - const { responseMeta: filterMeta } = filter; - - forEach(filterMeta, (value, key) => { - responseMeta[key] = value; - }); - }); - return responseMeta; - } -} diff --git a/server/src/lib/DynamicFilter/DynamicFilterAbstructor.ts b/server/src/lib/DynamicFilter/DynamicFilterAbstructor.ts deleted file mode 100644 index 3b3f6dee1..000000000 --- a/server/src/lib/DynamicFilter/DynamicFilterAbstructor.ts +++ /dev/null @@ -1,50 +0,0 @@ - -export default class DynamicFilterAbstructor { - /** - * Extract relation table name from relation. - * @param {String} column - - * @return {String} - join relation table. - */ - protected getTableFromRelationColumn = (column: string) => { - const splitedColumn = column.split('.'); - return splitedColumn.length > 0 ? splitedColumn[0] : ''; - }; - - /** - * Builds view roles join queries. - * @param {String} tableName - Table name. - * @param {Array} roles - Roles. - */ - protected buildFilterRolesJoins = (builder) => { - this.dynamicFilters.forEach((dynamicFilter) => { - const relationsFields = dynamicFilter.relationFields; - - this.buildFieldsJoinQueries(builder, relationsFields); - }); - }; - - /** - * Builds join queries of fields. - * @param builder - - * @param {string[]} fieldsRelations - - */ - private buildFieldsJoinQueries = (builder, fieldsRelations: string[]) => { - fieldsRelations.forEach((fieldRelation) => { - const relation = this.model.relationMappings[fieldRelation]; - - if (relation) { - const splitToRelation = relation.join.to.split('.'); - const relationTable = splitToRelation[0] || ''; - - builder.join(relationTable, relation.join.from, '=', relation.join.to); - } - }); - }; - - /** - * Retrieve the dynamic filter mode. - */ - protected getModel() { - return this.model; - } -} diff --git a/server/src/lib/DynamicFilter/DynamicFilterAdvancedFilter.ts b/server/src/lib/DynamicFilter/DynamicFilterAdvancedFilter.ts deleted file mode 100644 index f3dd5c79b..000000000 --- a/server/src/lib/DynamicFilter/DynamicFilterAdvancedFilter.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { IFilterRole } from 'interfaces'; -import DynamicFilterFilterRoles from './DynamicFilterFilterRoles'; - -export default class DynamicFilterAdvancedFilter extends DynamicFilterFilterRoles { - private filterRoles: IFilterRole[]; - - /** - * Constructor method. - * @param {Array} filterRoles - - * @param {Array} resourceFields - - */ - constructor(filterRoles: IFilterRole[]) { - super(); - - this.filterRoles = filterRoles; - this.setResponseMeta(); - } - - /** - * Sets response meta. - */ - private setResponseMeta() { - this.responseMeta = { - filterRoles: this.filterRoles, - }; - } -} diff --git a/server/src/lib/DynamicFilter/DynamicFilterFilterRoles.ts b/server/src/lib/DynamicFilter/DynamicFilterFilterRoles.ts deleted file mode 100644 index 0588af494..000000000 --- a/server/src/lib/DynamicFilter/DynamicFilterFilterRoles.ts +++ /dev/null @@ -1,52 +0,0 @@ -import DynamicFilterRoleAbstructor from './DynamicFilterRoleAbstructor'; -import { IFilterRole } from 'interfaces'; - -export default class FilterRoles extends DynamicFilterRoleAbstructor { - private filterRoles: IFilterRole[]; - - /** - * On initialize filter roles. - */ - public onInitialize() { - super.onInitialize(); - this.setFilterRolesRelations(); - } - - /** - * Builds filter roles logic expression. - * @return {string} - */ - private buildLogicExpression(): string { - let expression = ''; - - this.filterRoles.forEach((role, index) => { - expression += - index === 0 ? `${role.index} ` : `${role.condition} ${role.index} `; - }); - return expression.trim(); - } - - /** - * Builds database query of view roles. - */ - protected buildQuery() { - const logicExpression = this.buildLogicExpression(); - - return (builder) => { - this.buildFilterQuery( - this.model, - this.filterRoles, - logicExpression - )(builder); - }; - } - - /** - * Sets filter roles relations if field was relation type. - */ - private setFilterRolesRelations() { - this.filterRoles.forEach((relationRole) => { - this.setRelationIfRelationField(relationRole.fieldKey); - }); - } -} diff --git a/server/src/lib/DynamicFilter/DynamicFilterQueryParser.ts b/server/src/lib/DynamicFilter/DynamicFilterQueryParser.ts deleted file mode 100644 index 931ec90a0..000000000 --- a/server/src/lib/DynamicFilter/DynamicFilterQueryParser.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { OPERATION } from 'lib/LogicEvaluation/Parser'; - -export default class QueryParser { - - constructor(tree, queries) { - this.tree = tree; - this.queries = queries; - this.query = null; - } - - setQuery(query) { - this.query = query.clone(); - } - - parse() { - return this.parseNode(this.tree); - } - - parseNode(node) { - if (typeof node === 'string') { - const nodeQuery = this.getQuery(node); - return (query) => { nodeQuery(query); }; - } - if (OPERATION[node.operation] === undefined) { - throw new Error(`unknow expression ${node.operation}`); - } - const leftQuery = this.getQuery(node.left); - const rightQuery = this.getQuery(node.right); - - switch (node.operation) { - case '&&': - case 'AND': - default: - return (nodeQuery) => nodeQuery.where((query) => { - query.where((q) => { leftQuery(q); }); - query.andWhere((q) => { rightQuery(q); }); - }); - case '||': - case 'OR': - return (nodeQuery) => nodeQuery.where((query) => { - query.where((q) => { leftQuery(q); }); - query.orWhere((q) => { rightQuery(q); }); - }); - } - } - - getQuery(node) { - if (typeof node !== 'string' && node !== null) { - return this.parseNode(node); - } - const value = parseFloat(node); - - if (!isNaN(value)) { - if (typeof this.queries[node] === 'undefined') { - throw new Error(`unknow query under index ${node}`); - } - return this.queries[node]; - } - return null; - } -} \ No newline at end of file diff --git a/server/src/lib/DynamicFilter/DynamicFilterRoleAbstructor.ts b/server/src/lib/DynamicFilter/DynamicFilterRoleAbstructor.ts deleted file mode 100644 index fddc7ecb4..000000000 --- a/server/src/lib/DynamicFilter/DynamicFilterRoleAbstructor.ts +++ /dev/null @@ -1,387 +0,0 @@ -import moment from 'moment'; -import * as R from 'ramda'; -import { IFilterRole, IDynamicFilter, IModel } from 'interfaces'; -import { Lexer } from 'lib/LogicEvaluation/Lexer'; -import Parser from 'lib/LogicEvaluation/Parser'; -import DynamicFilterQueryParser from './DynamicFilterQueryParser'; -import { COMPARATOR_TYPE, FIELD_TYPE } from './constants'; - -export default abstract class DynamicFilterAbstructor - implements IDynamicFilter -{ - protected filterRoles: IFilterRole[] = []; - protected tableName: string; - protected model: IModel; - protected responseMeta: { [key: string]: any } = {}; - public relationFields = []; - - /** - * Sets model the dynamic filter service. - * @param {IModel} model - */ - public setModel(model: IModel) { - this.model = model; - this.tableName = model.tableName; - } - - /** - * Transformes filter roles to map by index. - * @param {IModel} model - * @param {IFilterRole[]} roles - * @returns - */ - protected convertRolesMapByIndex = (model, roles) => { - const rolesIndexSet = {}; - - roles.forEach((role) => { - rolesIndexSet[role.index] = this.buildRoleQuery(model, role); - }); - return rolesIndexSet; - }; - - /** - * Builds database query from stored view roles. - * @param {Array} roles - - * @return {Function} - */ - protected buildFilterRolesQuery = ( - model: IModel, - roles: IFilterRole[], - logicExpression: string = '' - ) => { - const rolesIndexSet = this.convertRolesMapByIndex(model, roles); - - // Lexer for logic expression. - const lexer = new Lexer(logicExpression); - const tokens = lexer.getTokens(); - - // Parse the logic expression. - const parser = new Parser(tokens); - const parsedTree = parser.parse(); - - const queryParser = new DynamicFilterQueryParser(parsedTree, rolesIndexSet); - - return queryParser.parse(); - }; - - /** - * Parses the logic expression to base expression. - * @param {string} logicExpression - - * @return {string} - */ - private parseLogicExpression(logicExpression: string): string { - return R.compose( - R.replace(/or|OR/g, '||'), - R.replace(/and|AND/g, '&&'), - )(logicExpression); - } - - /** - * Builds filter query for query builder. - * @param {String} tableName - Table name. - * @param {Array} roles - Filter roles. - * @param {String} logicExpression - Logic expression. - */ - protected buildFilterQuery = ( - model: IModel, - roles: IFilterRole[], - logicExpression: string - ) => { - const basicExpression = this.parseLogicExpression(logicExpression); - - return (builder) => { - this.buildFilterRolesQuery(model, roles, basicExpression)(builder); - }; - }; - - /** - * Retrieve relation column of comparator fieldز - */ - private getFieldComparatorRelationColumn(field) { - const relation = this.model.relationMappings[field.relationKey]; - - if (relation) { - const relationModel = relation.modelClass; - const relationColumn = - field.relationEntityKey === 'id' - ? 'id' - : relationModel.getField(field.relationEntityKey, 'column'); - - return `${relationModel.tableName}.${relationColumn}`; - } - } - - /** - * Retrieve the comparator field column. - * @param {IModel} model - - * @param {} - - */ - private getFieldComparatorColumn = (field) => { - return field.fieldType === FIELD_TYPE.RELATION - ? this.getFieldComparatorRelationColumn(field) - : `${this.tableName}.${field.column}`; - }; - - /** - * Builds roles queries. - * @param {IModel} model - - * @param {Object} role - - */ - protected buildRoleQuery = (model: IModel, role: IFilterRole) => { - const field = model.getField(role.fieldKey); - const comparatorColumn = this.getFieldComparatorColumn(field); - - // Field relation custom query. - if (typeof field.filterCustomQuery !== 'undefined') { - return (builder) => { - field.filterCustomQuery(builder, role); - }; - } - switch (field.fieldType) { - case FIELD_TYPE.BOOLEAN: - case FIELD_TYPE.ENUMERATION: - return this.booleanRoleQueryBuilder(role, comparatorColumn); - case FIELD_TYPE.NUMBER: - return this.numberRoleQueryBuilder(role, comparatorColumn); - case FIELD_TYPE.DATE: - return this.dateQueryBuilder(role, comparatorColumn); - case FIELD_TYPE.TEXT: - default: - return this.textRoleQueryBuilder(role, comparatorColumn); - } - }; - - /** - * Boolean column query builder. - * @param {IFilterRole} role - * @param {string} comparatorColumn - * @returns - */ - protected booleanRoleQueryBuilder = ( - role: IFilterRole, - comparatorColumn: string - ) => { - switch (role.comparator) { - case COMPARATOR_TYPE.EQUALS: - case COMPARATOR_TYPE.EQUAL: - case COMPARATOR_TYPE.IS: - default: - return (builder) => { - builder.where(comparatorColumn, '=', role.value); - }; - case COMPARATOR_TYPE.NOT_EQUAL: - case COMPARATOR_TYPE.NOT_EQUALS: - case COMPARATOR_TYPE.IS_NOT: - return (builder) => { - builder.where(comparatorColumn, '<>', role.value); - }; - } - }; - - /** - * Numeric column query builder. - * @param {IFilterRole} role - * @param {string} comparatorColumn - * @returns - */ - protected numberRoleQueryBuilder = ( - role: IFilterRole, - comparatorColumn: string - ) => { - switch (role.comparator) { - case COMPARATOR_TYPE.EQUALS: - case COMPARATOR_TYPE.EQUAL: - default: - return (builder) => { - builder.where(comparatorColumn, '=', role.value); - }; - case COMPARATOR_TYPE.NOT_EQUAL: - case COMPARATOR_TYPE.NOT_EQUALS: - return (builder) => { - builder.whereNot(comparatorColumn, role.value); - }; - case COMPARATOR_TYPE.BIGGER_THAN: - case COMPARATOR_TYPE.BIGGER: - return (builder) => { - builder.where(comparatorColumn, '>', role.value); - }; - case COMPARATOR_TYPE.BIGGER_OR_EQUALS: - return (builder) => { - builder.where(comparatorColumn, '>=', role.value); - }; - case COMPARATOR_TYPE.SMALLER_THAN: - case COMPARATOR_TYPE.SMALLER: - return (builder) => { - builder.where(comparatorColumn, '<', role.value); - }; - case COMPARATOR_TYPE.SMALLER_OR_EQUALS: - return (builder) => { - builder.where(comparatorColumn, '<=', role.value); - }; - } - }; - - /** - * Text column query builder. - * @param {IFilterRole} role - * @param {string} comparatorColumn - * @returns {Function} - */ - protected textRoleQueryBuilder = ( - role: IFilterRole, - comparatorColumn: string - ) => { - switch (role.comparator) { - case COMPARATOR_TYPE.EQUAL: - case COMPARATOR_TYPE.EQUALS: - case COMPARATOR_TYPE.IS: - default: - return (builder) => { - builder.where(comparatorColumn, role.value); - }; - case COMPARATOR_TYPE.NOT_EQUALS: - case COMPARATOR_TYPE.NOT_EQUAL: - case COMPARATOR_TYPE.IS_NOT: - return (builder) => { - builder.whereNot(comparatorColumn, role.value); - }; - case COMPARATOR_TYPE.CONTAIN: - case COMPARATOR_TYPE.CONTAINS: - return (builder) => { - builder.where(comparatorColumn, 'LIKE', `%${role.value}%`); - }; - case COMPARATOR_TYPE.NOT_CONTAIN: - case COMPARATOR_TYPE.NOT_CONTAINS: - return (builder) => { - builder.whereNot(comparatorColumn, 'LIKE', `%${role.value}%`); - }; - case COMPARATOR_TYPE.STARTS_WITH: - case COMPARATOR_TYPE.START_WITH: - return (builder) => { - builder.where(comparatorColumn, 'LIKE', `${role.value}%`); - }; - case COMPARATOR_TYPE.ENDS_WITH: - case COMPARATOR_TYPE.END_WITH: - return (builder) => { - builder.where(comparatorColumn, 'LIKE', `%${role.value}`); - }; - - } - }; - - /** - * Date column query builder. - * @param {IFilterRole} role - * @param {string} comparatorColumn - * @returns {Function} - */ - protected dateQueryBuilder = ( - role: IFilterRole, - comparatorColumn: string - ) => { - switch (role.comparator) { - case COMPARATOR_TYPE.AFTER: - case COMPARATOR_TYPE.BEFORE: - return (builder) => { - this.dateQueryAfterBeforeComparator(role, comparatorColumn, builder); - }; - case COMPARATOR_TYPE.IN: - return (builder) => { - this.dateQueryInComparator(role, comparatorColumn, builder); - }; - } - }; - - /** - * Date query 'IN' comparator type. - * @param {IFilterRole} role - * @param {string} comparatorColumn - * @param builder - */ - protected dateQueryInComparator = ( - role: IFilterRole, - comparatorColumn: string, - builder - ) => { - const hasTimeFormat = moment( - role.value, - 'YYYY-MM-DD HH:MM', - true - ).isValid(); - const dateFormat = 'YYYY-MM-DD HH:MM:SS'; - - if (hasTimeFormat) { - const targetDateTime = moment(role.value).format(dateFormat); - builder.where(comparatorColumn, '=', targetDateTime); - } else { - const startDate = moment(role.value).startOf('day'); - const endDate = moment(role.value).endOf('day'); - - builder.where(comparatorColumn, '>=', startDate.format(dateFormat)); - builder.where(comparatorColumn, '<=', endDate.format(dateFormat)); - } - }; - - /** - * Date query after/before comparator type. - * @param {IFilterRole} role - * @param {string} comparatorColumn - Column. - * @param builder - */ - protected dateQueryAfterBeforeComparator = ( - role: IFilterRole, - comparatorColumn: string, - builder - ) => { - const comparator = role.comparator === COMPARATOR_TYPE.BEFORE ? '<' : '>'; - const hasTimeFormat = moment( - role.value, - 'YYYY-MM-DD HH:MM', - true - ).isValid(); - const targetDate = moment(role.value); - const dateFormat = 'YYYY-MM-DD HH:MM:SS'; - - if (!hasTimeFormat) { - if (role.comparator === COMPARATOR_TYPE.BEFORE) { - targetDate.startOf('day'); - } else { - targetDate.endOf('day'); - } - } - const comparatorValue = targetDate.format(dateFormat); - builder.where(comparatorColumn, comparator, comparatorValue); - }; - - /** - * Registers relation field if the given field was relation type - * and not registered. - * @param {string} fieldKey - Field key. - */ - protected setRelationIfRelationField = (fieldKey: string): void => { - const field = this.model.getField(fieldKey); - const isAlreadyRegistered = this.relationFields.some( - (field) => field === fieldKey - ); - - if ( - !isAlreadyRegistered && - field && - field.fieldType === FIELD_TYPE.RELATION - ) { - this.relationFields.push(field.relationKey); - } - }; - - /** - * Retrieve the model. - */ - getModel() { - return this.model; - } - - /** - * On initialize the registered dynamic filter. - */ - onInitialize() {} -} diff --git a/server/src/lib/DynamicFilter/DynamicFilterSearch.ts b/server/src/lib/DynamicFilter/DynamicFilterSearch.ts deleted file mode 100644 index 7c010882a..000000000 --- a/server/src/lib/DynamicFilter/DynamicFilterSearch.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { IFilterRole } from 'interfaces'; -import DynamicFilterFilterRoles from './DynamicFilterFilterRoles'; - -export default class DynamicFilterSearch extends DynamicFilterFilterRoles { - private searchKeyword: string; - private filterRoles: IFilterRole[]; - - /** - * Constructor method. - * @param {string} searchKeyword - Search keyword. - */ - constructor(searchKeyword: string) { - super(); - this.searchKeyword = searchKeyword; - } - - /** - * On initialize the dynamic filter. - */ - public onInitialize() { - super.onInitialize(); - this.filterRoles = this.getModelSearchFilterRoles(this.searchKeyword); - } - - /** - * Retrieve the filter roles from model search roles. - * @param {string} searchKeyword - * @returns {IFilterRole[]} - */ - private getModelSearchFilterRoles(searchKeyword: string): IFilterRole[] { - const model = this.getModel(); - - return model.searchRoles.map((searchRole, index) => ({ - ...searchRole, - value: searchKeyword, - index: index + 1, - })); - } - - /** - * - */ - setResponseMeta() { - this.responseMeta = { - searchKeyword: this.searchKeyword, - }; - } -} diff --git a/server/src/lib/DynamicFilter/DynamicFilterSortBy.ts b/server/src/lib/DynamicFilter/DynamicFilterSortBy.ts deleted file mode 100644 index 433211481..000000000 --- a/server/src/lib/DynamicFilter/DynamicFilterSortBy.ts +++ /dev/null @@ -1,92 +0,0 @@ -import DynamicFilterRoleAbstructor from 'lib/DynamicFilter/DynamicFilterRoleAbstructor'; -import { FIELD_TYPE } from './constants'; - -interface ISortRole { - fieldKey: string; - order: string; -} - -export default class DynamicFilterSortBy extends DynamicFilterRoleAbstructor { - private sortRole: ISortRole = {}; - - /** - * Constructor method. - * @param {string} sortByFieldKey - * @param {string} sortDirection - */ - constructor(sortByFieldKey: string, sortDirection: string) { - super(); - - this.sortRole = { - fieldKey: sortByFieldKey, - order: sortDirection, - }; - this.setResponseMeta(); - } - - /** - * On initialize the dyanmic sort by. - */ - public onInitialize() { - this.setRelationIfRelationField(this.sortRole.fieldKey); - } - - /** - * Retrieve field comparator relatin column. - * @param field - * @returns {string} - */ - private getFieldComparatorRelationColumn = (field): string => { - const relation = this.model.relationMappings[field.relationKey]; - - if (relation) { - const relationModel = relation.modelClass; - const relationField = relationModel.getField(field.relationEntityLabel); - - return `${relationModel.tableName}.${relationField.column}`; - } - return ''; - }; - - /** - * Retrieve the comparator field column. - * @param {IModel} field - * @returns {string} - */ - private getFieldComparatorColumn = (field): string => { - return field.fieldType === FIELD_TYPE.RELATION - ? this.getFieldComparatorRelationColumn(field) - : `${this.tableName}.${field.column}`; - }; - - /** - * Builds database query of sort by column on the given direction. - */ - public buildQuery = () => { - const field = this.model.getField(this.sortRole.fieldKey); - const comparatorColumn = this.getFieldComparatorColumn(field); - - // Sort custom query. - if (typeof field.sortCustomQuery !== 'undefined') { - return (builder) => { - field.sortCustomQuery(builder, this.sortRole); - }; - } - - return (builder) => { - if (this.sortRole.fieldKey) { - builder.orderBy(`${comparatorColumn}`, this.sortRole.order); - } - }; - }; - - /** - * Sets response meta. - */ - public setResponseMeta() { - this.responseMeta = { - sortOrder: this.sortRole.fieldKey, - sortBy: this.sortRole.order, - }; - } -} diff --git a/server/src/lib/DynamicFilter/DynamicFilterViews.ts b/server/src/lib/DynamicFilter/DynamicFilterViews.ts deleted file mode 100644 index c3fe2f3b1..000000000 --- a/server/src/lib/DynamicFilter/DynamicFilterViews.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { omit } from 'lodash'; -import { IView, IViewRole } from 'interfaces'; -import DynamicFilterRoleAbstructor from './DynamicFilterRoleAbstructor'; - -export default class DynamicFilterViews extends DynamicFilterRoleAbstructor { - private viewSlug: string; - private logicExpression: string; - private filterRoles: IViewRole[]; - private viewColumns = []; - - /** - * Constructor method. - * @param {IView} view - - */ - constructor(view: IView) { - super(); - - this.viewSlug = view.slug; - this.filterRoles = view.roles; - this.viewColumns = view.columns; - this.logicExpression = view.rolesLogicExpression - .replace('AND', '&&') - .replace('OR', '||'); - - this.setResponseMeta(); - } - - /** - * Builds database query of view roles. - */ - public buildQuery() { - return (builder) => { - this.buildFilterQuery( - this.model, - this.filterRoles, - this.logicExpression - )(builder); - }; - } - - /** - * Sets response meta. - */ - public setResponseMeta() { - this.responseMeta = { - view: { - logicExpression: this.logicExpression, - filterRoles: this.filterRoles.map((filterRole) => ({ - ...omit(filterRole, ['id', 'viewId']), - })), - viewSlug: this.viewSlug, - viewColumns: this.viewColumns, - }, - }; - } -} diff --git a/server/src/lib/DynamicFilter/constants.ts b/server/src/lib/DynamicFilter/constants.ts deleted file mode 100644 index f845e16c9..000000000 --- a/server/src/lib/DynamicFilter/constants.ts +++ /dev/null @@ -1,43 +0,0 @@ -export const COMPARATOR_TYPE = { - EQUAL: 'equal', - EQUALS: 'equals', - - NOT_EQUAL: 'not_equal', - NOT_EQUALS: 'not_equals', - - BIGGER_THAN: 'bigger_than', - BIGGER: 'bigger', - BIGGER_OR_EQUALS: 'bigger_or_equals', - - SMALLER_THAN: 'smaller_than', - SMALLER: 'smaller', - SMALLER_OR_EQUALS: 'smaller_or_equals', - - IS: 'is', - IS_NOT: 'is_not', - - CONTAINS: 'contains', - CONTAIN: 'contain', - NOT_CONTAINS: 'contains', - NOT_CONTAIN: 'contain', - - AFTER: 'after', - BEFORE: 'before', - IN: 'in', - - STARTS_WITH: 'starts_with', - START_WITH: 'start_with', - - ENDS_WITH: 'ends_with', - END_WITH: 'end_with' -}; - -export const FIELD_TYPE = { - TEXT: 'text', - NUMBER: 'number', - ENUMERATION: 'enumeration', - BOOLEAN: 'boolean', - RELATION: 'relation', - DATE: 'date', - COMPUTED: 'computed' -}; diff --git a/server/src/lib/DynamicFilter/index.js b/server/src/lib/DynamicFilter/index.js deleted file mode 100644 index 10cc6221c..000000000 --- a/server/src/lib/DynamicFilter/index.js +++ /dev/null @@ -1,13 +0,0 @@ - - -import DynamicFilter from './DynamicFilter'; -import DynamicFilterSortBy from './DynamicFilterSortBy'; -import DynamicFilterViews from './DynamicFilterViews'; -import DynamicFilterFilterRoles from './DynamicFilterFilterRoles'; - -export { - DynamicFilter, - DynamicFilterSortBy, - DynamicFilterViews, - DynamicFilterFilterRoles, -}; \ No newline at end of file diff --git a/server/src/lib/KnexFactory/index.js b/server/src/lib/KnexFactory/index.js deleted file mode 100644 index 866af6eae..000000000 --- a/server/src/lib/KnexFactory/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const { extend, isFunction, isObject } = require('lodash'); - -export default class KnexFactory { - - constructor(knex) { - this.knex = knex; - - this.factories = []; - } - - define(name, tableName, defaultAttributes) { - this.factories[name] = { tableName, defaultAttributes }; - } - - async build(factoryName, attributes) { - const factory = this.factories[factoryName]; - - if (!factory) { - throw `Unkown factory: ${factoryName}`; - } - let { defaultAttributes } = factory; - const insertData = {}; - - if( 'function' === typeof defaultAttributes) { - defaultAttributes = await defaultAttributes(); - } - extend(insertData, defaultAttributes, attributes); - - for (let k in insertData) { - const v = insertData[k]; - - if (isFunction(v)) { - insertData[k] = await v(); - } else { - insertData[k] = await v; - } - if (isObject(insertData[k]) && insertData[k].id) { - insertData[k] = insertData[k].id; - } - }; - - return insertData; - } - - async create(factoryName, attributes) { - const factory = this.factories[factoryName]; - const insertData = await this.build(factoryName, attributes); - const { tableName } = factory; - - const [id] = await this.knex(tableName).insert(insertData); - const record = await this.knex(tableName).where({ id }).first(); - - return record; - } -} \ No newline at end of file diff --git a/server/src/lib/LogicEvaluation/Lexer.js b/server/src/lib/LogicEvaluation/Lexer.js deleted file mode 100644 index 3cfc04f41..000000000 --- a/server/src/lib/LogicEvaluation/Lexer.js +++ /dev/null @@ -1,172 +0,0 @@ - -const OperationType = { - LOGIC: 'LOGIC', - STRING: 'STRING', - COMPARISON: 'COMPARISON', - MATH: 'MATH', -}; - -export class Lexer { - // operation table - static get optable() { - return { - '=': OperationType.LOGIC, - '&': OperationType.LOGIC, - '|': OperationType.LOGIC, - '?': OperationType.LOGIC, - ':': OperationType.LOGIC, - - '\'': OperationType.STRING, - '"': OperationType.STRING, - - '!': OperationType.COMPARISON, - '>': OperationType.COMPARISON, - '<': OperationType.COMPARISON, - - '(': OperationType.MATH, - ')': OperationType.MATH, - '+': OperationType.MATH, - '-': OperationType.MATH, - '*': OperationType.MATH, - '/': OperationType.MATH, - '%': OperationType.MATH, - }; - } - - /** - * Constructor - * @param {*} expression - - */ - constructor(expression) { - this.currentIndex = 0; - this.input = expression; - this.tokenList = []; - } - - getTokens() { - let tok; - do { - // read current token, so step should be -1 - tok = this.pickNext(-1); - const pos = this.currentIndex; - switch (Lexer.optable[tok]) { - case OperationType.LOGIC: - // == && || === - this.readLogicOpt(tok); - break; - - case OperationType.STRING: - this.readString(tok); - break; - - case OperationType.COMPARISON: - this.readCompare(tok); - break; - - case OperationType.MATH: - this.receiveToken(); - break; - - default: - this.readValue(tok); - } - - // if the pos not changed, this loop will go into a infinite loop, every step of while loop, - // we must move the pos forward - // so here we should throw error, for example `1 & 2` - if (pos === this.currentIndex && tok !== undefined) { - const err = new Error(`unkonw token ${tok} from input string ${this.input}`); - err.name = 'UnknowToken'; - throw err; - } - } while (tok !== undefined) - - return this.tokenList; - } - - /** - * read next token, the index param can set next step, default go foward 1 step - * - * @param index next postion - */ - pickNext(index = 0) { - return this.input[index + this.currentIndex + 1]; - } - - /** - * Store token into result tokenList, and move the pos index - * - * @param index - */ - receiveToken(index = 1) { - const tok = this.input.slice(this.currentIndex, this.currentIndex + index).trim(); - // skip empty string - if (tok) { - this.tokenList.push(tok); - } - - this.currentIndex += index; - } - - // ' or " - readString(tok) { - let next; - let index = 0; - do { - next = this.pickNext(index); - index += 1; - } while (next !== tok && next !== undefined); - this.receiveToken(index + 1); - } - - // > or < or >= or <= or !== - // tok in (>, <, !) - readCompare(tok) { - if (this.pickNext() !== '=') { - this.receiveToken(1); - return; - } - // !== - if (tok === '!' && this.pickNext(1) === '=') { - this.receiveToken(3); - return; - } - this.receiveToken(2); - } - - // === or == - // && || - readLogicOpt(tok) { - if (this.pickNext() === tok) { - // === - if (tok === '=' && this.pickNext(1) === tok) { - return this.receiveToken(3); - } - // == && || - return this.receiveToken(2); - } - // handle as && - // a ? b : c is equal to a && b || c - if (tok === '?' || tok === ':') { - return this.receiveToken(1); - } - } - - readValue(tok) { - if (!tok) { - return; - } - - let index = 0; - while (!Lexer.optable[tok] && tok !== undefined) { - tok = this.pickNext(index); - index += 1; - } - this.receiveToken(index); - } -} - -export default function token(expression) { - const lexer = new Lexer(expression); - return lexer.getTokens(); -} diff --git a/server/src/lib/LogicEvaluation/Parser.js b/server/src/lib/LogicEvaluation/Parser.js deleted file mode 100644 index 8e7156592..000000000 --- a/server/src/lib/LogicEvaluation/Parser.js +++ /dev/null @@ -1,159 +0,0 @@ -export const OPERATION = { - '!': 5, - '*': 4, - '/': 4, - '%': 4, - '+': 3, - '-': 3, - '>': 2, - '<': 2, - '>=': 2, - '<=': 2, - '===': 2, - '!==': 2, - '==': 2, - '!=': 2, - '&&': 1, - '||': 1, - '?': 1, - ':': 1, -}; - -// export interface Node { -// left: Node | string | null; -// right: Node | string | null; -// operation: string; -// grouped?: boolean; -// }; - -export default class Parser { - - constructor(token) { - this.index = -1; - this.blockLevel = 0; - this.token = token; - } - - /** - * - * @return {Node | string} =- - */ - parse() { - let tok; - let root = { - left: null, - right: null, - operation: null, - }; - - do { - tok = this.parseStatement(); - - if (tok === null || tok === undefined) { - break; - } - - if (root.left === null) { - root.left = tok; - root.operation = this.nextToken(); - - if (!root.operation) { - return tok; - } - - root.right = this.parseStatement(); - } else { - if (typeof tok !== 'string') { - throw new Error('operation must be string, but get ' + JSON.stringify(tok)); - } - root = this.addNode(tok, this.parseStatement(), root); - } - } while (tok); - - return root; - } - - nextToken() { - this.index += 1; - return this.token[this.index]; - } - - prevToken() { - return this.token[this.index - 1]; - } - - /** - * - * @param {string} operation - * @param {Node|String|null} right - * @param {Node} root - */ - addNode(operation, right, root) { - let pre = root; - - if (this.compare(pre.operation, operation) < 0 && !pre.grouped) { - - while (pre.right !== null && - typeof pre.right !== 'string' && - this.compare(pre.right.operation, operation) < 0 && !pre.right.grouped) { - pre = pre.right; - } - - pre.right = { - operation, - left: pre.right, - right, - }; - return root; - } - return { - left: pre, - right, - operation, - } - } - - /** - * - * @param {String} a - * @param {String} b - */ - compare(a, b) { - if (!OPERATION.hasOwnProperty(a) || !OPERATION.hasOwnProperty(b)) { - throw new Error(`unknow operation ${a} or ${b}`); - } - return OPERATION[a] - OPERATION[b]; - } - - /** - * @return string | Node | null - */ - parseStatement() { - const token = this.nextToken(); - if (token === '(') { - this.blockLevel += 1; - const node = this.parse(); - this.blockLevel -= 1; - - if (typeof node !== 'string') { - node.grouped = true; - } - return node; - } - - if (token === ')') { - return null; - } - - if (token === '!') { - return { left: null, operation: token, right: this.parseStatement() } - } - - // 3 > -12 or -12 + 10 - if (token === '-' && (OPERATION[this.prevToken()] > 0 || this.prevToken() === undefined)) { - return { left: '0', operation: token, right: this.parseStatement(), grouped: true }; - } - - return token; - } -} diff --git a/server/src/lib/LogicEvaluation/QueryParser.js b/server/src/lib/LogicEvaluation/QueryParser.js deleted file mode 100644 index cd31c128d..000000000 --- a/server/src/lib/LogicEvaluation/QueryParser.js +++ /dev/null @@ -1,61 +0,0 @@ -import { OPERATION } from './Parser'; - -export default class QueryParser { - - constructor(tree, queries) { - this.tree = tree; - this.queries = queries; - this.query = null; - } - - setQuery(query) { - this.query = query.clone(); - } - - parse() { - return this.parseNode(this.tree); - } - - parseNode(node) { - if (typeof node === 'string') { - const nodeQuery = this.getQuery(node); - return (query) => { nodeQuery(query); }; - } - if (OPERATION[node.operation] === undefined) { - throw new Error(`unknow expression ${node.operation}`); - } - const leftQuery = this.getQuery(node.left); - const rightQuery = this.getQuery(node.right); - - switch (node.operation) { - case '&&': - case 'AND': - default: - return (nodeQuery) => nodeQuery.where((query) => { - query.where((q) => { leftQuery(q); }); - query.andWhere((q) => { rightQuery(q); }); - }); - case '||': - case 'OR': - return (nodeQuery) => nodeQuery.where((query) => { - query.where((q) => { leftQuery(q); }); - query.orWhere((q) => { rightQuery(q); }); - }); - } - } - - getQuery(node) { - if (typeof node !== 'string' && node !== null) { - return this.parseNode(node); - } - const value = parseFloat(node); - - if (!isNaN(value)) { - if (typeof this.queries[node] === 'undefined') { - throw new Error(`unknow query under index ${node}`); - } - return this.queries[node]; - } - return null; - } -} \ No newline at end of file diff --git a/server/src/lib/LogicEvaluation/index.js b/server/src/lib/LogicEvaluation/index.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/server/src/lib/Mail/index.ts b/server/src/lib/Mail/index.ts deleted file mode 100644 index 424b5f298..000000000 --- a/server/src/lib/Mail/index.ts +++ /dev/null @@ -1,102 +0,0 @@ -import fs from 'fs'; -import Mustache from 'mustache'; -import { Container } from 'typedi'; -import path from 'path'; -import { IMailable } from 'interfaces'; - -export default class Mail{ - view: string; - subject: string; - to: string; - from: string = `${process.env.MAIL_FROM_NAME} ${process.env.MAIL_FROM_ADDRESS}`; - data: { [key: string]: string | number }; - - /** - * Mail options. - */ - private get mailOptions() { - return { - to: this.to, - from: this.from, - subject: this.subject, - html: this.render(this.data), - }; - } - - /** - * Sends the given mail to the target address. - */ - public send() { - return new Promise((resolve, reject) => { - const Mail = Container.get('mail'); - - Mail.sendMail(this.mailOptions, (error) => { - if (error) { - reject(error); - return; - } - resolve(true); - }); - }); - } - - /** - * Set send mail to address. - * @param {string} to - - */ - setTo(to: string) { - this.to = to; - return this; - } - - /** - * Sets from address to the mail. - * @param {string} from - * @return {} - */ - private setFrom(from: string) { - this.from = from; - return this; - } - - /** - * Set mail subject. - * @param {string} subject - */ - setSubject(subject: string) { - this.subject = subject; - return this; - } - - /** - * Set view directory. - * @param {string} view - */ - setView(view: string) { - this.view = view; - return this; - } - - setData(data) { - this.data = data; - return this; - } - - /** - * Renders the view template with the given data. - * @param {object} data - * @return {string} - */ - render(data): string { - const viewContent = this.getViewContent(); - return Mustache.render(viewContent, data); - } - - /** - * Retrieve view content from the view directory. - */ - private getViewContent(): string { - const filePath = path.join(global.__root, `../views/${this.view}`); - return fs.readFileSync(filePath, 'utf8'); - } -} \ No newline at end of file diff --git a/server/src/lib/Metable/MetableConfig.ts b/server/src/lib/Metable/MetableConfig.ts deleted file mode 100644 index 21febaffd..000000000 --- a/server/src/lib/Metable/MetableConfig.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { get } from 'lodash'; - -export default class MetableConfig { - readonly config: any; - - constructor(config) { - this.setConfig(config); - } - - /** - * Sets config. - */ - setConfig(config) { - this.config = config; - } - - /** - * - * @param {string} key - * @param {string} group - * @param {string} accessor - * @returns {object|string} - */ - getMetaConfig(key: string, group?: string, accessor?: string) { - const configGroup = get(this.config, group); - const config = get(configGroup, key); - - return accessor ? get(config, accessor) : config; - } - - /** - * - * @param {string} key - * @param {string} group - * @returns {string} - */ - getMetaType(key: string, group?: string) { - return this.getMetaConfig(key, group, 'type'); - } -} \ No newline at end of file diff --git a/server/src/lib/Metable/MetableModel.js b/server/src/lib/Metable/MetableModel.js deleted file mode 100644 index f1e489a1a..000000000 --- a/server/src/lib/Metable/MetableModel.js +++ /dev/null @@ -1,12 +0,0 @@ - - -export default class Metable{ - - static get modifiers() { - return { - whereKey(builder, key) { - builder.where('key', key); - }, - }; - } -} \ No newline at end of file diff --git a/server/src/lib/Metable/MetableStore.ts b/server/src/lib/Metable/MetableStore.ts deleted file mode 100644 index 709cfbdd5..000000000 --- a/server/src/lib/Metable/MetableStore.ts +++ /dev/null @@ -1,215 +0,0 @@ -import { Model } from 'objection'; -import { omit, isEmpty } from 'lodash'; -import { IMetadata, IMetaQuery, IMetableStore } from 'interfaces'; -import { itemsStartWith } from 'utils'; - -export default class MetableStore implements IMetableStore { - metadata: IMetadata[]; - model: Model; - extraColumns: string[]; - - /** - * Constructor method. - */ - constructor() { - this.metadata = []; - this.model = null; - this.extraColumns = []; - } - - /** - * Sets a extra columns. - * @param {Array} columns - - */ - setExtraColumns(columns: string[]): void { - this.extraColumns = columns; - } - - /** - * Find the given metadata key. - * @param {string|IMetaQuery} query - - * @returns {IMetadata} - Metadata object. - */ - find(query: string | IMetaQuery): IMetadata { - const { key, value, ...extraColumns } = this.parseQuery(query); - - return this.metadata.find((meta: IMetadata) => { - const isSameKey = meta.key === key; - const sameExtraColumns = this.extraColumns.some( - (extraColumn: string) => extraColumns[extraColumn] === meta[extraColumn] - ); - - const isSameExtraColumns = sameExtraColumns || isEmpty(extraColumns); - - return isSameKey && isSameExtraColumns; - }); - } - - /** - * Retrieve all metadata. - * @returns {IMetadata[]} - */ - all(): IMetadata[] { - return this.metadata - .filter((meta: IMetadata) => !meta._markAsDeleted) - .map((meta: IMetadata) => - omit(meta, itemsStartWith(Object.keys(meta), '_')) - ); - } - - /** - * Retrieve metadata of the given key. - * @param {String} key - - * @param {Mixied} defaultValue - - */ - get(query: string | IMetaQuery, defaultValue: any): any | false { - const metadata = this.find(query); - return metadata - ? metadata.value - : typeof defaultValue !== 'undefined' - ? defaultValue - : false; - } - - /** - * Markes the metadata to should be deleted. - * @param {String} key - - */ - remove(query: string | IMetaQuery): void { - const metadata: IMetadata = this.find(query); - - if (metadata) { - metadata._markAsDeleted = true; - } - } - - /** - * Remove all meta data of the given group. - * @param {string} group - */ - removeAll(group: string = 'default'): void { - this.metadata = this.metadata.map((meta) => ({ - ...meta, - _markAsDeleted: true, - })); - } - - /** - * Set the meta data to the stack. - * @param {String} key - - * @param {String} value - - */ - set(query: IMetaQuery | IMetadata[] | string, metaValue?: any): void { - if (Array.isArray(query)) { - const metadata = query; - - metadata.forEach((meta: IMetadata) => { - this.set(meta); - }); - return; - } - const { key, value, ...extraColumns } = this.parseQuery(query); - const metadata = this.find(query); - const newValue = metaValue || value; - - if (metadata) { - metadata.value = newValue; - metadata._markAsUpdated = true; - } else { - this.metadata.push({ - value: newValue, - key, - ...extraColumns, - _markAsInserted: true, - }); - } - } - - /** - * Parses query query. - * @param query - * @param value - */ - parseQuery(query: string | IMetaQuery): IMetaQuery { - return typeof query !== 'object' ? { key: query } : { ...query }; - } - - /** - * Format the metadata before saving to the database. - * @param {string|number|boolean} value - - * @param {string} valueType - - * @return {string|number|boolean} - - */ - static formatMetaValue( - value: string | boolean | number, - valueType: string - ): string | number | boolean { - let parsedValue; - - switch (valueType) { - case 'number': - parsedValue = `${value}`; - break; - case 'boolean': - parsedValue = value ? '1' : '0'; - break; - case 'json': - parsedValue = JSON.stringify(parsedValue); - break; - default: - parsedValue = value; - break; - } - return parsedValue; - } - - /** - * Parse the metadata to the collection. - * @param {Array} collection - - */ - mapMetadataToCollection(metadata: IMetadata[], parseType: string = 'parse') { - return metadata.map((model) => - this.mapMetadataToCollection(model, parseType) - ); - } - - /** - * Load metadata to the metable collection. - * @param {Array} meta - - */ - from(meta: []) { - if (Array.isArray(meta)) { - meta.forEach((m) => { - this.from(m); - }); - return; - } - this.metadata.push(meta); - } - - /** - * - * @returns {array} - */ - toArray(): IMetadata[] { - return this.metadata; - } - - /** - * Static method to load metadata to the collection. - * @param {Array} meta - */ - static from(meta) { - const collection = new MetableCollection(); - collection.from(meta); - - return collection; - } - - /** - * Reset the momerized metadata. - */ - resetMetadata() { - this.metadata = []; - } -} diff --git a/server/src/lib/Metable/MetableStoreDB.ts b/server/src/lib/Metable/MetableStoreDB.ts deleted file mode 100644 index a4a63e4d5..000000000 --- a/server/src/lib/Metable/MetableStoreDB.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { IMetadata, IMetableStoreStorage } from 'interfaces'; -import MetableStore from './MetableStore'; -import { isBlank, parseBoolean } from 'utils'; -import MetableConfig from './MetableConfig'; -import config from 'data/options' -export default class MetableDBStore - extends MetableStore - implements IMetableStoreStorage { - repository: any; - KEY_COLUMN: string; - VALUE_COLUMN: string; - TYPE_COLUMN: string; - extraQuery: Function; - loaded: Boolean; - config: MetableConfig; - - /** - * Constructor method. - */ - constructor() { - super(); - - this.loaded = false; - this.KEY_COLUMN = 'key'; - this.VALUE_COLUMN = 'value'; - this.TYPE_COLUMN = 'type'; - this.repository = null; - - this.extraQuery = (meta) => { - return { - key: meta[this.KEY_COLUMN], - ...this.transfromMetaExtraColumns(meta), - }; - }; - this.config = new MetableConfig(config); - } - - /** - * Transformes meta query. - * @param {IMetadata} meta - */ - private transfromMetaExtraColumns(meta: IMetadata) { - return this.extraColumns.reduce((obj, column) => { - const metaValue = meta[column]; - - if (!isBlank(metaValue)) { - obj[column] = metaValue; - } - return obj; - }, {}); - } - - /** - * Set repository entity of this metadata collection. - * @param {Object} repository - - */ - setRepository(repository) { - this.repository = repository; - } - - /** - * Sets a extra query callback. - * @param callback - */ - setExtraQuery(callback) { - this.extraQuery = callback; - } - - /** - * Saves the modified, deleted and insert metadata. - */ - save() { - this.validateStoreIsLoaded(); - - return Promise.all([ - this.saveUpdated(this.metadata), - this.saveDeleted(this.metadata), - this.saveInserted(this.metadata), - ]); - } - - /** - * Saves the updated metadata. - * @param {IMetadata[]} metadata - - * @returns {Promise} - */ - saveUpdated(metadata: IMetadata[]) { - const updated = metadata.filter((m) => m._markAsUpdated === true); - const opers = []; - - updated.forEach((meta) => { - const updateOper = this.repository - .update( - { [this.VALUE_COLUMN]: meta.value }, - { ...this.extraQuery(meta) } - ) - .then(() => { - meta._markAsUpdated = false; - }); - opers.push(updateOper); - }); - return Promise.all(opers); - } - - /** - * Saves the deleted metadata. - * @param {IMetadata[]} metadata - - * @returns {Promise} - */ - saveDeleted(metadata: IMetadata[]) { - const deleted = metadata.filter( - (m: IMetadata) => m._markAsDeleted === true - ); - const opers: Promise = []; - - if (deleted.length > 0) { - deleted.forEach((meta) => { - const deleteOper = this.repository - .deleteBy({ - ...this.extraQuery(meta), - }) - .then(() => { - meta._markAsDeleted = false; - }); - opers.push(deleteOper); - }); - } - return Promise.all(opers); - } - - /** - * Saves the inserted metadata. - * @param {IMetadata[]} metadata - - * @returns {Promise} - */ - saveInserted(metadata: IMetadata[]) { - const inserted = metadata.filter( - (m: IMetadata) => m._markAsInserted === true - ); - const opers: Promise = []; - - inserted.forEach((meta) => { - const insertData = { - [this.KEY_COLUMN]: meta.key, - [this.VALUE_COLUMN]: meta.value, - ...this.transfromMetaExtraColumns(meta), - }; - const insertOper = this.repository.create(insertData).then(() => { - meta._markAsInserted = false; - }); - opers.push(insertOper); - }); - return Promise.all(opers); - } - - /** - * Loads the metadata from the storage. - * @param {String|Array} key - - * @param {Boolean} force - - */ - async load() { - const metadata = await this.repository.all(); - const mappedMetadata = this.mapMetadataCollection(metadata); - - this.resetMetadata(); - - mappedMetadata.forEach((meta: IMetadata) => { - this.metadata.push(meta); - }); - this.loaded = true; - } - - /** - * Parse the metadata values after fetching it from the storage. - * @param {String|Number|Boolean} value - - * @param {String} valueType - - * @return {String|Number|Boolean} - - */ - static parseMetaValue( - value: string, - valueType: string | false - ): string | boolean | number { - let parsedValue: string | number | boolean; - - switch (valueType) { - case 'number': - parsedValue = parseFloat(value); - break; - case 'boolean': - parsedValue = parseBoolean(value, false); - break; - case 'json': - parsedValue = JSON.stringify(parsedValue); - break; - default: - parsedValue = value; - break; - } - return parsedValue; - } - - /** - * Mapping and parse metadata to collection entries. - * @param {Meta} attr - - * @param {String} parseType - - */ - mapMetadata(metadata: IMetadata) { - const metaType = this.config.getMetaType( - metadata[this.KEY_COLUMN], - metadata['group'], - ); - return { - key: metadata[this.KEY_COLUMN], - value: MetableDBStore.parseMetaValue( - metadata[this.VALUE_COLUMN], - metaType - ), - ...this.extraColumns.reduce((obj, extraCol: string) => { - obj[extraCol] = metadata[extraCol] || null; - return obj; - }, {}), - }; - } - - /** - * Parse the metadata to the collection. - * @param {Array} collection - - */ - mapMetadataCollection(metadata: IMetadata[]) { - return metadata.map((model) => this.mapMetadata(model)); - } - - /** - * Throw error in case the store is not loaded yet. - */ - private validateStoreIsLoaded() { - if (!this.loaded) { - throw new Error( - 'You could not save the store before loaded from the storage.' - ); - } - } -} diff --git a/server/src/lib/MomentFormats/index.ts b/server/src/lib/MomentFormats/index.ts deleted file mode 100644 index 4b3e7103f..000000000 --- a/server/src/lib/MomentFormats/index.ts +++ /dev/null @@ -1,48 +0,0 @@ -import moment from 'moment'; - -moment.prototype.toMySqlDateTime = function () { - return this.format('YYYY-MM-DD HH:mm:ss'); -}; - -// moment.fn.businessDiff = function (param) { -// param = moment(param); -// var signal = param.unix() < this.unix() ? 1 : -1; -// var start = moment.min(param, this).clone(); -// var end = moment.max(param, this).clone(); -// var start_offset = start.day() - 7; -// var end_offset = end.day(); - -// var end_sunday = end.clone().subtract('d', end_offset); -// var start_sunday = start.clone().subtract('d', start_offset); -// var weeks = end_sunday.diff(start_sunday, 'days') / 7; - -// start_offset = Math.abs(start_offset); -// if (start_offset == 7) -// start_offset = 5; -// else if (start_offset == 1) -// start_offset = 0; -// else -// start_offset -= 2; - -// if (end_offset == 6) -// end_offset--; - -// return signal * (weeks * 5 + start_offset + end_offset); -// }; - -// moment.fn.businessAdd = function (days) { -// var signal = days < 0 ? -1 : 1; -// days = Math.abs(days); -// var d = this.clone().add(Math.floor(days / 5) * 7 * signal, 'd'); -// var remaining = days % 5; -// while (remaining) { -// d.add(signal, 'd'); -// if (d.day() !== 0 && d.day() !== 6) -// remaining--; -// } -// return d; -// }; - -// moment.fn.businessSubtract = function (days) { -// return this.businessAdd(-days); -// }; diff --git a/server/src/lib/NestedSet/NestedSetNode.js b/server/src/lib/NestedSet/NestedSetNode.js deleted file mode 100644 index 60655589f..000000000 --- a/server/src/lib/NestedSet/NestedSetNode.js +++ /dev/null @@ -1,9 +0,0 @@ - - -class NestedSetNode { - - // Saves - appendToNode($parent) { - - } -} \ No newline at end of file diff --git a/server/src/lib/QueryBuilderBulkOperations/QueryBuilder.js b/server/src/lib/QueryBuilderBulkOperations/QueryBuilder.js deleted file mode 100644 index 6aa08ab82..000000000 --- a/server/src/lib/QueryBuilderBulkOperations/QueryBuilder.js +++ /dev/null @@ -1,27 +0,0 @@ -import { QueryBuilder } from "knex" -import { QueryBuilder } from 'objection'; - -export default class BulkOperationsQueryBuilder extends QueryBuilder { - - bulkInsert(collection) { - const opers = []; - - collection.forEach((dataset) => { - const insertOper = this.insert({ ...dataset }); - opers.push(insertOper); - }); - return Promise.all(opers); - } - - bulkDelete(rowsIds) { - - } - - bulkUpdate(dataset, whereColumn) { - - } - - bulkPatch(newDataset, oldDataset) { - - } -} \ No newline at end of file diff --git a/server/src/lib/Transformer/Transformer.ts b/server/src/lib/Transformer/Transformer.ts deleted file mode 100644 index cc0ed99bf..000000000 --- a/server/src/lib/Transformer/Transformer.ts +++ /dev/null @@ -1,72 +0,0 @@ -import moment from "moment"; -import { isEmpty, isObject, isUndefined } from 'lodash'; - -export class Transformer { - meta: any; - - setMeta(meta) { - this.meta = meta; - - return this; - } - - /** - * Includeded attributes. - * @returns - */ - protected includeAttributes = (): string[] => { - return []; - } - - /** - * - */ - public transform = (object: any) => { - if (Array.isArray(object)) { - return object.map(this.getTransformation); - } else if (isObject(object)) { - return this.getTransformation(object); - } - return object; - }; - - /** - * Transformes the given item to desired output. - * @param item - * @returns - */ - protected getTransformation = (item) => { - const attributes = this.getIncludeAttributesTransformed(item); - - return { - ...!isUndefined(item.toObject) ? item.toObject() : item, - ...attributes - }; - }; - - /** - * - * @param item - * @returns - */ - protected getIncludeAttributesTransformed = (item) => { - const attributes = this.includeAttributes(); - - return attributes - .filter((attribute) => !isUndefined(this[attribute])) - .reduce((acc, attribute: string) => { - acc[attribute] = this[attribute](item); - - return acc; - }, {}); - } - - /** - * - * @param date - * @returns - */ - protected formatDate(date) { - return date ? moment(date).format('YYYY/MM/DD') : ''; - } -} diff --git a/server/src/lib/ViewRolesBuilder/FilterRolesDynamicFilter.js b/server/src/lib/ViewRolesBuilder/FilterRolesDynamicFilter.js deleted file mode 100644 index 17bd8166f..000000000 --- a/server/src/lib/ViewRolesBuilder/FilterRolesDynamicFilter.js +++ /dev/null @@ -1,44 +0,0 @@ -import DynamicFilterRoleAbstructor from 'lib/DynamicFilter/DynamicFilterRoleAbstructor'; -import { - validateViewRoles, - buildFilterQuery, -} from 'lib/ViewRolesBuilder'; - -export default class ViewRolesDynamicFilter extends DynamicFilterRoleAbstructor { - /** - * Constructor method. - * @param {*} filterRoles - - * @param {*} logicExpression - - */ - constructor(filterRoles, logicExpression) { - super(); - - this.filterRoles = filterRoles; - this.logicExpression = logicExpression; - - this.tableName = ''; - } - - /** - * Retrieve logic expression. - */ - buildLogicExpression() { - return this.logicExpression; - } - - /** - * Validates filter roles. - */ - validateFilterRoles() { - return validateViewRoles(this.filterRoles, this.logicExpression); - } - - /** - * Builds database query of view roles. - */ - buildQuery() { - return (builder) => { - buildFilterQuery(this.tableName, this.filterRoles, this.logicExpression)(builder); - }; - } -} diff --git a/server/src/lib/ViewRolesBuilder/index.ts b/server/src/lib/ViewRolesBuilder/index.ts deleted file mode 100644 index 0daa68630..000000000 --- a/server/src/lib/ViewRolesBuilder/index.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { difference } from 'lodash'; - -import { IFilterRole, IModel } from 'interfaces'; - -/** - * Get field column metadata and its relation with other tables. - * @param {String} tableName - Table name of target column. - * @param {String} fieldKey - Target column key that stored in resource field. - */ -export function getRoleFieldColumn(model: IModel, fieldKey: string) { - const tableFields = model.fields; - return tableFields[fieldKey] ? tableFields[fieldKey] : null; -} - -export function buildSortColumnJoin(model: IModel, sortColumnKey: string) { - return (builder) => { - const fieldColumn = getRoleFieldColumn(model, sortColumnKey); - - if (fieldColumn.relation) { - const joinTable = getTableFromRelationColumn(fieldColumn.relation); - builder.join( - joinTable, - `${model.tableName}.${fieldColumn.column}`, - '=', - fieldColumn.relation - ); - } - }; -} - -/** - * Mapes the view roles to view conditionals. - * @param {Array} viewRoles - - * @return {Array} - */ -export function mapViewRolesToConditionals(viewRoles) { - return viewRoles.map((viewRole) => ({ - comparator: viewRole.comparator, - value: viewRole.value, - index: viewRole.index, - - columnKey: viewRole.field.key, - slug: viewRole.field.slug, - })); -} - -export function mapFilterRolesToDynamicFilter(roles) { - return roles.map((role) => ({ - ...role, - columnKey: role.fieldKey, - })); -} - -/** - * Builds sort column query. - * @param {String} tableName - - * @param {String} columnKey - - * @param {String} sortDirection - - */ -export function buildSortColumnQuery( - model: IModel, - columnKey: string, - sortDirection: string -) { - const fieldRelation = getRoleFieldColumn(model, columnKey); - const sortColumn = - fieldRelation.relation || `${model.tableName}.${fieldRelation.column}`; - - return (builder) => { - builder.orderBy(sortColumn, sortDirection); - buildSortColumnJoin(model, columnKey)(builder); - }; -} - -export function validateFilterLogicExpression( - logicExpression: string, - indexes -) { - const logicExpIndexes = logicExpression.match(/\d+/g) || []; - const diff = difference(logicExpIndexes.map(Number), indexes); - - return diff.length > 0 ? false : true; -} - -export function validateRolesLogicExpression( - logicExpression: string, - roles: IFilterRole[] -) { - return validateFilterLogicExpression( - logicExpression, - roles.map((r) => r.index) - ); -} - -export function validateFieldKeyExistance(model: any, fieldKey: string) { - return model?.fields?.[fieldKey] || false; -} - - -/** - * Retrieve model fields keys. - * @param {IModel} Model - * @return {string[]} - */ -export function getModelFieldsKeys(Model: IModel) { - const fields = Object.keys(Model.fields); - - return fields.sort((a, b) => { - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; - }); -} - -export function getModelFields(Model: IModel) { - const fieldsKey = this.getModelFieldsKeys(Model); - - return fieldsKey.map((fieldKey) => { - const field = Model.fields[fieldKey]; - return { - ...field, - key: fieldKey, - }; - }); -} diff --git a/server/src/loaders/agenda.ts b/server/src/loaders/agenda.ts deleted file mode 100644 index 9959571d1..000000000 --- a/server/src/loaders/agenda.ts +++ /dev/null @@ -1,11 +0,0 @@ -import Agenda from 'agenda'; -import config from 'config'; - -export default ({ mongoConnection }) => { - return new Agenda({ - mongo: mongoConnection, - db: { collection: config.agenda.dbCollection }, - processEvery: config.agenda.pooltime, - maxConcurrency: config.agenda.concurrency, - }); -}; diff --git a/server/src/loaders/database.ts b/server/src/loaders/database.ts deleted file mode 100644 index a6e8bce65..000000000 --- a/server/src/loaders/database.ts +++ /dev/null @@ -1,10 +0,0 @@ -import Knex from 'knex'; -import { knexSnakeCaseMappers } from 'objection'; -import { systemKnexConfig } from 'config/knexConfig'; - -export default () => { - return Knex({ - ...systemKnexConfig, - ...knexSnakeCaseMappers({ upperCase: true }), - }); -}; \ No newline at end of file diff --git a/server/src/loaders/dbManager.ts b/server/src/loaders/dbManager.ts deleted file mode 100644 index 6aaf31ed2..000000000 --- a/server/src/loaders/dbManager.ts +++ /dev/null @@ -1,7 +0,0 @@ -import knexManager from 'knex-db-manager'; -import { systemKnexConfig, systemDbManager } from 'config/knexConfig'; - -export default () => knexManager.databaseManagerFactory({ - knex: systemKnexConfig, - dbManager: systemDbManager, -}); \ No newline at end of file diff --git a/server/src/loaders/dependencyInjector.ts b/server/src/loaders/dependencyInjector.ts deleted file mode 100644 index c0e66572c..000000000 --- a/server/src/loaders/dependencyInjector.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { Container } from 'typedi'; -import LoggerInstance from 'loaders/logger'; -import agendaFactory from 'loaders/agenda'; -import SmsClientLoader from 'loaders/smsClient'; -import mailInstance from 'loaders/mail'; -import dbManagerFactory from 'loaders/dbManager'; -import i18n from 'loaders/i18n'; -import repositoriesLoader from 'loaders/systemRepositories'; -import Cache from 'services/Cache'; -import rateLimiterLoaders from './rateLimiterLoader'; - -export default ({ mongoConnection, knex }) => { - try { - const agendaInstance = agendaFactory({ mongoConnection }); - const smsClientInstance = SmsClientLoader(); - const dbManager = dbManagerFactory(knex); - const cacheInstance = new Cache(); - - Container.set('logger', LoggerInstance) - LoggerInstance.info('[DI] Logger instance has been injected into container'); - - Container.set('knex', knex); - LoggerInstance.info('[DI] Knex instance has been injected into container'); - - Container.set('SMSClient', smsClientInstance); - LoggerInstance.info('[DI] SMS client has been injected into container'); - - Container.set('mail', mailInstance); - LoggerInstance.info('[DI] Mail instance has been injected into container'); - - Container.set('dbManager', dbManager); - LoggerInstance.info('[DI] Database manager has been injected into container.'); - - Container.set('agenda', agendaInstance); - LoggerInstance.info('[DI] Agenda has been injected into container'); - - Container.set('i18n', i18n); - LoggerInstance.info('[DI] i18n has been injected into container'); - - Container.set('cache', cacheInstance); - LoggerInstance.info('[DI] cache has been injected into container'); - - Container.set('repositories', repositoriesLoader()); - LoggerInstance.info('[DI] repositories has been injected into container'); - - rateLimiterLoaders(); - LoggerInstance.info('[DI] rate limiter has been injected into container.'); - - return { agenda: agendaInstance }; - } catch (e) { - LoggerInstance.error('Error on dependency injector loader: %o', e); - throw e; - } -}; diff --git a/server/src/loaders/events.ts b/server/src/loaders/events.ts deleted file mode 100644 index 92a8427a4..000000000 --- a/server/src/loaders/events.ts +++ /dev/null @@ -1,31 +0,0 @@ - -// Here we import all events. -import 'subscribers/authentication'; -import 'subscribers/organization'; -import 'subscribers/inviteUser'; -import 'subscribers/manualJournals'; -import 'subscribers/expenses'; - -import 'subscribers/Bills'; -import 'subscribers/Bills/WriteJournalEntries'; -import 'subscribers/Bills/WriteInventoryTransactions'; - -import 'subscribers/SaleInvoices'; -import 'subscribers/SaleInvoices/WriteInventoryTransactions'; -import 'subscribers/SaleInvoices/WriteJournalEntries'; - -import 'subscribers/SaleReceipt'; -import 'subscribers/SaleReceipt/WriteInventoryTransactions'; -import 'subscribers/SaleReceipt/WriteJournalEntries'; - -import 'subscribers/Inventory/Inventory'; -import 'subscribers/Inventory/InventoryAdjustment'; - -import 'subscribers/customers'; -import 'subscribers/vendors'; -import 'subscribers/paymentMades'; -import 'subscribers/paymentReceives'; -import 'subscribers/saleEstimates'; -import 'subscribers/items'; - -import 'subscribers/LandedCost'; \ No newline at end of file diff --git a/server/src/loaders/express.ts b/server/src/loaders/express.ts deleted file mode 100644 index 29f354d86..000000000 --- a/server/src/loaders/express.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { json, Request, Response, NextFunction } from 'express'; -import helmet from 'helmet'; -import boom from 'express-boom'; -import errorHandler from 'errorhandler'; -import fileUpload from 'express-fileupload'; -import i18n from 'i18n'; -import routes from 'api'; -import LoggerMiddleware from 'api/middleware/LoggerMiddleware'; -import AgendashController from 'api/controllers/Agendash'; -import ConvertEmptyStringsToNull from 'api/middleware/ConvertEmptyStringsToNull'; -import RateLimiterMiddleware from 'api/middleware/RateLimiterMiddleware' -import config from 'config'; -import path from 'path'; - -export default ({ app }) => { - // Express configuration. - app.set('port', 3000); - - // Template engine configuration. - app.set('views', path.join(__dirname, '../resources/views')); - app.set('view engine', 'pug'); - - // Helmet helps you secure your Express apps by setting various HTTP headers. - app.use(helmet()); - - // Allow to full error stack traces and internal details - app.use(errorHandler()); - - // Boom response objects. - app.use(boom()); - - // Parses both json and urlencoded. - app.use(json()); - - // Handle multi-media requests. - app.use(fileUpload({ - createParentPath: true, - })); - - // Initialize i18n node. - app.use(i18n.init); - - // Logger middleware. - app.use(LoggerMiddleware); - - // Converts empty strings to null of request body. - app.use(ConvertEmptyStringsToNull); - - // Prefix all application routes. - app.use(config.api.prefix, RateLimiterMiddleware) - app.use(config.api.prefix, routes()); - - // Agendash application load. - app.use('/agendash', AgendashController.router()); - - // catch 404 and forward to error handler - app.use((req: Request, res: Response, next: NextFunction) => { - return res.boom.notFound(); - }); -}; \ No newline at end of file diff --git a/server/src/loaders/i18n.ts b/server/src/loaders/i18n.ts deleted file mode 100644 index 1c27f8238..000000000 --- a/server/src/loaders/i18n.ts +++ /dev/null @@ -1,9 +0,0 @@ -import i18n from 'i18n'; -import path from 'path'; - -export default () => i18n.configure({ - locales: ['en', 'ar'], - register: global, - directory: path.join(global.__root, 'locales'), - updateFiles: false -}) \ No newline at end of file diff --git a/server/src/loaders/index.ts b/server/src/loaders/index.ts deleted file mode 100644 index 8113c37a6..000000000 --- a/server/src/loaders/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import Logger from 'loaders/logger'; -import mongooseLoader from 'loaders/mongoose'; -import jobsLoader from 'loaders/jobs'; -import expressLoader from 'loaders/express'; -import databaseLoader from 'loaders/database'; -import dependencyInjectorLoader from 'loaders/dependencyInjector'; -import objectionLoader from 'database/objection'; -import i18nConfig from 'loaders/i18n'; - -// We have to import at least all the events once so they can be triggered -import 'loaders/events'; - -export default async ({ expressApp }) => { - const mongoConnection = await mongooseLoader(); - Logger.info('[init] MongoDB loaded and connected!'); - - // Initialize the system database once app started. - const knex = databaseLoader(); - - // Initialize the objection.js from knex instance. - objectionLoader({ knex }); - - // It returns the agenda instance because it's needed in the subsequent loaders - const { agenda } = await dependencyInjectorLoader({ mongoConnection, knex }); - - await jobsLoader({ agenda }); - Logger.info('[init] Jobs loaded'); - - expressLoader({ app: expressApp }); - Logger.info('[init] Express loaded'); - - i18nConfig(); - Logger.info('[init] I18n node configured.'); -}; diff --git a/server/src/loaders/jobs.ts b/server/src/loaders/jobs.ts deleted file mode 100644 index 916a0aba3..000000000 --- a/server/src/loaders/jobs.ts +++ /dev/null @@ -1,48 +0,0 @@ -import Agenda from 'agenda'; -import WelcomeEmailJob from 'jobs/welcomeEmail'; -import WelcomeSMSJob from 'jobs/WelcomeSMS'; -import ResetPasswordMailJob from 'jobs/ResetPasswordMail'; -import ComputeItemCost from 'jobs/ComputeItemCost'; -import RewriteInvoicesJournalEntries from 'jobs/writeInvoicesJEntries'; -import SendLicenseViaPhoneJob from 'jobs/SendLicensePhone'; -import SendLicenseViaEmailJob from 'jobs/SendLicenseEmail'; -import SendSMSNotificationSubscribeEnd from 'jobs/SMSNotificationSubscribeEnd'; -import SendSMSNotificationTrialEnd from 'jobs/SMSNotificationTrialEnd'; -import SendMailNotificationSubscribeEnd from 'jobs/MailNotificationSubscribeEnd'; -import SendMailNotificationTrialEnd from 'jobs/MailNotificationTrialEnd'; -import UserInviteMailJob from 'jobs/UserInviteMail'; -import OrganizationSetupJob from 'jobs/OrganizationSetup'; - -export default ({ agenda }: { agenda: Agenda }) => { - new WelcomeEmailJob(agenda); - new ResetPasswordMailJob(agenda); - new WelcomeSMSJob(agenda); - new UserInviteMailJob(agenda); - new SendLicenseViaEmailJob(agenda); - new SendLicenseViaPhoneJob(agenda); - new ComputeItemCost(agenda); - new RewriteInvoicesJournalEntries(agenda); - new OrganizationSetupJob(agenda); - - agenda.define( - 'send-sms-notification-subscribe-end', - { priority: 'nromal', concurrency: 1, }, - new SendSMSNotificationSubscribeEnd().handler, - ); - agenda.define( - 'send-sms-notification-trial-end', - { priority: 'normal', concurrency: 1, }, - new SendSMSNotificationTrialEnd().handler, - ); - agenda.define( - 'send-mail-notification-subscribe-end', - { priority: 'high', concurrency: 1, }, - new SendMailNotificationSubscribeEnd().handler - ); - agenda.define( - 'send-mail-notification-trial-end', - { priority: 'high', concurrency: 1, }, - new SendMailNotificationTrialEnd().handler - ); - agenda.start(); -}; diff --git a/server/src/loaders/logger.ts b/server/src/loaders/logger.ts deleted file mode 100644 index cbdf1a3fa..000000000 --- a/server/src/loaders/logger.ts +++ /dev/null @@ -1,13 +0,0 @@ -import winston from 'winston'; - -const transports = { - console: new winston.transports.Console({ level: 'warn' }), - file: new winston.transports.File({ filename: 'stdout.log' }), -}; - -export default winston.createLogger({ - transports: [ - transports.console, - transports.file, - ], -}); diff --git a/server/src/loaders/mail.ts b/server/src/loaders/mail.ts deleted file mode 100644 index 0826267ee..000000000 --- a/server/src/loaders/mail.ts +++ /dev/null @@ -1,15 +0,0 @@ -import nodemailer from 'nodemailer'; -import config from 'config'; - -// create reusable transporter object using the default SMTP transport -const transporter = nodemailer.createTransport({ - host: config.mail.host, - port: config.mail.port, - secure: config.mail.secure, // true for 465, false for other ports - auth: { - user: config.mail.username, - pass: config.mail.password, - }, -}); - -export default transporter; \ No newline at end of file diff --git a/server/src/loaders/mongoose.ts b/server/src/loaders/mongoose.ts deleted file mode 100644 index 3ed3d8236..000000000 --- a/server/src/loaders/mongoose.ts +++ /dev/null @@ -1,11 +0,0 @@ -import mongoose from 'mongoose'; -import { Db } from 'mongodb'; -import config from 'config'; - -export default async (): Promise => { - const connection = await mongoose.connect( - config.mongoDb.databaseURL, - { useNewUrlParser: true, useCreateIndex: true }, - ); - return connection.connection.db; -}; diff --git a/server/src/loaders/rateLimiterLoader.ts b/server/src/loaders/rateLimiterLoader.ts deleted file mode 100644 index 3e3b935a1..000000000 --- a/server/src/loaders/rateLimiterLoader.ts +++ /dev/null @@ -1,24 +0,0 @@ -import RateLimiter from 'services/Authentication/RateLimiter'; -import { Container } from 'typedi'; -import { RateLimiterMemory } from 'rate-limiter-flexible'; -import config from 'config'; - -export default () => { - const rateLimiterRequestsMemory = new RateLimiterMemory({ - points: config.throttler.requests.points, - duration: config.throttler.requests.duration, - blockDuration: config.throttler.requests.blockDuration, - }); - const rateLimiterMemoryLogin = new RateLimiterMemory({ - points: config.throttler.login.points, - duration: config.throttler.login.duration, - blockDuration: config.throttler.login.blockDuration, - }); - - const rateLimiterRequest = new RateLimiter(rateLimiterRequestsMemory); - const rateLimiterLogin = new RateLimiter(rateLimiterMemoryLogin) - - // Inject the rate limiter of the global requests and login into the container. - Container.set('rateLimiter.request', rateLimiterRequest); - Container.set('rateLimiter.login', rateLimiterLogin); -}; \ No newline at end of file diff --git a/server/src/loaders/smsClient.ts b/server/src/loaders/smsClient.ts deleted file mode 100644 index 01f4c6e6a..000000000 --- a/server/src/loaders/smsClient.ts +++ /dev/null @@ -1,9 +0,0 @@ -import SMSClient from 'services/SMSClient'; -import EasySMSGateway from 'services/SMSClient/EasySmsClient'; - -export default () => { - const easySmsGateway = new EasySMSGateway(); - const smsClient = new SMSClient(easySmsGateway); - - return smsClient; -}; diff --git a/server/src/loaders/systemRepositories.ts b/server/src/loaders/systemRepositories.ts deleted file mode 100644 index ad1cd19bd..000000000 --- a/server/src/loaders/systemRepositories.ts +++ /dev/null @@ -1,17 +0,0 @@ -import Container from 'typedi'; -import { - SystemUserRepository, - SubscriptionRepository, - TenantRepository, -} from 'system/repositories'; - -export default () => { - const knex = Container.get('knex'); - const cache = Container.get('cache'); - - return { - systemUserRepository: new SystemUserRepository(knex, cache), - subscriptionRepository: new SubscriptionRepository(knex, cache), - tenantRepository: new TenantRepository(knex, cache), - }; -} \ No newline at end of file diff --git a/server/src/loaders/tenantCache.ts b/server/src/loaders/tenantCache.ts deleted file mode 100644 index a06e3570c..000000000 --- a/server/src/loaders/tenantCache.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Container } from 'typedi'; -import Cache from 'services/Cache'; - -export default (tenantId: number) => { - const cacheInstance = new Cache(); - - return cacheInstance; -}; \ No newline at end of file diff --git a/server/src/loaders/tenantModels.ts b/server/src/loaders/tenantModels.ts deleted file mode 100644 index c71242b02..000000000 --- a/server/src/loaders/tenantModels.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { mapValues } from 'lodash'; - -import Account from 'models/Account'; -import AccountTransaction from 'models/AccountTransaction'; -import Item from 'models/Item'; -import ItemEntry from 'models/ItemEntry'; -import ItemCategory from 'models/ItemCategory'; -import Bill from 'models/Bill'; -import BillPayment from 'models/BillPayment'; -import BillPaymentEntry from 'models/BillPaymentEntry'; -import Currency from 'models/Currency'; -import Contact from 'models/Contact'; -import Vendor from 'models/Vendor'; -import Customer from 'models/Customer'; -import ExchangeRate from 'models/ExchangeRate'; -import Expense from 'models/Expense'; -import ExpenseCategory from 'models/ExpenseCategory'; -import View from 'models/View'; -import ViewRole from 'models/ViewRole'; -import ViewColumn from 'models/ViewColumn'; -import Setting from 'models/Setting'; -import SaleInvoice from 'models/SaleInvoice'; -import SaleInvoiceEntry from 'models/SaleInvoiceEntry'; -import SaleReceipt from 'models/SaleReceipt'; -import SaleReceiptEntry from 'models/SaleReceiptEntry'; -import SaleEstimate from 'models/SaleEstimate'; -import SaleEstimateEntry from 'models/SaleEstimateEntry'; -import PaymentReceive from 'models/PaymentReceive'; -import PaymentReceiveEntry from 'models/PaymentReceiveEntry'; -import Option from 'models/Option'; -import InventoryCostLotTracker from 'models/InventoryCostLotTracker'; -import InventoryTransaction from 'models/InventoryTransaction'; -import ManualJournal from 'models/ManualJournal'; -import ManualJournalEntry from 'models/ManualJournalEntry'; -import Media from 'models/Media'; -import MediaLink from 'models/MediaLink'; -import InventoryAdjustment from 'models/InventoryAdjustment'; -import InventoryAdjustmentEntry from 'models/InventoryAdjustmentEntry'; -import BillLandedCost from 'models/BillLandedCost'; -import BillLandedCostEntry from 'models/BillLandedCostEntry'; - -export default (knex) => { - const models = { - Option, - Account, - AccountTransaction, - Item, - ItemCategory, - ItemEntry, - ManualJournal, - ManualJournalEntry, - Bill, - BillPayment, - BillPaymentEntry, - Currency, - ExchangeRate, - Expense, - ExpenseCategory, - View, - ViewRole, - ViewColumn, - Setting, - SaleInvoice, - SaleInvoiceEntry, - SaleReceipt, - SaleReceiptEntry, - SaleEstimate, - SaleEstimateEntry, - PaymentReceive, - PaymentReceiveEntry, - InventoryTransaction, - InventoryCostLotTracker, - Media, - MediaLink, - Vendor, - Customer, - Contact, - InventoryAdjustment, - InventoryAdjustmentEntry, - BillLandedCost, - BillLandedCostEntry - }; - return mapValues(models, (model) => model.bindKnex(knex)); -} \ No newline at end of file diff --git a/server/src/loaders/tenantRepositories.ts b/server/src/loaders/tenantRepositories.ts deleted file mode 100644 index 58bf49b73..000000000 --- a/server/src/loaders/tenantRepositories.ts +++ /dev/null @@ -1,33 +0,0 @@ -import AccountRepository from 'repositories/AccountRepository'; -import VendorRepository from 'repositories/VendorRepository'; -import CustomerRepository from 'repositories/CustomerRepository'; -import ExpenseRepository from 'repositories/ExpenseRepository'; -import ViewRepository from 'repositories/ViewRepository'; -import ViewRoleRepository from 'repositories/ViewRoleRepository'; -import ContactRepository from 'repositories/ContactRepository'; -import AccountTransactionsRepository from 'repositories/AccountTransactionRepository'; -import SettingRepository from 'repositories/SettingRepository'; -import ExpenseEntryRepository from 'repositories/ExpenseEntryRepository'; -import BillRepository from 'repositories/BillRepository'; -import SaleInvoiceRepository from 'repositories/SaleInvoiceRepository'; -import ItemRepository from 'repositories/ItemRepository'; -import InventoryTransactionRepository from 'repositories/InventoryTransactionRepository'; - -export default (knex, cache) => { - return { - accountRepository: new AccountRepository(knex, cache), - transactionsRepository: new AccountTransactionsRepository(knex, cache), - customerRepository: new CustomerRepository(knex, cache), - vendorRepository: new VendorRepository(knex, cache), - contactRepository: new ContactRepository(knex, cache), - expenseRepository: new ExpenseRepository(knex, cache), - expenseEntryRepository: new ExpenseEntryRepository(knex, cache), - viewRepository: new ViewRepository(knex, cache), - viewRoleRepository: new ViewRoleRepository(knex, cache), - settingRepository: new SettingRepository(knex, cache), - billRepository: new BillRepository(knex, cache), - saleInvoiceRepository: new SaleInvoiceRepository(knex, cache), - itemRepository: new ItemRepository(knex, cache), - inventoryTransactionRepository: new InventoryTransactionRepository(knex, cache), - }; -}; \ No newline at end of file diff --git a/server/src/locales/ar.json b/server/src/locales/ar.json deleted file mode 100644 index 2c865ec45..000000000 --- a/server/src/locales/ar.json +++ /dev/null @@ -1,367 +0,0 @@ -{ - "Petty Cash": "العهدة", - "Cash": "النقدية", - "Bank": "المصرف", - "Other Income": "إيرادات اخري", - "Interest Income": "إيرادات الفوائد", - "Depreciation Expense": "مصاريف الاهلاك", - "Interest Expense": "مصروفات الفوائد", - "Sales of Product Income": "مبيعات دخل المنتجات", - "Inventory Asset": "المخزون", - "Cost of Goods Sold (COGS)": "تكلفة البضائع المباعة (COGS)", - "Cost of Goods Sold": "تكلفة البضاعة المباعة", - "Accounts Payable": "الذمم الدائنة", - "Other Expense": "مصاريف أخرى", - "Payroll Expenses": "مصاريف المرتبات", - "Fixed Asset": "أصول ثابتة", - "Credit Card": "بطاقة إئتمان", - "Non-Current Asset": "أصول غير متداولة", - "Current Asset": "أصول متداولة", - "Other Asset": "أصول اخري", - "Long Term Liability": "التزامات طويلة الاجل", - "Current Liability": "التزامات قصيرة الاجل", - "Other Liability": "التزمات اخري", - "Equity": "حقوق الملكية", - "Expense": "مصروف", - "Income": "إيراد", - "Accounts Receivable (A/R)": "الذمم المدينة", - "Accounts Receivable": "الذمم المدينة", - "Accounts Payable (A/P)": "الذمم الدائنة", - "Inactive": "غير نشط", - "Other Current Asset": "أصول متداولة اخرى", - "Tax Payable": "الضريبة المستحقة", - "Other Current Liability": "التزامات قصيرة الأجر اخرى", - "Non-Current Liability": "التزامات طويلة الأجر", - "Assets": "أصول", - "Liabilities": "الالتزمات", - "Account name": "أسم الحساب", - "Account type": "نوع الحساب", - "Account normal": "حساب عادي", - "Description": "وصف", - "Account code": "رمز الحساب", - "Currency": "عملة", - "Balance": "توازن", - "Active": "نشيط", - "Created at": "أنشئت في", - "fixed_asset": "أصل ثابت", - "Journal": "قيد", - "Reconciliation": "تسوية", - "Credit": "دائن", - "Debit": "مدين", - "Interest": "فائدة", - "Depreciation": "اهلاك", - "Payroll": "كشف رواتب", - "Type": "نوع", - "Name": "الأسم", - "Sellable": "قابل للبيع", - "Purchasable": "قابل للشراء", - "Sell price": "سعر البيع", - "Cost price": "سعر الكلفة", - "User": "المستخدم", - "Category": "تصنيف", - "Note": "ملحوظة", - "Quantity on hand": "كمية في اليد", - "Purchase description": "وصف الشراء", - "Sell description": "وصف البيع", - "Sell account": "حساب البيع", - "Cost account": "حساب التكلفة", - "Inventory account": "حساب المخزون", - "Payment date": "تاريخ الدفع", - "Payment account": "حساب الدفع", - "Amount": "كمية", - "Reference No.": "رقم المرجع.", - "Published": "نشرت", - "Journal number": "رقم القيد", - "Status": "حالة", - "Journal type": "نوع القيد", - "Date": "تاريخ", - "Asset": "أصل", - "Liability": "التزام", - "First-in first-out (FIFO)": "الوارد أولاً يصرف أولاً (FIFO)", - "Last-in first-out (LIFO)": "الوارد أخيرًا يصرف أولاً (LIFO)", - "Average rate": "المعدل المتوسط", - "Total": "الإجمالي", - "Transaction type": "نوع المعاملة", - "Transaction #": "عملية #", - "Running Value": "القيمة الجارية", - "Running quantity": "الكمية الجارية", - "Profit Margin": "هامش الربح", - "Value": "القيمة", - "Rate": "السعر", - "OPERATING ACTIVITIES": "الأنشطة التشغيلية", - "FINANCIAL ACTIVITIES": "الأنشطة التمويلية", - "INVESTMENT ACTIVITIES": "الانشطة الاستثمارية", - "Net income": "صافي الدخل", - "Adjustments net income by operating activities.": "تسويات صافي الدخل من الأنشطة التشغيلية.", - "Net cash provided by operating activities": "صافي التدفقات النقدية من أنشطة التشغيل", - "Net cash provided by investing activities": "صافي التدفقات النقدية من أنشطة الاستثمار", - "Net cash provided by financing activities": "صافي التدفقات النقدية من أنشطة التمويلية", - "Cash at beginning of period": "التدفقات النقدية في بداية الفترة", - "NET CASH INCREASE FOR PERIOD": "زيادة التدفقات النقدية للفترة", - "CASH AT END OF PERIOD": "صافي التدفقات النقدية في نهاية الفترة", - "Expenses": "مصاريف", - "Services": "خدمات", - "Inventory": "المخزون", - "Non Inventory": "غير المخزون", - "Draft": "مسودة", - "Delivered": "تم التوصيل", - "Overdue": "متأخر", - "Partially paid": "المدفوعة جزئيا", - "Paid": "مدفوع", - "Opened": "افتتح", - "Unpaid": "غير مدفوعة", - "Approved": "وافق", - "Rejected": "مرفوض", - "Invoiced": "مفوترة", - "Expired": "منتهي الصلاحية", - "Closed": "مغلق", - "Manual journal": "قيد اليدوي", - "Inventory adjustment": "تسوية المخزون", - "Customer opening balance": "الرصيد الافتتاحي للزبون", - "Vendor opening balance": "رصيد افتتاحي للمورد", - "Payment made": "سند الزبون", - "Bill": "فاتورة الشراء", - "Payment receive": "استلام الدفع", - "Sale receipt": "إيصال البيع", - "Sale invoice": "فاتورة البيع", - "Quantity": "الكمية", - "Bank Account": "حساب البنك", - "Saving Bank Account": "حساب التوفير البنكي", - "Undeposited Funds": "الأموال غير المودعة", - "Computer Equipment": "معدات كمبيوتر", - "Office Equipment": "معدات مكتبية", - "Uncategorized Income": "الدخل غير مصنف", - "Sales of Service Income": "دخل مبيعات الخدمات", - "Bank Fees and Charges": "رسوم المصرفية", - "Exchange Gain or Loss": "ربح أو خسارة فروقات الصرف", - "Rent": "إيجار", - "Office expenses": "مصاريف المكتب", - "Other Expenses": "مصاريف اخري", - "Drawings": "السحوبات", - "Owner's Equity": "حقوق الملكية", - "Opening Balance Equity": "الارصدة الافتتاحية ", - "Retained Earnings": "الأرباح المحتجزة", - "Sales Tax Payable": "ضريبة المبيعات المستحقة", - "Revenue Received in Advance": "الإيرادات المقبوضة مقدما", - "Opening Balance Liabilities": "رصيد الالتزامات الافتتاحي", - "Loan": "اقراض", - "Owner A Drawings": "مسحوبات المالك", - "An account that holds valuation of products or goods that availiable for sale.": "حساب يحمل قيم مخزون البضاعة أو السلع المتاحة للبيع.", - "Tracks the gain and losses of the exchange differences.": "يسجل مكاسب وخسائر فروق الصرف.", - "Any bank fees levied is recorded into the bank fees and charges account. A bank account maintenance fee, transaction charges, a late payment fee are some examples.": "يتم تسجيل أي رسوم مصرفية يتم فرضها في حساب الرسوم والمصروفات البنكية. ومن الأمثلة على ذلك رسوم صيانة الحساب المصرفي ورسوم المعاملات ورسوم الدفع المتأخر.", - "The income activities are not associated to the core business.": "لا ترتبط انشطة الدخل إلى الأعمال الأساسية.", - "Cash and cash equivalents": "النقد والنقد المكافئ", - "Inventories": "مخزون البضاعة", - "Other current assets": "الأصول متداولة الأخرى", - "Non-Current Assets": "أصول غير المتداولة", - "Current Liabilties": "التزامات متداولة", - "Long-Term Liabilities": "التزامات طويلة الاجل", - "Non-Current Liabilities": "التزامات غير متداولة", - "Liabilities and Equity": "التزامات وحقوق الملكية", - "Closing balance": "الرصيد الختامي", - "Opening balance": "الرصيد الفتاحي", - "Total {{accountName}}": "إجمالي {{accountName}}", - "invoice.paper.invoice": "فاتورة", - "invoice.paper.due_amount": "القيمة المستحقة", - "invoice.paper.billed_to": "فاتورة إلي", - "invoice.paper.invoice_date": "تاريخ الفاتورة", - "invoice.paper.invoice_number": "رقم الفاتورة", - "invoice.paper.due_date": "تاريخ الاستحقاق", - "invoice.paper.conditions_title": "الشروط والأحكام", - "invoice.paper.notes_title": "ملاحظات", - "item_entry.paper.item_name": "اسم الصنف", - "item_entry.paper.rate": "السعر", - "item_entry.paper.quantity": "الكمية", - "item_entry.paper.total": "إجمالي", - "estimate.paper.estimate": "عرض أسعار", - "estimate.paper.billed_to": "عرض أسعار إلي", - "estimate.paper.estimate_date": "تاريخ العرض", - "estimate.paper.estimate_number": "رقم العرض", - "estimate.paper.expiration_date": "تاريخ انتهاء الصلاحية", - "estimate.paper.conditions_title": "الشروط والأحكام", - "estimate.paper.notes_title": "ملاحظات", - "estimate.paper.amount": "قيمة العرض", - "receipt.paper.receipt": "إيصال", - "receipt.paper.billed_to": "الإيصال إلي", - "receipt.paper.receipt_date": "تاريخ الإيصال", - "receipt.paper.receipt_number": "رقم الإيصال", - "receipt.paper.conditions_title": "الشروط والأحكام", - "receipt.paper.notes_title": "ملاحظات", - "receipt.paper.receipt_amount": "قيمة الإيصال", - "account.field.name": "إسم الحساب", - "account.field.description": "الوصف", - "account.field.slug": "Account slug", - "account.field.code": "رقم الحساب", - "account.field.root_type": "جذر الحساب", - "account.field.normal": "طبيعة الحساب", - "account.field.normal.credit": "دائن", - "account.field.normal.debit": "مدين", - "account.field.type": "نوع الحساب", - "account.field.active": "Activity", - "account.field.balance": "الرصيد", - "account.field.created_at": "أنشئت في", - "item.field.type": "نوع الصنف", - "item.field.type.inventory": "مخزون", - "item.field.type.service": "خدمة", - "item.field.type.non-inventory": "Non inventory", - "item.field.name": "اسم الصنف", - "item.field.code": "رمز الصنف", - "item.field.sellable": "قابل للبيع", - "item.field.purchasable": "قابل للشراء", - "item.field.cost_price": "سعر التكلفة", - "item.field.cost_account": "حساب التكلفة", - "item.field.sell_account": "حساب البيع", - "item.field.sell_description": "وصف البيع", - "item.field.inventory_account": "حساب المخزون", - "item.field.purchase_description": "وصف الشراء", - "item.field.quantity_on_hand": "الكمية", - "item.field.note": "ملاحظة", - "item.field.category": "التصنيف", - "item.field.active": "Active", - "item.field.created_at": "أنشئت في", - "item_category.field.name": "الاسم", - "item_category.field.description": "الوصف", - "item_category.field.count": "العدد", - "item_category.field.created_at": "أنشئت في", - "invoice.field.customer": "الزبون", - "invoice.field.invoice_date": "تاريخ الفاتورة", - "invoice.field.due_date": "تاريخ الاستحقاق", - "invoice.field.invoice_no": "رقم الفاتورة", - "invoice.field.reference_no": "رقم الإشاري", - "invoice.field.invoice_message": "رسالة الفاتورة", - "invoice.field.terms_conditions": "الشروط والأحكام", - "invoice.field.amount": "القيمة", - "invoice.field.payment_amount": "القيمة المدفوعة", - "invoice.field.due_amount": "القيمة المستحقة", - "invoice.field.status": "الحالة", - "invoice.field.status.paid": "مدفوعة", - "invoice.field.status.partially-paid": "المدفوعة جزئيا", - "invoice.field.status.overdue": "متأخرة", - "invoice.field.status.unpaid": "غير مدفوعة", - "invoice.field.status.delivered": "تم تسليمها", - "invoice.field.status.draft": "مسودة", - "invoice.field.created_at": "أنشئت في", - "estimate.field.amount": "القيمة", - "estimate.field.estimate_number": "رقم العرض", - "estimate.field.customer": "الزبون", - "estimate.field.estimate_date": "تاريخ العرض", - "estimate.field.expiration_date": "تاريخ انتهاء الصلاحية", - "estimate.field.reference_no": "رقم الإشاري", - "estimate.field.note": "ملاحظة", - "estimate.field.terms_conditions": "الشروط والأحكام", - "estimate.field.status": "الحالة", - "estimate.field.status.delivered": "تم تسليمها", - "estimate.field.status.rejected": "مرفوضة", - "estimate.field.status.approved": "تم الموافقة", - "estimate.field.status.draft": "مسودة", - "estimate.field.created_at": "أنشئت في", - "payment_receive.field.customer": "الزبون", - "payment_receive.field.payment_date": "تاريخ الدفع", - "payment_receive.field.amount": "القيمة", - "payment_receive.field.reference_no": "رقم الإشاري", - "payment_receive.field.deposit_account": "حساب الإيداع", - "payment_receive.field.payment_receive_no": "رقم عملية الدفع", - "payment_receive.field.statement": "البيان", - "payment_receive.field.created_at": "أنشئت في", - "bill_payment.field.vendor": "المورد", - "bill_payment.field.amount": "القيمة", - "bill_payment.field.due_amount": "قيمة المستحقة", - "bill_payment.field.payment_account": "حساب الدفع", - "bill_payment.field.payment_number": "قيمة الدفع", - "bill_payment.field.payment_date": "تاريخ الدفع", - "bill_payment.field.reference_no": "رقم الإشاري", - "bill_payment.field.description": "الوصف", - "bill_payment.field.created_at": "أنشئت في", - "bill.field.vendor": "المورد", - "bill.field.bill_number": "رقم الفاتورة", - "bill.field.bill_date": "تاريخ الفاتورة", - "bill.field.due_date": "تاريخ الاستحقاق", - "bill.field.reference_no": "رقم الإشاري", - "bill.field.status": "الحالة", - "bill.field.status.paid": "مدفوعة", - "bill.field.status.partially-paid": "مدفوعة جزئيا", - "bill.field.status.unpaid": "غير مدفوعة", - "bill.field.status.opened": "مفتوحة", - "bill.field.status.draft": "مسودة", - "bill.field.status.overdue": "متأخرة", - "bill.field.amount": "القيمة", - "bill.field.payment_amount": "قيم الدفع", - "bill.field.note": "ملاحظة", - "bill.field.created_at": "أنشئت في", - "inventory_adjustment.field.date": "التاريخ", - "inventory_adjustment.field.type": "النوع", - "inventory_adjustment.field.type.increment": "زيادة", - "inventory_adjustment.field.type.decrement": "نقصان", - "inventory_adjustment.field.adjustment_account": "حساب التسوية", - "inventory_adjustment.field.reason": "السبب", - "inventory_adjustment.field.reference_no": "رقم الإشاري", - "inventory_adjustment.field.description": "الوصف", - "inventory_adjustment.field.published_at": "نشرت في", - "inventory_adjustment.field.created_at": "أنشئت في", - "expense.field.payment_date": "تاريخ الدفع", - "expense.field.payment_account": "حساب الدفع", - "expense.field.amount": "القيمة", - "expense.field.reference_no": "رقم الإشاري", - "expense.field.description": "الوصف", - "expense.field.published": "Published", - "expense.field.status": "الحالة", - "expense.field.status.draft": "مسودة", - "expense.field.status.published": "نشرت", - "expense.field.created_at": "أنشئت في", - "manual_journal.field.date": "التاريخ", - "manual_journal.field.journal_number": "رقم القيد", - "manual_journal.field.reference": "رقم الإشاري", - "manual_journal.field.journal_type": "نوع القيد", - "manual_journal.field.amount": "القيمة", - "manual_journal.field.description": "الوصف", - "manual_journal.field.status": "الحالة", - "manual_journal.field.created_at": "أنشئت في", - "receipt.field.amount": "القيمة", - "receipt.field.deposit_account": "حساب الإيداع", - "receipt.field.customer": "الزبون", - "receipt.field.receipt_date": "تاريخ الإيصال", - "receipt.field.receipt_number": "رقم الإيصال", - "receipt.field.reference_no": "رقم الإشاري", - "receipt.field.receipt_message": "رسالة الإيصال", - "receipt.field.statement": "البيان", - "receipt.field.created_at": "أنشئت في", - "receipt.field.status": "الحالة", - "receipt.field.status.draft": "مسودة", - "receipt.field.status.closed": "مغلقة", - "customer.field.first_name": "الاسم الأول", - "customer.field.last_name": "الاسم الاخير", - "customer.field.display_name": "اسم العرض", - "customer.field.email": "بريد الالكتروني", - "customer.field.work_phone": "هاتف عمل", - "customer.field.personal_phone": "هاتف شخصي", - "customer.field.company_name": "اسم الشركة", - "customer.field.website": "موقع الكتروني", - "customer.field.opening_balance_at": "الرصيد الافتتاحي في", - "customer.field.opening_balance": "الرصيد الافتتاحي", - "customer.field.created_at": "أنشئت في", - "customer.field.balance": "الرصيد", - "customer.field.status": "الحالة", - "customer.field.currency": "العملة", - "customer.field.status.active": "مفعل", - "customer.field.status.inactive": "غير مفعل", - "customer.field.status.overdue": "متأخر", - "customer.field.status.unpaid": "غير دافع", - "vendor.field.first_name": "الاسم الأول", - "vendor.field.last_name": "الاسم الاخير", - "vendor.field.display_name": "اسم العرض", - "vendor.field.email": "بريد الالكتروني", - "vendor.field.work_phone": "هاتف عمل", - "vendor.field.personal_phone": "هاتف شخصي", - "vendor.field.company_name": "اسم الشركة", - "vendor.field.website": "موقع الكتروني", - "vendor.field.opening_balance_at": "الرصيد الافتتاحي في", - "vendor.field.opening_balance": "الرصيد الافتتاحي", - "vendor.field.created_at": "أنشئت في", - "vendor.field.balance": "الرصيد", - "vendor.field.status": "الحالة", - "vendor.field.currency": "العملة", - "vendor.field.status.active": "مفعل", - "vendor.field.status.inactive": "غير مفعل", - "vendor.field.status.overdue": "متأخر", - "vendor.field.status.unpaid": "غير دافع" -} \ No newline at end of file diff --git a/server/src/locales/en.json b/server/src/locales/en.json deleted file mode 100644 index 4aaf27c11..000000000 --- a/server/src/locales/en.json +++ /dev/null @@ -1,367 +0,0 @@ -{ - "Petty Cash": "Petty Cash", - "Cash": "Cash", - "Bank": "Bank", - "Other Income": "Other Income", - "Interest Income": "Interest Income", - "Depreciation Expense": "Depreciation Expense", - "Interest Expense": "Interest Expense", - "Sales of Product Income": "Sales of Product Income", - "Inventory Asset": "Inventory Asset", - "Cost of Goods Sold (COGS)": "Cost of Goods Sold (COGS)", - "Cost of Goods Sold": "Cost of Goods Sold", - "Accounts Payable": "Accounts Payable", - "Other Expense": "Other Expense", - "Payroll Expenses": "Payroll Expenses", - "Fixed Asset": "Fixed Asset", - "Credit Card": "Credit Card", - "Non-Current Asset": "Non-Current Asset", - "Current Asset": "Current Asset", - "Other Asset": "Other Asset", - "Long Term Liability": "Long Term Liability", - "Current Liability": "Current Liability", - "Other Liability": "Other Liability", - "Equity": "Equity", - "Expense": "Expense", - "Income": "Income", - "Accounts Receivable (A/R)": "Accounts Receivable (A/R)", - "Accounts Receivable": "Accounts Receivable", - "Accounts Payable (A/P)": "Accounts Payable (A/P)", - "Inactive": "Inactive", - "Other Current Asset": "Other Current Asset", - "Tax Payable": "Tax Payable", - "Other Current Liability": "Other Current Liability", - "Non-Current Liability": "Non-Current Liability", - "Assets": "Assets", - "Liabilities": "Liabilities", - "Account name": "Account name", - "Account type": "Account type", - "Account normal": "Account normal", - "Description": "Description", - "Account code": "Account code", - "Currency": "Currency", - "Balance": "Balance", - "Active": "Active", - "Created at": "Created at", - "fixed_asset": "Fixed asset", - "Journal": "Journal", - "Reconciliation": "Reconciliation", - "Credit": "Credit", - "Debit": "Debit", - "Interest": "Interest", - "Depreciation": "Depreciation", - "Payroll": "Payroll", - "Type": "Type", - "Name": "Name", - "Sellable": "Sellable", - "Purchasable": "Purchasable", - "Sell price": "Sell price", - "Cost price": "Cost price", - "User": "User", - "Category": "Category", - "Note": "Note", - "Quantity on hand": "Quantity on hand", - "Quantity": "Quantity", - "Purchase description": "Purchase description", - "Sell description": "Sell description", - "Sell account": "Sell account", - "Cost account": "Cost account", - "Inventory account": "Inventory account", - "Payment date": "Payment date", - "Payment account": "Payment account", - "Amount": "Amount", - "Reference No.": "Reference No.", - "Journal number": "Journal number", - "Status": "Status", - "Journal type": "Journal type", - "Date": "Date", - "Asset": "Asset", - "Liability": "Liability", - "First-in first-out (FIFO)": "First-in first-out (FIFO)", - "Last-in first-out (LIFO)": "Last-in first-out (LIFO)", - "Average rate": "Average rate", - "Total": "Total", - "Transaction type": "Transaction type", - "Transaction #": "Transaction #", - "Running Value": "Running Value", - "Running quantity": "Running quantity", - "Profit Margin": "Profit Margin", - "Value": "Value", - "Rate": "Rate", - "OPERATING ACTIVITIES": "OPERATING ACTIVITIES", - "FINANCIAL ACTIVITIES": "FINANCIAL ACTIVITIES", - "Net income": "Net income", - "Adjustments net income by operating activities.": "Adjustments net income by operating activities.", - "Net cash provided by operating activities": "Net cash provided by operating activities", - "Net cash provided by investing activities": "Net cash provided by investing activities", - "Net cash provided by financing activities": "Net cash provided by financing activities", - "Cash at beginning of period": "Cash at beginning of period", - "NET CASH INCREASE FOR PERIOD": "NET CASH INCREASE FOR PERIOD", - "CASH AT END OF PERIOD": "CASH AT END OF PERIOD", - "Expenses": "Expenses", - "Services": "Services", - "Inventory": "Inventory", - "Non Inventory": "Non Inventory", - "Draft": "Draft", - "Published": "Published", - "Delivered": "Delivered", - "Overdue": "Overdue", - "Partially paid": "Partially paid", - "Paid": "Paid", - "Opened": "Opened", - "Unpaid": "Unpaid", - "Approved": "Approved", - "Rejected": "Rejected", - "Invoiced": "Invoiced", - "Expired": "Expired", - "Closed": "Closed", - "Manual journal": "Manual journal", - "Inventory adjustment": "Inventory adjustment", - "Customer opening balance": "Customer opening balance", - "Vendor opening balance": "Vendor opening balance", - "Payment made": "Payment made", - "Bill": "Bill", - "Payment receive": "Payment receive", - "Sale receipt": "Sale receipt", - "Sale invoice": "Sale invoice", - "Bank Account": "Bank Account", - "Saving Bank Account": "Saving Bank Account", - "Undeposited Funds": "Undeposited Funds", - "Computer Equipment": "Computer Equipment", - "Office Equipment": "Office Equipment", - "Uncategorized Income": "Uncategorized Income", - "Sales of Service Income": "Sales of Service Income", - "Bank Fees and Charges": "Bank Fees and Charges", - "Exchange Gain or Loss": "Exchange Gain or Loss", - "Rent": "Rent", - "Office expenses": "Office expenses", - "Other Expenses": "Other Expenses", - "Drawings": "Drawings", - "Owner's Equity": "Owner's Equity", - "Opening Balance Equity": "Opening Balance Equity", - "Retained Earnings": "Retained Earnings", - "Sales Tax Payable": "Sales Tax Payable", - "Revenue Received in Advance": "Revenue Received in Advance", - "Opening Balance Liabilities": "Opening Balance Liabilities", - "Loan": "Loan", - "Owner A Drawings": "Owner A Drawings", - "An account that holds valuation of products or goods that availiable for sale.": "An account that holds valuation of products or goods that availiable for sale.", - "Tracks the gain and losses of the exchange differences.": "Tracks the gain and losses of the exchange differences.", - "Any bank fees levied is recorded into the bank fees and charges account. A bank account maintenance fee, transaction charges, a late payment fee are some examples.": "Any bank fees levied is recorded into the bank fees and charges account. A bank account maintenance fee, transaction charges, a late payment fee are some examples.", - "The income activities are not associated to the core business.": "The income activities are not associated to the core business.", - "Cash and cash equivalents": "Cash and cash equivalents", - "Inventories": "Inventories", - "Other current assets": "Other current assets", - "Non-Current Assets": "Non-Current Assets", - "Current Liabilties": "Current Liabilties", - "Long-Term Liabilities": "Long-Term Liabilities", - "Non-Current Liabilities": "Non-Current Liabilities", - "Liabilities and Equity": "Liabilities and Equity", - "Closing balance": "Closing balance", - "Opening Balance": "Opening balance", - "Total {{accountName}}": "Total {{accountName}}", - "invoice.paper.invoice": "Invoice", - "invoice.paper.due_amount": "Due amount", - "invoice.paper.billed_to": "Billed to", - "invoice.paper.invoice_date": "Invoice date", - "invoice.paper.invoice_number": "Invoice No.", - "invoice.paper.due_date": "Due date", - "invoice.paper.conditions_title": "Conditions & terms", - "invoice.paper.notes_title": "Notes", - "item_entry.paper.item_name": "Item name", - "item_entry.paper.rate": "Rate", - "item_entry.paper.quantity": "Quantity", - "item_entry.paper.total": "Total", - "estimate.paper.estimate": "Estimate", - "estimate.paper.billed_to": "Billed to", - "estimate.paper.estimate_date": "Estimate date", - "estimate.paper.estimate_number": "Estimate number", - "estimate.paper.expiration_date": "Expiration date", - "estimate.paper.conditions_title": "Conditions & terms", - "estimate.paper.notes_title": "Notes", - "estimate.paper.amount": "Estimate amount", - "receipt.paper.receipt": "Receipt", - "receipt.paper.billed_to": "Billed to", - "receipt.paper.receipt_date": "Receipt date", - "receipt.paper.receipt_number": "Receipt number", - "receipt.paper.expiration_date": "Expiration date", - "receipt.paper.conditions_title": "Conditions & terms", - "receipt.paper.notes_title": "Notes", - "receipt.paper.receipt_amount": "Receipt amount", - "account.field.name": "Account name", - "account.field.description": "Description", - "account.field.slug": "Account slug", - "account.field.code": "Account code", - "account.field.root_type": "Root type", - "account.field.normal": "Account normal", - "account.field.normal.credit": "Credit", - "account.field.normal.debit": "Debit", - "account.field.type": "Type", - "account.field.active": "Activity", - "account.field.balance": "Balance", - "account.field.created_at": "Created at", - "item.field.type": "Item type", - "item.field.type.inventory": "Inventory", - "item.field.type.service": "Service", - "item.field.type.non-inventory": "Non inventory", - "item.field.name": "Name", - "item.field.code": "Code", - "item.field.sellable": "Sellable", - "item.field.purchasable": "Purchasable", - "item.field.cost_price": "Cost price", - "item.field.cost_account": "Cost account", - "item.field.sell_account": "Sell account", - "item.field.sell_description": "Sell description", - "item.field.inventory_account": "Inventory account", - "item.field.purchase_description": "Purchase description", - "item.field.quantity_on_hand": "Quantity on hand", - "item.field.note": "Note", - "item.field.category": "Category", - "item.field.active": "Active", - "item.field.created_at": "Created at", - "item_category.field.name": "Name", - "item_category.field.description": "Description", - "item_category.field.count": "Count", - "item_category.field.created_at": "Created at", - "invoice.field.customer": "Customer", - "invoice.field.invoice_date": "Invoice date", - "invoice.field.due_date": "Due date", - "invoice.field.invoice_no": "Invoice No.", - "invoice.field.reference_no": "Reference No.", - "invoice.field.invoice_message": "Invoice message", - "invoice.field.terms_conditions": "Terms & conditions", - "invoice.field.amount": "Amount", - "invoice.field.payment_amount": "Payment amount", - "invoice.field.due_amount": "Due amount", - "invoice.field.status": "Status", - "invoice.field.status.paid": "Paid", - "invoice.field.status.partially-paid": "Partially paid", - "invoice.field.status.overdue": "Overdue", - "invoice.field.status.unpaid": "Unpaid", - "invoice.field.status.delivered": "Delivered", - "invoice.field.status.draft": "Draft", - "invoice.field.created_at": "Created at", - "estimate.field.amount": "Amount", - "estimate.field.estimate_number": "Estimate number", - "estimate.field.customer": "Customer", - "estimate.field.estimate_date": "Estimate date", - "estimate.field.expiration_date": "Expiration date", - "estimate.field.reference_no": "Reference No.", - "estimate.field.note": "Note", - "estimate.field.terms_conditions": "Terms & conditions", - "estimate.field.status": "Status", - "estimate.field.status.delivered": "Delivered", - "estimate.field.status.rejected": "Rejected", - "estimate.field.status.approved": "Approved", - "estimate.field.status.draft": "Draft", - "estimate.field.created_at": "Created at", - "payment_receive.field.customer": "Customer", - "payment_receive.field.payment_date": "Payment date", - "payment_receive.field.amount": "Amount", - "payment_receive.field.reference_no": "Reference No.", - "payment_receive.field.deposit_account": "Deposit account", - "payment_receive.field.payment_receive_no": "Payment receive No.", - "payment_receive.field.statement": "Statement", - "payment_receive.field.created_at": "Created at", - "bill_payment.field.vendor": "Vendor", - "bill_payment.field.amount": "Amount", - "bill_payment.field.due_amount": "Due amount", - "bill_payment.field.payment_account": "Payment account", - "bill_payment.field.payment_number": "Payment number", - "bill_payment.field.payment_date": "Payment date", - "bill_payment.field.reference_no": "Reference No.", - "bill_payment.field.description": "Description", - "bill_payment.field.created_at": "Created at", - "bill.field.vendor": "Vendor", - "bill.field.bill_number": "Bill number", - "bill.field.bill_date": "Bill date", - "bill.field.due_date": "Due date", - "bill.field.reference_no": "Reference No.", - "bill.field.status": "Status", - "bill.field.status.paid": "Paid", - "bill.field.status.partially-paid": "Partially paid", - "bill.field.status.unpaid": "Unpaid", - "bill.field.status.opened": "Opened", - "bill.field.status.draft": "Draft", - "bill.field.status.overdue": "overdue", - "bill.field.amount": "Amount", - "bill.field.payment_amount": "Payment amount", - "bill.field.note": "Note", - "bill.field.created_at": "Created at", - "inventory_adjustment.field.date": "Date", - "inventory_adjustment.field.type": "Type", - "inventory_adjustment.field.type.increment": "Increment", - "inventory_adjustment.field.type.decrement": "Decrement", - "inventory_adjustment.field.adjustment_account": "Adjustment account", - "inventory_adjustment.field.reason": "Reason", - "inventory_adjustment.field.reference_no": "Reference No.", - "inventory_adjustment.field.description": "Description", - "inventory_adjustment.field.published_at": "Published at", - "inventory_adjustment.field.created_at": "Created at", - "expense.field.payment_date": "Payment date", - "expense.field.payment_account": "Payment account", - "expense.field.amount": "Amount", - "expense.field.reference_no": "Reference No.", - "expense.field.description": "Description", - "expense.field.published": "Published", - "expense.field.status": "Status", - "expense.field.status.draft": "Draft", - "expense.field.status.published": "Published", - "expense.field.created_at": "Created at", - "manual_journal.field.date": "Date", - "manual_journal.field.journal_number": "Journal number", - "manual_journal.field.reference": "Reference No.", - "manual_journal.field.journal_type": "Journal type", - "manual_journal.field.amount": "Amount", - "manual_journal.field.description": "Description", - "manual_journal.field.status": "Status", - "manual_journal.field.created_at": "Created at", - "receipt.field.amount": "Amount", - "receipt.field.deposit_account": "Deposit account", - "receipt.field.customer": "Customer", - "receipt.field.receipt_date": "Receipt date", - "receipt.field.receipt_number": "Receipt number", - "receipt.field.reference_no": "Reference No.", - "receipt.field.receipt_message": "Receipt message", - "receipt.field.statement": "Statement", - "receipt.field.created_at": "Created at", - "receipt.field.status": "Status", - "receipt.field.status.draft": "Draft", - "receipt.field.status.closed": "Closed", - "customer.field.first_name": "First name", - "customer.field.last_name": "Last name", - "customer.field.display_name": "Display name", - "customer.field.email": "Email", - "customer.field.work_phone": "Work phone", - "customer.field.personal_phone": "Personal phone", - "customer.field.company_name": "Company name", - "customer.field.website": "Website", - "customer.field.opening_balance_at": "Opening balance at", - "customer.field.opening_balance": "Opening balance", - "customer.field.created_at": "Created at", - "customer.field.balance": "Balance", - "customer.field.status": "Status", - "customer.field.currency": "Curreny", - "customer.field.status.active": "Active", - "customer.field.status.inactive": "Inactive", - "customer.field.status.overdue": "Overdue", - "customer.field.status.unpaid": "Unpaid", - "vendor.field.first_name": "First name", - "vendor.field.last_name": "Last name", - "vendor.field.display_name": "Display name", - "vendor.field.email": "Email", - "vendor.field.work_phone": "Work phone", - "vendor.field.personal_phone": "Personal phone", - "vendor.field.company_name": "Company name", - "vendor.field.website": "Website", - "vendor.field.opening_balance_at": "Opening balance at", - "vendor.field.opening_balance": "Opening balance", - "vendor.field.created_at": "Created at", - "vendor.field.balance": "Balance", - "vendor.field.status": "Status", - "vendor.field.currency": "Curreny", - "vendor.field.status.active": "Active", - "vendor.field.status.inactive": "Inactive", - "vendor.field.status.overdue": "Overdue", - "vendor.field.status.unpaid": "Unpaid" -} \ No newline at end of file diff --git a/server/src/models/Account.Settings.ts b/server/src/models/Account.Settings.ts deleted file mode 100644 index a7187653f..000000000 --- a/server/src/models/Account.Settings.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { ACCOUNT_TYPES } from 'data/AccountTypes'; - -export default { - defaultFilterField: 'name', - defaultSort: { - sortOrder: 'DESC', - sortField: 'name', - }, - fields: { - name: { - name: 'account.field.name', - column: 'name', - fieldType: 'text', - }, - description: { - name: 'account.field.description', - column: 'description', - fieldType: 'text', - }, - slug: { - name: 'account.field.slug', - column: 'slug', - fieldType: 'text', - columnable: false, - filterable: false, - }, - code: { - name: 'account.field.code', - column: 'code', - fieldType: 'text', - }, - root_type: { - name: 'account.field.root_type', - fieldType: 'enumeration', - options: [ - { key: 'asset', label: 'Asset' }, - { key: 'liability', label: 'Liability' }, - { key: 'equity', label: 'Equity' }, - { key: 'Income', label: 'Income' }, - { key: 'expense', label: 'Expense' }, - ], - filterCustomQuery: RootTypeFieldFilterQuery, - sortable: false, - }, - normal: { - name: 'account.field.normal', - fieldType: 'enumeration', - options: [ - { key: 'debit', label: 'account.field.normal.debit' }, - { key: 'credit', label: 'account.field.normal.credit' }, - ], - filterCustomQuery: NormalTypeFieldFilterQuery, - sortable: false, - }, - type: { - name: 'account.field.type', - column: 'account_type', - fieldType: 'enumeration', - options: ACCOUNT_TYPES.map((accountType) => ({ - label: accountType.label, - key: accountType.key - })), - }, - active: { - name: 'account.field.active', - column: 'active', - fieldType: 'boolean', - filterable: false, - }, - balance: { - name: 'account.field.balance', - column: 'amount', - fieldType: 'number', - }, - currency: { - name: 'account.field.currency', - column: 'currency_code', - fieldType: 'text', - filterable: false, - }, - created_at: { - name: 'account.field.created_at', - column: 'created_at', - fieldType: 'date', - }, - }, -}; - -/** - * Filter query of root type field . - */ -function RootTypeFieldFilterQuery(query, role) { - query.modify('filterByRootType', role.value); -} - -/** - * Filter query of normal field . - */ -function NormalTypeFieldFilterQuery(query, role) { - query.modify('filterByAccountNormal', role.value); -} diff --git a/server/src/models/Account.js b/server/src/models/Account.js deleted file mode 100644 index 6367a6b71..000000000 --- a/server/src/models/Account.js +++ /dev/null @@ -1,275 +0,0 @@ -/* eslint-disable global-require */ -import { mixin, Model } from 'objection'; -import { castArray } from 'lodash'; -import TenantModel from 'models/TenantModel'; -import { buildFilterQuery, buildSortColumnQuery } from 'lib/ViewRolesBuilder'; -import { flatToNestedArray } from 'utils'; -import DependencyGraph from 'lib/DependencyGraph'; -import AccountTypesUtils from 'lib/AccountTypes'; -import AccountSettings from './Account.Settings'; -import ModelSettings from './ModelSetting'; -import { ACCOUNT_TYPES } from 'data/AccountTypes'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/Accounts/constants'; -import ModelSearchable from './ModelSearchable'; - -export default class Account extends mixin(TenantModel, [ - ModelSettings, - CustomViewBaseModel, - ModelSearchable, -]) { - /** - * Table name. - */ - static get tableName() { - return 'accounts'; - } - - /** - * Timestamps columns. - */ - static get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return [ - 'accountTypeLabel', - 'accountParentType', - 'accountRootType', - 'accountNormal', - 'isBalanceSheetAccount', - 'isPLSheet', - ]; - } - - /** - * Account normal. - */ - get accountNormal() { - return AccountTypesUtils.getType(this.accountType, 'normal'); - } - - /** - * Retrieve account type label. - */ - get accountTypeLabel() { - return AccountTypesUtils.getType(this.accountType, 'label'); - } - - /** - * Retrieve account parent type. - */ - get accountParentType() { - return AccountTypesUtils.getType(this.accountType, 'parentType'); - } - - /** - * Retrieve account root type. - */ - get accountRootType() { - return AccountTypesUtils.getType(this.accountType, 'rootType'); - } - - /** - * Retrieve whether the account is balance sheet account. - */ - get isBalanceSheetAccount() { - return this.isBalanceSheet(); - } - - /** - * Retrieve whether the account is profit/loss sheet account. - */ - get isPLSheet() { - return this.isProfitLossSheet(); - } - - /** - * Allows to mark model as resourceable to viewable and filterable. - */ - static get resourceable() { - return true; - } - - /** - * Model modifiers. - */ - static get modifiers() { - const TABLE_NAME = Account.tableName; - - return { - /** - * Inactive/Active mode. - */ - inactiveMode(query, active = false) { - query.where('accounts.active', !active); - }, - - filterAccounts(query, accountIds) { - if (accountIds.length > 0) { - query.whereIn(`${TABLE_NAME}.id`, accountIds); - } - }, - filterAccountTypes(query, typesIds) { - if (typesIds.length > 0) { - query.whereIn('account_types.accoun_type_id', typesIds); - } - }, - viewRolesBuilder(query, conditionals, expression) { - buildFilterQuery(Account.tableName, conditionals, expression)(query); - }, - sortColumnBuilder(query, columnKey, direction) { - buildSortColumnQuery(Account.tableName, columnKey, direction)(query); - }, - - /** - * Filter by root type. - */ - filterByRootType(query, rootType) { - const filterTypes = ACCOUNT_TYPES.filter( - (accountType) => accountType.rootType === rootType - ).map((accountType) => accountType.key); - - query.whereIn('account_type', filterTypes); - }, - - /** - * Filter by account normal - */ - filterByAccountNormal(query, accountNormal) { - const filterTypes = ACCOUNT_TYPES.filter( - (accountType) => accountType.normal === accountNormal - ).map((accountType) => accountType.key); - - query.whereIn('account_type', filterTypes); - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const AccountTransaction = require('models/AccountTransaction'); - - return { - /** - * Account model may has many transactions. - */ - transactions: { - relation: Model.HasManyRelation, - modelClass: AccountTransaction.default, - join: { - from: 'accounts.id', - to: 'accounts_transactions.accountId', - }, - }, - }; - } - - /** - * Detarmines whether the given type equals the account type. - * @param {string} accountType - * @return {boolean} - */ - isAccountType(accountType) { - const types = castArray(accountType); - return types.indexOf(this.accountType) !== -1; - } - - /** - * Detarmines whether the given root type equals the account type. - * @param {string} rootType - * @return {boolean} - */ - isRootType(rootType) { - return AccountTypesUtils.isRootTypeEqualsKey(this.accountType, rootType); - } - - /** - * Detarmine whether the given parent type equals the account type. - * @param {string} parentType - * @return {boolean} - */ - isParentType(parentType) { - return AccountTypesUtils.isParentTypeEqualsKey( - this.accountType, - parentType - ); - } - - /** - * Detarmines whether the account is balance sheet account. - * @return {boolean} - */ - isBalanceSheet() { - return AccountTypesUtils.isTypeBalanceSheet(this.accountType); - } - - /** - * Detarmines whether the account is profit/loss account. - * @return {boolean} - */ - isProfitLossSheet() { - return AccountTypesUtils.isTypePLSheet(this.accountType); - } - - /** - * Detarmines whether the account is income statement account - * @return {boolean} - */ - isIncomeSheet() { - return this.isProfitLossSheet(); - } - - /** - * Converts flatten accounts list to nested array. - * @param {Array} accounts - * @param {Object} options - */ - static toNestedArray(accounts, options = { children: 'children' }) { - return flatToNestedArray(accounts, { - id: 'id', - parentId: 'parentAccountId', - }); - } - - /** - * Transformes the accounts list to depenedency graph structure. - * @param {IAccount[]} accounts - */ - static toDependencyGraph(accounts) { - return DependencyGraph.fromArray(accounts, { - itemId: 'id', - parentItemId: 'parentAccountId', - }); - } - - /** - * Model settings. - */ - static get meta() { - return AccountSettings; - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model search roles. - */ - static get searchRoles() { - return [ - { condition: 'or', fieldKey: 'name', comparator: 'contains' }, - { condition: 'or', fieldKey: 'code', comparator: 'like' }, - ]; - } -} diff --git a/server/src/models/AccountTransaction.js b/server/src/models/AccountTransaction.js deleted file mode 100644 index 0cf9e246a..000000000 --- a/server/src/models/AccountTransaction.js +++ /dev/null @@ -1,186 +0,0 @@ -import { Model, raw } from 'objection'; -import moment from 'moment'; -import TenantModel from 'models/TenantModel'; - -export default class AccountTransaction extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'accounts_transactions'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return ['referenceTypeFormatted']; - } - - /** - * Retrieve formatted reference type. - * @return {string} - */ - get referenceTypeFormatted() { - return AccountTransaction.getReferenceTypeFormatted(this.referenceType); - } - - /** - * Reference type formatted. - */ - static getReferenceTypeFormatted(referenceType) { - const mapped = { - 'SaleInvoice': 'Sale invoice', - 'SaleReceipt': 'Sale receipt', - 'PaymentReceive': 'Payment receive', - 'Bill': 'Bill', - 'BillPayment': 'Payment made', - 'VendorOpeningBalance': 'Vendor opening balance', - 'CustomerOpeningBalance': 'Customer opening balance', - 'InventoryAdjustment': 'Inventory adjustment', - 'ManualJournal': 'Manual journal', - 'Journal': 'Manual journal', - }; - return mapped[referenceType] || ''; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - /** - * Filters accounts by the given ids. - * @param {Query} query - * @param {number[]} accountsIds - */ - filterAccounts(query, accountsIds) { - if (Array.isArray(accountsIds) && accountsIds.length > 0) { - query.whereIn('account_id', accountsIds); - } - }, - filterTransactionTypes(query, types) { - if (Array.isArray(types) && types.length > 0) { - query.whereIn('reference_type', types); - } else if (typeof types === 'string') { - query.where('reference_type', types); - } - }, - filterDateRange(query, startDate, endDate, type = 'day') { - const dateFormat = 'YYYY-MM-DD HH:mm:ss'; - const fromDate = moment(startDate).startOf(type).format(dateFormat); - const toDate = moment(endDate).endOf(type).format(dateFormat); - - if (startDate) { - query.where('date', '>=', fromDate); - } - if (endDate) { - query.where('date', '<=', toDate); - } - }, - filterAmountRange(query, fromAmount, toAmount) { - if (fromAmount) { - query.andWhere((q) => { - q.where('credit', '>=', fromAmount); - q.orWhere('debit', '>=', fromAmount); - }); - } - if (toAmount) { - query.andWhere((q) => { - q.where('credit', '<=', toAmount); - q.orWhere('debit', '<=', toAmount); - }); - } - }, - sumationCreditDebit(query) { - query.select(['accountId']); - - query.sum('credit as credit'); - query.sum('debit as debit'); - query.groupBy('account_id'); - }, - filterContactType(query, contactType) { - query.where('contact_type', contactType); - }, - filterContactIds(query, contactIds) { - query.whereIn('contact_id', contactIds); - }, - openingBalance(query, fromDate) { - query.modify('filterDateRange', null, fromDate) - query.modify('sumationCreditDebit') - }, - closingBalance(query, toDate) { - query.modify('filterDateRange', null, toDate) - query.modify('sumationCreditDebit') - }, - - contactsOpeningBalance(query, openingDate, receivableAccounts, customersIds) { - // Filter by date. - query.modify('filterDateRange', null, openingDate); - - // Filter by customers. - query.whereNot('contactId', null); - query.where('accountId', receivableAccounts); - - if (customersIds) { - query.whereIn('contactId', customersIds); - } - - // Group by the contact transactions. - query.groupBy('contactId'); - query.sum('credit as credit'); - query.sum('debit as debit'); - query.select('contactId'); - }, - creditDebitSummation(query) { - query.sum('credit as credit'); - query.sum('debit as debit'); - }, - groupByDateFormat(query, groupType = 'month') { - const groupBy = { - 'day': '%Y-%m-%d', - 'month': '%Y-%m', - 'year': '%Y', - }; - const dateFormat = groupBy[groupType]; - - query.select(raw(`DATE_FORMAT(DATE, '${dateFormat}')`).as('date')); - query.groupByRaw(`DATE_FORMAT(DATE, '${dateFormat}')`); - } - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Account = require('models/Account'); - const Contact = require('models/Contact'); - - return { - account: { - relation: Model.BelongsToOneRelation, - modelClass: Account.default, - join: { - from: 'accounts_transactions.accountId', - to: 'accounts.id', - }, - }, - contact: { - relation: Model.BelongsToOneRelation, - modelClass: Contact.default, - join: { - from: 'accounts_transactions.contactId', - to: 'contacts.id', - }, - }, - }; - } -} diff --git a/server/src/models/Auth.js b/server/src/models/Auth.js deleted file mode 100644 index 93dc11103..000000000 --- a/server/src/models/Auth.js +++ /dev/null @@ -1,38 +0,0 @@ - -export default class Auth { - /** - * Retrieve the authenticated user. - */ - static get user() { - return null; - } - - /** - * Sets the authenticated user. - * @param {User} user - */ - static setAuthenticatedUser(user) { - this.user = user; - } - - /** - * Retrieve the authenticated user ID. - */ - static userId() { - if (!this.user) { - return false; - } - return this.user.id; - } - - /** - * Whether the user is logged or not. - */ - static isLogged() { - return !!this.user; - } - - static loggedOut() { - this.user = null; - } -} diff --git a/server/src/models/Bill.Settings.ts b/server/src/models/Bill.Settings.ts deleted file mode 100644 index 82aec9e94..000000000 --- a/server/src/models/Bill.Settings.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { IModelMeta } from 'interfaces'; -import Bill from './Bill'; - -export default { - defaultFilterField: 'vendor', - defaultSort: { - sortOrder: 'DESC', - sortField: 'bill_date', - }, - fields: { - vendor: { - name: 'bill.field.vendor', - column: 'vendor_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'vendor', - - relationEntityLabel: 'name', - relationEntityKey: 'id', - }, - bill_number: { - name: 'bill.field.bill_number', - column: 'bill_number', - columnable: true, - fieldType: 'text', - }, - bill_date: { - name: 'bill.field.bill_date', - column: 'bill_date', - columnable: true, - fieldType: 'date', - }, - due_date: { - name: 'bill.field.due_date', - column: 'due_date', - columnable: true, - fieldType: 'date', - }, - reference_no: { - name: 'bill.field.reference_no', - column: 'reference_no', - columnable: true, - fieldType: 'text', - }, - status: { - name: 'bill.field.status', - fieldType: 'enumeration', - columnable: true, - options: [ - { label: 'bill.field.status.paid', key: 'paid' }, - { label: 'bill.field.status.partially-paid', key: 'partially-paid' }, - { label: 'bill.field.status.overdue', key: 'overdue' }, - { label: 'bill.field.status.unpaid', key: 'unpaid' }, - { label: 'bill.field.status.opened', key: 'opened' }, - { label: 'bill.field.status.draft', key: 'draft' }, - ], - filterCustomQuery: StatusFieldFilterQuery, - sortCustomQuery: StatusFieldSortQuery, - }, - amount: { - name: 'bill.field.amount', - column: 'amount', - fieldType: 'number', - }, - payment_amount: { - name: 'bill.field.payment_amount', - column: 'payment_amount', - fieldType: 'number', - }, - note: { - name: 'bill.field.note', - column: 'note', - fieldType: 'text', - }, - created_at: { - name: 'bill.field.created_at', - column: 'created_at', - fieldType: 'date', - }, - }, -}; - -/** - * Status field filter custom query. - */ -function StatusFieldFilterQuery(query, role) { - query.modify('statusFilter', role.value); -} - -/** - * Status field sort custom query. - */ -function StatusFieldSortQuery(query, role) { - query.modify('sortByStatus', role.order); -} diff --git a/server/src/models/Bill.js b/server/src/models/Bill.js deleted file mode 100644 index c7527e0aa..000000000 --- a/server/src/models/Bill.js +++ /dev/null @@ -1,331 +0,0 @@ -import { Model, raw, mixin } from 'objection'; -import moment from 'moment'; -import { difference } from 'lodash'; -import TenantModel from 'models/TenantModel'; -import BillSettings from './Bill.Settings'; -import ModelSetting from './ModelSetting'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/Purchases/constants'; -import ModelSearchable from './ModelSearchable'; - -export default class Bill extends mixin(TenantModel, [ - ModelSetting, - CustomViewBaseModel, - ModelSearchable -]) { - /** - * Table name - */ - static get tableName() { - return 'bills'; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - /** - * Filters the bills in draft status. - */ - draft(query) { - query.where('opened_at', null); - }, - /** - * Filters the opened bills. - */ - opened(query) { - query.whereNot('opened_at', null); - }, - /** - * Filters the unpaid bills. - */ - unpaid(query) { - query.where('payment_amount', 0); - }, - /** - * Filters the due bills. - */ - dueBills(query) { - query.where(raw('AMOUNT - PAYMENT_AMOUNT > 0')); - }, - /** - * Filters the overdue bills. - */ - overdue(query) { - query.where('due_date', '<', moment().format('YYYY-MM-DD')); - }, - /** - * Filters the not overdue invoices. - */ - notOverdue(query, asDate = moment().format('YYYY-MM-DD')) { - query.where('due_date', '>=', asDate); - }, - /** - * Filters the partially paid bills. - */ - partiallyPaid(query) { - query.whereNot('payment_amount', 0); - query.whereNot(raw('`PAYMENT_AMOUNT` = `AMOUNT`')); - }, - /** - * Filters the paid bills. - */ - paid(query) { - query.where(raw('`PAYMENT_AMOUNT` = `AMOUNT`')); - }, - /** - * Filters the bills from the given date. - */ - fromDate(query, fromDate) { - query.where('bill_date', '<=', fromDate); - }, - - /** - * Sort the bills by full-payment bills. - */ - sortByStatus(query, order) { - query.orderByRaw(`PAYMENT_AMOUNT = AMOUNT ${order}`); - }, - - /** - * Status filter. - */ - statusFilter(query, filterType) { - switch (filterType) { - case 'draft': - query.modify('draft'); - break; - case 'delivered': - query.modify('delivered'); - break; - case 'unpaid': - query.modify('unpaid'); - break; - case 'overdue': - default: - query.modify('overdue'); - break; - case 'partially-paid': - query.modify('partiallyPaid'); - break; - case 'paid': - query.modify('paid'); - break; - } - }, - }; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return [ - 'dueAmount', - 'isOpen', - 'isPartiallyPaid', - 'isFullyPaid', - 'isPaid', - 'remainingDays', - 'overdueDays', - 'isOverdue', - 'unallocatedCostAmount', - ]; - } - - /** - * Due amount of the given. - * @return {number} - */ - get dueAmount() { - return Math.max(this.amount - this.paymentAmount, 0); - } - - /** - * Detarmine whether the bill is open. - * @return {boolean} - */ - get isOpen() { - return !!this.openedAt; - } - - /** - * Deetarmine whether the bill paid partially. - * @return {boolean} - */ - get isPartiallyPaid() { - return this.dueAmount !== this.amount && this.dueAmount > 0; - } - - /** - * Deetarmine whether the bill paid fully. - * @return {boolean} - */ - get isFullyPaid() { - return this.dueAmount === 0; - } - - /** - * Detarmines whether the bill paid fully or partially. - * @return {boolean} - */ - get isPaid() { - return this.isPartiallyPaid || this.isFullyPaid; - } - - /** - * Retrieve the remaining days in number - * @return {number|null} - */ - get remainingDays() { - // Can't continue in case due date not defined. - if (!this.dueDate) { - return null; - } - - const date = moment(); - const dueDate = moment(this.dueDate); - - return Math.max(dueDate.diff(date, 'days'), 0); - } - - /** - * Retrieve the overdue days in number. - * @return {number|null} - */ - get overdueDays() { - return this.getOverdueDays(); - } - - /** - * Detarmines the due date is over. - * @return {boolean} - */ - get isOverdue() { - return this.overdueDays > 0; - } - - /** - * Retrieve the unallocated cost amount. - * @return {number} - */ - get unallocatedCostAmount() { - return Math.max(this.landedCostAmount - this.allocatedCostAmount, 0); - } - - getOverdueDays(asDate = moment().format('YYYY-MM-DD')) { - // Can't continue in case due date not defined. - if (!this.dueDate) { - return null; - } - const date = moment(asDate); - const dueDate = moment(this.dueDate); - - return Math.max(date.diff(dueDate, 'days'), 0); - } - - /** - * Bill model settings. - */ - static get meta() { - return BillSettings; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Contact = require('models/Contact'); - const ItemEntry = require('models/ItemEntry'); - const BillLandedCost = require('models/BillLandedCost'); - - return { - vendor: { - relation: Model.BelongsToOneRelation, - modelClass: Contact.default, - join: { - from: 'bills.vendorId', - to: 'contacts.id', - }, - filter(query) { - query.where('contact_service', 'vendor'); - }, - }, - - entries: { - relation: Model.HasManyRelation, - modelClass: ItemEntry.default, - join: { - from: 'bills.id', - to: 'items_entries.referenceId', - }, - filter(builder) { - builder.where('reference_type', 'Bill'); - }, - }, - - locatedLandedCosts: { - relation: Model.HasManyRelation, - modelClass: BillLandedCost.default, - join: { - from: 'bills.id', - to: 'bill_located_costs.billId', - }, - }, - }; - } - - /** - * Retrieve the not found bills ids as array that associated to the given vendor. - * @param {Array} billsIds - * @param {number} vendorId - - * @return {Array} - */ - static async getNotFoundBills(billsIds, vendorId) { - const storedBills = await this.query().onBuild((builder) => { - builder.whereIn('id', billsIds); - - if (vendorId) { - builder.where('vendor_id', vendorId); - } - }); - - const storedBillsIds = storedBills.map((t) => t.id); - - const notFoundBillsIds = difference(billsIds, storedBillsIds); - return notFoundBillsIds; - } - - static changePaymentAmount(billId, amount) { - const changeMethod = amount > 0 ? 'increment' : 'decrement'; - return this.query() - .where('id', billId) - [changeMethod]('payment_amount', Math.abs(amount)); - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model search attributes. - */ - static get searchRoles() { - return [ - { fieldKey: 'bill_number', comparator: 'contains' }, - { condition: 'or', fieldKey: 'reference_no', comparator: 'contains' }, - { condition: 'or', fieldKey: 'amount', comparator: 'equals' }, - ]; - } -} diff --git a/server/src/models/BillLandedCost.js b/server/src/models/BillLandedCost.js deleted file mode 100644 index ffa69eaeb..000000000 --- a/server/src/models/BillLandedCost.js +++ /dev/null @@ -1,65 +0,0 @@ -import { Model } from 'objection'; -import { lowerCase } from 'lodash'; -import TenantModel from 'models/TenantModel'; - -export default class BillLandedCost extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'bill_located_costs'; - } - - /** - * Model timestamps. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return ['allocationMethodFormatted']; - } - - /** - * Allocation method formatted. - */ - get allocationMethodFormatted() { - const allocationMethod = lowerCase(this.allocationMethod); - const keyLabelsPairs = { - value: 'Value', - quantity: 'Quantity', - }; - return keyLabelsPairs[allocationMethod] || ''; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const BillLandedCostEntry = require('models/BillLandedCostEntry'); - const Bill = require('models/Bill'); - - return { - bill: { - relation: Model.BelongsToOneRelation, - modelClass: Bill.default, - join: { - from: 'bill_located_costs.billId', - to: 'bills.id', - }, - }, - allocateEntries: { - relation: Model.HasManyRelation, - modelClass: BillLandedCostEntry.default, - join: { - from: 'bill_located_costs.id', - to: 'bill_located_cost_entries.billLocatedCostId', - }, - }, - }; - } -} diff --git a/server/src/models/BillLandedCostEntry.js b/server/src/models/BillLandedCostEntry.js deleted file mode 100644 index d4f3fc833..000000000 --- a/server/src/models/BillLandedCostEntry.js +++ /dev/null @@ -1,32 +0,0 @@ -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class BillLandedCostEntry extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'bill_located_cost_entries'; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const ItemEntry = require('models/ItemEntry'); - - return { - itemEntry: { - relation: Model.BelongsToOneRelation, - modelClass: ItemEntry.default, - join: { - from: 'bill_located_cost_entries.entryId', - to: 'items_entries.referenceId', - }, - filter(builder) { - builder.where('reference_type', 'Bill'); - }, - }, - }; - } -} diff --git a/server/src/models/BillPayment.Settings.ts b/server/src/models/BillPayment.Settings.ts deleted file mode 100644 index 8ca4113b2..000000000 --- a/server/src/models/BillPayment.Settings.ts +++ /dev/null @@ -1,66 +0,0 @@ -export default { - defaultFilterField: 'vendor', - defaultSort: { - sortOrder: 'DESC', - sortField: 'bill_date', - }, - fields: { - vendor: { - name: 'bill_payment.field.vendor', - column: 'vendor_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'vendor', - - relationEntityLabel: 'display_name', - relationEntityKey: 'id', - }, - amount: { - name: 'bill_payment.field.amount', - column: 'amount', - fieldType: 'number', - }, - due_amount: { - name: 'bill_payment.field.due_amount', - column: 'due_amount', - fieldType: 'number', - }, - payment_account: { - name: 'bill_payment.field.payment_account', - column: 'payment_account_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'paymentAccount', - - relationEntityLabel: 'name', - relationEntityKey: 'slug', - }, - payment_number: { - name: 'bill_payment.field.payment_number', - column: 'payment_number', - fieldType: 'text', - }, - payment_date: { - name: 'bill_payment.field.payment_date', - column: 'payment_date', - fieldType: 'date', - }, - reference_no: { - name: 'bill_payment.field.reference_no', - column: 'reference', - fieldType: 'text', - }, - description: { - name: 'bill_payment.field.description', - column: 'description', - fieldType: 'text', - }, - created_at: { - name: 'bill_payment.field.created_at', - column: 'created_at', - fieldType: 'date', - }, - }, -}; diff --git a/server/src/models/BillPayment.js b/server/src/models/BillPayment.js deleted file mode 100644 index 846ead395..000000000 --- a/server/src/models/BillPayment.js +++ /dev/null @@ -1,106 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; -import ModelSetting from './ModelSetting'; -import BillPaymentSettings from './BillPayment.Settings'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/Sales/PaymentReceives/constants'; -import ModelSearchable from './ModelSearchable'; - -export default class BillPayment extends mixin(TenantModel, [ - ModelSetting, - CustomViewBaseModel, - ModelSearchable, -]) { - /** - * Table name - */ - static get tableName() { - return 'bills_payments'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Model settings. - */ - static get meta() { - return BillPaymentSettings; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const BillPaymentEntry = require('models/BillPaymentEntry'); - const AccountTransaction = require('models/AccountTransaction'); - const Vendor = require('models/Vendor'); - const Account = require('models/Account'); - - return { - entries: { - relation: Model.HasManyRelation, - modelClass: BillPaymentEntry.default, - join: { - from: 'bills_payments.id', - to: 'bills_payments_entries.billPaymentId', - }, - }, - - vendor: { - relation: Model.BelongsToOneRelation, - modelClass: Vendor.default, - join: { - from: 'bills_payments.vendorId', - to: 'contacts.id', - }, - filter(query) { - query.where('contact_service', 'vendor'); - }, - }, - - paymentAccount: { - relation: Model.BelongsToOneRelation, - modelClass: Account.default, - join: { - from: 'bills_payments.paymentAccountId', - to: 'accounts.id', - }, - }, - - transactions: { - relation: Model.HasManyRelation, - modelClass: AccountTransaction.default, - join: { - from: 'bills_payments.id', - to: 'accounts_transactions.referenceId', - }, - filter(builder) { - builder.where('reference_type', 'BillPayment'); - }, - }, - }; - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model search attributes. - */ - static get searchRoles() { - return [ - { fieldKey: 'payment_number', comparator: 'contains' }, - { condition: 'or', fieldKey: 'reference_no', comparator: 'contains' }, - { condition: 'or', fieldKey: 'amount', comparator: 'equals' }, - ]; - } -} diff --git a/server/src/models/BillPaymentEntry.js b/server/src/models/BillPaymentEntry.js deleted file mode 100644 index 3167ec553..000000000 --- a/server/src/models/BillPaymentEntry.js +++ /dev/null @@ -1,36 +0,0 @@ -import { mixin, Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class BillPaymentEntry extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'bills_payments_entries'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return []; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Bill = require('models/Bill'); - - return { - bill: { - relation: Model.BelongsToOneRelation, - modelClass: Bill.default, - join: { - from: 'bills_payments_entries.billId', - to: 'bills.id', - }, - }, - }; - } -} diff --git a/server/src/models/Contact.js b/server/src/models/Contact.js deleted file mode 100644 index 940351cad..000000000 --- a/server/src/models/Contact.js +++ /dev/null @@ -1,130 +0,0 @@ -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class Contact extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'contacts'; - } - - /** - * Model timestamps. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Defined virtual attributes. - */ - static get virtualAttributes() { - return ['contactNormal', 'closingBalance', 'formattedContactService']; - } - - /** - * Retrieve the contact normal by the given contact type. - */ - static getContactNormalByType(contactType) { - const types = { - 'vendor': 'credit', - 'customer': 'debit', - }; - return types[contactType]; - } - - /** - * Retrieve the contact normal by the given contact service. - * @param {string} contactService - */ - static getFormattedContactService(contactService) { - const types = { - 'customer': 'Customer', - 'vendor': 'Vendor', - }; - return types[contactService]; - } - - /** - * Retrieve the contact normal. - */ - get contactNormal() { - return Contact.getContactNormalByType(this.contactService); - } - - /** - * Retrieve formatted contact service. - */ - get formattedContactService() { - return Contact.getFormattedContactService(this.contactService); - } - - /** - * Closing balance attribute. - */ - get closingBalance() { - return this.balance; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - filterContactIds(query, customerIds) { - query.whereIn('id', customerIds); - }, - - customer(query) { - query.where('contact_service', 'customer'); - }, - - vendor(query){ - query.where('contact_service', 'vendor'); - } - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const SaleInvoice = require('models/SaleInvoice'); - const Bill = require('models/Bill'); - - return { - salesInvoices: { - relation: Model.HasManyRelation, - modelClass: SaleInvoice.default, - join: { - from: 'contacts.id', - to: 'sales_invoices.customerId', - }, - }, - - bills: { - relation: Model.HasManyRelation, - modelClass: Bill.default, - join: { - from: 'contacts.id', - to: 'bills.vendorId', - }, - } - }; - } - - static get fields() { - return { - contact_service: { - column: 'contact_service', - }, - display_name: { - column: 'display_name', - }, - created_at: { - column: 'created_at', - } - }; - } -} diff --git a/server/src/models/Currency.js b/server/src/models/Currency.js deleted file mode 100644 index fe091dd67..000000000 --- a/server/src/models/Currency.js +++ /dev/null @@ -1,21 +0,0 @@ -import TenantModel from 'models/TenantModel'; - -export default class Currency extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'currencies'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - static get resourceable() { - return true; - } -} diff --git a/server/src/models/CustomViewBaseModel.js b/server/src/models/CustomViewBaseModel.js deleted file mode 100644 index a54520023..000000000 --- a/server/src/models/CustomViewBaseModel.js +++ /dev/null @@ -1,20 +0,0 @@ -export default (Model) => - class CustomViewBaseModel extends Model { - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return []; - } - - /** - * Retrieve the default view by the given slug. - */ - static getDefaultViewBySlug(viewSlug) { - return this.defaultViews.find((view) => view.slug === viewSlug) || null; - } - - static getDefaultViews() { - return this.defaultViews; - } - }; diff --git a/server/src/models/Customer.Settings.ts b/server/src/models/Customer.Settings.ts deleted file mode 100644 index 1d22941cf..000000000 --- a/server/src/models/Customer.Settings.ts +++ /dev/null @@ -1,92 +0,0 @@ -export default { - fields: { - first_name: { - name: 'customer.field.first_name', - column: 'first_name', - fieldType: 'text', - }, - last_name: { - name: 'customer.field.last_name', - column: 'last_name', - fieldType: 'text', - }, - display_name: { - name: 'customer.field.display_name', - column: 'display_name', - fieldType: 'text', - }, - email: { - name: 'customer.field.email', - column: 'email', - fieldType: 'text', - }, - work_phone: { - name: 'customer.field.work_phone', - column: 'work_phone', - fieldType: 'text', - }, - personal_phone: { - name: 'customer.field.personal_phone', - column: 'personal_phone', - fieldType: 'text', - }, - company_name: { - name: 'customer.field.company_name', - column: 'company_name', - fieldType: 'text', - }, - website: { - name: 'customer.field.website', - column: 'website', - fieldType: 'text', - }, - created_at: { - name: 'customer.field.created_at', - column: 'created_at', - fieldType: 'date', - }, - balance: { - name: 'customer.field.balance', - column: 'balance', - fieldType: 'number', - }, - opening_balance: { - name: 'customer.field.opening_balance', - column: 'opening_balance', - fieldType: 'number', - }, - opening_balance_at: { - name: 'customer.field.opening_balance_at', - column: 'opening_balance_at', - filterable: false, - fieldType: 'date', - }, - currency_code: { - name: 'customer.field.currency', - column: 'currency_code', - fieldType: 'text', - }, - status: { - name: 'customer.field.status', - fieldType: 'enumeration', - options: [ - { key: 'active', label: 'customer.field.status.active' }, - { key: 'inactive', label: 'customer.field.status.inactive' }, - { key: 'overdue', label: 'customer.field.status.overdue' }, - { key: 'unpaid', label: 'customer.field.status.unpaid' }, - ], - filterCustomQuery: statusFieldFilterQuery, - }, - }, -}; - -function statusFieldFilterQuery(query, role) { - switch (role.value) { - case 'overdue': - query.modify('overdue'); - break; - case 'unpaid': - query.modify('unpaid'); - break; - } -} diff --git a/server/src/models/Customer.js b/server/src/models/Customer.js deleted file mode 100644 index d2e213d8c..000000000 --- a/server/src/models/Customer.js +++ /dev/null @@ -1,170 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; -import PaginationQueryBuilder from './Pagination'; -import ModelSetting from './ModelSetting'; -import CustomerSettings from './Customer.Settings'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/Contacts/Customers/constants'; -import ModelSearchable from './ModelSearchable'; - -class CustomerQueryBuilder extends PaginationQueryBuilder { - constructor(...args) { - super(...args); - - this.onBuild((builder) => { - if (builder.isFind() || builder.isDelete() || builder.isUpdate()) { - builder.where('contact_service', 'customer'); - } - }); - } -} - -export default class Customer extends mixin(TenantModel, [ - ModelSetting, - CustomViewBaseModel, - ModelSearchable -]) { - /** - * Query builder. - */ - static get QueryBuilder() { - return CustomerQueryBuilder; - } - - /** - * Table name - */ - static get tableName() { - return 'contacts'; - } - - /** - * Model timestamps. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Defined virtual attributes. - */ - static get virtualAttributes() { - return ['closingBalance', 'contactNormal']; - } - - /** - * Closing balance attribute. - */ - get closingBalance() { - return this.balance; - } - - /** - * Retrieve the contact noraml; - */ - get contactNormal() { - return 'debit'; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - /** - * Inactive/Active mode. - */ - inactiveMode(query, active = false) { - query.where('active', !active); - }, - - /** - * Filters the active customers. - */ - active(query) { - query.where('active', 1); - }, - /** - * Filters the inactive customers. - */ - inactive(query) { - query.where('active', 0); - }, - /** - * Filters the customers that have overdue invoices. - */ - overdue(query) { - query.select( - '*', - Customer.relatedQuery('overDueInvoices', query.knex()) - .count() - .as('countOverdue') - ); - query.having('countOverdue', '>', 0); - }, - /** - * Filters the unpaid customers. - */ - unpaid(query) { - query.whereRaw('`BALANCE` + `OPENING_BALANCE` <> 0'); - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const SaleInvoice = require('models/SaleInvoice'); - - return { - salesInvoices: { - relation: Model.HasManyRelation, - modelClass: SaleInvoice.default, - join: { - from: 'contacts.id', - to: 'sales_invoices.customerId', - }, - }, - - overDueInvoices: { - relation: Model.HasManyRelation, - modelClass: SaleInvoice.default, - join: { - from: 'contacts.id', - to: 'sales_invoices.customerId', - }, - filter: (query) => { - query.modify('overdue'); - }, - }, - }; - } - - static get meta() { - return CustomerSettings; - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model search attributes. - */ - static get searchRoles() { - return [ - { fieldKey: 'display_name', comparator: 'contains' }, - { condition: 'or', fieldKey: 'first_name', comparator: 'contains' }, - { condition: 'or', fieldKey: 'last_name', comparator: 'equals' }, - { condition: 'or', fieldKey: 'company_name', comparator: 'equals' }, - { condition: 'or', fieldKey: 'email', comparator: 'equals' }, - { condition: 'or', fieldKey: 'work_phone', comparator: 'equals' }, - { condition: 'or', fieldKey: 'personal_phone', comparator: 'equals' }, - { condition: 'or', fieldKey: 'website', comparator: 'equals' }, - ]; - } -} diff --git a/server/src/models/DateSession.js b/server/src/models/DateSession.js deleted file mode 100644 index 14f981ee7..000000000 --- a/server/src/models/DateSession.js +++ /dev/null @@ -1,34 +0,0 @@ -import moment from 'moment'; - -export default (Model) => { - return class DateSession extends Model { - - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - $beforeUpdate(opt, context) { - const maybePromise = super.$beforeUpdate(opt, context); - - return Promise.resolve(maybePromise).then(() => { - const key = this.timestamps[1]; - - if (key && !this[key]) { - this[key] = moment().format('YYYY/MM/DD HH:mm:ss'); - } - }); - } - - $beforeInsert(context) { - const maybePromise = super.$beforeInsert(context); - - return Promise.resolve(maybePromise).then(() => { - const key = this.timestamps[0]; - - if (key && !this[key]) { - this[key] = moment().format('YYYY/MM/DD HH:mm:ss'); - } - }); - } - } -} \ No newline at end of file diff --git a/server/src/models/ExchangeRate.js b/server/src/models/ExchangeRate.js deleted file mode 100644 index c0e4c2939..000000000 --- a/server/src/models/ExchangeRate.js +++ /dev/null @@ -1,44 +0,0 @@ -import bcrypt from 'bcryptjs'; -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class ExchangeRate extends TenantModel { - /** - * Table name. - */ - static get tableName() { - return 'exchange_rates'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Model defined fields. - */ - static get fields(){ - return { - currency_code: { - label: 'Currency', - column: 'currency_code' - }, - exchange_rate: { - label: 'Exchange rate', - column: 'exchange_rate', - }, - date: { - label: 'Date', - column: 'date', - }, - created_at: { - label: "Created at", - column: "created_at", - columnType: "date", - }, - } - } -} \ No newline at end of file diff --git a/server/src/models/Expense.Settings.ts b/server/src/models/Expense.Settings.ts deleted file mode 100644 index 0d8ea8712..000000000 --- a/server/src/models/Expense.Settings.ts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Expense - Settings. - */ -export default { - defaultFilterField: 'description', - defaultSort: { - sortOrder: 'DESC', - sortField: 'name', - }, - fields: { - 'payment_date': { - name: 'expense.field.payment_date', - column: 'payment_date', - fieldType: 'date', - }, - 'payment_account': { - name: 'expense.field.payment_account', - column: 'payment_account_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'paymentAccount', - - relationEntityLabel: 'name', - relationEntityKey: 'slug', - }, - 'amount': { - name: 'expense.field.amount', - column: 'total_amount', - fieldType: 'number', - }, - 'reference_no': { - name: 'expense.field.reference_no', - column: 'reference_no', - fieldType: 'text', - }, - 'description': { - name: 'expense.field.description', - column: 'description', - fieldType: 'text', - }, - 'published': { - name: 'expense.field.published', - column: 'published_at', - fieldType: 'date', - }, - 'status': { - name: 'expense.field.status', - fieldType: 'enumeration', - options: [ - { label: 'expense.field.status.draft', key: 'draft' }, - { label: 'expense.field.status.published', key: 'published' }, - ], - filterCustomQuery: StatusFieldFilterQuery, - sortCustomQuery: StatusFieldSortQuery, - }, - 'created_at': { - name: 'expense.field.created_at', - column: 'created_at', - fieldType: 'date', - }, - }, -}; - -function StatusFieldFilterQuery(query, role) { - query.modify('filterByStatus', role.value); -} - -function StatusFieldSortQuery(query, role) { - query.modify('sortByStatus', role.order); -} diff --git a/server/src/models/Expense.js b/server/src/models/Expense.js deleted file mode 100644 index eed7ee38d..000000000 --- a/server/src/models/Expense.js +++ /dev/null @@ -1,175 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; -import { viewRolesBuilder } from 'lib/ViewRolesBuilder'; -import ModelSetting from './ModelSetting'; -import ExpenseSettings from './Expense.Settings'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/Expenses/constants'; -import ModelSearchable from './ModelSearchable'; - -export default class Expense extends mixin(TenantModel, [ - ModelSetting, - CustomViewBaseModel, - ModelSearchable, -]) { - /** - * Table name - */ - static get tableName() { - return 'expenses_transactions'; - } - - /** - * Account transaction reference type. - */ - static get referenceType() { - return 'Expense'; - } - - /** - * Model timestamps. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return ['isPublished', 'unallocatedCostAmount']; - } - - isPublished() { - return Boolean(this.publishedAt); - } - - /** - * Retrieve the unallocated cost amount. - * @return {number} - */ - get unallocatedCostAmount() { - return Math.max(this.amount - this.allocatedCostAmount, 0); - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - filterByDateRange(query, startDate, endDate) { - if (startDate) { - query.where('date', '>=', startDate); - } - if (endDate) { - query.where('date', '<=', endDate); - } - }, - filterByAmountRange(query, from, to) { - if (from) { - query.where('amount', '>=', from); - } - if (to) { - query.where('amount', '<=', to); - } - }, - filterByExpenseAccount(query, accountId) { - if (accountId) { - query.where('expense_account_id', accountId); - } - }, - filterByPaymentAccount(query, accountId) { - if (accountId) { - query.where('payment_account_id', accountId); - } - }, - viewRolesBuilder(query, conditionals, expression) { - viewRolesBuilder(conditionals, expression)(query); - }, - - filterByDraft(query) { - query.where('published_at', null); - }, - - filterByPublished(query) { - query.whereNot('published_at', null); - }, - - filterByStatus(query, status) { - switch (status) { - case 'draft': - query.modify('filterByDraft'); - break; - case 'published': - default: - query.modify('filterByPublished'); - break; - } - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Account = require('models/Account'); - const ExpenseCategory = require('models/ExpenseCategory'); - const Media = require('models/Media'); - - return { - paymentAccount: { - relation: Model.BelongsToOneRelation, - modelClass: Account.default, - join: { - from: 'expenses_transactions.paymentAccountId', - to: 'accounts.id', - }, - }, - categories: { - relation: Model.HasManyRelation, - modelClass: ExpenseCategory.default, - join: { - from: 'expenses_transactions.id', - to: 'expense_transaction_categories.expenseId', - }, - }, - media: { - relation: Model.ManyToManyRelation, - modelClass: Media.default, - join: { - from: 'expenses_transactions.id', - through: { - from: 'media_links.model_id', - to: 'media_links.media_id', - }, - to: 'media.id', - }, - filter(query) { - query.where('model_name', 'Expense'); - }, - }, - }; - } - - static get meta() { - return ExpenseSettings; - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model search attributes. - */ - static get searchRoles() { - return [ - { fieldKey: 'reference_no', comparator: 'contains' }, - { condition: 'or', fieldKey: 'amount', comparator: 'equals' }, - ]; - } -} diff --git a/server/src/models/ExpenseCategory.js b/server/src/models/ExpenseCategory.js deleted file mode 100644 index 50416805e..000000000 --- a/server/src/models/ExpenseCategory.js +++ /dev/null @@ -1,44 +0,0 @@ -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class ExpenseCategory extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'expense_transaction_categories'; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return ['unallocatedCostAmount']; - } - - /** - * Remain unallocated landed cost. - * @return {number} - */ - get unallocatedCostAmount() { - return Math.max(this.amount - this.allocatedCostAmount, 0); - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Account = require('models/Account'); - - return { - expenseAccount: { - relation: Model.BelongsToOneRelation, - modelClass: Account.default, - join: { - from: 'expense_transaction_categories.expenseAccountId', - to: 'accounts.id', - }, - }, - }; - } -} diff --git a/server/src/models/InventoryAdjustment.Settings.ts b/server/src/models/InventoryAdjustment.Settings.ts deleted file mode 100644 index 9ef90cbc5..000000000 --- a/server/src/models/InventoryAdjustment.Settings.ts +++ /dev/null @@ -1,59 +0,0 @@ -export default { - defaultFilterField: 'date', - defaultSort: { - sortOrder: 'DESC', - sortField: 'date', - }, - fields: { - date: { - name: 'inventory_adjustment.field.date', - column: 'date', - fieldType: 'date', - }, - type: { - name: 'inventory_adjustment.field.type', - column: 'type', - fieldType: 'enumeration', - options: [ - { key: 'increment', name: 'inventory_adjustment.field.type.increment' }, - { key: 'decrement', name: 'inventory_adjustment.field.type.decrement' }, - ], - }, - adjustment_account: { - name: 'inventory_adjustment.field.adjustment_account', - column: 'adjustment_account_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'adjustmentAccount', - - relationEntityLabel: 'name', - relationEntityKey: 'slug', - }, - reason: { - name: 'inventory_adjustment.field.reason', - column: 'reason', - fieldType: 'text', - }, - reference_no: { - name: 'inventory_adjustment.field.reference_no', - column: 'reference_no', - fieldType: 'text', - }, - description: { - name: 'inventory_adjustment.field.description', - column: 'description', - fieldType: 'text', - }, - published_at: { - name: 'inventory_adjustment.field.published_at', - column: 'published_at', - fieldType: 'date', - }, - created_at: { - name: 'inventory_adjustment.field.created_at', - column: 'created_at', - fieldType: 'date', - }, - }, -}; diff --git a/server/src/models/InventoryAdjustment.js b/server/src/models/InventoryAdjustment.js deleted file mode 100644 index d489a4dfc..000000000 --- a/server/src/models/InventoryAdjustment.js +++ /dev/null @@ -1,91 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; -import InventoryAdjustmentSettings from './InventoryAdjustment.Settings'; -import ModelSetting from './ModelSetting'; - -export default class InventoryAdjustment extends mixin(TenantModel, [ModelSetting]) { - /** - * Table name - */ - static get tableName() { - return 'inventory_adjustments'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['created_at']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return ['inventoryDirection', 'isPublished']; - } - - /** - * Retrieve formatted reference type. - */ - get inventoryDirection() { - return InventoryAdjustment.getInventoryDirection(this.type); - } - - /** - * Detarmines whether the adjustment is published. - * @return {boolean} - */ - get isPublished() { - return !!this.publishedAt; - } - - static getInventoryDirection(type) { - const directions = { - increment: 'IN', - decrement: 'OUT', - }; - return directions[type] || ''; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const InventoryAdjustmentEntry = require('models/InventoryAdjustmentEntry'); - const Account = require('models/Account'); - - return { - /** - * Adjustment entries. - */ - entries: { - relation: Model.HasManyRelation, - modelClass: InventoryAdjustmentEntry.default, - join: { - from: 'inventory_adjustments.id', - to: 'inventory_adjustments_entries.adjustmentId', - }, - }, - - /** - * Inventory adjustment account. - */ - adjustmentAccount: { - relation: Model.BelongsToOneRelation, - modelClass: Account.default, - join: { - from: 'inventory_adjustments.adjustmentAccountId', - to: 'accounts.id', - }, - }, - }; - } - - /** - * Model settings. - */ - static get meta() { - return InventoryAdjustmentSettings; - } -} diff --git a/server/src/models/InventoryAdjustmentEntry.js b/server/src/models/InventoryAdjustmentEntry.js deleted file mode 100644 index 2e7159fcd..000000000 --- a/server/src/models/InventoryAdjustmentEntry.js +++ /dev/null @@ -1,42 +0,0 @@ -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class InventoryAdjustmentEntry extends TenantModel { - /** - * Table name. - */ - static get tableName() { - return 'inventory_adjustments_entries'; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const InventoryAdjustment = require('models/InventoryAdjustment'); - const Item = require('models/Item'); - - return { - inventoryAdjustment: { - relation: Model.BelongsToOneRelation, - modelClass: InventoryAdjustment.default, - join: { - from: 'inventory_adjustments_entries.adjustmentId', - to: 'inventory_adjustments.id', - }, - }, - - /** - * Entry item. - */ - item: { - relation: Model.BelongsToOneRelation, - modelClass: Item.default, - join: { - from: 'inventory_adjustments_entries.itemId', - to: 'items.id', - }, - }, - }; - } -} diff --git a/server/src/models/InventoryCostLotTracker.js b/server/src/models/InventoryCostLotTracker.js deleted file mode 100644 index 8cc9dacd1..000000000 --- a/server/src/models/InventoryCostLotTracker.js +++ /dev/null @@ -1,87 +0,0 @@ -import { Model } from 'objection'; -import moment from 'moment'; -import TenantModel from 'models/TenantModel'; - -export default class InventoryCostLotTracker extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'inventory_cost_lot_tracker'; - } - - /** - * Model timestamps. - */ - static get timestamps() { - return []; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - groupedEntriesCost(query) { - query.select(['date', 'item_id', 'transaction_id', 'transaction_type']); - query.sum('cost as cost'); - - query.groupBy('transaction_id'); - query.groupBy('transaction_type'); - query.groupBy('date'); - query.groupBy('item_id'); - }, - filterDateRange(query, startDate, endDate, type = 'day') { - const dateFormat = 'YYYY-MM-DD HH:mm:ss'; - const fromDate = moment(startDate).startOf(type).format(dateFormat); - const toDate = moment(endDate).endOf(type).format(dateFormat); - - if (startDate) { - query.where('date', '>=', fromDate); - } - if (endDate) { - query.where('date', '<=', toDate); - } - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Item = require('models/Item'); - const SaleInvoice = require('models/SaleInvoice'); - const ItemEntry = require('models/ItemEntry'); - - return { - item: { - relation: Model.BelongsToOneRelation, - modelClass: Item.default, - join: { - from: 'inventory_cost_lot_tracker.itemId', - to: 'items.id', - }, - }, - invoice: { - relation: Model.BelongsToOneRelation, - modelClass: SaleInvoice.default, - join: { - from: 'inventory_cost_lot_tracker.transactionId', - to: 'sales_invoices.id', - }, - filter(query) { - query.where('transaction_type', 'SaleInvoice'); - }, - }, - itemEntry: { - relation: Model.BelongsToOneRelation, - modelClass: ItemEntry.default, - join: { - from: 'inventory_cost_lot_tracker.entryId', - to: 'items_entries.id', - }, - } - }; - } -} diff --git a/server/src/models/InventoryTransaction.js b/server/src/models/InventoryTransaction.js deleted file mode 100644 index 8c2b10f4c..000000000 --- a/server/src/models/InventoryTransaction.js +++ /dev/null @@ -1,148 +0,0 @@ -import { Model, raw } from 'objection'; -import moment from 'moment'; -import TenantModel from 'models/TenantModel'; - -export default class InventoryTransaction extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'inventory_transactions'; - } - - /** - * Model timestamps. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Retrieve formatted reference type. - * @return {string} - */ - get transcationTypeFormatted() { - return InventoryTransaction.getReferenceTypeFormatted(this.transactionType); - } - - /** - * Reference type formatted. - */ - static getReferenceTypeFormatted(referenceType) { - const mapped = { - 'SaleInvoice': 'Sale invoice', - 'SaleReceipt': 'Sale receipt', - 'PaymentReceive': 'Payment receive', - 'Bill': 'Bill', - 'BillPayment': 'Payment made', - 'VendorOpeningBalance': 'Vendor opening balance', - 'CustomerOpeningBalance': 'Customer opening balance', - 'InventoryAdjustment': 'Inventory adjustment', - 'ManualJournal': 'Manual journal', - 'Journal': 'Manual journal', - }; - return mapped[referenceType] || ''; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - filterDateRange(query, startDate, endDate, type = 'day') { - const dateFormat = 'YYYY-MM-DD HH:mm:ss'; - const fromDate = moment(startDate).startOf(type).format(dateFormat); - const toDate = moment(endDate).endOf(type).format(dateFormat); - - if (startDate) { - query.where('date', '>=', fromDate); - } - if (endDate) { - query.where('date', '<=', toDate); - } - }, - - itemsTotals(builder) { - builder.select('itemId'); - builder.sum('rate as rate'); - builder.sum('quantity as quantity'); - builder.select(raw('SUM(`QUANTITY` * `RATE`) as COST')); - builder.groupBy('itemId'); - }, - - INDirection(builder) { - builder.where('direction', 'IN'); - }, - - OUTDirection(builder) { - builder.where('direction', 'OUT'); - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Item = require('models/Item'); - const ItemEntry = require('models/ItemEntry'); - const InventoryTransactionMeta = require('models/InventoryTransactionMeta'); - const InventoryCostLots = require('models/InventoryCostLotTracker'); - - return { - // Transaction meta. - meta: { - relation: Model.HasOneRelation, - modelClass: InventoryTransactionMeta.default, - join: { - from: 'inventory_transactions.id', - to: 'inventory_transaction_meta.inventoryTransactionId', - }, - }, - // Item cost aggregated. - itemCostAggregated: { - relation: Model.HasOneRelation, - modelClass: InventoryCostLots.default, - join: { - from: 'inventory_transactions.itemId', - to: 'inventory_cost_lot_tracker.itemId', - }, - filter(query) { - query.select('itemId'); - query.sum('cost as cost'); - query.sum('quantity as quantity'); - query.groupBy('itemId'); - }, - }, - costLotAggregated: { - relation: Model.HasOneRelation, - modelClass: InventoryCostLots.default, - join: { - from: 'inventory_transactions.id', - to: 'inventory_cost_lot_tracker.inventoryTransactionId', - }, - filter(query) { - query.sum('cost as cost'); - query.sum('quantity as quantity'); - query.groupBy('inventoryTransactionId'); - } - }, - item: { - relation: Model.BelongsToOneRelation, - modelClass: Item.default, - join: { - from: 'inventory_transactions.itemId', - to: 'items.id', - }, - }, - itemEntry: { - relation: Model.BelongsToOneRelation, - modelClass: ItemEntry.default, - join: { - from: 'inventory_transactions.entryId', - to: 'items_entries.id', - }, - } - }; - } -} diff --git a/server/src/models/InventoryTransactionMeta.js b/server/src/models/InventoryTransactionMeta.js deleted file mode 100644 index 62a232b64..000000000 --- a/server/src/models/InventoryTransactionMeta.js +++ /dev/null @@ -1,29 +0,0 @@ -import { Model, raw } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class InventoryTransactionMeta extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'inventory_transaction_meta'; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const InventoryTransactions = require('models/InventoryTransaction'); - - return { - inventoryTransaction: { - relation: Model.BelongsToOneRelation, - modelClass: InventoryTransactions.default, - join: { - from: 'inventory_transaction_meta.inventoryTransactionId', - to: 'inventory_transactions.inventoryTransactionId' - } - } - }; - } -} diff --git a/server/src/models/Item.Settings.ts b/server/src/models/Item.Settings.ts deleted file mode 100644 index b5509a0a4..000000000 --- a/server/src/models/Item.Settings.ts +++ /dev/null @@ -1,123 +0,0 @@ -export default { - defaultFilterField: 'name', - defaultSort: { - sortField: 'name', - sortOrder: 'DESC', - }, - fields: { - 'type': { - name: 'item.field.type', - column: 'type', - fieldType: 'enumeration', - options: [ - { key: 'inventory', label: 'item.field.type.inventory', }, - { key: 'service', label: 'item.field.type.service' }, - { key: 'non-inventory', label: 'item.field.type.non-inventory', }, - ], - }, - 'name': { - name: 'item.field.name', - column: 'name', - fieldType: 'text', - }, - 'code': { - name: 'item.field.code', - column: 'code', - fieldType: 'text', - }, - 'sellable': { - name: 'item.field.sellable', - column: 'sellable', - fieldType: 'boolean', - }, - 'purchasable': { - name: 'item.field.purchasable', - column: 'purchasable', - fieldType: 'boolean', - }, - 'sell_price': { - name: 'item.field.cost_price', - column: 'sell_price', - fieldType: 'number', - }, - 'cost_price': { - name: 'item.field.cost_account', - column: 'cost_price', - fieldType: 'number', - }, - 'cost_account': { - name: 'item.field.sell_account', - column: 'cost_account_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'costAccount', - - relationEntityLabel: 'name', - relationEntityKey: 'slug', - }, - 'sell_account': { - name: 'item.field.sell_description', - column: 'sell_account_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'sellAccount', - - relationEntityLabel: 'name', - relationEntityKey: 'slug', - }, - 'inventory_account': { - name: 'item.field.inventory_account', - column: 'inventory_account_id', - - relationType: 'enumeration', - relationKey: 'inventoryAccount', - - relationEntityLabel: 'name', - relationEntityKey: 'slug', - }, - 'sell_description': { - name: 'Sell description', - column: 'sell_description', - fieldType: 'text', - }, - 'purchase_description': { - name: 'Purchase description', - column: 'purchase_description', - fieldType: 'text', - }, - 'quantity_on_hand': { - name: 'item.field.quantity_on_hand', - column: 'quantity_on_hand', - fieldType: 'number', - }, - 'note': { - name: 'item.field.note', - column: 'note', - fieldType: 'text', - }, - 'category': { - name: 'item.field.category', - column: 'category_id', - - relationType: 'enumeration', - relationKey: 'category', - - relationEntityLabel: 'name', - relationEntityKey: 'id', - }, - 'active': { - name: 'item.field.active', - column: 'active', - fieldType: 'boolean', - filterable: false, - }, - 'created_at': { - name: 'item.field.created_at', - column: 'created_at', - columnType: 'date', - fieldType: 'date', - }, - }, -}; diff --git a/server/src/models/Item.js b/server/src/models/Item.js deleted file mode 100644 index 38d75eba6..000000000 --- a/server/src/models/Item.js +++ /dev/null @@ -1,143 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; -import { buildFilterQuery } from 'lib/ViewRolesBuilder'; -import ItemSettings from './Item.Settings'; -import ModelSetting from './ModelSetting'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/Items/constants'; -import ModelSearchable from './ModelSearchable'; - -export default class Item extends mixin(TenantModel, [ - ModelSetting, - CustomViewBaseModel, - ModelSearchable, -]) { - /** - * Table name - */ - static get tableName() { - return 'items'; - } - - /** - * Model timestamps. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Allows to mark model as resourceable to viewable and filterable. - */ - static get resourceable() { - return true; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - sortBy(query, columnSort, sortDirection) { - query.orderBy(columnSort, sortDirection); - }, - viewRolesBuilder(query, conditions, logicExpression) { - buildFilterQuery(Item.tableName, conditions, logicExpression)(query); - }, - - /** - * Inactive/Active mode. - */ - inactiveMode(query, active = false) { - query.where('items.active', !active); - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Media = require('models/Media'); - const Account = require('models/Account'); - const ItemCategory = require('models/ItemCategory'); - - return { - /** - * Item may belongs to cateogory model. - */ - category: { - relation: Model.BelongsToOneRelation, - modelClass: ItemCategory.default, - join: { - from: 'items.categoryId', - to: 'items_categories.id', - }, - }, - - costAccount: { - relation: Model.BelongsToOneRelation, - modelClass: Account.default, - join: { - from: 'items.costAccountId', - to: 'accounts.id', - }, - }, - - sellAccount: { - relation: Model.BelongsToOneRelation, - modelClass: Account.default, - join: { - from: 'items.sellAccountId', - to: 'accounts.id', - }, - }, - - inventoryAccount: { - relation: Model.BelongsToOneRelation, - modelClass: Account.default, - join: { - from: 'items.inventoryAccountId', - to: 'accounts.id', - }, - }, - - media: { - relation: Model.ManyToManyRelation, - modelClass: Media.default, - join: { - from: 'items.id', - through: { - from: 'media_links.model_id', - to: 'media_links.media_id', - }, - to: 'media.id', - }, - }, - }; - } - - /** - * Model settings. - */ - static get meta() { - return ItemSettings; - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model search roles. - */ - static get searchRoles() { - return [ - { fieldKey: 'name', comparator: 'contains' }, - { condition: 'or', fieldKey: 'code', comparator: 'like' }, - ]; - } -} diff --git a/server/src/models/ItemCategory.Settings.ts b/server/src/models/ItemCategory.Settings.ts deleted file mode 100644 index 1ce8d9190..000000000 --- a/server/src/models/ItemCategory.Settings.ts +++ /dev/null @@ -1,30 +0,0 @@ -export default { - defaultFilterField: 'name', - defaultSort: { - sortField: 'name', - sortOrder: 'DESC', - }, - fields: { - name: { - name: 'item_category.field.name', - column: 'name', - fieldType: 'text', - }, - description: { - name: 'item_category.field.description', - column: 'description', - fieldType: 'text', - }, - count: { - name: 'item_category.field.count', - column: 'count', - fieldType: 'number', - virtualColumn: true, - }, - created_at: { - name: 'item_category.field.created_at', - column: 'created_at', - columnType: 'date', - }, - }, -}; diff --git a/server/src/models/ItemCategory.js b/server/src/models/ItemCategory.js deleted file mode 100644 index ef11ada3f..000000000 --- a/server/src/models/ItemCategory.js +++ /dev/null @@ -1,62 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; -import ModelSetting from './ModelSetting'; -import ItemCategorySettings from './ItemCategory.Settings'; - -export default class ItemCategory extends mixin(TenantModel, [ModelSetting]) { - /** - * Table name. - */ - static get tableName() { - return 'items_categories'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Item = require('models/Item'); - - return { - /** - * Item category may has many items. - */ - items: { - relation: Model.HasManyRelation, - modelClass: Item.default, - join: { - from: 'items_categories.id', - to: 'items.categoryId', - }, - }, - }; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - /** - * Inactive/Active mode. - */ - sortByCount(query, order = 'asc') { - query.orderBy('count', order); - }, - }; - } - - /** - * Model meta. - */ - static get meta() { - return ItemCategorySettings; - } -} diff --git a/server/src/models/ItemEntry.js b/server/src/models/ItemEntry.js deleted file mode 100644 index a8156fc01..000000000 --- a/server/src/models/ItemEntry.js +++ /dev/null @@ -1,58 +0,0 @@ -import path from 'path'; -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class ItemEntry extends TenantModel { - /** - * Table name. - */ - static get tableName() { - return 'items_entries'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['created_at', 'updated_at']; - } - - static get virtualAttributes() { - return ['amount']; - } - - get amount() { - return ItemEntry.calcAmount(this); - } - - static calcAmount(itemEntry) { - const { discount, quantity, rate } = itemEntry; - const total = quantity * rate; - - return discount ? total - (total * discount * 0.01) : total; - } - - static get relationMappings() { - const Item = require('models/Item'); - const BillLandedCostEntry = require('models/BillLandedCostEntry'); - - return { - item: { - relation: Model.BelongsToOneRelation, - modelClass: Item.default, - join: { - from: 'items_entries.itemId', - to: 'items.id', - }, - }, - allocatedCostEntries: { - relation: Model.HasManyRelation, - modelClass: BillLandedCostEntry.default, - join: { - from: 'items_entries.referenceId', - to: 'bill_located_cost_entries.entryId', - }, - }, - }; - } -} diff --git a/server/src/models/ManualJournal.Settings.ts b/server/src/models/ManualJournal.Settings.ts deleted file mode 100644 index bc6ae8d64..000000000 --- a/server/src/models/ManualJournal.Settings.ts +++ /dev/null @@ -1,69 +0,0 @@ -export default { - defaultFilterField: 'date', - defaultSort: { - sortOrder: 'DESC', - sortField: 'name', - }, - fields: { - 'date': { - name: 'manual_journal.field.date', - column: 'date', - fieldType: 'date', - }, - 'journal_number': { - name: 'manual_journal.field.journal_number', - column: 'journal_number', - fieldType: 'text', - }, - 'reference': { - name: 'manual_journal.field.reference', - column: 'reference', - fieldType: 'text', - }, - 'journal_type': { - name: 'manual_journal.field.journal_type', - column: 'journal_type', - fieldType: 'text', - }, - 'amount': { - name: 'manual_journal.field.amount', - column: 'amount', - fieldType: 'number', - }, - 'description': { - name: 'manual_journal.field.description', - column: 'description', - fieldType: 'text', - }, - 'status': { - name: 'manual_journal.field.status', - column: 'status', - fieldType: 'enumeration', - options: [ - { key: 'draft', label: 'Draft' }, - { key: 'published', label: 'published' } - ], - filterCustomQuery: StatusFieldFilterQuery, - sortCustomQuery: StatusFieldSortQuery, - }, - 'created_at': { - name: 'manual_journal.field.created_at', - column: 'created_at', - fieldType: 'date', - }, - }, -}; - -/** - * Status field sorting custom query. - */ -function StatusFieldSortQuery(query, role) { - return query.modify('sortByStatus', role.order); -} - -/** - * Status field filter custom query. - */ - function StatusFieldFilterQuery(query, role) { - query.modify('filterByStatus', role.value); -} diff --git a/server/src/models/ManualJournal.js b/server/src/models/ManualJournal.js deleted file mode 100644 index 84e8c4ac9..000000000 --- a/server/src/models/ManualJournal.js +++ /dev/null @@ -1,163 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; -import { formatNumber } from 'utils'; -import ModelSetting from './ModelSetting'; -import ManualJournalSettings from './ManualJournal.Settings'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/ManualJournals/constants'; -import ModelSearchable from './ModelSearchable'; -export default class ManualJournal extends mixin(TenantModel, [ - ModelSetting, - CustomViewBaseModel, - ModelSearchable, -]) { - /** - * Table name. - */ - static get tableName() { - return 'manual_journals'; - } - - /** - * Model timestamps. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return ['isPublished', 'amountFormatted']; - } - - /** - * Retrieve the amount formatted value. - */ - get amountFormatted() { - return formatNumber(this.amount, { currencyCode: this.currencyCode }); - } - - /** - * Detarmines whether the invoice is published. - * @return {boolean} - */ - get isPublished() { - return !!this.publishedAt; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - /** - * Sort by status query. - */ - sortByStatus(query, order) { - query.orderByRaw(`PUBLISHED_AT IS NULL ${order}`); - }, - - /** - * Filter by draft status. - */ - filterByDraft(query) { - query.whereNull('publishedAt'); - }, - - /** - * Filter by published status. - */ - filterByPublished(query) { - query.whereNotNull('publishedAt'); - }, - - /** - * Filter by the given status. - */ - filterByStatus(query, filterType) { - switch (filterType) { - case 'draft': - query.modify('filterByDraft'); - break; - case 'published': - default: - query.modify('filterByPublished'); - break; - } - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Media = require('models/Media'); - const AccountTransaction = require('models/AccountTransaction'); - const ManualJournalEntry = require('models/ManualJournalEntry'); - - return { - entries: { - relation: Model.HasManyRelation, - modelClass: ManualJournalEntry.default, - join: { - from: 'manual_journals.id', - to: 'manual_journals_entries.manualJournalId', - }, - filter(query) { - query.orderBy('index', 'ASC'); - }, - }, - transactions: { - relation: Model.HasManyRelation, - modelClass: AccountTransaction.default, - join: { - from: 'manual_journals.id', - to: 'accounts_transactions.referenceId', - }, - filter: (query) => { - query.where('referenceType', 'Journal'); - }, - }, - media: { - relation: Model.ManyToManyRelation, - modelClass: Media.default, - join: { - from: 'manual_journals.id', - through: { - from: 'media_links.model_id', - to: 'media_links.media_id', - }, - to: 'media.id', - }, - filter(query) { - query.where('model_name', 'ManualJournal'); - }, - }, - }; - } - - static get meta() { - return ManualJournalSettings; - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model search attributes. - */ - static get searchRoles() { - return [ - { fieldKey: 'journal_number', comparator: 'contains' }, - { condition: 'or', fieldKey: 'reference', comparator: 'contains' }, - { condition: 'or', fieldKey: 'amount', comparator: 'equals' }, - ]; - } -} diff --git a/server/src/models/ManualJournalEntry.js b/server/src/models/ManualJournalEntry.js deleted file mode 100644 index c003e1f38..000000000 --- a/server/src/models/ManualJournalEntry.js +++ /dev/null @@ -1,45 +0,0 @@ -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class ManualJournalEntry extends TenantModel { - /** - * Table name. - */ - static get tableName() { - return 'manual_journals_entries'; - } - - /** - * Model timestamps. - */ - get timestamps() { - return []; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Account = require('models/Account'); - const Contact = require('models/Contact'); - - return { - account: { - relation: Model.BelongsToOneRelation, - modelClass: Account.default, - join: { - from: 'manual_journals_entries.accountId', - to: 'accounts.id', - }, - }, - contact: { - relation: Model.BelongsToOneRelation, - modelClass: Contact.default, - join: { - from: 'manual_journals_entries.contactId', - to: 'contacts.id', - }, - }, - }; - } -} diff --git a/server/src/models/Media.js b/server/src/models/Media.js deleted file mode 100644 index aab3aa227..000000000 --- a/server/src/models/Media.js +++ /dev/null @@ -1,36 +0,0 @@ -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class Media extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'media'; - } - - /** - * Model timestamps. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const MediaLink = require('models/MediaLink'); - - return { - links: { - relation: Model.HasManyRelation, - modelClass: MediaLink.default, - join: { - from: 'media.id', - to: 'media_links.media_id', - }, - }, - }; - } -} diff --git a/server/src/models/MediaLink.js b/server/src/models/MediaLink.js deleted file mode 100644 index 78f9d4888..000000000 --- a/server/src/models/MediaLink.js +++ /dev/null @@ -1,10 +0,0 @@ -import TenantModel from 'models/TenantModel'; - -export default class MediaLink extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'media_links'; - } -} diff --git a/server/src/models/Metable.js b/server/src/models/Metable.js deleted file mode 100644 index 42b870d12..000000000 --- a/server/src/models/Metable.js +++ /dev/null @@ -1,281 +0,0 @@ -import knex from 'database/knex'; -// import cache from 'memory-cache'; - -// Metadata -export default { - METADATA_GROUP: 'default', - KEY_COLUMN: 'key', - VALUE_COLUMN: 'value', - TYPE_COLUMN: 'type', - - extraColumns: [], - metadata: [], - shouldReload: true, - extraMetadataQuery: () => {}, - - /** - * Set the value column key to query from. - * @param {String} name - - */ - setKeyColumnName(name) { - this.KEY_COLUMN = name; - }, - - /** - * Set the key column name to query from. - * @param {String} name - - */ - setValueColumnName(name) { - this.VALUE_COLUMN = name; - }, - - /** - * Set extra columns to be added to the rows. - * @param {Array} columns - - */ - setExtraColumns(columns) { - this.extraColumns = columns; - }, - - /** - * Metadata database query. - * @param {Object} query - - * @param {String} groupName - - */ - whereQuery(query, key) { - const groupName = this.METADATA_GROUP; - - if (groupName) { - query.where('group', groupName); - } - if (key) { - if (Array.isArray(key)) { - query.whereIn('key', key); - } else { - query.where('key', key); - } - } - }, - - /** - * Loads the metadata from the storage. - * @param {String|Array} key - - * @param {Boolean} force - - */ - async load(force = false) { - if (this.shouldReload || force) { - const metadataCollection = await this.query((query) => { - this.whereQuery(query); - this.extraMetadataQuery(query); - }).fetchAll(); - - this.shouldReload = false; - this.metadata = []; - - const metadataArray = this.mapMetadataCollection(metadataCollection); - metadataArray.forEach((metadata) => { this.metadata.push(metadata); }); - } - }, - - /** - * Fetches all the metadata that associate with the current group. - */ - async allMeta(force = false) { - await this.load(force); - return this.metadata; - }, - - /** - * Find the given metadata key. - * @param {String} key - - * @return {object} - Metadata object. - */ - findMeta(key) { - return this.metadata.find((meta) => meta.key === key); - }, - - /** - * Fetch the metadata of the current group. - * @param {*} key - - */ - async getMeta(key, defaultValue, force = false) { - await this.load(force); - - const metadata = this.findMeta(key); - return metadata ? metadata.value : defaultValue || false; - }, - - /** - * Markes the metadata to should be deleted. - * @param {String} key - - */ - async removeMeta(key) { - await this.load(); - const metadata = this.findMeta(key); - - if (metadata) { - metadata.markAsDeleted = true; - } - this.shouldReload = true; - }, - - /** - * Remove all meta data of the given group. - * @param {*} group - */ - removeAllMeta(group = 'default') { - this.metdata.map((meta) => ({ - ...(meta.group !== group) ? { markAsDeleted: true } : {}, - ...meta, - })); - this.shouldReload = true; - }, - - /** - * Set the meta data to the stack. - * @param {String} key - - * @param {String} value - - */ - async setMeta(key, value, payload) { - if (Array.isArray(key)) { - const metadata = key; - metadata.forEach((meta) => { - this.setMeta(meta.key, meta.value); - }); - return; - } - - await this.load(); - const metadata = this.findMeta(key); - - if (metadata) { - metadata.value = value; - metadata.markAsUpdated = true; - } else { - this.metadata.push({ - value, key, ...payload, markAsInserted: true, - }); - } - }, - - /** - * Saved the modified metadata. - */ - async saveMeta() { - const inserted = this.metadata.filter((m) => (m.markAsInserted === true)); - const updated = this.metadata.filter((m) => (m.markAsUpdated === true)); - const deleted = this.metadata.filter((m) => (m.markAsDeleted === true)); - - const metadataDeletedKeys = deleted.map((m) => m.key); - const metadataInserted = inserted.map((m) => this.mapMetadata(m, 'format')); - const metadataUpdated = updated.map((m) => this.mapMetadata(m, 'format')); - - const batchUpdate = (collection) => knex.transaction((trx) => { - const queries = collection.map((tuple) => { - const query = knex(this.tableName); - this.whereQuery(query, tuple.key); - this.extraMetadataQuery(query); - return query.update(tuple).transacting(trx); - }); - return Promise.all(queries).then(trx.commit).catch(trx.rollback); - }); - - await Promise.all([ - knex.insert(metadataInserted).into(this.tableName), - batchUpdate(metadataUpdated), - metadataDeletedKeys.length > 0 - ? this.query('whereIn', this.KEY_COLUMN, metadataDeletedKeys).destroy({ - require: true, - }) : null, - ]); - this.shouldReload = true; - }, - - /** - * Purge all the cached metadata in the memory. - */ - purgeMetadata() { - this.metadata = []; - this.shouldReload = true; - }, - - /** - * Parses the metadata value. - * @param {String} value - - * @param {String} valueType - - */ - parseMetaValue(value, valueType) { - let parsedValue; - - switch (valueType) { - case 'integer': - parsedValue = parseInt(value, 10); - break; - case 'float': - parsedValue = parseFloat(value); - break; - case 'boolean': - parsedValue = Boolean(value); - break; - case 'json': - parsedValue = JSON.parse(parsedValue); - break; - default: - parsedValue = value; - break; - } - return parsedValue; - }, - - /** - * Format the metadata before saving to the database. - * @param {String|Number|Boolean} value - - * @param {String} valueType - - * @return {String|Number|Boolean} - - */ - formatMetaValue(value, valueType) { - let parsedValue; - - switch (valueType) { - case 'number': - parsedValue = `${value}`; - break; - case 'boolean': - parsedValue = value ? '1' : '0'; - break; - case 'json': - parsedValue = JSON.stringify(parsedValue); - break; - default: - parsedValue = value; - break; - } - return parsedValue; - }, - - mapMetadata(attr, parseType = 'parse') { - return { - key: attr[this.KEY_COLUMN], - value: (parseType === 'parse') - ? this.parseMetaValue( - attr[this.VALUE_COLUMN], - this.TYPE_COLUMN ? attr[this.TYPE_COLUMN] : false, - ) - : this.formatMetaValue( - attr[this.VALUE_COLUMN], - this.TYPE_COLUMN ? attr[this.TYPE_COLUMN] : false, - ), - ...this.extraColumns.map((extraCol) => ({ - [extraCol]: attr[extraCol] || null, - })), - }; - }, - - /** - * Parse the metadata collection. - * @param {Array} collection - - */ - mapMetadataCollection(collection, parseType = 'parse') { - return collection.map((model) => this.mapMetadata(model.attributes, parseType)); - }, -}; diff --git a/server/src/models/Model.js b/server/src/models/Model.js deleted file mode 100644 index 4383d57f5..000000000 --- a/server/src/models/Model.js +++ /dev/null @@ -1,55 +0,0 @@ -import { Model, mixin } from 'objection'; -import { snakeCase, transform } from 'lodash'; -import { mapKeysDeep } from 'utils'; -import PaginationQueryBuilder from 'models/Pagination'; -import DateSession from 'models/DateSession'; - -export default class ModelBase extends mixin(Model, [DateSession]) { - - - get timestamps() { - return []; - } - - static get knexBinded() { - return this.knexBindInstance; - } - - static set knexBinded(knex) { - this.knexBindInstance = knex; - } - - static get collection() { - return Array; - } - - static query(...args) { - return super.query(...args).runAfter((result) => { - if (Array.isArray(result)) { - return this.collection.from(result); - } - return result; - }); - } - - $formatJson(json, opt) { - const transformed = mapKeysDeep(json, (value, key) => { - return snakeCase(key); - }); - const parsedJson = super.$formatJson(transformed, opt); - return parsedJson; - } - - static get QueryBuilder() { - return PaginationQueryBuilder; - } - - static relationBindKnex(model) { - return this.knexBinded ? model.bindKnex(this.knexBinded) : model; - } - - toObject(opt) { - const parsedJson = super.$toJson(opt); - return parsedJson; - } -} diff --git a/server/src/models/ModelSearchable.ts b/server/src/models/ModelSearchable.ts deleted file mode 100644 index d6b7e4017..000000000 --- a/server/src/models/ModelSearchable.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { IModelMeta, ISearchRole } from 'interfaces'; - -export default (Model) => - class ModelSearchable extends Model { - /** - * Searchable model. - */ - static get searchable(): IModelMeta { - throw true; - } - - /** - * Search roles. - */ - static get searchRoles(): ISearchRole[] { - return []; - } - }; diff --git a/server/src/models/ModelSetting.ts b/server/src/models/ModelSetting.ts deleted file mode 100644 index 697b8af6e..000000000 --- a/server/src/models/ModelSetting.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { get } from 'lodash'; -import { IModelMeta, IModelMetaField, IModelMetaDefaultSort } from 'interfaces'; - -export default (Model) => - class ModelSettings extends Model { - /** - * - */ - static get meta(): IModelMeta { - throw new Error(''); - } - - /** - * Retrieve specific model field meta of the given field key. - * @param {string} key - * @returns {IModelMetaField} - */ - public static getField(key: string, attribute?:string): IModelMetaField { - const field = get(this.meta.fields, key); - - return attribute ? get(field, attribute) : field; - } - - /** - * Retrieve the specific model meta. - * @param {string} key - * @returns - */ - public static getMeta(key?: string) { - return key ? get(this.meta, key): this.meta; - } - - /** - * Retrieve the model meta fields. - * @return {{ [key: string]: IModelMetaField }} - */ - public static get fields(): { [key: string]: IModelMetaField } { - return this.getMeta('fields'); - } - - /** - * Retrieve the model default sort settings. - * @return {IModelMetaDefaultSort} - */ - public static get defaultSort(): IModelMetaDefaultSort { - return this.getMeta('defaultSort'); - } - - /** - * Retrieve the default filter field key. - * @return {string} - */ - public static get defaultFilterField(): string { - return this.getMeta('defaultFilterField'); - } - }; diff --git a/server/src/models/Option.js b/server/src/models/Option.js deleted file mode 100644 index 2ba2793ba..000000000 --- a/server/src/models/Option.js +++ /dev/null @@ -1,30 +0,0 @@ -import TenantModel from 'models/TenantModel'; -import definedOptions from 'data/options'; - - -export default class Option extends TenantModel { - /** - * Table name. - */ - static get tableName() { - return 'options'; - } - - /** - * Validates the given options is defined or either not. - * @param {Array} options - * @return {Boolean} - */ - static validateDefined(options) { - const notDefined = []; - - options.forEach((option) => { - if (!definedOptions[option.group]) { - notDefined.push(option); - } else if (!definedOptions[option.group].some((o) => o.key === option.key)) { - notDefined.push(option); - } - }); - return notDefined; - } -} diff --git a/server/src/models/Pagination.js b/server/src/models/Pagination.js deleted file mode 100644 index 47dcc7b24..000000000 --- a/server/src/models/Pagination.js +++ /dev/null @@ -1,17 +0,0 @@ -import { Model } from 'objection'; - -export default class PaginationQueryBuilder extends Model.QueryBuilder { - pagination(page, pageSize) { - return super.page(page, pageSize).runAfter( - ({ results, total }) => { - return { - results, - pagination: { - total, - page: page + 1, - pageSize, - }, - }; - }) - } -} \ No newline at end of file diff --git a/server/src/models/PaymentReceive.Settings.ts b/server/src/models/PaymentReceive.Settings.ts deleted file mode 100644 index 0e9012806..000000000 --- a/server/src/models/PaymentReceive.Settings.ts +++ /dev/null @@ -1,57 +0,0 @@ - -export default { - fields: { - customer: { - name: 'payment_receive.field.customer', - column: 'customer_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'customer', - - relationEntityLabel: 'display_name', - relationEntityKey: 'id', - }, - payment_date: { - name: 'payment_receive.field.payment_date', - column: 'payment_date', - fieldType: 'date', - }, - amount: { - name: 'payment_receive.field.amount', - column: 'amount', - fieldType: 'number', - }, - reference_no: { - name: 'payment_receive.field.reference_no', - column: 'reference_no', - fieldType: 'text', - }, - deposit_account: { - name: 'payment_receive.field.deposit_account', - column: 'deposit_account_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'depositAccount', - - relationEntityLabel: 'name', - relationEntityKey: 'slug', - }, - payment_receive_no: { - name: 'payment_receive.field.payment_receive_no', - column: 'payment_receive_no', - fieldType: 'text', - }, - statement: { - name: 'payment_receive.field.statement', - column: 'statement', - fieldType: 'text', - }, - created_at: { - name: 'payment_receive.field.created_at', - column: 'created_at', - fieldDate: 'date', - }, - }, -}; diff --git a/server/src/models/PaymentReceive.js b/server/src/models/PaymentReceive.js deleted file mode 100644 index 14a48af00..000000000 --- a/server/src/models/PaymentReceive.js +++ /dev/null @@ -1,110 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; -import ModelSetting from './ModelSetting'; -import PaymentReceiveSettings from './PaymentReceive.Settings'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/Sales/PaymentReceives/constants'; -import ModelSearchable from './ModelSearchable'; - -export default class PaymentReceive extends mixin(TenantModel, [ - ModelSetting, - CustomViewBaseModel, - ModelSearchable -]) { - /** - * Table name. - */ - static get tableName() { - return 'payment_receives'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['created_at', 'updated_at']; - } - - /** - * Resourcable model. - */ - static get resourceable() { - return true; - } - - /* - * Relationship mapping. - */ - static get relationMappings() { - const PaymentReceiveEntry = require('models/PaymentReceiveEntry'); - const AccountTransaction = require('models/AccountTransaction'); - const Customer = require('models/Customer'); - const Account = require('models/Account'); - - return { - customer: { - relation: Model.BelongsToOneRelation, - modelClass: Customer.default, - join: { - from: 'payment_receives.customerId', - to: 'contacts.id', - }, - filter(query) { - query.where('contact_service', 'customer'); - }, - }, - depositAccount: { - relation: Model.BelongsToOneRelation, - modelClass: Account.default, - join: { - from: 'payment_receives.depositAccountId', - to: 'accounts.id', - }, - }, - entries: { - relation: Model.HasManyRelation, - modelClass: PaymentReceiveEntry.default, - join: { - from: 'payment_receives.id', - to: 'payment_receives_entries.paymentReceiveId', - }, - }, - transactions: { - relation: Model.HasManyRelation, - modelClass: AccountTransaction.default, - join: { - from: 'payment_receives.id', - to: 'accounts_transactions.referenceId', - }, - filter(builder) { - builder.where('reference_type', 'PaymentReceive'); - }, - }, - }; - } - - /** - * - */ - static get meta() { - return PaymentReceiveSettings; - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model search attributes. - */ - static get searchRoles() { - return [ - { fieldKey: 'payment_receive_no', comparator: 'contains' }, - { condition: 'or', fieldKey: 'reference_no', comparator: 'contains' }, - { condition: 'or', fieldKey: 'amount', comparator: 'equals' }, - ]; - } -} diff --git a/server/src/models/PaymentReceiveEntry.js b/server/src/models/PaymentReceiveEntry.js deleted file mode 100644 index 7076bfb41..000000000 --- a/server/src/models/PaymentReceiveEntry.js +++ /dev/null @@ -1,51 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class PaymentReceiveEntry extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'payment_receives_entries'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return []; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const PaymentReceive = require('models/PaymentReceive'); - const SaleInvoice = require('models/SaleInvoice'); - - return { - /** - */ - entries: { - relation: Model.HasManyRelation, - modelClass: PaymentReceive.default, - join: { - from: 'payment_receives_entries.payment_receive_id', - to: 'payment_receives.id', - }, - }, - - /** - * The payment receive entry have have sale invoice. - */ - invoice: { - relation: Model.BelongsToOneRelation, - modelClass: SaleInvoice.default, - join: { - from: 'payment_receives_entries.invoiceId', - to: 'sales_invoices.id', - } - } - }; - } -} diff --git a/server/src/models/ResourcableModel.js b/server/src/models/ResourcableModel.js deleted file mode 100644 index 289c2dfa3..000000000 --- a/server/src/models/ResourcableModel.js +++ /dev/null @@ -1,8 +0,0 @@ - - -export default class ResourceableModel { - - static get resourceable() { - return true; - } -} \ No newline at end of file diff --git a/server/src/models/SaleEstimate.Settings.ts b/server/src/models/SaleEstimate.Settings.ts deleted file mode 100644 index 9d1ea90a4..000000000 --- a/server/src/models/SaleEstimate.Settings.ts +++ /dev/null @@ -1,80 +0,0 @@ -export default { - defaultFilterField: 'estimate_date', - defaultSort: { - sortOrder: 'DESC', - sortField: 'estimate_date', - }, - fields: { - 'amount': { - name: 'estimate.field.amount', - column: 'amount', - fieldType: 'number', - }, - 'estimate_number': { - name: 'estimate.field.estimate_number', - column: 'estimate_number', - fieldType: 'text', - }, - 'customer': { - name: 'estimate.field.customer', - column: 'customer_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'customer', - - relationEntityLabel: 'display_name', - relationEntityKey: 'id', - }, - 'estimate_date': { - name: 'estimate.field.estimate_date', - column: 'estimate_date', - fieldType: 'date', - }, - 'expiration_date': { - name: 'estimate.field.expiration_date', - column: 'expiration_date', - fieldType: 'date', - }, - 'reference_no': { - name: 'estimate.field.reference_no', - column: 'reference', - fieldType: 'text', - }, - 'note': { - name: 'estimate.field.note', - column: 'note', - fieldType: 'text', - }, - 'terms_conditions': { - name: 'estimate.field.terms_conditions', - column: 'terms_conditions', - fieldType: 'text', - }, - 'status': { - name: 'estimate.field.status', - fieldType: 'enumeration', - options: [ - { label: 'estimate.field.status.delivered', key: 'delivered' }, - { label: 'estimate.field.status.rejected', key: 'rejected' }, - { label: 'estimate.field.status.approved', key: 'approved' }, - { label: 'estimate.field.status.draft', key: 'draft' }, - ], - filterCustomQuery: StatusFieldFilterQuery, - sortCustomQuery: StatusFieldSortQuery, - }, - 'created_at': { - name: 'estimate.field.created_at', - column: 'created_at', - columnType: 'date', - }, - }, -}; - -function StatusFieldSortQuery(query, role) { - query.modify('orderByStatus', role.order); -} - -function StatusFieldFilterQuery(query, role) { - query.modify('filterByStatus', role.value); -} diff --git a/server/src/models/SaleEstimate.js b/server/src/models/SaleEstimate.js deleted file mode 100644 index aaace10e2..000000000 --- a/server/src/models/SaleEstimate.js +++ /dev/null @@ -1,226 +0,0 @@ -import moment from 'moment'; -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; -import { defaultToTransform } from 'utils'; -import SaleEstimateSettings from './SaleEstimate.Settings'; -import ModelSetting from './ModelSetting'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/Sales/Estimates/constants'; -import ModelSearchable from './ModelSearchable'; - -export default class SaleEstimate extends mixin(TenantModel, [ - ModelSetting, - CustomViewBaseModel, - ModelSearchable, -]) { - /** - * Table name - */ - static get tableName() { - return 'sales_estimates'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return [ - 'isDelivered', - 'isExpired', - 'isConvertedToInvoice', - 'isApproved', - 'isRejected', - ]; - } - - /** - * Detarmines whether the sale estimate converted to sale invoice. - * @return {boolean} - */ - get isConvertedToInvoice() { - return !!(this.convertedToInvoiceId && this.convertedToInvoiceAt); - } - - /** - * Detarmines whether the estimate is delivered. - * @return {boolean} - */ - get isDelivered() { - return !!this.deliveredAt; - } - - /** - * Detarmines whether the estimate is expired. - * @return {boolean} - */ - get isExpired() { - return defaultToTransform( - this.expirationDate, - moment().isAfter(this.expirationDate, 'day'), - false - ); - } - - /** - * Detarmines whether the estimate is approved. - * @return {boolean} - */ - get isApproved() { - return !!this.approvedAt; - } - - /** - * Detarmines whether the estimate is reject. - * @return {boolean} - */ - get isRejected() { - return !!this.rejectedAt; - } - - /** - * Allows to mark model as resourceable to viewable and filterable. - */ - static get resourceable() { - return true; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - /** - * Filters the drafted estimates transactions. - */ - draft(query) { - query.where('delivered_at', null); - }, - /** - * Filters the delivered estimates transactions. - */ - delivered(query) { - query.whereNot('delivered_at', null); - }, - /** - * Filters the expired estimates transactions. - */ - expired(query) { - query.where('expiration_date', '<', moment().format('YYYY-MM-DD')); - }, - /** - * Filters the rejected estimates transactions. - */ - rejected(query) { - query.whereNot('rejected_at', null); - }, - /** - * Filters the invoiced estimates transactions. - */ - invoiced(query) { - query.whereNot('converted_to_invoice_at', null); - }, - /** - * Filters the approved estimates transactions. - */ - approved(query) { - query.whereNot('approved_at', null); - }, - /** - * Sorting the estimates orders by delivery status. - */ - orderByStatus(query, order) { - query.orderByRaw(`delivered_at is null ${order}`); - }, - /** - * Filtering the estimates oreders by status field. - */ - filterByStatus(query, filterType) { - switch (filterType) { - case 'draft': - query.modify('draft'); - break; - case 'delivered': - query.modify('delivered'); - break; - case 'approved': - query.modify('approved'); - break; - case 'rejected': - query.modify('rejected'); - break; - case 'invoiced': - query.modify('invoiced'); - break; - case 'expired': - query.modify('expired'); - break; - } - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const ItemEntry = require('models/ItemEntry'); - const Customer = require('models/Customer'); - - return { - customer: { - relation: Model.BelongsToOneRelation, - modelClass: Customer.default, - join: { - from: 'sales_estimates.customerId', - to: 'contacts.id', - }, - filter(query) { - query.where('contact_service', 'customer'); - }, - }, - entries: { - relation: Model.HasManyRelation, - modelClass: ItemEntry.default, - join: { - from: 'sales_estimates.id', - to: 'items_entries.referenceId', - }, - filter(builder) { - builder.where('reference_type', 'SaleEstimate'); - }, - }, - }; - } - - /** - * Model settings. - */ - static get meta() { - return SaleEstimateSettings; - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model search roles. - */ - static get searchRoles() { - return [ - { fieldKey: 'amount', comparator: 'equals' }, - { condition: 'or', fieldKey: 'estimate_number', comparator: 'contains' }, - { condition: 'or', fieldKey: 'reference_no', comparator: 'contains' }, - ]; - } -} diff --git a/server/src/models/SaleEstimateEntry.js b/server/src/models/SaleEstimateEntry.js deleted file mode 100644 index 35c3b5106..000000000 --- a/server/src/models/SaleEstimateEntry.js +++ /dev/null @@ -1,30 +0,0 @@ -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - - -export default class SaleEstimateEntry extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'sales_estimate_entries'; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const SaleEstimate = require('models/SaleEstimate'); - - return { - estimate: { - relation: Model.BelongsToOneRelation, - modelClass: SaleEstimate.default, - join: { - from: 'sales_estimates.id', - to: 'sales_estimate_entries.estimate_id', - }, - }, - }; - } -} diff --git a/server/src/models/SaleInvoice.Settings.ts b/server/src/models/SaleInvoice.Settings.ts deleted file mode 100644 index 842c5618b..000000000 --- a/server/src/models/SaleInvoice.Settings.ts +++ /dev/null @@ -1,100 +0,0 @@ -export default { - defaultFilterField: 'customer', - defaultSort: { - sortOrder: 'DESC', - sortField: 'created_at', - }, - fields: { - customer: { - name: 'invoice.field.customer', - column: 'customer_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'customer', - - relationEntityLabel: 'display_name', - relationEntityKey: 'id', - }, - invoice_date: { - name: 'invoice.field.invoice_date', - column: 'invoice_date', - fieldType: 'date', - }, - due_date: { - name: 'invoice.field.due_date', - column: 'due_date', - fieldType: 'date', - }, - invoice_no: { - name: 'invoice.field.invoice_no', - column: 'invoice_no', - fieldType: 'text', - }, - reference_no: { - name: 'invoice.field.reference_no', - column: 'reference_no', - fieldType: 'text', - }, - invoice_message: { - name: 'invoice.field.invoice_message', - column: 'invoice_message', - fieldType: 'text', - }, - terms_conditions: { - name: 'invoice.field.terms_conditions', - column: 'terms_conditions', - fieldType: 'text', - }, - amount: { - name: 'invoice.field.amount', - column: 'balance', - fieldType: 'number', - }, - payment_amount: { - name: 'invoice.field.payment_amount', - column: 'payment_amount', - fieldType: 'number', - }, - due_amount: { - // calculated. - name: 'invoice.field.due_amount', - column: 'due_amount', - fieldType: 'number', - virtualColumn: true, - }, - status: { - name: 'invoice.field.status', - fieldType: 'enumeration', - options: [ - { key: 'draft', label: 'invoice.field.status.draft' }, - { key: 'delivered', label: 'invoice.field.status.delivered' }, - { key: 'unpaid', label: 'invoice.field.status.unpaid' }, - { key: 'overdue', label: 'invoice.field.status.overdue' }, - { key: 'partially-paid', label: 'invoice.field.status.partially-paid' }, - { key: 'paid', label: 'invoice.field.status.paid' }, - ], - filterCustomQuery: StatusFieldFilterQuery, - sortCustomQuery: StatusFieldSortQuery, - }, - created_at: { - name: 'invoice.field.created_at', - column: 'created_at', - fieldType: 'date', - }, - }, -}; - -/** - * Status field filter custom query. - */ -function StatusFieldFilterQuery(query, role) { - query.modify('statusFilter', role.value); -} - -/** - * Status field sort custom query. - */ -function StatusFieldSortQuery(query, role) { - query.modify('sortByStatus', role.order); -} diff --git a/server/src/models/SaleInvoice.js b/server/src/models/SaleInvoice.js deleted file mode 100644 index 938e97f99..000000000 --- a/server/src/models/SaleInvoice.js +++ /dev/null @@ -1,394 +0,0 @@ -import { mixin, Model, raw } from 'objection'; -import moment from 'moment'; -import TenantModel from 'models/TenantModel'; -import ModelSetting from './ModelSetting'; -import SaleInvoiceMeta from './SaleInvoice.Settings'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/Sales/constants'; -import ModelSearchable from './ModelSearchable'; - -export default class SaleInvoice extends mixin(TenantModel, [ - ModelSetting, - CustomViewBaseModel, - ModelSearchable, -]) { - /** - * Table name - */ - static get tableName() { - return 'sales_invoices'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['created_at', 'updated_at']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return [ - 'dueAmount', - 'isDelivered', - 'isOverdue', - 'isPartiallyPaid', - 'isFullyPaid', - 'isPaid', - 'remainingDays', - 'overdueDays', - ]; - } - - /** - * Detarmines whether the invoice is delivered. - * @return {boolean} - */ - get isDelivered() { - return !!this.deliveredAt; - } - - /** - * Detarmines the due date is over. - * @return {boolean} - */ - get isOverdue() { - return this.overdueDays > 0; - } - - /** - * Retrieve the invoice due amount. - * Equation (Invoice amount - payment amount = Due amount) - * @return {boolean} - */ - get dueAmount() { - return Math.max(this.balance - this.paymentAmount, 0); - } - - /** - * Detarmine whether the invoice paid partially. - * @return {boolean} - */ - get isPartiallyPaid() { - return this.dueAmount !== this.balance && this.dueAmount > 0; - } - - /** - * Deetarmine whether the invoice paid fully. - * @return {boolean} - */ - get isFullyPaid() { - return this.dueAmount === 0; - } - - /** - * Detarmines whether the invoice paid fully or partially. - * @return {boolean} - */ - get isPaid() { - return this.isPartiallyPaid || this.isFullyPaid; - } - - /** - * Retrieve the remaining days in number - * @return {number|null} - */ - get remainingDays() { - // Can't continue in case due date not defined. - if (!this.dueDate) { - return null; - } - - const date = moment(); - const dueDate = moment(this.dueDate); - - return Math.max(dueDate.diff(date, 'days'), 0); - } - - /** - * Retrieve the overdue days in number. - * @return {number|null} - */ - get overdueDays() { - return this.getOverdueDays(); - } - - /** - * - * @param {*} asDate - */ - getOverdueDays(asDate = moment().format('YYYY-MM-DD')) { - // Can't continue in case due date not defined. - if (!this.dueDate) { - return null; - } - - const date = moment(asDate); - const dueDate = moment(this.dueDate); - - return Math.max(date.diff(dueDate, 'days'), 0); - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - /** - * Filters the due invoices. - */ - dueInvoices(query) { - query.where(raw('BALANCE - PAYMENT_AMOUNT > 0')); - }, - /** - * Filters the invoices between the given date range. - */ - filterDateRange(query, startDate, endDate, type = 'day') { - const dateFormat = 'YYYY-MM-DD HH:mm:ss'; - const fromDate = moment(startDate).startOf(type).format(dateFormat); - const toDate = moment(endDate).endOf(type).format(dateFormat); - - if (startDate) { - query.where('invoice_date', '>=', fromDate); - } - if (endDate) { - query.where('invoice_date', '<=', toDate); - } - }, - /** - * Filters the invoices in draft status. - */ - draft(query) { - query.where('delivered_at', null); - }, - /** - * Filters the delivered invoices. - */ - delivered(query) { - query.whereNot('delivered_at', null); - }, - /** - * Filters the unpaid invoices. - */ - unpaid(query) { - query.where(raw('PAYMENT_AMOUNT = 0')); - }, - /** - * Filters the overdue invoices. - */ - overdue(query, asDate = moment().format('YYYY-MM-DD')) { - query.where('due_date', '<', asDate); - }, - /** - * Filters the not overdue invoices. - */ - notOverdue(query, asDate = moment().format('YYYY-MM-DD')) { - query.where('due_date', '>=', asDate); - }, - /** - * Filters the partially invoices. - */ - partiallyPaid(query) { - query.whereNot('payment_amount', 0); - query.whereNot(raw('`PAYMENT_AMOUNT` = `BALANCE`')); - }, - /** - * Filters the paid invoices. - */ - paid(query) { - query.where(raw('PAYMENT_AMOUNT = BALANCE')); - }, - /** - * Filters the sale invoices from the given date. - */ - fromDate(query, fromDate) { - query.where('invoice_date', '<=', fromDate); - }, - /** - * Sort the sale invoices by full-payment invoices. - */ - sortByStatus(query, order) { - query.orderByRaw(`PAYMENT_AMOUNT = BALANCE ${order}`); - }, - /** - * Sort the sale invoices by the due amount. - */ - sortByDueAmount(query, order) { - query.orderByRaw(`BALANCE - PAYMENT_AMOUNT ${order}`); - }, - - /** - * Retrieve the max invoice - */ - maxInvoiceNo(query, prefix, number) { - query - .select(raw(`REPLACE(INVOICE_NO, "${prefix}", "") AS INV_NUMBER`)) - .havingRaw('CHAR_LENGTH(INV_NUMBER) = ??', [number.length]) - .orderBy('invNumber', 'DESC') - .limit(1) - .first(); - }, - - byPrefixAndNumber(query, prefix, number) { - query.where('invoice_no', `${prefix}${number}`); - }, - - /** - * Status filter. - */ - statusFilter(query, filterType) { - switch (filterType) { - case 'draft': - query.modify('draft'); - break; - case 'delivered': - query.modify('delivered'); - break; - case 'unpaid': - query.modify('unpaid'); - break; - case 'overdue': - default: - query.modify('overdue'); - break; - case 'partially-paid': - query.modify('partiallyPaid'); - break; - case 'paid': - query.modify('paid'); - break; - } - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const AccountTransaction = require('models/AccountTransaction'); - const ItemEntry = require('models/ItemEntry'); - const Customer = require('models/Customer'); - const InventoryCostLotTracker = require('models/InventoryCostLotTracker'); - const PaymentReceiveEntry = require('models/PaymentReceiveEntry'); - - return { - /** - * Sale invoice associated entries. - */ - entries: { - relation: Model.HasManyRelation, - modelClass: ItemEntry.default, - join: { - from: 'sales_invoices.id', - to: 'items_entries.referenceId', - }, - filter(builder) { - builder.where('reference_type', 'SaleInvoice'); - }, - }, - - /** - * Belongs to customer model. - */ - customer: { - relation: Model.BelongsToOneRelation, - modelClass: Customer.default, - join: { - from: 'sales_invoices.customerId', - to: 'contacts.id', - }, - filter(query) { - query.where('contact_service', 'Customer'); - }, - }, - - /** - * Invoice has associated account transactions. - */ - transactions: { - relation: Model.HasManyRelation, - modelClass: AccountTransaction.default, - join: { - from: 'sales_invoices.id', - to: 'accounts_transactions.referenceId', - }, - filter(builder) { - builder.where('reference_type', 'SaleInvoice'); - }, - }, - - costTransactions: { - relation: Model.HasManyRelation, - modelClass: InventoryCostLotTracker.default, - join: { - from: 'sales_invoices.id', - to: 'inventory_cost_lot_tracker.transactionId', - }, - filter(builder) { - builder.where('transaction_type', 'SaleInvoice'); - }, - }, - - paymentEntries: { - relation: Model.HasManyRelation, - modelClass: PaymentReceiveEntry.default, - join: { - from: 'sales_invoices.id', - to: 'payment_receives_entries.invoice_id', - }, - }, - }; - } - - /** - * Change payment amount. - * @param {Integer} invoiceId - * @param {Numeric} amount - */ - static async changePaymentAmount(invoiceId, amount) { - const changeMethod = amount > 0 ? 'increment' : 'decrement'; - - await this.query() - .where('id', invoiceId) - [changeMethod]('payment_amount', Math.abs(amount)); - } - - /** - * Sale invoice meta. - */ - static get meta() { - return SaleInvoiceMeta; - } - - static dueAmountFieldSortQuery(query, role) { - query.modify('sortByDueAmount', role.order); - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model searchable. - */ - static get searchable() { - return true; - } - - /** - * Model search attributes. - */ - static get searchRoles() { - return [ - { fieldKey: 'invoice_no', comparator: 'contains' }, - { condition: 'or', fieldKey: 'reference_no', comparator: 'contains' }, - { condition: 'or', fieldKey: 'amount', comparator: 'equals' }, - ]; - } -} \ No newline at end of file diff --git a/server/src/models/SaleInvoiceEntry.js b/server/src/models/SaleInvoiceEntry.js deleted file mode 100644 index 0d081bdb2..000000000 --- a/server/src/models/SaleInvoiceEntry.js +++ /dev/null @@ -1,29 +0,0 @@ -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class SaleInvoiceEntry extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'sales_invoices_entries'; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const SaleInvoice = require('models/SaleInvoice'); - - return { - saleInvoice: { - relation: Model.BelongsToOneRelation, - modelClass: SaleInvoice.default, - join: { - from: 'sales_invoices_entries.sale_invoice_id', - to: 'sales_invoices.id', - }, - }, - }; - } -} diff --git a/server/src/models/SaleReceipt.Settings.ts b/server/src/models/SaleReceipt.Settings.ts deleted file mode 100644 index a844661ed..000000000 --- a/server/src/models/SaleReceipt.Settings.ts +++ /dev/null @@ -1,85 +0,0 @@ -export default { - defaultFilterField: 'receipt_date', - defaultSort: { - sortOrder: 'DESC', - sortField: 'created_at', - }, - fields: { - 'amount': { - name: 'receipt.field.amount', - column: 'amount', - fieldType: 'number', - }, - 'deposit_account': { - column: 'deposit_account_id', - name: 'receipt.field.deposit_account', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'depositAccount', - - relationEntityLabel: 'name', - relationEntityKey: 'slug', - }, - 'customer': { - name: 'receipt.field.customer', - column: 'customer_id', - fieldType: 'relation', - - relationType: 'enumeration', - relationKey: 'customer', - - relationEntityLabel: 'display_name', - relationEntityKey: 'id', - }, - 'receipt_date': { - name: 'receipt.field.receipt_date', - column: 'receipt_date', - fieldType: 'date', - - }, - 'receipt_number': { - name: 'receipt.field.receipt_number', - column: 'receipt_number', - fieldType: 'text', - }, - 'reference_no': { - name: 'receipt.field.reference_no', - column: 'reference_no', - fieldType: 'text', - }, - 'receipt_message': { - name: 'receipt.field.receipt_message', - column: 'receipt_message', - fieldType: 'text', - }, - 'statement': { - name: 'receipt.field.statement', - column: 'statement', - fieldType: 'text', - }, - 'created_at': { - name: 'receipt.field.created_at', - column: 'created_at', - fieldType: 'date', - }, - 'status': { - name: 'receipt.field.status', - fieldType: 'enumeration', - options: [ - { key: 'draft', label: 'receipt.field.status.draft' }, - { key: 'closed', label: 'receipt.field.status.closed' }, - ], - filterCustomQuery: StatusFieldFilterQuery, - sortCustomQuery: StatusFieldSortQuery, - }, - }, -}; - -function StatusFieldFilterQuery(query, role) { - query.modify('filterByStatus', role.value); -} - -function StatusFieldSortQuery(query, role) { - query.modify('sortByStatus', role.order); -} diff --git a/server/src/models/SaleReceipt.js b/server/src/models/SaleReceipt.js deleted file mode 100644 index 4925122f6..000000000 --- a/server/src/models/SaleReceipt.js +++ /dev/null @@ -1,175 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; -import ModelSetting from './ModelSetting'; -import SaleReceiptSettings from './SaleReceipt.Settings'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/Sales/Receipts/constants'; -import ModelSearchable from './ModelSearchable'; - -export default class SaleReceipt extends mixin(TenantModel, [ - ModelSetting, - CustomViewBaseModel, - ModelSearchable, -]) { - /** - * Table name - */ - static get tableName() { - return 'sales_receipts'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['created_at', 'updated_at']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return ['isClosed', 'isDraft']; - } - - /** - * Detarmine whether the sale receipt closed. - * @return {boolean} - */ - get isClosed() { - return !!this.closedAt; - } - - /** - * Detarmines whether the sale receipt drafted. - * @return {boolean} - */ - get isDraft() { - return !this.closedAt; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - /** - * Filters the closed receipts. - */ - closed(query) { - query.whereNot('closed_at', null); - }, - - /** - * Filters the invoices in draft status. - */ - draft(query) { - query.where('closed_at', null); - }, - - /** - * Sorting the receipts order by status. - */ - sortByStatus(query, order) { - query.orderByRaw(`CLOSED_AT IS NULL ${order}`); - }, - - /** - * Filtering the receipts orders by status. - */ - filterByStatus(query, status) { - switch (status) { - case 'draft': - query.modify('draft'); - break; - case 'closed': - default: - query.modify('closed'); - break; - } - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Customer = require('models/Customer'); - const Account = require('models/Account'); - const AccountTransaction = require('models/AccountTransaction'); - const ItemEntry = require('models/ItemEntry'); - - return { - customer: { - relation: Model.BelongsToOneRelation, - modelClass: Customer.default, - join: { - from: 'sales_receipts.customerId', - to: 'contacts.id', - }, - filter(query) { - query.where('contact_service', 'customer'); - }, - }, - - depositAccount: { - relation: Model.BelongsToOneRelation, - modelClass: Account.default, - join: { - from: 'sales_receipts.depositAccountId', - to: 'accounts.id', - }, - }, - - entries: { - relation: Model.HasManyRelation, - modelClass: ItemEntry.default, - join: { - from: 'sales_receipts.id', - to: 'items_entries.referenceId', - }, - filter(builder) { - builder.where('reference_type', 'SaleReceipt'); - }, - }, - - transactions: { - relation: Model.HasManyRelation, - modelClass: AccountTransaction.default, - join: { - from: 'sales_receipts.id', - to: 'accounts_transactions.referenceId', - }, - filter(builder) { - builder.where('reference_type', 'SaleReceipt'); - }, - }, - }; - } - - /** - * Sale invoice meta. - */ - static get meta() { - return SaleReceiptSettings; - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model search attributes. - */ - static get searchRoles() { - return [ - { fieldKey: 'receipt_number', comparator: 'contains' }, - { condition: 'or', fieldKey: 'reference_no', comparator: 'contains' }, - { condition: 'or', fieldKey: 'amount', comparator: 'equals' }, - ]; - } -} diff --git a/server/src/models/SaleReceiptEntry.js b/server/src/models/SaleReceiptEntry.js deleted file mode 100644 index 1d0f55b5f..000000000 --- a/server/src/models/SaleReceiptEntry.js +++ /dev/null @@ -1,29 +0,0 @@ -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class SaleReceiptEntry extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'sales_receipt_entries'; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const SaleReceipt = require('models/SaleReceipt'); - - return { - saleReceipt: { - relation: Model.BelongsToOneRelation, - modelClass: SaleReceipt.default, - join: { - from: 'sales_receipt_entries.sale_receipt_id', - to: 'sales_receipts.id', - }, - }, - }; - } -} diff --git a/server/src/models/Setting.js b/server/src/models/Setting.js deleted file mode 100644 index 471fccb66..000000000 --- a/server/src/models/Setting.js +++ /dev/null @@ -1,21 +0,0 @@ -import TenantModel from 'models/TenantModel'; -import Auth from './Auth'; - -export default class Setting extends TenantModel { - /** - * Table name - */ - static get tableName() { - return 'settings'; - } - - /** - * Extra metadata query to query with the current authenticate user. - * @param {Object} query - */ - static extraMetadataQuery(query) { - if (Auth.isLogged()) { - query.where('user_id', Auth.userId()); - } - } -} diff --git a/server/src/models/TenantModel.js b/server/src/models/TenantModel.js deleted file mode 100644 index 9fbc9739e..000000000 --- a/server/src/models/TenantModel.js +++ /dev/null @@ -1,22 +0,0 @@ -import { Container } from 'typedi'; -import BaseModel from 'models/Model'; - -export default class TenantModel extends BaseModel { - /** - * Logging all tenant databases queries. - * @param {...any} args - */ - static query(...args) { - const Logger = Container.get('logger'); - - return super.query(...args).onBuildKnex((knexQueryBuilder) => { - const { userParams: { tenantId } } = knexQueryBuilder.client.config; - - knexQueryBuilder.on('query', queryData => { - Logger.info(`[query][tenant] ${queryData.sql}`, { - bindings: queryData.bindings, tenantId - }); - }); - }); - } -} diff --git a/server/src/models/Vendor.Settings.ts b/server/src/models/Vendor.Settings.ts deleted file mode 100644 index ba964edab..000000000 --- a/server/src/models/Vendor.Settings.ts +++ /dev/null @@ -1,92 +0,0 @@ -export default { - defaultFilterField: 'display_name', - defaultSort: { - sortOrder: 'DESC', - sortField: 'created_at', - }, - fields: { - first_name: { - name: 'vendor.field.first_name', - column: 'first_name', - fieldType: 'text', - }, - last_name: { - name: 'vendor.field.last_name', - column: 'last_name', - fieldType: 'text', - }, - display_name: { - name: 'vendor.field.display_name', - column: 'display_name', - fieldType: 'text', - }, - email: { - name: 'vendor.field.email', - column: 'email', - fieldType: 'text', - }, - work_phone: { - name: 'vendor.field.work_phone', - column: 'work_phone', - fieldType: 'text', - }, - personal_phone: { - name: 'vendor.field.personal_pone', - column: 'personal_phone', - fieldType: 'text', - }, - company_name: { - name: 'vendor.field.company_name', - column: 'company_name', - fieldType: 'text', - }, - website: { - name: 'vendor.field.website', - column: 'website', - fieldType: 'text', - }, - created_at: { - name: 'vendor.field.created_at', - column: 'created_at', - fieldType: 'date', - }, - balance: { - name: 'vendor.field.balance', - column: 'balance', - fieldType: 'number', - }, - opening_balance: { - name: 'vendor.field.opening_balance', - column: 'opening_balance', - fieldType: 'number', - }, - opening_balance_at: { - name: 'vendor.field.opening_balance_at', - column: 'opening_balance_at', - fieldType: 'date', - }, - currency_code: { - name: 'vendor.field.currency', - column: 'currency_code', - fieldType: 'text', - }, - status: { - name: 'vendor.field.status', - type: 'enumeration', - options: [ - { key: 'overdue', label: 'vendor.field.status.overdue' }, - { key: 'unpaid', label: 'vendor.field.status.unpaid' }, - ], - filterCustomQuery: (query, role) => { - switch (role.value) { - case 'overdue': - query.modify('overdue'); - break; - case 'unpaid': - query.modify('unpaid'); - break; - } - }, - }, - }, -}; diff --git a/server/src/models/Vendor.js b/server/src/models/Vendor.js deleted file mode 100644 index ecc90e607..000000000 --- a/server/src/models/Vendor.js +++ /dev/null @@ -1,169 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; -import PaginationQueryBuilder from './Pagination'; -import ModelSetting from './ModelSetting'; -import VendorSettings from './Vendor.Settings'; -import CustomViewBaseModel from './CustomViewBaseModel'; -import { DEFAULT_VIEWS } from 'services/Contacts/Vendors/constants'; -import ModelSearchable from './ModelSearchable'; - -class VendorQueryBuilder extends PaginationQueryBuilder { - constructor(...args) { - super(...args); - - this.onBuild((builder) => { - if (builder.isFind() || builder.isDelete() || builder.isUpdate()) { - builder.where('contact_service', 'vendor'); - } - }); - } -} - -export default class Vendor extends mixin(TenantModel, [ - ModelSetting, - CustomViewBaseModel, - ModelSearchable -]) { - /** - * Query builder. - */ - static get QueryBuilder() { - return VendorQueryBuilder; - } - - /** - * Table name - */ - static get tableName() { - return 'contacts'; - } - - /** - * Model timestamps. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Defined virtual attributes. - */ - static get virtualAttributes() { - return ['closingBalance', 'contactNormal']; - } - - /** - * Closing balance attribute. - */ - get closingBalance() { - return this.balance; - } - - /** - * Retrieve the contact noraml; - */ - get contactNormal() { - return 'debit'; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - /** - * Inactive/Active mode. - */ - inactiveMode(query, active = false) { - query.where('active', !active); - }, - - /** - * Filters the active customers. - */ - active(query) { - query.where('active', 1); - }, - /** - * Filters the inactive customers. - */ - inactive(query) { - query.where('active', 0); - }, - /** - * Filters the vendors that have overdue invoices. - */ - overdue(query) { - query.select( - '*', - Vendor.relatedQuery('overdueBills', query.knex()) - .count() - .as('countOverdue') - ); - query.having('countOverdue', '>', 0); - }, - /** - * Filters the unpaid customers. - */ - unpaid(query) { - query.whereRaw('`BALANCE` + `OPENING_BALANCE` <> 0'); - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Bill = require('models/Bill'); - - return { - bills: { - relation: Model.HasManyRelation, - modelClass: Bill.default, - join: { - from: 'contacts.id', - to: 'bills.vendorId', - }, - }, - overdueBills: { - relation: Model.HasManyRelation, - modelClass: Bill.default, - join: { - from: 'contacts.id', - to: 'bills.vendorId', - }, - filter: (query) => { - query.modify('overdue'); - }, - }, - }; - } - - static get meta() { - return VendorSettings; - } - - /** - * Retrieve the default custom views, roles and columns. - */ - static get defaultViews() { - return DEFAULT_VIEWS; - } - - /** - * Model search attributes. - */ - static get searchRoles() { - return [ - { fieldKey: 'display_name', comparator: 'contains' }, - { condition: 'or', fieldKey: 'first_name', comparator: 'contains' }, - { condition: 'or', fieldKey: 'last_name', comparator: 'equals' }, - { condition: 'or', fieldKey: 'company_name', comparator: 'equals' }, - { condition: 'or', fieldKey: 'email', comparator: 'equals' }, - { condition: 'or', fieldKey: 'work_phone', comparator: 'equals' }, - { condition: 'or', fieldKey: 'personal_phone', comparator: 'equals' }, - { condition: 'or', fieldKey: 'website', comparator: 'equals' }, - ]; - } -} diff --git a/server/src/models/View.js b/server/src/models/View.js deleted file mode 100644 index 2745326fd..000000000 --- a/server/src/models/View.js +++ /dev/null @@ -1,72 +0,0 @@ -import { Model, mixin } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class View extends TenantModel { - /** - * Table name. - */ - static get tableName() { - return 'views'; - } - - /** - * Model timestamps. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - static get modifiers() { - const TABLE_NAME = View.tableName; - - return { - allMetadata(query) { - query.withGraphFetched('roles.field'); - query.withGraphFetched('columns'); - }, - - specificOrFavourite(query, viewId) { - if (viewId) { - query.where('id', viewId) - } else { - query.where('favourite', true); - } - return query; - } - } - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const ViewColumn = require('models/ViewColumn'); - const ViewRole = require('models/ViewRole'); - - return { - /** - * View model may has many columns. - */ - columns: { - relation: Model.HasManyRelation, - modelClass: ViewColumn.default, - join: { - from: 'views.id', - to: 'view_has_columns.viewId', - }, - }, - - /** - * View model may has many view roles. - */ - roles: { - relation: Model.HasManyRelation, - modelClass: ViewRole.default, - join: { - from: 'views.id', - to: 'view_roles.viewId', - }, - }, - }; - } -} diff --git a/server/src/models/ViewColumn.js b/server/src/models/ViewColumn.js deleted file mode 100644 index d3dc38e49..000000000 --- a/server/src/models/ViewColumn.js +++ /dev/null @@ -1,21 +0,0 @@ -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class ViewColumn extends TenantModel { - /** - * Table name. - */ - static get tableName() { - return 'view_has_columns'; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - - return { - - }; - } -} diff --git a/server/src/models/ViewRole.js b/server/src/models/ViewRole.js deleted file mode 100644 index 24fe1f0da..000000000 --- a/server/src/models/ViewRole.js +++ /dev/null @@ -1,46 +0,0 @@ -import { Model } from 'objection'; -import TenantModel from 'models/TenantModel'; - -export default class ViewRole extends TenantModel { - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return ['comparators']; - } - - static get comparators() { - return [ - 'equals', 'not_equal', 'contains', 'not_contain', - ]; - } - - /** - * Table name. - */ - static get tableName() { - return 'view_roles'; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const View = require('models/View'); - - return { - /** - * View role model may belongs to view model. - */ - view: { - relation: Model.BelongsToOneRelation, - modelClass: View.default, - join: { - from: 'view_roles.viewId', - to: 'views.id', - }, - }, - }; - } -} diff --git a/server/src/models/index.js b/server/src/models/index.js deleted file mode 100644 index 5196acd92..000000000 --- a/server/src/models/index.js +++ /dev/null @@ -1,55 +0,0 @@ -import Option from './Option'; -import Setting from './Setting'; -import SaleEstimate from './SaleEstimate'; -import SaleEstimateEntry from './SaleEstimateEntry'; -import SaleReceipt from './SaleReceipt'; -import SaleReceiptEntry from './SaleReceiptEntry'; -import Item from './Item'; -import Account from './Account'; -import AccountTransaction from './AccountTransaction'; -import SaleInvoice from './SaleInvoice'; -import SaleInvoiceEntry from './SaleInvoiceEntry'; -import PaymentReceive from './PaymentReceive'; -import PaymentReceiveEntry from './PaymentReceiveEntry'; -import Bill from './Bill'; -import BillPayment from './BillPayment'; -import BillPaymentEntry from './BillPaymentEntry'; -import View from './View'; -import ItemEntry from './ItemEntry'; -import InventoryTransaction from './InventoryTransaction'; -import InventoryLotCostTracker from './InventoryCostLotTracker'; -import Customer from './Customer'; -import Contact from './Contact'; -import Vendor from './Vendor'; -import ExpenseCategory from './ExpenseCategory'; -import Expense from './Expense'; -import ManualJournal from './ManualJournal'; - -export { - SaleEstimate, - SaleEstimateEntry, - SaleReceipt, - SaleReceiptEntry, - SaleInvoice, - SaleInvoiceEntry, - Item, - Account, - AccountTransaction, - PaymentReceive, - PaymentReceiveEntry, - Bill, - BillPayment, - BillPaymentEntry, - View, - ItemEntry, - InventoryTransaction, - InventoryLotCostTracker, - Option, - Contact, - ExpenseCategory, - Expense, - ManualJournal, - Customer, - Vendor, - Setting -}; \ No newline at end of file diff --git a/server/src/repositories/AccountRepository.ts b/server/src/repositories/AccountRepository.ts deleted file mode 100644 index dd7399e2c..000000000 --- a/server/src/repositories/AccountRepository.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { Account } from 'models'; -import TenantRepository from 'repositories/TenantRepository'; -import { IAccount } from 'interfaces'; - -export default class AccountRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return Account.bindKnex(this.knex); - } - - /** - * Retrieve accounts dependency graph. - * @returns {} - */ - async getDependencyGraph(withRelation) { - const cacheKey = this.getCacheKey('accounts.depGraph', withRelation); - - return this.cache.get(cacheKey, async () => { - const accounts = await this.all(withRelation); - - return this.model.toDependencyGraph(accounts); - }); - } - - /** - * Retrieve. - * @param {string} slug - * @return {Promise} - */ - findBySlug(slug: string) { - return this.findOne({ slug }); - } - - /** - * Changes account balance. - * @param {number} accountId - * @param {number} amount - * @return {Promise} - */ - async balanceChange(accountId: number, amount: number): Promise { - const method: string = (amount < 0) ? 'decrement' : 'increment'; - - await this.model.query().where('id', accountId)[method]('amount', amount); - this.flushCache(); - } - - /** - * Activate user by the given id. - * @param {number} userId - User id. - * @return {Promise} - */ - activateById(userId: number): Promise { - return super.update({ active: 1 }, { id: userId }); - } - - /** - * Inactivate user by the given id. - * @param {number} userId - User id. - * @return {Promise} - */ - inactivateById(userId: number): Promise { - return super.update({ active: 0 }, { id: userId }); - } - - /** - * Activate user by the given id. - * @param {number} userId - User id. - * @return {Promise} - */ - async activateByIds(userIds: number[]): Promise { - const results = await this.model.query() - .whereIn('id', userIds) - .patch({ active: true }); - - this.flushCache(); - return results; - } - - /** - * Inactivate user by the given id. - * @param {number} userId - User id. - * @return {Promise} - */ - async inactivateByIds(userIds: number[]): Promise { - const results = await this.model.query() - .whereIn('id', userIds) - .patch({ active: false }); - - this.flushCache(); - return results; - } -} \ No newline at end of file diff --git a/server/src/repositories/AccountTransactionRepository.ts b/server/src/repositories/AccountTransactionRepository.ts deleted file mode 100644 index f65ce6843..000000000 --- a/server/src/repositories/AccountTransactionRepository.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { AccountTransaction } from 'models'; -import TenantRepository from 'repositories/TenantRepository'; - - -interface IJournalTransactionsFilter { - fromDate: string | Date, - toDate: string | Date, - accountsIds: number[], - sumationCreditDebit: boolean, - fromAmount: number, - toAmount: number, - contactsIds?: number[], - contactType?: string, - referenceType?: string[], - referenceId?: number[], - index: number|number[], - indexGroup: number|number[], -}; - -export default class AccountTransactionsRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return AccountTransaction.bindKnex(this.knex); - } - - journal(filter: IJournalTransactionsFilter) { - const cacheKey = this.getCacheKey('transactions.journal', filter); - - return this.cache.get(cacheKey, () => { - return this.model.query() - .modify('filterAccounts', filter.accountsIds) - .modify('filterDateRange', filter.fromDate, filter.toDate) - .withGraphFetched('account') - .onBuild((query) => { - if (filter.sumationCreditDebit) { - query.modify('sumationCreditDebit'); - } - if (filter.fromAmount || filter.toAmount) { - query.modify('filterAmountRange', filter.fromAmount, filter.toAmount); - } - if (filter.contactsIds) { - query.modify('filterContactIds', filter.contactsIds); - } - if (filter.contactType) { - query.where('contact_type', filter.contactType); - } - if (filter.referenceType && filter.referenceType.length > 0) { - query.whereIn('reference_type', filter.referenceType); - } - if (filter.referenceId && filter.referenceId.length > 0) { - query.whereIn('reference_id', filter.referenceId); - } - if (filter.index) { - if (Array.isArray(filter.index)) { - query.whereIn('index', filter.index); - } else { - query.where('index', filter.index); - } - } - if (filter.indexGroup) { - if (Array.isArray(filter.indexGroup)) { - query.whereIn('index_group', filter.indexGroup); - } else { - query.where('index_group', filter.indexGroup); - } - } - }); - }); - } - - openingBalance(fromDate) { - return this.cache.get('transaction.openingBalance', () => { - return AccountTransaction.query() - .modify('openingBalance', fromDate); - }) - } - - closingOpening(toDate) { - return this.cache.get('transaction.closingBalance', () => { - return AccountTransaction.query() - .modify('closingBalance', toDate); - }); - } -} \ No newline at end of file diff --git a/server/src/repositories/BaseModelRepository.ts b/server/src/repositories/BaseModelRepository.ts deleted file mode 100644 index 09d17a6e9..000000000 --- a/server/src/repositories/BaseModelRepository.ts +++ /dev/null @@ -1,5 +0,0 @@ - - -export default class BaseModelRepository { - -} \ No newline at end of file diff --git a/server/src/repositories/BillRepository.ts b/server/src/repositories/BillRepository.ts deleted file mode 100644 index d8b96fc2e..000000000 --- a/server/src/repositories/BillRepository.ts +++ /dev/null @@ -1,38 +0,0 @@ -import moment from 'moment'; -import { Bill } from 'models'; -import TenantRepository from 'repositories/TenantRepository'; - -export default class BillRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return Bill.bindKnex(this.knex); - } - - dueBills(asDate = moment().format('YYYY-MM-DD'), withRelations) { - const cacheKey = this.getCacheKey('dueInvoices', asDate, withRelations); - - return this.cache.get(cacheKey, () => { - return this.model - .query() - .modify('dueBills') - .modify('notOverdue') - .modify('fromDate', asDate) - .withGraphFetched(withRelations); - }); - } - - overdueBills(asDate = moment().format('YYYY-MM-DD'), withRelations) { - const cacheKey = this.getCacheKey('overdueInvoices', asDate, withRelations); - - return this.cache.get(cacheKey, () => { - return this.model - .query() - .modify('dueBills') - .modify('overdue', asDate) - .modify('fromDate', asDate) - .withGraphFetched(withRelations); - }) - } -} \ No newline at end of file diff --git a/server/src/repositories/CachableRepository.ts b/server/src/repositories/CachableRepository.ts deleted file mode 100644 index 379f45242..000000000 --- a/server/src/repositories/CachableRepository.ts +++ /dev/null @@ -1,241 +0,0 @@ -import hashObject from 'object-hash'; -import EntityRepository from './EntityRepository'; - -export default class CachableRepository extends EntityRepository{ - repositoryName: string; - cache: any; - - /** - * Constructor method. - * @param {Knex} knex - * @param {Cache} cache - */ - constructor(knex, cache) { - super(knex); - this.cache = cache; - this.repositoryName = this.constructor.name; - } - - getByCache(key, callback) { - return callback(); - } - - /** - * Retrieve the cache key of the method name and arguments. - * @param {string} method - * @param {...any} args - * @return {string} - */ - getCacheKey(method, ...args) { - const hashArgs = hashObject({ ...args }); - const repositoryName = this.repositoryName; - - return `${repositoryName}-${method}-${hashArgs}`; - } - - /** - * Retrieve all entries with specified relations. - * @param withRelations - */ - all(withRelations?) { - const cacheKey = this.getCacheKey('all', withRelations); - - return this.getByCache(cacheKey, () => { - return super.all(withRelations); - }); - } - - /** - * Finds list of entities with specified attributes - * @param {Object} attributeValues - values to filter retrieved entities by - * @param {string || string[]} [withRelations] - name of relation(s) to eagerly retrieve. - * @returns {Promise} - query builder. You can chain additional methods to it or call "await" or then() on it to execute - */ - find(attributeValues = {}, withRelations?) { - const cacheKey = this.getCacheKey('find', attributeValues, withRelations); - - return this.getByCache(cacheKey, () => { - return super.find(attributeValues, withRelations); - }); - } - - /** - * Finds list of entities with attribute values that are different from specified ones - * @param {Object} attributeValues - values to filter retrieved entities by - * @param {string || string[]} [withRelations] - name of relation(s) to eagerly retrieve, as defined in model relationMappings() - * @returns {Promise} - query builder. You can chain additional methods to it or call "await" or then() on it to execute - */ - findWhereNot(attributeValues = {}, withRelations?) { - const cacheKey = this.getCacheKey('findWhereNot', attributeValues, withRelations); - - return this.getByCache(cacheKey, () => { - return super.findWhereNot(attributeValues, withRelations); - }); - } - - /** - * Finds list of entities with specified attributes (any of multiple specified values) - * Supports both ('attrName', ['value1', 'value2]) and ({attrName: ['value1', 'value2']} formats) - * - * @param {string|Object} searchParam - attribute name or search criteria object - * @param {*[]} [attributeValues] - attribute values to filter retrieved entities by - * @param {string || string[]} [withRelations] - name of relation(s) to eagerly retrieve, as defined in model relationMappings() - * @returns {PromiseLike} - query builder. You can chain additional methods to it or call "await" or then() on it to execute - */ - findWhereIn(searchParam, attributeValues, withRelations?) { - const cacheKey = this.getCacheKey('findWhereIn', attributeValues, withRelations); - - return this.getByCache(cacheKey, () => { - return super.findWhereIn(searchParam, attributeValues, withRelations); - }); - } - - /** - * Finds first entity by given parameters - * - * @param {Object} attributeValues - values to filter retrieved entities by - * @param {string || string[]} [withRelations] - name of relation(s) to eagerly retrieve, as defined in model relationMappings() - * @returns {Promise} - */ - findOne(attributeValues = {}, withRelations?) { - const cacheKey = this.getCacheKey('findOne', attributeValues, withRelations); - - return this.getByCache(cacheKey, () => { - return super.findOne(attributeValues, withRelations); - }); - } - - /** - * Finds first entity by given parameters - * - * @param {string || number} id - value of id column of the entity - * @param {string || string[]} [withRelations] - name of relation(s) to eagerly retrieve, as defined in model relationMappings() - * @returns {Promise} - */ - findOneById(id, withRelations?) { - const cacheKey = this.getCacheKey('findOneById', id, withRelations); - - return this.getByCache(cacheKey, () => { - return super.findOneById(id, withRelations); - }); - } - - /** - * Persists new entity or an array of entities. - * This method does not recursively persist related entities, use createRecursively (to be implemented) for that. - * Batch insert only works on PostgreSQL - * @param {Object} entity - model instance or parameters for a new entity - * @returns {Promise} - query builder. You can chain additional methods to it or call "await" or then() on it to execute - */ - async create(entity) { - const result = await super.create(entity); - - // Flushes the repository cache after insert operation. - this.flushCache(); - - return result; - } - - /** - * Persists updated entity. If previously set fields are not present, performs an incremental update (does not remove fields unless explicitly set to null) - * - * @param {Object} entity - single entity instance - * @param {Object} [trx] - knex transaction instance. If not specified, new implicit transaction will be used. - * @returns {Promise} number of affected rows - */ - async update(entity, whereAttributes?) { - const result = await super.update(entity, whereAttributes); - - // Flushes the repository cache after update operation. - this.flushCache(); - - return result; - } - - /** - * @param {Object} attributeValues - values to filter deleted entities by - * @param {Object} [trx] - * @returns {Promise} Query builder. After promise is resolved, returns count of deleted rows - */ - async deleteBy(attributeValues) { - const result = await super.deleteBy(attributeValues); - this.flushCache(); - - return result; - } - - /** - * @param {string || number} id - value of id column of the entity - * @returns {Promise} Query builder. After promise is resolved, returns count of deleted rows - */ - deleteById(id: number|string) { - const result = super.deleteById(id); - - // Flushes the repository cache after insert operation. - this.flushCache(); - - return result; - } - - /** - * - * @param {string|number[]} values - - */ - async deleteWhereIn(field: string, values: string | number[]) { - const result = await super.deleteWhereIn(field, values); - - // Flushes the repository cache after delete operation. - this.flushCache(); - - return result; - } - - /** - * - * @param {string|number[]} values - */ - async deleteWhereIdIn(values: string | number[]) { - const result = await super.deleteWhereIdIn(values); - - // Flushes the repository cache after delete operation. - this.flushCache(); - - return result; - } - - /** - * - * @param graph - * @param options - */ - async upsertGraph(graph, options) { - const result = await super.upsertGraph(graph, options); - - // Flushes the repository cache after insert operation. - this.flushCache(); - - return result; - } - - /** - * - * @param {} whereAttributes - * @param {string} field - * @param {number} amount - */ - async changeNumber(whereAttributes, field: string, amount: number) { - const result = await super.changeNumber(whereAttributes, field, amount); - - // Flushes the repository cache after update operation. - this.flushCache(); - - return result; - } - - /** - * Flush repository cache. - */ - flushCache(): void { - this.cache.delStartWith(this.repositoryName); - } -} \ No newline at end of file diff --git a/server/src/repositories/ContactRepository.ts b/server/src/repositories/ContactRepository.ts deleted file mode 100644 index 5a07d93c3..000000000 --- a/server/src/repositories/ContactRepository.ts +++ /dev/null @@ -1,12 +0,0 @@ -import TenantRepository from 'repositories/TenantRepository'; -import { Contact } from 'models' - - -export default class ContactRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return Contact.bindKnex(this.knex); - } -} \ No newline at end of file diff --git a/server/src/repositories/CustomerRepository.ts b/server/src/repositories/CustomerRepository.ts deleted file mode 100644 index 59408909e..000000000 --- a/server/src/repositories/CustomerRepository.ts +++ /dev/null @@ -1,46 +0,0 @@ -import TenantRepository from "./TenantRepository"; -import { Customer } from 'models'; - -export default class CustomerRepository extends TenantRepository { - /** - * Contact repository. - */ - constructor(knex, cache) { - super(knex, cache); - this.repositoryName = 'CustomerRepository'; - } - - /** - * Gets the repository's model. - */ - get model() { - return Customer.bindKnex(this.knex); - } - - changeBalance(vendorId: number, amount: number) { - return super.changeNumber({ id: vendorId }, 'balance', amount); - } - - async changeDiffBalance( - vendorId: number, - amount: number, - oldAmount: number, - oldVendorId?: number, - ) { - const diffAmount = amount - oldAmount; - const asyncOpers = []; - const _oldVendorId = oldVendorId || vendorId; - - if (vendorId != _oldVendorId) { - const oldCustomerOper = this.changeBalance(_oldVendorId, (oldAmount * -1)); - const customerOper = this.changeBalance(vendorId, amount); - - asyncOpers.push(customerOper); - asyncOpers.push(oldCustomerOper); - } else { - const balanceChangeOper = this.changeBalance(vendorId, diffAmount); - asyncOpers.push(balanceChangeOper); - } - await Promise.all(asyncOpers); - } -} \ No newline at end of file diff --git a/server/src/repositories/EntityRepository.ts b/server/src/repositories/EntityRepository.ts deleted file mode 100644 index 3d007f096..000000000 --- a/server/src/repositories/EntityRepository.ts +++ /dev/null @@ -1,242 +0,0 @@ -import { cloneDeep, forOwn, isString } from 'lodash'; -import ModelEntityNotFound from 'exceptions/ModelEntityNotFound'; - -function applyGraphFetched(withRelations, builder) { - const relations = Array.isArray(withRelations) - ? withRelations - : typeof withRelations === 'string' - ? withRelations.split(',').map((relation) => relation.trim()) - : []; - - relations.forEach((relation) => { - builder.withGraphFetched(relation); - }); -} - -export default class EntityRepository { - idColumn: string; - knex: any; - - /** - * Constructor method. - * @param {Knex} knex - */ - constructor(knex) { - this.knex = knex; - this.idColumn = 'id'; - } - - /** - * Retrieve the repository model binded it to knex instance. - */ - get model() { - throw new Error("The repository's model is not defined."); - } - - /** - * Retrieve all entries with specified relations. - * - * @param withRelations - */ - all(withRelations?) { - const builder = this.model.query(); - applyGraphFetched(withRelations, builder); - - return builder; - } - - /** - * Finds list of entities with specified attributes - * - * @param {Object} attributeValues - values to filter retrieved entities by - * @param {string || string[]} [withRelations] - name of relation(s) to eagerly retrieve. - * @returns {Promise} - query builder. You can chain additional methods to it or call "await" or then() on it to execute - */ - find(attributeValues = {}, withRelations?) { - const builder = this.model - .query() - .where(attributeValues); - - applyGraphFetched(withRelations, builder); - return builder; - } - - /** - * Finds list of entities with attribute values that are different from specified ones - * - * @param {Object} attributeValues - values to filter retrieved entities by - * @param {string || string[]} [withRelations] - name of relation(s) to eagerly retrieve, as defined in model relationMappings() - * @returns {PromiseLike} - query builder. You can chain additional methods to it or call "await" or then() on it to execute - */ - findWhereNot(attributeValues = {}, withRelations?) { - const builder = this.model - .query() - .whereNot(attributeValues); - - applyGraphFetched(withRelations, builder); - return builder; - } - - /** - * Finds list of entities with specified attributes (any of multiple specified values) - * Supports both ('attrName', ['value1', 'value2]) and ({attrName: ['value1', 'value2']} formats) - * - * @param {string|Object} searchParam - attribute name or search criteria object - * @param {*[]} [attributeValues] - attribute values to filter retrieved entities by - * @param {string || string[]} [withRelations] - name of relation(s) to eagerly retrieve, as defined in model relationMappings() - * @returns {PromiseLike} - query builder. You can chain additional methods to it or call "await" or then() on it to execute - */ - findWhereIn(searchParam, attributeValues, withRelations?) { - const commonBuilder = (builder) => { - applyGraphFetched(withRelations, builder); - }; - if (isString(searchParam)) { - return this.model - .query() - .whereIn(searchParam, attributeValues) - .onBuild(commonBuilder); - } else { - const builder = this.model.query(this.knex).onBuild(commonBuilder); - - forOwn(searchParam, (value, key) => { - if (Array.isArray(value)) { - builder.whereIn(key, value); - } else { - builder.where(key, value); - } - }); - return builder; - } - } - - /** - * Finds first entity by given parameters - * - * @param {Object} attributeValues - values to filter retrieved entities by - * @param {string || string[]} [withRelations] - name of relation(s) to eagerly retrieve, as defined in model relationMappings() - * @returns {Promise} - */ - async findOne(attributeValues = {}, withRelations?) { - const results = await this.find(attributeValues, withRelations); - return results[0] || null; - } - - /** - * Finds first entity by given parameters - * - * @param {string || number} id - value of id column of the entity - * @param {string || string[]} [withRelations] - name of relation(s) to eagerly retrieve, as defined in model relationMappings() - * @returns {Promise} - */ - findOneById(id, withRelations?) { - return this.findOne({ [this.idColumn]: id }, withRelations); - } - - /** - * Persists new entity or an array of entities. - * This method does not recursively persist related entities, use createRecursively (to be implemented) for that. - * Batch insert only works on PostgreSQL - * - * @param {Object} entity - model instance or parameters for a new entity - * @returns {Promise} - query builder. You can chain additional methods to it or call "await" or then() on it to execute - */ - create(entity) { - // Keep the input parameter immutable - const instanceDTO = cloneDeep(entity); - - return this.model.query().insert(instanceDTO); - } - - /** - * Persists updated entity. If previously set fields are not present, performs an incremental update (does not remove fields unless explicitly set to null) - * - * @param {Object} entity - single entity instance - * @returns {Promise} number of affected rows - */ - async update(entity, whereAttributes?) { - const entityDto = cloneDeep(entity); - const identityClause = {}; - - if (Array.isArray(this.idColumn)) { - this.idColumn.forEach( - (idColumn) => (identityClause[idColumn] = entityDto[idColumn]) - ); - } else { - identityClause[this.idColumn] = entityDto[this.idColumn]; - } - const whereConditions = whereAttributes || identityClause; - const modifiedEntitiesCount = await this.model - .query() - .where(whereConditions) - .update(entityDto); - - if (modifiedEntitiesCount === 0) { - throw new ModelEntityNotFound(entityDto[this.idColumn]); - } - return modifiedEntitiesCount; - } - - /** - * - * @param {Object} attributeValues - values to filter deleted entities by - * @param {Object} [trx] - * @returns {Promise} Query builder. After promise is resolved, returns count of deleted rows - */ - deleteBy(attributeValues) { - return this.model.query().delete().where(attributeValues); - } - - /** - * @param {string || number} id - value of id column of the entity - * @returns {Promise} Query builder. After promise is resolved, returns count of deleted rows - */ - deleteById(id: number | string) { - return this.deleteBy({ - [this.idColumn]: id, - }); - } - - /** - * Deletes the given entries in the array on the specific field. - * @param {string} field - - * @param {number|string} values - - */ - deleteWhereIn(field: string, values: string | number[]) { - return this.model.query().whereIn(field, values).delete(); - } - - /** - * - * @param {string|number[]} values - */ - deleteWhereIdIn(values: string | number[]) { - return this.deleteWhereIn(this.idColumn, values); - } - - /** - * Arbitrary relation graphs can be upserted (insert + update + delete) - * using the upsertGraph method. - * @param graph - * @param options - */ - upsertGraph(graph, options) { - // Keep the input grpah immutable - const graphCloned = cloneDeep(graph); - return this.model.query().upsertGraph(graphCloned, options); - } - - /** - * - * @param {object} whereAttributes - * @param {string} field - * @param amount - */ - changeNumber(whereAttributes, field: string, amount: number) { - const changeMethod = amount > 0 ? 'increment' : 'decrement'; - - return this.model - .query() - .where(whereAttributes) - [changeMethod](field, Math.abs(amount)); - } -} diff --git a/server/src/repositories/ExpenseEntryRepository.ts b/server/src/repositories/ExpenseEntryRepository.ts deleted file mode 100644 index 4f84e81a3..000000000 --- a/server/src/repositories/ExpenseEntryRepository.ts +++ /dev/null @@ -1,11 +0,0 @@ -import TenantRepository from "./TenantRepository"; -import { ExpenseCategory } from 'models'; - -export default class ExpenseEntryRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return ExpenseCategory.bindKnex(this.knex); - } -} \ No newline at end of file diff --git a/server/src/repositories/ExpenseRepository.ts b/server/src/repositories/ExpenseRepository.ts deleted file mode 100644 index 2f9df91f6..000000000 --- a/server/src/repositories/ExpenseRepository.ts +++ /dev/null @@ -1,35 +0,0 @@ -import TenantRepository from "./TenantRepository"; -import moment from "moment"; -import { Expense } from 'models'; - -export default class ExpenseRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return Expense.bindKnex(this.knex); - } - - /** - * Publish the given expense. - * @param {number} expenseId - */ - publish(expenseId: number): Promise { - return super.update({ - id: expenseId, - publishedAt: moment().toMySqlDateTime(), - }); - } - - /** - * Publishes the given expenses in bulk. - * @param {number[]} expensesIds - * @return {Promise} - */ - async whereIdInPublish(expensesIds: number): Promise { - await this.model.query().whereIn('id', expensesIds).patch({ - publishedAt: moment().toMySqlDateTime(), - }); - this.flushCache(); - } -} \ No newline at end of file diff --git a/server/src/repositories/InventoryTransactionRepository.ts b/server/src/repositories/InventoryTransactionRepository.ts deleted file mode 100644 index b7cd23517..000000000 --- a/server/src/repositories/InventoryTransactionRepository.ts +++ /dev/null @@ -1,11 +0,0 @@ -import TenantRepository from 'repositories/TenantRepository'; -import { InventoryTransaction } from 'models'; - -export default class InventoryTransactionRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return InventoryTransaction.bindKnex(this.knex); - } -} \ No newline at end of file diff --git a/server/src/repositories/ItemRepository.ts b/server/src/repositories/ItemRepository.ts deleted file mode 100644 index 043d6a715..000000000 --- a/server/src/repositories/ItemRepository.ts +++ /dev/null @@ -1,12 +0,0 @@ - -import { Item } from "models"; -import TenantRepository from "./TenantRepository"; - -export default class ItemRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return Item.bindKnex(this.knex); - } -} \ No newline at end of file diff --git a/server/src/repositories/JournalRepository.ts b/server/src/repositories/JournalRepository.ts deleted file mode 100644 index 334233f8e..000000000 --- a/server/src/repositories/JournalRepository.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ManualJournal } from 'models'; -import TenantRepository from 'repositories/TenantRepository'; - -export default class JournalRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return ManualJournal.bindKnex(this.knex); - } -} \ No newline at end of file diff --git a/server/src/repositories/PaymentReceiveEntryRepository.ts b/server/src/repositories/PaymentReceiveEntryRepository.ts deleted file mode 100644 index 5d29d21d0..000000000 --- a/server/src/repositories/PaymentReceiveEntryRepository.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { PaymentReceiveEntry } from 'models'; -import TenantRepository from 'repositories/TenantRepository'; - -export default class PaymentReceiveEntryRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return PaymentReceiveEntry.bindKnex(this.knex); - } -} \ No newline at end of file diff --git a/server/src/repositories/PaymentReceiveRepository.ts b/server/src/repositories/PaymentReceiveRepository.ts deleted file mode 100644 index df5efd705..000000000 --- a/server/src/repositories/PaymentReceiveRepository.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { PaymentReceive } from 'models'; -import TenantRepository from 'repositories/TenantRepository'; - -export default class PaymentReceiveRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return PaymentReceive.bindKnex(this.knex); - } -} diff --git a/server/src/repositories/SaleInvoiceRepository.ts b/server/src/repositories/SaleInvoiceRepository.ts deleted file mode 100644 index c5e962d39..000000000 --- a/server/src/repositories/SaleInvoiceRepository.ts +++ /dev/null @@ -1,38 +0,0 @@ -import moment from 'moment'; -import { SaleInvoice } from 'models'; -import TenantRepository from 'repositories/TenantRepository'; - -export default class SaleInvoiceRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return SaleInvoice.bindKnex(this.knex); - } - - dueInvoices(asDate = moment().format('YYYY-MM-DD'), withRelations) { - const cacheKey = this.getCacheKey('dueInvoices', asDate, withRelations); - - return this.cache.get(cacheKey, async () => { - return this.model - .query() - .modify('dueInvoices') - .modify('notOverdue', asDate) - .modify('fromDate', asDate) - .withGraphFetched(withRelations); - }); - } - - overdueInvoices(asDate = moment().format('YYYY-MM-DD'), withRelations) { - const cacheKey = this.getCacheKey('overdueInvoices', asDate, withRelations); - - return this.cache.get(cacheKey, () => { - return this.model - .query() - .modify('dueInvoices') - .modify('overdue', asDate) - .modify('fromDate', asDate) - .withGraphFetched(withRelations); - }); - } -} diff --git a/server/src/repositories/SettingRepository.ts b/server/src/repositories/SettingRepository.ts deleted file mode 100644 index 5c17caeb8..000000000 --- a/server/src/repositories/SettingRepository.ts +++ /dev/null @@ -1,11 +0,0 @@ -import TenantRepository from 'repositories/TenantRepository'; -import Setting from 'models/Setting'; - -export default class SettingRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return Setting.bindKnex(this.knex); - } -} \ No newline at end of file diff --git a/server/src/repositories/TenantRepository.ts b/server/src/repositories/TenantRepository.ts deleted file mode 100644 index a90aab17d..000000000 --- a/server/src/repositories/TenantRepository.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Container } from 'typedi'; -import TenancyService from 'services/Tenancy/TenancyService'; -import CachableRepository from './CachableRepository'; - -export default class TenantRepository extends CachableRepository { - repositoryName: string; - - /** - * Constructor method. - * @param {number} tenantId - */ - constructor(knex, cache) { - super(knex, cache); - } -} \ No newline at end of file diff --git a/server/src/repositories/VendorRepository.ts b/server/src/repositories/VendorRepository.ts deleted file mode 100644 index 085973e87..000000000 --- a/server/src/repositories/VendorRepository.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Vendor } from "models"; -import TenantRepository from "./TenantRepository"; - -export default class VendorRepository extends TenantRepository { - /** - * Contact repository. - */ - constructor(knex, cache) { - super(knex, cache); - this.repositoryName = 'VendorRepository'; - } - - /** - * Gets the repository's model. - */ - get model() { - return Vendor.bindKnex(this.knex); - } - - unpaid() { - - } - - changeBalance(vendorId: number, amount: number) { - return super.changeNumber({ id: vendorId }, 'balance', amount); - } - - async changeDiffBalance( - vendorId: number, - amount: number, - oldAmount: number, - oldVendorId?: number, - ) { - const diffAmount = amount - oldAmount; - const asyncOpers = []; - const _oldVendorId = oldVendorId || vendorId; - - if (vendorId != _oldVendorId) { - const oldCustomerOper = this.changeBalance(_oldVendorId, (oldAmount * -1)); - const customerOper = this.changeBalance(vendorId, amount); - - asyncOpers.push(customerOper); - asyncOpers.push(oldCustomerOper); - } else { - const balanceChangeOper = this.changeBalance(vendorId, diffAmount); - asyncOpers.push(balanceChangeOper); - } - await Promise.all(asyncOpers); - } -} diff --git a/server/src/repositories/ViewRepository.ts b/server/src/repositories/ViewRepository.ts deleted file mode 100644 index 5d808f889..000000000 --- a/server/src/repositories/ViewRepository.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { View } from 'models'; -import TenantRepository from 'repositories/TenantRepository'; - -export default class ViewRepository extends TenantRepository { - /** - * Gets the repository's model. - */ - get model() { - return View.bindKnex(this.knex); - } - - /** - * Retrieve all views of the given resource id. - */ - allByResource(resourceModel: string, withRelations?) { - return super.find({ resource_model: resourceModel }, withRelations); - } -} \ No newline at end of file diff --git a/server/src/repositories/ViewRoleRepository.ts b/server/src/repositories/ViewRoleRepository.ts deleted file mode 100644 index 22a099a30..000000000 --- a/server/src/repositories/ViewRoleRepository.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { omit } from 'lodash'; -import TenantRepository from 'repositories/TenantRepository'; - -export default class ViewRoleRepository extends TenantRepository { - -} \ No newline at end of file diff --git a/server/src/server.ts b/server/src/server.ts deleted file mode 100644 index 53b9bb9d0..000000000 --- a/server/src/server.ts +++ /dev/null @@ -1,29 +0,0 @@ -import 'reflect-metadata'; // We need this in order to use @Decorators -import 'module-alias/register'; -import 'config'; -import './before'; - -import express from 'express'; -import loadersFactory from 'loaders'; - -async function startServer() { - const app = express(); - - // Intiialize all registered loaders. - await loadersFactory({ expressApp: app }); - - app.listen(app.get('port'), (err) => { - if (err) { - console.log(err); - process.exit(1); - return; - } - console.log(` - ################################################ - Server listening on port: ${app.get('port')} - ################################################ - `); - }); -} - -startServer(); \ No newline at end of file diff --git a/server/src/services/Accounting/JournalCommands.ts b/server/src/services/Accounting/JournalCommands.ts deleted file mode 100644 index 4a5df9bf0..000000000 --- a/server/src/services/Accounting/JournalCommands.ts +++ /dev/null @@ -1,463 +0,0 @@ -import moment from 'moment'; -import { sumBy } from 'lodash'; -import { - IBill, - IManualJournalEntry, - ISaleReceipt, - ISystemUser, - IAccount, -} from 'interfaces'; -import JournalPoster from './JournalPoster'; -import JournalEntry from './JournalEntry'; -import { - IManualJournal, - IExpense, - IExpenseCategory, - IItem, - ISaleInvoice, - IInventoryLotCost, - IItemEntry, -} from 'interfaces'; -import { increment } from 'utils'; -export default class JournalCommands { - journal: JournalPoster; - models: any; - repositories: any; - - /** - * Constructor method. - * @param {JournalPoster} journal - - */ - constructor(journal: JournalPoster) { - this.journal = journal; - - this.repositories = this.journal.repositories; - this.models = this.journal.models; - } - - /** - * Records the bill journal entries. - * @param {IBill} bill - * @param {IAccount} payableAccount - - */ - bill(bill: IBill, payableAccount: IAccount): void { - const commonJournalMeta = { - debit: 0, - credit: 0, - referenceId: bill.id, - referenceType: 'Bill', - date: moment(bill.billDate).format('YYYY-MM-DD'), - userId: bill.userId, - referenceNumber: bill.referenceNo, - transactionNumber: bill.billNumber, - createdAt: bill.createdAt, - }; - const payableEntry = new JournalEntry({ - ...commonJournalMeta, - credit: bill.amount, - account: payableAccount.id, - contactId: bill.vendorId, - index: 1, - }); - this.journal.credit(payableEntry); - - bill.entries.forEach((entry, index) => { - const landedCostAmount = sumBy(entry.allocatedCostEntries, 'cost'); - - // Inventory or cost entry. - const debitEntry = new JournalEntry({ - ...commonJournalMeta, - debit: entry.amount + landedCostAmount, - account: - ['inventory'].indexOf(entry.item.type) !== -1 - ? entry.item.inventoryAccountId - : entry.costAccountId, - index: index + 2, - itemId: entry.itemId, - itemQuantity: entry.quantity, - }); - this.journal.debit(debitEntry); - }); - - // Allocate cost entries journal entries. - bill.locatedLandedCosts.forEach((landedCost) => { - const creditEntry = new JournalEntry({ - ...commonJournalMeta, - credit: landedCost.amount, - account: landedCost.costAccountId, - }); - this.journal.credit(creditEntry); - }); - } - - /** - * Customer opening balance journals. - * @param {number} customerId - * @param {number} openingBalance - */ - async customerOpeningBalance( - customerId: number, - openingBalance: number, - openingBalanceAt: Date | string, - userId: number - ) { - const { accountRepository } = this.repositories; - - const incomeAccount = await accountRepository.findOne({ - slug: 'other-income', - }); - const receivableAccount = await accountRepository.findOne({ - slug: 'accounts-receivable', - }); - - const commonEntry = { - referenceType: 'CustomerOpeningBalance', - referenceId: customerId, - date: openingBalanceAt, - userId, - }; - const debitEntry = new JournalEntry({ - ...commonEntry, - credit: 0, - debit: openingBalance, - account: receivableAccount.id, - contactId: customerId, - index: 1, - }); - const creditEntry = new JournalEntry({ - ...commonEntry, - credit: openingBalance, - debit: 0, - account: incomeAccount.id, - index: 2, - }); - this.journal.debit(debitEntry); - this.journal.credit(creditEntry); - } - - /** - * Vendor opening balance journals - * @param {number} vendorId - * @param {number} openingBalance - * @param {Date|string} openingBalanceAt - * @param {number} authorizedUserId - */ - async vendorOpeningBalance( - vendorId: number, - openingBalance: number, - openingBalanceAt: Date | string, - authorizedUserId: ISystemUser - ) { - const { accountRepository } = this.repositories; - - const payableAccount = await accountRepository.findOne({ - slug: 'accounts-payable', - }); - const otherCost = await accountRepository.findOne({ - slug: 'other-expenses', - }); - - const commonEntry = { - referenceType: 'VendorOpeningBalance', - referenceId: vendorId, - date: openingBalanceAt, - userId: authorizedUserId, - }; - const creditEntry = new JournalEntry({ - ...commonEntry, - account: payableAccount.id, - credit: openingBalance, - debit: 0, - index: 1, - contactId: vendorId, - }); - const debitEntry = new JournalEntry({ - ...commonEntry, - account: otherCost.id, - debit: openingBalance, - credit: 0, - index: 2, - }); - this.journal.debit(debitEntry); - this.journal.credit(creditEntry); - } - - /** - * Writes journal entries of expense model object. - * @param {IExpense} expense - */ - expense(expense: IExpense, userId: number) { - const mixinEntry = { - referenceType: 'Expense', - referenceId: expense.id, - date: expense.paymentDate, - userId, - }; - const paymentJournalEntry = new JournalEntry({ - credit: expense.totalAmount, - account: expense.paymentAccountId, - index: 1, - ...mixinEntry, - }); - this.journal.credit(paymentJournalEntry); - - expense.categories.forEach((category: IExpenseCategory, index) => { - const expenseJournalEntry = new JournalEntry({ - account: category.expenseAccountId, - debit: category.amount, - note: category.description, - ...mixinEntry, - index: index + 2, - }); - this.journal.debit(expenseJournalEntry); - }); - } - - /** - * Reverts the jouranl entries. - * @param {number|number[]} referenceId - Reference id. - * @param {string} referenceType - Reference type. - */ - async revertJournalEntries( - referenceId: number | number[], - referenceType: string - ) { - const { AccountTransaction } = this.models; - - const transactions = await AccountTransaction.query() - .where('reference_type', referenceType) - .whereIn( - 'reference_id', - Array.isArray(referenceId) ? referenceId : [referenceId] - ) - .withGraphFetched('account'); - - this.journal.fromTransactions(transactions); - this.journal.removeEntries(); - } - - /** - * Reverts the sale invoice cost journal entries. - * @param {Date|string} startingDate - * @return {Promise} - */ - async revertInventoryCostJournalEntries( - startingDate: Date | string - ): Promise { - const { transactionsRepository } = this.repositories; - - const transactions = await transactionsRepository.journal({ - fromDate: startingDate, - referenceType: ['SaleInvoice'], - indexGroup: 20 - }); - this.journal.fromTransactions(transactions); - this.journal.removeEntries(); - } - - /** - * Reverts sale invoice the income journal entries. - * @param {number} saleInvoiceId - */ - async revertInvoiceIncomeEntries(saleInvoiceId: number) { - const { transactionsRepository } = this.repositories; - - const transactions = await transactionsRepository.journal({ - referenceType: ['SaleInvoice'], - referenceId: [saleInvoiceId], - }); - this.journal.fromTransactions(transactions); - this.journal.removeEntries(); - } - - /** - * Writes journal entries from manual journal model object. - * @param {IManualJournal} manualJournalObj - * @param {number} manualJournalId - */ - async manualJournal(manualJournalObj: IManualJournal) { - const commonEntry = { - transaction_number: manualJournalObj.journalNumber, - reference_number: manualJournalObj.reference, - createdAt: manualJournalObj.createdAt, - }; - manualJournalObj.entries.forEach((entry: IManualJournalEntry) => { - const jouranlEntry = new JournalEntry({ - ...commonEntry, - debit: entry.debit, - credit: entry.credit, - account: entry.accountId, - referenceType: 'Journal', - referenceId: manualJournalObj.id, - contactId: entry.contactId, - note: entry.note, - date: manualJournalObj.date, - userId: manualJournalObj.userId, - index: entry.index, - }); - if (entry.debit) { - this.journal.debit(jouranlEntry); - } else { - this.journal.credit(jouranlEntry); - } - }); - } - - /** - * Writes journal entries for given sale invoice. - * ------- - * - Cost of goods sold -> Debit -> YYYY - * - Inventory assets -> Credit -> YYYY - * -------- - * @param {ISaleInvoice} saleInvoice - * @param {JournalPoster} journal - */ - saleInvoiceInventoryCost( - inventoryCostLots: IInventoryLotCost & - { item: IItem; itemEntry: IItemEntry }[] - ) { - const getIndexIncrement = increment(0); - - inventoryCostLots.forEach( - ( - inventoryCostLot: IInventoryLotCost & { - item: IItem; - itemEntry: IItemEntry; - } - ) => { - const commonEntry = { - referenceType: inventoryCostLot.transactionType, - referenceId: inventoryCostLot.transactionId, - date: inventoryCostLot.date, - indexGroup: 20, - createdAt: inventoryCostLot.createdAt, - }; - // XXX Debit - Cost account. - const costEntry = new JournalEntry({ - ...commonEntry, - debit: inventoryCostLot.cost, - account: inventoryCostLot.costAccountId, - itemId: inventoryCostLot.itemId, - index: getIndexIncrement(), - }); - // XXX Credit - Inventory account. - const inventoryEntry = new JournalEntry({ - ...commonEntry, - credit: inventoryCostLot.cost, - account: inventoryCostLot.item.inventoryAccountId, - itemId: inventoryCostLot.itemId, - index: getIndexIncrement(), - }); - this.journal.credit(inventoryEntry); - this.journal.debit(costEntry); - } - ); - } - - /** - * Writes the sale invoice income journal entries. - * ----- - * - Receivable accounts -> Debit -> XXXX - * - Income -> Credit -> XXXX - * - * @param {ISaleInvoice} saleInvoice - * @param {number} receivableAccountsId - * @param {number} authorizedUserId - */ - async saleInvoiceIncomeEntries( - saleInvoice: ISaleInvoice & { - entries: IItemEntry & { item: IItem }; - }, - receivableAccountId: number - ): Promise { - const commonEntry = { - referenceType: 'SaleInvoice', - referenceId: saleInvoice.id, - date: saleInvoice.invoiceDate, - userId: saleInvoice.userId, - - transactionNumber: saleInvoice.invoiceNo, - referenceNumber: saleInvoice.referenceNo, - - createdAt: saleInvoice.createdAt, - indexGroup: 10, - }; - // XXX Debit - Receivable account. - const receivableEntry = new JournalEntry({ - ...commonEntry, - debit: saleInvoice.balance, - account: receivableAccountId, - contactId: saleInvoice.customerId, - index: 1, - }); - this.journal.debit(receivableEntry); - - saleInvoice.entries.forEach((entry: IItemEntry, index: number) => { - const income: number = entry.quantity * entry.rate; - - // XXX Credit - Income account. - const incomeEntry = new JournalEntry({ - ...commonEntry, - credit: income, - account: entry.sellAccountId, - note: entry.description, - index: index + 2, - itemId: entry.itemId, - itemQuantity: entry.quantity, - }); - this.journal.credit(incomeEntry); - }); - } - - /** - * Writes the sale invoice income journal entries. - * ----- - * - Deposit account -> Debit -> XXXX - * - Income -> Credit -> XXXX - * - * @param {ISaleInvoice} saleInvoice - * @param {number} receivableAccountsId - * @param {number} authorizedUserId - */ - async saleReceiptIncomeEntries( - saleReceipt: ISaleReceipt & { - entries: IItemEntry & { item: IItem }; - } - ): Promise { - const commonEntry = { - referenceType: 'SaleReceipt', - referenceId: saleReceipt.id, - date: saleReceipt.receiptDate, - userId: saleReceipt.userId, - transactionNumber: saleReceipt.receiptNumber, - referenceNumber: saleReceipt.referenceNo, - createdAt: saleReceipt.createdAt, - }; - // XXX Debit - Deposit account. - const depositEntry = new JournalEntry({ - ...commonEntry, - debit: saleReceipt.amount, - account: saleReceipt.depositAccountId, - index: 1, - }); - this.journal.debit(depositEntry); - - saleReceipt.entries.forEach( - (entry: IItemEntry & { item: IItem }, index: number) => { - const income: number = entry.quantity * entry.rate; - - // XXX Credit - Income account. - const incomeEntry = new JournalEntry({ - ...commonEntry, - credit: income, - account: entry.item.sellAccountId, - note: entry.description, - index: index + 2, - itemId: entry.itemId, - itemQuantity: entry.quantity, - }); - this.journal.credit(incomeEntry); - } - ); - } -} diff --git a/server/src/services/Accounting/JournalContacts.ts b/server/src/services/Accounting/JournalContacts.ts deleted file mode 100644 index 6ae2b22c5..000000000 --- a/server/src/services/Accounting/JournalContacts.ts +++ /dev/null @@ -1,74 +0,0 @@ -import async from 'async'; - -export default class JournalContacts { - saveContactBalanceQueue: any; - contactsBalanceTable: { - [key: number]: { credit: number; debit: number }; - } = {}; - - constructor(journal) { - this.journal = journal; - this.saveContactBalanceQueue = async.queue( - this.saveContactBalanceChangeTask.bind(this), - 10 - ); - } - /** - * Sets the contact balance change. - */ - private getContactsBalanceChanges(entry) { - if (!entry.contactId) { - return; - } - const change = { - debit: entry.debit, - credit: entry.credit, - }; - if (!this.contactsBalanceTable[entry.contactId]) { - this.contactsBalanceTable[entry.contactId] = { credit: 0, debit: 0 }; - } - if (change.credit) { - this.contactsBalanceTable[entry.contactId].credit += change.credit; - } - if (change.debit) { - this.contactsBalanceTable[entry.contactId].debit += change.debit; - } - } - - /** - * Save contacts balance change. - */ - saveContactsBalance() { - const balanceChanges = Object.entries( - this.contactsBalanceTable - ).map(([contactId, { credit, debit }]) => ({ contactId, credit, debit })); - - return this.saveContactBalanceQueue.pushAsync(balanceChanges); - } - - /** - * Saves contact balance change task. - * @param {number} contactId - Contact id. - * @param {number} credit - Credit amount. - * @param {number} debit - Debit amount. - */ - async saveContactBalanceChangeTask({ contactId, credit, debit }, callback) { - const { contactRepository } = this.repositories; - - const contact = await contactRepository.findOneById(contactId); - let balanceChange = 0; - - if (contact.contactNormal === 'credit') { - balanceChange += credit - debit; - } else { - balanceChange += debit - credit; - } - // Contact change balance. - await contactRepository.changeNumber( - { id: contactId }, - 'balance', - balanceChange - ); - callback(); - } -} diff --git a/server/src/services/Accounting/JournalEntry.ts b/server/src/services/Accounting/JournalEntry.ts deleted file mode 100644 index 177ace1f1..000000000 --- a/server/src/services/Accounting/JournalEntry.ts +++ /dev/null @@ -1,10 +0,0 @@ - -export default class JournalEntry { - constructor(entry) { - const defaults = { - credit: 0, - debit: 0, - }; - this.entry = { ...defaults, ...entry }; - } -} diff --git a/server/src/services/Accounting/JournalFinancial.ts b/server/src/services/Accounting/JournalFinancial.ts deleted file mode 100644 index 8cdaeea8a..000000000 --- a/server/src/services/Accounting/JournalFinancial.ts +++ /dev/null @@ -1,17 +0,0 @@ -import moment from 'moment'; -import { IJournalPoster } from 'interfaces'; - -export default class JournalFinancial { - journal: IJournalPoster; - - accountsDepGraph: any; - - /** - * Journal poster. - * @param {IJournalPoster} journal - */ - constructor(journal: IJournalPoster) { - this.journal = journal; - this.accountsDepGraph = this.journal.accountsDepGraph; - } -} \ No newline at end of file diff --git a/server/src/services/Accounting/JournalPoster.ts b/server/src/services/Accounting/JournalPoster.ts deleted file mode 100644 index befb71f64..000000000 --- a/server/src/services/Accounting/JournalPoster.ts +++ /dev/null @@ -1,744 +0,0 @@ -import { omit, get, chain } from 'lodash'; -import moment from 'moment'; -import { Container } from 'typedi'; -import async from 'async'; -import JournalEntry from 'services/Accounting/JournalEntry'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { - IJournalEntry, - IJournalPoster, - IAccountChange, - IAccountsChange, - TEntryType, -} from 'interfaces'; - -const CONTACTS_CONFIG = [ - { - accountBySlug: 'accounts-receivable', - contactService: 'customer', - assignRequired: true, - }, - { - accountBySlug: 'accounts-payable', - contactService: 'vendor', - assignRequired: true, - }, -]; - -export default class JournalPoster implements IJournalPoster { - tenantId: number; - tenancy: TenancyService; - logger: any; - models: any; - repositories: any; - - deletedEntriesIds: number[] = []; - entries: IJournalEntry[] = []; - balancesChange: IAccountsChange = {}; - accountsDepGraph: IAccountsChange; - - accountsBalanceTable: { [key: number]: number } = {}; - contactsBalanceTable: { - [key: number]: { credit: number; debit: number }[]; - } = {}; - saveContactBalanceQueue: any; - - /** - * Journal poster constructor. - * @param {number} tenantId - - */ - constructor(tenantId: number, accountsGraph?: any) { - this.initTenancy(); - - this.tenantId = tenantId; - this.models = this.tenancy.models(tenantId); - this.repositories = this.tenancy.repositories(tenantId); - - if (accountsGraph) { - this.accountsDepGraph = accountsGraph; - } - this.saveContactBalanceQueue = async.queue( - this.saveContactBalanceChangeTask.bind(this), - 10 - ); - } - - /** - * Initial tenancy. - * @private - */ - private initTenancy() { - try { - this.tenancy = Container.get(TenancyService); - this.logger = Container.get('logger'); - } catch (exception) { - throw new Error('Should execute this class inside tenancy area.'); - } - } - - /** - * Async initialize acccounts dependency graph. - * @private - * @returns {Promise} - */ - public async initAccountsDepGraph(): Promise { - const { accountRepository } = this.repositories; - - if (!this.accountsDepGraph) { - const accountsDepGraph = await accountRepository.getDependencyGraph(); - this.accountsDepGraph = accountsDepGraph; - } - } - - /** - * Detarmines the ledger is empty. - */ - public isEmpty() { - return this.entries.length === 0; - } - - /** - * Writes the credit entry for the given account. - * @param {IJournalEntry} entry - - */ - public credit(entryModel: IJournalEntry): void { - if (entryModel instanceof JournalEntry === false) { - throw new Error('The entry is not instance of JournalEntry.'); - } - this.entries.push(entryModel.entry); - this.setAccountBalanceChange(entryModel.entry); - this.setContactBalanceChange(entryModel.entry); - } - - /** - * Writes the debit entry for the given account. - * @param {JournalEntry} entry - - */ - public debit(entryModel: IJournalEntry): void { - if (entryModel instanceof JournalEntry === false) { - throw new Error('The entry is not instance of JournalEntry.'); - } - this.entries.push(entryModel.entry); - this.setAccountBalanceChange(entryModel.entry); - this.setContactBalanceChange(entryModel.entry); - } - - /** - * Sets the contact balance change. - */ - private setContactBalanceChange(entry) { - if (!entry.contactId) { - return; - } - const change = { - debit: entry.debit || 0, - credit: entry.credit || 0, - account: entry.account, - }; - if (!this.contactsBalanceTable[entry.contactId]) { - this.contactsBalanceTable[entry.contactId] = []; - } - this.contactsBalanceTable[entry.contactId].push(change); - } - - /** - * Save contacts balance change. - */ - async saveContactsBalance() { - await this.initAccountsDepGraph(); - - const balanceChanges = Object.entries(this.contactsBalanceTable).map( - ([contactId, entries]) => ({ - contactId, - entries: entries.filter((entry) => { - const account = this.accountsDepGraph.getNodeData(entry.account); - - return ( - account && - CONTACTS_CONFIG.some((config) => { - return config.accountBySlug === account.slug; - }) - ); - }), - }) - ); - - const balanceEntries = chain(balanceChanges) - .map((change) => - change.entries.map((entry) => ({ - ...entry, - contactId: change.contactId, - })) - ) - .flatten() - .value(); - - return this.saveContactBalanceQueue.pushAsync(balanceEntries); - } - - /** - * Saves contact balance change task. - * @param {number} contactId - Contact id. - * @param {number} credit - Credit amount. - * @param {number} debit - Debit amount. - */ - async saveContactBalanceChangeTask({ contactId, credit, debit }) { - const { contactRepository } = this.repositories; - - const contact = await contactRepository.findOneById(contactId); - let balanceChange = 0; - - if (contact.contactNormal === 'credit') { - balanceChange += credit - debit; - } else { - balanceChange += debit - credit; - } - // Contact change balance. - await contactRepository.changeNumber( - { id: contactId }, - 'balance', - balanceChange - ); - } - - /** - * Sets account balance change. - * @param {JournalEntry} entry - * @param {String} type - */ - private setAccountBalanceChange(entry: IJournalEntry): void { - const accountChange: IAccountChange = { - debit: entry.debit, - credit: entry.credit, - }; - this._setAccountBalanceChange(entry.account, accountChange); - } - - /** - * Sets account balance change. - * @private - * @param {number} accountId - - * @param {IAccountChange} accountChange - */ - private _setAccountBalanceChange( - accountId: number, - accountChange: IAccountChange - ) { - this.balancesChange = this.accountBalanceChangeReducer( - this.balancesChange, - accountId, - accountChange - ); - } - - /** - * Accounts balance change reducer. - * @param {IAccountsChange} balancesChange - * @param {number} accountId - * @param {IAccountChange} accountChange - * @return {IAccountChange} - */ - private accountBalanceChangeReducer( - balancesChange: IAccountsChange, - accountId: number, - accountChange: IAccountChange - ) { - const change = { ...balancesChange }; - - if (!change[accountId]) { - change[accountId] = { credit: 0, debit: 0 }; - } - if (accountChange.credit) { - change[accountId].credit += accountChange.credit; - } - if (accountChange.debit) { - change[accountId].debit += accountChange.debit; - } - return change; - } - - /** - * Converts balance changes to array. - * @private - * @param {IAccountsChange} accountsChange - - * @return {Promise<{ account: number, change: number }>} - */ - private async convertBalanceChangesToArr( - accountsChange: IAccountsChange - ): Promise<{ account: number; change: number }[]> { - const mappedList: { account: number; change: number }[] = []; - const accountsIds: number[] = Object.keys(accountsChange).map((id) => - parseInt(id, 10) - ); - - await Promise.all( - accountsIds.map(async (account: number) => { - const accountChange = accountsChange[account]; - const accountNode = this.accountsDepGraph.getNodeData(account); - const normal = accountNode.accountNormal; - - let change = 0; - - if (accountChange.credit) { - change += - normal === 'credit' - ? accountChange.credit - : -1 * accountChange.credit; - } - if (accountChange.debit) { - change += - normal === 'debit' ? accountChange.debit : -1 * accountChange.debit; - } - mappedList.push({ account, change }); - }) - ); - return mappedList; - } - - /** - * Saves the balance change of journal entries. - * @returns {Promise} - */ - public async saveBalance() { - await this.initAccountsDepGraph(); - - const { Account } = this.models; - const accountsChange = this.balanceChangeWithDepends(this.balancesChange); - const balancesList = await this.convertBalanceChangesToArr(accountsChange); - const balancesAccounts = balancesList.map((b) => b.account); - - // Ensure the accounts has atleast zero in amount. - await Account.query() - .where('amount', null) - .whereIn('id', balancesAccounts) - .patch({ amount: 0 }); - - const balanceUpdateOpers: Promise[] = []; - - balancesList.forEach((balance: { account: number; change: number }) => { - const method: string = balance.change < 0 ? 'decrement' : 'increment'; - - this.logger.info( - '[journal_poster] increment/decrement account balance.', - { - balance, - tenantId: this.tenantId, - } - ); - const query = Account.query() - [method]('amount', Math.abs(balance.change)) - .where('id', balance.account); - - balanceUpdateOpers.push(query); - }); - - await Promise.all(balanceUpdateOpers); - this.resetAccountsBalanceChange(); - } - - /** - * Changes all accounts that dependencies of changed accounts. - * @param {IAccountsChange} accountsChange - * @returns {IAccountsChange} - */ - private balanceChangeWithDepends( - accountsChange: IAccountsChange - ): IAccountsChange { - const accountsIds = Object.keys(accountsChange); - let changes: IAccountsChange = {}; - - accountsIds.forEach((accountId) => { - const accountChange = accountsChange[accountId]; - const depAccountsIds = this.accountsDepGraph.dependantsOf(accountId); - - [accountId, ...depAccountsIds].forEach((account) => { - changes = this.accountBalanceChangeReducer( - changes, - account, - accountChange - ); - }); - }); - return changes; - } - - /** - * Resets accounts balance change. - * @private - */ - private resetAccountsBalanceChange() { - this.balancesChange = {}; - } - - /** - * Saves the stacked journal entries to the storage. - * @returns {Promise} - */ - public async saveEntries() { - const { transactionsRepository } = this.repositories; - const saveOperations: Promise[] = []; - - this.logger.info('[journal] trying to insert accounts transactions.'); - - this.entries.forEach((entry) => { - const oper = transactionsRepository.create({ - accountId: entry.account, - ...omit(entry, ['account']), - }); - saveOperations.push(oper); - }); - await Promise.all(saveOperations); - } - - /** - * Reverses the stacked journal entries. - */ - public reverseEntries() { - const reverseEntries: IJournalEntry[] = []; - - this.entries.forEach((entry) => { - const reverseEntry = { ...entry }; - - if (entry.credit) { - reverseEntry.debit = entry.credit; - } - if (entry.debit) { - reverseEntry.credit = entry.debit; - } - reverseEntries.push(reverseEntry); - }); - this.entries = reverseEntries; - } - - /** - * Removes all stored entries or by the given in ids. - * @param {Array} ids - - */ - removeEntries(ids: number[] = []) { - const targetIds = ids.length <= 0 ? this.entries.map((e) => e.id) : ids; - const removeEntries = this.entries.filter( - (e) => targetIds.indexOf(e.id) !== -1 - ); - this.entries = this.entries.filter((e) => targetIds.indexOf(e.id) === -1); - - removeEntries.forEach((entry) => { - entry.credit = -1 * entry.credit; - entry.debit = -1 * entry.debit; - - this.setAccountBalanceChange(entry); - this.setContactBalanceChange(entry); - }); - this.deletedEntriesIds.push(...removeEntries.map((entry) => entry.id)); - } - - /** - * Delete all the stacked entries. - * @return {Promise} - */ - public async deleteEntries() { - const { transactionsRepository } = this.repositories; - - if (this.deletedEntriesIds.length > 0) { - await transactionsRepository.deleteWhereIdIn(this.deletedEntriesIds); - } - } - - /** - * Load fetched accounts journal entries. - * @param {IJournalEntry[]} entries - - */ - fromTransactions(transactions) { - transactions.forEach((transaction) => { - this.entries.push({ - ...transaction, - referenceTypeFormatted: transaction.referenceTypeFormatted, - account: transaction.accountId, - accountNormal: get(transaction, 'account.accountNormal'), - }); - }); - } - - /** - * Calculates the entries balance change. - * @public - */ - public calculateEntriesBalanceChange() { - this.entries.forEach((entry) => { - if (entry.credit) { - this.setAccountBalanceChange(entry, 'credit'); - } - if (entry.debit) { - this.setAccountBalanceChange(entry, 'debit'); - } - }); - } - - static fromTransactions(entries, ...args: [number, ...any]) { - const journal = new this(...args); - journal.fromTransactions(entries); - - return journal; - } - - /** - * Retrieve the closing balance for the given account and closing date. - * @param {Number} accountId - - * @param {Date} closingDate - - * @param {string} dataType? - - * @return {number} - */ - getClosingBalance( - accountId: number, - closingDate: Date | string, - dateType: string = 'day' - ): number { - let closingBalance = 0; - const momentClosingDate = moment(closingDate); - - this.entries.forEach((entry) => { - // Can not continue if not before or event same closing date. - if ( - (!momentClosingDate.isAfter(entry.date, dateType) && - !momentClosingDate.isSame(entry.date, dateType)) || - (entry.account !== accountId && accountId) - ) { - return; - } - if (entry.accountNormal === 'credit') { - closingBalance += entry.credit ? entry.credit : -1 * entry.debit; - } else if (entry.accountNormal === 'debit') { - closingBalance += entry.debit ? entry.debit : -1 * entry.credit; - } - }); - return closingBalance; - } - - /** - * Retrieve the given account balance with dependencies accounts. - * @param {Number} accountId - - * @param {Date} closingDate - - * @param {String} dateType - - * @return {Number} - */ - getAccountBalance( - accountId: number, - closingDate: Date | string, - dateType: string - ) { - const accountNode = this.accountsDepGraph.getNodeData(accountId); - const depAccountsIds = this.accountsDepGraph.dependenciesOf(accountId); - const depAccounts = depAccountsIds.map((id) => - this.accountsDepGraph.getNodeData(id) - ); - - let balance: number = 0; - - [...depAccounts, accountNode].forEach((account) => { - const closingBalance = this.getClosingBalance( - account.id, - closingDate, - dateType - ); - this.accountsBalanceTable[account.id] = closingBalance; - balance += this.accountsBalanceTable[account.id]; - }); - return balance; - } - - /** - * Retrieve the credit/debit sumation for the given account and date. - * @param {Number} account - - * @param {Date|String} closingDate - - */ - getTrialBalance(accountId, closingDate) { - const momentClosingDate = moment(closingDate); - const result = { - credit: 0, - debit: 0, - balance: 0, - }; - this.entries.forEach((entry) => { - if ( - (!momentClosingDate.isAfter(entry.date, 'day') && - !momentClosingDate.isSame(entry.date, 'day')) || - (entry.account !== accountId && accountId) - ) { - return; - } - result.credit += entry.credit; - result.debit += entry.debit; - - if (entry.accountNormal === 'credit') { - result.balance += entry.credit - entry.debit; - } else if (entry.accountNormal === 'debit') { - result.balance += entry.debit - entry.credit; - } - }); - return result; - } - - /** - * Retrieve trial balance of the given account with depends. - * @param {Number} accountId - * @param {Date} closingDate - * @param {String} dateType - * @return {Number} - */ - - getTrialBalanceWithDepands( - accountId: number, - closingDate: Date, - dateType: string - ) { - const accountNode = this.accountsDepGraph.getNodeData(accountId); - const depAccountsIds = this.accountsDepGraph.dependenciesOf(accountId); - const depAccounts = depAccountsIds.map((id) => - this.accountsDepGraph.getNodeData(id) - ); - const trialBalance = { credit: 0, debit: 0, balance: 0 }; - - [...depAccounts, accountNode].forEach((account) => { - const _trialBalance = this.getTrialBalance( - account.id, - closingDate, - dateType - ); - - trialBalance.credit += _trialBalance.credit; - trialBalance.debit += _trialBalance.debit; - trialBalance.balance += _trialBalance.balance; - }); - return trialBalance; - } - - getContactTrialBalance( - accountId: number, - contactId: number, - contactType: string, - closingDate?: Date | string, - openingDate?: Date | string - ) { - const momentClosingDate = moment(closingDate); - const momentOpeningDate = moment(openingDate); - const trial = { - credit: 0, - debit: 0, - balance: 0, - }; - - this.entries.forEach((entry) => { - if ( - (closingDate && - !momentClosingDate.isAfter(entry.date, 'day') && - !momentClosingDate.isSame(entry.date, 'day')) || - (openingDate && - !momentOpeningDate.isBefore(entry.date, 'day') && - !momentOpeningDate.isSame(entry.date)) || - (accountId && entry.account !== accountId) || - (contactId && entry.contactId !== contactId) || - entry.contactType !== contactType - ) { - return; - } - if (entry.credit) { - trial.balance -= entry.credit; - trial.credit += entry.credit; - } - if (entry.debit) { - trial.balance += entry.debit; - trial.debit += entry.debit; - } - }); - return trial; - } - - /** - * Retrieve total balnace of the given customer/vendor contact. - * @param {Number} accountId - * @param {Number} contactId - * @param {String} contactType - * @param {Date} closingDate - */ - getContactBalance( - accountId: number, - contactId: number, - contactType: string, - closingDate: Date, - openingDate: Date - ) { - const momentClosingDate = moment(closingDate); - let balance = 0; - - this.entries.forEach((entry) => { - if ( - (closingDate && - !momentClosingDate.isAfter(entry.date, 'day') && - !momentClosingDate.isSame(entry.date, 'day')) || - (entry.account !== accountId && accountId) || - (contactId && entry.contactId !== contactId) || - entry.contactType !== contactType - ) { - return; - } - if (entry.credit) { - balance -= entry.credit; - } - if (entry.debit) { - balance += entry.debit; - } - }); - return balance; - } - - - getAccountEntries(accountId: number) { - return this.entries.filter((entry) => entry.account === accountId); - } - - /** - * Retrieve total balnace of the given customer/vendor contact. - * @param {Number} accountId - * @param {Number} contactId - * @param {String} contactType - * @param {Date} closingDate - */ - getEntriesBalance( - entries - ) { - let balance = 0; - - entries.forEach((entry) => { - if (entry.credit) { - balance -= entry.credit; - } - if (entry.debit) { - balance += entry.debit; - } - }); - return balance; - } - - getContactEntries( - contactId: number, - openingDate: Date, - closingDate?: Date, - ) { - const momentClosingDate = moment(closingDate); - const momentOpeningDate = moment(openingDate); - - return this.entries.filter((entry) => { - if ( - (closingDate && - !momentClosingDate.isAfter(entry.date, 'day') && - !momentClosingDate.isSame(entry.date, 'day')) || - (openingDate && - !momentOpeningDate.isBefore(entry.date, 'day') && - !momentOpeningDate.isSame(entry.date)) || - (entry.contactId === contactId) - ) { - return true; - } - return false; - }); - } -} diff --git a/server/src/services/Accounting/Ledger.ts b/server/src/services/Accounting/Ledger.ts deleted file mode 100644 index fc78e554f..000000000 --- a/server/src/services/Accounting/Ledger.ts +++ /dev/null @@ -1,136 +0,0 @@ -import moment from 'moment'; -import { defaultTo } from 'lodash'; -import { IAccountTransaction, ILedger, ILedgerEntry } from 'interfaces'; -import EntityRepository from 'repositories/EntityRepository'; - -export default class Ledger implements ILedger { - readonly entries: ILedgerEntry[]; - - /** - * Constructor method. - * @param {ILedgerEntry[]} entries - */ - constructor(entries: ILedgerEntry[]) { - this.entries = entries; - } - - /** - * Filters the ledegr entries. - * @param callback - * @returns {ILedger} - */ - public filter(callback): ILedger { - const entries = this.entries.filter(callback); - return new Ledger(entries); - } - - /** - * Retrieve the all entries of the ledger. - * @return {ILedgerEntry[]} - */ - public getEntries(): ILedgerEntry[] { - return this.entries; - } - - /** - * Filters entries by th given contact id and returns a new ledger. - * @param {number} contactId - * @returns {ILedger} - */ - public whereContactId(contactId: number): ILedger { - return this.filter((entry) => entry.contactId === contactId); - } - - /** - * Filters entries by the given account id and returns a new ledger. - * @param {number} accountId - * @returns {ILedger} - */ - public whereAccountId(accountId: number): ILedger { - return this.filter((entry) => entry.accountId === accountId); - } - - /** - * Filters entries that before or same the given date and returns a new ledger. - * @param {Date|string} fromDate - * @returns {ILedger} - */ - public whereFromDate(fromDate: Date | string): ILedger { - const fromDateParsed = moment(fromDate); - - return this.filter( - (entry) => - fromDateParsed.isBefore(entry.date) || fromDateParsed.isSame(entry.date) - ); - } - - /** - * Filters ledger entries that after the given date and retruns a new ledger. - * @param {Date|string} toDate - * @returns {ILedger} - */ - public whereToDate(toDate: Date | string): ILedger { - const toDateParsed = moment(toDate); - - return this.filter( - (entry) => - toDateParsed.isAfter(entry.date) || toDateParsed.isSame(entry.date) - ); - } - - /** - * Retrieve the closing balance of the entries. - * @returns {number} - */ - public getClosingBalance(): number { - let closingBalance = 0; - - this.entries.forEach((entry) => { - if (entry.accountNormal === 'credit') { - closingBalance += entry.credit - entry.debit; - } else if (entry.accountNormal === 'debit') { - closingBalance += entry.debit - entry.credit; - } - }); - return closingBalance; - } - - /** - * Mappes the account transactions to ledger entries. - * @param {IAccountTransaction[]} entries - * @returns {ILedgerEntry[]} - */ - static mappingTransactions(entries: IAccountTransaction[]): ILedgerEntry[] { - return entries.map(this.mapTransaction); - } - - /** - * Mappes the account transaction to ledger entry. - * @param {IAccountTransaction} entry - * @returns {ILedgerEntry} - */ - static mapTransaction(entry: IAccountTransaction): ILedgerEntry { - return { - credit: defaultTo(entry.credit, 0), - debit: defaultTo(entry.debit, 0), - accountNormal: entry.account.accountNormal, - accountId: entry.accountId, - contactId: entry.contactId, - date: entry.date, - transactionNumber: entry.transactionNumber, - transactionType: entry.referenceTypeFormatted, - referenceNumber: entry.referenceNumber, - referenceType: entry.referenceType, - }; - } - - /** - * Mappes the account transactions to ledger entries. - * @param {IAccountTransaction[]} transactions - * @returns {ILedger} - */ - static fromTransactions(transactions: IAccountTransaction[]): ILedger { - const entries = Ledger.mappingTransactions(transactions); - return new Ledger(entries); - } -} diff --git a/server/src/services/Accounts/AccountTransform.ts b/server/src/services/Accounts/AccountTransform.ts deleted file mode 100644 index bbf1c5994..000000000 --- a/server/src/services/Accounts/AccountTransform.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Service } from 'typedi'; -import { IAccount } from 'interfaces'; -import { Transformer } from 'lib/Transformer/Transformer'; -import { formatNumber } from 'utils'; - -export default class AccountTransformer extends Transformer { - /** - * Include these attributes to sale invoice object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return [ - 'formattedAmount', - 'currencyCode' - ]; - }; - - /** - * Retrieve formatted account amount. - * @param {IAccount} invoice - * @returns {string} - */ - protected formattedAmount = (account: IAccount): string => { - return formatNumber(account.amount, { - currencyCode: this.meta.baseCurrency, - }); - }; - - /** - * Retrieve account currency code. - * @returns {string} - */ - protected currencyCode = (): string => { - return this.meta.baseCurrency; - }; -} diff --git a/server/src/services/Accounts/AccountsService.ts b/server/src/services/Accounts/AccountsService.ts deleted file mode 100644 index fb6f482d3..000000000 --- a/server/src/services/Accounts/AccountsService.ts +++ /dev/null @@ -1,824 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { difference, chain, uniq } from 'lodash'; -import { kebabCase } from 'lodash'; -import R from 'ramda'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { ServiceError } from 'exceptions'; -import { - IAccountDTO, - IAccount, - IAccountsFilter, - IFilterMeta, - IAccountResponse, - IAccountsTransactionsFilter, - IAccountTransaction, -} from 'interfaces'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import events from 'subscribers/events'; -import AccountTypesUtils from 'lib/AccountTypes'; -import { ERRORS } from './constants'; -import { flatToNestedArray } from 'utils'; -import I18nService from 'services/I18n/I18nService'; -import AccountTransformer from './AccountTransform'; -import { Tenant } from 'system/models'; - -@Service() -export default class AccountsService { - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject('logger') - logger: any; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject() - i18nService: I18nService; - - @Inject() - accountTransformer: AccountTransformer; - - /** - * Retrieve account type or throws service error. - * @param {number} tenantId - - * @param {number} accountTypeId - - * @return {IAccountType} - */ - private getAccountTypeOrThrowError(accountTypeKey: string) { - this.logger.info('[accounts] validating account type existance.', { - accountTypeKey, - }); - const accountType = AccountTypesUtils.getType(accountTypeKey); - - if (!accountType) { - this.logger.info('[accounts] account type not found.'); - throw new ServiceError(ERRORS.ACCOUNT_TYPE_NOT_FOUND); - } - return accountType; - } - - /** - * Retrieve parent account or throw service error. - * @param {number} tenantId - * @param {number} accountId - * @param {number} notAccountId - */ - private async getParentAccountOrThrowError( - tenantId: number, - accountId: number, - notAccountId?: number - ) { - const { Account } = this.tenancy.models(tenantId); - - this.logger.info('[accounts] validating parent account existance.', { - tenantId, - accountId, - notAccountId, - }); - const parentAccount = await Account.query() - .findById(accountId) - .onBuild((query) => { - if (notAccountId) { - query.whereNot('id', notAccountId); - } - }); - if (!parentAccount) { - this.logger.info('[accounts] parent account not found.', { - tenantId, - accountId, - }); - throw new ServiceError(ERRORS.PARENT_ACCOUNT_NOT_FOUND); - } - return parentAccount; - } - - /** - * Throws error if the account type was not unique on the storage. - * @param {number} tenantId - * @param {string} accountCode - * @param {number} notAccountId - */ - private async isAccountCodeUniqueOrThrowError( - tenantId: number, - accountCode: string, - notAccountId?: number - ) { - const { Account } = this.tenancy.models(tenantId); - - this.logger.info( - '[accounts] validating the account code unique on the storage.', - { - tenantId, - accountCode, - notAccountId, - } - ); - const account = await Account.query() - .where('code', accountCode) - .onBuild((query) => { - if (notAccountId) { - query.whereNot('id', notAccountId); - } - }); - - if (account.length > 0) { - this.logger.info('[accounts] account code is not unique.', { - tenantId, - accountCode, - }); - throw new ServiceError(ERRORS.ACCOUNT_CODE_NOT_UNIQUE); - } - } - - /** - * Throws service error if parent account has different type. - * @param {IAccountDTO} accountDTO - * @param {IAccount} parentAccount - */ - private throwErrorIfParentHasDiffType( - accountDTO: IAccountDTO, - parentAccount: IAccount - ) { - if (accountDTO.accountType !== parentAccount.accountType) { - throw new ServiceError(ERRORS.PARENT_ACCOUNT_HAS_DIFFERENT_TYPE); - } - } - - /** - * Retrieve account of throw service error in case account not found. - * @param {number} tenantId - * @param {number} accountId - * @return {IAccount} - */ - public async getAccountOrThrowError(tenantId: number, accountId: number) { - const { accountRepository } = this.tenancy.repositories(tenantId); - - this.logger.info('[accounts] validating the account existance.', { - tenantId, - accountId, - }); - const account = await accountRepository.findOneById(accountId); - - if (!account) { - this.logger.info('[accounts] the given account not found.', { - accountId, - }); - throw new ServiceError(ERRORS.ACCOUNT_NOT_FOUND); - } - return account; - } - - /** - * Diff account type between new and old account, throw service error - * if they have different account type. - * - * @param {IAccount|IAccountDTO} oldAccount - * @param {IAccount|IAccountDTO} newAccount - */ - private async isAccountTypeChangedOrThrowError( - oldAccount: IAccount | IAccountDTO, - newAccount: IAccount | IAccountDTO - ) { - if (oldAccount.accountType !== newAccount.accountType) { - throw new ServiceError(ERRORS.ACCOUNT_TYPE_NOT_ALLOWED_TO_CHANGE); - } - } - - /** - * Validates the account name uniquiness. - * @param {number} tenantId - * @param {string} accountName - * @param {number} notAccountId - Ignore the account id. - */ - private async validateAccountNameUniquiness( - tenantId: number, - accountName: string, - notAccountId?: number - ) { - const { Account } = this.tenancy.models(tenantId); - - this.logger.info('[accounts] validating account name uniquiness.', { - tenantId, - accountName, - notAccountId, - }); - const foundAccount = await Account.query() - .findOne('name', accountName) - .onBuild((query) => { - if (notAccountId) { - query.whereNot('id', notAccountId); - } - }); - if (foundAccount) { - throw new ServiceError(ERRORS.ACCOUNT_NAME_NOT_UNIQUE); - } - } - - /** - * Creates a new account on the storage. - * @param {number} tenantId - * @param {IAccount} accountDTO - * @returns {IAccount} - */ - public async newAccount(tenantId: number, accountDTO: IAccountDTO) { - const { accountRepository } = this.tenancy.repositories(tenantId); - - // Validate account name uniquiness. - await this.validateAccountNameUniquiness(tenantId, accountDTO.name); - - // Validate the account code uniquiness. - if (accountDTO.code) { - await this.isAccountCodeUniqueOrThrowError(tenantId, accountDTO.code); - } - this.getAccountTypeOrThrowError(accountDTO.accountType); - - if (accountDTO.parentAccountId) { - const parentAccount = await this.getParentAccountOrThrowError( - tenantId, - accountDTO.parentAccountId - ); - this.throwErrorIfParentHasDiffType(accountDTO, parentAccount); - - // Inherit active status from parent account. - accountDTO.active = parentAccount.active; - } - const account = await accountRepository.create({ - ...accountDTO, - slug: kebabCase(accountDTO.name), - }); - this.logger.info('[account] account created successfully.', { - account, - accountDTO, - }); - - // Triggers `onAccountCreated` event. - this.eventDispatcher.dispatch(events.accounts.onCreated); - - return account; - } - - /** - * Edits details of the given account. - * @param {number} tenantId - * @param {number} accountId - * @param {IAccountDTO} accountDTO - */ - public async editAccount( - tenantId: number, - accountId: number, - accountDTO: IAccountDTO - ) { - this.logger.info('[account] trying to edit account.', { - tenantId, - accountId, - }); - const { accountRepository } = this.tenancy.repositories(tenantId); - const oldAccount = await this.getAccountOrThrowError(tenantId, accountId); - - // Validate account name uniquiness. - await this.validateAccountNameUniquiness( - tenantId, - accountDTO.name, - accountId - ); - - await this.isAccountTypeChangedOrThrowError(oldAccount, accountDTO); - - // Validate the account code not exists on the storage. - if (accountDTO.code && accountDTO.code !== oldAccount.code) { - await this.isAccountCodeUniqueOrThrowError( - tenantId, - accountDTO.code, - oldAccount.id - ); - } - if (accountDTO.parentAccountId) { - const parentAccount = await this.getParentAccountOrThrowError( - tenantId, - accountDTO.parentAccountId, - oldAccount.id - ); - this.throwErrorIfParentHasDiffType(accountDTO, parentAccount); - } - // Update the account on the storage. - const account = await accountRepository.update( - { ...accountDTO }, - { id: oldAccount.id } - ); - this.logger.info('[account] account edited successfully.', { - account, - accountDTO, - tenantId, - }); - // Triggers `onAccountEdited` event. - this.eventDispatcher.dispatch(events.accounts.onEdited); - - return account; - } - - /** - * Retrieve the given account details. - * @param {number} tenantId - * @param {number} accountId - */ - public async getAccount(tenantId: number, accountId: number) { - const account = await this.getAccountOrThrowError(tenantId, accountId); - - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - return new AccountTransformer() - .setMeta({ baseCurrency: tenant.metadata.baseCurrency }) - .transform(account); - } - - /** - * Detarmine if the given account id exists on the storage. - * @param {number} tenantId - * @param {number} accountId - */ - public async isAccountExists(tenantId: number, accountId: number) { - const { Account } = this.tenancy.models(tenantId); - - this.logger.info('[account] validating the account existance.', { - tenantId, - accountId, - }); - const foundAccounts = await Account.query().where('id', accountId); - - return foundAccounts.length > 0; - } - - /** - * Throws error if the account was prefined. - * @param {IAccount} account - */ - private throwErrorIfAccountPredefined(account: IAccount) { - if (account.predefined) { - throw new ServiceError(ERRORS.ACCOUNT_PREDEFINED); - } - } - - /** - * Unlink the given parent account with children accounts. - * @param {number} tenantId - - * @param {number|number[]} parentAccountId - - */ - private async unassociateChildrenAccountsFromParent( - tenantId: number, - parentAccountId: number | number[] - ) { - const { Account } = this.tenancy.models(tenantId); - const accountsIds = Array.isArray(parentAccountId) - ? parentAccountId - : [parentAccountId]; - - await Account.query() - .whereIn('parent_account_id', accountsIds) - .patch({ parent_account_id: null }); - } - - /** - * Throws service error if the account has associated transactions. - * @param {number} tenantId - * @param {number} accountId - */ - private async throwErrorIfAccountHasTransactions( - tenantId: number, - accountId: number - ) { - const { AccountTransaction } = this.tenancy.models(tenantId); - const accountTransactions = await AccountTransaction.query().where( - 'account_id', - accountId - ); - if (accountTransactions.length > 0) { - throw new ServiceError(ERRORS.ACCOUNT_HAS_ASSOCIATED_TRANSACTIONS); - } - } - - /** - * Deletes the account from the storage. - * @param {number} tenantId - * @param {number} accountId - */ - public async deleteAccount(tenantId: number, accountId: number) { - const { accountRepository } = this.tenancy.repositories(tenantId); - const account = await this.getAccountOrThrowError(tenantId, accountId); - - // Throw error if the account was predefined. - this.throwErrorIfAccountPredefined(account); - - // Throw error if the account has transactions. - await this.throwErrorIfAccountHasTransactions(tenantId, accountId); - - // Unlink the parent account from children accounts. - await this.unassociateChildrenAccountsFromParent(tenantId, accountId); - - await accountRepository.deleteById(account.id); - this.logger.info('[account] account has been deleted successfully.', { - tenantId, - accountId, - }); - - // Triggers `onAccountDeleted` event. - this.eventDispatcher.dispatch(events.accounts.onDeleted); - } - - /** - * Retrieve the given accounts details or throw error if one account not exists. - * @param {number} tenantId - * @param {number[]} accountsIds - * @return {IAccount[]} - */ - public async getAccountsOrThrowError( - tenantId: number, - accountsIds: number[] - ): Promise { - const { Account } = this.tenancy.models(tenantId); - - this.logger.info('[account] trying to validate accounts not exist.', { - tenantId, - accountsIds, - }); - const storedAccounts = await Account.query().whereIn('id', accountsIds); - const storedAccountsIds = storedAccounts.map((account) => account.id); - const notFoundAccounts = difference(accountsIds, storedAccountsIds); - - if (notFoundAccounts.length > 0) { - this.logger.error('[account] accounts not exists on the storage.', { - tenantId, - notFoundAccounts, - }); - throw new ServiceError(ERRORS.ACCOUNTS_NOT_FOUND); - } - return storedAccounts; - } - - /** - * Validate whether one of the given accounts is predefined. - * @param {IAccount[]} accounts - - * @return {IAccount[]} - Predefined accounts - */ - private validatePrefinedAccounts(accounts: IAccount[]) { - const predefined = accounts.filter( - (account: IAccount) => account.predefined - ); - - if (predefined.length > 0) { - this.logger.error('[accounts] some accounts predefined.', { predefined }); - throw new ServiceError(ERRORS.PREDEFINED_ACCOUNTS); - } - return predefined; - } - - /** - * Validating the accounts have associated transactions. - * @param {number} tenantId - * @param {number[]} accountsIds - */ - private async validateAccountsHaveTransactions( - tenantId: number, - accountsIds: number[] - ) { - const { AccountTransaction } = this.tenancy.models(tenantId); - const accountsTransactions = await AccountTransaction.query() - .whereIn('account_id', accountsIds) - .count('id as transactions_count') - .groupBy('account_id') - .select('account_id'); - - const accountsHasTransactions: number[] = []; - - accountsTransactions.forEach((transaction) => { - if (transaction.transactionsCount > 0) { - accountsHasTransactions.push(transaction.accountId); - } - }); - if (accountsHasTransactions.length > 0) { - throw new ServiceError(ERRORS.ACCOUNTS_HAVE_TRANSACTIONS); - } - } - - /** - * Deletes the given accounts in bulk. - * @param {number} tenantId - * @param {number[]} accountsIds - */ - public async deleteAccounts(tenantId: number, accountsIds: number[]) { - const { accountRepository } = this.tenancy.models(tenantId); - const accounts = await this.getAccountsOrThrowError(tenantId, accountsIds); - - // Validate the accounts are not predefined. - this.validatePrefinedAccounts(accounts); - - // Valdiate the accounts have transactions. - await this.validateAccountsHaveTransactions(tenantId, accountsIds); - - // Unlink the parent account from children accounts. - await this.unassociateChildrenAccountsFromParent(tenantId, accountsIds); - - // Delete the accounts in one query. - await accountRepository.deleteWhereIdIn(accountsIds); - - this.logger.info('[account] given accounts deleted in bulk successfully.', { - tenantId, - accountsIds, - }); - // Triggers `onBulkDeleted` event. - this.eventDispatcher.dispatch(events.accounts.onBulkDeleted); - } - - /** - * Activate accounts in bulk. - * @param {number} tenantId - * @param {number[]} accountsIds - * @param {boolean} activate - */ - public async activateAccounts( - tenantId: number, - accountsIds: number[], - activate: boolean = true - ) { - const { accountRepository } = this.tenancy.repositories(tenantId); - - // Retrieve the given account or throw not found. - await this.getAccountsOrThrowError(tenantId, accountsIds); - - // Get all children accounts. - const accountsGraph = await accountRepository.getDependencyGraph(); - const dependenciesAccounts = chain(accountsIds) - .map((accountId) => accountsGraph.dependenciesOf(accountId)) - .flatten() - .value(); - - // The children and parent accounts. - const patchAccountsIds = uniq([...dependenciesAccounts, accountsIds]); - - this.logger.info( - '[account] trying activate/inactive the given accounts ids.', - { accountsIds } - ); - // Activate or inactivate the given accounts ids in bulk. - activate - ? await accountRepository.activateByIds(patchAccountsIds) - : await accountRepository.inactivateByIds(patchAccountsIds); - - this.logger.info('[account] accounts have been activated successfully.', { - tenantId, - accountsIds, - }); - // Triggers `onAccountBulkActivated` event. - this.eventDispatcher.dispatch(events.accounts.onActivated); - } - - /** - * Activates/Inactivates the given account. - * @param {number} tenantId - * @param {number} accountId - * @param {boolean} activate - */ - public async activateAccount( - tenantId: number, - accountId: number, - activate?: boolean - ) { - const { accountRepository } = this.tenancy.repositories(tenantId); - - // Retrieve the given account or throw not found error. - const account = await this.getAccountOrThrowError(tenantId, accountId); - - // Get all children accounts. - const accountsGraph = await accountRepository.getDependencyGraph(); - const dependenciesAccounts = accountsGraph.dependenciesOf(accountId); - - this.logger.info( - '[account] trying to activate/inactivate the given account id.' - ); - const patchAccountsIds = [...dependenciesAccounts, accountId]; - - // Activate and inactivate the given accounts ids. - activate - ? await accountRepository.activateByIds(patchAccountsIds) - : await accountRepository.inactivateByIds(patchAccountsIds); - - this.logger.info('[account] account have been activated successfully.', { - tenantId, - accountId, - }); - // Triggers `onAccountActivated` event. - this.eventDispatcher.dispatch(events.accounts.onActivated); - } - - /** - * Parsees accounts list filter DTO. - * @param filterDTO - * @returns - */ - private parseListFilterDTO(filterDTO) { - return R.compose(this.dynamicListService.parseStringifiedFilter)(filterDTO); - } - - /** - * Retrieve accounts datatable list. - * @param {number} tenantId - * @param {IAccountsFilter} accountsFilter - */ - public async getAccountsList( - tenantId: number, - filterDTO: IAccountsFilter - ): Promise<{ accounts: IAccountResponse[]; filterMeta: IFilterMeta }> { - const { Account } = this.tenancy.models(tenantId); - - // Parses the stringified filter roles. - const filter = this.parseListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicList = await this.dynamicListService.dynamicList( - tenantId, - Account, - filter - ); - // Retrieve accounts model based on the given query. - const accounts = await Account.query().onBuild((builder) => { - dynamicList.buildQuery()(builder); - builder.modify('inactiveMode', filter.inactiveMode); - }); - - const transformedAccounts = await this.transformAccountsResponse( - tenantId, - accounts - ); - return { - accounts: transformedAccounts, - filterMeta: dynamicList.getResponseMeta(), - }; - } - - runningBalanceFromClosing( - transactions: IAccountTransaction[], - closingBalance: number, - accountNormal: string - ) { - let remain = closingBalance; - - return transactions.map((entry, index) => { - const { credit, debit } = entry; - const amount = - accountNormal === 'credit' ? credit - debit : debit - credit; - - const runningBalance = Math.min(amount, remain); - const output = { - ...entry.toJSON(), - runningBalance: remain, - runningBalanceFormatted: remain, - }; - remain -= Math.max(runningBalance, 0); - return output; - }); - } - - /** - * Retrieve the accounts transactions. - * @param {number} tenantId - - * @param {IAccountsTransactionsFilter} filter - - */ - public async getAccountsTransactions( - tenantId: number, - filter: IAccountsTransactionsFilter - ): Promise<{ transactions: IAccountTransaction }> { - const { AccountTransaction } = this.tenancy.models(tenantId); - - // Retrieve the given account or throw not found error. - const account = await this.getAccountOrThrowError( - tenantId, - filter.accountId - ); - - this.logger.info('[accounts] trying to get accounts transactions list.'); - const transactions = await AccountTransaction.query().onBuild((query) => { - query.orderBy('date', 'DESC'); - - if (filter.accountId) { - query.where('account_id', filter.accountId); - } - query.withGraphFetched('account'); - query.withGraphFetched('contact'); - }); - - return { - transactions: this.runningBalanceFromClosing( - transactions, - account.amount, - account.accountNormal - ), - }; - } - - /** - * Transformes the account model to specific account response. - */ - private transformAccountResponse(tenantId: number, account: IAccount) { - const settings = this.tenancy.settings(tenantId); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - return { - ...account.toJSON(), - currencyCode: baseCurrency, - }; - } - - /** - * Transformes the accounts models to accounts response. - */ - private async transformAccountsResponse( - tenantId: number, - accounts: IAccount[] - ) { - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const transformed = new AccountTransformer() - .setMeta({ - baseCurrency: tenant.metadata?.baseCurrency, - }) - .transform(accounts); - - return flatToNestedArray( - this.i18nService.i18nMapper( - transformed, - ['account_type_label'], - tenantId - ), - { - id: 'id', - parentId: 'parent_account_id', - } - ); - } - - /** - * Closes the given account. - * ----------- - * Precedures. - * ----------- - * - Transfer the given account transactions to another account with the same root type. - * - Delete the given account. - * ------- - * @param {number} tenantId - - * @param {number} accountId - - * @param {number} toAccountId - - * @param {boolean} deleteAfterClosing - - */ - public async closeAccount( - tenantId: number, - accountId: number, - toAccountId: number, - deleteAfterClosing: boolean - ) { - this.logger.info('[account] trying to close account.', { - tenantId, - accountId, - toAccountId, - deleteAfterClosing, - }); - const { AccountTransaction } = this.tenancy.models(tenantId); - const { accountRepository } = this.tenancy.repositories(tenantId); - - const account = await this.getAccountOrThrowError(tenantId, accountId); - const toAccount = await this.getAccountOrThrowError(tenantId, toAccountId); - - this.throwErrorIfAccountPredefined(account); - - if (account.accountType !== toAccount.accountType) { - throw new ServiceError(ERRORS.CLOSE_ACCOUNT_AND_TO_ACCOUNT_NOT_SAME_TYPE); - } - const updateAccountBalanceOper = await accountRepository.balanceChange( - accountId, - account.balance || 0 - ); - - // Move transactiosn operation. - const moveTransactionsOper = await AccountTransaction.query() - .where('account_id', accountId) - .patch({ accountId: toAccountId }); - - await Promise.all([moveTransactionsOper, updateAccountBalanceOper]); - - if (deleteAfterClosing) { - await accountRepository.deleteById(accountId); - } - } -} diff --git a/server/src/services/Accounts/AccountsTypesServices.ts b/server/src/services/Accounts/AccountsTypesServices.ts deleted file mode 100644 index f3e38bfb8..000000000 --- a/server/src/services/Accounts/AccountsTypesServices.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { IAccountsTypesService, IAccountType } from 'interfaces'; -import AccountTypesUtils from 'lib/AccountTypes'; -import I18nService from 'services/I18n/I18nService'; - - -@Service() -export default class AccountsTypesService implements IAccountsTypesService { - @Inject() - i18nService: I18nService; - - /** - * Retrieve all accounts types. - * @param {number} tenantId - - * @return {IAccountType} - */ - public getAccountsTypes(tenantId: number): IAccountType[] { - const accountTypes = AccountTypesUtils.getList(); - return this.i18nService.i18nMapper(accountTypes, ['label'], tenantId); - } -} diff --git a/server/src/services/Accounts/constants.ts b/server/src/services/Accounts/constants.ts deleted file mode 100644 index e4fefc2c8..000000000 --- a/server/src/services/Accounts/constants.ts +++ /dev/null @@ -1,75 +0,0 @@ -export const ERRORS = { - ACCOUNT_NOT_FOUND: 'account_not_found', - ACCOUNT_TYPE_NOT_FOUND: 'account_type_not_found', - PARENT_ACCOUNT_NOT_FOUND: 'parent_account_not_found', - ACCOUNT_CODE_NOT_UNIQUE: 'account_code_not_unique', - ACCOUNT_NAME_NOT_UNIQUE: 'account_name_not_unqiue', - PARENT_ACCOUNT_HAS_DIFFERENT_TYPE: 'parent_has_different_type', - ACCOUNT_TYPE_NOT_ALLOWED_TO_CHANGE: 'account_type_not_allowed_to_changed', - ACCOUNT_PREDEFINED: 'account_predefined', - ACCOUNT_HAS_ASSOCIATED_TRANSACTIONS: 'account_has_associated_transactions', - PREDEFINED_ACCOUNTS: 'predefined_accounts', - ACCOUNTS_HAVE_TRANSACTIONS: 'accounts_have_transactions', - CLOSE_ACCOUNT_AND_TO_ACCOUNT_NOT_SAME_TYPE: - 'close_account_and_to_account_not_same_type', - ACCOUNTS_NOT_FOUND: 'accounts_not_found', -}; - -// Default views columns. -export const DEFAULT_VIEW_COLUMNS = [ - { key: 'name', label: 'Account name' }, - { key: 'code', label: 'Account code' }, - { key: 'account_type_label', label: 'Account type' }, - { key: 'account_normal', label: 'Account normal' }, - { key: 'amount', label: 'Balance' }, - { key: 'currencyCode', label: 'Currency' }, -]; - -// Accounts default views. -export const DEFAULT_VIEWS = [ - { - name: 'Assets', - slug: 'assets', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'root_type', comparator: 'equals', value: 'asset' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Liabilities', - slug: 'liabilities', - rolesLogicExpression: '1', - roles: [ - { fieldKey: 'root_type', index: 1, comparator: 'equals', value: 'liability' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Equity', - slug: 'equity', - rolesLogicExpression: '1', - roles: [ - { fieldKey: 'root_type', index: 1, comparator: 'equals', value: 'equity' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Income', - slug: 'income', - rolesLogicExpression: '1', - roles: [ - { fieldKey: 'root_type', index: 1, comparator: 'equals', value: 'income' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Expenses', - slug: 'expenses', - rolesLogicExpression: '1', - roles: [ - { fieldKey: 'root_type', index: 1, comparator: 'equals', value: 'expense' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, -]; diff --git a/server/src/services/Authentication/AuthenticationMailMessages.ts b/server/src/services/Authentication/AuthenticationMailMessages.ts deleted file mode 100644 index a99e67a7c..000000000 --- a/server/src/services/Authentication/AuthenticationMailMessages.ts +++ /dev/null @@ -1,58 +0,0 @@ - -import { Service } from "typedi"; -import { ISystemUser } from 'interfaces'; -import config from 'config'; -import Mail from "lib/Mail"; - -@Service() -export default class AuthenticationMailMesssages { - /** - * Sends welcome message. - * @param {ISystemUser} user - The system user. - * @param {string} organizationName - - * @return {Promise} - */ - async sendWelcomeMessage( - user: ISystemUser, - organizationId: string - ): Promise { - - const mail = new Mail() - .setView('mail/Welcome.html') - .setSubject('Welcome to Bigcapital') - .setTo(user.email) - .setData({ - firstName: user.firstName, - organizationId, - successPhoneNumber: config.customerSuccess.phoneNumber, - successEmail: config.customerSuccess.email, - }); - - await mail.send(); - } - - /** - * Sends reset password message. - * @param {ISystemUser} user - The system user. - * @param {string} token - Reset password token. - * @return {Promise} - */ - async sendResetPasswordMessage( - user: ISystemUser, - token: string - ): Promise { - - const mail = new Mail() - .setSubject('Bigcapital - Password Reset') - .setView('mail/ResetPassword.html') - .setTo(user.email) - .setData({ - resetPasswordUrl: `${config.baseURL}/reset/${token}`, - first_name: user.firstName, - last_name: user.lastName, - contact_us_email: config.contactUsMail, - }); - - await mail.send(); - } -} \ No newline at end of file diff --git a/server/src/services/Authentication/AuthenticationSMSMessages.ts b/server/src/services/Authentication/AuthenticationSMSMessages.ts deleted file mode 100644 index 81d3ba7e6..000000000 --- a/server/src/services/Authentication/AuthenticationSMSMessages.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { ISystemUser, ITenant } from 'interfaces'; - -@Service() -export default class AuthenticationSMSMessages { - @Inject('SMSClient') - smsClient: any; - - /** - * Sends welcome sms message. - * @param {ITenant} tenant - * @param {ISystemUser} user - */ - sendWelcomeMessage(tenant: ITenant, user: ISystemUser) { - const message: string = `Hi ${user.firstName}, Welcome to Bigcapital, You've joined the new workspace, if you need any help please don't hesitate to contact us.`; - - return this.smsClient.sendMessage(user.phoneNumber, message); - } -} diff --git a/server/src/services/Authentication/RateLimiter.ts b/server/src/services/Authentication/RateLimiter.ts deleted file mode 100644 index efbe7b7d2..000000000 --- a/server/src/services/Authentication/RateLimiter.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { RateLimiterClusterMasterPM2, RateLimiterMemory, RateLimiterRedis, RateLimiterRes } from 'rate-limiter-flexible'; - -export default class RateLimiter { - rateLimiter: RateLimiterRedis; - - /** - * Rate limiter redis constructor. - * @param {RateLimiterRedis} rateLimiter - */ - constructor(rateLimiter: RateLimiterMemory) { - this.rateLimiter = rateLimiter; - } - - /** - * - * @return {boolean} - */ - public attempt(key: string, pointsToConsume = 1): Promise { - return this.rateLimiter.consume(key, pointsToConsume); - } - - /** - * Increment the counter for a given key for a given decay time. - * @param {string} key - - */ - public hit( - key: string | number, - points: number, - secDuration: number, - ): Promise { - return this.rateLimiter.penalty(key, points, secDuration); - } - - /** - * Retrieve the rate limiter response of the given key. - * @param {string} key - */ - public get(key: string): Promise { - return this.rateLimiter.get(key); - } - - /** - * Resets the rate limiter of the given key. - * @param key - */ - public reset(key: string): Promise { - return this.rateLimiter.delete(key); - } -} \ No newline at end of file diff --git a/server/src/services/Authentication/index.ts b/server/src/services/Authentication/index.ts deleted file mode 100644 index 15990f863..000000000 --- a/server/src/services/Authentication/index.ts +++ /dev/null @@ -1,329 +0,0 @@ -import { Service, Inject, Container } from 'typedi'; -import JWT from 'jsonwebtoken'; -import uniqid from 'uniqid'; -import { omit, cloneDeep } from 'lodash'; -import moment from 'moment'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import { PasswordReset, Tenant } from 'system/models'; -import { - IRegisterDTO, - ITenant, - ISystemUser, - IPasswordReset, - IAuthenticationService, -} from 'interfaces'; -import { hashPassword } from 'utils'; -import { ServiceError, ServiceErrors } from 'exceptions'; -import config from 'config'; -import events from 'subscribers/events'; -import AuthenticationMailMessages from 'services/Authentication/AuthenticationMailMessages'; -import AuthenticationSMSMessages from 'services/Authentication/AuthenticationSMSMessages'; -import TenantsManager from 'services/Tenancy/TenantsManager'; - -const ERRORS = { - INVALID_DETAILS: 'INVALID_DETAILS', - USER_INACTIVE: 'USER_INACTIVE', - EMAIL_NOT_FOUND: 'EMAIL_NOT_FOUND', - TOKEN_INVALID: 'TOKEN_INVALID', - USER_NOT_FOUND: 'USER_NOT_FOUND', - TOKEN_EXPIRED: 'TOKEN_EXPIRED', - PHONE_NUMBER_EXISTS: 'PHONE_NUMBER_EXISTS', - EMAIL_EXISTS: 'EMAIL_EXISTS', -}; -@Service() -export default class AuthenticationService implements IAuthenticationService { - @Inject('logger') - logger: any; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject() - smsMessages: AuthenticationSMSMessages; - - @Inject() - mailMessages: AuthenticationMailMessages; - - @Inject('repositories') - sysRepositories: any; - - @Inject() - tenantsManager: TenantsManager; - - /** - * Signin and generates JWT token. - * @throws {ServiceError} - * @param {string} emailOrPhone - Email or phone number. - * @param {string} password - Password. - * @return {Promise<{user: IUser, token: string}>} - */ - public async signIn( - emailOrPhone: string, - password: string - ): Promise<{ - user: ISystemUser; - token: string; - tenant: ITenant; - }> { - this.logger.info('[login] Someone trying to login.', { - emailOrPhone, - password, - }); - const { systemUserRepository } = this.sysRepositories; - const loginThrottler = Container.get('rateLimiter.login'); - - // Finds the user of the given email or phone number. - const user = await systemUserRepository.findByCrediential(emailOrPhone); - - if (!user) { - // Hits the loging throttler to the given crediential. - await loginThrottler.hit(emailOrPhone); - - this.logger.info('[login] invalid data'); - throw new ServiceError(ERRORS.INVALID_DETAILS); - } - - this.logger.info('[login] check password validation.', { - emailOrPhone, - password, - }); - if (!user.verifyPassword(password)) { - // Hits the loging throttler to the given crediential. - await loginThrottler.hit(emailOrPhone); - - throw new ServiceError(ERRORS.INVALID_DETAILS); - } - if (!user.active) { - this.logger.info('[login] user inactive.', { userId: user.id }); - throw new ServiceError(ERRORS.USER_INACTIVE); - } - - this.logger.info('[login] generating JWT token.', { userId: user.id }); - const token = this.generateToken(user); - - this.logger.info('[login] updating user last login at.', { - userId: user.id, - }); - await systemUserRepository.patchLastLoginAt(user.id); - - this.logger.info('[login] Logging success.', { user, token }); - - // Triggers `onLogin` event. - this.eventDispatcher.dispatch(events.auth.login, { - emailOrPhone, - password, - user, - }); - const tenant = await Tenant.query().findById(user.tenantId).withGraphFetched('metadata'); - - // Keep the user object immutable. - const outputUser = cloneDeep(user); - - // Remove password property from user object. - Reflect.deleteProperty(outputUser, 'password'); - - return { user: outputUser, token, tenant }; - } - - /** - * Validates email and phone number uniqiness on the storage. - * @throws {ServiceErrors} - * @param {IRegisterDTO} registerDTO - Register data object. - */ - private async validateEmailAndPhoneUniqiness(registerDTO: IRegisterDTO) { - const { systemUserRepository } = this.sysRepositories; - - const isEmailExists = await systemUserRepository.findOneByEmail( - registerDTO.email - ); - const isPhoneExists = await systemUserRepository.findOneByPhoneNumber( - registerDTO.phoneNumber - ); - const errorReasons: ServiceError[] = []; - - if (isPhoneExists) { - this.logger.info('[register] phone number exists on the storage.'); - errorReasons.push(new ServiceError(ERRORS.PHONE_NUMBER_EXISTS)); - } - if (isEmailExists) { - this.logger.info('[register] email exists on the storage.'); - errorReasons.push(new ServiceError(ERRORS.EMAIL_EXISTS)); - } - if (errorReasons.length > 0) { - throw new ServiceErrors(errorReasons); - } - } - - /** - * Registers a new tenant with user from user input. - * @throws {ServiceErrors} - * @param {IUserDTO} user - */ - public async register(registerDTO: IRegisterDTO): Promise { - this.logger.info('[register] Someone trying to register.'); - await this.validateEmailAndPhoneUniqiness(registerDTO); - - this.logger.info('[register] Creating a new tenant organization.'); - const tenant = await this.newTenantOrganization(); - - this.logger.info('[register] Trying hashing the password.'); - const hashedPassword = await hashPassword(registerDTO.password); - - const { systemUserRepository } = this.sysRepositories; - const registeredUser = await systemUserRepository.create({ - ...omit(registerDTO, 'country'), - active: true, - password: hashedPassword, - tenantId: tenant.id, - inviteAcceptedAt: moment().format('YYYY-MM-DD'), - }); - // Triggers `onRegister` event. - this.eventDispatcher.dispatch(events.auth.register, { - registerDTO, - tenant, - user: registeredUser, - }); - return registeredUser; - } - - /** - * Generates and insert new tenant organization id. - * @async - * @return {Promise} - */ - private async newTenantOrganization(): Promise { - return this.tenantsManager.createTenant(); - } - - /** - * Validate the given email existance on the storage. - * @throws {ServiceError} - * @param {string} email - email address. - */ - private async validateEmailExistance(email: string): Promise { - const { systemUserRepository } = this.sysRepositories; - const userByEmail = await systemUserRepository.findOneByEmail(email); - - if (!userByEmail) { - this.logger.info('[send_reset_password] The given email not found.'); - throw new ServiceError(ERRORS.EMAIL_NOT_FOUND); - } - return userByEmail; - } - - /** - * Generates and retrieve password reset token for the given user email. - * @param {string} email - * @return {} - */ - public async sendResetPassword(email: string): Promise { - this.logger.info('[send_reset_password] Trying to send reset password.'); - const user = await this.validateEmailExistance(email); - - // Delete all stored tokens of reset password that associate to the give email. - this.logger.info( - '[send_reset_password] trying to delete all tokens by email.' - ); - this.deletePasswordResetToken(email); - - const token: string = uniqid(); - - this.logger.info('[send_reset_password] insert the generated token.'); - const passwordReset = await PasswordReset.query().insert({ email, token }); - - // Triggers `onSendResetPassword` event. - this.eventDispatcher.dispatch(events.auth.sendResetPassword, { - user, - token, - }); - return passwordReset; - } - - /** - * Resets a user password from given token. - * @param {string} token - Password reset token. - * @param {string} password - New Password. - * @return {Promise} - */ - public async resetPassword(token: string, password: string): Promise { - const { systemUserRepository } = this.sysRepositories; - - // Finds the password reset token. - const tokenModel: IPasswordReset = await PasswordReset.query().findOne( - 'token', - token - ); - // In case the password reset token not found throw token invalid error.. - if (!tokenModel) { - this.logger.info('[reset_password] token invalid.'); - throw new ServiceError(ERRORS.TOKEN_INVALID); - } - // Different between tokne creation datetime and current time. - if ( - moment().diff(tokenModel.createdAt, 'seconds') > - config.resetPasswordSeconds - ) { - this.logger.info('[reset_password] token expired.'); - - // Deletes the expired token by expired token email. - await this.deletePasswordResetToken(tokenModel.email); - throw new ServiceError(ERRORS.TOKEN_EXPIRED); - } - const user = await systemUserRepository.findOneByEmail(tokenModel.email); - - if (!user) { - throw new ServiceError(ERRORS.USER_NOT_FOUND); - } - const hashedPassword = await hashPassword(password); - - this.logger.info('[reset_password] saving a new hashed password.'); - await systemUserRepository.update( - { password: hashedPassword }, - { id: user.id } - ); - - // Deletes the used token. - await this.deletePasswordResetToken(tokenModel.email); - - // Triggers `onResetPassword` event. - this.eventDispatcher.dispatch(events.auth.resetPassword, { - user, - token, - password, - }); - this.logger.info('[reset_password] reset password success.'); - } - - /** - * Deletes the password reset token by the given email. - * @param {string} email - * @returns {Promise} - */ - private async deletePasswordResetToken(email: string) { - this.logger.info('[reset_password] trying to delete all tokens by email.'); - return PasswordReset.query().where('email', email).delete(); - } - - /** - * Generates JWT token for the given user. - * @param {ISystemUser} user - * @return {string} token - */ - generateToken(user: ISystemUser): string { - const today = new Date(); - const exp = new Date(today); - exp.setDate(today.getDate() + 60); - - this.logger.silly(`Sign JWT for userId: ${user.id}`); - return JWT.sign( - { - id: user.id, // We are gonna use this in the middleware 'isAuth' - exp: exp.getTime() / 1000, - }, - config.jwtSecret - ); - } -} diff --git a/server/src/services/Cache/index.ts b/server/src/services/Cache/index.ts deleted file mode 100644 index 31c3355f0..000000000 --- a/server/src/services/Cache/index.ts +++ /dev/null @@ -1,49 +0,0 @@ -import NodeCache from 'node-cache'; - -export default class Cache { - cache: NodeCache; - - constructor(config?: object) { - this.cache = new NodeCache({ - useClones: false, - ...config, - }); - } - - get(key: string, storeFunction: () => Promise) { - const value = this.cache.get(key); - - if (value) { - return Promise.resolve(value); - } - return storeFunction().then((result) => { - this.cache.set(key, result); - return result; - }); - } - - set(key: string, results: any) { - this.cache.set(key, results); - } - - del(keys: string) { - this.cache.del(keys); - } - - delStartWith(startStr = '') { - if (!startStr) { - return; - } - - const keys = this.cache.keys(); - for (const key of keys) { - if (key.indexOf(startStr) === 0) { - this.del(key); - } - } - } - - flush() { - this.cache.flushAll(); - } -} \ No newline at end of file diff --git a/server/src/services/Contacts/ContactTransformer.ts b/server/src/services/Contacts/ContactTransformer.ts deleted file mode 100644 index a875b9a28..000000000 --- a/server/src/services/Contacts/ContactTransformer.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Service, Container } from 'typedi'; -import { isNull } from 'lodash'; -import { Transformer } from 'lib/Transformer/Transformer'; -import { formatNumber } from 'utils'; -import { IContact } from 'interfaces'; - -export default class ContactTransfromer extends Transformer { - /** - * Retrieve formatted expense amount. - * @param {IExpense} expense - * @returns {string} - */ - protected formattedBalance = (contact: IContact): string => { - return formatNumber(contact.balance, { - currencyCode: contact.currencyCode, - }); - }; - - /** - * Retrieve formatted expense landed cost amount. - * @param {IExpense} expense - * @returns {string} - */ - protected formattedOpeningBalance = (contact: IContact): string => { - return !isNull(contact.openingBalance) - ? formatNumber(contact.openingBalance, { - currencyCode: contact.currencyCode, - }) - : ''; - }; - - /** - * Retriecve fromatted date. - * @param {IExpense} expense - * @returns {string} - */ - protected formattedOpeningBalanceAt = (contact: IContact): string => { - return !isNull(contact.openingBalanceAt) - ? this.formatDate(contact.openingBalanceAt) - : ''; - }; -} diff --git a/server/src/services/Contacts/ContactsService.ts b/server/src/services/Contacts/ContactsService.ts deleted file mode 100644 index f7a19d3ac..000000000 --- a/server/src/services/Contacts/ContactsService.ts +++ /dev/null @@ -1,391 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { difference, upperFirst, omit } from 'lodash'; -import moment from 'moment'; -import * as R from 'ramda'; -import { ServiceError } from 'exceptions'; -import TenancyService from 'services/Tenancy/TenancyService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { - IContact, - IContactNewDTO, - IContactEditDTO, - IContactsAutoCompleteFilter, -} from 'interfaces'; -import JournalPoster from '../Accounting/JournalPoster'; -import { ERRORS } from './constants'; - -type TContactService = 'customer' | 'vendor'; - -@Service() -export default class ContactsService { - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject('logger') - logger: any; - - /** - * Get the given contact or throw not found contact. - * @param {number} tenantId - * @param {number} contactId - * @param {TContactService} contactService - * @return {Promise} - */ - public async getContactByIdOrThrowError( - tenantId: number, - contactId: number, - contactService?: TContactService - ) { - const { contactRepository } = this.tenancy.repositories(tenantId); - - this.logger.info('[contact] trying to validate contact existance.', { - tenantId, - contactId, - }); - const contact = await contactRepository.findOne({ - id: contactId, - ...(contactService && { contactService }), - }); - - if (!contact) { - throw new ServiceError('contact_not_found'); - } - return contact; - } - - /** - * Converts contact DTO object to model object attributes to insert or update. - * @param {IContactNewDTO | IContactEditDTO} contactDTO - */ - private commonTransformContactObj(contactDTO: IContactNewDTO | IContactEditDTO) { - return { - ...omit(contactDTO, [ - 'billingAddress1', - 'billingAddress2', - 'shippingAddress1', - 'shippingAddress2', - ]), - billing_address_1: contactDTO?.billingAddress1, - billing_address_2: contactDTO?.billingAddress2, - shipping_address_1: contactDTO?.shippingAddress1, - shipping_address_2: contactDTO?.shippingAddress2, - }; - } - - /** - * Transforms contact new DTO object to model object to insert to the storage. - * @param {IContactNewDTO} contactDTO - */ - private transformNewContactDTO(contactDTO: IContactNewDTO) { - const baseCurrency = 'USD'; - const currencyCode = typeof contactDTO.currencyCode !== 'undefined' - ? contactDTO.currencyCode - : baseCurrency; - - return { - ...this.commonTransformContactObj(contactDTO), - ...(currencyCode ? ({ currencyCode }) : {}), - }; - } - - /** - * Transforms contact edit DTO object to model object to update to the storage. - * @param {IContactEditDTO} contactDTO - */ - private transformEditContactDTO(contactDTO: IContactEditDTO) { - return { - ...this.commonTransformContactObj(contactDTO), - }; - } - - /** - * Creates a new contact on the storage. - * @param {number} tenantId - * @param {TContactService} contactService - * @param {IContactDTO} contactDTO - */ - async newContact( - tenantId: number, - contactDTO: IContactNewDTO, - contactService: TContactService - ) { - const { contactRepository } = this.tenancy.repositories(tenantId); - const contactObj = this.transformNewContactDTO(contactDTO); - - this.logger.info('[contacts] trying to insert contact to the storage.', { - tenantId, - contactDTO, - }); - const contact = await contactRepository.create({ - contactService, - ...contactObj, - }); - this.logger.info('[contacts] contact inserted successfully.', { - tenantId, - contact, - }); - return contact; - } - - /** - * Edit details of the given on the storage. - * @param {number} tenantId - * @param {number} contactId - * @param {TContactService} contactService - * @param {IContactDTO} contactDTO - */ - async editContact( - tenantId: number, - contactId: number, - contactDTO: IContactEditDTO, - contactService: TContactService - ) { - const { contactRepository } = this.tenancy.repositories(tenantId); - const contactObj = this.transformEditContactDTO(contactDTO); - - // Retrieve the given contact by id or throw not found service error. - const contact = await this.getContactByIdOrThrowError( - tenantId, - contactId, - contactService - ); - this.logger.info('[contacts] trying to edit the given contact details.', { - tenantId, - contactId, - contactDTO, - }); - await contactRepository.update({ ...contactObj }, { id: contactId }); - } - - /** - * Deletes the given contact from the storage. - * @param {number} tenantId - * @param {number} contactId - * @param {TContactService} contactService - * @return {Promise} - */ - async deleteContact( - tenantId: number, - contactId: number, - contactService: TContactService - ) { - const { contactRepository } = this.tenancy.repositories(tenantId); - const contact = await this.getContactByIdOrThrowError( - tenantId, - contactId, - contactService - ); - - this.logger.info('[contacts] trying to delete the given contact.', { - tenantId, - contactId, - }); - - // Deletes contact of the given id. - await contactRepository.deleteById(contactId); - } - - /** - * Get contact details of the given contact id. - * @param {number} tenantId - * @param {number} contactId - * @param {TContactService} contactService - * @returns {Promise} - */ - async getContact( - tenantId: number, - contactId: number, - contactService?: TContactService - ) { - return this.getContactByIdOrThrowError(tenantId, contactId, contactService); - } - - /** - * Parsees accounts list filter DTO. - * @param filterDTO - */ - private parseAutocompleteListFilterDTO(filterDTO) { - return R.compose( - this.dynamicListService.parseStringifiedFilter - )(filterDTO); - } - - /** - * Retrieve auto-complete contacts list. - * @param {number} tenantId - - * @param {IContactsAutoCompleteFilter} contactsFilter - - * @return {IContactAutoCompleteItem} - */ - async autocompleteContacts( - tenantId: number, - query: IContactsAutoCompleteFilter - ) { - const { Contact } = this.tenancy.models(tenantId); - - // Parses auto-complete list filter DTO. - const filter = this.parseAutocompleteListFilterDTO(query); - - // Dynamic list. - // const dynamicList = await this.dynamicListService.dynamicList( - // tenantId, - // Contact, - // filter - // ); - // Retrieve contacts list by the given query. - const contacts = await Contact.query().onBuild((builder) => { - if (filter.keyword) { - builder.where('display_name', 'LIKE', `%${filter.keyword}%`); - } - // dynamicList.buildQuery()(builder); - builder.limit(filter.limit); - }); - return contacts; - } - - /** - * Retrieve contacts or throw not found error if one of ids were not found - * on the storage. - * @param {number} tenantId - * @param {number[]} contactsIds - * @param {TContactService} contactService - * @return {Promise} - */ - async getContactsOrThrowErrorNotFound( - tenantId: number, - contactsIds: number[], - contactService: TContactService - ) { - const { Contact } = this.tenancy.models(tenantId); - const contacts = await Contact.query() - .whereIn('id', contactsIds) - .where('contact_service', contactService); - - const storedContactsIds = contacts.map((contact: IContact) => contact.id); - const notFoundCustomers = difference(contactsIds, storedContactsIds); - - if (notFoundCustomers.length > 0) { - throw new ServiceError('contacts_not_found'); - } - return contacts; - } - - /** - * Deletes the given contacts in bulk. - * @param {number} tenantId - * @param {number[]} contactsIds - * @param {TContactService} contactService - * @return {Promise} - */ - async deleteBulkContacts( - tenantId: number, - contactsIds: number[], - contactService: TContactService - ) { - const { contactRepository } = this.tenancy.repositories(tenantId); - - // Retrieve the given contacts or throw not found service error. - this.getContactsOrThrowErrorNotFound(tenantId, contactsIds, contactService); - - await contactRepository.deleteWhereIdIn(contactsIds); - } - - /** - * Reverts journal entries of the given contacts. - * @param {number} tenantId - * @param {number[]} contactsIds - * @param {TContactService} contactService - */ - async revertJEntriesContactsOpeningBalance( - tenantId: number, - contactsIds: number[], - contactService: TContactService - ) { - const { AccountTransaction } = this.tenancy.models(tenantId); - const journal = new JournalPoster(tenantId); - - // Loads the contact opening balance journal transactions. - const contactsTransactions = await AccountTransaction.query() - .whereIn('reference_id', contactsIds) - .where('reference_type', `${upperFirst(contactService)}OpeningBalance`); - - journal.fromTransactions(contactsTransactions); - journal.removeEntries(); - - await Promise.all([journal.saveBalance(), journal.deleteEntries()]); - } - - /** - * Chanages the opening balance of the given contact. - * @param {number} tenantId - * @param {number} contactId - * @param {ICustomerChangeOpeningBalanceDTO} changeOpeningBalance - * @return {Promise} - */ - public async changeOpeningBalance( - tenantId: number, - contactId: number, - contactService: string, - openingBalance: number, - openingBalanceAt?: Date | string - ): Promise { - const { contactRepository } = this.tenancy.repositories(tenantId); - - // Retrieve the given contact details or throw not found service error. - const contact = await this.getContactByIdOrThrowError( - tenantId, - contactId, - contactService - ); - // Should the opening balance date be required. - if (!contact.openingBalanceAt && !openingBalanceAt) { - throw new ServiceError(ERRORS.OPENING_BALANCE_DATE_REQUIRED); - } - // Changes the customer the opening balance and opening balance date. - await contactRepository.update( - { - openingBalance: openingBalance, - - ...(openingBalanceAt && { - openingBalanceAt: moment(openingBalanceAt).toMySqlDateTime(), - }), - }, - { - id: contactId, - contactService, - } - ); - } - - /** - * Inactive the given contact. - * @param {number} tenantId - Tenant id. - * @param {number} contactId - Contact id. - */ - async inactivateContact(tenantId: number, contactId: number): Promise { - const { Contact } = this.tenancy.models(tenantId); - const contact = await this.getContactByIdOrThrowError(tenantId, contactId); - - if(!contact.active) { - throw new ServiceError(ERRORS.CONTACT_ALREADY_INACTIVE); - } - await Contact.query().findById(contactId).update({ active: false }); - } - - /** - * Inactive the given contact. - * @param {number} tenantId - Tenant id. - * @param {number} contactId - Contact id. - */ - async activateContact(tenantId: number, contactId: number): Promise { - const { Contact } = this.tenancy.models(tenantId); - const contact = await this.getContactByIdOrThrowError(tenantId, contactId); - - if(contact.active) { - throw new ServiceError(ERRORS.CONTACT_ALREADY_ACTIVE); - } - await Contact.query().findById(contactId).update({ active: true }); - } -} diff --git a/server/src/services/Contacts/Customers/CustomerTransformer.ts b/server/src/services/Contacts/Customers/CustomerTransformer.ts deleted file mode 100644 index e8ab03477..000000000 --- a/server/src/services/Contacts/Customers/CustomerTransformer.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Service } from 'typedi'; -import ContactTransfromer from '../ContactTransformer'; - -export default class CustomerTransfromer extends ContactTransfromer { - /** - * Include these attributes to expense object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return [ - 'formattedBalance', - 'formattedOpeningBalance', - 'formattedOpeningBalanceAt', - 'customerType' - ]; - }; - - /** - * Retrieve customer type. - * @returns {string} - */ - protected customerType = (customer): string => { - return customer.contactType; - }; -} diff --git a/server/src/services/Contacts/Customers/constants.ts b/server/src/services/Contacts/Customers/constants.ts deleted file mode 100644 index a40f96a00..000000000 --- a/server/src/services/Contacts/Customers/constants.ts +++ /dev/null @@ -1,22 +0,0 @@ -export const DEFAULT_VIEW_COLUMNS = []; - -export const DEFAULT_VIEWS = [ - { - name: 'Overdue', - slug: 'overdue', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'overdue' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Unpaid', - slug: 'unpaid', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'unpaid' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, -]; diff --git a/server/src/services/Contacts/CustomersService.ts b/server/src/services/Contacts/CustomersService.ts deleted file mode 100644 index 8b9604cd6..000000000 --- a/server/src/services/Contacts/CustomersService.ts +++ /dev/null @@ -1,418 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { omit, defaultTo } from 'lodash'; -import * as R from 'ramda'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import JournalCommands from 'services/Accounting/JournalCommands'; -import ContactsService from 'services/Contacts/ContactsService'; -import moment from 'moment'; -import { - ICustomerNewDTO, - ICustomerEditDTO, - ICustomer, - IPaginationMeta, - ICustomersFilter, - IContactNewDTO, - IContactEditDTO, - IContact, - ISystemUser, - ISalesInvoicesService, - ISalesReceiptsService, - ISalesEstimatesService, - IPaymentsReceiveService, -} from 'interfaces'; -import { ServiceError } from 'exceptions'; -import TenancyService from 'services/Tenancy/TenancyService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import events from 'subscribers/events'; -import CustomerTransfromer from './Customers/CustomerTransformer'; - -const ERRORS = { - CUSTOMER_HAS_TRANSACTIONS: 'CUSTOMER_HAS_TRANSACTIONS', -}; -@Service() -export default class CustomersService { - @Inject() - contactService: ContactsService; - - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject('logger') - logger: any; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject('SalesInvoices') - invoicesService: ISalesInvoicesService; - - @Inject('SalesReceipts') - receiptsService: ISalesReceiptsService; - - @Inject('PaymentReceives') - paymentsService: IPaymentsReceiveService; - - @Inject('SalesEstimates') - estimatesService: ISalesEstimatesService; - - /** - * Converts customer to contact DTO. - * @param {ICustomerNewDTO|ICustomerEditDTO} customerDTO - * @returns {IContactDTO} - */ - private customerToContactDTO( - customerDTO: ICustomerNewDTO | ICustomerEditDTO - ): IContactNewDTO | IContactEditDTO { - return { - ...omit(customerDTO, ['customerType']), - contactType: customerDTO.customerType, - active: defaultTo(customerDTO.active, true), - }; - } - - /** - * Transforms new customer DTO to contact. - * @param customerDTO - */ - private transformNewCustomerDTO( - customerDTO: ICustomerNewDTO - ): IContactNewDTO { - return { - ...this.customerToContactDTO(customerDTO), - openingBalanceAt: customerDTO?.openingBalanceAt - ? moment(customerDTO.openingBalanceAt).toMySqlDateTime() - : null, - }; - } - - /** - * Transforms the contact model to customer model. - * @param {IContact} contactModel - */ - private transformContactToCustomer(contactModel: IContact) { - return { - ...omit(contactModel.toJSON(), ['contactService', 'contactType']), - customerType: contactModel.contactType, - }; - } - - /** - * Creates a new customer. - * @param {number} tenantId - * @param {ICustomerNewDTO} customerDTO - * @return {Promise} - */ - public async newCustomer( - tenantId: number, - customerDTO: ICustomerNewDTO, - authorizedUser: ISystemUser - ): Promise { - this.logger.info('[customer] trying to create a new customer.', { - tenantId, - customerDTO, - }); - const customerObj = this.transformNewCustomerDTO(customerDTO); - - const customer = await this.contactService.newContact( - tenantId, - customerObj, - 'customer' - ); - this.logger.info('[customer] created successfully.', { - tenantId, - customerDTO, - }); - await this.eventDispatcher.dispatch(events.customers.onCreated, { - customer, - tenantId, - customerId: customer.id, - authorizedUser, - }); - - return customer; - } - - /** - * Edits details of the given customer. - * @param {number} tenantId - * @param {number} customerId - * @param {ICustomerEditDTO} customerDTO - * @return {Promise} - */ - public async editCustomer( - tenantId: number, - customerId: number, - customerDTO: ICustomerEditDTO, - authorizedUser: ISystemUser - ): Promise { - const contactDTO = this.customerToContactDTO(customerDTO); - - this.logger.info('[customer] trying to edit customer.', { - tenantId, - customerId, - customerDTO, - }); - const customer = this.contactService.editContact( - tenantId, - customerId, - contactDTO, - 'customer' - ); - - // Triggers `onCustomerEdited` event. - this.eventDispatcher.dispatch(events.customers.onEdited); - this.logger.info('[customer] edited successfully.', { - tenantId, - customerId, - customer, - authorizedUser, - }); - - return customer; - } - - /** - * Validate the customer associated relations. - * @param {number} tenantId - * @param {number} customerId - Customer id. - */ - private async validateCustomerAssociatedRelations( - tenantId: number, - customerId: number - ) { - try { - // Validate whether the customer has no associated estimates transactions. - await this.estimatesService.validateCustomerHasNoEstimates( - tenantId, - customerId - ); - // Validate whether the customer has no assocaited invoices tranasctions. - await this.invoicesService.validateCustomerHasNoInvoices( - tenantId, - customerId - ); - // Validate whether the customer has no associated receipts transactions. - await this.receiptsService.validateCustomerHasNoReceipts( - tenantId, - customerId - ); - // Validate whether the customer has no associated payment receives transactions. - await this.paymentsService.validateCustomerHasNoPayments( - tenantId, - customerId - ); - } catch (error) { - throw new ServiceError(ERRORS.CUSTOMER_HAS_TRANSACTIONS); - } - } - /** - * Deletes the given customer from the storage. - * @param {number} tenantId - * @param {number} customerId - * @return {Promise} - */ - public async deleteCustomer( - tenantId: number, - customerId: number, - authorizedUser: ISystemUser - ): Promise { - this.logger.info('[customer] trying to delete customer.', { - tenantId, - customerId, - }); - // Retrieve the customer of throw not found service error. - await this.getCustomerByIdOrThrowError(tenantId, customerId); - - // Validate the customer associated relations. - await this.validateCustomerAssociatedRelations(tenantId, customerId); - - // Delete the customer from the storage. - await this.contactService.deleteContact(tenantId, customerId, 'customer'); - - // Throws `onCustomerDeleted` event. - await this.eventDispatcher.dispatch(events.customers.onDeleted, { - tenantId, - customerId, - }); - this.logger.info('[customer] deleted successfully.', { - tenantId, - customerId, - authorizedUser, - }); - } - - /** - * Retrieve the given customer details. - * @param {number} tenantId - * @param {number} customerId - */ - public async getCustomer( - tenantId: number, - customerId: number, - authorizedUser: ISystemUser - ) { - const contact = await this.contactService.getContact( - tenantId, - customerId, - 'customer' - ); - return new CustomerTransfromer().transform(contact); - } - - /** - * Parses customers list filter DTO. - * @param filterDTO - - */ - private parseCustomersListFilterDTO(filterDTO) { - return R.compose( - this.dynamicListService.parseStringifiedFilter - )(filterDTO); - } - - /** - * Retrieve customers paginated list. - * @param {number} tenantId - Tenant id. - * @param {ICustomersFilter} filter - Cusotmers filter. - */ - public async getCustomersList( - tenantId: number, - filterDTO: ICustomersFilter - ): Promise<{ - customers: ICustomer[]; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }> { - const { Customer } = this.tenancy.models(tenantId); - - // Parses customers list filter DTO. - const filter = this.parseCustomersListFilterDTO(filterDTO); - - // Dynamic list. - const dynamicList = await this.dynamicListService.dynamicList( - tenantId, - Customer, - filter - ); - - // Customers. - const { results, pagination } = await Customer.query() - .onBuild((builder) => { - dynamicList.buildQuery()(builder); - builder.modify('inactiveMode', filter.inactiveMode); - }) - .pagination(filter.page - 1, filter.pageSize); - - const transformedCustomers = new CustomerTransfromer().transform(results); - - return { - customers: transformedCustomers, - pagination, - filterMeta: dynamicList.getResponseMeta(), - }; - } - - /** - * Writes customer opening balance journal entries. - * @param {number} tenantId - * @param {number} customerId - * @param {number} openingBalance - * @return {Promise} - */ - public async writeCustomerOpeningBalanceJournal( - tenantId: number, - customerId: number, - openingBalance: number, - openingBalanceAt: Date | string, - authorizedUserId: number - ) { - const journal = new JournalPoster(tenantId); - const journalCommands = new JournalCommands(journal); - - await journalCommands.customerOpeningBalance( - customerId, - openingBalance, - openingBalanceAt, - authorizedUserId - ); - await Promise.all([ - journal.saveBalance(), - journal.saveEntries(), - journal.saveContactsBalance(), - ]); - } - - /** - * Reverts customer opening balance journal entries. - * @param {number} tenantId - - * @param {number} customerId - - * @return {Promise} - */ - public async revertOpeningBalanceEntries( - tenantId: number, - customerId: number | number[] - ) { - const id = Array.isArray(customerId) ? customerId : [customerId]; - - this.logger.info( - '[customer] trying to revert opening balance journal entries.', - { tenantId, customerId } - ); - await this.contactService.revertJEntriesContactsOpeningBalance( - tenantId, - id, - 'customer' - ); - } - - /** - * Retrieve the given customer by id or throw not found. - * @param {number} tenantId - * @param {number} customerId - */ - public getCustomerByIdOrThrowError(tenantId: number, customerId: number) { - return this.contactService.getContactByIdOrThrowError( - tenantId, - customerId, - 'customer' - ); - } - - /** - * Changes the opening balance of the given customer. - * @param {number} tenantId - * @param {number} customerId - * @param {number} openingBalance - * @param {string|Date} openingBalanceAt - */ - public async changeOpeningBalance( - tenantId: number, - customerId: number, - openingBalance: number, - openingBalanceAt: Date | string - ) { - await this.contactService.changeOpeningBalance( - tenantId, - customerId, - 'customer', - openingBalance, - openingBalanceAt - ); - // Triggers `onOpeingBalanceChanged` event. - await this.eventDispatcher.dispatch( - events.customers.onOpeningBalanceChanged, - { - tenantId, - customerId, - openingBalance, - openingBalanceAt, - } - ); - } -} diff --git a/server/src/services/Contacts/Vendors/VendorTransformer.ts b/server/src/services/Contacts/Vendors/VendorTransformer.ts deleted file mode 100644 index 4d9579116..000000000 --- a/server/src/services/Contacts/Vendors/VendorTransformer.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Service } from 'typedi'; -import ContactTransfromer from '../ContactTransformer'; - -export default class VendorTransfromer extends ContactTransfromer { - /** - * Include these attributes to expense object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return [ - 'formattedBalance', - 'formattedOpeningBalance', - 'formattedOpeningBalanceAt' - ]; - }; -} diff --git a/server/src/services/Contacts/Vendors/constants.ts b/server/src/services/Contacts/Vendors/constants.ts deleted file mode 100644 index a40f96a00..000000000 --- a/server/src/services/Contacts/Vendors/constants.ts +++ /dev/null @@ -1,22 +0,0 @@ -export const DEFAULT_VIEW_COLUMNS = []; - -export const DEFAULT_VIEWS = [ - { - name: 'Overdue', - slug: 'overdue', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'overdue' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Unpaid', - slug: 'unpaid', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'unpaid' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, -]; diff --git a/server/src/services/Contacts/VendorsService.ts b/server/src/services/Contacts/VendorsService.ts deleted file mode 100644 index f11474b2f..000000000 --- a/server/src/services/Contacts/VendorsService.ts +++ /dev/null @@ -1,347 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { defaultTo } from 'lodash'; -import * as R from 'ramda'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import JournalCommands from 'services/Accounting/JournalCommands'; -import ContactsService from 'services/Contacts/ContactsService'; -import { - IVendorNewDTO, - IVendorEditDTO, - IVendor, - IVendorsFilter, - IPaginationMeta, - IFilterMeta, - ISystemUser, - IBillsService, - IBillPaymentsService, -} from 'interfaces'; -import { ServiceError } from 'exceptions'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import TenancyService from 'services/Tenancy/TenancyService'; -import events from 'subscribers/events'; -import VendorTransfromer from './Vendors/VendorTransformer'; - -const ERRORS = { - VENDOR_HAS_TRANSACTIONS: 'VENDOR_HAS_TRANSACTIONS', -}; - -@Service() -export default class VendorsService { - @Inject() - contactService: ContactsService; - - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListService: DynamicListingService; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject('logger') - logger: any; - - @Inject('Bills') - billsService: IBillsService; - - @Inject('BillPayments') - billPaymentsService: IBillPaymentsService; - - /** - * Converts vendor to contact DTO. - * @param {IVendorNewDTO|IVendorEditDTO} vendorDTO - * @returns {IContactDTO} - */ - private vendorToContactDTO(vendorDTO: IVendorNewDTO | IVendorEditDTO) { - return { - ...vendorDTO, - active: defaultTo(vendorDTO.active, true), - }; - } - - /** - * Creates a new vendor. - * @param {number} tenantId - * @param {IVendorNewDTO} vendorDTO - * @return {Promise} - */ - public async newVendor( - tenantId: number, - vendorDTO: IVendorNewDTO, - authorizedUser: ISystemUser - ) { - this.logger.info('[vendor] trying create a new vendor.', { - tenantId, - vendorDTO, - }); - const contactDTO = this.vendorToContactDTO(vendorDTO); - - const vendor = await this.contactService.newContact( - tenantId, - contactDTO, - 'vendor' - ); - // Triggers `onVendorCreated` event. - await this.eventDispatcher.dispatch(events.vendors.onCreated, { - tenantId, - vendorId: vendor.id, - vendor, - authorizedUser, - }); - return vendor; - } - - /** - * Edits details of the given vendor. - * @param {number} tenantId - * @param {IVendorEditDTO} vendorDTO - */ - public async editVendor( - tenantId: number, - vendorId: number, - vendorDTO: IVendorEditDTO, - authorizedUser: ISystemUser - ) { - const contactDTO = this.vendorToContactDTO(vendorDTO); - const vendor = await this.contactService.editContact( - tenantId, - vendorId, - contactDTO, - 'vendor' - ); - - // Triggers `onVendorEdited` event. - await this.eventDispatcher.dispatch(events.vendors.onEdited, { - tenantId, - vendorId, - vendor, - authorizedUser, - }); - return vendor; - } - - /** - * Retrieve the given vendor details by id or throw not found. - * @param {number} tenantId - * @param {number} customerId - */ - public getVendorByIdOrThrowError(tenantId: number, customerId: number) { - return this.contactService.getContactByIdOrThrowError( - tenantId, - customerId, - 'vendor' - ); - } - - /** - * Validate the given vendor has no associated transactions. - * @param {number} tenantId - * @param {number} vendorId - */ - private async validateAssociatedTransactions( - tenantId: number, - vendorId: number - ) { - try { - // Validate vendor has no bills. - await this.billsService.validateVendorHasNoBills(tenantId, vendorId); - - // Validate vendor has no paymentys. - await this.billPaymentsService.validateVendorHasNoPayments( - tenantId, - vendorId - ); - } catch (error) { - throw new ServiceError(ERRORS.VENDOR_HAS_TRANSACTIONS); - } - } - - /** - * Deletes the given vendor from the storage. - * @param {number} tenantId - * @param {number} vendorId - * @return {Promise} - */ - public async deleteVendor( - tenantId: number, - vendorId: number, - authorizedUser: ISystemUser - ) { - // Validate the vendor existance on the storage. - await this.getVendorByIdOrThrowError(tenantId, vendorId); - - // Validate associated vendor transactions. - await this.validateAssociatedTransactions(tenantId, vendorId); - - this.logger.info('[vendor] trying to delete vendor.', { - tenantId, - vendorId, - }); - await this.contactService.deleteContact(tenantId, vendorId, 'vendor'); - - // Triggers `onVendorDeleted` event. - await this.eventDispatcher.dispatch(events.vendors.onDeleted, { - tenantId, - vendorId, - authorizedUser, - }); - this.logger.info('[vendor] deleted successfully.', { tenantId, vendorId }); - } - - /** - * Retrieve the given vendor details. - * @param {number} tenantId - * @param {number} vendorId - */ - public async getVendor(tenantId: number, vendorId: number) { - const vendor = await this.contactService.getContact( - tenantId, - vendorId, - 'vendor' - ); - - return new VendorTransfromer().transform(vendor); - } - - /** - * Writes vendor opening balance journal entries. - * @param {number} tenantId - * @param {number} vendorId - * @param {number} openingBalance - * @return {Promise} - */ - public async writeVendorOpeningBalanceJournal( - tenantId: number, - vendorId: number, - openingBalance: number, - openingBalanceAt: Date | string, - user: ISystemUser - ) { - const journal = new JournalPoster(tenantId); - const journalCommands = new JournalCommands(journal); - - this.logger.info('[vendor] writing opening balance journal entries.', { - tenantId, - vendorId, - }); - await journalCommands.vendorOpeningBalance( - vendorId, - openingBalance, - openingBalanceAt, - user - ); - await Promise.all([ - journal.saveBalance(), - journal.saveEntries(), - journal.saveContactsBalance(), - ]); - } - - /** - * Reverts vendor opening balance journal entries. - * @param {number} tenantId - - * @param {number} vendorId - - * @return {Promise} - */ - public async revertOpeningBalanceEntries( - tenantId: number, - vendorId: number | number[] - ) { - const id = Array.isArray(vendorId) ? vendorId : [vendorId]; - - this.logger.info( - '[customer] trying to revert opening balance journal entries.', - { tenantId, vendorId } - ); - await this.contactService.revertJEntriesContactsOpeningBalance( - tenantId, - id, - 'vendor' - ); - } - - private parseVendorsListFilterDTO(filterDTO) { - return R.compose(this.dynamicListService.parseStringifiedFilter)(filterDTO); - } - - /** - * Retrieve vendors datatable list. - * @param {number} tenantId - Tenant id. - * @param {IVendorsFilter} vendorsFilter - Vendors filter. - */ - public async getVendorsList( - tenantId: number, - filterDTO: IVendorsFilter - ): Promise<{ - vendors: IVendor[]; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }> { - const { Vendor } = this.tenancy.models(tenantId); - - // Parses vendors list filter DTO. - const filter = this.parseVendorsListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicList = await this.dynamicListService.dynamicList( - tenantId, - Vendor, - filter - ); - // Vendors list. - const { results, pagination } = await Vendor.query() - .onBuild((builder) => { - dynamicList.buildQuery()(builder); - - // Switches between active/inactive modes. - builder.modify('inactiveMode', filter.inactiveMode); - }) - .pagination(filter.page - 1, filter.pageSize); - - // Transform the vendors. - const transformedVendors = new VendorTransfromer().transform(results); - - return { - vendors: transformedVendors, - pagination, - filterMeta: dynamicList.getResponseMeta(), - }; - } - - /** - * Changes the opeing balance of the given vendor. - * @param {number} tenantId - * @param {number} vendorId - * @param {number} openingBalance - * @param {Date|string} openingBalanceAt - */ - public async changeOpeningBalance( - tenantId: number, - vendorId: number, - openingBalance: number, - openingBalanceAt: Date | string - ): Promise { - await this.contactService.changeOpeningBalance( - tenantId, - vendorId, - 'vendor', - openingBalance, - openingBalanceAt - ); - // Triggers `onOpeingBalanceChanged` event. - await this.eventDispatcher.dispatch( - events.vendors.onOpeningBalanceChanged, - { - tenantId, - vendorId, - openingBalance, - openingBalanceAt, - } - ); - } -} diff --git a/server/src/services/Contacts/constants.ts b/server/src/services/Contacts/constants.ts deleted file mode 100644 index 3bfb8771e..000000000 --- a/server/src/services/Contacts/constants.ts +++ /dev/null @@ -1,29 +0,0 @@ -export const DEFAULT_VIEW_COLUMNS = []; - -export const DEFAULT_VIEWS = [ - { - name: 'Overdue', - slug: 'overdue', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'overdue' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Unpaid', - slug: 'unpaid', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'unpaid' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, -]; - - -export const ERRORS = { - OPENING_BALANCE_DATE_REQUIRED: 'OPENING_BALANCE_DATE_REQUIRED', - CONTACT_ALREADY_INACTIVE: 'CONTACT_ALREADY_INACTIVE', - CONTACT_ALREADY_ACTIVE: 'CONTACT_ALREADY_ACTIVE' -}; diff --git a/server/src/services/Currencies/CurrenciesService.ts b/server/src/services/Currencies/CurrenciesService.ts deleted file mode 100644 index 76f47b218..000000000 --- a/server/src/services/Currencies/CurrenciesService.ts +++ /dev/null @@ -1,268 +0,0 @@ -import { Inject, Service } from 'typedi'; -import Currencies from 'js-money/lib/currency'; -import { - ICurrencyEditDTO, - ICurrencyDTO, - ICurrenciesService, - ICurrency, -} from 'interfaces'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import { ServiceError } from 'exceptions'; -import TenancyService from 'services/Tenancy/TenancyService'; - -const ERRORS = { - CURRENCY_NOT_FOUND: 'currency_not_found', - CURRENCY_CODE_EXISTS: 'currency_code_exists', - BASE_CURRENCY_INVALID: 'BASE_CURRENCY_INVALID', - CANNOT_DELETE_BASE_CURRENCY: 'CANNOT_DELETE_BASE_CURRENCY' -}; - -@Service() -export default class CurrenciesService implements ICurrenciesService { - @Inject('logger') - logger: any; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject() - tenancy: TenancyService; - - /** - * Retrieve currency by given currency code or throw not found error. - * @param {number} tenantId - * @param {string} currencyCode - * @param {number} currencyId - */ - private async validateCurrencyCodeUniquiness( - tenantId: number, - currencyCode: string, - currencyId?: number - ) { - const { Currency } = this.tenancy.models(tenantId); - - this.logger.info( - '[currencies] trying to validate currency code existance.', - { tenantId, currencyCode } - ); - const foundCurrency = await Currency.query().onBuild((query) => { - query.findOne('currency_code', currencyCode); - - if (currencyId) { - query.whereNot('id', currencyId); - } - }); - if (foundCurrency) { - this.logger.info('[currencies] the currency code already exists.', { - tenantId, - currencyCode, - }); - throw new ServiceError(ERRORS.CURRENCY_CODE_EXISTS); - } - } - - /** - * Retrieve currency by the given currency code or throw service error. - * @param {number} tenantId - * @param {string} currencyCode - */ - private async getCurrencyByCodeOrThrowError( - tenantId: number, - currencyCode: string - ) { - const { Currency } = this.tenancy.models(tenantId); - - this.logger.info( - '[currencies] trying to validate currency code existance.', - { tenantId, currencyCode } - ); - const foundCurrency = await Currency.query().findOne( - 'currency_code', - currencyCode - ); - - if (!foundCurrency) { - this.logger.info('[currencies] the given currency code not exists.', { - tenantId, - currencyCode, - }); - throw new ServiceError(ERRORS.CURRENCY_NOT_FOUND); - } - return foundCurrency; - } - - /** - * Retrieve currency by given id or throw not found error. - * @param {number} tenantId - * @param {number} currencyId - */ - private async getCurrencyIdOrThrowError( - tenantId: number, - currencyId: number - ) { - const { Currency } = this.tenancy.models(tenantId); - - this.logger.info( - '[currencies] trying to validate currency by id existance.', - { tenantId, currencyId } - ); - const foundCurrency = await Currency.query().findOne('id', currencyId); - - if (!foundCurrency) { - this.logger.info('[currencies] the currency code not found.', { - tenantId, - currencyId, - }); - throw new ServiceError(ERRORS.CURRENCY_NOT_FOUND); - } - return foundCurrency; - } - - /** - * Creates a new currency. - * @param {number} tenantId - * @param {ICurrencyDTO} currencyDTO - */ - public async newCurrency(tenantId: number, currencyDTO: ICurrencyDTO) { - const { Currency } = this.tenancy.models(tenantId); - this.logger.info('[currencies] try to insert new currency.', { - tenantId, - currencyDTO, - }); - // Validate currency code uniquiness. - await this.validateCurrencyCodeUniquiness( - tenantId, - currencyDTO.currencyCode - ); - - await Currency.query().insert({ ...currencyDTO }); - this.logger.info('[currencies] the currency inserted successfully.', { - tenantId, - currencyDTO, - }); - } - - /** - * Edit details of the given currency. - * @param {number} tenantId - * @param {number} currencyId - * @param {ICurrencyDTO} currencyDTO - */ - public async editCurrency( - tenantId: number, - currencyId: number, - currencyDTO: ICurrencyEditDTO - ): Promise { - const { Currency } = this.tenancy.models(tenantId); - - this.logger.info('[currencies] try to edit currency.', { - tenantId, - currencyId, - currencyDTO, - }); - await this.getCurrencyIdOrThrowError(tenantId, currencyId); - - const currency = await Currency.query().patchAndFetchById(currencyId, { - ...currencyDTO, - }); - this.logger.info('[currencies] the currency edited successfully.', { - tenantId, - currencyDTO, - }); - - return currency; - } - - /** - * Validate cannot delete base currency. - * @param {number} tenantId - * @param {string} currencyCode - */ - validateCannotDeleteBaseCurrency(tenantId: number, currencyCode: string) { - const settings = this.tenancy.settings(tenantId); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - if (baseCurrency === currencyCode) { - throw new ServiceError(ERRORS.CANNOT_DELETE_BASE_CURRENCY); - } - } - - /** - * Delete the given currency code. - * @param {number} tenantId - * @param {string} currencyCode - * @return {Promise<} - */ - public async deleteCurrency( - tenantId: number, - currencyCode: string - ): Promise { - const { Currency } = this.tenancy.models(tenantId); - this.logger.info('[currencies] trying to delete the given currency.', { - tenantId, - currencyCode, - }); - - await this.getCurrencyByCodeOrThrowError(tenantId, currencyCode); - - // Validate currency code not equals base currency. - await this.validateCannotDeleteBaseCurrency(tenantId, currencyCode); - - await Currency.query().where('currency_code', currencyCode).delete(); - this.logger.info('[currencies] the currency deleted successfully.', { - tenantId, - currencyCode, - }); - } - - /** - * Listing currencies. - * @param {number} tenantId - * @return {Promise} - */ - public async listCurrencies(tenantId: number): Promise { - const { Currency } = this.tenancy.models(tenantId); - - const settings = this.tenancy.settings(tenantId); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - const currencies = await Currency.query().onBuild((query) => { - query.orderBy('createdAt', 'ASC'); - }); - const formattedCurrencies = currencies.map((currency) => ({ - isBaseCurrency: baseCurrency === currency.currencyCode, - ...currency, - })); - return formattedCurrencies; - } - - /** - * Seeds the given base currency to the currencies list. - * @param {number} tenantId - * @param {string} baseCurrency - */ - public async seedBaseCurrency(tenantId: number, baseCurrency: string) { - const { Currency } = this.tenancy.models(tenantId); - const currencyMeta = Currencies[baseCurrency]; - - const foundBaseCurrency = await Currency.query().findOne( - 'currency_code', - baseCurrency - ); - if (!foundBaseCurrency) { - await Currency.query().insert({ - currency_code: currencyMeta.code, - currency_name: currencyMeta.name, - currency_sign: currencyMeta.symbol, - }); - } - } -} diff --git a/server/src/services/DynamicListing/DynamicListAbstruct.ts b/server/src/services/DynamicListing/DynamicListAbstruct.ts deleted file mode 100644 index d7997966b..000000000 --- a/server/src/services/DynamicListing/DynamicListAbstruct.ts +++ /dev/null @@ -1,6 +0,0 @@ - - - -export default class DynamicListAbstruct { - -} \ No newline at end of file diff --git a/server/src/services/DynamicListing/DynamicListCustomView.ts b/server/src/services/DynamicListing/DynamicListCustomView.ts deleted file mode 100644 index 7e11f54dc..000000000 --- a/server/src/services/DynamicListing/DynamicListCustomView.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Inject, Service } from 'typedi'; -import DynamicListAbstruct from './DynamicListAbstruct'; -import DynamicFilterViews from 'lib/DynamicFilter/DynamicFilterViews'; -import { ServiceError } from 'exceptions'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { ERRORS } from './constants'; -import { IModel } from 'interfaces'; - -@Service() -export default class DynamicListCustomView extends DynamicListAbstruct { - @Inject() - tenancy: HasTenancyService; - - /** - * Retreive custom view or throws error not found. - * @param {number} tenantId - * @param {number} viewId - * @return {Promise} - */ - private getCustomViewOrThrowError = async ( - tenantId: number, - viewSlug: string, - model: IModel - ) => { - const { View } = this.tenancy.models(tenantId); - - // Finds the default view by the given view slug. - const defaultView = model.getDefaultViewBySlug(viewSlug); - - if (!defaultView) { - throw new ServiceError(ERRORS.VIEW_NOT_FOUND); - } - return defaultView; - }; - - /** - * Dynamic list custom view. - * @param {IModel} model - * @param {number} customViewId - * @returns - */ - public dynamicListCustomView = async ( - dynamicFilter: any, - customViewSlug: string, - tenantId: number - ) => { - const model = dynamicFilter.getModel(); - - // Retrieve the custom view or throw not found. - const view = await this.getCustomViewOrThrowError( - tenantId, - customViewSlug, - model, - ); - return new DynamicFilterViews(view); - }; -} diff --git a/server/src/services/DynamicListing/DynamicListFilterRoles.ts b/server/src/services/DynamicListing/DynamicListFilterRoles.ts deleted file mode 100644 index 23e7f5f53..000000000 --- a/server/src/services/DynamicListing/DynamicListFilterRoles.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { Service } from 'typedi'; -import * as R from 'ramda'; -import validator from 'is-my-json-valid'; -import { IFilterRole, IModel } from 'interfaces'; -import DynamicListAbstruct from './DynamicListAbstruct'; -import DynamicFilterAdvancedFilter from 'lib/DynamicFilter/DynamicFilterAdvancedFilter'; -import { ERRORS } from './constants'; -import { ServiceError } from 'exceptions'; - -@Service() -export default class DynamicListFilterRoles extends DynamicListAbstruct { - /** - * Validates filter roles schema. - * @param {IFilterRole[]} filterRoles - Filter roles. - */ - private validateFilterRolesSchema = (filterRoles: IFilterRole[]) => { - const validate = validator({ - required: true, - type: 'object', - properties: { - condition: { type: 'string' }, - fieldKey: { required: true, type: 'string' }, - value: { required: true }, - }, - }); - const invalidFields = filterRoles.filter((filterRole) => { - return !validate(filterRole); - }); - if (invalidFields.length > 0) { - throw new ServiceError(ERRORS.STRINGIFIED_FILTER_ROLES_INVALID); - } - }; - - /** - * Retrieve filter roles fields key that not exists on the given model. - * @param {IModel} model - * @param {IFilterRole} filterRoles - * @returns {string[]} - */ - private getFilterRolesFieldsNotExist = ( - model, - filterRoles: IFilterRole[] - ): string[] => { - return filterRoles - .filter((filterRole) => !model.getField(filterRole.fieldKey)) - .map((filterRole) => filterRole.fieldKey); - }; - - /** - * Validates existance the fields of filter roles. - * @param {IModel} model - * @param {IFilterRole[]} filterRoles - * @throws {ServiceError} - */ - private validateFilterRolesFieldsExistance = ( - model: IModel, - filterRoles: IFilterRole[] - ) => { - const invalidFieldsKeys = this.getFilterRolesFieldsNotExist( - model, - filterRoles - ); - if (invalidFieldsKeys.length > 0) { - throw new ServiceError(ERRORS.FILTER_ROLES_FIELDS_NOT_FOUND); - } - }; - - /** - * Associate index to filter roles. - * @param {IFilterRole[]} filterRoles - * @returns {IFilterRole[]} - */ - private incrementFilterRolesIndex = ( - filterRoles: IFilterRole[] - ): IFilterRole[] => { - return filterRoles.map((filterRole, index) => ({ - ...filterRole, - index: index + 1, - })); - }; - - /** - * Dynamic list filter roles. - * @param {IModel} model - * @param {IFilterRole[]} filterRoles - * @returns {DynamicFilterFilterRoles} - */ - public dynamicList = ( - model: IModel, - filterRoles: IFilterRole[] - ): DynamicFilterAdvancedFilter => { - const filterRolesParsed = R.compose(this.incrementFilterRolesIndex)( - filterRoles - ); - // Validate filter roles json schema. - this.validateFilterRolesSchema(filterRolesParsed); - - // Validate the model resource fields. - this.validateFilterRolesFieldsExistance(model, filterRoles); - - return new DynamicFilterAdvancedFilter(filterRolesParsed); - }; -} diff --git a/server/src/services/DynamicListing/DynamicListSearch.ts b/server/src/services/DynamicListing/DynamicListSearch.ts deleted file mode 100644 index b18f22e59..000000000 --- a/server/src/services/DynamicListing/DynamicListSearch.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Service } from 'typedi'; -import { IFilterRole, IModel } from 'interfaces'; -import DynamicListAbstruct from './DynamicListAbstruct'; -import DynamicFilterFilterRoles from 'lib/DynamicFilter/DynamicFilterFilterRoles'; -import DynamicFilterSearch from 'lib/DynamicFilter/DynamicFilterSearch'; - -@Service() -export default class DynamicListSearch extends DynamicListAbstruct { - /** - * Dynamic list filter roles. - * @param {IModel} model - * @param {IFilterRole[]} filterRoles - * @returns {DynamicFilterFilterRoles} - */ - public dynamicSearch = (model: IModel, searchKeyword: string) => { - return new DynamicFilterSearch(searchKeyword); - }; -} diff --git a/server/src/services/DynamicListing/DynamicListService.ts b/server/src/services/DynamicListing/DynamicListService.ts deleted file mode 100644 index 7a2462816..000000000 --- a/server/src/services/DynamicListing/DynamicListService.ts +++ /dev/null @@ -1,181 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { Request, Response, NextFunction } from 'express'; -import { castArray, isEmpty } from 'lodash'; -import { ServiceError } from 'exceptions'; -import { DynamicFilter } from 'lib/DynamicFilter'; -import { - IDynamicListFilter, - IDynamicListService, - IFilterRole, - IModel, -} from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import DynamicListFilterRoles from './DynamicListFilterRoles'; -import DynamicListSortBy from './DynamicListSortBy'; -import DynamicListCustomView from './DynamicListCustomView'; -import DynamicListSearch from './DynamicListSearch'; - -@Service() -export default class DynamicListService implements IDynamicListService { - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListFilterRoles: DynamicListFilterRoles; - - @Inject() - dynamicListSortBy: DynamicListSortBy; - - @Inject() - dynamicListView: DynamicListCustomView; - - @Inject() - dynamicListSearch: DynamicListSearch; - - /** - * Parses filter DTO. - * @param {IMode} model - - * @param {} filterDTO - - */ - private parseFilterObject = (model, filterDTO) => { - return { - // Merges the default properties with filter object. - ...(model.defaultSort - ? { - sortOrder: model.defaultSort.sortOrder, - columnSortBy: model.defaultSort.sortOrder, - } - : {}), - ...filterDTO, - }; - }; - - /** - * Dynamic listing. - * @param {number} tenantId - Tenant id. - * @param {IModel} model - Model. - * @param {IDynamicListFilter} filter - Dynamic filter DTO. - */ - public dynamicList = async ( - tenantId: number, - model: IModel, - filter: IDynamicListFilter - ) => { - const dynamicFilter = new DynamicFilter(model); - - // Parses the filter object. - const parsedFilter = this.parseFilterObject(model, filter); - - // Search by keyword. - if (filter.searchKeyword) { - const dynamicListSearch = this.dynamicListSearch.dynamicSearch( - model, - filter.searchKeyword - ); - dynamicFilter.setFilter(dynamicListSearch); - } - // Custom view filter roles. - if (filter.viewSlug) { - const dynamicListCustomView = - await this.dynamicListView.dynamicListCustomView( - dynamicFilter, - filter.viewSlug, - tenantId - ); - dynamicFilter.setFilter(dynamicListCustomView); - } - // Sort by the given column. - if (parsedFilter.columnSortBy) { - const dynmaicListSortBy = this.dynamicListSortBy.dynamicSortBy( - model, - parsedFilter.columnSortBy, - parsedFilter.sortOrder - ); - dynamicFilter.setFilter(dynmaicListSortBy); - } - // Filter roles. - if (!isEmpty(parsedFilter.filterRoles)) { - const dynamicFilterRoles = this.dynamicListFilterRoles.dynamicList( - model, - parsedFilter.filterRoles - ); - dynamicFilter.setFilter(dynamicFilterRoles); - } - return dynamicFilter; - }; - - /** - * Middleware to catch services errors - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - public handlerErrorsToResponse( - error: Error, - req: Request, - res: Response, - next: NextFunction - ) { - if (error instanceof ServiceError) { - if (error.errorType === 'sort_column_not_found') { - return res.boom.badRequest(null, { - errors: [ - { - type: 'SORT.COLUMN.NOT.FOUND', - message: 'Sort column not found.', - code: 200, - }, - ], - }); - } - if (error.errorType === 'view_not_found') { - return res.boom.badRequest(null, { - errors: [ - { - type: 'CUSTOM.VIEW.NOT.FOUND', - message: 'Custom view not found.', - code: 100, - }, - ], - }); - } - if (error.errorType === 'filter_roles_fields_not_found') { - return res.boom.badRequest(null, { - errors: [ - { - type: 'FILTER.ROLES.FIELDS.NOT.FOUND', - message: 'Filter roles fields not found.', - code: 300, - }, - ], - }); - } - if (error.errorType === 'stringified_filter_roles_invalid') { - return res.boom.badRequest(null, { - errors: [ - { - type: 'STRINGIFIED_FILTER_ROLES_INVALID', - message: 'Stringified filter roles json invalid.', - code: 400, - }, - ], - }); - } - } - next(error); - } - - /** - * Parses stringified filter roles. - * @param {string} stringifiedFilterRoles - Stringified filter roles. - */ - public parseStringifiedFilter = (filterRoles: IDynamicListFilter) => { - return { - ...filterRoles, - filterRoles: filterRoles.stringifiedFilterRoles - ? castArray(JSON.parse(filterRoles.stringifiedFilterRoles)) - : [], - }; - }; -} diff --git a/server/src/services/DynamicListing/DynamicListSortBy.ts b/server/src/services/DynamicListing/DynamicListSortBy.ts deleted file mode 100644 index df6c75fa7..000000000 --- a/server/src/services/DynamicListing/DynamicListSortBy.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Service } from 'typedi'; -import DynamicListAbstruct from './DynamicListAbstruct'; -import DynamicFilterSortBy from 'lib/DynamicFilter/DynamicFilterSortBy'; -import { IModel, ISortOrder } from 'interfaces'; -import { ServiceError } from 'exceptions'; -import { ERRORS } from './constants'; - -@Service() -export default class DynamicListSortBy extends DynamicListAbstruct { - /** - * Dynamic list sort by. - * @param {IModel} model - * @param {string} columnSortBy - * @param {ISortOrder} sortOrder - * @returns {DynamicFilterSortBy} - */ - public dynamicSortBy( - model: IModel, - columnSortBy: string, - sortOrder: ISortOrder - ) { - this.validateSortColumnExistance(model, columnSortBy); - - return new DynamicFilterSortBy(columnSortBy, sortOrder); - } - - /** - * Validates the sort column whether exists. - * @param {IModel} model - Model. - * @param {string} columnSortBy - Sort column - * @throws {ServiceError} - */ - private validateSortColumnExistance(model: any, columnSortBy: string) { - const field = model.getField(columnSortBy); - - if (!field) { - throw new ServiceError(ERRORS.SORT_COLUMN_NOT_FOUND); - } - } -} diff --git a/server/src/services/DynamicListing/constants.ts b/server/src/services/DynamicListing/constants.ts deleted file mode 100644 index 414de46ac..000000000 --- a/server/src/services/DynamicListing/constants.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const ERRORS = { - STRINGIFIED_FILTER_ROLES_INVALID: 'stringified_filter_roles_invalid', - VIEW_NOT_FOUND: 'view_not_found', - SORT_COLUMN_NOT_FOUND: 'sort_column_not_found', - FILTER_ROLES_FIELDS_NOT_FOUND: 'filter_roles_fields_not_found', -}; diff --git a/server/src/services/DynamicListing/validators.ts b/server/src/services/DynamicListing/validators.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/server/src/services/Entries/index.ts b/server/src/services/Entries/index.ts deleted file mode 100644 index 482fffa5a..000000000 --- a/server/src/services/Entries/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { Service } from 'typedi'; -import { ServiceError } from 'exceptions'; -import { transformToMap } from 'utils'; -import { - ICommonLandedCostEntry, - ICommonLandedCostEntryDTO -} from 'interfaces'; - -const ERRORS = { - ENTRIES_ALLOCATED_COST_COULD_NOT_DELETED: - 'ENTRIES_ALLOCATED_COST_COULD_NOT_DELETED', - LOCATED_COST_ENTRIES_SHOULD_BIGGE_THAN_NEW_ENTRIES: - 'LOCATED_COST_ENTRIES_SHOULD_BIGGE_THAN_NEW_ENTRIES', -}; - -@Service() -export default class EntriesService { - /** - * Validates bill entries that has allocated landed cost amount not deleted. - * @param {IItemEntry[]} oldCommonEntries - - * @param {IItemEntry[]} newBillEntries - - */ - public getLandedCostEntriesDeleted( - oldCommonEntries: ICommonLandedCostEntry[], - newCommonEntriesDTO: ICommonLandedCostEntryDTO[] - ): ICommonLandedCostEntry[] { - const newBillEntriesById = transformToMap(newCommonEntriesDTO, 'id'); - - return oldCommonEntries.filter((entry) => { - const newEntry = newBillEntriesById.get(entry.id); - - if (entry.allocatedCostAmount > 0 && typeof newEntry === 'undefined') { - return true; - } - return false; - }); - } - - /** - * Validates the bill entries that have located cost amount should not be deleted. - * @param {IItemEntry[]} oldCommonEntries - Old bill entries. - * @param {IItemEntryDTO[]} newBillEntries - New DTO bill entries. - */ - public validateLandedCostEntriesNotDeleted( - oldCommonEntries: ICommonLandedCostEntry[], - newCommonEntriesDTO: ICommonLandedCostEntryDTO[] - ): void { - const entriesDeleted = this.getLandedCostEntriesDeleted( - oldCommonEntries, - newCommonEntriesDTO - ); - if (entriesDeleted.length > 0) { - throw new ServiceError(ERRORS.ENTRIES_ALLOCATED_COST_COULD_NOT_DELETED); - } - } - - /** - * Validate allocated cost amount entries should be smaller than new entries amount. - * @param {IItemEntry[]} oldCommonEntries - Old bill entries. - * @param {IItemEntryDTO[]} newBillEntries - New DTO bill entries. - */ - public validateLocatedCostEntriesSmallerThanNewEntries( - oldCommonEntries: ICommonLandedCostEntry[], - newCommonEntriesDTO: ICommonLandedCostEntryDTO[] - ): void { - const oldBillEntriesById = transformToMap(oldCommonEntries, 'id'); - - newCommonEntriesDTO.forEach((entry) => { - const oldEntry = oldBillEntriesById.get(entry.id); - - if (oldEntry && oldEntry.allocatedCostAmount > entry.amount) { - throw new ServiceError( - ERRORS.LOCATED_COST_ENTRIES_SHOULD_BIGGE_THAN_NEW_ENTRIES - ); - } - }); - } -} diff --git a/server/src/services/ExchangeRates/ExchangeRatesService.ts b/server/src/services/ExchangeRates/ExchangeRatesService.ts deleted file mode 100644 index 07bf98400..000000000 --- a/server/src/services/ExchangeRates/ExchangeRatesService.ts +++ /dev/null @@ -1,193 +0,0 @@ -import moment from 'moment'; -import { difference } from 'lodash'; -import { Service, Inject } from 'typedi'; -import { ServiceError } from 'exceptions'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import { - IExchangeRateDTO, - IExchangeRate, - IExchangeRatesService, - IExchangeRateEditDTO, - IExchangeRateFilter, -} from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; - -const ERRORS = { - NOT_FOUND_EXCHANGE_RATES: 'NOT_FOUND_EXCHANGE_RATES', - EXCHANGE_RATE_PERIOD_EXISTS: 'EXCHANGE_RATE_PERIOD_EXISTS', - EXCHANGE_RATE_NOT_FOUND: 'EXCHANGE_RATE_NOT_FOUND', -}; - -@Service() -export default class ExchangeRatesService implements IExchangeRatesService { - @Inject('logger') - logger: any; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Creates a new exchange rate. - * @param {number} tenantId - * @param {IExchangeRateDTO} exchangeRateDTO - * @returns {Promise} - */ - public async newExchangeRate( - tenantId: number, - exchangeRateDTO: IExchangeRateDTO - ): Promise { - const { ExchangeRate } = this.tenancy.models(tenantId); - - this.logger.info('[exchange_rates] trying to insert new exchange rate.', { - tenantId, - exchangeRateDTO, - }); - await this.validateExchangeRatePeriodExistance(tenantId, exchangeRateDTO); - - const exchangeRate = await ExchangeRate.query().insertAndFetch({ - ...exchangeRateDTO, - date: moment(exchangeRateDTO.date).format('YYYY-MM-DD'), - }); - this.logger.info('[exchange_rates] inserted successfully.', { - tenantId, - exchangeRateDTO, - }); - return exchangeRate; - } - - /** - * Edits the exchange rate details. - * @param {number} tenantId - Tenant id. - * @param {number} exchangeRateId - Exchange rate id. - * @param {IExchangeRateEditDTO} editExRateDTO - Edit exchange rate DTO. - */ - public async editExchangeRate( - tenantId: number, - exchangeRateId: number, - editExRateDTO: IExchangeRateEditDTO - ): Promise { - const { ExchangeRate } = this.tenancy.models(tenantId); - - this.logger.info('[exchange_rates] trying to edit exchange rate.', { - tenantId, - exchangeRateId, - editExRateDTO, - }); - await this.validateExchangeRateExistance(tenantId, exchangeRateId); - - await ExchangeRate.query() - .where('id', exchangeRateId) - .update({ ...editExRateDTO }); - this.logger.info('[exchange_rates] exchange rate edited successfully.', { - tenantId, - exchangeRateId, - editExRateDTO, - }); - } - - /** - * Deletes the given exchange rate. - * @param {number} tenantId - Tenant id. - * @param {number} exchangeRateId - Exchange rate id. - */ - public async deleteExchangeRate( - tenantId: number, - exchangeRateId: number - ): Promise { - const { ExchangeRate } = this.tenancy.models(tenantId); - await this.validateExchangeRateExistance(tenantId, exchangeRateId); - - await ExchangeRate.query().findById(exchangeRateId).delete(); - } - - /** - * Listing exchange rates details. - * @param {number} tenantId - Tenant id. - * @param {IExchangeRateFilter} exchangeRateFilter - Exchange rates list filter. - */ - public async listExchangeRates( - tenantId: number, - exchangeRateFilter: IExchangeRateFilter - ): Promise { - const { ExchangeRate } = this.tenancy.models(tenantId); - const dynamicFilter = await this.dynamicListService.dynamicList( - tenantId, - ExchangeRate, - exchangeRateFilter - ); - // Retrieve exchange rates by the given query. - const exchangeRates = await ExchangeRate.query() - .onBuild((query) => { - dynamicFilter.buildQuery()(query); - }) - .pagination(exchangeRateFilter.page - 1, exchangeRateFilter.pageSize); - - return exchangeRates; - } - - /** - * Validates period of the exchange rate existance. - * @param {number} tenantId - Tenant id. - * @param {IExchangeRateDTO} exchangeRateDTO - Exchange rate DTO. - * @return {Promise} - */ - private async validateExchangeRatePeriodExistance( - tenantId: number, - exchangeRateDTO: IExchangeRateDTO - ): Promise { - const { ExchangeRate } = this.tenancy.models(tenantId); - - this.logger.info('[exchange_rates] trying to validate period existance.', { - tenantId, - }); - const foundExchangeRate = await ExchangeRate.query() - .where('currency_code', exchangeRateDTO.currencyCode) - .where('date', exchangeRateDTO.date); - - if (foundExchangeRate.length > 0) { - this.logger.info('[exchange_rates] given exchange rate period exists.', { - tenantId, - }); - throw new ServiceError(ERRORS.EXCHANGE_RATE_PERIOD_EXISTS); - } - } - - /** - * Validate the given echange rate id existance. - * @param {number} tenantId - Tenant id. - * @param {number} exchangeRateId - Exchange rate id. - * @returns {Promise} - */ - private async validateExchangeRateExistance( - tenantId: number, - exchangeRateId: number - ) { - const { ExchangeRate } = this.tenancy.models(tenantId); - - this.logger.info( - '[exchange_rates] trying to validate exchange rate id existance.', - { tenantId, exchangeRateId } - ); - const foundExchangeRate = await ExchangeRate.query().findById( - exchangeRateId - ); - - if (!foundExchangeRate) { - this.logger.info('[exchange_rates] exchange rate not found.', { - tenantId, - exchangeRateId, - }); - throw new ServiceError(ERRORS.EXCHANGE_RATE_NOT_FOUND); - } - } -} diff --git a/server/src/services/Expenses/ExpenseTransformer.ts b/server/src/services/Expenses/ExpenseTransformer.ts deleted file mode 100644 index 31c24e777..000000000 --- a/server/src/services/Expenses/ExpenseTransformer.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Service, Container } from 'typedi'; -import { Transformer } from 'lib/Transformer/Transformer'; -import { formatNumber } from 'utils'; -import { IExpense } from 'interfaces'; - -@Service() -export default class ExpenseTransfromer extends Transformer { - /** - * Include these attributes to expense object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return [ - 'formattedAmount', - 'formattedLandedCostAmount', - 'formattedAllocatedCostAmount', - 'formattedDate' - ]; - }; - - /** - * Retrieve formatted expense amount. - * @param {IExpense} expense - * @returns {string} - */ - protected formattedAmount = (expense: IExpense): string => { - return formatNumber(expense.totalAmount, { - currencyCode: expense.currencyCode, - }); - }; - - /** - * Retrieve formatted expense landed cost amount. - * @param {IExpense} expense - * @returns {string} - */ - protected formattedLandedCostAmount = (expense: IExpense): string => { - return formatNumber(expense.landedCostAmount, { - currencyCode: expense.currencyCode, - }); - }; - - /** - * Retrieve formatted allocated cost amount. - * @param {IExpense} expense - * @returns {string} - */ - protected formattedAllocatedCostAmount = (expense: IExpense): string => { - return formatNumber(expense.allocatedCostAmount, { - currencyCode: expense.currencyCode, - }); - }; - - /** - * Retriecve fromatted date. - * @param {IExpense} expense - * @returns {string} - */ - protected formattedDate = (expense: IExpense): string => { - return this.formatDate(expense.paymentDate); - } -} diff --git a/server/src/services/Expenses/ExpensesService.ts b/server/src/services/Expenses/ExpensesService.ts deleted file mode 100644 index f778d7984..000000000 --- a/server/src/services/Expenses/ExpensesService.ts +++ /dev/null @@ -1,736 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { difference, sumBy, omit } from 'lodash'; -import moment from 'moment'; -import * as R from 'ramda'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import { ServiceError } from 'exceptions'; -import TenancyService from 'services/Tenancy/TenancyService'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import JournalCommands from 'services/Accounting/JournalCommands'; -import { - IExpense, - IExpensesFilter, - IAccount, - IExpenseDTO, - IExpensesService, - ISystemUser, - IPaginationMeta, - IExpenseCategory, -} from 'interfaces'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import events from 'subscribers/events'; -import ContactsService from 'services/Contacts/ContactsService'; -import { ACCOUNT_PARENT_TYPE, ACCOUNT_ROOT_TYPE } from 'data/AccountTypes'; -import EntriesService from 'services/Entries'; -import ExpenseTransfromer from './ExpenseTransformer'; - -const ERRORS = { - EXPENSE_NOT_FOUND: 'expense_not_found', - EXPENSES_NOT_FOUND: 'EXPENSES_NOT_FOUND', - PAYMENT_ACCOUNT_NOT_FOUND: 'payment_account_not_found', - SOME_ACCOUNTS_NOT_FOUND: 'some_expenses_not_found', - TOTAL_AMOUNT_EQUALS_ZERO: 'total_amount_equals_zero', - PAYMENT_ACCOUNT_HAS_INVALID_TYPE: 'payment_account_has_invalid_type', - EXPENSES_ACCOUNT_HAS_INVALID_TYPE: 'expenses_account_has_invalid_type', - EXPENSE_ALREADY_PUBLISHED: 'expense_already_published', - EXPENSE_HAS_ASSOCIATED_LANDED_COST: 'EXPENSE_HAS_ASSOCIATED_LANDED_COST', -}; - -@Service() -export default class ExpensesService implements IExpensesService { - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject('logger') - logger: any; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject() - contactsService: ContactsService; - - @Inject() - entriesService: EntriesService; - - @Inject() - expenseTransfromer: ExpenseTransfromer; - - /** - * Retrieve the payment account details or returns not found server error in case the - * given account not found on the storage. - * @param {number} tenantId - * @param {number} paymentAccountId - * @returns {Promise} - */ - private async getPaymentAccountOrThrowError( - tenantId: number, - paymentAccountId: number - ) { - this.logger.info('[expenses] trying to get the given payment account.', { - tenantId, - paymentAccountId, - }); - - const { accountRepository } = this.tenancy.repositories(tenantId); - const paymentAccount = await accountRepository.findOneById( - paymentAccountId - ); - - if (!paymentAccount) { - this.logger.info('[expenses] the given payment account not found.', { - tenantId, - paymentAccountId, - }); - throw new ServiceError(ERRORS.PAYMENT_ACCOUNT_NOT_FOUND); - } - return paymentAccount; - } - - /** - * Retrieve expense accounts or throw error in case one of the given accounts - * not found not the storage. - * @param {number} tenantId - * @param {number} expenseAccountsIds - * @throws {ServiceError} - * @returns {Promise} - */ - private async getExpensesAccountsOrThrowError( - tenantId: number, - expenseAccountsIds: number[] - ) { - this.logger.info('[expenses] trying to get expenses accounts.', { - tenantId, - expenseAccountsIds, - }); - - const { accountRepository } = this.tenancy.repositories(tenantId); - const storedExpenseAccounts = await accountRepository.findWhereIn( - 'id', - expenseAccountsIds - ); - const storedExpenseAccountsIds = storedExpenseAccounts.map( - (a: IAccount) => a.id - ); - const notStoredAccountsIds = difference( - expenseAccountsIds, - storedExpenseAccountsIds - ); - if (notStoredAccountsIds.length > 0) { - this.logger.info('[expenses] some of expense accounts not found.', { - tenantId, - expenseAccountsIds, - }); - throw new ServiceError(ERRORS.SOME_ACCOUNTS_NOT_FOUND); - } - return storedExpenseAccounts; - } - - /** - * Validates expense categories not equals zero. - * @param {IExpenseDTO|ServiceError} expenseDTO - * @throws {ServiceError} - */ - private validateCategoriesNotEqualZero(expenseDTO: IExpenseDTO) { - this.logger.info( - '[expenses] validate the expenses categoires not equal zero.', - { expenseDTO } - ); - const totalAmount = sumBy(expenseDTO.categories, 'amount') || 0; - - if (totalAmount <= 0) { - this.logger.info('[expenses] the given expense categories equal zero.', { - expenseDTO, - }); - throw new ServiceError(ERRORS.TOTAL_AMOUNT_EQUALS_ZERO); - } - } - - /** - * Validate expenses accounts type. - * @param {number} tenantId - * @param {number[]} expensesAccountsIds - */ - private async validateExpensesAccountsType( - tenantId: number, - expensesAccounts: number[] - ) { - this.logger.info('[expenses] trying to validate expenses accounts type.', { - tenantId, - expensesAccounts, - }); - const invalidExpenseAccounts: number[] = []; - - expensesAccounts.forEach((expenseAccount) => { - if (!expenseAccount.isRootType(ACCOUNT_ROOT_TYPE.EXPENSE)) { - invalidExpenseAccounts.push(expenseAccount.id); - } - }); - if (invalidExpenseAccounts.length > 0) { - throw new ServiceError(ERRORS.EXPENSES_ACCOUNT_HAS_INVALID_TYPE); - } - } - - /** - * Validates payment account type in case has invalid type throws errors. - * @param {number} tenantId - * @param {number} paymentAccountId - * @throws {ServiceError} - */ - private async validatePaymentAccountType( - tenantId: number, - paymentAccount: number[] - ) { - this.logger.info('[expenses] trying to validate payment account type.', { - tenantId, - paymentAccount, - }); - - if (!paymentAccount.isParentType(ACCOUNT_PARENT_TYPE.CURRENT_ASSET)) { - this.logger.info( - '[expenses] the given payment account has invalid type', - { tenantId, paymentAccount } - ); - throw new ServiceError(ERRORS.PAYMENT_ACCOUNT_HAS_INVALID_TYPE); - } - } - - /** - * Reverts expense journal entries. - * @param {number} tenantId - * @param {number} expenseId - */ - public async revertJournalEntries( - tenantId: number, - expenseId: number | number[] - ): Promise { - const journal = new JournalPoster(tenantId); - const journalCommands = new JournalCommands(journal); - - await journalCommands.revertJournalEntries(expenseId, 'Expense'); - - await Promise.all([journal.saveBalance(), journal.deleteEntries()]); - } - - /** - * Writes expense journal entries. - * @param {number} tenantId - * @param {IExpense} expense - * @param {IUser} authorizedUser - */ - public async writeJournalEntries( - tenantId: number, - expense: IExpense | IExpense[], - authorizedUserId: number, - override: boolean = false - ): Promise { - this.logger.info('[expense] trying to write expense journal entries.', { - tenantId, - expense, - }); - const journal = new JournalPoster(tenantId); - const journalCommands = new JournalCommands(journal); - - const expenses = Array.isArray(expense) ? expense : [expense]; - const expensesIds = expenses.map((expense) => expense.id); - - if (override) { - await journalCommands.revertJournalEntries(expensesIds, 'Expense'); - } - expenses.forEach((expense: IExpense) => { - journalCommands.expense(expense, authorizedUserId); - }); - await Promise.all([ - journal.saveBalance(), - journal.saveEntries(), - journal.deleteEntries(), - ]); - } - - /** - * Retrieve the given expenses or throw not found error. - * @param {number} tenantId - * @param {number} expenseId - * @returns {IExpense|ServiceError} - */ - private async getExpenseOrThrowError(tenantId: number, expenseId: number) { - const { Expense } = this.tenancy.models(tenantId); - - this.logger.info('[expense] trying to get the given expense.', { - tenantId, - expenseId, - }); - // Retrieve the given expense by id. - const expense = await Expense.query() - .findById(expenseId) - .withGraphFetched('categories'); - - if (!expense) { - this.logger.info('[expense] the given expense not found.', { - tenantId, - expenseId, - }); - throw new ServiceError(ERRORS.EXPENSE_NOT_FOUND); - } - return expense; - } - - /** - * Retrieve the give expenses models or throw not found service error. - * @param {number} tenantId - - * @param {number[]} expensesIds - - */ - async getExpensesOrThrowError( - tenantId: number, - expensesIds: number[] - ): Promise { - const { expenseRepository } = this.tenancy.repositories(tenantId); - - const storedExpenses = await expenseRepository.findWhereIn( - 'id', - expensesIds, - 'categories' - ); - const storedExpensesIds = storedExpenses.map((expense) => expense.id); - const notFoundExpenses = difference(expensesIds, storedExpensesIds); - - // In case there is not found expenses throw service error. - if (notFoundExpenses.length > 0) { - this.logger.info('[expense] the give expenses ids not found.', { - tenantId, - expensesIds, - }); - throw new ServiceError(ERRORS.EXPENSES_NOT_FOUND); - } - return storedExpenses; - } - - /** - * Validates expenses is not already published before. - * @param {IExpense} expense - */ - private validateExpenseIsNotPublished(expense: IExpense) { - if (expense.publishedAt) { - throw new ServiceError(ERRORS.EXPENSE_ALREADY_PUBLISHED); - } - } - - /** - * Retrieve the expense landed cost amount. - * @param {IExpenseDTO} expenseDTO - * @return {number} - */ - private getExpenseLandedCostAmount(expenseDTO: IExpenseDTO): number { - const landedCostEntries = expenseDTO.categories.filter((entry) => { - return entry.landedCost === true; - }); - return this.getExpenseCategoriesTotal(landedCostEntries); - } - - /** - * Retrieve the given expense categories total. - * @param {IExpenseCategory} categories - * @returns {number} - */ - private getExpenseCategoriesTotal(categories): number { - return sumBy(categories, 'amount'); - } - - /** - * Mapping expense DTO to model. - * @param {IExpenseDTO} expenseDTO - * @param {ISystemUser} authorizedUser - * @return {IExpense} - */ - private expenseDTOToModel(expenseDTO: IExpenseDTO, user?: ISystemUser) { - const landedCostAmount = this.getExpenseLandedCostAmount(expenseDTO); - const totalAmount = this.getExpenseCategoriesTotal(expenseDTO.categories); - - return { - categories: [], - ...omit(expenseDTO, ['publish']), - totalAmount, - landedCostAmount, - paymentDate: moment(expenseDTO.paymentDate).toMySqlDateTime(), - ...(user - ? { - userId: user.id, - } - : {}), - ...(expenseDTO.publish - ? { - publishedAt: moment().toMySqlDateTime(), - } - : {}), - }; - } - - /** - * Mapping the expenses accounts ids from expense DTO. - * @param {IExpenseDTO} expenseDTO - * @return {number[]} - */ - private mapExpensesAccountsIdsFromDTO(expenseDTO: IExpenseDTO) { - return expenseDTO.categories.map((category) => category.expenseAccountId); - } - - /** - * Precedures. - * --------- - * 1. Validate payment account existance on the storage. - * 2. Validate expense accounts exist on the storage. - * 3. Validate payment account type. - * 4. Validate expenses accounts type. - * 5. Validate the expense payee contact id existance on storage. - * 6. Validate the given expense categories not equal zero. - * 7. Stores the expense to the storage. - * --------- - * @param {number} tenantId - * @param {IExpenseDTO} expenseDTO - */ - public async newExpense( - tenantId: number, - expenseDTO: IExpenseDTO, - authorizedUser: ISystemUser - ): Promise { - const { expenseRepository } = this.tenancy.repositories(tenantId); - - // Validate payment account existance on the storage. - const paymentAccount = await this.getPaymentAccountOrThrowError( - tenantId, - expenseDTO.paymentAccountId - ); - // Validate expense accounts exist on the storage. - const expensesAccounts = await this.getExpensesAccountsOrThrowError( - tenantId, - this.mapExpensesAccountsIdsFromDTO(expenseDTO) - ); - // Validate payment account type. - await this.validatePaymentAccountType(tenantId, paymentAccount); - - // Validate expenses accounts type. - await this.validateExpensesAccountsType(tenantId, expensesAccounts); - - // Validate the expense payee contact id existance on storage. - if (expenseDTO.payeeId) { - await this.contactsService.getContactByIdOrThrowError( - tenantId, - expenseDTO.payeeId - ); - } - // Validate the given expense categories not equal zero. - this.validateCategoriesNotEqualZero(expenseDTO); - - // Save the expense to the storage. - const expenseObj = this.expenseDTOToModel(expenseDTO, authorizedUser); - const expense = await expenseRepository.upsertGraph(expenseObj); - - this.logger.info( - '[expense] the expense stored to the storage successfully.', - { tenantId, expenseDTO } - ); - // Triggers `onExpenseCreated` event. - this.eventDispatcher.dispatch(events.expenses.onCreated, { - tenantId, - expenseId: expense.id, - authorizedUser, - expense, - }); - return expense; - } - - /** - * Precedures. - * --------- - * 1. Validate expense existance. - * 2. Validate payment account existance on the storage. - * 3. Validate expense accounts exist on the storage. - * 4. Validate payment account type. - * 5. Validate expenses accounts type. - * 6. Validate the given expense categories not equal zero. - * 7. Stores the expense to the storage. - * --------- - * @param {number} tenantId - * @param {number} expenseId - * @param {IExpenseDTO} expenseDTO - * @param {ISystemUser} authorizedUser - */ - public async editExpense( - tenantId: number, - expenseId: number, - expenseDTO: IExpenseDTO, - authorizedUser: ISystemUser - ): Promise { - const { expenseRepository } = this.tenancy.repositories(tenantId); - const oldExpense = await this.getExpenseOrThrowError(tenantId, expenseId); - - // Validate payment account existance on the storage. - const paymentAccount = await this.getPaymentAccountOrThrowError( - tenantId, - expenseDTO.paymentAccountId - ); - // Validate expense accounts exist on the storage. - const expensesAccounts = await this.getExpensesAccountsOrThrowError( - tenantId, - this.mapExpensesAccountsIdsFromDTO(expenseDTO) - ); - // Validate payment account type. - await this.validatePaymentAccountType(tenantId, paymentAccount); - - // Validate expenses accounts type. - await this.validateExpensesAccountsType(tenantId, expensesAccounts); - - // Validate the expense payee contact id existance on storage. - if (expenseDTO.payeeId) { - await this.contactsService.getContactByIdOrThrowError( - tenantId, - expenseDTO.payeeId - ); - } - // Validate the given expense categories not equal zero. - this.validateCategoriesNotEqualZero(expenseDTO); - - // Update the expense on the storage. - const expenseObj = this.expenseDTOToModel(expenseDTO); - - // Validate expense entries that have allocated landed cost cannot be deleted. - this.entriesService.validateLandedCostEntriesNotDeleted( - oldExpense.categories, - expenseDTO.categories, - ); - // Validate expense entries that have allocated cost amount should be bigger than amount. - this.entriesService.validateLocatedCostEntriesSmallerThanNewEntries( - oldExpense.categories, - expenseDTO.categories, - ); - - // Upsert the expense object with expense entries. - const expense = await expenseRepository.upsertGraph({ - id: expenseId, - ...expenseObj, - }); - - this.logger.info( - '[expense] the expense updated on the storage successfully.', - { tenantId, expenseId } - ); - // Triggers `onExpenseCreated` event. - this.eventDispatcher.dispatch(events.expenses.onEdited, { - tenantId, - expenseId, - expense, - expenseDTO, - authorizedUser, - oldExpense, - }); - return expense; - } - - /** - * Publish the given expense. - * @param {number} tenantId - * @param {number} expenseId - * @param {ISystemUser} authorizedUser - * @return {Promise} - */ - public async publishExpense( - tenantId: number, - expenseId: number, - authorizedUser: ISystemUser - ) { - const { expenseRepository } = this.tenancy.repositories(tenantId); - const oldExpense = await this.getExpenseOrThrowError(tenantId, expenseId); - - if (oldExpense instanceof ServiceError) { - throw oldExpense; - } - this.validateExpenseIsNotPublished(oldExpense); - - this.logger.info('[expense] trying to publish the expense.', { - tenantId, - expenseId, - }); - // Publish the given expense on the storage. - await expenseRepository.publish(expenseId); - - // Retrieve the new expense after modification. - const expense = await expenseRepository.findOneById( - expenseId, - 'categories' - ); - - this.logger.info('[expense] the expense published successfully.', { - tenantId, - expenseId, - }); - // Triggers `onExpensePublished` event. - this.eventDispatcher.dispatch(events.expenses.onPublished, { - tenantId, - expenseId, - oldExpense, - expense, - authorizedUser, - }); - } - - /** - * Deletes the given expense. - * @param {number} tenantId - * @param {number} expenseId - * @param {ISystemUser} authorizedUser - */ - public async deleteExpense( - tenantId: number, - expenseId: number, - authorizedUser: ISystemUser - ): Promise { - const oldExpense = await this.getExpenseOrThrowError(tenantId, expenseId); - const { expenseRepository, expenseEntryRepository } = - this.tenancy.repositories(tenantId); - - this.logger.info('[expense] trying to delete the expense.', { - tenantId, - expenseId, - }); - // Validates the expense has no associated landed cost. - await this.validateNoAssociatedLandedCost(tenantId, expenseId); - - await expenseEntryRepository.deleteBy({ expenseId }); - await expenseRepository.deleteById(expenseId); - - this.logger.info('[expense] the expense deleted successfully.', { - tenantId, - expenseId, - }); - - // Triggers `onExpenseDeleted` event. - this.eventDispatcher.dispatch(events.expenses.onDeleted, { - tenantId, - expenseId, - authorizedUser, - oldExpense, - }); - } - - /** - * Filters the not published expenses. - * @param {IExpense[]} expenses - - */ - public getNonePublishedExpenses(expenses: IExpense[]): IExpense[] { - return expenses.filter((expense) => !expense.publishedAt); - } - - /** - * Filtesr the published expenses. - * @param {IExpense[]} expenses - - * @return {IExpense[]} - */ - public getPublishedExpenses(expenses: IExpense[]): IExpense[] { - return expenses.filter((expense) => expense.publishedAt); - } - - /** - * Parses filter DTO of expenses list. - * @param filterDTO - - */ - private parseListFilterDTO(filterDTO) { - return R.compose( - this.dynamicListService.parseStringifiedFilter, - )(filterDTO); - } - - /** - * Retrieve expenses datatable lsit. - * @param {number} tenantId - * @param {IExpensesFilter} expensesFilter - * @return {IExpense[]} - */ - public async getExpensesList( - tenantId: number, - filterDTO: IExpensesFilter - ): Promise<{ - expenses: IExpense[]; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }> { - const { Expense } = this.tenancy.models(tenantId); - - // Parses list filter DTO. - const filter = this.parseListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicList = await this.dynamicListService.dynamicList( - tenantId, - Expense, - filter, - ); - - this.logger.info('[expense] trying to get expenses datatable list.', { - tenantId, - filter, - }); - const { results, pagination } = await Expense.query() - .onBuild((builder) => { - builder.withGraphFetched('paymentAccount'); - builder.withGraphFetched('categories.expenseAccount'); - - dynamicList.buildQuery()(builder); - }) - .pagination(filter.page - 1, filter.pageSize); - - return { - expenses: this.expenseTransfromer.transform(results), - pagination, - filterMeta: dynamicList.getResponseMeta(), - }; - } - - /** - * Retrieve expense details. - * @param {number} tenantId - * @param {number} expenseId - * @return {Promise} - */ - public async getExpense( - tenantId: number, - expenseId: number - ): Promise { - const { expenseRepository } = this.tenancy.repositories(tenantId); - - const expense = await expenseRepository.findOneById(expenseId, [ - 'paymentAccount', - 'categories.expenseAccount', - ]); - if (!expense) { - throw new ServiceError(ERRORS.EXPENSE_NOT_FOUND); - } - return this.expenseTransfromer.transform(expense); - } - - /** - * Validates the expense has not associated landed cost - * references to the given expense. - * @param {number} tenantId - * @param {number} expenseId - */ - public async validateNoAssociatedLandedCost( - tenantId: number, - expenseId: number - ) { - const { BillLandedCost } = this.tenancy.models(tenantId); - - const associatedLandedCosts = await BillLandedCost.query() - .where('fromTransactionType', 'Expense') - .where('fromTransactionId', expenseId); - - if (associatedLandedCosts.length > 0) { - throw new ServiceError(ERRORS.EXPENSE_HAS_ASSOCIATED_LANDED_COST); - } - } -} diff --git a/server/src/services/Expenses/constants.ts b/server/src/services/Expenses/constants.ts deleted file mode 100644 index 01cc0789a..000000000 --- a/server/src/services/Expenses/constants.ts +++ /dev/null @@ -1,26 +0,0 @@ -export const DEFAULT_VIEW_COLUMNS = []; -export const DEFAULT_VIEWS = [ - { - name: 'Draft', - slug: 'draft', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'draft' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Published', - slug: 'published', - rolesLogicExpression: '1', - roles: [ - { - index: 1, - fieldKey: 'status', - comparator: 'equals', - value: 'published', - }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, -]; diff --git a/server/src/services/FinancialStatements/AgingSummary/APAgingSummaryService.ts b/server/src/services/FinancialStatements/AgingSummary/APAgingSummaryService.ts deleted file mode 100644 index 55565352f..000000000 --- a/server/src/services/FinancialStatements/AgingSummary/APAgingSummaryService.ts +++ /dev/null @@ -1,114 +0,0 @@ -import moment from 'moment'; -import { Inject, Service } from 'typedi'; -import { IAPAgingSummaryQuery, IARAgingSummaryMeta } from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import APAgingSummarySheet from './APAgingSummarySheet'; -import { Tenant } from 'system/models'; - -@Service() -export default class PayableAgingSummaryService { - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - /** - * Default report query. - */ - get defaultQuery(): IAPAgingSummaryQuery { - return { - asDate: moment().format('YYYY-MM-DD'), - agingDaysBefore: 30, - agingPeriods: 3, - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'total', - negativeFormat: 'mines', - }, - vendorsIds: [], - noneZero: false, - }; - } - - /** - * Retrieve the balance sheet meta. - * @param {number} tenantId - - * @returns {IBalanceSheetMeta} - */ - reportMetadata(tenantId: number): IARAgingSummaryMeta { - const settings = this.tenancy.settings(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - organizationName, - baseCurrency, - }; - } - - /** - * Retrieve A/P aging summary report. - * @param {number} tenantId - - * @param {IAPAgingSummaryQuery} query - - */ - async APAgingSummary(tenantId: number, query: IAPAgingSummaryQuery) { - const { vendorRepository, billRepository } = this.tenancy.repositories( - tenantId - ); - - const filter = { - ...this.defaultQuery, - ...query, - }; - this.logger.info('[AR_Aging_Summary] trying to prepairing the report.', { - tenantId, - filter, - }); - // Settings tenant service. - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - // Retrieve all vendors from the storage. - const vendors = - filter.vendorsIds.length > 0 - ? await vendorRepository.findWhereIn('id', filter.vendorsIds) - : await vendorRepository.all(); - - // Retrieve all overdue vendors bills. - const overdueBills = await billRepository.overdueBills(filter.asDate); - - // Retrieve all due vendors bills. - const dueBills = await billRepository.dueBills(filter.asDate); - - // A/P aging summary report instance. - const APAgingSummaryReport = new APAgingSummarySheet( - tenantId, - filter, - vendors, - overdueBills, - dueBills, - tenant.metadata.baseCurrency - ); - // A/P aging summary report data and columns. - const data = APAgingSummaryReport.reportData(); - const columns = APAgingSummaryReport.reportColumns(); - - return { - data, - columns, - query: filter, - meta: this.reportMetadata(tenantId), - }; - } -} diff --git a/server/src/services/FinancialStatements/AgingSummary/APAgingSummarySheet.ts b/server/src/services/FinancialStatements/AgingSummary/APAgingSummarySheet.ts deleted file mode 100644 index da56ac415..000000000 --- a/server/src/services/FinancialStatements/AgingSummary/APAgingSummarySheet.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { groupBy, sum } from 'lodash'; -import AgingSummaryReport from './AgingSummary'; -import { - IAPAgingSummaryQuery, - IAgingPeriod, - IBill, - IVendor, - IAPAgingSummaryData, - IAPAgingSummaryVendor, - IAPAgingSummaryColumns, - IAPAgingSummaryTotal -} from 'interfaces'; -import { Dictionary } from 'tsyringe/dist/typings/types'; - -export default class APAgingSummarySheet extends AgingSummaryReport { - readonly tenantId: number; - readonly query: IAPAgingSummaryQuery; - readonly contacts: IVendor[]; - readonly unpaidBills: IBill[]; - readonly baseCurrency: string; - - readonly overdueInvoicesByContactId: Dictionary; - readonly currentInvoicesByContactId: Dictionary; - - readonly agingPeriods: IAgingPeriod[]; - - /** - * Constructor method. - * @param {number} tenantId - Tenant id. - * @param {IAPAgingSummaryQuery} query - Report query. - * @param {IVendor[]} vendors - Unpaid bills. - * @param {string} baseCurrency - Base currency of the organization. - */ - constructor( - tenantId: number, - query: IAPAgingSummaryQuery, - vendors: IVendor[], - overdueBills: IBill[], - unpaidBills: IBill[], - baseCurrency: string - ) { - super(); - - this.tenantId = tenantId; - this.query = query; - this.numberFormat = this.query.numberFormat; - this.contacts = vendors; - this.baseCurrency = baseCurrency; - - this.overdueInvoicesByContactId = groupBy(overdueBills, 'vendorId'); - this.currentInvoicesByContactId = groupBy(unpaidBills, 'vendorId'); - - // Initializes the aging periods. - this.agingPeriods = this.agingRangePeriods( - this.query.asDate, - this.query.agingDaysBefore, - this.query.agingPeriods - ); - } - - /** - * Retrieve the vendors aging and current total. - * @param {IAPAgingSummaryTotal} vendorsAgingPeriods - * @return {IAPAgingSummaryTotal} - */ - getVendorsTotal(vendorsAgingPeriods): IAPAgingSummaryTotal { - const totalAgingPeriods = this.getTotalAgingPeriods(vendorsAgingPeriods); - const totalCurrent = this.getTotalCurrent(vendorsAgingPeriods); - const totalVendorsTotal = this.getTotalContactsTotals(vendorsAgingPeriods); - - return { - current: this.formatTotalAmount(totalCurrent), - aging: totalAgingPeriods, - total: this.formatTotalAmount(totalVendorsTotal), - }; - } - - /** - * Retrieve the vendor section data. - * @param {IVendor} vendor - * @return {IAPAgingSummaryVendor} - */ - private vendorData(vendor: IVendor): IAPAgingSummaryVendor { - const agingPeriods = this.getContactAgingPeriods(vendor.id); - const currentTotal = this.getContactCurrentTotal(vendor.id); - const agingPeriodsTotal = this.getAgingPeriodsTotal(agingPeriods); - - const amount = sum([agingPeriodsTotal, currentTotal]); - - return { - vendorName: vendor.displayName, - current: this.formatTotalAmount(currentTotal), - aging: agingPeriods, - total: this.formatTotalAmount(amount), - }; - } - - /** - * Retrieve vendors aging periods. - * @return {IAPAgingSummaryVendor[]} - */ - private vendorsWalker(vendors: IVendor[]): IAPAgingSummaryVendor[] { - return vendors - .map((vendor) => this.vendorData(vendor)) - .filter( - (vendor: IAPAgingSummaryVendor) => - !(vendor.total.amount === 0 && this.query.noneZero) - ); - } - - /** - * Retrieve the A/P aging summary report data. - * @return {IAPAgingSummaryData} - */ - public reportData(): IAPAgingSummaryData { - const vendorsAgingPeriods = this.vendorsWalker(this.contacts); - const vendorsTotal = this.getVendorsTotal(vendorsAgingPeriods); - - return { - vendors: vendorsAgingPeriods, - total: vendorsTotal, - }; - } - - /** - * Retrieve the A/P aging summary report columns. - */ - public reportColumns(): IAPAgingSummaryColumns { - return this.agingPeriods; - } -} diff --git a/server/src/services/FinancialStatements/AgingSummary/ARAgingSummaryService.ts b/server/src/services/FinancialStatements/AgingSummary/ARAgingSummaryService.ts deleted file mode 100644 index cd727e3c1..000000000 --- a/server/src/services/FinancialStatements/AgingSummary/ARAgingSummaryService.ts +++ /dev/null @@ -1,116 +0,0 @@ -import moment from 'moment'; -import { Inject, Service } from 'typedi'; -import { IARAgingSummaryQuery, IARAgingSummaryMeta } from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import ARAgingSummarySheet from './ARAgingSummarySheet'; -import { Tenant } from 'system/models'; - -@Service() -export default class ARAgingSummaryService { - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - /** - * Default report query. - */ - get defaultQuery(): IARAgingSummaryQuery { - return { - asDate: moment().format('YYYY-MM-DD'), - agingDaysBefore: 30, - agingPeriods: 3, - numberFormat: { - divideOn1000: false, - negativeFormat: 'mines', - showZero: false, - formatMoney: 'total', - precision: 2, - }, - customersIds: [], - noneZero: false, - }; - } - - /** - * Retrieve the balance sheet meta. - * @param {number} tenantId - - * @returns {IBalanceSheetMeta} - */ - reportMetadata(tenantId: number): IARAgingSummaryMeta { - const settings = this.tenancy.settings(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - organizationName, - baseCurrency, - }; - } - - /** - * Retrieve A/R aging summary report. - * @param {number} tenantId - Tenant id. - * @param {IARAgingSummaryQuery} query - - */ - async ARAgingSummary(tenantId: number, query: IARAgingSummaryQuery) { - const { - customerRepository, - saleInvoiceRepository, - } = this.tenancy.repositories(tenantId); - - const filter = { - ...this.defaultQuery, - ...query, - }; - this.logger.info('[AR_Aging_Summary] try to calculate the report.', { - tenantId, - filter, - }); - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - // Retrieve all customers from the storage. - const customers = - (filter.customersIds.length > 0) - ? await customerRepository.findWhereIn('id', filter.customersIds) - : await customerRepository.all(); - - // Retrieve all overdue sale invoices. - const overdueSaleInvoices = await saleInvoiceRepository.overdueInvoices( - filter.asDate - ); - // Retrieve all due sale invoices. - const currentInvoices = await saleInvoiceRepository.dueInvoices( - filter.asDate - ); - // AR aging summary report instance. - const ARAgingSummaryReport = new ARAgingSummarySheet( - tenantId, - filter, - customers, - overdueSaleInvoices, - currentInvoices, - tenant.metadata.baseCurrency - ); - // AR aging summary report data and columns. - const data = ARAgingSummaryReport.reportData(); - const columns = ARAgingSummaryReport.reportColumns(); - - return { - data, - columns, - query: filter, - meta: this.reportMetadata(tenantId), - }; - } -} diff --git a/server/src/services/FinancialStatements/AgingSummary/ARAgingSummarySheet.ts b/server/src/services/FinancialStatements/AgingSummary/ARAgingSummarySheet.ts deleted file mode 100644 index 3385c76bb..000000000 --- a/server/src/services/FinancialStatements/AgingSummary/ARAgingSummarySheet.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { groupBy, sum } from 'lodash'; -import { - ICustomer, - IARAgingSummaryQuery, - IARAgingSummaryCustomer, - IAgingPeriod, - ISaleInvoice, - IARAgingSummaryData, - IARAgingSummaryColumns, - IARAgingSummaryTotal, -} from 'interfaces'; -import AgingSummaryReport from './AgingSummary'; -import { Dictionary } from 'tsyringe/dist/typings/types'; - -export default class ARAgingSummarySheet extends AgingSummaryReport { - readonly tenantId: number; - readonly query: IARAgingSummaryQuery; - readonly contacts: ICustomer[]; - readonly agingPeriods: IAgingPeriod[]; - readonly baseCurrency: string; - - readonly overdueInvoicesByContactId: Dictionary; - readonly currentInvoicesByContactId: Dictionary; - - /** - * Constructor method. - * @param {number} tenantId - * @param {IARAgingSummaryQuery} query - * @param {ICustomer[]} customers - * @param {IJournalPoster} journal - */ - constructor( - tenantId: number, - query: IARAgingSummaryQuery, - customers: ICustomer[], - overdueSaleInvoices: ISaleInvoice[], - currentSaleInvoices: ISaleInvoice[], - baseCurrency: string - ) { - super(); - - this.tenantId = tenantId; - this.contacts = customers; - this.query = query; - this.baseCurrency = baseCurrency; - this.numberFormat = this.query.numberFormat; - - this.overdueInvoicesByContactId = groupBy( - overdueSaleInvoices, - 'customerId' - ); - this.currentInvoicesByContactId = groupBy( - currentSaleInvoices, - 'customerId' - ); - - // Initializes the aging periods. - this.agingPeriods = this.agingRangePeriods( - this.query.asDate, - this.query.agingDaysBefore, - this.query.agingPeriods - ); - } - - /** - * Mapping aging customer. - * @param {ICustomer} customer - - * @return {IARAgingSummaryCustomer[]} - */ - private customerData(customer: ICustomer): IARAgingSummaryCustomer { - const agingPeriods = this.getContactAgingPeriods(customer.id); - const currentTotal = this.getContactCurrentTotal(customer.id); - const agingPeriodsTotal = this.getAgingPeriodsTotal(agingPeriods); - const amount = sum([agingPeriodsTotal, currentTotal]); - - return { - customerName: customer.displayName, - current: this.formatAmount(currentTotal), - aging: agingPeriods, - total: this.formatTotalAmount(amount), - }; - } - - /** - * Retrieve customers report. - * @param {ICustomer[]} customers - * @return {IARAgingSummaryCustomer[]} - */ - private customersWalker(customers: ICustomer[]): IARAgingSummaryCustomer[] { - return customers - .map((customer) => this.customerData(customer)) - .filter( - (customer: IARAgingSummaryCustomer) => - !(customer.total.amount === 0 && this.query.noneZero) - ); - } - - /** - * Retrieve the customers aging and current total. - * @param {IARAgingSummaryCustomer} customersAgingPeriods - */ - private getCustomersTotal( - customersAgingPeriods: IARAgingSummaryCustomer[] - ): IARAgingSummaryTotal { - const totalAgingPeriods = this.getTotalAgingPeriods(customersAgingPeriods); - const totalCurrent = this.getTotalCurrent(customersAgingPeriods); - const totalCustomersTotal = this.getTotalContactsTotals( - customersAgingPeriods - ); - - return { - current: this.formatTotalAmount(totalCurrent), - aging: totalAgingPeriods, - total: this.formatTotalAmount(totalCustomersTotal), - }; - } - - /** - * Retrieve A/R aging summary report data. - * @return {IARAgingSummaryData} - */ - public reportData(): IARAgingSummaryData { - const customersAgingPeriods = this.customersWalker(this.contacts); - const customersTotal = this.getCustomersTotal(customersAgingPeriods); - - return { - customers: customersAgingPeriods, - total: customersTotal, - }; - } - - /** - * Retrieve AR aging summary report columns. - * @return {IARAgingSummaryColumns} - */ - public reportColumns(): IARAgingSummaryColumns { - return this.agingPeriods; - } -} diff --git a/server/src/services/FinancialStatements/AgingSummary/AgingReport.ts b/server/src/services/FinancialStatements/AgingSummary/AgingReport.ts deleted file mode 100644 index 17bad96c5..000000000 --- a/server/src/services/FinancialStatements/AgingSummary/AgingReport.ts +++ /dev/null @@ -1,54 +0,0 @@ -import moment from 'moment'; -import { - IAgingPeriod, -} from 'interfaces'; -import FinancialSheet from "../FinancialSheet"; - - -export default abstract class AgingReport extends FinancialSheet{ - /** - * Retrieve the aging periods range. - * @param {string} asDay - * @param {number} agingDaysBefore - * @param {number} agingPeriodsFreq - */ - agingRangePeriods( - asDay: Date|string, - agingDaysBefore: number, - agingPeriodsFreq: number - ): IAgingPeriod[] { - const totalAgingDays = agingDaysBefore * agingPeriodsFreq; - const startAging = moment(asDay).startOf('day'); - const endAging = startAging - .clone() - .subtract(totalAgingDays, 'days') - .endOf('day'); - - const agingPeriods: IAgingPeriod[] = []; - const startingAging = startAging.clone(); - - let beforeDays = 1; - let toDays = 0; - - while (startingAging > endAging) { - const currentAging = startingAging.clone(); - startingAging.subtract(agingDaysBefore, 'days').endOf('day'); - toDays += agingDaysBefore; - - agingPeriods.push({ - fromPeriod: moment(currentAging).format('YYYY-MM-DD'), - toPeriod: moment(startingAging).format('YYYY-MM-DD'), - beforeDays: beforeDays === 1 ? 0 : beforeDays, - toDays: toDays, - ...(startingAging.valueOf() === endAging.valueOf() - ? { - toPeriod: null, - toDays: null, - } - : {}), - }); - beforeDays += agingDaysBefore; - } - return agingPeriods; - } -} \ No newline at end of file diff --git a/server/src/services/FinancialStatements/AgingSummary/AgingSummary.ts b/server/src/services/FinancialStatements/AgingSummary/AgingSummary.ts deleted file mode 100644 index cdb6e2b4f..000000000 --- a/server/src/services/FinancialStatements/AgingSummary/AgingSummary.ts +++ /dev/null @@ -1,230 +0,0 @@ -import { defaultTo, sumBy, get } from 'lodash'; -import { - IAgingPeriod, - ISaleInvoice, - IBill, - IAgingPeriodTotal, - IARAgingSummaryCustomer, - IContact, - IARAgingSummaryQuery, - IFormatNumberSettings, - IAgingAmount, - IAgingSummaryContact -} from 'interfaces'; -import AgingReport from './AgingReport'; -import { Dictionary } from 'tsyringe/dist/typings/types'; - -export default abstract class AgingSummaryReport extends AgingReport { - protected readonly contacts: IContact[]; - protected readonly agingPeriods: IAgingPeriod[] = []; - protected readonly baseCurrency: string; - protected readonly query: IARAgingSummaryQuery; - protected readonly overdueInvoicesByContactId: Dictionary< - (ISaleInvoice | IBill)[] - >; - protected readonly currentInvoicesByContactId: Dictionary< - (ISaleInvoice | IBill)[] - >; - - /** - * Setes initial aging periods to the contact. - */ - protected getInitialAgingPeriodsTotal(): IAgingPeriodTotal[] { - return this.agingPeriods.map((agingPeriod) => ({ - ...agingPeriod, - total: this.formatAmount(0), - })); - } - - /** - * Calculates the given contact aging periods. - * @param {number} contactId - Contact id. - * @return {IAgingPeriodTotal[]} - */ - protected getContactAgingPeriods(contactId: number): IAgingPeriodTotal[] { - const unpaidInvoices = this.getUnpaidInvoicesByContactId(contactId); - const initialAgingPeriods = this.getInitialAgingPeriodsTotal(); - - return unpaidInvoices.reduce( - (agingPeriods: IAgingPeriodTotal[], unpaidInvoice) => { - const newAgingPeriods = this.getContactAgingDueAmount( - agingPeriods, - unpaidInvoice.dueAmount, - unpaidInvoice.getOverdueDays(this.query.asDate) - ); - return newAgingPeriods; - }, - initialAgingPeriods - ); - } - - /** - * Sets the contact aging due amount to the table. - * @param {IAgingPeriodTotal} agingPeriods - Aging periods. - * @param {number} dueAmount - Due amount. - * @param {number} overdueDays - Overdue days. - * @return {IAgingPeriodTotal[]} - */ - protected getContactAgingDueAmount( - agingPeriods: IAgingPeriodTotal[], - dueAmount: number, - overdueDays: number - ): IAgingPeriodTotal[] { - const newAgingPeriods = agingPeriods.map((agingPeriod) => { - const isInAgingPeriod = - agingPeriod.beforeDays <= overdueDays && - (agingPeriod.toDays > overdueDays || !agingPeriod.toDays); - - const total: number = isInAgingPeriod - ? agingPeriod.total.amount + dueAmount - : agingPeriod.total.amount; - - return { - ...agingPeriod, - total: this.formatAmount(total), - }; - }); - return newAgingPeriods; - } - - /** - * Retrieve the aging period total object. - * @param {number} amount - * @param {IFormatNumberSettings} settings - Override the format number settings. - * @return {IAgingAmount} - */ - protected formatAmount( - amount: number, - settings: IFormatNumberSettings = {} - ): IAgingAmount { - return { - amount, - formattedAmount: this.formatNumber(amount, settings), - currencyCode: this.baseCurrency, - }; - } - - /** - * Retrieve the aging period total object. - * @param {number} amount - * @param {IFormatNumberSettings} settings - Override the format number settings. - * @return {IAgingPeriodTotal} - */ - protected formatTotalAmount( - amount: number, - settings: IFormatNumberSettings = {} - ): IAgingAmount { - return this.formatAmount(amount, { - money: true, - excerptZero: false, - ...settings, - }); - } - - /** - * Calculates the total of the aging period by the given index. - * @param {number} index - * @return {number} - */ - protected getTotalAgingPeriodByIndex( - contactsAgingPeriods: any, - index: number, - ): number { - return this.contacts.reduce((acc, contact) => { - const totalPeriod = contactsAgingPeriods[index] - ? contactsAgingPeriods[index].total - : 0; - - return acc + totalPeriod; - }, 0); - } - - /** - * Retrieve the due invoices by the given contact id. - * @param {number} contactId - - * @return {(ISaleInvoice | IBill)[]} - */ - protected getUnpaidInvoicesByContactId( - contactId: number - ): (ISaleInvoice | IBill)[] { - return defaultTo(this.overdueInvoicesByContactId[contactId], []); - } - - /** - * Retrieve total aging periods of the report. - * @return {(IAgingPeriodTotal & IAgingPeriod)[]} - */ - protected getTotalAgingPeriods( - contactsAgingPeriods: IARAgingSummaryCustomer[] - ): IAgingPeriodTotal[] { - return this.agingPeriods.map((agingPeriod, index) => { - const total = sumBy( - contactsAgingPeriods, - (summary: IARAgingSummaryCustomer) => { - const aging = summary.aging[index]; - - if (!aging) { - return 0; - } - return aging.total.amount; - } - ); - - return { - ...agingPeriod, - total: this.formatTotalAmount(total), - }; - }); - } - - /** - * Retrieve the current invoices by the given contact id. - * @param {number} contactId - Specific contact id. - * @return {(ISaleInvoice | IBill)[]} - */ - protected getCurrentInvoicesByContactId( - contactId: number - ): (ISaleInvoice | IBill)[] { - return get(this.currentInvoicesByContactId, contactId, []); - } - - /** - * Retrieve the contact total due amount. - * @param {number} contactId - Specific contact id. - * @return {number} - */ - protected getContactCurrentTotal(contactId: number): number { - const currentInvoices = this.getCurrentInvoicesByContactId(contactId); - return sumBy(currentInvoices, (invoice) => invoice.dueAmount); - } - - /** - * Retrieve to total sumation of the given contacts summeries sections. - * @param {IARAgingSummaryCustomer[]} contactsSections - - * @return {number} - */ - protected getTotalCurrent( - contactsSummaries: IAgingSummaryContact[] - ): number { - return sumBy(contactsSummaries, (summary) => summary.current.amount); - } - - /** - * Retrieve the total of the given aging periods. - * @param {IAgingPeriodTotal[]} agingPeriods - * @return {number} - */ - protected getAgingPeriodsTotal(agingPeriods: IAgingPeriodTotal[]): number { - return sumBy(agingPeriods, (period) => period.total.amount); - } - - /** - * Retrieve total of contacts totals. - * @param {IAgingSummaryContact[]} contactsSummaries - */ - protected getTotalContactsTotals( - contactsSummaries: IAgingSummaryContact[] - ): number { - return sumBy(contactsSummaries, (summary) => summary.total.amount); - } -} diff --git a/server/src/services/FinancialStatements/BalanceSheet/BalanceSheet.ts b/server/src/services/FinancialStatements/BalanceSheet/BalanceSheet.ts deleted file mode 100644 index 0ec2b247a..000000000 --- a/server/src/services/FinancialStatements/BalanceSheet/BalanceSheet.ts +++ /dev/null @@ -1,339 +0,0 @@ -import { sumBy, pick } from 'lodash'; -import { - IBalanceSheetQuery, - IBalanceSheetStructureSection, - IBalanceSheetAccountTotal, - IBalanceSheetAccount, - IBalanceSheetSection, - IAccount, - IJournalPoster, - IAccountType, - INumberFormatQuery, -} from 'interfaces'; -import { dateRangeCollection, flatToNestedArray } from 'utils'; -import BalanceSheetStructure from 'data/BalanceSheetStructure'; -import FinancialSheet from '../FinancialSheet'; - -export default class BalanceSheetStatement extends FinancialSheet { - readonly query: IBalanceSheetQuery; - readonly numberFormat: INumberFormatQuery; - readonly tenantId: number; - readonly accounts: IAccount & { type: IAccountType }[]; - readonly journalFinancial: IJournalPoster; - readonly comparatorDateType: string; - readonly dateRangeSet: string[]; - readonly baseCurrency: string; - - /** - * Constructor method. - * @param {number} tenantId - - * @param {IBalanceSheetQuery} query - - * @param {IAccount[]} accounts - - * @param {IJournalFinancial} journalFinancial - - */ - constructor( - tenantId: number, - query: IBalanceSheetQuery, - accounts: IAccount & { type: IAccountType }[], - journalFinancial: IJournalPoster, - baseCurrency: string, - i18n - ) { - super(); - - this.tenantId = tenantId; - this.query = query; - this.numberFormat = this.query.numberFormat; - this.accounts = accounts; - this.journalFinancial = journalFinancial; - this.baseCurrency = baseCurrency; - this.comparatorDateType = - query.displayColumnsType === 'total' ? 'day' : query.displayColumnsBy; - - this.i18n = i18n; - - this.initDateRangeCollection(); - } - - /** - * Initialize date range set. - */ - initDateRangeCollection() { - if (this.query.displayColumnsType === 'date_periods') { - this.dateRangeSet = dateRangeCollection( - this.query.fromDate, - this.query.toDate, - this.comparatorDateType - ); - } - } - - /** - * Calculates accounts total deeply of the given accounts graph. - * @param {IBalanceSheetSection[]} sections - - * @return {IBalanceSheetAccountTotal} - */ - private getSectionTotal( - sections: IBalanceSheetSection[] - ): IBalanceSheetAccountTotal { - const amount = sumBy(sections, 'total.amount'); - const formattedAmount = this.formatTotalNumber(amount); - const currencyCode = this.baseCurrency; - - return { amount, formattedAmount, currencyCode }; - } - - /** - * Retrieve accounts total periods. - * @param {IBalanceSheetAccount[]} sections - - * @return {IBalanceSheetAccountTotal[]} - */ - private getSectionTotalPeriods( - sections: Array - ): IBalanceSheetAccountTotal[] { - return this.dateRangeSet.map((date, index) => { - const amount = sumBy(sections, `totalPeriods[${index}].amount`); - - const formattedAmount = this.formatTotalNumber(amount); - const currencyCode = this.baseCurrency; - - return { date, amount, formattedAmount, currencyCode }; - }); - } - - /** - * Retrieve accounts total periods. - * @param {Array} accounts - - * @return {IBalanceSheetAccountTotal[]} - */ - private getAccountsTotalPeriods( - accounts: Array - ): IBalanceSheetAccountTotal[] { - return this.dateRangeSet.map((date, index) => { - const amount = sumBy(accounts, `totalPeriods[${index}].amount`); - const formattedAmount = this.formatNumber(amount); - const currencyCode = this.baseCurrency; - - return { date, amount, formattedAmount, currencyCode }; - }); - } - - /** - * Gets the date range set from start to end date. - * @param {IAccount} account - * @return {IBalanceSheetAccountTotal[]} - */ - private getAccountTotalPeriods( - account: IAccount - ): IBalanceSheetAccountTotal[] { - return this.dateRangeSet.map((date) => { - const amount = this.journalFinancial.getAccountBalance( - account.id, - date, - this.comparatorDateType - ); - const formattedAmount = this.formatNumber(amount); - const currencyCode = this.baseCurrency; - - return { amount, formattedAmount, currencyCode, date }; - }); - } - - /** - * Retrieve account total and total periods with account meta. - * @param {IAccount} account - - * @param {IBalanceSheetQuery} query - - * @return {IBalanceSheetAccount} - */ - private balanceSheetAccountMapper(account: IAccount): IBalanceSheetAccount { - // Calculates the closing balance of the given account in the specific date point. - const amount = this.journalFinancial.getAccountBalance( - account.id, - this.query.toDate - ); - const formattedAmount = this.formatNumber(amount); - - // Retrieve all entries that associated to the given account. - const entries = this.journalFinancial.getAccountEntries(account.id); - - return { - ...pick(account, ['id', 'index', 'name', 'code', 'parentAccountId']), - type: 'account', - hasTransactions: entries.length > 0, - // Total date periods. - ...(this.query.displayColumnsType === 'date_periods' && { - totalPeriods: this.getAccountTotalPeriods(account), - }), - total: { - amount, - formattedAmount, - currencyCode: this.baseCurrency, - }, - }; - } - - /** - * Strcuture accounts related mapper. - * @param {string[]} sectionAccountsTypes - - * @param {IAccount[]} accounts - - * @param {IBalanceSheetQuery} query - - */ - private structureRelatedAccountsMapper( - sectionAccountsTypes: string[], - accounts: IAccount & { type: IAccountType }[] - ): { - children: IBalanceSheetAccount[]; - total: IBalanceSheetAccountTotal; - } { - const filteredAccounts = accounts - // Filter accounts that associated to the section accounts types. - .filter( - (account) => sectionAccountsTypes.indexOf(account.accountType) !== -1 - ) - .map((account) => this.balanceSheetAccountMapper(account)) - // Filter accounts that have no transaction when `noneTransactions` is on. - .filter( - (section: IBalanceSheetAccount) => - !(!section.hasTransactions && this.query.noneTransactions) - ) - // Filter accounts that have zero total amount when `noneZero` is on. - .filter( - (section: IBalanceSheetAccount) => - !(section.total.amount === 0 && this.query.noneZero) - ); - - const children = flatToNestedArray(filteredAccounts, { - id: 'id', - parentId: 'parentAccountId', - }); - // Gets total amount of the given accounts. - const totalAmount = sumBy(children, 'total.amount'); - - return { - children, - total: { - amount: totalAmount, - formattedAmount: this.formatTotalNumber(totalAmount), - currencyCode: this.baseCurrency, - }, - ...(this.query.displayColumnsType === 'date_periods' - ? { - totalPeriods: this.getAccountsTotalPeriods(filteredAccounts), - } - : {}), - }; - } - - /** - * Mappes the structure sections. - * @param {IBalanceSheetStructureSection} structure - * @param {IAccount} accounts - */ - private structureSectionMapper( - structure: IBalanceSheetStructureSection, - accounts: IAccount[] - ) { - const children = this.balanceSheetStructureWalker( - structure.children, - accounts - ); - return { - children, - total: this.getSectionTotal(children), - ...(this.query.displayColumnsType === 'date_periods' - ? { - totalPeriods: this.getSectionTotalPeriods(children), - } - : {}), - }; - } - - /** - * Balance sheet structure mapper. - * @param {IBalanceSheetStructureSection} structure - - * @return {IBalanceSheetSection} - */ - private balanceSheetStructureMapper( - structure: IBalanceSheetStructureSection, - accounts: IAccount & { type: IAccountType }[] - ): IBalanceSheetSection { - const result = { - name: this.i18n.__(structure.name), - sectionType: structure.sectionType, - type: structure.type, - ...(structure.type === 'accounts_section' - ? this.structureRelatedAccountsMapper(structure.accountsTypes, accounts) - : this.structureSectionMapper(structure, accounts)), - }; - return result; - } - - /** - * Balance sheet structure walker. - * @param {IBalanceSheetStructureSection[]} reportStructure - - * @return {IBalanceSheetSection} - */ - private balanceSheetStructureWalker( - reportStructure: IBalanceSheetStructureSection[], - balanceSheetAccounts: IAccount & { type: IAccountType }[] - ): IBalanceSheetSection[] { - return ( - reportStructure - .map((structure: IBalanceSheetStructureSection) => { - const sheetSection = this.balanceSheetStructureMapper( - structure, - balanceSheetAccounts - ); - return [sheetSection, structure]; - }) - // Filter the structure sections that have no children and not always show. - .filter( - ([sheetSection, structure]: [ - IBalanceSheetSection, - IBalanceSheetStructureSection - ]) => { - return sheetSection.children.length > 0 || structure.alwaysShow; - } - ) - // Mappes the balance sheet scetions only - .map(([sheetSection]: [IBalanceSheetSection]) => { - return sheetSection; - }) - ); - } - - /** - * Retrieve date range columns of the given query. - * @param {IBalanceSheetQuery} query - * @return {string[]} - */ - private dateRangeColumns(): string[] { - return this.dateRangeSet; - } - - /** - * Retrieve balance sheet columns in different display columns types. - * @return {string[]} - */ - public reportColumns(): string[] { - // Date range collection. - return this.query.displayColumnsType === 'date_periods' - ? this.dateRangeColumns() - : ['total']; - } - - /** - * Retrieve balance sheet statement data. - * @return {IBalanceSheetSection[]} - */ - public reportData(): IBalanceSheetSection[] { - // Returns nothing if there is no entries in the journal between the given period. - if (this.journalFinancial.entries.length === 0) { - return []; - } - return this.balanceSheetStructureWalker( - BalanceSheetStructure, - this.accounts - ); - } -} diff --git a/server/src/services/FinancialStatements/BalanceSheet/BalanceSheetService.ts b/server/src/services/FinancialStatements/BalanceSheet/BalanceSheetService.ts deleted file mode 100644 index 13a9d564e..000000000 --- a/server/src/services/FinancialStatements/BalanceSheet/BalanceSheetService.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { Service, Inject } from 'typedi'; -import moment from 'moment'; -import { - IBalanceSheetStatementService, - IBalanceSheetQuery, - IBalanceSheetStatement, - IBalanceSheetMeta, -} from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import Journal from 'services/Accounting/JournalPoster'; -import BalanceSheetStatement from './BalanceSheet'; -import InventoryService from 'services/Inventory/Inventory'; -import { parseBoolean } from 'utils'; -import { Tenant } from 'system/models'; - -@Service() -export default class BalanceSheetStatementService - implements IBalanceSheetStatementService -{ - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - @Inject() - inventoryService: InventoryService; - - /** - * Defaults balance sheet filter query. - * @return {IBalanceSheetQuery} - */ - get defaultQuery(): IBalanceSheetQuery { - return { - displayColumnsType: 'total', - displayColumnsBy: 'day', - fromDate: moment().startOf('year').format('YYYY-MM-DD'), - toDate: moment().endOf('year').format('YYYY-MM-DD'), - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'total', - negativeFormat: 'mines', - }, - noneZero: false, - noneTransactions: false, - basis: 'cash', - accountIds: [], - }; - } - - /** - * Retrieve the balance sheet meta. - * @param {number} tenantId - - * @returns {IBalanceSheetMeta} - */ - private reportMetadata(tenantId: number): IBalanceSheetMeta { - const settings = this.tenancy.settings(tenantId); - - const isCostComputeRunning = - this.inventoryService.isItemsCostComputeRunning(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - isCostComputeRunning: parseBoolean(isCostComputeRunning, false), - organizationName, - baseCurrency, - }; - } - - /** - * Retrieve balance sheet statement. - * ------------- - * @param {number} tenantId - * @param {IBalanceSheetQuery} query - * - * @return {IBalanceSheetStatement} - */ - public async balanceSheet( - tenantId: number, - query: IBalanceSheetQuery - ): Promise { - const { accountRepository, transactionsRepository } = - this.tenancy.repositories(tenantId); - - const i18n = this.tenancy.i18n(tenantId); - - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const filter = { - ...this.defaultQuery, - ...query, - }; - this.logger.info('[balance_sheet] trying to calculate the report.', { - filter, - tenantId, - }); - // Retrieve all accounts on the storage. - const accounts = await accountRepository.all(); - const accountsGraph = await accountRepository.getDependencyGraph(); - - // Retrieve all journal transactions based on the given query. - const transactions = await transactionsRepository.journal({ - fromDate: query.fromDate, - toDate: query.toDate, - }); - // Transform transactions to journal collection. - const transactionsJournal = Journal.fromTransactions( - transactions, - tenantId, - accountsGraph - ); - // Balance sheet report instance. - const balanceSheetInstanace = new BalanceSheetStatement( - tenantId, - filter, - accounts, - transactionsJournal, - tenant.metadata.baseCurrency, - i18n - ); - // Balance sheet data. - const balanceSheetData = balanceSheetInstanace.reportData(); - - // Retrieve balance sheet columns. - const balanceSheetColumns = balanceSheetInstanace.reportColumns(); - - return { - data: balanceSheetData, - columns: balanceSheetColumns, - query: filter, - meta: this.reportMetadata(tenantId), - }; - } -} diff --git a/server/src/services/FinancialStatements/CashFlow/CashFlow.ts b/server/src/services/FinancialStatements/CashFlow/CashFlow.ts deleted file mode 100644 index dd34d0c04..000000000 --- a/server/src/services/FinancialStatements/CashFlow/CashFlow.ts +++ /dev/null @@ -1,764 +0,0 @@ -import * as R from 'ramda'; -import { defaultTo, map, set, sumBy, isEmpty, mapValues, get } from 'lodash'; -import * as mathjs from 'mathjs'; -import moment from 'moment'; -import { - IAccount, - ILedger, - INumberFormatQuery, - ICashFlowSchemaSection, - ICashFlowStatementQuery, - ICashFlowStatementNetIncomeSection, - ICashFlowStatementAccountSection, - ICashFlowSchemaSectionAccounts, - ICashFlowStatementAccountMeta, - ICashFlowSchemaAccountRelation, - ICashFlowStatementSectionType, - ICashFlowStatementData, - ICashFlowDatePeriod, - ICashFlowStatement, - ICashFlowSchemaTotalSection, - ICashFlowStatementTotalSection, - ICashFlowStatementSection, -} from 'interfaces'; -import CASH_FLOW_SCHEMA from './schema'; -import FinancialSheet from '../FinancialSheet'; -import { - transformToMapBy, - accumSum, - dateRangeFromToCollection, - applyMixins, -} from 'utils'; -import { - reduceDeep, - iteratee, - mapValuesDeep, - filterDeep, -} from 'utils/deepdash'; -import { ACCOUNT_ROOT_TYPE } from 'data/AccountTypes'; -import CashFlowDatePeriods from './CashFlowDatePeriods'; -import I18nService from 'services/I18n/I18nService'; - -const MAP_CONFIG = { childrenPath: 'children', pathFormat: 'array' }; - -const DISPLAY_COLUMNS_BY = { - DATE_PERIODS: 'date_periods', - TOTAL: 'total', -}; - -class CashFlowStatement extends FinancialSheet implements ICashFlowStatement { - readonly baseCurrency: string; - readonly i18n: I18nService; - readonly sectionsByIds = {}; - readonly cashFlowSchemaMap: Map; - readonly cashFlowSchemaSeq: Array; - readonly accountByTypeMap: Map; - readonly accountsByRootType: Map; - readonly ledger: ILedger; - readonly cashLedger: ILedger; - readonly netIncomeLedger: ILedger; - readonly schemaSectionParserIteratee: any; - readonly query: ICashFlowStatementQuery; - readonly numberFormat: INumberFormatQuery; - readonly comparatorDateType: string; - readonly dateRangeSet: { fromDate: Date; toDate: Date }[]; - - /** - * Constructor method. - * @constructor - */ - constructor( - accounts: IAccount[], - ledger: ILedger, - cashLedger: ILedger, - netIncomeLedger: ILedger, - query: ICashFlowStatementQuery, - baseCurrency: string, - i18n - ) { - super(); - - this.baseCurrency = baseCurrency; - this.i18n = i18n; - this.ledger = ledger; - this.cashLedger = cashLedger; - this.netIncomeLedger = netIncomeLedger; - this.accountByTypeMap = transformToMapBy(accounts, 'accountType'); - this.accountsByRootType = transformToMapBy(accounts, 'accountRootType'); - this.schemaSectionParserIteratee = iteratee(this.schemaSectionParser); - this.query = query; - this.numberFormat = this.query.numberFormat; - this.dateRangeSet = []; - - this.comparatorDateType = query.displayColumnsType === 'total' - ? 'day' : query.displayColumnsBy; - - this.initDateRangeCollection(); - } - - // -------------------------------------------- - // # GENERAL UTILITIES - // -------------------------------------------- - /** - * Retrieve the expense accounts ids. - * @return {number[]} - */ - private getAccountsIdsByType(accountType: string): number[] { - const expenseAccounts = this.accountsByRootType.get(accountType); - const expenseAccountsIds = map(expenseAccounts, 'id'); - - return expenseAccountsIds; - } - - /** - * Detarmines the given display columns by type. - * @param {string} displayColumnsBy - * @returns {boolean} - */ - private isDisplayColumnsBy(displayColumnsBy: string): boolean { - return this.query.displayColumnsType === displayColumnsBy; - } - - /** - * Adjustments the given amount. - * @param {string} direction - * @param {number} amount - - * @return {number} - */ - private amountAdjustment(direction: 'mines' | 'plus', amount): number { - return R.when( - R.always(R.equals(direction, 'mines')), - R.multiply(-1) - )(amount); - } - - // -------------------------------------------- - // # NET INCOME NODE - // -------------------------------------------- - - /** - * Retrieve the accounts net income. - * @returns {number} - Amount of net income. - */ - private getAccountsNetIncome(): number { - // Mapping income/expense accounts ids. - const incomeAccountsIds = this.getAccountsIdsByType( - ACCOUNT_ROOT_TYPE.INCOME - ); - const expenseAccountsIds = this.getAccountsIdsByType( - ACCOUNT_ROOT_TYPE.EXPENSE - ); - - // Income closing balance. - const incomeClosingBalance = accumSum(incomeAccountsIds, (id) => - this.netIncomeLedger.whereAccountId(id).getClosingBalance() - ); - // Expense closing balance. - const expenseClosingBalance = accumSum(expenseAccountsIds, (id) => - this.netIncomeLedger.whereAccountId(id).getClosingBalance() - ); - // Net income = income - expenses. - const netIncome = incomeClosingBalance - expenseClosingBalance; - - return netIncome; - } - - /** - * Parses the net income section from the given section schema. - * @param {ICashFlowSchemaSection} sectionSchema - Report section schema. - * @returns {ICashFlowStatementNetIncomeSection} - */ - private netIncomeSectionMapper( - sectionSchema: ICashFlowSchemaSection - ): ICashFlowStatementNetIncomeSection { - const netIncome = this.getAccountsNetIncome(); - - return R.compose( - R.when( - R.always(this.isDisplayColumnsBy(DISPLAY_COLUMNS_BY.DATE_PERIODS)), - this.assocPeriodsToNetIncomeNode.bind(this) - ) - )({ - id: sectionSchema.id, - label: this.i18n.__(sectionSchema.label), - total: this.getAmountMeta(netIncome), - sectionType: ICashFlowStatementSectionType.NET_INCOME, - }); - } - - // -------------------------------------------- - // # ACCOUNT NODE - // -------------------------------------------- - - /** - * Retrieve account meta. - * @param {ICashFlowSchemaAccountRelation} relation - Account relation. - * @param {IAccount} account - - * @returns {ICashFlowStatementAccountMeta} - */ - private accountMetaMapper( - relation: ICashFlowSchemaAccountRelation, - account: IAccount - ): ICashFlowStatementAccountMeta { - // Retrieve the closing balance of the given account. - const getClosingBalance = (id) => - this.ledger.whereAccountId(id).getClosingBalance(); - - const closingBalance = R.compose( - // Multiplies the amount by -1 in case the relation in mines. - R.curry(this.amountAdjustment)(relation.direction) - )(getClosingBalance(account.id)); - - return R.compose( - R.when( - R.always(this.isDisplayColumnsBy(DISPLAY_COLUMNS_BY.DATE_PERIODS)), - this.assocPeriodsToAccountNode.bind(this) - ) - )({ - id: account.id, - code: account.code, - label: account.name, - accountType: account.accountType, - adjusmentType: relation.direction, - total: this.getAmountMeta(closingBalance), - sectionType: ICashFlowStatementSectionType.ACCOUNT, - }); - } - - /** - * Retrieve accounts sections by the given schema relation. - * @param {ICashFlowSchemaAccountRelation} relation - * @returns {ICashFlowStatementAccountMeta[]} - */ - private getAccountsBySchemaRelation( - relation: ICashFlowSchemaAccountRelation - ): ICashFlowStatementAccountMeta[] { - const accounts = defaultTo(this.accountByTypeMap.get(relation.type), []); - const accountMetaMapper = R.curry(this.accountMetaMapper.bind(this))( - relation - ); - return R.map(accountMetaMapper)(accounts); - } - - /** - * Retrieve the accounts meta. - * @param {string[]} types - * @returns {ICashFlowStatementAccountMeta[]} - */ - private getAccountsBySchemaRelations( - relations: ICashFlowSchemaAccountRelation[] - ): ICashFlowStatementAccountMeta[] { - return R.pipe( - R.append(R.map(this.getAccountsBySchemaRelation.bind(this))(relations)), - R.flatten - )([]); - } - - /** - * Calculates the accounts total - * @param {ICashFlowStatementAccountMeta[]} accounts - * @returns {number} - */ - private getAccountsMetaTotal( - accounts: ICashFlowStatementAccountMeta[] - ): number { - return sumBy(accounts, 'total.amount'); - } - - /** - * Retrieve the accounts section from the section schema. - * @param {ICashFlowSchemaSectionAccounts} sectionSchema - * @returns {ICashFlowStatementAccountSection} - */ - private accountsSectionParser( - sectionSchema: ICashFlowSchemaSectionAccounts - ): ICashFlowStatementAccountSection { - const { accountsRelations } = sectionSchema; - - const accounts = this.getAccountsBySchemaRelations(accountsRelations); - const total = this.getAccountsMetaTotal(accounts); - - return R.compose( - R.when( - R.always(this.isDisplayColumnsBy(DISPLAY_COLUMNS_BY.DATE_PERIODS)), - this.assocPeriodsToAggregateNode.bind(this) - ) - )({ - sectionType: ICashFlowStatementSectionType.ACCOUNTS, - id: sectionSchema.id, - label: this.i18n.__(sectionSchema.label), - footerLabel: this.i18n.__(sectionSchema.footerLabel), - children: accounts, - total: this.getTotalAmountMeta(total), - }); - } - - /** - * Detarmines the schema section type. - * @param {string} type - * @param {ICashFlowSchemaSection} section - * @returns {boolean} - */ - private isSchemaSectionType( - type: string, - section: ICashFlowSchemaSection - ): boolean { - return type === section.sectionType; - } - - // -------------------------------------------- - // # AGGREGATE NODE - // -------------------------------------------- - - /** - * - * @param {ICashFlowSchemaSection} schemaSection - * @returns - */ - private regularSectionParser( - schemaSection: ICashFlowSchemaSection - ): ICashFlowStatementSection { - return { - id: schemaSection.id, - label: this.i18n.__(schemaSection.label), - footerLabel: this.i18n.__(schemaSection.footerLabel), - sectionType: ICashFlowStatementSectionType.REGULAR, - }; - } - - private transformSectionsToMap(sections: ICashFlowSchemaSection[]) { - return reduceDeep( - sections, - (acc, section) => { - if (section.id) { - acc[`${section.id}`] = section; - } - return acc; - }, - {}, - MAP_CONFIG - ); - } - - // -------------------------------------------- - // # TOTAL EQUATION NODE - // -------------------------------------------- - - private sectionsMapToTotal(mappedSections: { [key: number]: any }) { - return mapValues(mappedSections, (node) => get(node, 'total.amount') || 0); - } - - /** - * Evauluate equaation string with the given scope table. - * @param {string} equation - - * @param {{ [key: string]: number }} scope - - * @return {number} - */ - private evaluateEquation( - equation: string, - scope: { [key: string | number]: number } - ): number { - return mathjs.evaluate(equation, scope); - } - - /** - * Retrieve the total section from the eqauation parser. - * @param {ICashFlowSchemaTotalSection} sectionSchema - * @param {ICashFlowSchemaSection[]} accumlatedSections - */ - private totalEquationSectionParser( - accumlatedSections: ICashFlowSchemaSection[], - sectionSchema: ICashFlowSchemaTotalSection - ): ICashFlowStatementTotalSection { - const mappedSectionsById = this.transformSectionsToMap(accumlatedSections); - const nodesTotalById = this.sectionsMapToTotal(mappedSectionsById); - - const total = this.evaluateEquation(sectionSchema.equation, nodesTotalById); - - return R.compose( - R.when( - R.always(this.isDisplayColumnsBy(DISPLAY_COLUMNS_BY.DATE_PERIODS)), - R.curry(this.assocTotalEquationDatePeriods.bind(this))( - mappedSectionsById, - sectionSchema.equation - ) - ) - )({ - sectionType: ICashFlowStatementSectionType.TOTAL, - id: sectionSchema.id, - label: this.i18n.__(sectionSchema.label), - total: this.getTotalAmountMeta(total), - }); - } - - /** - * Retrieve the beginning cash from date. - * @param {Date|string} fromDate - - * @return {Date} - */ - private beginningCashFrom(fromDate: string | Date): Date { - return moment(fromDate).subtract(1, 'days').toDate(); - } - - /** - * Retrieve account meta. - * @param {ICashFlowSchemaAccountRelation} relation - * @param {IAccount} account - * @returns {ICashFlowStatementAccountMeta} - */ - private cashAccountMetaMapper( - relation: ICashFlowSchemaAccountRelation, - account: IAccount - ): ICashFlowStatementAccountMeta { - const cashToDate = this.beginningCashFrom(this.query.fromDate); - - const closingBalance = this.cashLedger - .whereToDate(cashToDate) - .whereAccountId(account.id) - .getClosingBalance(); - - return R.compose( - R.when( - R.always(this.isDisplayColumnsBy(DISPLAY_COLUMNS_BY.DATE_PERIODS)), - this.assocCashAtBeginningAccountDatePeriods.bind(this) - ) - )({ - id: account.id, - code: account.code, - label: account.name, - accountType: account.accountType, - adjusmentType: relation.direction, - total: this.getAmountMeta(closingBalance), - sectionType: ICashFlowStatementSectionType.ACCOUNT, - }); - } - - /** - * Retrieve accounts sections by the given schema relation. - * @param {ICashFlowSchemaAccountRelation} relation - * @returns {ICashFlowStatementAccountMeta[]} - */ - private getCashAccountsBySchemaRelation( - relation: ICashFlowSchemaAccountRelation - ): ICashFlowStatementAccountMeta[] { - const accounts = this.accountByTypeMap.get(relation.type) || []; - const accountMetaMapper = R.curry(this.cashAccountMetaMapper.bind(this))( - relation - ); - return accounts.map(accountMetaMapper); - } - - /** - * Retrieve the accounts meta. - * @param {string[]} types - * @returns {ICashFlowStatementAccountMeta[]} - */ - private getCashAccountsBySchemaRelations( - relations: ICashFlowSchemaAccountRelation[] - ): ICashFlowStatementAccountMeta[] { - return R.concat( - ...R.map(this.getCashAccountsBySchemaRelation.bind(this))(relations) - ); - } - - /** - * Parses the cash at beginning section. - * @param {ICashFlowSchemaTotalSection} sectionSchema - - * @return {} - */ - private cashAtBeginningSectionParser(sectionSchema) { - const { accountsRelations } = sectionSchema; - - const children = this.getCashAccountsBySchemaRelations(accountsRelations); - const total = this.getAccountsMetaTotal(children); - - return R.compose( - R.when( - R.always(this.isDisplayColumnsBy(DISPLAY_COLUMNS_BY.DATE_PERIODS)), - this.assocCashAtBeginningDatePeriods.bind(this) - ) - )({ - sectionType: ICashFlowStatementSectionType.CASH_AT_BEGINNING, - id: sectionSchema.id, - label: this.i18n.__(sectionSchema.label), - children, - total: this.getTotalAmountMeta(total), - }); - } - - /** - * Parses the schema section. - * @param {ICashFlowSchemaSection} section - * @returns {ICashFlowSchemaSection} - */ - private schemaSectionParser( - section: ICashFlowSchemaSection, - key: number, - parentValue: ICashFlowSchemaSection[], - context, - accumlatedSections: ICashFlowSchemaSection[] - ): ICashFlowSchemaSection { - const isSchemaSectionType = R.curry(this.isSchemaSectionType); - - return R.compose( - // Accounts node. - R.when( - isSchemaSectionType(ICashFlowStatementSectionType.ACCOUNTS), - this.accountsSectionParser.bind(this) - ), - // Net income node. - R.when( - isSchemaSectionType(ICashFlowStatementSectionType.NET_INCOME), - this.netIncomeSectionMapper.bind(this) - ), - // Cash at beginning node. - R.when( - isSchemaSectionType(ICashFlowStatementSectionType.CASH_AT_BEGINNING), - R.curry(this.cashAtBeginningSectionParser.bind(this)) - ), - // Aggregate node. (that has no section type). - R.when( - isSchemaSectionType(ICashFlowStatementSectionType.AGGREGATE), - this.regularSectionParser.bind(this) - ) - )(section); - } - - /** - * Parses the schema section. - * @param {ICashFlowSchemaSection} section - * @returns {ICashFlowSchemaSection} - */ - private schemaSectionTotalParser( - section: ICashFlowSchemaSection | ICashFlowStatementSection, - key: number, - parentValue: ICashFlowSchemaSection[], - context, - accumlatedSections: ICashFlowSchemaSection | ICashFlowStatementSection[] - ): ICashFlowSchemaSection { - const isSchemaSectionType = R.curry(this.isSchemaSectionType); - - return R.compose( - // Total equation section. - R.when( - isSchemaSectionType(ICashFlowStatementSectionType.TOTAL), - R.curry(this.totalEquationSectionParser.bind(this))(accumlatedSections) - ) - )(section); - } - - /** - * - * @param acc - * @param value - * @param key - * @param parentValue - * @param context - * @returns - */ - private schemaSectionsReducer(acc, value, key, parentValue, context) { - set( - acc, - context.path, - this.schemaSectionParserIteratee(value, key, parentValue, context, acc) - ); - return acc; - } - - /** - * Schema sections parser. - * @param {ICashFlowSchemaSection[]}schema - * @returns - */ - private schemaSectionsParser(schema: ICashFlowSchemaSection[]) { - return reduceDeep( - schema, - this.schemaSectionsReducer.bind(this), - [], - MAP_CONFIG - ); - } - - /** - * Writes the `total` property to the aggregate node. - * @return {ICashFlowStatementSection} - */ - private assocRegularSectionTotal(section: ICashFlowStatementSection) { - const total = this.getAccountsMetaTotal(section.children); - return R.assoc('total', this.getTotalAmountMeta(total), section); - } - - /** - * Parses the given node on stage 2. - * @param {ICashFlowStatementSection} node - * @return {ICashFlowStatementSection} - */ - private sectionMapperAfterParsing(section: ICashFlowStatementSection) { - const isSchemaSectionType = R.curry(this.isSchemaSectionType); - - return R.compose( - R.when( - isSchemaSectionType(ICashFlowStatementSectionType.REGULAR), - this.assocRegularSectionTotal.bind(this) - ), - R.when( - isSchemaSectionType(ICashFlowStatementSectionType.REGULAR), - R.when( - R.always(this.isDisplayColumnsBy(DISPLAY_COLUMNS_BY.DATE_PERIODS)), - this.assocPeriodsToAggregateNode.bind(this) - ) - ) - )(section); - } - - private regularSectionsTotal( - sections: ICashFlowSchemaSection[] - ): ICashFlowSchemaSection[] { - return mapValuesDeep( - sections, - this.sectionMapperAfterParsing.bind(this), - MAP_CONFIG - ); - } - - private totalSectionsParser( - sections: ICashFlowSchemaSection | ICashFlowStatementSection[] - ) { - return reduceDeep( - sections, - (acc, value, key, parentValue, context) => { - set( - acc, - context.path, - this.schemaSectionTotalParser(value, key, parentValue, context, acc) - ); - return acc; - }, - [], - MAP_CONFIG - ); - } - - // -------------------------------------------- - // REPORT FILTERING - // -------------------------------------------- - - /** - * Detarmines the given section has children and not empty. - * @param {ICashFlowStatementSection} section - * @returns {boolean} - */ - private isSectionHasChildren(section: ICashFlowStatementSection): boolean { - return !isEmpty(section.children); - } - - /** - * Detarmines whether the section has no zero amount. - * @param {ICashFlowStatementSection} section - * @returns {boolean} - */ - private isSectionNoneZero(section: ICashFlowStatementSection): boolean { - return section.total.amount !== 0; - } - - /** - * Detarmines whether the parent accounts sections has children. - * @param {ICashFlowStatementSection} section - * @returns {boolean} - */ - private isAccountsSectionHasChildren( - section: ICashFlowStatementSection[] - ): boolean { - const isSchemaSectionType = R.curry(this.isSchemaSectionType); - - return R.ifElse( - isSchemaSectionType(ICashFlowStatementSectionType.ACCOUNTS), - this.isSectionHasChildren.bind(this), - R.always(true) - )(section); - } - - /** - * Detarmines the account section has no zero otherwise returns true. - * @param {ICashFlowStatementSection} section - * @returns {boolean} - */ - private isAccountLeafNoneZero(section: ICashFlowStatementSection[]): boolean { - const isSchemaSectionType = R.curry(this.isSchemaSectionType); - - return R.ifElse( - isSchemaSectionType(ICashFlowStatementSectionType.ACCOUNT), - this.isSectionNoneZero.bind(this), - R.always(true) - )(section); - } - - /** - * Deep filters the non-zero accounts leafs of the report sections. - * @param {ICashFlowStatementSection[]} sections - * @returns {ICashFlowStatementSection[]} - */ - private filterNoneZeroAccountsLeafs(sections: ICashFlowStatementSection[]) { - return filterDeep( - sections, - this.isAccountLeafNoneZero.bind(this), - MAP_CONFIG - ) || []; - } - - /** - * Deep filter the non-children sections of the report sections. - * @param {ICashFlowStatementSection[]} sections - * @returns {ICashFlowStatementSection[]} - */ - private filterNoneChildrenSections(sections: ICashFlowStatementSection[]) { - return filterDeep( - sections, - this.isAccountsSectionHasChildren.bind(this), - MAP_CONFIG - ) || []; - } - - /** - * Filters the report data. - * @param {ICashFlowStatementSection[]} sections - * @returns {ICashFlowStatementSection[]} - */ - private filterReportData(sections: ICashFlowStatementSection[]) { - return R.compose( - this.filterNoneChildrenSections.bind(this), - this.filterNoneZeroAccountsLeafs.bind(this) - )(sections); - } - - /** - * Schema parser. - * @param {ICashFlowSchemaSection[]} schema - * @returns {ICashFlowSchemaSection[]} - */ - private schemaParser( - schema: ICashFlowSchemaSection[] - ): ICashFlowSchemaSection[] { - return R.compose( - R.when( - R.always(!this.query.noneTransactions && !this.query.noneZero), - this.filterReportData.bind(this) - ), - this.totalSectionsParser.bind(this), - this.regularSectionsTotal.bind(this), - this.schemaSectionsParser.bind(this) - )(schema); - } - - /** - * Retrieve the cashflow statement data. - * @return {ICashFlowStatementData} - */ - public reportData(): ICashFlowStatementData { - return this.schemaParser(R.clone(CASH_FLOW_SCHEMA)); - } -} - -applyMixins(CashFlowStatement, [CashFlowDatePeriods]); - -export default CashFlowStatement; diff --git a/server/src/services/FinancialStatements/CashFlow/CashFlowDatePeriods.ts b/server/src/services/FinancialStatements/CashFlow/CashFlowDatePeriods.ts deleted file mode 100644 index 75465b74b..000000000 --- a/server/src/services/FinancialStatements/CashFlow/CashFlowDatePeriods.ts +++ /dev/null @@ -1,410 +0,0 @@ -import * as R from 'ramda'; -import { sumBy, mapValues, get } from 'lodash'; -import { ACCOUNT_ROOT_TYPE } from 'data/AccountTypes'; -import { accumSum, dateRangeFromToCollection } from 'utils'; -import { - ICashFlowDatePeriod, - ICashFlowStatementNetIncomeSection, - ICashFlowStatementAccountSection, - ICashFlowStatementSection, - ICashFlowSchemaTotalSection, - IFormatNumberSettings, - ICashFlowStatementTotalSection, - IDateRange, - ICashFlowStatementQuery -} from 'interfaces'; - -export default class CashFlowStatementDatePeriods { - dateRangeSet: IDateRange[]; - query: ICashFlowStatementQuery; - - /** - * Initialize date range set. - */ - private initDateRangeCollection() { - this.dateRangeSet = dateRangeFromToCollection( - this.query.fromDate, - this.query.toDate, - this.comparatorDateType - ); - } - - /** - * Retrieve the date period meta. - * @param {number} total - Total amount. - * @param {Date} fromDate - From date. - * @param {Date} toDate - To date. - * @return {ICashFlowDatePeriod} - */ - private getDatePeriodTotalMeta( - total: number, - fromDate: Date, - toDate: Date, - overrideSettings: IFormatNumberSettings = {} - ): ICashFlowDatePeriod { - return this.getDatePeriodMeta(total, fromDate, toDate, { - money: true, - ...overrideSettings, - }); - } - - /** - * Retrieve the date period meta. - * @param {number} total - Total amount. - * @param {Date} fromDate - From date. - * @param {Date} toDate - To date. - * @return {ICashFlowDatePeriod} - */ - private getDatePeriodMeta( - total: number, - fromDate: Date, - toDate: Date, - overrideSettings?: IFormatNumberSettings - ): ICashFlowDatePeriod { - return { - fromDate: this.getDateMeta(fromDate), - toDate: this.getDateMeta(toDate), - total: this.getAmountMeta(total, overrideSettings), - }; - } - - // Net income -------------------- - - /** - * Retrieve the net income between the given date range. - * @param {Date} fromDate - * @param {Date} toDate - * @returns {number} - */ - private getNetIncomeDateRange(fromDate: Date, toDate: Date) { - // Mapping income/expense accounts ids. - const incomeAccountsIds = this.getAccountsIdsByType( - ACCOUNT_ROOT_TYPE.INCOME - ); - const expenseAccountsIds = this.getAccountsIdsByType( - ACCOUNT_ROOT_TYPE.EXPENSE - ); - - // Income closing balance. - const incomeClosingBalance = accumSum(incomeAccountsIds, (id) => - this.netIncomeLedger - .whereFromDate(fromDate) - .whereToDate(toDate) - .whereAccountId(id) - .getClosingBalance() - ); - // Expense closing balance. - const expenseClosingBalance = accumSum(expenseAccountsIds, (id) => - this.netIncomeLedger - .whereToDate(toDate) - .whereFromDate(fromDate) - .whereAccountId(id) - .getClosingBalance() - ); - // Net income = income - expenses. - const netIncome = incomeClosingBalance - expenseClosingBalance; - - return netIncome; - } - - /** - * Retrieve the net income of date period. - * @param {IDateRange} dateRange - - * @retrun {ICashFlowDatePeriod} - */ - private getNetIncomeDatePeriod(dateRange): ICashFlowDatePeriod { - const total = this.getNetIncomeDateRange( - dateRange.fromDate, - dateRange.toDate - ); - return this.getDatePeriodMeta(total, dateRange.fromDate, dateRange.toDate); - } - - /** - * Retrieve the net income node between the given date ranges. - * @param {Date} fromDate - * @param {Date} toDate - * @returns {ICashFlowDatePeriod[]} - */ - private getNetIncomeDatePeriods( - section: ICashFlowStatementNetIncomeSection - ): ICashFlowDatePeriod[] { - return this.dateRangeSet.map(this.getNetIncomeDatePeriod.bind(this)); - } - - /** - * Writes periods property to net income section. - * @param {ICashFlowStatementNetIncomeSection} section - * @returns {ICashFlowStatementNetIncomeSection} - */ - private assocPeriodsToNetIncomeNode( - section: ICashFlowStatementNetIncomeSection - ): ICashFlowStatementNetIncomeSection { - const incomeDatePeriods = this.getNetIncomeDatePeriods(section); - return R.assoc('periods', incomeDatePeriods, section); - } - - // Account nodes -------------------- - - /** - * Retrieve the account total between date range. - * @param {Date} fromDate - From date. - * @param {Date} toDate - To date. - * @return {number} - */ - private getAccountTotalDateRange( - node: ICashFlowStatementAccountSection, - fromDate: Date, - toDate: Date - ): number { - const closingBalance = this.ledger - .whereFromDate(fromDate) - .whereToDate(toDate) - .whereAccountId(node.id) - .getClosingBalance(); - - return this.amountAdjustment(node.adjusmentType, closingBalance); - } - - /** - * Retrieve the given account node total date period. - * @param {ICashFlowStatementAccountSection} node - - * @param {Date} fromDate - From date. - * @param {Date} toDate - To date. - * @return {ICashFlowDatePeriod} - */ - private getAccountTotalDatePeriod( - node: ICashFlowStatementAccountSection, - fromDate: Date, - toDate: Date - ): ICashFlowDatePeriod { - const total = this.getAccountTotalDateRange(node, fromDate, toDate); - return this.getDatePeriodMeta(total, fromDate, toDate); - } - - /** - * Retrieve the accounts date periods nodes of the give account node. - * @param {ICashFlowStatementAccountSection} node - - * @return {ICashFlowDatePeriod[]} - */ - private getAccountDatePeriods( - node: ICashFlowStatementAccountSection - ): ICashFlowDatePeriod[] { - return this.getNodeDatePeriods( - node, - this.getAccountTotalDatePeriod.bind(this) - ); - } - - /** - * Writes `periods` property to account node. - * @param {ICashFlowStatementAccountSection} node - - * @return {ICashFlowStatementAccountSection} - */ - private assocPeriodsToAccountNode( - node: ICashFlowStatementAccountSection - ): ICashFlowStatementAccountSection { - const datePeriods = this.getAccountDatePeriods(node); - return R.assoc('periods', datePeriods, node); - } - - // Aggregate node ------------------------- - - /** - * Retrieve total of the given period index for node that has children nodes. - * @return {number} - */ - private getChildrenTotalPeriodByIndex( - node: ICashFlowStatementSection, - index: number - ): number { - return sumBy(node.children, `periods[${index}].total.amount`); - } - - /** - * Retrieve date period meta of the given node index. - * @param {ICashFlowStatementSection} node - - * @param {number} index - Loop index. - * @param {Date} fromDate - From date. - * @param {Date} toDate - To date. - */ - private getChildrenTotalPeriodMetaByIndex( - node: ICashFlowStatementSection, - index: number, - fromDate: Date, - toDate: Date - ) { - const total = this.getChildrenTotalPeriodByIndex(node, index); - return this.getDatePeriodTotalMeta(total, fromDate, toDate); - } - - /** - * Retrieve the date periods of aggregate node. - * @param {ICashFlowStatementSection} node - */ - private getAggregateNodeDatePeriods(node: ICashFlowStatementSection) { - const getChildrenTotalPeriodMetaByIndex = R.curry( - this.getChildrenTotalPeriodMetaByIndex.bind(this) - )(node); - - return this.dateRangeSet.map((dateRange, index) => - getChildrenTotalPeriodMetaByIndex( - index, - dateRange.fromDate, - dateRange.toDate - ) - ); - } - - /** - * Writes `periods` property to aggregate section node. - * @param {ICashFlowStatementSection} node - - * @return {ICashFlowStatementSection} - */ - private assocPeriodsToAggregateNode( - node: ICashFlowStatementSection - ): ICashFlowStatementSection { - const datePeriods = this.getAggregateNodeDatePeriods(node); - return R.assoc('periods', datePeriods, node); - } - - // Total equation node -------------------- - - private sectionsMapToTotalPeriod( - mappedSections: { [key: number]: any }, - index - ) { - return mapValues( - mappedSections, - (node) => get(node, `periods[${index}].total.amount`) || 0 - ); - } - - /** - * Retrieve the date periods of the given total equation. - * @param {} - * @param {string} equation - - * @return {ICashFlowDatePeriod[]} - */ - private getTotalEquationDatePeriods( - node: ICashFlowSchemaTotalSection, - equation: string, - nodesTable - ): ICashFlowDatePeriod[] { - return this.getNodeDatePeriods(node, (node, fromDate, toDate, index) => { - const periodScope = this.sectionsMapToTotalPeriod(nodesTable, index); - const total = this.evaluateEquation(equation, periodScope); - - return this.getDatePeriodTotalMeta(total, fromDate, toDate); - }); - } - - /** - * Associates the total periods of total equation to the ginve total node.. - * @param {ICashFlowSchemaTotalSection} totalSection - - * @return {ICashFlowStatementTotalSection} - */ - private assocTotalEquationDatePeriods( - nodesTable: any, - equation: string, - node: ICashFlowSchemaTotalSection - ): ICashFlowStatementTotalSection { - const datePeriods = this.getTotalEquationDatePeriods( - node, - equation, - nodesTable - ); - - return R.assoc('periods', datePeriods, node); - } - - // Cash at beginning ---------------------- - - /** - * Retrieve the date preioods of the given node and accumlated function. - * @param {} node - * @param {} - * @return {} - */ - private getNodeDatePeriods(node, callback) { - const curriedCallback = R.curry(callback)(node); - - return this.dateRangeSet.map((dateRange, index) => { - return curriedCallback(dateRange.fromDate, dateRange.toDate, index); - }); - } - - /** - * Retrieve the account total between date range. - * @param {Date} fromDate - From date. - * @param {Date} toDate - To date. - * @return {number} - */ - private getBeginningCashAccountDateRange( - node: ICashFlowStatementSection, - fromDate: Date, - toDate: Date - ) { - const cashToDate = this.beginningCashFrom(fromDate); - - return this.cashLedger - .whereToDate(cashToDate) - .whereAccountId(node.id) - .getClosingBalance(); - } - - /** - * Retrieve the beginning cash date period. - * @param {ICashFlowStatementSection} node - - * @param {Date} fromDate - From date. - * @param {Date} toDate - To date. - * @return {ICashFlowDatePeriod} - */ - private getBeginningCashDatePeriod( - node: ICashFlowStatementSection, - fromDate: Date, - toDate: Date - ) { - const total = this.getBeginningCashAccountDateRange(node, fromDate, toDate); - - return this.getDatePeriodTotalMeta(total, fromDate, toDate); - } - - /** - * Retrieve the beginning cash account periods. - * @param {ICashFlowStatementSection} node - * @return {ICashFlowDatePeriod} - */ - private getBeginningCashAccountPeriods( - node: ICashFlowStatementSection - ): ICashFlowDatePeriod { - return this.getNodeDatePeriods( - node, - this.getBeginningCashDatePeriod.bind(this) - ); - } - - /** - * Writes `periods` property to cash at beginning date periods. - * @param {ICashFlowStatementSection} section - - * @return {ICashFlowStatementSection} - */ - private assocCashAtBeginningDatePeriods( - node: ICashFlowStatementSection - ): ICashFlowStatementSection { - const datePeriods = this.getAggregateNodeDatePeriods(node); - return R.assoc('periods', datePeriods, node); - } - - /** - * Associates `periods` propery to cash at beginning account node. - * @param {ICashFlowStatementSection} node - - * @return {ICashFlowStatementSection} - */ - private assocCashAtBeginningAccountDatePeriods( - node: ICashFlowStatementSection - ): ICashFlowStatementSection { - const datePeriods = this.getBeginningCashAccountPeriods(node); - return R.assoc('periods', datePeriods, node); - } -} diff --git a/server/src/services/FinancialStatements/CashFlow/CashFlowRepository.ts b/server/src/services/FinancialStatements/CashFlow/CashFlowRepository.ts deleted file mode 100644 index 1bb2431d2..000000000 --- a/server/src/services/FinancialStatements/CashFlow/CashFlowRepository.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { Inject, Service } from 'typedi'; -import moment from 'moment'; -import { - ICashFlowStatementQuery, - IAccountTransaction, - IAccount, -} from 'interfaces'; -import HasTenancyService from 'services/Tenancy/TenancyService'; - -@Service() -export default class CashFlowRepository { - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve the group type from periods type. - * @param {string} displayType - * @returns {string} - */ - protected getGroupTypeFromPeriodsType(displayType: string) { - const displayTypes = { - year: 'year', - day: 'day', - month: 'month', - quarter: 'month', - week: 'day', - }; - return displayTypes[displayType] || 'month'; - } - - /** - * Retrieve the cashflow accounts. - * @returns {Promise} - */ - public async cashFlowAccounts(tenantId: number): Promise { - const { Account } = this.tenancy.models(tenantId); - - const accounts = await Account.query(); - - return accounts; - } - - /** - * Retrieve total of csah at beginning transactions. - * @param {number} tenantId - - * @param {ICashFlowStatementQuery} filter - - * @return {Promise} - */ - public cashAtBeginningTotalTransactions( - tenantId: number, - filter: ICashFlowStatementQuery - ): Promise { - const { AccountTransaction } = this.tenancy.models(tenantId); - const cashBeginningPeriod = moment(filter.fromDate) - .subtract(1, 'day') - .toDate(); - - return AccountTransaction.query().onBuild((query) => { - query.modify('creditDebitSummation'); - - query.select('accountId'); - query.groupBy('accountId'); - - query.withGraphFetched('account'); - query.modify('filterDateRange', null, cashBeginningPeriod); - }); - } - - /** - * Retrieve accounts transactions. - * @param {number} tenantId - - * @param {ICashFlowStatementQuery} filter - * @return {Promise} - */ - public getAccountsTransactions( - tenantId: number, - filter: ICashFlowStatementQuery - ): Promise { - const { AccountTransaction } = this.tenancy.models(tenantId); - const groupByDateType = this.getGroupTypeFromPeriodsType( - filter.displayColumnsBy - ); - - return AccountTransaction.query().onBuild((query) => { - query.modify('creditDebitSummation'); - query.modify('groupByDateFormat', groupByDateType); - - query.select('accountId'); - - query.groupBy('accountId'); - query.withGraphFetched('account'); - query.modify('filterDateRange', filter.fromDate, filter.toDate); - }); - } - - /** - * Retrieve the net income tranasctions. - * @param {number} tenantId - - * @param {ICashFlowStatementQuery} query - - * @return {Promise} - */ - public getNetIncomeTransactions( - tenantId: number, - filter: ICashFlowStatementQuery - ): Promise { - const { AccountTransaction } = this.tenancy.models(tenantId); - const groupByDateType = this.getGroupTypeFromPeriodsType( - filter.displayColumnsBy - ); - - return AccountTransaction.query().onBuild((query) => { - query.modify('creditDebitSummation'); - query.modify('groupByDateFormat', groupByDateType); - - query.select('accountId'); - query.groupBy('accountId'); - - query.withGraphFetched('account'); - query.modify('filterDateRange', filter.fromDate, filter.toDate); - }); - } - - /** - * Retrieve peridos of cash at beginning transactions. - * @param {number} tenantId - - * @param {ICashFlowStatementQuery} filter - - * @return {Promise} - */ - public cashAtBeginningPeriodTransactions( - tenantId: number, - filter: ICashFlowStatementQuery - ): Promise { - const { AccountTransaction } = this.tenancy.models(tenantId); - const groupByDateType = this.getGroupTypeFromPeriodsType( - filter.displayColumnsBy - ); - - return AccountTransaction.query().onBuild((query) => { - query.modify('creditDebitSummation'); - query.modify('groupByDateFormat', groupByDateType); - - query.select('accountId'); - query.groupBy('accountId'); - - query.withGraphFetched('account'); - query.modify('filterDateRange', filter.fromDate, filter.toDate); - }); - } -} diff --git a/server/src/services/FinancialStatements/CashFlow/CashFlowService.ts b/server/src/services/FinancialStatements/CashFlow/CashFlowService.ts deleted file mode 100644 index e619f634f..000000000 --- a/server/src/services/FinancialStatements/CashFlow/CashFlowService.ts +++ /dev/null @@ -1,175 +0,0 @@ -import moment from 'moment'; -import { Service, Inject } from 'typedi'; -import * as R from 'ramda'; -import TenancyService from 'services/Tenancy/TenancyService'; -import FinancialSheet from '../FinancialSheet'; -import { - ICashFlowStatementService, - ICashFlowStatementQuery, - ICashFlowStatementDOO, - IAccountTransaction, - ICashFlowStatementMeta -} from 'interfaces'; -import CashFlowStatement from './CashFlow'; -import Ledger from 'services/Accounting/Ledger'; -import CashFlowRepository from './CashFlowRepository'; -import InventoryService from 'services/Inventory/Inventory'; -import { parseBoolean } from 'utils'; -import { Tenant } from 'system/models'; - -@Service() -export default class CashFlowStatementService - extends FinancialSheet - implements ICashFlowStatementService -{ - @Inject() - tenancy: TenancyService; - - @Inject() - cashFlowRepo: CashFlowRepository; - - @Inject() - inventoryService: InventoryService; - - /** - * Defaults balance sheet filter query. - * @return {IBalanceSheetQuery} - */ - get defaultQuery(): ICashFlowStatementQuery { - return { - displayColumnsType: 'total', - displayColumnsBy: 'day', - fromDate: moment().startOf('year').format('YYYY-MM-DD'), - toDate: moment().endOf('year').format('YYYY-MM-DD'), - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'total', - negativeFormat: 'mines', - }, - noneZero: false, - noneTransactions: false, - basis: 'cash', - }; - } - - /** - * Retrieve cash at beginning transactions. - * @param {number} tenantId - - * @param {ICashFlowStatementQuery} filter - - * @retrun {Promise} - */ - private async cashAtBeginningTransactions( - tenantId: number, - filter: ICashFlowStatementQuery - ): Promise { - const appendPeriodsOperToChain = (trans) => - R.append( - this.cashFlowRepo.cashAtBeginningPeriodTransactions(tenantId, filter), - trans - ); - - const promisesChain = R.pipe( - R.append( - this.cashFlowRepo.cashAtBeginningTotalTransactions(tenantId, filter) - ), - R.when( - R.always(R.equals(filter.displayColumnsType, 'date_periods')), - appendPeriodsOperToChain - ) - )([]); - const promisesResults = await Promise.all(promisesChain); - const transactions = R.flatten(promisesResults); - - return transactions; - } - - /** - * Retrieve the cash flow sheet statement. - * @param {number} tenantId - * @param {ICashFlowStatementQuery} query - * @returns {Promise} - */ - public async cashFlow( - tenantId: number, - query: ICashFlowStatementQuery - ): Promise { - const i18n = this.tenancy.i18n(tenantId); - - // Retrieve all accounts on the storage. - const accounts = await this.cashFlowRepo.cashFlowAccounts(tenantId); - - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const filter = { - ...this.defaultQuery, - ...query, - }; - // Retrieve the accounts transactions. - const transactions = await this.cashFlowRepo.getAccountsTransactions( - tenantId, - filter - ); - // Retrieve the net income transactions. - const netIncome = await this.cashFlowRepo.getNetIncomeTransactions( - tenantId, - filter - ); - // Retrieve the cash at beginning transactions. - const cashAtBeginningTransactions = await this.cashAtBeginningTransactions( - tenantId, - filter - ); - // Transformes the transactions to ledgers. - const ledger = Ledger.fromTransactions(transactions); - const cashLedger = Ledger.fromTransactions(cashAtBeginningTransactions); - const netIncomeLedger = Ledger.fromTransactions(netIncome); - - // Cash flow statement. - const cashFlowInstance = new CashFlowStatement( - accounts, - ledger, - cashLedger, - netIncomeLedger, - filter, - tenant.metadata.baseCurrency, - i18n - ); - - return { - data: cashFlowInstance.reportData(), - query: filter, - meta: this.reportMetadata(tenantId), - }; - } - - /** - * Retrieve the balance sheet meta. - * @param {number} tenantId - - * @returns {ICashFlowStatementMeta} - */ - private reportMetadata(tenantId: number): ICashFlowStatementMeta { - const settings = this.tenancy.settings(tenantId); - - const isCostComputeRunning = this.inventoryService - .isItemsCostComputeRunning(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - isCostComputeRunning: parseBoolean(isCostComputeRunning, false), - organizationName, - baseCurrency - }; - } -} diff --git a/server/src/services/FinancialStatements/CashFlow/CashFlowTable.ts b/server/src/services/FinancialStatements/CashFlow/CashFlowTable.ts deleted file mode 100644 index 3c9a60ae9..000000000 --- a/server/src/services/FinancialStatements/CashFlow/CashFlowTable.ts +++ /dev/null @@ -1,365 +0,0 @@ -import * as R from 'ramda'; -import { isEmpty, times } from 'lodash'; -import moment from 'moment'; -import { - ICashFlowStatementSection, - ICashFlowStatementSectionType, - ICashFlowStatement, - ITableRow, - ITableColumn, - ICashFlowStatementQuery, - IDateRange, - ICashFlowStatementDOO, -} from 'interfaces'; -import { dateRangeFromToCollection, tableRowMapper } from 'utils'; -import { mapValuesDeep } from 'utils/deepdash'; - -enum IROW_TYPE { - AGGREGATE = 'AGGREGATE', - NET_INCOME = 'NET_INCOME', - ACCOUNTS = 'ACCOUNTS', - ACCOUNT = 'ACCOUNT', - TOTAL = 'TOTAL', -} -const DEEP_CONFIG = { childrenPath: 'children', pathFormat: 'array' }; -const DISPLAY_COLUMNS_BY = { - DATE_PERIODS: 'date_periods', - TOTAL: 'total', -}; - -export default class CashFlowTable implements ICashFlowTable { - private report: ICashFlowStatementDOO; - private i18n; - private dateRangeSet: IDateRange[]; - - /** - * Constructor method. - * @param {ICashFlowStatement} reportStatement - */ - constructor(reportStatement: ICashFlowStatementDOO, i18n) { - this.report = reportStatement; - this.i18n = i18n; - this.dateRangeSet = []; - this.initDateRangeCollection(); - } - - /** - * Initialize date range set. - */ - private initDateRangeCollection() { - this.dateRangeSet = dateRangeFromToCollection( - this.report.query.fromDate, - this.report.query.toDate, - this.report.query.displayColumnsBy - ); - } - - /** - * Retrieve the date periods columns accessors. - */ - private datePeriodsColumnsAccessors() { - return this.dateRangeSet.map((dateRange: IDateRange, index) => ({ - key: `date-range-${index}`, - accessor: `periods[${index}].total.formattedAmount`, - })); - } - - /** - * Retrieve the total column accessor. - */ - private totalColumnAccessor() { - return [{ key: 'total', accessor: 'total.formattedAmount' }]; - } - - /** - * Retrieve the common columns for all report nodes. - */ - private commonColumns() { - return R.compose( - R.concat([{ key: 'label', accessor: 'label' }]), - R.when( - R.always(this.isDisplayColumnsBy(DISPLAY_COLUMNS_BY.DATE_PERIODS)), - R.concat(this.datePeriodsColumnsAccessors()) - ), - R.concat(this.totalColumnAccessor()) - )([]); - } - - /** - * Retrieve the table rows of regular section. - * @param {ICashFlowStatementSection} section - * @returns {ITableRow[]} - */ - private regularSectionMapper(section: ICashFlowStatementSection): ITableRow { - const columns = this.commonColumns(); - - return tableRowMapper(section, columns, { - rowTypes: [IROW_TYPE.AGGREGATE], - id: section.id, - }); - } - - /** - * Retrieve the net income table rows of the section. - * @param {ICashFlowStatementSection} section - * @returns {ITableRow} - */ - private netIncomeSectionMapper( - section: ICashFlowStatementSection - ): ITableRow { - const columns = this.commonColumns(); - - return tableRowMapper(section, columns, { - rowTypes: [IROW_TYPE.NET_INCOME, IROW_TYPE.TOTAL], - id: section.id, - }); - } - - /** - * Retrieve the accounts table rows of the section. - * @param {ICashFlowStatementSection} section - * @returns {ITableRow} - */ - private accountsSectionMapper(section: ICashFlowStatementSection): ITableRow { - const columns = this.commonColumns(); - - return tableRowMapper(section, columns, { - rowTypes: [IROW_TYPE.ACCOUNTS], - id: section.id, - }); - } - - /** - * Retrieve the account table row of account section. - * @param {ICashFlowStatementSection} section - * @returns {ITableRow} - */ - private accountSectionMapper(section: ICashFlowStatementSection): ITableRow { - const columns = this.commonColumns(); - - return tableRowMapper(section, columns, { - rowTypes: [IROW_TYPE.ACCOUNT], - id: `account-${section.id}`, - }); - } - - /** - * Retrieve the total table rows from the given total section. - * @param {ICashFlowStatementSection} section - * @returns {ITableRow} - */ - private totalSectionMapper(section: ICashFlowStatementSection): ITableRow { - const columns = this.commonColumns(); - - return tableRowMapper(section, columns, { - rowTypes: [IROW_TYPE.TOTAL], - id: section.id, - }); - } - - /** - * Detarmines the schema section type. - * @param {string} type - * @param {ICashFlowSchemaSection} section - * @returns {boolean} - */ - private isSectionHasType( - type: string, - section: ICashFlowStatementSection - ): boolean { - return type === section.sectionType; - } - - /** - * The report section mapper. - * @param {ICashFlowStatementSection} section - * @returns {ITableRow} - */ - private sectionMapper( - section: ICashFlowStatementSection, - key: string, - parentSection: ICashFlowStatementSection - ): ITableRow { - const isSectionHasType = R.curry(this.isSectionHasType); - - return R.pipe( - R.when( - isSectionHasType(ICashFlowStatementSectionType.REGULAR), - this.regularSectionMapper.bind(this) - ), - R.when( - isSectionHasType(ICashFlowStatementSectionType.CASH_AT_BEGINNING), - this.regularSectionMapper.bind(this) - ), - R.when( - isSectionHasType(ICashFlowStatementSectionType.NET_INCOME), - this.netIncomeSectionMapper.bind(this) - ), - R.when( - isSectionHasType(ICashFlowStatementSectionType.ACCOUNTS), - this.accountsSectionMapper.bind(this) - ), - R.when( - isSectionHasType(ICashFlowStatementSectionType.ACCOUNT), - this.accountSectionMapper.bind(this) - ), - R.when( - isSectionHasType(ICashFlowStatementSectionType.TOTAL), - this.totalSectionMapper.bind(this) - ) - )(section); - } - - /** - * Mappes the sections to the table rows. - * @param {ICashFlowStatementSection[]} sections - * @returns {ITableRow[]} - */ - private mapSectionsToTableRows( - sections: ICashFlowStatementSection[] - ): ITableRow[] { - return mapValuesDeep(sections, this.sectionMapper.bind(this), DEEP_CONFIG); - } - - /** - * Appends the total to section's children. - * @param {ICashFlowStatementSection} section - * @returns {ICashFlowStatementSection} - */ - private appendTotalToSectionChildren( - section: ICashFlowStatementSection - ): ICashFlowStatementSection { - const label = section.footerLabel - ? section.footerLabel - : this.i18n.__('Total {{accountName}}', { accountName: section.label }); - - section.children.push({ - sectionType: ICashFlowStatementSectionType.TOTAL, - label, - periods: section.periods, - total: section.total, - }); - return section; - } - - /** - * - * @param {ICashFlowStatementSection} section - * @returns {ICashFlowStatementSection} - */ - private mapSectionsToAppendTotalChildren( - section: ICashFlowStatementSection - ): ICashFlowStatementSection { - const isSectionHasChildren = (section) => !isEmpty(section.children); - - return R.compose( - R.when(isSectionHasChildren, this.appendTotalToSectionChildren.bind(this)) - )(section); - } - - /** - * Appends total node to children section. - * @param {ICashFlowStatementSection[]} sections - * @returns {ICashFlowStatementSection[]} - */ - private appendTotalToChildren(sections: ICashFlowStatementSection[]) { - return mapValuesDeep( - sections, - this.mapSectionsToAppendTotalChildren.bind(this), - DEEP_CONFIG - ); - } - - /** - * Retrieve the table rows of cash flow statement. - * @param {ICashFlowStatementSection[]} sections - * @returns {ITableRow[]} - */ - public tableRows(): ITableRow[] { - const sections = this.report.data; - - return R.pipe( - this.appendTotalToChildren.bind(this), - this.mapSectionsToTableRows.bind(this) - )(sections); - } - - /** - * Retrieve the total columns. - * @returns {ITableColumn} - */ - private totalColumns(): ITableColumn[] { - return [{ key: 'total', label: this.i18n.__('Total') }]; - } - - /** - * Retrieve the formatted column label from the given date range. - * @param {ICashFlowDateRange} dateRange - - * @return {string} - */ - private formatColumnLabel(dateRange: ICashFlowDateRange) { - const monthFormat = (range) => moment(range.toDate).format('YYYY-MM'); - const yearFormat = (range) => moment(range.toDate).format('YYYY'); - const dayFormat = (range) => moment(range.toDate).format('YYYY-MM-DD'); - - const conditions = [ - ['month', monthFormat], - ['year', yearFormat], - ['day', dayFormat], - ['quarter', monthFormat], - ['week', dayFormat], - ]; - const conditionsPairs = R.map( - ([type, formatFn]) => [ - R.always(this.isDisplayColumnsType(type)), - formatFn, - ], - conditions - ); - - return R.compose(R.cond(conditionsPairs))(dateRange); - } - - /** - * Date periods columns. - * @returns {ITableColumn[]} - */ - private datePeriodsColumns(): ITableColumn[] { - return this.dateRangeSet.map((dateRange, index) => ({ - key: `date-range-${index}`, - label: this.formatColumnLabel(dateRange), - })); - } - - /** - * Detarmines the given column type is the current. - * @reutrns {boolean} - */ - private isDisplayColumnsBy(displayColumnsType: string): Boolean { - return this.report.query.displayColumnsType === displayColumnsType; - } - - /** - * Detarmines whether the given display columns type is the current. - * @param {string} displayColumnsBy - * @returns {boolean} - */ - private isDisplayColumnsType(displayColumnsBy: string): Boolean { - return this.report.query.displayColumnsBy === displayColumnsBy; - } - - /** - * Retrieve the table columns. - * @return {ITableColumn[]} - */ - public tableColumns(): ITableColumn[] { - return R.compose( - R.concat([{ key: 'name', label: this.i18n.__('Account name') }]), - R.when( - R.always(this.isDisplayColumnsBy(DISPLAY_COLUMNS_BY.DATE_PERIODS)), - R.concat(this.datePeriodsColumns()) - ), - R.concat(this.totalColumns()) - )([]); - } -} diff --git a/server/src/services/FinancialStatements/CashFlow/schema.ts b/server/src/services/FinancialStatements/CashFlow/schema.ts deleted file mode 100644 index ce786c2e9..000000000 --- a/server/src/services/FinancialStatements/CashFlow/schema.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { ICashFlowSchemaSection, CASH_FLOW_SECTION_ID, ICashFlowStatementSectionType } from 'interfaces'; -import { ACCOUNT_TYPE } from 'data/AccountTypes'; - -export default [ - { - id: CASH_FLOW_SECTION_ID.OPERATING, - label: 'OPERATING ACTIVITIES', - sectionType: ICashFlowStatementSectionType.AGGREGATE, - children: [ - { - id: CASH_FLOW_SECTION_ID.NET_INCOME, - label: 'Net income', - sectionType: ICashFlowStatementSectionType.NET_INCOME, - }, - { - id: CASH_FLOW_SECTION_ID.OPERATING_ACCOUNTS, - label: 'Adjustments net income by operating activities.', - sectionType: ICashFlowStatementSectionType.ACCOUNTS, - accountsRelations: [ - { type: ACCOUNT_TYPE.ACCOUNTS_RECEIVABLE, direction: 'mines' }, - { type: ACCOUNT_TYPE.INVENTORY, direction: 'mines' }, - { type: ACCOUNT_TYPE.NON_CURRENT_ASSET, direction: 'mines' }, - { type: ACCOUNT_TYPE.ACCOUNTS_PAYABLE, direction: 'plus' }, - { type: ACCOUNT_TYPE.CREDIT_CARD, direction: 'plus' }, - { type: ACCOUNT_TYPE.TAX_PAYABLE, direction: 'plus' }, - { type: ACCOUNT_TYPE.OTHER_CURRENT_ASSET, direction: 'mines' }, - { type: ACCOUNT_TYPE.OTHER_CURRENT_LIABILITY, direction: 'plus' }, - { type: ACCOUNT_TYPE.NON_CURRENT_LIABILITY, direction: 'plus' }, - ], - showAlways: true, - }, - ], - footerLabel: 'Net cash provided by operating activities', - }, - { - id: CASH_FLOW_SECTION_ID.INVESTMENT, - sectionType: ICashFlowStatementSectionType.ACCOUNTS, - label: 'INVESTMENT ACTIVITIES', - accountsRelations: [ - { type: ACCOUNT_TYPE.FIXED_ASSET, direction: 'mines' } - ], - footerLabel: 'Net cash provided by investing activities', - }, - { - id: CASH_FLOW_SECTION_ID.FINANCIAL, - label: 'FINANCIAL ACTIVITIES', - sectionType: ICashFlowStatementSectionType.ACCOUNTS, - accountsRelations: [ - { type: ACCOUNT_TYPE.LOGN_TERM_LIABILITY, direction: 'plus' }, - { type: ACCOUNT_TYPE.EQUITY, direction: 'plus' }, - ], - footerLabel: 'Net cash provided by financing activities', - }, - { - id: CASH_FLOW_SECTION_ID.CASH_BEGINNING_PERIOD, - sectionType: ICashFlowStatementSectionType.CASH_AT_BEGINNING, - label: 'Cash at beginning of period', - accountsRelations: [ - { type: ACCOUNT_TYPE.CASH, direction: 'plus' }, - { type: ACCOUNT_TYPE.BANK, direction: 'plus' }, - ], - }, - { - id: CASH_FLOW_SECTION_ID.NET_CASH_INCREASE, - sectionType: ICashFlowStatementSectionType.TOTAL, - equation: 'OPERATING + INVESTMENT + FINANCIAL', - label: 'NET CASH INCREASE FOR PERIOD', - }, - { - id: CASH_FLOW_SECTION_ID.CASH_END_PERIOD, - label: 'CASH AT END OF PERIOD', - sectionType: ICashFlowStatementSectionType.TOTAL, - equation: 'NET_CASH_INCREASE + CASH_BEGINNING_PERIOD', - }, -] as ICashFlowSchemaSection[]; diff --git a/server/src/services/FinancialStatements/ContactBalanceSummary/ContactBalanceSummary.ts b/server/src/services/FinancialStatements/ContactBalanceSummary/ContactBalanceSummary.ts deleted file mode 100644 index 62439cca3..000000000 --- a/server/src/services/FinancialStatements/ContactBalanceSummary/ContactBalanceSummary.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { sumBy } from 'lodash'; -import * as R from 'ramda'; -import FinancialSheet from '../FinancialSheet'; -import { - IContactBalanceSummaryContact, - IContactBalanceSummaryTotal, - IContactBalanceSummaryAmount, - IContactBalanceSummaryPercentage, -} from 'interfaces'; - -export class ContactBalanceSummaryReport extends FinancialSheet { - readonly baseCurrency: string; - - /** - * Calculates the contact percentage of column. - * @param {number} customerBalance - Contact balance. - * @param {number} totalBalance - Total contacts balance. - * @returns {number} - */ - protected getContactPercentageOfColumn( - customerBalance: number, - totalBalance: number - ): number { - return customerBalance > 0 ? totalBalance / customerBalance : 0; - } - - /** - * Retrieve the contacts total. - * @param {IContactBalanceSummaryContact} contacts - * @returns {number} - */ - protected getContactsTotal( - contacts: IContactBalanceSummaryContact[] - ): number { - return sumBy( - contacts, - (contact: IContactBalanceSummaryContact) => contact.total.amount - ); - } - - /** - * Retrieve the contacts total section. - * @param {IContactBalanceSummaryContact[]} contacts - * @returns {IContactBalanceSummaryTotal} - */ - protected getContactsTotalSection( - contacts: IContactBalanceSummaryContact[] - ): IContactBalanceSummaryTotal { - const customersTotal = this.getContactsTotal(contacts); - - return { - total: this.getTotalFormat(customersTotal), - percentageOfColumn: this.getPercentageMeta(1), - }; - } - - /** - * Retrieve the contact summary section with percentage of column. - * @param {number} total - * @param {IContactBalanceSummaryContact} contact - * @returns {IContactBalanceSummaryContact} - */ - private contactCamparsionPercentageOfColumnMapper( - total: number, - contact: IContactBalanceSummaryContact - ): IContactBalanceSummaryContact { - const amount = this.getContactPercentageOfColumn( - total, - contact.total.amount - ); - return { - ...contact, - percentageOfColumn: this.getPercentageMeta(amount), - }; - } - - /** - * Mappes the contacts summary sections with percentage of column. - * @param {IContactBalanceSummaryContact[]} contacts - - * @return {IContactBalanceSummaryContact[]} - */ - protected contactCamparsionPercentageOfColumn( - contacts: IContactBalanceSummaryContact[] - ): IContactBalanceSummaryContact[] { - const customersTotal = this.getContactsTotal(contacts); - const camparsionPercentageOfColummn = R.curry( - this.contactCamparsionPercentageOfColumnMapper.bind(this) - )(customersTotal); - - return contacts.map(camparsionPercentageOfColummn); - } - - /** - * Retrieve the contact total format. - * @param {number} amount - - * @return {IContactBalanceSummaryAmount} - */ - protected getContactTotalFormat( - amount: number - ): IContactBalanceSummaryAmount { - return { - amount, - formattedAmount: this.formatNumber(amount, { money: true }), - currencyCode: this.baseCurrency, - }; - } - - /** - * Retrieve the total amount of contacts sections. - * @param {number} amount - * @returns {IContactBalanceSummaryAmount} - */ - protected getTotalFormat(amount: number): IContactBalanceSummaryAmount { - return { - amount, - formattedAmount: this.formatTotalNumber(amount, { money: true }), - currencyCode: this.baseCurrency, - }; - } - - /** - * Retrieve the percentage amount object. - * @param {number} amount - * @returns {IContactBalanceSummaryPercentage} - */ - protected getPercentageMeta( - amount: number - ): IContactBalanceSummaryPercentage { - return { - amount, - formattedAmount: this.formatPercentage(amount), - }; - } -} diff --git a/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummary.ts b/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummary.ts deleted file mode 100644 index dba46d01e..000000000 --- a/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummary.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { get } from 'lodash'; -import * as R from 'ramda'; -import { - ILedger, - ICustomer, - ICustomerBalanceSummaryCustomer, - ICustomerBalanceSummaryQuery, - ICustomerBalanceSummaryData, - INumberFormatQuery, -} from 'interfaces'; -import { ContactBalanceSummaryReport } from '../ContactBalanceSummary/ContactBalanceSummary'; - -export class CustomerBalanceSummaryReport extends ContactBalanceSummaryReport { - readonly ledger: ILedger; - readonly baseCurrency: string; - readonly customers: ICustomer[]; - readonly filter: ICustomerBalanceSummaryQuery; - readonly numberFormat: INumberFormatQuery; - - /** - * Constructor method. - * @param {IJournalPoster} receivableLedger - * @param {ICustomer[]} customers - * @param {ICustomerBalanceSummaryQuery} filter - * @param {string} baseCurrency - */ - constructor( - ledger: ILedger, - customers: ICustomer[], - filter: ICustomerBalanceSummaryQuery, - baseCurrency: string - ) { - super(); - - this.ledger = ledger; - this.baseCurrency = baseCurrency; - this.customers = customers; - this.filter = filter; - this.numberFormat = this.filter.numberFormat; - } - - /** - * Customer section mapper. - * @param {ICustomer} customer - * @returns {ICustomerBalanceSummaryCustomer} - */ - private customerMapper(customer: ICustomer): ICustomerBalanceSummaryCustomer { - const closingBalance = this.ledger - .whereContactId(customer.id) - .getClosingBalance(); - - return { - customerName: customer.displayName, - total: this.getContactTotalFormat(closingBalance), - }; - } - - /** - * Mappes the customer model object to customer balance summary section. - * @param {ICustomer[]} customers - Customers. - * @returns {ICustomerBalanceSummaryCustomer[]} - */ - private customersMapper( - customers: ICustomer[] - ): ICustomerBalanceSummaryCustomer[] { - return customers.map(this.customerMapper.bind(this)); - } - - /** - * Retrieve the customers sections of the report. - * @param {ICustomer} customers - * @returns {ICustomerBalanceSummaryCustomer[]} - */ - private getCustomersSection( - customers: ICustomer[] - ): ICustomerBalanceSummaryCustomer[] { - return R.compose( - R.when( - R.always(this.filter.comparison.percentageOfColumn), - this.contactCamparsionPercentageOfColumn.bind(this) - ), - this.customersMapper.bind(this) - ).bind(this)(customers); - } - - /** - * Retrieve the report statement data. - * @returns {ICustomerBalanceSummaryData} - */ - public reportData(): ICustomerBalanceSummaryData { - const customersSections = this.getCustomersSection(this.customers); - const customersTotal = this.getContactsTotalSection(customersSections); - - return { - customers: customersSections, - total: customersTotal, - }; - } - - /** - * Retrieve the report statement columns - * @returns - */ - public reportColumns() { - return []; - } -} diff --git a/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryRepository.ts b/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryRepository.ts deleted file mode 100644 index 5c5f6842f..000000000 --- a/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryRepository.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { map, isEmpty } from 'lodash'; -import { ICustomer, IAccount } from 'interfaces'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { ACCOUNT_TYPE } from 'data/AccountTypes'; - -@Service() -export default class CustomerBalanceSummaryRepository { - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve the report customers. - * @param {number} tenantId - * @param {number[]} customersIds - * @returns {ICustomer[]} - */ - public getCustomers(tenantId: number, customersIds: number[]): ICustomer[] { - const { Customer } = this.tenancy.models(tenantId); - - return Customer.query() - .orderBy('displayName') - .onBuild((query) => { - if (!isEmpty(customersIds)) { - query.whereIn('id', customersIds); - } - }); - } - - /** - * Retrieve the A/R accounts. - * @param {number} tenantId - * @returns {Promise} - */ - public getReceivableAccounts(tenantId: number): Promise { - const { Account } = this.tenancy.models(tenantId); - - return Account.query().where( - 'accountType', - ACCOUNT_TYPE.ACCOUNTS_RECEIVABLE - ); - } - - /** - * Retrieve the customers credit/debit totals - * @param {number} tenantId - * @returns - */ - public async getCustomersTransactions(tenantId: number, asDate: any) { - const { AccountTransaction } = this.tenancy.models(tenantId); - - // Retrieve the receivable accounts A/R. - const receivableAccounts = await this.getReceivableAccounts(tenantId); - const receivableAccountsIds = map(receivableAccounts, 'id'); - - // Retrieve the customers transactions of A/R accounts. - const customersTranasctions = await AccountTransaction.query().onBuild( - (query) => { - query.whereIn('accountId', receivableAccountsIds); - query.modify('filterDateRange', null, asDate); - query.groupBy('contactId'); - query.sum('credit as credit'); - query.sum('debit as debit'); - query.select('contactId'); - } - ); - return customersTranasctions; - } -} diff --git a/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryService.ts b/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryService.ts deleted file mode 100644 index 441a47db6..000000000 --- a/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryService.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { Inject } from 'typedi'; -import moment from 'moment'; -import { isEmpty, map } from 'lodash'; -import TenancyService from 'services/Tenancy/TenancyService'; -import * as R from 'ramda'; -import { - ICustomerBalanceSummaryService, - ICustomerBalanceSummaryQuery, - ICustomerBalanceSummaryStatement, - ICustomer, - ILedgerEntry, -} from 'interfaces'; -import { CustomerBalanceSummaryReport } from './CustomerBalanceSummary'; - -import Ledger from 'services/Accounting/Ledger'; -import CustomerBalanceSummaryRepository from './CustomerBalanceSummaryRepository'; -import { Tenant } from 'system/models'; - -export default class CustomerBalanceSummaryService - implements ICustomerBalanceSummaryService -{ - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - @Inject() - reportRepository: CustomerBalanceSummaryRepository; - - /** - * Defaults balance sheet filter query. - * @return {ICustomerBalanceSummaryQuery} - */ - get defaultQuery(): ICustomerBalanceSummaryQuery { - return { - asDate: moment().format('YYYY-MM-DD'), - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'total', - negativeFormat: 'mines', - }, - comparison: { - percentageOfColumn: true, - }, - noneZero: false, - noneTransactions: false, - }; - } - - - /** - * Retrieve the customers ledger entries mapped from accounts transactions. - * @param {number} tenantId - * @param {Date|string} asDate - * @returns {Promise} - */ - private async getReportCustomersEntries( - tenantId: number, - asDate: Date | string - ): Promise { - const transactions = await this.reportRepository.getCustomersTransactions( - tenantId, - asDate - ); - const commonProps = { accountNormal: 'debit', date: asDate }; - - return R.map(R.merge(commonProps))(transactions); - } - - /** - * Retrieve the statment of customer balance summary report. - * @param {number} tenantId - * @param {ICustomerBalanceSummaryQuery} query - * @return {Promise} - */ - async customerBalanceSummary( - tenantId: number, - query: ICustomerBalanceSummaryQuery - ): Promise { - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - // Merges the default query and request query. - const filter = { ...this.defaultQuery, ...query }; - - this.logger.info( - '[customer_balance_summary] trying to calculate the report.', - { - filter, - tenantId, - } - ); - // Retrieve the customers list ordered by the display name. - const customers = await this.reportRepository.getCustomers( - tenantId, - query.customersIds - ); - // Retrieve the customers debit/credit totals. - const customersEntries = await this.getReportCustomersEntries( - tenantId, - filter.asDate - ); - // Ledger query. - const ledger = new Ledger(customersEntries); - - // Report instance. - const report = new CustomerBalanceSummaryReport( - ledger, - customers, - filter, - tenant.metadata.baseCurrency, - ); - - return { - data: report.reportData(), - columns: report.reportColumns(), - query: filter, - }; - } -} diff --git a/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryTableRows.ts b/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryTableRows.ts deleted file mode 100644 index 7de74b716..000000000 --- a/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryTableRows.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { Service } from 'typedi'; -import { - ICustomerBalanceSummaryData, - ICustomerBalanceSummaryCustomer, - ICustomerBalanceSummaryTotal, - ITableRow, -} from 'interfaces'; -import { tableMapper, tableRowMapper } from 'utils'; - -enum TABLE_ROWS_TYPES { - CUSTOMER = 'CUSTOMER', - TOTAL = 'TOTAL', -} - -@Service() -export default class CustomerBalanceSummaryTableRows { - /** - * Transformes the customers to table rows. - * @param {ICustomerBalanceSummaryCustomer[]} customers - * @returns {ITableRow[]} - */ - private customersTransformer( - customers: ICustomerBalanceSummaryCustomer[] - ): ITableRow[] { - const columns = [ - { key: 'customerName', accessor: 'customerName' }, - { key: 'total', accessor: 'total.formattedAmount' }, - { - key: 'percentageOfColumn', - accessor: 'percentageOfColumn.formattedAmount', - }, - ]; - return tableMapper(customers, columns, { - rowTypes: [TABLE_ROWS_TYPES.CUSTOMER], - }); - } - - /** - * Transformes the total to table row. - * @param {ICustomerBalanceSummaryTotal} total - * @returns {ITableRow} - */ - private totalTransformer(total: ICustomerBalanceSummaryTotal) { - const columns = [ - { key: 'total', value: 'Total' }, - { key: 'total', accessor: 'total.formattedAmount' }, - { - key: 'percentageOfColumn', - accessor: 'percentageOfColumn.formattedAmount', - }, - ]; - return tableRowMapper(total, columns, { - rowTypes: [TABLE_ROWS_TYPES.TOTAL], - }); - } - - /** - * Transformes the customer balance summary to table rows. - * @param {ICustomerBalanceSummaryData} customerBalanceSummary - * @returns {ITableRow[]} - */ - public tableRowsTransformer( - customerBalanceSummary: ICustomerBalanceSummaryData - ): ITableRow[] { - const customers = this.customersTransformer( - customerBalanceSummary.customers - ); - const total = this.totalTransformer(customerBalanceSummary.total); - - return customers.length > 0 ? [...customers, total] : []; - } -} diff --git a/server/src/services/FinancialStatements/FinancialReportService.ts b/server/src/services/FinancialStatements/FinancialReportService.ts deleted file mode 100644 index ad05715ff..000000000 --- a/server/src/services/FinancialStatements/FinancialReportService.ts +++ /dev/null @@ -1,8 +0,0 @@ -export default class FinancialReportService { - transformOrganizationMeta(tenant) { - return { - organizationName: tenant.metadata?.name, - baseCurrency: tenant.metadata?.baseCurrency, - }; - } -} diff --git a/server/src/services/FinancialStatements/FinancialSheet.ts b/server/src/services/FinancialStatements/FinancialSheet.ts deleted file mode 100644 index 8fe170244..000000000 --- a/server/src/services/FinancialStatements/FinancialSheet.ts +++ /dev/null @@ -1,124 +0,0 @@ -import moment from 'moment'; -import { - ICashFlowStatementTotal, - IFormatNumberSettings, - INumberFormatQuery, -} from 'interfaces'; -import { formatNumber } from 'utils'; - -export default class FinancialSheet { - readonly numberFormat: INumberFormatQuery; - readonly baseCurrency: string; - - /** - * Transformes the number format query to settings - */ - protected transfromFormatQueryToSettings(): IFormatNumberSettings { - const { numberFormat } = this; - - return { - precision: numberFormat.precision, - divideOn1000: numberFormat.divideOn1000, - excerptZero: !numberFormat.showZero, - negativeFormat: numberFormat.negativeFormat, - money: numberFormat.formatMoney === 'always', - currencyCode: this.baseCurrency, - }; - } - - /** - * Formating amount based on the given report query. - * @param {number} number - - * @param {IFormatNumberSettings} overrideSettings - - * @return {string} - */ - protected formatNumber( - number, - overrideSettings: IFormatNumberSettings = {} - ): string { - const settings = { - ...this.transfromFormatQueryToSettings(), - ...overrideSettings, - }; - return formatNumber(number, settings); - } - - /** - * Formatting full amount with different format settings. - * @param {number} amount - - * @param {IFormatNumberSettings} settings - - */ - protected formatTotalNumber( - amount: number, - settings: IFormatNumberSettings = {} - ): string { - const { numberFormat } = this; - - return this.formatNumber(amount, { - money: numberFormat.formatMoney === 'none' ? false : true, - excerptZero: false, - ...settings, - }); - } - - /** - * Formates the amount to the percentage string. - * @param {number} amount - * @returns {string} - */ - protected formatPercentage(amount): string { - const percentage = amount * 100; - - return formatNumber(percentage, { - symbol: '%', - excerptZero: true, - money: false, - }); - } - - /** - * Retrieve the amount meta object. - * @param {number} amount - * @returns {ICashFlowStatementTotal} - */ - protected getAmountMeta( - amount: number, - overrideSettings?: IFormatNumberSettings - ): ICashFlowStatementTotal { - return { - amount, - formattedAmount: this.formatNumber(amount, overrideSettings), - currencyCode: this.baseCurrency, - }; - } - - /** - * Retrieve the total amount meta object. - * @param {number} amount - * @returns {ICashFlowStatementTotal} - */ - protected getTotalAmountMeta( - amount: number, - title?: string - ): ICashFlowStatementTotal { - return { - ...(title ? { title } : {}), - amount, - formattedAmount: this.formatTotalNumber(amount), - currencyCode: this.baseCurrency, - }; - } - - /** - * Retrieve the date meta. - * @param {Date} date - * @param {string} format - * @returns - */ - protected getDateMeta(date: Date, format = 'YYYY-MM-DD') { - return { - formattedDate: moment(date).format(format), - date: moment(date).toDate(), - }; - } -} diff --git a/server/src/services/FinancialStatements/GeneralLedger/GeneralLedger.ts b/server/src/services/FinancialStatements/GeneralLedger/GeneralLedger.ts deleted file mode 100644 index 5f987eff9..000000000 --- a/server/src/services/FinancialStatements/GeneralLedger/GeneralLedger.ts +++ /dev/null @@ -1,240 +0,0 @@ -import { isEmpty, get, last, sumBy } from 'lodash'; -import { - IGeneralLedgerSheetQuery, - IGeneralLedgerSheetAccount, - IGeneralLedgerSheetAccountBalance, - IGeneralLedgerSheetAccountTransaction, - IAccount, - IJournalPoster, - IJournalEntry, - IContact, -} from 'interfaces'; -import FinancialSheet from '../FinancialSheet'; - -/** - * General ledger sheet. - */ -export default class GeneralLedgerSheet extends FinancialSheet { - tenantId: number; - accounts: IAccount[]; - query: IGeneralLedgerSheetQuery; - openingBalancesJournal: IJournalPoster; - transactions: IJournalPoster; - contactsMap: Map; - baseCurrency: string; - i18n: any; - - /** - * Constructor method. - * @param {number} tenantId - - * @param {IAccount[]} accounts - - * @param {IJournalPoster} transactions - - * @param {IJournalPoster} openingBalancesJournal - - * @param {IJournalPoster} closingBalancesJournal - - */ - constructor( - tenantId: number, - query: IGeneralLedgerSheetQuery, - accounts: IAccount[], - contactsByIdMap: Map, - transactions: IJournalPoster, - openingBalancesJournal: IJournalPoster, - baseCurrency: string, - i18n - ) { - super(); - - this.tenantId = tenantId; - this.query = query; - this.numberFormat = this.query.numberFormat; - this.accounts = accounts; - this.contactsMap = contactsByIdMap; - this.transactions = transactions; - this.openingBalancesJournal = openingBalancesJournal; - this.baseCurrency = baseCurrency; - this.i18n = i18n; - } - - /** - * Retrieve the transaction amount. - * @param {number} credit - Credit amount. - * @param {number} debit - Debit amount. - * @param {string} normal - Credit or debit. - */ - getAmount(credit: number, debit: number, normal: string) { - return normal === 'credit' ? credit - debit : debit - credit; - } - - /** - * Entry mapper. - * @param {IJournalEntry} entry - - * @return {IGeneralLedgerSheetAccountTransaction} - */ - entryReducer( - entries: IGeneralLedgerSheetAccountTransaction[], - entry: IJournalEntry, - openingBalance: number - ): IGeneralLedgerSheetAccountTransaction[] { - const lastEntry = last(entries); - - const contact = this.contactsMap.get(entry.contactId); - const amount = this.getAmount( - entry.credit, - entry.debit, - entry.accountNormal - ); - const runningBalance = - amount + (!isEmpty(entries) ? lastEntry.runningBalance : openingBalance); - - const newEntry = { - date: entry.date, - entryId: entry.id, - - referenceType: entry.referenceType, - referenceId: entry.referenceId, - referenceTypeFormatted: this.i18n.__(entry.referenceTypeFormatted), - - contactName: get(contact, 'displayName'), - contactType: get(contact, 'contactService'), - - transactionType: entry.transactionType, - index: entry.index, - note: entry.note, - - credit: entry.credit, - debit: entry.debit, - amount, - runningBalance, - - formattedAmount: this.formatNumber(amount), - formattedCredit: this.formatNumber(entry.credit), - formattedDebit: this.formatNumber(entry.debit), - formattedRunningBalance: this.formatNumber(runningBalance), - - currencyCode: this.baseCurrency, - }; - entries.push(newEntry); - - return entries; - } - - /** - * Mapping the account transactions to general ledger transactions of the given account. - * @param {IAccount} account - * @return {IGeneralLedgerSheetAccountTransaction[]} - */ - private accountTransactionsMapper( - account: IAccount, - openingBalance: number - ): IGeneralLedgerSheetAccountTransaction[] { - const entries = this.transactions.getAccountEntries(account.id); - - return entries.reduce( - ( - entries: IGeneralLedgerSheetAccountTransaction[], - entry: IJournalEntry - ) => { - return this.entryReducer(entries, entry, openingBalance); - }, - [] - ); - } - - /** - * Retrieve account opening balance. - * @param {IAccount} account - * @return {IGeneralLedgerSheetAccountBalance} - */ - private accountOpeningBalance( - account: IAccount - ): IGeneralLedgerSheetAccountBalance { - const amount = this.openingBalancesJournal.getAccountBalance(account.id); - const formattedAmount = this.formatTotalNumber(amount); - const currencyCode = this.baseCurrency; - const date = this.query.fromDate; - - return { amount, formattedAmount, currencyCode, date }; - } - - /** - * Retrieve account closing balance. - * @param {IAccount} account - * @return {IGeneralLedgerSheetAccountBalance} - */ - private accountClosingBalance( - openingBalance: number, - transactions: IGeneralLedgerSheetAccountTransaction[] - ): IGeneralLedgerSheetAccountBalance { - const amount = this.calcClosingBalance(openingBalance, transactions); - const formattedAmount = this.formatTotalNumber(amount); - const currencyCode = this.baseCurrency; - const date = this.query.toDate; - - return { amount, formattedAmount, currencyCode, date }; - } - - private calcClosingBalance( - openingBalance: number, - transactions: IGeneralLedgerSheetAccountTransaction[] - ) { - return openingBalance + sumBy(transactions, (trans) => trans.amount); - } - - /** - * Retreive general ledger accounts sections. - * @param {IAccount} account - * @return {IGeneralLedgerSheetAccount} - */ - private accountMapper(account: IAccount): IGeneralLedgerSheetAccount { - const openingBalance = this.accountOpeningBalance(account); - - const transactions = this.accountTransactionsMapper( - account, - openingBalance.amount - ); - const closingBalance = this.accountClosingBalance( - openingBalance.amount, - transactions - ); - - return { - id: account.id, - name: account.name, - code: account.code, - index: account.index, - parentAccountId: account.parentAccountId, - openingBalance, - transactions, - closingBalance, - }; - } - - /** - * Retrieve mapped accounts with general ledger transactions and opeing/closing balance. - * @param {IAccount[]} accounts - - * @return {IGeneralLedgerSheetAccount[]} - */ - private accountsWalker(accounts: IAccount[]): IGeneralLedgerSheetAccount[] { - return ( - accounts - .map((account: IAccount) => this.accountMapper(account)) - // Filter general ledger accounts that have no transactions - // when`noneTransactions` is on. - .filter( - (generalLedgerAccount: IGeneralLedgerSheetAccount) => - !( - generalLedgerAccount.transactions.length === 0 && - this.query.noneTransactions - ) - ) - ); - } - - /** - * Retrieve general ledger report data. - * @return {IGeneralLedgerSheetAccount[]} - */ - public reportData(): IGeneralLedgerSheetAccount[] { - return this.accountsWalker(this.accounts); - } -} diff --git a/server/src/services/FinancialStatements/GeneralLedger/GeneralLedgerService.ts b/server/src/services/FinancialStatements/GeneralLedger/GeneralLedgerService.ts deleted file mode 100644 index 7cbf2d9dc..000000000 --- a/server/src/services/FinancialStatements/GeneralLedger/GeneralLedgerService.ts +++ /dev/null @@ -1,170 +0,0 @@ -import { Service, Inject } from 'typedi'; -import moment from 'moment'; -import { ServiceError } from 'exceptions'; -import { difference } from 'lodash'; -import { IGeneralLedgerSheetQuery, IGeneralLedgerMeta } from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import Journal from 'services/Accounting/JournalPoster'; -import GeneralLedgerSheet from 'services/FinancialStatements/GeneralLedger/GeneralLedger'; -import InventoryService from 'services/Inventory/Inventory'; -import { transformToMap, parseBoolean } from 'utils'; -import { Tenant } from 'system/models'; - -const ERRORS = { - ACCOUNTS_NOT_FOUND: 'ACCOUNTS_NOT_FOUND', -}; - -@Service() -export default class GeneralLedgerService { - @Inject() - tenancy: TenancyService; - - @Inject() - inventoryService: InventoryService; - - @Inject('logger') - logger: any; - - /** - * Defaults general ledger report filter query. - * @return {IBalanceSheetQuery} - */ - get defaultQuery() { - return { - fromDate: moment().startOf('year').format('YYYY-MM-DD'), - toDate: moment().endOf('year').format('YYYY-MM-DD'), - basis: 'cash', - numberFormat: { - noCents: false, - divideOn1000: false, - }, - noneZero: false, - accountsIds: [], - }; - } - - /** - * Validates accounts existance on the storage. - * @param {number} tenantId - * @param {number[]} accountsIds - */ - async validateAccountsExistance(tenantId: number, accountsIds: number[]) { - const { Account } = this.tenancy.models(tenantId); - - const storedAccounts = await Account.query().whereIn('id', accountsIds); - const storedAccountsIds = storedAccounts.map((a) => a.id); - - if (difference(accountsIds, storedAccountsIds).length > 0) { - throw new ServiceError(ERRORS.ACCOUNTS_NOT_FOUND); - } - } - - /** - * Retrieve the balance sheet meta. - * @param {number} tenantId - - * @returns {IGeneralLedgerMeta} - */ - reportMetadata(tenantId: number): IGeneralLedgerMeta { - const settings = this.tenancy.settings(tenantId); - - const isCostComputeRunning = this.inventoryService - .isItemsCostComputeRunning(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - isCostComputeRunning: parseBoolean(isCostComputeRunning, false), - organizationName, - baseCurrency - }; - } - - /** - * Retrieve general ledger report statement. - * ---------- - * @param {number} tenantId - * @param {IGeneralLedgerSheetQuery} query - * @return {IGeneralLedgerStatement} - */ - async generalLedger( - tenantId: number, - query: IGeneralLedgerSheetQuery - ): Promise<{ - data: any; - query: IGeneralLedgerSheetQuery; - meta: IGeneralLedgerMeta - }> { - const { - accountRepository, - transactionsRepository, - contactRepository - } = this.tenancy.repositories(tenantId); - - const i18n = this.tenancy.i18n(tenantId); - - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const filter = { - ...this.defaultQuery, - ...query, - }; - // Retrieve all accounts with associated type from the storage. - const accounts = await accountRepository.all(); - const accountsGraph = await accountRepository.getDependencyGraph(); - - // Retrieve all contacts on the storage. - const contacts = await contactRepository.all(); - const contactsByIdMap = transformToMap(contacts, 'id'); - - // Retreive journal transactions from/to the given date. - const transactions = await transactionsRepository.journal({ - fromDate: filter.fromDate, - toDate: filter.toDate, - }); - // Retreive opening balance credit/debit sumation. - const openingBalanceTrans = await transactionsRepository.journal({ - toDate: moment(filter.fromDate).subtract(1, 'day'), - sumationCreditDebit: true, - }); - // Transform array transactions to journal collection. - const transactionsJournal = Journal.fromTransactions( - transactions, - tenantId, - accountsGraph - ); - // Accounts opening transactions. - const openingTransJournal = Journal.fromTransactions( - openingBalanceTrans, - tenantId, - accountsGraph - ); - // General ledger report instance. - const generalLedgerInstance = new GeneralLedgerSheet( - tenantId, - filter, - accounts, - contactsByIdMap, - transactionsJournal, - openingTransJournal, - tenant.metadata.baseCurrency, - i18n - ); - // Retrieve general ledger report data. - const reportData = generalLedgerInstance.reportData(); - - return { - data: reportData, - query: filter, - meta: this.reportMetadata(tenantId), - }; - } -} diff --git a/server/src/services/FinancialStatements/InventoryDetails/InventoryDetails.ts b/server/src/services/FinancialStatements/InventoryDetails/InventoryDetails.ts deleted file mode 100644 index b79b73d25..000000000 --- a/server/src/services/FinancialStatements/InventoryDetails/InventoryDetails.ts +++ /dev/null @@ -1,424 +0,0 @@ -import * as R from 'ramda'; -import { defaultTo, sumBy, get } from 'lodash'; -import moment from 'moment'; -import { - IInventoryDetailsQuery, - IItem, - IInventoryTransaction, - TInventoryTransactionDirection, - IInventoryDetailsNumber, - IInventoryDetailsDate, - IInventoryDetailsData, - IInventoryDetailsItem, - IInventoryDetailsClosing, - INumberFormatQuery, - IInventoryDetailsOpening, - IInventoryDetailsItemTransaction, - IFormatNumberSettings, -} from 'interfaces'; -import FinancialSheet from '../FinancialSheet'; -import { transformToMapBy, transformToMapKeyValue } from 'utils'; -import { filterDeep } from 'utils/deepdash'; - -const MAP_CONFIG = { childrenPath: 'children', pathFormat: 'array' }; - -enum INodeTypes { - ITEM = 'item', - TRANSACTION = 'transaction', - OPENING_ENTRY = 'OPENING_ENTRY', - CLOSING_ENTRY = 'CLOSING_ENTRY', -} - -export default class InventoryDetails extends FinancialSheet { - readonly inventoryTransactionsByItemId: Map; - readonly openingBalanceTransactions: Map; - readonly query: IInventoryDetailsQuery; - readonly numberFormat: INumberFormatQuery; - readonly baseCurrency: string; - readonly items: IItem[]; - - /** - * Constructor method. - * @param {IItem[]} items - Items. - * @param {IInventoryTransaction[]} inventoryTransactions - Inventory transactions. - * @param {IInventoryDetailsQuery} query - Report query. - * @param {string} baseCurrency - The base currency. - */ - constructor( - items: IItem[], - openingBalanceTransactions: IInventoryTransaction[], - inventoryTransactions: IInventoryTransaction[], - query: IInventoryDetailsQuery, - baseCurrency: string, - i18n: any, - ) { - super(); - - this.inventoryTransactionsByItemId = transformToMapBy( - inventoryTransactions, - 'itemId' - ); - this.openingBalanceTransactions = transformToMapKeyValue( - openingBalanceTransactions, - 'itemId' - ); - this.query = query; - this.numberFormat = this.query.numberFormat; - this.items = items; - this.baseCurrency = baseCurrency; - this.i18n = i18n; - } - - /** - * Retrieve the number meta. - * @param {number} number - * @returns - */ - private getNumberMeta( - number: number, - settings?: IFormatNumberSettings - ): IInventoryDetailsNumber { - return { - formattedNumber: this.formatNumber(number, { - excerptZero: true, - money: false, - ...settings, - }), - number: number, - }; - } - - /** - * Retrieve the total number meta. - * @param {number} number - - * @param {IFormatNumberSettings} settings - - * @retrun {IInventoryDetailsNumber} - */ - private getTotalNumberMeta( - number: number, - settings?: IFormatNumberSettings - ): IInventoryDetailsNumber { - return this.getNumberMeta(number, { excerptZero: false, ...settings }); - } - - /** - * Retrieve the date meta. - * @param {Date|string} date - * @returns {IInventoryDetailsDate} - */ - private getDateMeta(date: Date | string): IInventoryDetailsDate { - return { - formattedDate: moment(date).format('YYYY-MM-DD'), - date: moment(date).toDate(), - }; - } - - /** - * Adjusts the movement amount. - * @param {number} amount - * @param {TInventoryTransactionDirection} direction - * @returns {number} - */ - private adjustAmountMovement( - direction: TInventoryTransactionDirection, - amount: number - ): number { - return direction === 'OUT' ? amount * -1 : amount; - } - - /** - * Accumlate and mapping running quantity on transactions. - * @param {IInventoryDetailsItemTransaction[]} transactions - * @returns {IInventoryDetailsItemTransaction[]} - */ - private mapAccumTransactionsRunningQuantity( - transactions: IInventoryDetailsItemTransaction[] - ): IInventoryDetailsItemTransaction[] { - const initial = this.getNumberMeta(0); - - const mapAccumAppender = (a, b) => { - const total = a.runningQuantity.number + b.quantityMovement.number; - const totalMeta = this.getNumberMeta(total, { excerptZero: false }); - const accum = { ...b, runningQuantity: totalMeta }; - - return [accum, accum]; - }; - return R.mapAccum( - mapAccumAppender, - { runningQuantity: initial }, - transactions - )[1]; - } - - /** - * Accumlate and mapping running valuation on transactions. - * @param {IInventoryDetailsItemTransaction[]} transactions - * @returns {IInventoryDetailsItemTransaction} - */ - private mapAccumTransactionsRunningValuation( - transactions: IInventoryDetailsItemTransaction[] - ): IInventoryDetailsItemTransaction[] { - const initial = this.getNumberMeta(0); - - const mapAccumAppender = (a, b) => { - const adjusmtent = b.direction === 'OUT' ? -1 : 1; - const total = a.runningValuation.number + b.cost.number * adjusmtent; - const totalMeta = this.getNumberMeta(total, { excerptZero: false }); - const accum = { ...b, runningValuation: totalMeta }; - - return [accum, accum]; - }; - return R.mapAccum( - mapAccumAppender, - { runningValuation: initial }, - transactions - )[1]; - } - - /** - * Mappes the item transaction to inventory item transaction node. - * @param {IItem} item - * @param {IInvetoryTransaction} transaction - * @returns {IInventoryDetailsItemTransaction} - */ - private itemTransactionMapper( - item: IItem, - transaction: IInventoryTransaction - ): IInventoryDetailsItemTransaction { - const total = transaction.quantity * transaction.rate; - const amountMovement = R.curry(this.adjustAmountMovement)( - transaction.direction - ); - // Quantity movement. - const quantityMovement = amountMovement(transaction.quantity); - const cost = defaultTo(transaction?.costLotAggregated.cost, 0); - - // Profit margin. - const profitMargin = total - cost; - - // Value from computed cost in `OUT` or from total sell price in `IN` transaction. - const value = transaction.direction === 'OUT' ? cost : total; - - // Value movement depends on transaction direction. - const valueMovement = amountMovement(value); - - return { - nodeType: INodeTypes.TRANSACTION, - date: this.getDateMeta(transaction.date), - transactionType: this.i18n.__(transaction.transcationTypeFormatted), - transactionNumber: transaction?.meta?.transactionNumber, - direction: transaction.direction, - - quantityMovement: this.getNumberMeta(quantityMovement), - valueMovement: this.getNumberMeta(valueMovement), - - quantity: this.getNumberMeta(transaction.quantity), - total: this.getNumberMeta(total), - - rate: this.getNumberMeta(transaction.rate), - cost: this.getNumberMeta(transaction.costLotAggregated.cost), - value: this.getNumberMeta(value), - - profitMargin: this.getNumberMeta(profitMargin), - - runningQuantity: this.getNumberMeta(0), - runningValuation: this.getNumberMeta(0), - }; - } - - /** - * Retrieve the inventory transcations by item id. - * @param {number} itemId - * @returns {IInventoryTransaction[]} - */ - private getInventoryTransactionsByItemId( - itemId: number - ): IInventoryTransaction[] { - return defaultTo(this.inventoryTransactionsByItemId.get(itemId + ''), []); - } - - /** - * Retrieve the item transaction node by the given item. - * @param {IItem} item - * @returns {IInventoryDetailsItemTransaction[]} - */ - private getItemTransactions(item: IItem): IInventoryDetailsItemTransaction[] { - const transactions = this.getInventoryTransactionsByItemId(item.id); - - return R.compose( - this.mapAccumTransactionsRunningQuantity.bind(this), - this.mapAccumTransactionsRunningValuation.bind(this), - R.map(R.curry(this.itemTransactionMapper.bind(this))(item)) - )(transactions); - } - - /** - * Mappes the given item transactions. - * @param {IItem} item - - * @returns {( - * IInventoryDetailsItemTransaction - * | IInventoryDetailsOpening - * | IInventoryDetailsClosing - * )[]} - */ - private itemTransactionsMapper( - item: IItem - ): ( - | IInventoryDetailsItemTransaction - | IInventoryDetailsOpening - | IInventoryDetailsClosing - )[] { - const transactions = this.getItemTransactions(item); - const openingValuation = this.getItemOpeingValuation(item); - const closingValuation = this.getItemClosingValuation( - item, - transactions, - openingValuation - ); - const hasTransactions = transactions.length > 0; - const isItemHasOpeningBalance = this.isItemHasOpeningBalance(item.id); - - return R.pipe( - R.concat(transactions), - R.when(R.always(isItemHasOpeningBalance), R.prepend(openingValuation)), - R.when(R.always(hasTransactions), R.append(closingValuation)) - )([]); - } - - /** - * Detarmines the given item has opening balance transaction. - * @param {number} itemId - Item id. - * @return {boolean} - */ - private isItemHasOpeningBalance(itemId: number): boolean { - return !!this.openingBalanceTransactions.get(itemId); - } - - /** - * Retrieve the given item opening valuation. - * @param {IItem} item - - * @returns {IInventoryDetailsOpening} - */ - private getItemOpeingValuation(item: IItem): IInventoryDetailsOpening { - const openingBalance = this.openingBalanceTransactions.get(item.id); - const quantity = defaultTo(get(openingBalance, 'quantity'), 0); - const value = defaultTo(get(openingBalance, 'value'), 0); - - return { - nodeType: INodeTypes.OPENING_ENTRY, - date: this.getDateMeta(this.query.fromDate), - quantity: this.getTotalNumberMeta(quantity), - value: this.getTotalNumberMeta(value), - }; - } - - /** - * Retrieve the given item closing valuation. - * @param {IItem} item - - * @returns {IInventoryDetailsOpening} - */ - private getItemClosingValuation( - item: IItem, - transactions: IInventoryDetailsItemTransaction[], - openingValuation: IInventoryDetailsOpening - ): IInventoryDetailsOpening { - const value = sumBy(transactions, 'valueMovement.number'); - const quantity = sumBy(transactions, 'quantityMovement.number'); - const profitMargin = sumBy(transactions, 'profitMargin.number'); - - const closingQuantity = quantity + openingValuation.quantity.number; - const closingValue = value + openingValuation.value.number; - - return { - nodeType: INodeTypes.CLOSING_ENTRY, - date: this.getDateMeta(this.query.toDate), - quantity: this.getTotalNumberMeta(closingQuantity), - value: this.getTotalNumberMeta(closingValue), - profitMargin: this.getTotalNumberMeta(profitMargin), - }; - } - - /** - * Retrieve the item node of the report. - * @param {IItem} item - * @returns {IInventoryDetailsItem} - */ - private itemsNodeMapper(item: IItem): IInventoryDetailsItem { - return { - id: item.id, - name: item.name, - code: item.code, - nodeType: INodeTypes.ITEM, - children: this.itemTransactionsMapper(item), - }; - } - - /** - * Detarmines the given node equals the given type. - * @param {string} nodeType - * @param {IItem} node - * @returns {boolean} - */ - private isNodeTypeEquals( - nodeType: string, - node: IInventoryDetailsItem - ): boolean { - return nodeType === node.nodeType; - } - - /** - * Detarmines whether the given item node has transactions. - * @param {IInventoryDetailsItem} item - * @returns {boolean} - */ - private isItemNodeHasTransactions(item: IInventoryDetailsItem) { - return !!this.inventoryTransactionsByItemId.get(item.id); - } - - /** - * Detarmines the filter - * @param {IInventoryDetailsItem} item - * @return {boolean} - */ - private isFilterNode(item: IInventoryDetailsItem): boolean { - return R.ifElse( - R.curry(this.isNodeTypeEquals)(INodeTypes.ITEM), - this.isItemNodeHasTransactions.bind(this), - R.always(true) - )(item); - } - - /** - * Filters items nodes. - * @param {IInventoryDetailsItem[]} items - - * @returns {IInventoryDetailsItem[]} - */ - private filterItemsNodes(items: IInventoryDetailsItem[]) { - const filtered = filterDeep( - items, - this.isFilterNode.bind(this), - MAP_CONFIG - ); - return defaultTo(filtered, []); - } - - /** - * Retrieve the items nodes of the report. - * @param {IItem} items - * @returns {IInventoryDetailsItem[]} - */ - private itemsNodes(items: IItem[]): IInventoryDetailsItem[] { - return R.compose( - this.filterItemsNodes.bind(this), - R.map(this.itemsNodeMapper.bind(this)) - )(items); - } - - /** - * Retrieve the inventory item details report data. - * @returns {IInventoryDetailsData} - */ - public reportData(): IInventoryDetailsData { - return this.itemsNodes(this.items); - } -} diff --git a/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsRepository.ts b/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsRepository.ts deleted file mode 100644 index 538febe9b..000000000 --- a/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsRepository.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { Inject } from 'typedi'; -import { raw } from 'objection'; -import { isEmpty } from 'lodash'; -import moment from 'moment'; -import { - IItem, - IInventoryDetailsQuery, - IInventoryTransaction, -} from 'interfaces'; -import HasTenancyService from 'services/Tenancy/TenancyService'; - -export default class InventoryDetailsRepository { - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve inventory items. - * @param {number} tenantId - - * @returns {Promise} - */ - public getInventoryItems(tenantId: number, itemsIds?: number[]): Promise { - const { Item } = this.tenancy.models(tenantId); - - return Item.query().onBuild((q) => { - q.where('type', 'inventory'); - - if (!isEmpty(itemsIds)) { - q.whereIn('id', itemsIds); - } - }) - } - - /** - * Retrieve the items opening balance transactions. - * @param {number} tenantId - - * @param {IInventoryDetailsQuery} - * @return {Promise} - */ - public async openingBalanceTransactions( - tenantId: number, - filter: IInventoryDetailsQuery - ): Promise { - const { InventoryTransaction } = this.tenancy.models(tenantId); - - const openingBalanceDate = moment(filter.fromDate) - .subtract(1, 'days') - .toDate(); - - // Opening inventory transactions. - const openingTransactions = InventoryTransaction.query() - .select('*') - .select(raw("IF(`DIRECTION` = 'IN', `QUANTITY`, 0) as 'QUANTITY_IN'")) - .select(raw("IF(`DIRECTION` = 'OUT', `QUANTITY`, 0) as 'QUANTITY_OUT'")) - .select( - raw("IF(`DIRECTION` = 'IN', `QUANTITY` * `RATE`, 0) as 'VALUE_IN'") - ) - .select( - raw("IF(`DIRECTION` = 'OUT', `QUANTITY` * `RATE`, 0) as 'VALUE_OUT'") - ) - .modify('filterDateRange', null, openingBalanceDate) - .orderBy('date', 'ASC') - .as('inventory_transactions'); - - const openingBalanceTransactions = await InventoryTransaction.query() - .from(openingTransactions) - .select('itemId') - .select(raw('SUM(`QUANTITY_IN` - `QUANTITY_OUT`) AS `QUANTITY`')) - .select(raw('SUM(`VALUE_IN` - `VALUE_OUT`) AS `VALUE`')) - .groupBy('itemId') - .sum('rate as rate') - .sum('quantityIn as quantityIn') - .sum('quantityOut as quantityOut') - .sum('valueIn as valueIn') - .sum('valueOut as valueOut') - .withGraphFetched('itemCostAggregated'); - - return openingBalanceTransactions; - } - - /** - * Retrieve the items inventory tranasactions. - * @param {number} tenantId - - * @param {IInventoryDetailsQuery} - * @return {Promise} - */ - public async itemInventoryTransactions( - tenantId: number, - filter: IInventoryDetailsQuery - ): Promise { - const { InventoryTransaction } = this.tenancy.models(tenantId); - - const inventoryTransactions = InventoryTransaction.query() - .modify('filterDateRange', filter.fromDate, filter.toDate) - .orderBy('date', 'ASC') - .withGraphFetched('meta') - .withGraphFetched('costLotAggregated'); - - return inventoryTransactions; - } -} diff --git a/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsService.ts b/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsService.ts deleted file mode 100644 index 755b0ab29..000000000 --- a/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsService.ts +++ /dev/null @@ -1,123 +0,0 @@ -import moment from 'moment'; -import { Service, Inject } from 'typedi'; -import { - IInventoryDetailsQuery, - IInvetoryItemDetailDOO, - IInventoryItemDetailMeta, -} from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import InventoryDetails from './InventoryDetails'; -import FinancialSheet from '../FinancialSheet'; -import InventoryDetailsRepository from './InventoryDetailsRepository'; -import InventoryService from 'services/Inventory/Inventory'; -import { parseBoolean } from 'utils'; -import { Tenant } from 'system/models'; - -@Service() -export default class InventoryDetailsService extends FinancialSheet { - @Inject() - tenancy: TenancyService; - - @Inject() - reportRepo: InventoryDetailsRepository; - - @Inject() - inventoryService: InventoryService; - - /** - * Defaults balance sheet filter query. - * @return {IBalanceSheetQuery} - */ - private get defaultQuery(): IInventoryDetailsQuery { - return { - fromDate: moment().startOf('year').format('YYYY-MM-DD'), - toDate: moment().endOf('year').format('YYYY-MM-DD'), - itemsIds: [], - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'total', - negativeFormat: 'mines', - }, - noneTransactions: false, - }; - } - - /** - * Retrieve the balance sheet meta. - * @param {number} tenantId - - * @returns {IInventoryItemDetailMeta} - */ - private reportMetadata(tenantId: number): IInventoryItemDetailMeta { - const settings = this.tenancy.settings(tenantId); - - const isCostComputeRunning = - this.inventoryService.isItemsCostComputeRunning(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - isCostComputeRunning: parseBoolean(isCostComputeRunning, false), - organizationName, - baseCurrency, - }; - } - - /** - * Retrieve the inventory details report data. - * @param {number} tenantId - - * @param {IInventoryDetailsQuery} query - - * @return {Promise} - */ - public async inventoryDetails( - tenantId: number, - query: IInventoryDetailsQuery - ): Promise { - const i18n = this.tenancy.i18n(tenantId); - - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const filter = { - ...this.defaultQuery, - ...query, - }; - // Retrieves the items. - const items = await this.reportRepo.getInventoryItems( - tenantId, - filter.itemsIds - ); - // Opening balance transactions. - const openingBalanceTransactions = - await this.reportRepo.openingBalanceTransactions(tenantId, filter); - - // Retrieves the inventory transaction. - const inventoryTransactions = - await this.reportRepo.itemInventoryTransactions(tenantId, filter); - - // Inventory details report mapper. - const inventoryDetailsInstance = new InventoryDetails( - items, - openingBalanceTransactions, - inventoryTransactions, - filter, - tenant.metadata.baseCurrency, - i18n - ); - - return { - data: inventoryDetailsInstance.reportData(), - query: filter, - meta: this.reportMetadata(tenantId), - }; - } -} diff --git a/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsTable.ts b/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsTable.ts deleted file mode 100644 index 314616b4c..000000000 --- a/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsTable.ts +++ /dev/null @@ -1,197 +0,0 @@ -import * as R from 'ramda'; -import { - IInventoryDetailsItem, - IInventoryDetailsItemTransaction, - IInventoryDetailsClosing, - ITableColumn, - ITableRow, - IInventoryDetailsNode, - IInventoryDetailsOpening, -} from 'interfaces'; -import { mapValuesDeep } from 'utils/deepdash'; -import { tableRowMapper } from 'utils'; - -enum IROW_TYPE { - ITEM = 'ITEM', - TRANSACTION = 'TRANSACTION', - CLOSING_ENTRY = 'CLOSING_ENTRY', - OPENING_ENTRY = 'OPENING_ENTRY', -} - -const MAP_CONFIG = { childrenPath: 'children', pathFormat: 'array' }; - -export default class InventoryDetailsTable { - i18n: any; - report: any; - - /** - * Constructor method. - * @param {ICashFlowStatement} reportStatement - Report statement. - */ - constructor(reportStatement, i18n) { - this.report = reportStatement; - this.i18n = i18n; - } - - /** - * Mappes the item node to table rows. - * @param {IInventoryDetailsItem} item - * @returns {ITableRow} - */ - private itemNodeMapper = (item: IInventoryDetailsItem) => { - const columns = [{ key: 'item_name', accessor: 'name' }]; - - return tableRowMapper(item, columns, { - rowTypes: [IROW_TYPE.ITEM], - }); - }; - - /** - * Mappes the item inventory transaction to table row. - * @param {IInventoryDetailsItemTransaction} transaction - * @returns {ITableRow} - */ - private itemTransactionNodeMapper = ( - transaction: IInventoryDetailsItemTransaction - ) => { - const columns = [ - { key: 'date', accessor: 'date.formattedDate' }, - { key: 'transaction_type', accessor: 'transactionType' }, - { key: 'transaction_id', accessor: 'transactionNumber' }, - { - key: 'quantity_movement', - accessor: 'quantityMovement.formattedNumber', - }, - { key: 'rate', accessor: 'rate.formattedNumber' }, - { key: 'total', accessor: 'total.formattedNumber' }, - { key: 'value', accessor: 'valueMovement.formattedNumber' }, - { key: 'profit_margin', accessor: 'profitMargin.formattedNumber' }, - { key: 'running_quantity', accessor: 'runningQuantity.formattedNumber' }, - { - key: 'running_valuation', - accessor: 'runningValuation.formattedNumber', - }, - ]; - return tableRowMapper(transaction, columns, { - rowTypes: [IROW_TYPE.TRANSACTION], - }); - }; - - /** - * Opening balance transaction mapper to table row. - * @param {IInventoryDetailsOpening} transaction - * @returns {ITableRow} - */ - private openingNodeMapper = ( - transaction: IInventoryDetailsOpening - ): ITableRow => { - const columns = [ - { key: 'date', accessor: 'date.formattedDate' }, - { key: 'closing', value: this.i18n.__('Opening balance') }, - { key: 'empty' }, - { key: 'quantity', accessor: 'quantity.formattedNumber' }, - { key: 'empty' }, - { key: 'empty' }, - { key: 'value', accessor: 'value.formattedNumber' }, - ]; - return tableRowMapper(transaction, columns, { - rowTypes: [IROW_TYPE.OPENING_ENTRY], - }); - }; - - /** - * Closing balance transaction mapper to table raw. - * @param {IInventoryDetailsClosing} transaction - * @returns {ITableRow} - */ - private closingNodeMapper = ( - transaction: IInventoryDetailsClosing - ): ITableRow => { - const columns = [ - { key: 'date', accessor: 'date.formattedDate' }, - { key: 'closing', value: this.i18n.__('Closing balance') }, - { key: 'empty' }, - { key: 'quantity', accessor: 'quantity.formattedNumber' }, - { key: 'empty' }, - { key: 'empty' }, - { key: 'value', accessor: 'value.formattedNumber' }, - { key: 'profitMargin', accessor: 'profitMargin.formattedNumber' }, - ]; - - return tableRowMapper(transaction, columns, { - rowTypes: [IROW_TYPE.CLOSING_ENTRY], - }); - }; - - /** - * Detarmines the ginve inventory details node type. - * @param {string} type - * @param {IInventoryDetailsNode} node - * @returns {boolean} - */ - private isNodeTypeEquals = ( - type: string, - node: IInventoryDetailsNode - ): boolean => { - return node.nodeType === type; - }; - - /** - * Mappes the given item or transactions node to table rows. - * @param {IInventoryDetailsNode} node - - * @return {ITableRow} - */ - private itemMapper = (node: IInventoryDetailsNode): ITableRow => { - return R.compose( - R.when( - R.curry(this.isNodeTypeEquals)('OPENING_ENTRY'), - this.openingNodeMapper - ), - R.when( - R.curry(this.isNodeTypeEquals)('CLOSING_ENTRY'), - this.closingNodeMapper - ), - R.when(R.curry(this.isNodeTypeEquals)('item'), this.itemNodeMapper), - R.when( - R.curry(this.isNodeTypeEquals)('transaction'), - this.itemTransactionNodeMapper - ) - )(node); - }; - - /** - * Mappes the items nodes to table rows. - * @param {IInventoryDetailsItem[]} items - * @returns {ITableRow[]} - */ - private itemsMapper = (items: IInventoryDetailsItem[]): ITableRow[] => { - return mapValuesDeep(items, this.itemMapper, MAP_CONFIG); - }; - - /** - * Retrieve the table rows of the inventory item details. - * @returns {ITableRow[]} - */ - public tableData = (): ITableRow[] => { - return this.itemsMapper(this.report.data); - }; - - /** - * Retrieve the table columns of inventory details report. - * @returns {ITableColumn[]} - */ - public tableColumns = (): ITableColumn[] => { - return [ - { key: 'date', label: this.i18n.__('Date') }, - { key: 'transaction_type', label: this.i18n.__('Transaction type') }, - { key: 'transaction_id', label: this.i18n.__('Transaction #') }, - { key: 'quantity', label: this.i18n.__('Quantity') }, - { key: 'rate', label: this.i18n.__('Rate') }, - { key: 'total', label: this.i18n.__('Total') }, - { key: 'value', label: this.i18n.__('Value') }, - { key: 'profit_margin', label: this.i18n.__('Profit Margin') }, - { key: 'running_quantity', label: this.i18n.__('Running quantity') }, - { key: 'running_value', label: this.i18n.__('Running Value') }, - ]; - }; -} diff --git a/server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheet.ts b/server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheet.ts deleted file mode 100644 index 0a27147ce..000000000 --- a/server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheet.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { sumBy, get } from 'lodash'; -import FinancialSheet from '../FinancialSheet'; -import { - IItem, - IInventoryValuationReportQuery, - IInventoryValuationItem, - InventoryCostLotTracker, - IInventoryValuationStatement, - IInventoryValuationTotal -} from 'interfaces'; -import { transformToMap } from 'utils' - -export default class InventoryValuationSheet extends FinancialSheet { - readonly query: IInventoryValuationReportQuery; - readonly items: IItem[]; - readonly INInventoryCostLots: Map; - readonly OUTInventoryCostLots: Map; - readonly baseCurrency: string; - - /** - * Constructor method. - * @param {IInventoryValuationReportQuery} query - * @param items - * @param INInventoryCostLots - * @param OUTInventoryCostLots - * @param baseCurrency - */ - constructor( - query: IInventoryValuationReportQuery, - items: IItem[], - INInventoryCostLots: Map, - OUTInventoryCostLots: Map, - baseCurrency: string - ) { - super(); - - this.query = query; - this.items = items; - this.INInventoryCostLots = transformToMap(INInventoryCostLots, 'itemId'); - this.OUTInventoryCostLots = transformToMap(OUTInventoryCostLots, 'itemId'); - this.baseCurrency = baseCurrency; - this.numberFormat = this.query.numberFormat; - } - - /** - * Retrieve the item cost and quantity from the given transaction map. - * @param {Map} transactionsMap - * @param {number} itemId - * @returns - */ - private getItemTransaction( - transactionsMap: Map, - itemId: number, - ): { cost: number, quantity: number } { - const meta = transactionsMap.get(itemId); - - const cost = get(meta, 'cost', 0); - const quantity = get(meta, 'quantity', 0); - - return { cost, quantity }; - } - - /** - * Retrieve the cost and quantity of the givne item from `IN` transactions. - * @param {number} itemId - - */ - private getItemINTransaction( - itemId: number, - ): { cost: number, quantity: number } { - return this.getItemTransaction(this.INInventoryCostLots, itemId); - } - - /** - * Retrieve the cost and quantity of the given item from `OUT` transactions. - * @param {number} itemId - - */ - private getItemOUTTransaction( - itemId: number, - ): { cost: number, quantity: number } { - return this.getItemTransaction(this.OUTInventoryCostLots, itemId); - } - - /** - * Retrieve the item closing valuation. - * @param {number} itemId - Item id. - */ - private getItemValuation(itemId: number): number { - const { cost: INValuation } = this.getItemINTransaction(itemId); - const { cost: OUTValuation } = this.getItemOUTTransaction(itemId); - - return Math.max(INValuation - OUTValuation, 0); - } - - /** - * Retrieve the item closing quantity. - * @param {number} itemId - Item id. - */ - private getItemQuantity(itemId: number): number { - const { quantity: INQuantity } = this.getItemINTransaction(itemId); - const { quantity: OUTQuantity } = this.getItemOUTTransaction(itemId); - - return INQuantity - OUTQuantity; - } - - /** - * Calculates the item weighted average cost from the given valuation and quantity. - * @param {number} valuation - * @param {number} quantity - * @returns {number} - */ - private calcAverage(valuation: number, quantity: number): number { - return quantity ? valuation / quantity : 0; - } - - /** - * Mapping the item model object to inventory valuation item - * @param {IItem} item - * @returns {IInventoryValuationItem} - */ - private itemMapper(item: IItem): IInventoryValuationItem { - const valuation = this.getItemValuation(item.id); - const quantity = this.getItemQuantity(item.id); - const average = this.calcAverage(valuation, quantity); - - return { - id: item.id, - name: item.name, - code: item.code, - valuation, - quantity, - average, - valuationFormatted: this.formatNumber(valuation), - quantityFormatted: this.formatNumber(quantity, { money: false }), - averageFormatted: this.formatNumber(average, { money: false }), - currencyCode: this.baseCurrency - }; - } - - /** - * Retrieve the inventory valuation items. - * @returns {IInventoryValuationItem[]} - */ - private itemsSection(): IInventoryValuationItem[] { - return this.items.map(this.itemMapper.bind(this)); - } - - /** - * Retrieve the inventory valuation total. - * @param {IInventoryValuationItem[]} items - * @returns {IInventoryValuationTotal} - */ - private totalSection(items: IInventoryValuationItem[]): IInventoryValuationTotal { - const valuation = sumBy(items, item => item.valuation); - const quantity = sumBy(items, item => item.quantity); - - return { - valuation, - quantity, - valuationFormatted: this.formatTotalNumber(valuation), - quantityFormatted: this.formatTotalNumber(quantity, { money: false }), - }; - } - - /** - * Retrieve the inventory valuation report data. - * @returns {IInventoryValuationStatement} - */ - public reportData(): IInventoryValuationStatement { - const items = this.itemsSection(); - const total = this.totalSection(items); - - return items.length > 0 ? { items, total } : {}; - } -} \ No newline at end of file diff --git a/server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheetService.ts b/server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheetService.ts deleted file mode 100644 index db6cd030f..000000000 --- a/server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheetService.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { Service, Inject } from 'typedi'; -import moment from 'moment'; -import { - IInventoryValuationReportQuery, - IInventoryValuationSheetMeta, -} from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import InventoryValuationSheet from './InventoryValuationSheet'; -import InventoryService from 'services/Inventory/Inventory'; -import { Tenant } from 'system/models'; - -@Service() -export default class InventoryValuationSheetService { - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - @Inject() - inventoryService: InventoryService; - - /** - * Defaults balance sheet filter query. - * @return {IBalanceSheetQuery} - */ - get defaultQuery(): IInventoryValuationReportQuery { - return { - asDate: moment().endOf('year').format('YYYY-MM-DD'), - itemsIds: [], - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'always', - negativeFormat: 'mines', - }, - noneTransactions: false, - }; - } - - /** - * Retrieve the balance sheet meta. - * @param {number} tenantId - - * @returns {IBalanceSheetMeta} - */ - reportMetadata(tenantId: number): IInventoryValuationSheetMeta { - const settings = this.tenancy.settings(tenantId); - - const isCostComputeRunning = this.inventoryService - .isItemsCostComputeRunning(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - organizationName, - baseCurrency, - isCostComputeRunning - }; - } - - /** - * Inventory valuation sheet. - * @param {number} tenantId - Tenant id. - * @param {IInventoryValuationReportQuery} query - Valuation query. - */ - public async inventoryValuationSheet( - tenantId: number, - query: IInventoryValuationReportQuery, - ) { - const { Item, InventoryCostLotTracker } = this.tenancy.models(tenantId); - - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const filter = { - ...this.defaultQuery, - ...query, - }; - const inventoryItems = await Item.query().onBuild(q => { - q.where('type', 'inventory'); - - if (filter.itemsIds.length > 0) { - q.whereIn('id', filter.itemsIds); - } - }); - const inventoryItemsIds = inventoryItems.map((item) => item.id); - - const commonQuery = (builder) => { - builder.whereIn('item_id', inventoryItemsIds); - builder.sum('rate as rate'); - builder.sum('quantity as quantity'); - builder.sum('cost as cost'); - builder.select('itemId'); - builder.groupBy('itemId'); - }; - // Retrieve the inventory cost `IN` transactions. - const INTransactions = await InventoryCostLotTracker.query() - .onBuild(commonQuery) - .where('direction', 'IN'); - - // Retrieve the inventory cost `OUT` transactions. - const OUTTransactions = await InventoryCostLotTracker.query() - .onBuild(commonQuery) - .where('direction', 'OUT'); - - const inventoryValuationInstance = new InventoryValuationSheet( - filter, - inventoryItems, - INTransactions, - OUTTransactions, - tenant.metadata.baseCurrency, - ); - // Retrieve the inventory valuation report data. - const inventoryValuationData = inventoryValuationInstance.reportData(); - - return { - data: inventoryValuationData, - query: filter, - meta: this.reportMetadata(tenantId), - } - } -} \ No newline at end of file diff --git a/server/src/services/FinancialStatements/JournalSheet/JournalSheet.ts b/server/src/services/FinancialStatements/JournalSheet/JournalSheet.ts deleted file mode 100644 index 14c0f6c1a..000000000 --- a/server/src/services/FinancialStatements/JournalSheet/JournalSheet.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { sumBy, chain, get, head } from 'lodash'; -import { - IJournalEntry, - IJournalPoster, - IJournalReportEntriesGroup, - IJournalReportQuery, - IJournalReport, - IContact, -} from 'interfaces'; -import FinancialSheet from '../FinancialSheet'; - -export default class JournalSheet extends FinancialSheet { - readonly tenantId: number; - readonly journal: IJournalPoster; - readonly query: IJournalReportQuery; - readonly baseCurrency: string; - readonly contactsById: Map; - - /** - * Constructor method. - * @param {number} tenantId - * @param {IJournalPoster} journal - */ - constructor( - tenantId: number, - query: IJournalReportQuery, - journal: IJournalPoster, - accountsGraph: any, - contactsById: Map, - baseCurrency: string, - i18n - ) { - super(); - - this.tenantId = tenantId; - this.journal = journal; - this.query = query; - this.numberFormat = this.query.numberFormat; - this.accountsGraph = accountsGraph; - this.contactsById = contactsById; - this.baseCurrency = baseCurrency; - this.i18n = i18n; - } - - /** - * Entry mapper. - * @param {IJournalEntry} entry - */ - entryMapper(entry: IJournalEntry) { - const account = this.accountsGraph.getNodeData(entry.accountId); - const contact = this.contactsById.get(entry.contactId); - - return { - entryId: entry.id, - index: entry.index, - note: entry.note, - - contactName: get(contact, 'displayName'), - contactType: get(contact, 'contactService'), - - accountName: account.name, - accountCode: account.code, - transactionNumber: entry.transactionNumber, - - currencyCode: this.baseCurrency, - formattedCredit: this.formatNumber(entry.credit), - formattedDebit: this.formatNumber(entry.debit), - - credit: entry.credit, - debit: entry.debit, - - createdAt: entry.createdAt, - }; - } - - /** - * Mappes the journal entries. - * @param {IJournalEntry[]} entries - - */ - entriesMapper(entries: IJournalEntry[]) { - return entries.map(this.entryMapper.bind(this)); - } - - /** - * Mapping journal entries groups. - * @param {IJournalEntry[]} entriesGroup - - * @param {string} key - - * @return {IJournalReportEntriesGroup} - */ - entriesGroupsMapper( - entriesGroup: IJournalEntry[], - groupEntry: IJournalEntry - ): IJournalReportEntriesGroup { - const totalCredit = sumBy(entriesGroup, 'credit'); - const totalDebit = sumBy(entriesGroup, 'debit'); - - return { - date: groupEntry.date, - referenceType: groupEntry.referenceType, - referenceId: groupEntry.referenceId, - referenceTypeFormatted: this.i18n.__(groupEntry.referenceTypeFormatted), - - entries: this.entriesMapper(entriesGroup), - - currencyCode: this.baseCurrency, - - credit: totalCredit, - debit: totalDebit, - - formattedCredit: this.formatTotalNumber(totalCredit), - formattedDebit: this.formatTotalNumber(totalDebit), - }; - } - - /** - * Mapping the journal entries to entries groups. - * @param {IJournalEntry[]} entries - * @return {IJournalReportEntriesGroup[]} - */ - entriesWalker(entries: IJournalEntry[]): IJournalReportEntriesGroup[] { - return chain(entries) - .groupBy((entry) => `${entry.referenceId}-${entry.referenceType}`) - .map((entriesGroup: IJournalEntry[], key: string) => { - const headEntry = head(entriesGroup); - return this.entriesGroupsMapper(entriesGroup, headEntry); - }) - .value(); - } - - /** - * Retrieve journal report. - * @return {IJournalReport} - */ - reportData(): IJournalReport { - return this.entriesWalker(this.journal.entries); - } -} diff --git a/server/src/services/FinancialStatements/JournalSheet/JournalSheetService.ts b/server/src/services/FinancialStatements/JournalSheet/JournalSheetService.ts deleted file mode 100644 index 868c37e47..000000000 --- a/server/src/services/FinancialStatements/JournalSheet/JournalSheetService.ts +++ /dev/null @@ -1,142 +0,0 @@ -import { Service, Inject } from 'typedi'; -import moment from 'moment'; -import { IJournalReportQuery, IJournalSheetMeta } from 'interfaces'; - -import JournalSheet from './JournalSheet'; -import TenancyService from 'services/Tenancy/TenancyService'; -import Journal from 'services/Accounting/JournalPoster'; -import InventoryService from 'services/Inventory/Inventory'; -import { parseBoolean, transformToMap } from 'utils'; -import { Tenant } from 'system/models'; - -@Service() -export default class JournalSheetService { - @Inject() - tenancy: TenancyService; - - @Inject() - inventoryService: InventoryService; - - @Inject('logger') - logger: any; - - /** - * Default journal sheet filter queyr. - */ - get defaultQuery() { - return { - fromDate: moment().startOf('year').format('YYYY-MM-DD'), - toDate: moment().endOf('year').format('YYYY-MM-DD'), - fromRange: null, - toRange: null, - accountsIds: [], - numberFormat: { - noCents: false, - divideOn1000: false, - }, - }; - } - - /** - * Retrieve the balance sheet meta. - * @param {number} tenantId - - * @returns {IBalanceSheetMeta} - */ - reportMetadata(tenantId: number): IJournalSheetMeta { - const settings = this.tenancy.settings(tenantId); - - const isCostComputeRunning = this.inventoryService - .isItemsCostComputeRunning(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - isCostComputeRunning: parseBoolean(isCostComputeRunning, false), - organizationName, - baseCurrency - }; - } - - /** - * Journal sheet. - * @param {number} tenantId - * @param {IJournalSheetFilterQuery} query - */ - async journalSheet(tenantId: number, query: IJournalReportQuery) { - const i18n = this.tenancy.i18n(tenantId); - const { - accountRepository, - transactionsRepository, - contactRepository, - } = this.tenancy.repositories(tenantId); - - const { AccountTransaction } = this.tenancy.models(tenantId); - - const filter = { - ...this.defaultQuery, - ...query, - }; - this.logger.info('[journal] trying to calculate the report.', { - tenantId, - filter, - }); - - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - // Retrieve all accounts on the storage. - const accountsGraph = await accountRepository.getDependencyGraph(); - - // Retrieve all contacts on the storage. - const contacts = await contactRepository.all(); - const contactsByIdMap = transformToMap(contacts, 'id'); - - // Retrieve all journal transactions based on the given query. - const transactions = await AccountTransaction.query().onBuild((query) => { - if (filter.fromRange || filter.toRange) { - query.modify('filterAmountRange', filter.fromRange, filter.toRange); - } - query.modify('filterDateRange', filter.fromDate, filter.toDate); - query.orderBy(['date', 'createdAt', 'indexGroup', 'index']); - - if (filter.transactionType) { - return query.where('reference_type', filter.transactionType); - } - if (filter.transactionType && filter.transactionId) { - return query.where('reference_id', filter.transactionId); - } - }); - // Transform the transactions array to journal collection. - const transactionsJournal = Journal.fromTransactions( - transactions, - tenantId, - accountsGraph - ); - // Journal report instance. - const journalSheetInstance = new JournalSheet( - tenantId, - filter, - transactionsJournal, - accountsGraph, - contactsByIdMap, - tenant.metadata.baseCurrency, - i18n - ); - // Retrieve journal report columns. - const journalSheetData = journalSheetInstance.reportData(); - - return { - data: journalSheetData, - query: filter, - meta: this.reportMetadata(tenantId), - }; - } -} diff --git a/server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossSheet.ts b/server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossSheet.ts deleted file mode 100644 index 9073aae22..000000000 --- a/server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossSheet.ts +++ /dev/null @@ -1,411 +0,0 @@ -import { flatten, pick, sumBy } from 'lodash'; -import { IProfitLossSheetQuery } from 'interfaces/ProfitLossSheet'; -import FinancialSheet from '../FinancialSheet'; -import { - IAccount, - IAccountType, - IJournalPoster, - IProfitLossSheetAccount, - IProfitLossSheetTotal, - IProfitLossSheetStatement, - IProfitLossSheetAccountsSection, - IProfitLossSheetTotalSection, -} from 'interfaces'; -import { flatToNestedArray, dateRangeCollection } from 'utils'; -import { ACCOUNT_TYPE } from 'data/AccountTypes'; - -export default class ProfitLossSheet extends FinancialSheet { - tenantId: number; - query: IProfitLossSheetQuery; - accounts: IAccount & { type: IAccountType }[]; - journal: IJournalPoster; - dateRangeSet: string[]; - comparatorDateType: string; - baseCurrency: string; - - /** - * Constructor method. - * @param {number} tenantId - - * @param {IProfitLossSheetQuery} query - - * @param {IAccount[]} accounts - - * @param {IJournalPoster} transactionsJournal - - */ - constructor( - tenantId: number, - query: IProfitLossSheetQuery, - accounts: IAccount & { type: IAccountType }[], - journal: IJournalPoster, - baseCurrency: string - ) { - super(); - - this.tenantId = tenantId; - this.query = query; - this.numberFormat = this.query.numberFormat; - this.accounts = accounts; - this.journal = journal; - this.baseCurrency = baseCurrency; - this.comparatorDateType = - query.displayColumnsType === 'total' ? 'day' : query.displayColumnsBy; - - this.initDateRangeCollection(); - } - - get otherIncomeAccounts() { - return this.accounts.filter( - (a) => a.accountType === ACCOUNT_TYPE.OTHER_INCOME - ); - } - - /** - * Filtering income accounts. - * @return {IAccount & { type: IAccountType }[]} - */ - get incomeAccounts() { - return this.accounts.filter((a) => a.accountType === ACCOUNT_TYPE.INCOME); - } - - /** - * Filtering expenses accounts. - * @return {IAccount & { type: IAccountType }[]} - */ - get expensesAccounts() { - return this.accounts.filter((a) => a.accountType === ACCOUNT_TYPE.EXPENSE); - } - - /** - * Filter other expenses accounts. - * @return {IAccount & { type: IAccountType }[]}} - */ - get otherExpensesAccounts() { - return this.accounts.filter( - (a) => a.accountType === ACCOUNT_TYPE.OTHER_EXPENSE - ); - } - - /** - * Filtering cost of sales accounts. - * @return {IAccount & { type: IAccountType }[]} - */ - get costOfSalesAccounts() { - return this.accounts.filter( - (a) => a.accountType === ACCOUNT_TYPE.COST_OF_GOODS_SOLD - ); - } - - /** - * Initialize date range set. - */ - initDateRangeCollection() { - if (this.query.displayColumnsType === 'date_periods') { - this.dateRangeSet = dateRangeCollection( - this.query.fromDate, - this.query.toDate, - this.comparatorDateType - ); - } - } - - /** - * Retrieve account total in the query date. - * @param {IAccount} account - - * @return {IProfitLossSheetTotal} - */ - private getAccountTotal(account: IAccount): IProfitLossSheetTotal { - const amount = this.journal.getAccountBalance( - account.id, - this.query.toDate, - this.comparatorDateType - ); - const formattedAmount = this.formatNumber(amount); - const currencyCode = this.baseCurrency; - - return { amount, formattedAmount, currencyCode }; - } - - /** - * Retrieve account total periods. - * @param {IAccount} account - - * @return {IProfitLossSheetTotal[]} - */ - private getAccountTotalPeriods(account: IAccount): IProfitLossSheetTotal[] { - return this.dateRangeSet.map((date) => { - const amount = this.journal.getAccountBalance( - account.id, - date, - this.comparatorDateType - ); - const formattedAmount = this.formatNumber(amount); - const currencyCode = this.baseCurrency; - - return { date, amount, formattedAmount, currencyCode }; - }); - } - - /** - * Mapping the given account to total result with account metadata. - * @param {IAccount} account - - * @return {IProfitLossSheetAccount} - */ - private accountMapper(account: IAccount): IProfitLossSheetAccount { - const entries = this.journal.getAccountEntries(account.id); - - return { - ...pick(account, ['id', 'index', 'name', 'code', 'parentAccountId']), - hasTransactions: entries.length > 0, - total: this.getAccountTotal(account), - - // Date periods when display columns type `periods`. - ...(this.query.displayColumnsType === 'date_periods' && { - totalPeriods: this.getAccountTotalPeriods(account), - }), - }; - } - - /** - * - * @param {IAccount[]} accounts - - * @return {IProfitLossSheetAccount[]} - */ - private accountsWalker( - accounts: IAccount & { type: IAccountType }[] - ): IProfitLossSheetAccount[] { - const flattenAccounts = accounts - .map(this.accountMapper.bind(this)) - // Filter accounts that have no transaction when `noneTransactions` is on. - .filter( - (account: IProfitLossSheetAccount) => - !(!account.hasTransactions && this.query.noneTransactions) - ) - // Filter accounts that have zero total amount when `noneZero` is on. - .filter( - (account: IProfitLossSheetAccount) => - !(account.total.amount === 0 && this.query.noneZero) - ); - - return flatToNestedArray(flattenAccounts, { - id: 'id', - parentId: 'parentAccountId', - }); - } - - /** - * Retreive the report total section. - * @param {IAccount[]} accounts - - * @return {IProfitLossSheetTotal} - */ - private gatTotalSection( - accounts: IProfitLossSheetAccount[] - ): IProfitLossSheetTotal { - const amount = sumBy(accounts, 'total.amount'); - const formattedAmount = this.formatTotalNumber(amount); - const currencyCode = this.baseCurrency; - - return { amount, formattedAmount, currencyCode }; - } - - /** - * Retrieve the report total section in periods display type. - * @param {IAccount} accounts - - * @return {IProfitLossSheetTotal[]} - */ - private getTotalPeriodsSection( - accounts: IProfitLossSheetAccount[] - ): IProfitLossSheetTotal[] { - return this.dateRangeSet.map((date, index) => { - const amount = sumBy(accounts, `totalPeriods[${index}].amount`); - const formattedAmount = this.formatTotalNumber(amount); - const currencyCode = this.baseCurrency; - - return { amount, formattedAmount, currencyCode }; - }); - } - - sectionMapper(sectionAccounts) { - const accounts = this.accountsWalker(sectionAccounts); - const total = this.gatTotalSection(accounts); - - return { - accounts, - total, - ...(this.query.displayColumnsType === 'date_periods' && { - totalPeriods: this.getTotalPeriodsSection(accounts), - }), - }; - } - - /** - * Retrieve income section. - * @return {IProfitLossSheetIncomeSection} - */ - private get incomeSection(): IProfitLossSheetAccountsSection { - return { - name: 'Income accounts', - entryNormal: 'credit', - ...this.sectionMapper(this.incomeAccounts), - }; - } - - private get otherIncomeSection(): any { - return { - name: 'Other Income', - entryNormal: 'credit', - ...this.sectionMapper(this.otherIncomeAccounts), - }; - } - - /** - * Retreive expenses section. - * @return {IProfitLossSheetLossSection} - */ - private get expensesSection(): IProfitLossSheetAccountsSection { - return { - name: 'Expense accounts', - entryNormal: 'debit', - ...this.sectionMapper(this.expensesAccounts), - }; - } - - /** - * Retrieve other expenses section. - * @return {IProfitLossSheetAccountsSection} - */ - private get otherExpensesSection(): IProfitLossSheetAccountsSection { - return { - name: 'Other expenses accounts', - entryNormal: 'debit', - ...this.sectionMapper(this.otherExpensesAccounts), - }; - } - - /** - * Cost of sales section. - * @return {IProfitLossSheetAccountsSection} - */ - private get costOfSalesSection(): IProfitLossSheetAccountsSection { - return { - name: 'Cost of sales', - entryNormal: 'debit', - ...this.sectionMapper(this.costOfSalesAccounts), - }; - } - - private getSummarySectionDatePeriods( - positiveSections: IProfitLossSheetTotalSection[], - minesSections: IProfitLossSheetTotalSection[] - ) { - return this.dateRangeSet.map((date, index: number) => { - const totalPositive = sumBy( - positiveSections, - `totalPeriods[${index}].amount` - ); - const totalMines = sumBy(minesSections, `totalPeriods[${index}].amount`); - - const amount = totalPositive - totalMines; - const formattedAmount = this.formatTotalNumber(amount); - const currencyCode = this.baseCurrency; - - return { date, amount, formattedAmount, currencyCode }; - }); - } - - private getSummarySectionTotal( - positiveSections: IProfitLossSheetTotalSection[], - minesSections: IProfitLossSheetTotalSection[] - ) { - const totalPositiveSections = sumBy(positiveSections, 'total.amount'); - const totalMinesSections = sumBy(minesSections, 'total.amount'); - - const amount = totalPositiveSections - totalMinesSections; - const formattedAmount = this.formatTotalNumber(amount); - const currencyCode = this.baseCurrency; - - return { amount, formattedAmount, currencyCode }; - } - - /** - * Retrieve the summary section - * @param - */ - private getSummarySection( - sections: IProfitLossSheetTotalSection | IProfitLossSheetTotalSection[], - subtractSections: - | IProfitLossSheetTotalSection - | IProfitLossSheetTotalSection[] - ): IProfitLossSheetTotalSection { - const positiveSections = Array.isArray(sections) ? sections : [sections]; - const minesSections = Array.isArray(subtractSections) - ? subtractSections - : [subtractSections]; - - return { - total: this.getSummarySectionTotal(positiveSections, minesSections), - ...(this.query.displayColumnsType === 'date_periods' && { - totalPeriods: [ - ...this.getSummarySectionDatePeriods(positiveSections, minesSections), - ], - }), - }; - } - - /** - * Retrieve date range columns of the given query. - * @param {IBalanceSheetQuery} query - * @return {string[]} - */ - private dateRangeColumns(): string[] { - return this.dateRangeSet; - } - - /** - * Retrieve profit/loss report data. - * @return {IProfitLossSheetStatement} - */ - public reportData(): IProfitLossSheetStatement { - if (this.journal.isEmpty()) { - return null; - } - const income = this.incomeSection; - const costOfSales = this.costOfSalesSection; - const expenses = this.expensesSection; - const otherExpenses = this.otherExpensesSection; - const otherIncome = this.otherIncomeSection; - - // - Gross profit = Total income - COGS. - const grossProfit = this.getSummarySection(income, costOfSales); - - // - Operating profit = Gross profit - Expenses. - const operatingProfit = this.getSummarySection(grossProfit, expenses); - - // Net other income = Other income - other expenses. - const netOtherIncome = this.getSummarySection(otherIncome, otherExpenses); - - // - Net income = (Operating profit + other income) - Other expenses. - const netIncome = this.getSummarySection( - [operatingProfit, netOtherIncome], - [], - ); - - return { - income, - costOfSales, - grossProfit, - expenses, - otherIncome, - otherExpenses, - operatingProfit, - netOtherIncome, - netIncome, - }; - } - - /** - * Retrieve profit/loss report columns. - */ - public reportColumns() { - // Date range collection. - return this.query.displayColumnsType === 'date_periods' - ? this.dateRangeColumns() - : ['total']; - } -} diff --git a/server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossSheetService.ts b/server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossSheetService.ts deleted file mode 100644 index f6dd57aec..000000000 --- a/server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossSheetService.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { Service, Inject } from 'typedi'; -import moment from 'moment'; -import Journal from 'services/Accounting/JournalPoster'; -import { IProfitLossSheetQuery, IProfitLossSheetMeta } from 'interfaces'; -import ProfitLossSheet from './ProfitLossSheet'; -import TenancyService from 'services/Tenancy/TenancyService'; -import AccountsService from 'services/Accounts/AccountsService'; -import InventoryService from 'services/Inventory/Inventory'; -import { parseBoolean } from 'utils'; -import { Tenant } from 'system/models'; - -// Profit/Loss sheet service. -@Service() -export default class ProfitLossSheetService { - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - @Inject() - inventoryService: InventoryService; - - @Inject() - accountsService: AccountsService; - - /** - * Default sheet filter query. - * @return {IBalanceSheetQuery} - */ - get defaultQuery(): IProfitLossSheetQuery { - return { - fromDate: moment().startOf('year').format('YYYY-MM-DD'), - toDate: moment().endOf('year').format('YYYY-MM-DD'), - numberFormat: { - divideOn1000: false, - negativeFormat: 'mines', - showZero: false, - formatMoney: 'total', - precision: 2, - }, - basis: 'accural', - noneZero: false, - noneTransactions: false, - displayColumnsType: 'total', - displayColumnsBy: 'month', - accountsIds: [], - }; - } - - - /** - * Retrieve the trial balance sheet meta. - * @param {number} tenantId - Tenant id. - * @returns {ITrialBalanceSheetMeta} - */ - reportMetadata(tenantId: number): IProfitLossSheetMeta { - const settings = this.tenancy.settings(tenantId); - - const isCostComputeRunning = this.inventoryService.isItemsCostComputeRunning( - tenantId - ); - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - isCostComputeRunning: parseBoolean(isCostComputeRunning, false), - organizationName, - baseCurrency, - }; - } - - /** - * Retrieve profit/loss sheet statement. - * @param {number} tenantId - * @param {IProfitLossSheetQuery} query - * @return { } - */ - async profitLossSheet(tenantId: number, query: IProfitLossSheetQuery) { - const { - accountRepository, - transactionsRepository, - } = this.tenancy.repositories(tenantId); - - const filter = { - ...this.defaultQuery, - ...query, - }; - this.logger.info('[profit_loss_sheet] trying to calculate the report.', { - tenantId, - filter, - }); - - // Get the given accounts or throw not found service error. - if (filter.accountsIds.length > 0) { - await this.accountsService.getAccountsOrThrowError( - tenantId, - filter.accountsIds - ); - } - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - // Retrieve all accounts on the storage. - const accounts = await accountRepository.all(); - const accountsGraph = await accountRepository.getDependencyGraph(); - - // Retrieve all journal transactions based on the given query. - const transactions = await transactionsRepository.journal({ - fromDate: query.fromDate, - toDate: query.toDate, - }); - // Transform transactions to journal collection. - const transactionsJournal = Journal.fromTransactions( - transactions, - tenantId, - accountsGraph - ); - // Profit/Loss report instance. - const profitLossInstance = new ProfitLossSheet( - tenantId, - filter, - accounts, - transactionsJournal, - tenant.metadata.baseCurrency, - ); - // Profit/loss report data and collumns. - const profitLossData = profitLossInstance.reportData(); - const profitLossColumns = profitLossInstance.reportColumns(); - - return { - data: profitLossData, - columns: profitLossColumns, - query: filter, - meta: this.reportMetadata(tenantId), - }; - } -} diff --git a/server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItems.ts b/server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItems.ts deleted file mode 100644 index a507ba590..000000000 --- a/server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItems.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { get, sumBy } from 'lodash'; -import FinancialSheet from '../FinancialSheet'; -import { transformToMap } from 'utils'; -import { - IAccountTransaction, - IInventoryValuationTotal, - IInventoryValuationItem, - IInventoryValuationReportQuery, - IInventoryValuationStatement, - IItem, -} from 'interfaces'; - -export default class InventoryValuationReport extends FinancialSheet { - readonly baseCurrency: string; - readonly items: IItem[]; - readonly itemsTransactions: Map; - readonly query: IInventoryValuationReportQuery; - - /** - * Constructor method. - * @param {IInventoryValuationReportQuery} query - * @param {IItem[]} items - * @param {IAccountTransaction[]} itemsTransactions - * @param {string} baseCurrency - */ - constructor( - query: IInventoryValuationReportQuery, - items: IItem[], - itemsTransactions: IAccountTransaction[], - baseCurrency: string - ) { - super(); - - this.baseCurrency = baseCurrency; - this.items = items; - this.itemsTransactions = transformToMap(itemsTransactions, 'itemId'); - this.query = query; - this.numberFormat = this.query.numberFormat; - } - - /** - * Retrieve the item purchase item, cost and average cost price. - * @param {number} itemId - */ - getItemTransaction( - itemId: number - ): { quantity: number; cost: number; average: number } { - const transaction = this.itemsTransactions.get(itemId); - - const quantity = get(transaction, 'quantity', 0); - const cost = get(transaction, 'cost', 0); - - const average = cost / quantity; - - return { quantity, cost, average }; - } - - /** - * Mapping the given item section. - * @param {IInventoryValuationItem} item - * @returns - */ - itemSectionMapper(item: IItem): IInventoryValuationItem { - const meta = this.getItemTransaction(item.id); - - return { - id: item.id, - name: item.name, - code: item.code, - quantityPurchased: meta.quantity, - purchaseCost: meta.cost, - averageCostPrice: meta.average, - quantityPurchasedFormatted: this.formatNumber(meta.quantity, { - money: false, - }), - purchaseCostFormatted: this.formatNumber(meta.cost), - averageCostPriceFormatted: this.formatNumber(meta.average), - currencyCode: this.baseCurrency, - }; - } - - /** - * Retrieve the items sections. - * @returns {IInventoryValuationItem[]} - */ - itemsSection(): IInventoryValuationItem[] { - return this.items.map(this.itemSectionMapper.bind(this)); - } - - /** - * Retrieve the total section of the sheet. - * @param {IInventoryValuationItem[]} items - * @returns {IInventoryValuationTotal} - */ - totalSection(items: IInventoryValuationItem[]): IInventoryValuationTotal { - const quantityPurchased = sumBy(items, (item) => item.quantityPurchased); - const purchaseCost = sumBy(items, (item) => item.purchaseCost); - - return { - quantityPurchased, - purchaseCost, - quantityPurchasedFormatted: this.formatTotalNumber(quantityPurchased, { - money: false, - }), - purchaseCostFormatted: this.formatTotalNumber(purchaseCost), - currencyCode: this.baseCurrency, - }; - } - - /** - * Retrieve the sheet data. - * @returns - */ - reportData(): IInventoryValuationStatement { - const items = this.itemsSection(); - const total = this.totalSection(items); - - return items.length > 0 ? { items, total } : {}; - } -} diff --git a/server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItemsService.ts b/server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItemsService.ts deleted file mode 100644 index a50741f93..000000000 --- a/server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItemsService.ts +++ /dev/null @@ -1,130 +0,0 @@ -import { Service, Inject } from 'typedi'; -import moment from 'moment'; -import { - IInventoryValuationReportQuery, - IInventoryValuationStatement, - IInventoryValuationSheetMeta, -} from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import PurchasesByItems from './PurchasesByItems'; -import { Tenant } from 'system/models'; - -@Service() -export default class InventoryValuationReportService { - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - /** - * Defaults balance sheet filter query. - * @return {IBalanceSheetQuery} - */ - get defaultQuery(): IInventoryValuationReportQuery { - return { - fromDate: moment().startOf('year').format('YYYY-MM-DD'), - toDate: moment().endOf('year').format('YYYY-MM-DD'), - itemsIds: [], - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'always', - negativeFormat: 'mines', - }, - noneTransactions: false, - }; - } - - /** - * Retrieve the balance sheet meta. - * @param {number} tenantId - - * @returns {IBalanceSheetMeta} - */ - reportMetadata(tenantId: number): IInventoryValuationSheetMeta { - const settings = this.tenancy.settings(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - organizationName, - baseCurrency, - }; - } - - /** - * Retrieve balance sheet statement. - * ------------- - * @param {number} tenantId - * @param {IBalanceSheetQuery} query - * - * @return {IBalanceSheetStatement} - */ - public async purchasesByItems( - tenantId: number, - query: IInventoryValuationReportQuery - ): Promise<{ - data: IInventoryValuationStatement, - query: IInventoryValuationReportQuery, - meta: IInventoryValuationSheetMeta, - }> { - const { Item, InventoryTransaction } = this.tenancy.models(tenantId); - - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const filter = { - ...this.defaultQuery, - ...query, - }; - this.logger.info('[purchases_by_items] trying to calculate the report.', { - filter, - tenantId, - }); - const inventoryItems = await Item.query().onBuild(q => { - q.where('type', 'inventory'); - - if (filter.itemsIds.length > 0) { - q.whereIn('id', filter.itemsIds); - } - }); - const inventoryItemsIds = inventoryItems.map((item) => item.id); - - // Calculates the total inventory total quantity and rate `IN` transactions. - const inventoryTransactions = await InventoryTransaction.query().onBuild( - (builder: any) => { - builder.modify('itemsTotals'); - builder.modify('INDirection'); - - // Filter the inventory items only. - builder.whereIn('itemId', inventoryItemsIds); - - // Filter the date range of the sheet. - builder.modify('filterDateRange', filter.fromDate, filter.toDate) - } - ); - - const purchasesByItemsInstance = new PurchasesByItems( - filter, - inventoryItems, - inventoryTransactions, - tenant.metadata.baseCurrency - ); - const purchasesByItemsData = purchasesByItemsInstance.reportData(); - - return { - data: purchasesByItemsData, - query: filter, - meta: this.reportMetadata(tenantId), - }; - } -} diff --git a/server/src/services/FinancialStatements/SalesByItems/SalesByItems.ts b/server/src/services/FinancialStatements/SalesByItems/SalesByItems.ts deleted file mode 100644 index cde8721b0..000000000 --- a/server/src/services/FinancialStatements/SalesByItems/SalesByItems.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { get, sumBy } from 'lodash'; -import FinancialSheet from '../FinancialSheet'; -import { transformToMap } from 'utils'; -import { - ISalesByItemsReportQuery, - IAccountTransaction, - ISalesByItemsItem, - ISalesByItemsTotal, - ISalesByItemsSheetStatement, - IItem, -} from 'interfaces'; - -export default class SalesByItemsReport extends FinancialSheet { - readonly baseCurrency: string; - readonly items: IItem[]; - readonly itemsTransactions: Map; - readonly query: ISalesByItemsReportQuery; - - /** - * Constructor method. - * @param {ISalesByItemsReportQuery} query - * @param {IItem[]} items - * @param {IAccountTransaction[]} itemsTransactions - * @param {string} baseCurrency - */ - constructor( - query: ISalesByItemsReportQuery, - items: IItem[], - itemsTransactions: IAccountTransaction[], - baseCurrency: string - ) { - super(); - - this.baseCurrency = baseCurrency; - this.items = items; - this.itemsTransactions = transformToMap(itemsTransactions, 'itemId'); - this.query = query; - this.numberFormat = this.query.numberFormat; - } - - /** - * Retrieve the item purchase item, cost and average cost price. - * @param {number} itemId - Item id. - */ - getItemTransaction( - itemId: number - ): { quantity: number; cost: number; average: number } { - const transaction = this.itemsTransactions.get(itemId); - - const quantity = get(transaction, 'quantity', 0); - const cost = get(transaction, 'cost', 0); - - const average = cost / quantity; - - return { quantity, cost, average }; - } - - /** - * Mapping the given item section. - * @param {ISalesByItemsItem} item - * @returns - */ - itemSectionMapper(item: IItem): ISalesByItemsItem { - const meta = this.getItemTransaction(item.id); - - return { - id: item.id, - name: item.name, - code: item.code, - quantitySold: meta.quantity, - soldCost: meta.cost, - averageSellPrice: meta.average, - quantitySoldFormatted: this.formatNumber(meta.quantity, { - money: false, - }), - soldCostFormatted: this.formatNumber(meta.cost), - averageSellPriceFormatted: this.formatNumber(meta.average), - currencyCode: this.baseCurrency, - }; - } - - /** - * Retrieve the items sections. - * @returns {ISalesByItemsItem[]} - */ - itemsSection(): ISalesByItemsItem[] { - return this.items.map(this.itemSectionMapper.bind(this)); - } - - /** - * Retrieve the total section of the sheet. - * @param {IInventoryValuationItem[]} items - * @returns {IInventoryValuationTotal} - */ - totalSection(items: ISalesByItemsItem[]): ISalesByItemsTotal { - const quantitySold = sumBy(items, (item) => item.quantitySold); - const soldCost = sumBy(items, (item) => item.soldCost); - - return { - quantitySold, - soldCost, - quantitySoldFormatted: this.formatTotalNumber(quantitySold, { - money: false, - }), - soldCostFormatted: this.formatTotalNumber(soldCost), - currencyCode: this.baseCurrency, - }; - } - - /** - * Retrieve the sheet data. - * @returns {ISalesByItemsSheetStatement} - */ - reportData(): ISalesByItemsSheetStatement { - const items = this.itemsSection(); - const total = this.totalSection(items); - - return items.length > 0 ? { items, total } : {}; - } -} diff --git a/server/src/services/FinancialStatements/SalesByItems/SalesByItemsService.ts b/server/src/services/FinancialStatements/SalesByItems/SalesByItemsService.ts deleted file mode 100644 index fbef4e845..000000000 --- a/server/src/services/FinancialStatements/SalesByItems/SalesByItemsService.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { Service, Inject } from 'typedi'; -import moment from 'moment'; -import { - ISalesByItemsReportQuery, - ISalesByItemsSheetStatement, - ISalesByItemsSheetMeta -} from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import SalesByItems from './SalesByItems'; -import { Tenant } from 'system/models'; - -@Service() -export default class SalesByItemsReportService { - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - /** - * Defaults balance sheet filter query. - * @return {IBalanceSheetQuery} - */ - get defaultQuery(): ISalesByItemsReportQuery { - return { - fromDate: moment().startOf('year').format('YYYY-MM-DD'), - toDate: moment().endOf('year').format('YYYY-MM-DD'), - itemsIds: [], - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'always', - negativeFormat: 'mines', - }, - noneTransactions: false, - }; - } - - /** - * Retrieve the balance sheet meta. - * @param {number} tenantId - - * @returns {IBalanceSheetMeta} - */ - reportMetadata(tenantId: number): ISalesByItemsSheetMeta { - const settings = this.tenancy.settings(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - organizationName, - baseCurrency, - }; - } - - /** - * Retrieve balance sheet statement. - * ------------- - * @param {number} tenantId - * @param {IBalanceSheetQuery} query - * - * @return {IBalanceSheetStatement} - */ - public async salesByItems( - tenantId: number, - query: ISalesByItemsReportQuery - ): Promise<{ - data: ISalesByItemsSheetStatement, - query: ISalesByItemsReportQuery, - meta: ISalesByItemsSheetMeta, - }> { - const { Item, InventoryTransaction } = this.tenancy.models(tenantId); - - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const filter = { - ...this.defaultQuery, - ...query, - }; - this.logger.info('[sales_by_items] trying to calculate the report.', { - filter, - tenantId, - }); - // Inventory items for sales report. - const inventoryItems = await Item.query().onBuild((q) => { - q.where('type', 'inventory'); - - if (filter.itemsIds.length > 0) { - q.whereIn('id', filter.itemsIds); - } - }); - const inventoryItemsIds = inventoryItems.map((item) => item.id); - - // Calculates the total inventory total quantity and rate `IN` transactions. - const inventoryTransactions = await InventoryTransaction.query().onBuild( - (builder: any) => { - builder.modify('itemsTotals'); - builder.modify('OUTDirection'); - - // Filter the inventory items only. - builder.whereIn('itemId', inventoryItemsIds); - - // Filter the date range of the sheet. - builder.modify('filterDateRange', filter.fromDate, filter.toDate) - } - ); - - const purchasesByItemsInstance = new SalesByItems( - filter, - inventoryItems, - inventoryTransactions, - tenant.metadata.baseCurrency, - ); - const purchasesByItemsData = purchasesByItemsInstance.reportData(); - - return { - data: purchasesByItemsData, - query: filter, - meta: this.reportMetadata(tenantId), - }; - } -} diff --git a/server/src/services/FinancialStatements/TransactionsByContact/TransactionsByContact.ts b/server/src/services/FinancialStatements/TransactionsByContact/TransactionsByContact.ts deleted file mode 100644 index 9575022c0..000000000 --- a/server/src/services/FinancialStatements/TransactionsByContact/TransactionsByContact.ts +++ /dev/null @@ -1,144 +0,0 @@ -import { sumBy, defaultTo } from 'lodash'; -import { - ITransactionsByContactsTransaction, - ITransactionsByContactsAmount, - ITransactionsByContactsFilter, - IContact, - ILedger, - ILedgerEntry, -} from 'interfaces'; -import FinancialSheet from '../FinancialSheet'; - -export default class TransactionsByContact extends FinancialSheet { - readonly contacts: IContact[]; - readonly ledger: ILedger; - readonly filter: ITransactionsByContactsFilter; - readonly accountsGraph: any; - - /** - * Customer transaction mapper. - * @param {any} transaction - - * @return {Omit} - */ - protected contactTransactionMapper( - entry: ILedgerEntry, - ): Omit { - const account = this.accountsGraph.getNodeData(entry.accountId); - const currencyCode = this.baseCurrency; - - return { - credit: this.getContactAmount(entry.credit, currencyCode), - debit: this.getContactAmount(entry.debit, currencyCode), - accountName: account.name, - currencyCode: this.baseCurrency, - transactionNumber: entry.transactionNumber, - transactionType: this.i18n.__(entry.referenceTypeFormatted), - date: entry.date, - createdAt: entry.createdAt, - }; - } - - /** - * Customer transactions mapper with running balance. - * @param {number} openingBalance - * @param {ITransactionsByContactsTransaction[]} transactions - * @returns {ITransactionsByContactsTransaction[]} - */ - protected contactTransactionRunningBalance( - openingBalance: number, - accountNormal: 'credit' | 'debit', - transactions: Omit[] - ): any { - let _openingBalance = openingBalance; - - return transactions.map( - (transaction: ITransactionsByContactsTransaction) => { - _openingBalance += - accountNormal === 'debit' - ? transaction.debit.amount - : -1 * transaction.debit.amount; - - _openingBalance += - accountNormal === 'credit' - ? transaction.credit.amount - : -1 * transaction.credit.amount; - - const runningBalance = this.getTotalAmountMeta( - _openingBalance, - transaction.currencyCode - ); - return { ...transaction, runningBalance }; - } - ); - } - - /** - * Retrieve the customer closing balance from the given transactions and opening balance. - * @param {number} customerTransactions - * @param {number} openingBalance - * @returns {number} - */ - protected getContactClosingBalance( - customerTransactions: ITransactionsByContactsTransaction[], - contactNormal: 'credit' | 'debit', - openingBalance: number - ): number { - const closingBalance = openingBalance; - - const totalCredit = sumBy(customerTransactions, 'credit.amount'); - const totalDebit = sumBy(customerTransactions, 'debit.amount'); - - const total = contactNormal === 'debit' ? - totalDebit - totalCredit : - totalCredit - totalDebit; - - return closingBalance + total; - } - - /** - * Retrieve the given customer opening balance from the given customer id. - * @param {number} customerId - * @returns {number} - */ - protected getContactOpeningBalance(customerId: number): number { - const openingBalanceLedger = this.ledger - .whereContactId(customerId) - .whereToDate(this.filter.fromDate); - - // Retrieve the closing balance of the ledger. - const openingBalance = openingBalanceLedger.getClosingBalance(); - - return defaultTo(openingBalance, 0); - } - - /** - * Retrieve the customer amount format meta. - * @param {number} amount - * @param {string} currencyCode - * @returns {ITransactionsByContactsAmount} - */ - protected getContactAmount( - amount: number, - currencyCode: string - ): ITransactionsByContactsAmount { - return { - amount, - formattedAmount: this.formatNumber(amount, { currencyCode }), - currencyCode, - }; - } - - /** - * Retrieve the contact total amount format meta. - * @param {number} amount - Amount. - * @param {string} currencyCode - Currency code./ - * @returns {ITransactionsByContactsAmount} - */ - protected getTotalAmountMeta(amount: number, currencyCode: string) { - return { - amount, - formattedAmount: this.formatTotalNumber(amount, { currencyCode }), - currencyCode, - }; - } -} diff --git a/server/src/services/FinancialStatements/TransactionsByContact/TransactionsByContactTableRows.ts b/server/src/services/FinancialStatements/TransactionsByContact/TransactionsByContactTableRows.ts deleted file mode 100644 index 9eee78ddf..000000000 --- a/server/src/services/FinancialStatements/TransactionsByContact/TransactionsByContactTableRows.ts +++ /dev/null @@ -1,81 +0,0 @@ -import moment from 'moment'; -import * as R from 'ramda'; -import { tableMapper, tableRowMapper } from 'utils'; -import { ITransactionsByContactsContact, ITableRow } from 'interfaces'; - -enum ROW_TYPE { - OPENING_BALANCE = 'OPENING_BALANCE', - CLOSING_BALANCE = 'CLOSING_BALANCE', - TRANSACTION = 'TRANSACTION', - CUSTOMER = 'CUSTOMER', -} - -export default class TransactionsByContactsTableRows { - private dateAccessor = (value): string => { - return moment(value.date).format('YYYY MMM DD'); - }; - - /** - * Retrieve the table rows of contact transactions. - * @param {ITransactionsByCustomersCustomer} contact - * @returns {ITableRow[]} - */ - protected contactTransactions = ( - contact: ITransactionsByContactsContact - ): ITableRow[] => { - const columns = [ - { key: 'date', accessor: this.dateAccessor }, - { key: 'account', accessor: 'accountName' }, - { key: 'transactionType', accessor: 'transactionType' }, - { key: 'transactionNumber', accessor: 'transactionNumber' }, - { key: 'credit', accessor: 'credit.formattedAmount' }, - { key: 'debit', accessor: 'debit.formattedAmount' }, - { key: 'runningBalance', accessor: 'runningBalance.formattedAmount' }, - ]; - return tableMapper(contact.transactions, columns, { - rowTypes: [ROW_TYPE.TRANSACTION], - }); - }; - - /** - * Retrieve the table row of contact opening balance. - * @param {ITransactionsByCustomersCustomer} contact - * @returns {ITableRow} - */ - protected contactOpeningBalance = ( - contact: ITransactionsByContactsContact - ): ITableRow => { - const columns = [ - { key: 'openingBalanceLabel', value: this.i18n.__('Opening balance') }, - ...R.repeat({ key: 'empty', value: '' }, 5), - { - key: 'openingBalanceValue', - accessor: 'openingBalance.formattedAmount', - }, - ]; - return tableRowMapper(contact, columns, { - rowTypes: [ROW_TYPE.OPENING_BALANCE], - }); - }; - - /** - * Retrieve the table row of contact closing balance. - * @param {ITransactionsByCustomersCustomer} contact - - * @returns {ITableRow} - */ - protected contactClosingBalance = ( - contact: ITransactionsByContactsContact - ): ITableRow => { - const columns = [ - { key: 'closingBalanceLabel', value: this.i18n.__('Closing balance') }, - ...R.repeat({ key: 'empty', value: '' }, 5), - { - key: 'closingBalanceValue', - accessor: 'closingBalance.formattedAmount', - }, - ]; - return tableRowMapper(contact, columns, { - rowTypes: [ROW_TYPE.CLOSING_BALANCE], - }); - }; -} diff --git a/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomers.ts b/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomers.ts deleted file mode 100644 index 3fe42fc5f..000000000 --- a/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomers.ts +++ /dev/null @@ -1,139 +0,0 @@ -import * as R from 'ramda'; -import { - ITransactionsByCustomersTransaction, - ITransactionsByCustomersFilter, - ITransactionsByCustomersCustomer, - ITransactionsByCustomersData, - INumberFormatQuery, - ICustomer, -} from 'interfaces'; -import TransactionsByContact from '../TransactionsByContact/TransactionsByContact'; -import Ledger from 'services/Accounting/Ledger'; - -const CUSTOMER_NORMAL = 'debit'; - -export default class TransactionsByCustomers extends TransactionsByContact { - readonly customers: ICustomer[]; - readonly ledger: Ledger; - readonly filter: ITransactionsByCustomersFilter; - readonly baseCurrency: string; - readonly numberFormat: INumberFormatQuery; - readonly accountsGraph: any; - - /** - * Constructor method. - * @param {ICustomer} customers - * @param {Map} transactionsLedger - * @param {string} baseCurrency - */ - constructor( - customers: ICustomer[], - accountsGraph: any, - ledger: Ledger, - filter: ITransactionsByCustomersFilter, - baseCurrency: string, - i18n - ) { - super(); - - this.customers = customers; - this.accountsGraph = accountsGraph; - this.ledger = ledger; - this.baseCurrency = baseCurrency; - this.filter = filter; - this.numberFormat = this.filter.numberFormat; - this.i18n = i18n; - } - - /** - * Retrieve the customer transactions from the given customer id and opening balance. - * @param {number} customerId - Customer id. - * @param {number} openingBalance - Opening balance amount. - * @returns {ITransactionsByCustomersTransaction[]} - */ - private customerTransactions( - customerId: number, - openingBalance: number - ): ITransactionsByCustomersTransaction[] { - const ledger = this.ledger - .whereContactId(customerId) - .whereFromDate(this.filter.fromDate) - .whereToDate(this.filter.toDate); - - const ledgerEntries = ledger.getEntries(); - - return R.compose( - R.curry(this.contactTransactionRunningBalance)(openingBalance, 'debit'), - R.map(this.contactTransactionMapper.bind(this)) - ).bind(this)(ledgerEntries); - } - - /** - * Customer section mapper. - * @param {ICustomer} customer - * @returns {ITransactionsByCustomersCustomer} - */ - private customerMapper( - customer: ICustomer - ): ITransactionsByCustomersCustomer { - const openingBalance = this.getContactOpeningBalance(customer.id); - const transactions = this.customerTransactions(customer.id, openingBalance); - const closingBalance = this.getCustomerClosingBalance( - transactions, - openingBalance - ); - const currencyCode = this.baseCurrency; - - return { - customerName: customer.displayName, - openingBalance: this.getTotalAmountMeta(openingBalance, currencyCode), - closingBalance: this.getTotalAmountMeta(closingBalance, currencyCode), - transactions, - }; - } - - /** - * Retrieve the vendor closing balance from the given customer transactions. - * @param {ITransactionsByContactsTransaction[]} customerTransactions - * @param {number} openingBalance - * @returns - */ - private getCustomerClosingBalance( - customerTransactions: ITransactionsByCustomersTransaction[], - openingBalance: number - ): number { - return this.getContactClosingBalance( - customerTransactions, - CUSTOMER_NORMAL, - openingBalance - ); - } - - /** - * Retrieve the customers sections of the report. - * @param {ICustomer[]} customers - * @returns {ITransactionsByCustomersCustomer[]} - */ - private customersMapper( - customers: ICustomer[] - ): ITransactionsByCustomersCustomer[] { - return R.compose(R.map(this.customerMapper.bind(this))).bind(this)( - customers - ); - } - - /** - * Retrieve the report data. - * @returns {ITransactionsByCustomersData} - */ - public reportData(): ITransactionsByCustomersData { - return this.customersMapper(this.customers); - } - - /** - * Retrieve the report columns. - */ - public reportColumns() { - return []; - } -} diff --git a/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersRepository.ts b/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersRepository.ts deleted file mode 100644 index e3201660a..000000000 --- a/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersRepository.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { isEmpty, map } from 'lodash'; -import { IAccount, IAccountTransaction } from 'interfaces'; -import { ACCOUNT_TYPE } from 'data/AccountTypes'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { Inject } from 'typedi'; - -export default class TransactionsByCustomersRepository { - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve the report customers. - * @param {number} tenantId - * @returns {Promise} - */ - public async getCustomers(tenantId: number, customersIds?: number[]) { - const { Customer } = this.tenancy.models(tenantId); - - return Customer.query().onBuild((q) => { - q.orderBy('displayName'); - - if (!isEmpty(customersIds)) { - q.whereIn('id', customersIds); - } - }); - } - - /** - * Retrieve the accounts receivable. - * @param {number} tenantId - * @returns {Promise} - */ - public async getReceivableAccounts(tenantId: number): Promise { - const { Account } = this.tenancy.models(tenantId); - - const accounts = await Account.query().where( - 'accountType', - ACCOUNT_TYPE.ACCOUNTS_RECEIVABLE - ); - return accounts; - } - - /** - * Retrieve the customers opening balance transactions. - * @param {number} tenantId - Tenant id. - * @param {number} openingDate - Opening date. - * @param {number} customersIds - Customers ids. - * @returns {Promise} - */ - public async getCustomersOpeningBalanceTransactions( - tenantId: number, - openingDate: Date, - customersIds?: number[] - ): Promise { - const { AccountTransaction } = this.tenancy.models(tenantId); - - const receivableAccounts = await this.getReceivableAccounts(tenantId); - const receivableAccountsIds = map(receivableAccounts, 'id'); - - const openingTransactions = await AccountTransaction.query().modify( - 'contactsOpeningBalance', - openingDate, - receivableAccountsIds, - customersIds - ); - return openingTransactions; - } - - /** - * Retrieve the customers periods transactions. - * @param {number} tenantId - Tenant id. - * @param {Date|string} openingDate - Opening date. - * @param {number[]} customersIds - Customers ids. - * @return {Promise} - */ - public async getCustomersPeriodTransactions( - tenantId: number, - fromDate: Date, - toDate: Date - ): Promise { - const { AccountTransaction } = this.tenancy.models(tenantId); - - const receivableAccounts = await this.getReceivableAccounts(tenantId); - const receivableAccountsIds = map(receivableAccounts, 'id'); - - const transactions = await AccountTransaction.query().onBuild((query) => { - // Filter by date. - query.modify('filterDateRange', fromDate, toDate); - - // Filter by customers. - query.whereNot('contactId', null); - - // Filter by accounts. - query.whereIn('accountId', receivableAccountsIds); - }); - return transactions; - } -} diff --git a/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersService.ts b/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersService.ts deleted file mode 100644 index b93c540d9..000000000 --- a/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersService.ts +++ /dev/null @@ -1,173 +0,0 @@ -import { Inject } from 'typedi'; -import * as R from 'ramda'; -import moment from 'moment'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { - ITransactionsByCustomersService, - ITransactionsByCustomersFilter, - ITransactionsByCustomersStatement, - ILedgerEntry, -} from 'interfaces'; -import TransactionsByCustomers from './TransactionsByCustomers'; -import Ledger from 'services/Accounting/Ledger'; -import TransactionsByCustomersRepository from './TransactionsByCustomersRepository'; -import { Tenant } from 'system/models'; - -export default class TransactionsByCustomersService - implements ITransactionsByCustomersService -{ - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - @Inject() - reportRepository: TransactionsByCustomersRepository; - - /** - * Defaults balance sheet filter query. - * @return {ICustomerBalanceSummaryQuery} - */ - get defaultQuery(): ITransactionsByCustomersFilter { - return { - fromDate: moment().startOf('year').format('YYYY-MM-DD'), - toDate: moment().endOf('year').format('YYYY-MM-DD'), - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'total', - negativeFormat: 'mines', - }, - comparison: { - percentageOfColumn: true, - }, - noneZero: false, - noneTransactions: false, - - customersIds: [], - }; - } - - /** - * Retrieve the customers opening balance ledger entries. - * @param {number} tenantId - * @param {Date} openingDate - * @param {number[]} customersIds - * @returns {Promise} - */ - private async getCustomersOpeningBalanceEntries( - tenantId: number, - openingDate: Date, - customersIds?: number[] - ): Promise { - const openingTransactions = - await this.reportRepository.getCustomersOpeningBalanceTransactions( - tenantId, - openingDate, - customersIds - ); - - return R.compose( - R.map(R.assoc('date', openingDate)), - R.map(R.assoc('accountNormal', 'debit')) - )(openingTransactions); - } - - /** - * Retrieve the customers periods ledger entries. - * @param {number} tenantId - * @param {Date} fromDate - * @param {Date} toDate - * @returns {Promise} - */ - private async getCustomersPeriodsEntries( - tenantId: number, - fromDate: Date | string, - toDate: Date | string - ): Promise { - const transactions = - await this.reportRepository.getCustomersPeriodTransactions( - tenantId, - fromDate, - toDate - ); - return R.compose( - R.map(R.assoc('accountNormal', 'debit')), - R.map((trans) => ({ - ...trans, - referenceTypeFormatted: trans.referenceTypeFormatted, - })) - )(transactions); - } - - /** - * Retrieve transactions by by the customers. - * @param {number} tenantId - * @param {ITransactionsByCustomersFilter} query - * @return {Promise} - */ - public async transactionsByCustomers( - tenantId: number, - query: ITransactionsByCustomersFilter - ): Promise { - const { accountRepository } = this.tenancy.repositories(tenantId); - const i18n = this.tenancy.i18n(tenantId); - - // Retrieve tenant information. - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const filter = { - ...this.defaultQuery, - ...query, - }; - const accountsGraph = await accountRepository.getDependencyGraph(); - - // Retrieve the report customers. - const customers = await this.reportRepository.getCustomers( - tenantId, - filter.customersIds - ); - - const openingBalanceDate = moment(filter.fromDate) - .subtract(1, 'days') - .toDate(); - - // Retrieve all ledger transactions of the opening balance of. - const openingBalanceEntries = await this.getCustomersOpeningBalanceEntries( - tenantId, - openingBalanceDate - ); - // Retrieve all ledger transactions between opeing and closing period. - const customersTransactions = await this.getCustomersPeriodsEntries( - tenantId, - query.fromDate, - query.toDate - ); - // Concats the opening balance and period customer ledger transactions. - const journalTransactions = [ - ...openingBalanceEntries, - ...customersTransactions, - ]; - const journal = new Ledger(journalTransactions); - - // Transactions by customers data mapper. - const reportInstance = new TransactionsByCustomers( - customers, - accountsGraph, - journal, - filter, - tenant.metadata.baseCurrency, - i18n - ); - - return { - data: reportInstance.reportData(), - columns: reportInstance.reportColumns(), - query: filter, - }; - } -} diff --git a/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersTableRows.ts b/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersTableRows.ts deleted file mode 100644 index 1b0ce1137..000000000 --- a/server/src/services/FinancialStatements/TransactionsByCustomer/TransactionsByCustomersTableRows.ts +++ /dev/null @@ -1,78 +0,0 @@ -import * as R from 'ramda'; -import { tableRowMapper, tableMapper } from 'utils'; -import { ITransactionsByCustomersCustomer, ITableRow } from 'interfaces'; -import TransactionsByContactsTableRows from '../TransactionsByContact/TransactionsByContactTableRows'; - -enum ROW_TYPE { - OPENING_BALANCE = 'OPENING_BALANCE', - CLOSING_BALANCE = 'CLOSING_BALANCE', - TRANSACTION = 'TRANSACTION', - CUSTOMER = 'CUSTOMER', -} - -export default class TransactionsByCustomersTableRows extends TransactionsByContactsTableRows { - private customersTransactions: ITransactionsByCustomersCustomer[]; - - /** - * Constructor method. - * @param {ITransactionsByCustomersCustomer[]} customersTransactions - Customers transactions. - */ - constructor( - customersTransactions: ITransactionsByCustomersCustomer[], - i18n - ) { - super(); - this.customersTransactions = customersTransactions; - this.i18n = i18n; - } - - /** - * Retrieve the table row of customer details. - * @param {ITransactionsByCustomersCustomer} customer - - * @returns {ITableRow[]} - */ - private customerDetails = (customer: ITransactionsByCustomersCustomer) => { - const columns = [ - { key: 'customerName', accessor: 'customerName' }, - ...R.repeat({ key: 'empty', value: '' }, 5), - { - key: 'closingBalanceValue', - accessor: 'closingBalance.formattedAmount', - }, - ]; - - return { - ...tableRowMapper(customer, columns, { rowTypes: [ROW_TYPE.CUSTOMER] }), - children: R.pipe( - R.when( - R.always(customer.transactions.length > 0), - R.pipe( - R.concat(this.contactTransactions(customer)), - R.prepend(this.contactOpeningBalance(customer)) - ) - ), - R.append(this.contactClosingBalance(customer)) - )([]), - }; - }; - - /** - * Retrieve the table rows of the customer section. - * @param {ITransactionsByCustomersCustomer} customer - * @returns {ITableRow[]} - */ - private customerRowsMapper = (customer: ITransactionsByCustomersCustomer) => { - return R.pipe(this.customerDetails)(customer); - }; - - /** - * Retrieve the table rows of transactions by customers report. - * @param {ITransactionsByCustomersCustomer[]} customers - * @returns {ITableRow[]} - */ - public tableRows = (): ITableRow[] => { - return R.map(this.customerRowsMapper.bind(this))( - this.customersTransactions - ); - }; -} diff --git a/server/src/services/FinancialStatements/TransactionsByReference/TransactionsByReferenceReport.ts b/server/src/services/FinancialStatements/TransactionsByReference/TransactionsByReferenceReport.ts deleted file mode 100644 index ae4a00f42..000000000 --- a/server/src/services/FinancialStatements/TransactionsByReference/TransactionsByReferenceReport.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { - IAccount, - IAccountTransaction, - INumberFormatQuery, - ITransactionsByReferenceQuery, - ITransactionsByReferenceTransaction, -} from 'interfaces'; -import FinancialSheet from '../FinancialSheet'; - -export default class TransactionsByReference extends FinancialSheet { - readonly transactions: IAccountTransaction[]; - readonly query: ITransactionsByReferenceQuery; - readonly baseCurrency: string; - readonly numberFormat: INumberFormatQuery; - - /** - * Constructor method. - * @param {IAccountTransaction[]} transactions - * @param {ITransactionsByReferenceQuery} query - * @param {string} baseCurrency - */ - constructor( - transactions: (IAccountTransaction & { account: IAccount }) [], - query: ITransactionsByReferenceQuery, - baseCurrency: string - ) { - super(); - - this.transactions = transactions; - this.query = query; - this.baseCurrency = baseCurrency; - this.numberFormat = this.query.numberFormat; - } - - /** - * Mappes the given account transaction to report transaction. - * @param {IAccountTransaction} transaction - * @returns {ITransactionsByReferenceTransaction} - */ - private transactionMapper = ( - transaction: IAccountTransaction - ): ITransactionsByReferenceTransaction => { - return { - date: this.getDateMeta(transaction.date), - - credit: this.getAmountMeta(transaction.credit, { money: true }), - debit: this.getAmountMeta(transaction.debit, { money: true }), - - referenceTypeFormatted: transaction.referenceTypeFormatted, - referenceType: transaction.referenceType, - referenceId: transaction.referenceId, - - contactId: transaction.contactId, - contactType: transaction.contactType, - contactTypeFormatted: transaction.contactType, - - accountName: transaction.account.name, - accountCode: transaction.account.code, - accountId: transaction.accountId, - }; - }; - - /** - * Mappes the given accounts transactions to report transactions. - * @param {IAccountTransaction} transaction - * @returns {ITransactionsByReferenceTransaction} - */ - private transactionsMapper = ( - transactions: IAccountTransaction[] - ): ITransactionsByReferenceTransaction[] => { - return transactions.map(this.transactionMapper); - }; - - /** - * Retrieve the report data. - * @returns {ITransactionsByReferenceTransaction} - */ - public reportData(): ITransactionsByReferenceTransaction[] { - return this.transactionsMapper(this.transactions); - } -} diff --git a/server/src/services/FinancialStatements/TransactionsByReference/TransactionsByReferenceRepository.ts b/server/src/services/FinancialStatements/TransactionsByReference/TransactionsByReferenceRepository.ts deleted file mode 100644 index c0602a88b..000000000 --- a/server/src/services/FinancialStatements/TransactionsByReference/TransactionsByReferenceRepository.ts +++ /dev/null @@ -1,29 +0,0 @@ -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { Service, Inject } from 'typedi'; -import { IAccount, IAccountTransaction, ITransactionsByReferenceQuery } from 'interfaces'; - -@Service() -export default class TransactionsByReferenceRepository { - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve the accounts transactions of the givne reference id and type. - * @param {number} tenantId - - * @param {number} referenceId - Reference id. - * @param {string} referenceType - Reference type. - * @return {Promise} - */ - public getTransactions( - tenantId: number, - referenceId: number, - referenceType: string, - ): Promise<(IAccountTransaction & { account: IAccount }) []> { - const { AccountTransaction } = this.tenancy.models(tenantId); - - return AccountTransaction.query() - .where('reference_id', referenceId) - .where('reference_type', referenceType) - .withGraphFetched('account'); - } -} diff --git a/server/src/services/FinancialStatements/TransactionsByReference/index.ts b/server/src/services/FinancialStatements/TransactionsByReference/index.ts deleted file mode 100644 index 95e38a8ca..000000000 --- a/server/src/services/FinancialStatements/TransactionsByReference/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { Service, Inject } from 'typedi'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { - ITransactionsByReferenceQuery, - ITransactionsByReferenceTransaction, -} from 'interfaces'; -import TransactionsByReferenceRepository from './TransactionsByReferenceRepository'; -import TransactionsByReferenceReport from './TransactionsByReferenceReport'; - -@Service() -export default class TransactionsByReferenceService { - @Inject() - tenancy: HasTenancyService; - - @Inject('logger') - logger: any; - - @Inject() - reportRepository: TransactionsByReferenceRepository; - - /** - * Default query of transactions by reference report. - */ - get defaultQuery(): ITransactionsByReferenceQuery { - return { - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'total', - negativeFormat: 'mines', - }, - }; - } - - /** - * Retrieve accounts transactions by given reference id and type. - * @param {number} tenantId - * @param {ITransactionsByReferenceQuery} filter - */ - public async getTransactionsByReference( - tenantId: number, - query: ITransactionsByReferenceQuery - ): Promise<{ - transactions: ITransactionsByReferenceTransaction[]; - }> { - const filter = { - ...this.defaultQuery, - ...query, - }; - - // Retrieve the accounts transactions of the given reference. - const transactions = await this.reportRepository.getTransactions( - tenantId, - filter.referenceId, - filter.referenceType - ); - - // Settings tenant service. - const settings = this.tenancy.settings(tenantId); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - // Transactions by reference report. - const report = new TransactionsByReferenceReport( - transactions, - filter, - baseCurrency - ); - - return { - transactions: report.reportData(), - }; - } -} diff --git a/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendor.ts b/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendor.ts deleted file mode 100644 index 9d3ba8cee..000000000 --- a/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendor.ts +++ /dev/null @@ -1,136 +0,0 @@ -import * as R from 'ramda'; -import { sumBy } from 'lodash'; -import { - ITransactionsByContactsTransaction, - ITransactionsByVendorsFilter, - ITransactionsByVendorsTransaction, - ITransactionsByVendorsVendor, - ITransactionsByVendorsData, - ILedger, - INumberFormatQuery, - IVendor, -} from 'interfaces'; -import TransactionsByContact from '../TransactionsByContact/TransactionsByContact'; - -const VENDOR_NORMAL = 'credit'; - -export default class TransactionsByVendors extends TransactionsByContact { - readonly contacts: IVendor[]; - readonly transactionsByContact: any; - readonly filter: ITransactionsByVendorsFilter; - readonly baseCurrency: string; - readonly numberFormat: INumberFormatQuery; - readonly accountsGraph: any; - readonly ledger: ILedger; - - /** - * Constructor method. - * @param {IVendor} vendors - * @param {Map} transactionsByContact - * @param {string} baseCurrency - */ - constructor( - vendors: IVendor[], - accountsGraph: any, - ledger: ILedger, - filter: ITransactionsByVendorsFilter, - baseCurrency: string, - i18n - ) { - super(); - - this.contacts = vendors; - this.accountsGraph = accountsGraph; - this.ledger = ledger; - this.baseCurrency = baseCurrency; - this.filter = filter; - this.numberFormat = this.filter.numberFormat; - this.i18n = i18n; - } - - /** - * Retrieve the vendor transactions from the given vendor id and opening balance. - * @param {number} vendorId - Vendor id. - * @param {number} openingBalance - Opening balance amount. - * @returns {ITransactionsByVendorsTransaction[]} - */ - private vendorTransactions( - vendorId: number, - openingBalance: number - ): ITransactionsByVendorsTransaction[] { - const openingBalanceLedger = this.ledger - .whereContactId(vendorId) - .whereFromDate(this.filter.fromDate) - .whereToDate(this.filter.toDate); - - const openingEntries = openingBalanceLedger.getEntries(); - - return R.compose( - R.curry(this.contactTransactionRunningBalance)(openingBalance, 'credit'), - R.map(this.contactTransactionMapper.bind(this)) - ).bind(this)(openingEntries); - } - - /** - * Vendor section mapper. - * @param {IVendor} vendor - * @returns {ITransactionsByVendorsVendor} - */ - private vendorMapper(vendor: IVendor): ITransactionsByVendorsVendor { - const openingBalance = this.getContactOpeningBalance(vendor.id); - const transactions = this.vendorTransactions(vendor.id, openingBalance); - const closingBalance = this.getVendorClosingBalance( - transactions, - openingBalance - ); - const currencyCode = this.baseCurrency; - - return { - vendorName: vendor.displayName, - openingBalance: this.getTotalAmountMeta(openingBalance, currencyCode), - closingBalance: this.getTotalAmountMeta(closingBalance, currencyCode), - transactions, - }; - } - - /** - * Retrieve the vendor closing balance from the given customer transactions. - * @param {ITransactionsByContactsTransaction[]} customerTransactions - * @param {number} openingBalance - * @returns - */ - private getVendorClosingBalance( - customerTransactions: ITransactionsByContactsTransaction[], - openingBalance: number - ) { - return this.getContactClosingBalance( - customerTransactions, - VENDOR_NORMAL, - openingBalance - ); - } - - /** - * Retrieve the vendors sections of the report. - * @param {IVendor[]} vendors - * @returns {ITransactionsByVendorsVendor[]} - */ - private vendorsMapper(vendors: IVendor[]): ITransactionsByVendorsVendor[] { - return R.compose(R.map(this.vendorMapper.bind(this))).bind(this)(vendors); - } - - /** - * Retrieve the report data. - * @returns {ITransactionsByVendorsData} - */ - public reportData(): ITransactionsByVendorsData { - return this.vendorsMapper(this.contacts); - } - - /** - * Retrieve the report columns. - */ - public reportColumns() { - return []; - } -} diff --git a/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorRepository.ts b/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorRepository.ts deleted file mode 100644 index daa9f3424..000000000 --- a/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorRepository.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { isEmpty, map } from 'lodash'; -import { IVendor, IAccount, IAccountTransaction } from 'interfaces'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { ACCOUNT_TYPE } from 'data/AccountTypes'; - -@Service() -export default class TransactionsByVendorRepository { - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve the report vendors. - * @param {number} tenantId - * @returns {Promise} - */ - public getVendors( - tenantId: number, - vendorsIds?: number[] - ): Promise { - const { Vendor } = this.tenancy.models(tenantId); - - return Vendor.query().onBuild((q) => { - q.orderBy('displayName'); - - if (!isEmpty(vendorsIds)) { - q.whereIn('id', vendorsIds); - } - }); - } - - /** - * Retrieve the accounts receivable. - * @param {number} tenantId - * @returns {Promise} - */ - private async getPayableAccounts(tenantId: number): Promise { - const { Account } = this.tenancy.models(tenantId); - - const accounts = await Account.query().where( - 'accountType', - ACCOUNT_TYPE.ACCOUNTS_PAYABLE - ); - return accounts; - } - - /** - * Retrieve the customers opening balance transactions. - * @param {number} tenantId - * @param {number} openingDate - * @param {number} customersIds - * @returns {} - */ - public async getVendorsOpeningBalance( - tenantId: number, - openingDate: Date, - customersIds?: number[] - ): Promise { - const { AccountTransaction } = this.tenancy.models(tenantId); - - const payableAccounts = await this.getPayableAccounts(tenantId); - const payableAccountsIds = map(payableAccounts, 'id'); - - const openingTransactions = await AccountTransaction.query().modify( - 'contactsOpeningBalance', - openingDate, - payableAccountsIds, - customersIds - ); - return openingTransactions; - } - - /** - * Retrieve vendors periods transactions. - * @param {number} tenantId - * @param {Date|string} openingDate - * @param {number[]} customersIds - */ - public async getVendorsPeriodTransactions( - tenantId: number, - fromDate: Date, - toDate: Date - ): Promise { - const { AccountTransaction } = this.tenancy.models(tenantId); - - const receivableAccounts = await this.getPayableAccounts(tenantId); - const receivableAccountsIds = map(receivableAccounts, 'id'); - - const transactions = await AccountTransaction.query().onBuild((query) => { - // Filter by date. - query.modify('filterDateRange', fromDate, toDate); - - // Filter by customers. - query.whereNot('contactId', null); - - // Filter by accounts. - query.whereIn('accountId', receivableAccountsIds); - }); - return transactions; - } -} diff --git a/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorService.ts b/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorService.ts deleted file mode 100644 index ef75b84a1..000000000 --- a/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorService.ts +++ /dev/null @@ -1,179 +0,0 @@ -import { Inject } from 'typedi'; -import moment from 'moment'; -import * as R from 'ramda'; -import { map } from 'lodash'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { - ITransactionsByVendorsService, - ITransactionsByVendorsFilter, - ITransactionsByVendorsStatement, - ILedgerEntry, -} from 'interfaces'; -import TransactionsByVendor from './TransactionsByVendor'; -import Ledger from 'services/Accounting/Ledger'; -import TransactionsByVendorRepository from './TransactionsByVendorRepository'; -import { Tenant } from 'system/models'; - -export default class TransactionsByVendorsService - implements ITransactionsByVendorsService -{ - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - @Inject() - reportRepository: TransactionsByVendorRepository; - - /** - * Defaults balance sheet filter query. - * @return {IVendorBalanceSummaryQuery} - */ - get defaultQuery(): ITransactionsByVendorsFilter { - return { - fromDate: moment().format('YYYY-MM-DD'), - toDate: moment().format('YYYY-MM-DD'), - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'total', - negativeFormat: 'mines', - }, - comparison: { - percentageOfColumn: true, - }, - noneZero: false, - noneTransactions: false, - - vendorsIds: [], - }; - } - - /** - * Retrieve the customers opening balance transactions. - * @param {number} tenantId - * @param {number} openingDate - * @param {number} customersIds - * @returns {Promise} - */ - private async getVendorsOpeningBalanceEntries( - tenantId: number, - openingDate: Date, - customersIds?: number[] - ): Promise { - const openingTransactions = - await this.reportRepository.getVendorsOpeningBalance( - tenantId, - openingDate, - customersIds - ); - return R.compose( - R.map(R.assoc('date', openingDate)), - R.map(R.assoc('accountNormal', 'credit')) - )(openingTransactions); - } - - /** - * - * @param {number} tenantId - * @param {Date|string} openingDate - * @param {number[]} customersIds - */ - private async getVendorsPeriodEntries( - tenantId: number, - fromDate: Date, - toDate: Date - ): Promise { - const transactions = - await this.reportRepository.getVendorsPeriodTransactions( - tenantId, - fromDate, - toDate - ); - return R.compose( - R.map(R.assoc('accountNormal', 'credit')), - R.map((trans) => ({ - ...trans, - referenceTypeFormatted: trans.referenceTypeFormatted, - })) - )(transactions); - } - - /** - * Retrieve the report ledger entries from repository. - * @param {number} tenantId - * @param {Date} fromDate - * @param {Date} toDate - * @returns {Promise} - */ - private async getReportEntries( - tenantId: number, - fromDate: Date, - toDate: Date - ): Promise { - const openingBalanceDate = moment(fromDate).subtract(1, 'days').toDate(); - - return [ - ...(await this.getVendorsOpeningBalanceEntries( - tenantId, - openingBalanceDate - )), - ...(await this.getVendorsPeriodEntries(tenantId, fromDate, toDate)), - ]; - } - - /** - * Retrieve transactions by by the customers. - * @param {number} tenantId - * @param {ITransactionsByVendorsFilter} query - * @return {Promise} - */ - public async transactionsByVendors( - tenantId: number, - query: ITransactionsByVendorsFilter - ): Promise { - const { accountRepository } = this.tenancy.repositories(tenantId); - - const i18n = this.tenancy.i18n(tenantId); - - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const filter = { ...this.defaultQuery, ...query }; - - // Retrieve the report vendors. - const vendors = await this.reportRepository.getVendors( - tenantId, - filter.vendorsIds - ); - // Retrieve the accounts graph. - const accountsGraph = await accountRepository.getDependencyGraph(); - - // Journal transactions. - const reportEntries = await this.getReportEntries( - tenantId, - filter.fromDate, - filter.toDate - ); - // Ledger collection. - const journal = new Ledger(reportEntries); - - // Transactions by customers data mapper. - const reportInstance = new TransactionsByVendor( - vendors, - accountsGraph, - journal, - filter, - tenant.metadata.baseCurrency, - i18n - ); - return { - data: reportInstance.reportData(), - columns: reportInstance.reportColumns(), - query: filter, - }; - } -} diff --git a/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorTableRows.ts b/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorTableRows.ts deleted file mode 100644 index f6afdb845..000000000 --- a/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorTableRows.ts +++ /dev/null @@ -1,76 +0,0 @@ -import * as R from 'ramda'; -import { tableRowMapper } from 'utils'; -import { ITransactionsByVendorsVendor, ITableRow } from 'interfaces'; -import TransactionsByContactsTableRows from '../TransactionsByContact/TransactionsByContactTableRows'; - -enum ROW_TYPE { - OPENING_BALANCE = 'OPENING_BALANCE', - CLOSING_BALANCE = 'CLOSING_BALANCE', - TRANSACTION = 'TRANSACTION', - VENDOR = 'VENDOR', -} - -export default class TransactionsByVendorsTableRows extends TransactionsByContactsTableRows { - vendorsTransactions: ITransactionsByVendorsVendor[]; - - /** - * Constructor method. - */ - constructor( - vendorsTransactions: ITransactionsByVendorsVendor[], - i18n - ) { - super(); - - this.vendorsTransactions = vendorsTransactions; - this.i18n = i18n; - } - - /** - * Retrieve the table row of vendor details. - * @param {ITransactionsByVendorsVendor} vendor - - * @returns {ITableRow[]} - */ - private vendorDetails = (vendor: ITransactionsByVendorsVendor) => { - const columns = [ - { key: 'vendorName', accessor: 'vendorName' }, - ...R.repeat({ key: 'empty', value: '' }, 5), - { - key: 'closingBalanceValue', - accessor: 'closingBalance.formattedAmount', - }, - ]; - - return { - ...tableRowMapper(vendor, columns, { rowTypes: [ROW_TYPE.VENDOR] }), - children: R.pipe( - R.when( - R.always(vendor.transactions.length > 0), - R.pipe( - R.concat(this.contactTransactions(vendor)), - R.prepend(this.contactOpeningBalance(vendor)) - ) - ), - R.append(this.contactClosingBalance(vendor)) - )([]), - }; - }; - - /** - * Retrieve the table rows of the vendor section. - * @param {ITransactionsByVendorsVendor} vendor - * @returns {ITableRow[]} - */ - private vendorRowsMapper = (vendor: ITransactionsByVendorsVendor) => { - return R.pipe(this.vendorDetails)(vendor); - }; - - /** - * Retrieve the table rows of transactions by vendors report. - * @param {ITransactionsByVendorsVendor[]} vendors - * @returns {ITableRow[]} - */ - public tableRows = (): ITableRow[] => { - return R.map(this.vendorRowsMapper)(this.vendorsTransactions); - }; -} diff --git a/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheet.ts b/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheet.ts deleted file mode 100644 index b28d14f5f..000000000 --- a/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheet.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { sumBy } from 'lodash'; -import { - ITrialBalanceSheetQuery, - ITrialBalanceAccount, - IAccount, - ITrialBalanceTotal, - ITrialBalanceSheetData, - IAccountType, -} from 'interfaces'; -import FinancialSheet from '../FinancialSheet'; -import { flatToNestedArray } from 'utils'; - -const AMOUNT_TYPE = { - TOTAL: 'TOTAL', - SECTION_TOTAL: 'SECTION_TOTAL', -}; - -export default class TrialBalanceSheet extends FinancialSheet { - tenantId: number; - query: ITrialBalanceSheetQuery; - accounts: IAccount & { type: IAccountType }[]; - journalFinancial: any; - baseCurrency: string; - - /** - * Constructor method. - * @param {number} tenantId - * @param {ITrialBalanceSheetQuery} query - * @param {IAccount[]} accounts - * @param journalFinancial - */ - constructor( - tenantId: number, - query: ITrialBalanceSheetQuery, - accounts: IAccount & { type: IAccountType }[], - journalFinancial: any, - baseCurrency: string - ) { - super(); - - this.tenantId = tenantId; - this.query = query; - this.numberFormat = this.query.numberFormat; - this.accounts = accounts; - this.journalFinancial = journalFinancial; - this.numberFormat = this.query.numberFormat; - this.baseCurrency = baseCurrency; - } - - /** - * Account mapper. - * @param {IAccount} account - * @return {ITrialBalanceAccount} - */ - private accountMapper( - account: IAccount & { type: IAccountType } - ): ITrialBalanceAccount { - const trial = this.journalFinancial.getTrialBalanceWithDepands(account.id); - - // Retrieve all entries that associated to the given account. - const entries = this.journalFinancial.getAccountEntries(account.id); - - return { - id: account.id, - parentAccountId: account.parentAccountId, - name: account.name, - code: account.code, - accountNormal: account.accountNormal, - hasTransactions: entries.length > 0, - - credit: trial.credit, - debit: trial.debit, - balance: trial.balance, - currencyCode: this.baseCurrency, - - formattedCredit: this.formatNumber(trial.credit), - formattedDebit: this.formatNumber(trial.debit), - formattedBalance: this.formatNumber(trial.balance), - }; - } - - /** - * Accounts walker. - * @param {IAccount[]} accounts - * @return {ITrialBalanceAccount[]} - */ - private accountsWalker( - accounts: IAccount & { type: IAccountType }[] - ): ITrialBalanceAccount[] { - const flattenAccounts = accounts - // Mapping the trial balance accounts sections. - .map((account: IAccount & { type: IAccountType }) => - this.accountMapper(account) - ) - // Filter accounts that have no transaction when `noneTransactions` is on. - .filter( - (trialAccount: ITrialBalanceAccount): boolean => - !(!trialAccount.hasTransactions && this.query.noneTransactions) - ) - // Filter accounts that have zero total amount when `noneZero` is on. - .filter( - (trialAccount: ITrialBalanceAccount): boolean => - !( - trialAccount.credit === 0 && - trialAccount.debit === 0 && - this.query.noneZero - ) - ); - - return flatToNestedArray(flattenAccounts, { - id: 'id', - parentId: 'parentAccountId', - }); - } - - /** - * Retrieve trial balance total section. - * @param {ITrialBalanceAccount[]} accountsBalances - * @return {ITrialBalanceTotal} - */ - private tatalSection( - accountsBalances: ITrialBalanceAccount[] - ): ITrialBalanceTotal { - const credit = sumBy(accountsBalances, 'credit'); - const debit = sumBy(accountsBalances, 'debit'); - const balance = sumBy(accountsBalances, 'balance'); - const currencyCode = this.baseCurrency; - - return { - credit, - debit, - balance, - currencyCode, - formattedCredit: this.formatTotalNumber(credit), - formattedDebit: this.formatTotalNumber(debit), - formattedBalance: this.formatTotalNumber(balance), - }; - } - - /** - * Retrieve trial balance sheet statement data. - * Note: Retruns null in case there is no transactions between the given date periods. - * - * @return {ITrialBalanceSheetData} - */ - public reportData(): ITrialBalanceSheetData { - // Don't return noting if the journal has no transactions. - if (this.journalFinancial.isEmpty()) { - return null; - } - const accounts = this.accountsWalker(this.accounts); - const total = this.tatalSection(accounts); - - return { accounts, total }; - } -} diff --git a/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetService.ts b/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetService.ts deleted file mode 100644 index 4d693c9f9..000000000 --- a/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetService.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { Service, Inject } from 'typedi'; -import moment from 'moment'; -import TenancyService from 'services/Tenancy/TenancyService'; -import Journal from 'services/Accounting/JournalPoster'; -import { ITrialBalanceSheetMeta, ITrialBalanceSheetQuery, ITrialBalanceStatement } from 'interfaces'; -import TrialBalanceSheet from './TrialBalanceSheet'; -import FinancialSheet from '../FinancialSheet'; -import InventoryService from 'services/Inventory/Inventory'; -import { parseBoolean } from 'utils'; -import { Tenant } from 'system/models'; - -@Service() -export default class TrialBalanceSheetService extends FinancialSheet { - @Inject() - tenancy: TenancyService; - - @Inject() - inventoryService: InventoryService; - - @Inject('logger') - logger: any; - - /** - * Defaults trial balance sheet filter query. - * @return {IBalanceSheetQuery} - */ - get defaultQuery(): ITrialBalanceSheetQuery { - return { - fromDate: moment().startOf('year').format('YYYY-MM-DD'), - toDate: moment().endOf('year').format('YYYY-MM-DD'), - numberFormat: { - divideOn1000: false, - negativeFormat: 'mines', - showZero: false, - formatMoney: 'total', - precision: 2, - }, - basis: 'accural', - noneZero: false, - noneTransactions: false, - accountIds: [], - }; - } - - /** - * Retrieve the trial balance sheet meta. - * @param {number} tenantId - Tenant id. - * @returns {ITrialBalanceSheetMeta} - */ - reportMetadata(tenantId: number): ITrialBalanceSheetMeta { - const settings = this.tenancy.settings(tenantId); - - const isCostComputeRunning = this.inventoryService.isItemsCostComputeRunning( - tenantId - ); - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const baseCurrency = settings.get({ - group: 'organization', - key: 'base_currency', - }); - - return { - isCostComputeRunning: parseBoolean(isCostComputeRunning, false), - organizationName, - baseCurrency, - }; - } - - /** - * Retrieve trial balance sheet statement. - * ------------- - * @param {number} tenantId - * @param {IBalanceSheetQuery} query - * - * @return {IBalanceSheetStatement} - */ - public async trialBalanceSheet( - tenantId: number, - query: ITrialBalanceSheetQuery - ): Promise { - const filter = { - ...this.defaultQuery, - ...query, - }; - const { - accountRepository, - transactionsRepository, - } = this.tenancy.repositories(tenantId); - - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - this.logger.info('[trial_balance_sheet] trying to calcualte the report.', { - tenantId, - filter, - }); - // Retrieve all accounts on the storage. - const accounts = await accountRepository.all(); - const accountsGraph = await accountRepository.getDependencyGraph(); - - // Retrieve all journal transactions based on the given query. - const transactions = await transactionsRepository.journal({ - fromDate: query.fromDate, - toDate: query.toDate, - sumationCreditDebit: true, - }); - // Transform transactions array to journal collection. - const transactionsJournal = Journal.fromTransactions( - transactions, - tenantId, - accountsGraph - ); - // Trial balance report instance. - const trialBalanceInstance = new TrialBalanceSheet( - tenantId, - filter, - accounts, - transactionsJournal, - tenant.metadata.baseCurrency, - ); - // Trial balance sheet data. - const trialBalanceSheetData = trialBalanceInstance.reportData(); - - return { - data: trialBalanceSheetData, - query: filter, - meta: this.reportMetadata(tenantId), - }; - } -} diff --git a/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummary.ts b/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummary.ts deleted file mode 100644 index fee03080a..000000000 --- a/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummary.ts +++ /dev/null @@ -1,99 +0,0 @@ -import * as R from 'ramda'; -import { - ILedger, - IVendor, - IVendorBalanceSummaryVendor, - IVendorBalanceSummaryQuery, - IVendorBalanceSummaryData, - INumberFormatQuery, -} from 'interfaces'; -import { ContactBalanceSummaryReport } from '../ContactBalanceSummary/ContactBalanceSummary'; - -export class VendorBalanceSummaryReport extends ContactBalanceSummaryReport { - readonly ledger: ILedger; - readonly baseCurrency: string; - readonly vendors: IVendor[]; - readonly filter: IVendorBalanceSummaryQuery; - readonly numberFormat: INumberFormatQuery; - - /** - * Constructor method. - * @param {IJournalPoster} receivableLedger - * @param {IVendor[]} vendors - * @param {IVendorBalanceSummaryQuery} filter - * @param {string} baseCurrency - */ - constructor( - ledger: ILedger, - vendors: IVendor[], - filter: IVendorBalanceSummaryQuery, - baseCurrency: string - ) { - super(); - - this.ledger = ledger; - this.baseCurrency = baseCurrency; - this.vendors = vendors; - this.filter = filter; - this.numberFormat = this.filter.numberFormat; - } - - /** - * Customer section mapper. - * @param {IVendor} vendor - * @returns {IVendorBalanceSummaryVendor} - */ - private vendorMapper(vendor: IVendor): IVendorBalanceSummaryVendor { - const closingBalance = this.ledger - .whereContactId(vendor.id) - .getClosingBalance(); - - return { - vendorName: vendor.displayName, - total: this.getContactTotalFormat(closingBalance), - }; - } - - /** - * Mappes the vendor model object to vendor balance summary section. - * @param {IVendor[]} vendors - Customers. - * @returns {IVendorBalanceSummaryVendor[]} - */ - private vendorsMapper( - vendors: IVendor[] - ): IVendorBalanceSummaryVendor[] { - return vendors.map(this.vendorMapper.bind(this)); - } - - /** - * Retrieve the vendors sections of the report. - * @param {IVendor} vendors - * @returns {IVendorBalanceSummaryVendor[]} - */ - private getVendorsSection( - vendors: IVendor[] - ): IVendorBalanceSummaryVendor[] { - return R.compose( - R.when( - R.always(this.filter.comparison.percentageOfColumn), - this.contactCamparsionPercentageOfColumn.bind(this) - ), - this.vendorsMapper.bind(this) - ).bind(this)(vendors); - } - - /** - * Retrieve the report statement data. - * @returns {IVendorBalanceSummaryData} - */ - public reportData(): IVendorBalanceSummaryData { - const vendors = this.getVendorsSection(this.vendors); - const total = this.getContactsTotalSection(vendors); - - return { vendors, total }; - } - - reportColumns() { - return []; - } -} diff --git a/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryRepository.ts b/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryRepository.ts deleted file mode 100644 index ed929bb9d..000000000 --- a/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryRepository.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { isEmpty, map } from 'lodash'; -import { IVendor, IAccount } from 'interfaces'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { ACCOUNT_TYPE } from 'data/AccountTypes'; - -@Service() -export default class VendorBalanceSummaryRepository { - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve the report vendors. - * @param {number} tenantId - * @param {number[]} vendorsIds - Vendors ids. - * @returns {IVendor[]} - */ - public getVendors( - tenantId: number, - vendorsIds?: number[] - ): Promise { - const { Vendor } = this.tenancy.models(tenantId); - - const vendorQuery = Vendor.query().orderBy('displayName'); - - if (!isEmpty(vendorsIds)) { - vendorQuery.whereIn('id', vendorsIds); - } - return vendorQuery; - } - - /** - * Retrieve the payable accounts. - * @param {number} tenantId - * @returns {Promise} - */ - public getPayableAccounts(tenantId: number): Promise { - const { Account } = this.tenancy.models(tenantId); - - return Account.query().where('accountType', ACCOUNT_TYPE.ACCOUNTS_PAYABLE); - } - - /** - * Retrieve the vendors transactions. - * @param {number} tenantId - * @param {Date} asDate - * @returns - */ - public async getVendorsTransactions(tenantId: number, asDate: Date | string) { - const { AccountTransaction } = this.tenancy.models(tenantId); - - // Retrieve payable accounts . - const payableAccounts = await this.getPayableAccounts(tenantId); - const payableAccountsIds = map(payableAccounts, 'id'); - - // Retrieve the customers transactions of A/R accounts. - const customersTranasctions = await AccountTransaction.query().onBuild( - (query) => { - query.whereIn('accountId', payableAccountsIds); - query.modify('filterDateRange', null, asDate); - query.groupBy('contactId'); - query.sum('credit as credit'); - query.sum('debit as debit'); - query.select('contactId'); - } - ); - return customersTranasctions; - } -} diff --git a/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryService.ts b/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryService.ts deleted file mode 100644 index 7586dc11a..000000000 --- a/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryService.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { Inject } from 'typedi'; -import moment from 'moment'; -import { map } from 'lodash'; -import * as R from 'ramda'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { - IVendor, - IVendorBalanceSummaryService, - IVendorBalanceSummaryQuery, - IVendorBalanceSummaryStatement, - ILedgerEntry, -} from 'interfaces'; -import { VendorBalanceSummaryReport } from './VendorBalanceSummary'; -import Ledger from 'services/Accounting/Ledger'; -import VendorBalanceSummaryRepository from './VendorBalanceSummaryRepository'; -import { Tenant } from 'system/models'; - -export default class VendorBalanceSummaryService - implements IVendorBalanceSummaryService -{ - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - @Inject() - reportRepo: VendorBalanceSummaryRepository; - - /** - * Defaults balance sheet filter query. - * @return {IVendorBalanceSummaryQuery} - */ - get defaultQuery(): IVendorBalanceSummaryQuery { - return { - asDate: moment().format('YYYY-MM-DD'), - numberFormat: { - precision: 2, - divideOn1000: false, - showZero: false, - formatMoney: 'total', - negativeFormat: 'mines', - }, - comparison: { - percentageOfColumn: true, - }, - noneZero: false, - noneTransactions: false, - }; - } - - /** - * Retrieve the vendors ledger entrjes. - * @param {number} tenantId - - * @param {Date|string} date - - * @returns {Promise} - */ - private async getReportVendorsEntries( - tenantId: number, - date: Date | string - ): Promise { - const transactions = await this.reportRepo.getVendorsTransactions( - tenantId, - date - ); - const commonProps = { accountNormal: 'credit' }; - - return R.map(R.merge(commonProps))(transactions); - } - - /** - * Retrieve the statment of customer balance summary report. - * @param {number} tenantId - Tenant id. - * @param {IVendorBalanceSummaryQuery} query - - * @return {Promise} - */ - async vendorBalanceSummary( - tenantId: number, - query: IVendorBalanceSummaryQuery - ): Promise { - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const filter = { ...this.defaultQuery, ...query }; - this.logger.info( - '[customer_balance_summary] trying to calculate the report.', - { - filter, - tenantId, - } - ); - // Retrieve the vendors transactions. - const vendorsEntries = await this.getReportVendorsEntries( - tenantId, - query.asDate - ); - // Retrieve the customers list ordered by the display name. - const vendors = await this.reportRepo.getVendors( - tenantId, - query.vendorsIds - ); - // Ledger query. - const vendorsLedger = new Ledger(vendorsEntries); - - // Report instance. - const reportInstance = new VendorBalanceSummaryReport( - vendorsLedger, - vendors, - filter, - tenant.metadata.baseCurrency - ); - - return { - data: reportInstance.reportData(), - columns: reportInstance.reportColumns(), - query: filter, - }; - } -} diff --git a/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryTableRows.ts b/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryTableRows.ts deleted file mode 100644 index a68f565e1..000000000 --- a/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryTableRows.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Service } from 'typedi'; -import { tableMapper, tableRowMapper } from 'utils'; -import { - IVendorBalanceSummaryData, - IVendorBalanceSummaryVendor, - IVendorBalanceSummaryTotal, - ITableRow, -} from 'interfaces'; - -enum TABLE_ROWS_TYPES { - VENDOR = 'VENDOR', - TOTAL = 'TOTAL', -} - -@Service() -export default class VendorBalanceSummaryTableRows { - /** - * Transformes the vendors to table rows. - * @param {IVendorBalanceSummaryVendor[]} vendors - * @returns {ITableRow[]} - */ - private vendorsTransformer( - vendors: IVendorBalanceSummaryVendor[] - ): ITableRow[] { - const columns = [ - { key: 'vendorName', accessor: 'vendorName' }, - { key: 'total', accessor: 'total.formattedAmount' }, - { - key: 'percentageOfColumn', - accessor: 'percentageOfColumn.formattedAmount', - }, - ]; - return tableMapper(vendors, columns, { - rowTypes: [TABLE_ROWS_TYPES.VENDOR], - }); - } - - /** - * Transformes the total to table row. - * @param {IVendorBalanceSummaryTotal} total - * @returns {ITableRow} - */ - private totalTransformer(total: IVendorBalanceSummaryTotal) { - const columns = [ - { key: 'total', value: 'Total' }, - { key: 'total', accessor: 'total.formattedAmount' }, - { - key: 'percentageOfColumn', - accessor: 'percentageOfColumn.formattedAmount', - }, - ]; - return tableRowMapper(total, columns, { - rowTypes: [TABLE_ROWS_TYPES.TOTAL], - }); - } - - /** - * Transformes the vendor balance summary to table rows. - * @param {IVendorBalanceSummaryData} vendorBalanceSummary - * @returns {ITableRow[]} - */ - public tableRowsTransformer( - vendorBalanceSummary: IVendorBalanceSummaryData - ): ITableRow[] { - const vendors = this.vendorsTransformer(vendorBalanceSummary.vendors); - const total = this.totalTransformer(vendorBalanceSummary.total); - - return vendors.length > 0 ? [...vendors, total] : []; - } -} diff --git a/server/src/services/FinancialStatements/utils.ts b/server/src/services/FinancialStatements/utils.ts deleted file mode 100644 index 1114131b9..000000000 --- a/server/src/services/FinancialStatements/utils.ts +++ /dev/null @@ -1,13 +0,0 @@ - - -export const formatNumber = (balance, { noCents, divideOn1000 }): string => { - let formattedBalance: number = parseFloat(balance); - - if (noCents) { - formattedBalance = parseInt(formattedBalance, 10); - } - if (divideOn1000) { - formattedBalance /= 1000; - } - return formattedBalance; -}; \ No newline at end of file diff --git a/server/src/services/I18n/I18nService.ts b/server/src/services/I18n/I18nService.ts deleted file mode 100644 index 03301c2b5..000000000 --- a/server/src/services/I18n/I18nService.ts +++ /dev/null @@ -1,64 +0,0 @@ -import * as R from 'ramda'; -import * as qim from 'qim'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { Service, Inject } from 'typedi'; - -@Service() -export default class I18nService { - @Inject() - tenancy: HasTenancyService; - - /** - * - * @param i18n - * @param attributes - * @param data - * @returns - */ - private i18nAttributesMapper(i18n, attributes, data) { - return attributes.reduce((acc, attr, index) => { - return { - ...acc, - [attr]: i18n.__(acc[attr]), - }; - }, data); - } - - /** - * Mappes array collection to i18n localization based in given attributes. - * @param {Array} data - Array collection. - * @param {string[]} attributes - Attributes. - * @param {number} tenantId - Tenant id. - */ - public i18nMapper( - data: Array, - attributes: string[] = [], - tenantId: number - ) { - const i18n = this.tenancy.i18n(tenantId); - - return data.map((_data) => { - const newData = this.i18nAttributesMapper(i18n, attributes, _data); - - return { - ..._data, - ...newData, - }; - }); - } - - public i18nApply( - paths: (string|Function)[][], - data: Array, - tenantId: number, - ) { - const i18n = this.tenancy.i18n(tenantId); - const applyCurry = R.curryN(3, qim.apply); - - const transform = (value) => i18n.__(value) || value; - - const curriedCallbacks = paths.map((path) => applyCurry(path, transform)); - - return R.compose(...curriedCallbacks)(data); - } -} diff --git a/server/src/services/Inventory/Inventory.ts b/server/src/services/Inventory/Inventory.ts deleted file mode 100644 index 22d909c09..000000000 --- a/server/src/services/Inventory/Inventory.ts +++ /dev/null @@ -1,346 +0,0 @@ -import { Container, Service, Inject } from 'typedi'; -import { pick } from 'lodash'; -import config from 'config'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import { - IInventoryLotCost, - IInventoryTransaction, - TInventoryTransactionDirection, - IItemEntry, - IItemEntryTransactionType, -} from 'interfaces'; -import InventoryAverageCost from 'services/Inventory/InventoryAverageCost'; -import InventoryCostLotTracker from 'services/Inventory/InventoryCostLotTracker'; -import TenancyService from 'services/Tenancy/TenancyService'; -import events from 'subscribers/events'; -import ItemsEntriesService from 'services/Items/ItemsEntriesService'; - -type TCostMethod = 'FIFO' | 'LIFO' | 'AVG'; - -@Service() -export default class InventoryService { - @Inject() - tenancy: TenancyService; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject() - itemsEntriesService: ItemsEntriesService; - - /** - * Transforms the items entries to inventory transactions. - */ - transformItemEntriesToInventory(transaction: { - transactionId: number; - transactionType: IItemEntryTransactionType; - transactionNumber?: string; - - date: Date | string; - direction: TInventoryTransactionDirection; - entries: IItemEntry[]; - createdAt: Date; - }): IInventoryTransaction[] { - return transaction.entries.map((entry: IItemEntry) => ({ - ...pick(entry, [ - 'itemId', - 'quantity', - 'rate', - ]), - transactionType: transaction.transactionType, - transactionId: transaction.transactionId, - direction: transaction.direction, - date: transaction.date, - entryId: entry.id, - createdAt: transaction.createdAt, - costAccountId: entry.costAccountId, - meta: { - transactionNumber: transaction.transactionNumber, - description: entry.description, - } - })); - } - - /** - * Computes the given item cost and records the inventory lots transactions - * and journal entries based on the cost method FIFO, LIFO or average cost rate. - * @param {number} tenantId - Tenant id. - * @param {Date} fromDate - From date. - * @param {number} itemId - Item id. - */ - async computeItemCost(tenantId: number, fromDate: Date, itemId: number) { - const { Item } = this.tenancy.models(tenantId); - - // Fetches the item with assocaited item category. - const item = await Item.query().findById(itemId); - - // Cannot continue if the given item was not inventory item. - if (item.type !== 'inventory') { - throw new Error('You could not compute item cost has no inventory type.'); - } - let costMethodComputer: IInventoryCostMethod; - - // Switch between methods based on the item cost method. - switch ('AVG') { - case 'FIFO': - case 'LIFO': - costMethodComputer = new InventoryCostLotTracker( - tenantId, - fromDate, - itemId - ); - break; - case 'AVG': - costMethodComputer = new InventoryAverageCost( - tenantId, - fromDate, - itemId - ); - break; - } - return costMethodComputer.computeItemCost(); - } - - /** - * Schedule item cost compute job. - * @param {number} tenantId - * @param {number} itemId - * @param {Date} startingDate - */ - async scheduleComputeItemCost( - tenantId: number, - itemId: number, - startingDate: Date | string - ) { - const agenda = Container.get('agenda'); - - // Cancel any `compute-item-cost` in the queue has upper starting date - // with the same given item. - await agenda.cancel({ - name: 'compute-item-cost', - nextRunAt: { $ne: null }, - 'data.tenantId': tenantId, - 'data.itemId': itemId, - 'data.startingDate': { $gt: startingDate }, - }); - - // Retrieve any `compute-item-cost` in the queue has lower starting date - // with the same given item. - const dependsJobs = await agenda.jobs({ - name: 'compute-item-cost', - nextRunAt: { $ne: null }, - 'data.tenantId': tenantId, - 'data.itemId': itemId, - 'data.startingDate': { $lte: startingDate }, - }); - if (dependsJobs.length === 0) { - await agenda.schedule( - config.scheduleComputeItemCost, - 'compute-item-cost', - { - startingDate, - itemId, - tenantId, - } - ); - // Triggers `onComputeItemCostJobScheduled` event. - await this.eventDispatcher.dispatch( - events.inventory.onComputeItemCostJobScheduled, - { startingDate, itemId, tenantId } - ); - } - } - - /** - * Records the inventory transactions. - * @param {number} tenantId - Tenant id. - * @param {Bill} bill - Bill model object. - * @param {number} billId - Bill id. - * @return {Promise} - */ - async recordInventoryTransactions( - tenantId: number, - transactions: IInventoryTransaction[], - override: boolean = false - ): Promise { - const bulkInsertOpers = []; - - transactions.forEach((transaction: IInventoryTransaction) => { - const oper = this.recordInventoryTransaction( - tenantId, - transaction, - override - ); - bulkInsertOpers.push(oper); - }); - const inventoryTransactions = await Promise.all(bulkInsertOpers); - - // Triggers `onInventoryTransactionsCreated` event. - this.eventDispatcher.dispatch( - events.inventory.onInventoryTransactionsCreated, - { - tenantId, - inventoryTransactions, - } - ); - } - - /** - * Writes the inventory transactiosn on the storage from the given - * inventory transactions entries. - * - * @param {number} tenantId - - * @param {IInventoryTransaction} inventoryEntry - - * @param {boolean} deleteOld - - */ - async recordInventoryTransaction( - tenantId: number, - inventoryEntry: IInventoryTransaction, - deleteOld: boolean = false - ): Promise { - const { InventoryTransaction, Item } = this.tenancy.models(tenantId); - - if (deleteOld) { - await this.deleteInventoryTransactions( - tenantId, - inventoryEntry.transactionId, - inventoryEntry.transactionType - ); - } - return InventoryTransaction.query().insertGraph({ - ...inventoryEntry, - }); - } - - /** - * Records the inventory transactions from items entries that have (inventory) type. - * - * @param {number} tenantId - * @param {number} transactionId - * @param {string} transactionType - * @param {Date|string} transactionDate - * @param {boolean} override - */ - async recordInventoryTransactionsFromItemsEntries( - tenantId: number, - transaction: { - transactionId: number; - transactionType: IItemEntryTransactionType; - - date: Date | string; - direction: TInventoryTransactionDirection; - entries: IItemEntry[]; - createdAt: Date | string; - }, - override: boolean = false - ): Promise { - // Can't continue if there is no entries has inventory items in the invoice. - if (transaction.entries.length <= 0) { - return; - } - // Inventory transactions. - const inventoryTranscations = this.transformItemEntriesToInventory( - transaction - ); - // Records the inventory transactions of the given sale invoice. - await this.recordInventoryTransactions( - tenantId, - inventoryTranscations, - override - ); - } - - /** - * Deletes the given inventory transactions. - * @param {number} tenantId - Tenant id. - * @param {string} transactionType - * @param {number} transactionId - * @return {Promise<{ - * oldInventoryTransactions: IInventoryTransaction[] - * }>} - */ - async deleteInventoryTransactions( - tenantId: number, - transactionId: number, - transactionType: string - ): Promise<{ oldInventoryTransactions: IInventoryTransaction[] }> { - const { inventoryTransactionRepository } = this.tenancy.repositories( - tenantId - ); - - // Retrieve the inventory transactions of the given sale invoice. - const oldInventoryTransactions = await inventoryTransactionRepository.find({ - transactionId, - transactionType, - }); - // Deletes the inventory transactions by the given transaction type and id. - await inventoryTransactionRepository.deleteBy({ - transactionType, - transactionId, - }); - // Triggers `onInventoryTransactionsDeleted` event. - this.eventDispatcher.dispatch( - events.inventory.onInventoryTransactionsDeleted, - { - tenantId, - oldInventoryTransactions, - transactionId, - transactionType, - } - ); - return { oldInventoryTransactions }; - } - - /** - * Records the inventory cost lot transaction. - * @param {number} tenantId - * @param {IInventoryLotCost} inventoryLotEntry - * @return {Promise} - */ - async recordInventoryCostLotTransaction( - tenantId: number, - inventoryLotEntry: IInventoryLotCost - ): Promise { - const { InventoryCostLotTracker } = this.tenancy.models(tenantId); - - return InventoryCostLotTracker.query().insert({ - ...inventoryLotEntry, - }); - } - - /** - * Mark item cost computing is running. - * @param {number} tenantId - - * @param {boolean} isRunning - - */ - async markItemsCostComputeRunning( - tenantId: number, - isRunning: boolean = true - ) { - const settings = this.tenancy.settings(tenantId); - - settings.set({ - key: 'cost_compute_running', - group: 'inventory', - value: isRunning, - }); - await settings.save(); - } - - /** - * - * @param {number} tenantId - * @returns - */ - isItemsCostComputeRunning(tenantId) { - const settings = this.tenancy.settings(tenantId); - - return settings.get({ - key: 'cost_compute_running', - group: 'inventory', - }); - } -} diff --git a/server/src/services/Inventory/InventoryAdjustmentService.ts b/server/src/services/Inventory/InventoryAdjustmentService.ts deleted file mode 100644 index f3006bd1c..000000000 --- a/server/src/services/Inventory/InventoryAdjustmentService.ts +++ /dev/null @@ -1,396 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { omit } from 'lodash'; -import moment from 'moment'; -import * as R from 'ramda'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import { ServiceError } from 'exceptions'; -import { - IQuickInventoryAdjustmentDTO, - IInventoryAdjustment, - IPaginationMeta, - IInventoryAdjustmentsFilter, - ISystemUser, - IInventoryTransaction, -} from 'interfaces'; -import events from 'subscribers/events'; -import AccountsService from 'services/Accounts/AccountsService'; -import ItemsService from 'services/Items/ItemsService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import InventoryService from './Inventory'; - -const ERRORS = { - INVENTORY_ADJUSTMENT_NOT_FOUND: 'INVENTORY_ADJUSTMENT_NOT_FOUND', - ITEM_SHOULD_BE_INVENTORY_TYPE: 'ITEM_SHOULD_BE_INVENTORY_TYPE', -}; - -@Service() -export default class InventoryAdjustmentService { - @Inject() - itemsService: ItemsService; - - @Inject() - accountsService: AccountsService; - - @Inject() - tenancy: HasTenancyService; - - @Inject('logger') - logger: any; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject() - inventoryService: InventoryService; - - @Inject() - dynamicListService: DynamicListingService; - - /** - * Transformes the quick inventory adjustment DTO to model object. - * @param {IQuickInventoryAdjustmentDTO} adjustmentDTO - - * @return {IInventoryAdjustment} - */ - transformQuickAdjToModel( - adjustmentDTO: IQuickInventoryAdjustmentDTO, - authorizedUser: ISystemUser - ): IInventoryAdjustment { - return { - ...omit(adjustmentDTO, ['quantity', 'cost', 'itemId', 'publish']), - userId: authorizedUser.id, - ...(adjustmentDTO.publish - ? { - publishedAt: moment().toMySqlDateTime(), - } - : {}), - entries: [ - { - index: 1, - itemId: adjustmentDTO.itemId, - ...('increment' === adjustmentDTO.type - ? { - quantity: adjustmentDTO.quantity, - cost: adjustmentDTO.cost, - } - : {}), - ...('decrement' === adjustmentDTO.type - ? { - quantity: adjustmentDTO.quantity, - } - : {}), - }, - ], - }; - } - - /** - * Validate the item inventory type. - * @param {IItem} item - */ - validateItemInventoryType(item) { - if (item.type !== 'inventory') { - throw new ServiceError(ERRORS.ITEM_SHOULD_BE_INVENTORY_TYPE); - } - } - - /** - * Retrieve the inventory adjustment or throw not found service error. - * @param {number} tenantId - - * @param {number} adjustmentId - - */ - async getInventoryAdjustmentOrThrowError( - tenantId: number, - adjustmentId: number - ) { - const { InventoryAdjustment } = this.tenancy.models(tenantId); - - const inventoryAdjustment = await InventoryAdjustment.query() - .findById(adjustmentId) - .withGraphFetched('entries'); - - if (!inventoryAdjustment) { - throw new ServiceError(ERRORS.INVENTORY_ADJUSTMENT_NOT_FOUND); - } - return inventoryAdjustment; - } - - /** - * Creates a quick inventory adjustment for specific item. - * @param {number} tenantId - Tenant id. - * @param {IQuickInventoryAdjustmentDTO} quickAdjustmentDTO - qucik adjustment DTO. - */ - async createQuickAdjustment( - tenantId: number, - quickAdjustmentDTO: IQuickInventoryAdjustmentDTO, - authorizedUser: ISystemUser - ): Promise { - const { InventoryAdjustment } = this.tenancy.models(tenantId); - - this.logger.info( - '[inventory_adjustment] trying to create quick adjustment..', - { - tenantId, - quickAdjustmentDTO, - } - ); - // Retrieve the adjustment account or throw not found error. - const adjustmentAccount = await this.accountsService.getAccountOrThrowError( - tenantId, - quickAdjustmentDTO.adjustmentAccountId - ); - // Retrieve the item model or throw not found service error. - const item = await this.itemsService.getItemOrThrowError( - tenantId, - quickAdjustmentDTO.itemId - ); - // Validate item inventory type. - this.validateItemInventoryType(item); - - // Transform the DTO to inventory adjustment model. - const invAdjustmentObject = this.transformQuickAdjToModel( - quickAdjustmentDTO, - authorizedUser - ); - // Saves the inventory adjustment with assocaited entries to the storage. - const inventoryAdjustment = await InventoryAdjustment.query().upsertGraph({ - ...invAdjustmentObject, - }); - // Triggers `onInventoryAdjustmentQuickCreated` event. - await this.eventDispatcher.dispatch( - events.inventoryAdjustment.onQuickCreated, - { - tenantId, - inventoryAdjustment, - inventoryAdjustmentId: inventoryAdjustment.id, - } - ); - this.logger.info( - '[inventory_adjustment] quick adjustment created successfully.', - { - tenantId, - quickAdjustmentDTO, - } - ); - return inventoryAdjustment; - } - - /** - * Deletes the inventory adjustment transaction. - * @param {number} tenantId - Tenant id. - * @param {number} inventoryAdjustmentId - Inventory adjustment id. - */ - async deleteInventoryAdjustment( - tenantId: number, - inventoryAdjustmentId: number - ): Promise { - // Retrieve the inventory adjustment or throw not found service error. - const oldInventoryAdjustment = - await this.getInventoryAdjustmentOrThrowError( - tenantId, - inventoryAdjustmentId - ); - const { InventoryAdjustmentEntry, InventoryAdjustment } = - this.tenancy.models(tenantId); - - this.logger.info('[inventory_adjustment] trying to delete adjustment.', { - tenantId, - inventoryAdjustmentId, - }); - // Deletes the inventory adjustment entries. - await InventoryAdjustmentEntry.query() - .where('adjustment_id', inventoryAdjustmentId) - .delete(); - - // Deletes the inventory adjustment transaction. - await InventoryAdjustment.query().findById(inventoryAdjustmentId).delete(); - - // Triggers `onInventoryAdjustmentDeleted` event. - await this.eventDispatcher.dispatch(events.inventoryAdjustment.onDeleted, { - tenantId, - inventoryAdjustmentId, - oldInventoryAdjustment, - }); - this.logger.info( - '[inventory_adjustment] the adjustment deleted successfully.', - { - tenantId, - inventoryAdjustmentId, - } - ); - } - - /** - * Publish the inventory adjustment transaction. - * @param {number} tenantId - * @param {number} inventoryAdjustmentId - */ - async publishInventoryAdjustment( - tenantId: number, - inventoryAdjustmentId: number - ): Promise { - const { InventoryAdjustment } = this.tenancy.models(tenantId); - - // Retrieve the inventory adjustment or throw not found service error. - const oldInventoryAdjustment = - await this.getInventoryAdjustmentOrThrowError( - tenantId, - inventoryAdjustmentId - ); - this.logger.info('[inventory_adjustment] trying to publish adjustment.', { - tenantId, - inventoryAdjustmentId, - }); - // Publish the inventory adjustment transaction. - await InventoryAdjustment.query().findById(inventoryAdjustmentId).patch({ - publishedAt: moment().toMySqlDateTime(), - }); - - // Retrieve the inventory adjustment after the modification. - const inventoryAdjustment = await InventoryAdjustment.query() - .findById(inventoryAdjustmentId) - .withGraphFetched('entries'); - - // Triggers `onInventoryAdjustmentDeleted` event. - await this.eventDispatcher.dispatch( - events.inventoryAdjustment.onPublished, - { - tenantId, - inventoryAdjustmentId, - inventoryAdjustment, - oldInventoryAdjustment, - } - ); - } - - /** - * Parses inventory adjustments list filter DTO. - * @param filterDTO - - */ - private parseListFilterDTO(filterDTO) { - return R.compose(this.dynamicListService.parseStringifiedFilter)(filterDTO); - } - - /** - * Retrieve the inventory adjustments paginated list. - * @param {number} tenantId - * @param {IInventoryAdjustmentsFilter} adjustmentsFilter - */ - public async getInventoryAdjustments( - tenantId: number, - filterDTO: IInventoryAdjustmentsFilter - ): Promise<{ - inventoryAdjustments: IInventoryAdjustment[]; - pagination: IPaginationMeta; - }> { - const { InventoryAdjustment } = this.tenancy.models(tenantId); - - // Parses inventory adjustments list filter DTO. - const filter = this.parseListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicFilter = await this.dynamicListService.dynamicList( - tenantId, - InventoryAdjustment, - filter - ); - const { results, pagination } = await InventoryAdjustment.query() - .onBuild((query) => { - query.withGraphFetched('entries.item'); - query.withGraphFetched('adjustmentAccount'); - - dynamicFilter.buildQuery()(query); - }) - .pagination(filter.page - 1, filter.pageSize); - - return { - inventoryAdjustments: results, - pagination, - }; - } - - /** - * Writes the inventory transactions from the inventory adjustment transaction. - * @param {number} tenantId - * @param {IInventoryAdjustment} inventoryAdjustment - * @return {Promise} - */ - async writeInventoryTransactions( - tenantId: number, - inventoryAdjustment: IInventoryAdjustment, - override: boolean = false - ): Promise { - const commonTransaction = { - direction: inventoryAdjustment.inventoryDirection, - date: inventoryAdjustment.date, - transactionType: 'InventoryAdjustment', - transactionId: inventoryAdjustment.id, - createdAt: inventoryAdjustment.createdAt, - }; - const inventoryTransactions = []; - - inventoryAdjustment.entries.forEach((entry) => { - inventoryTransactions.push({ - ...commonTransaction, - itemId: entry.itemId, - quantity: entry.quantity, - rate: entry.cost, - }); - }); - // Saves the given inventory transactions to the storage. - await this.inventoryService.recordInventoryTransactions( - tenantId, - inventoryTransactions, - override - ); - } - - /** - * Reverts the inventory transactions from the inventory adjustment transaction. - * @param {number} tenantId - * @param {number} inventoryAdjustmentId - */ - async revertInventoryTransactions( - tenantId: number, - inventoryAdjustmentId: number - ): Promise<{ oldInventoryTransactions: IInventoryTransaction[] }> { - return this.inventoryService.deleteInventoryTransactions( - tenantId, - inventoryAdjustmentId, - 'InventoryAdjustment' - ); - } - - /** - * Retrieve specific inventory adjustment transaction details. - * @param {number} tenantId - * @param {number} inventoryAdjustmentId - */ - async getInventoryAdjustment( - tenantId: number, - inventoryAdjustmentId: number - ) { - const { InventoryAdjustment } = this.tenancy.models(tenantId); - - // Retrieve inventory adjustment transation with associated models. - const inventoryAdjustment = await InventoryAdjustment.query() - .findById(inventoryAdjustmentId) - .withGraphFetched('entries.item') - .withGraphFetched('adjustmentAccount'); - - // Throw not found if the given adjustment transaction not exists. - this.throwIfAdjustmentNotFound(inventoryAdjustment) - - return inventoryAdjustment; - } - - - throwIfAdjustmentNotFound(inventoryAdjustment) { - if (!inventoryAdjustment) { - throw new ServiceError(ERRORS.INVENTORY_ADJUSTMENT_NOT_FOUND); - } - } -} diff --git a/server/src/services/Inventory/InventoryAverageCost.ts b/server/src/services/Inventory/InventoryAverageCost.ts deleted file mode 100644 index b69613a91..000000000 --- a/server/src/services/Inventory/InventoryAverageCost.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { pick } from 'lodash'; -import { raw } from 'objection'; -import { IInventoryTransaction } from 'interfaces'; -import InventoryCostMethod from 'services/Inventory/InventoryCostMethod'; - -export default class InventoryAverageCostMethod - extends InventoryCostMethod - implements IInventoryCostMethod { - startingDate: Date; - itemId: number; - costTransactions: any[]; - - /** - * Constructor method. - * @param {number} tenantId - The given tenant id. - * @param {Date} startingDate - - * @param {number} itemId - The given inventory item id. - */ - constructor(tenantId: number, startingDate: Date, itemId: number) { - super(tenantId, startingDate, itemId); - - this.startingDate = startingDate; - this.itemId = itemId; - this.costTransactions = []; - } - - /** - * Computes items costs from the given date using average cost method. - * ---------- - * - Calculate the items average cost in the given date. - * - Remove the journal entries that associated to the inventory transacions - * after the given date. - * - Re-compute the inventory transactions and re-write the journal entries - * after the given date. - * ---------- - * @async - * @param {Date} startingDate - * @param {number} referenceId - * @param {string} referenceType - */ - public async computeItemCost() { - const { InventoryTransaction } = this.tenantModels; - const { - averageCost, - openingQuantity, - openingCost, - } = await this.getOpeningAvaregeCost(this.startingDate, this.itemId); - - const afterInvTransactions: IInventoryTransaction[] = await InventoryTransaction.query() - .modify('filterDateRange', this.startingDate) - .orderBy('date', 'ASC') - .orderByRaw("FIELD(direction, 'IN', 'OUT')") - .orderBy('createdAt', 'ASC') - .where('item_id', this.itemId) - .withGraphFetched('item'); - - // Tracking inventroy transactions and retrieve cost transactions based on - // average rate cost method. - const costTransactions = this.trackingCostTransactions( - afterInvTransactions, - openingQuantity, - openingCost - ); - // Revert the inveout out lots transactions - await this.revertTheInventoryOutLotTrans(); - - // Store inventory lots cost transactions. - await this.storeInventoryLotsCost(costTransactions); - } - - /** - * Get items Avarege cost from specific date from inventory transactions. - * @async - * @param {Date} closingDate - * @return {number} - */ - public async getOpeningAvaregeCost(closingDate: Date, itemId: number) { - const { InventoryCostLotTracker } = this.tenantModels; - - const commonBuilder = (builder: any) => { - if (closingDate) { - builder.where('date', '<', closingDate); - } - builder.where('item_id', itemId); - builder.sum('rate as rate'); - builder.sum('quantity as quantity'); - builder.sum('cost as cost'); - builder.first(); - }; - // Calculates the total inventory total quantity and rate `IN` transactions. - const inInvSumationOper: Promise = InventoryCostLotTracker.query() - .onBuild(commonBuilder) - .where('direction', 'IN'); - - // Calculates the total inventory total quantity and rate `OUT` transactions. - const outInvSumationOper: Promise = InventoryCostLotTracker.query() - .onBuild(commonBuilder) - .where('direction', 'OUT'); - - const [inInvSumation, outInvSumation] = await Promise.all([ - inInvSumationOper, - outInvSumationOper, - ]); - return this.computeItemAverageCost( - inInvSumation?.cost || 0, - inInvSumation?.quantity || 0, - outInvSumation?.cost || 0, - outInvSumation?.quantity || 0 - ); - } - - /** - * Computes the item average cost. - * @static - * @param {number} quantityIn - * @param {number} rateIn - * @param {number} quantityOut - * @param {number} rateOut - */ - public computeItemAverageCost( - totalCostIn: number, - totalQuantityIn: number, - - totalCostOut: number, - totalQuantityOut: number - ) { - const openingCost = totalCostIn - totalCostOut; - const openingQuantity = totalQuantityIn - totalQuantityOut; - - const averageCost = openingQuantity ? openingCost / openingQuantity : 0; - - return { averageCost, openingCost, openingQuantity }; - } - - /** - * Records the journal entries from specific item inventory transactions. - * @param {IInventoryTransaction[]} invTransactions - * @param {number} openingAverageCost - * @param {string} referenceType - * @param {number} referenceId - * @param {JournalCommand} journalCommands - */ - public trackingCostTransactions( - invTransactions: IInventoryTransaction[], - openingQuantity: number = 0, - openingCost: number = 0 - ) { - const costTransactions: any[] = []; - - // Cumulative item quantity and cost. This will decrement after - // each out transactions depends on its quantity and cost. - let accQuantity: number = openingQuantity; - let accCost: number = openingCost; - - invTransactions.forEach((invTransaction: IInventoryTransaction) => { - const commonEntry = { - invTransId: invTransaction.id, - ...pick(invTransaction, [ - 'date', - 'direction', - 'itemId', - 'quantity', - 'rate', - 'entryId', - 'transactionId', - 'transactionType', - 'createdAt', - 'costAccountId', - ]), - inventoryTransactionId: invTransaction.id, - }; - switch (invTransaction.direction) { - case 'IN': - const inCost = invTransaction.rate * invTransaction.quantity; - - // Increases the quantity and cost in `IN` inventory transactions. - accQuantity += invTransaction.quantity; - accCost += inCost; - - costTransactions.push({ - ...commonEntry, - cost: inCost, - }); - break; - case 'OUT': - // Average cost = Total cost / Total quantity - const averageCost = accQuantity ? accCost / accQuantity : 0; - - const quantity = - accQuantity > 0 - ? Math.min(invTransaction.quantity, accQuantity) - : invTransaction.quantity; - - // Cost = the transaction quantity * Average cost. - const cost = quantity * averageCost; - - // Revenue = transaction quanity * rate. - // const revenue = quantity * invTransaction.rate; - costTransactions.push({ - ...commonEntry, - quantity, - cost, - }); - accQuantity = Math.max(accQuantity - quantity, 0); - accCost = Math.max(accCost - cost, 0); - - if (invTransaction.quantity > quantity) { - const remainingQuantity = Math.max( - invTransaction.quantity - quantity, - 0 - ); - const remainingIncome = remainingQuantity * invTransaction.rate; - - costTransactions.push({ - ...commonEntry, - quantity: remainingQuantity, - cost: 0, - }); - accQuantity = Math.max(accQuantity - remainingQuantity, 0); - accCost = Math.max(accCost - remainingIncome, 0); - } - break; - } - }); - return costTransactions; - } - - /** - * Reverts the inventory lots `OUT` transactions. - * @param {Date} openingDate - Opening date. - * @param {number} itemId - Item id. - * @returns {Promise} - */ - async revertTheInventoryOutLotTrans(): Promise { - const { InventoryCostLotTracker } = this.tenantModels; - - await InventoryCostLotTracker.query() - .modify('filterDateRange', this.startingDate) - .orderBy('date', 'DESC') - .where('item_id', this.itemId) - .delete(); - } -} diff --git a/server/src/services/Inventory/InventoryCostLotTracker.ts b/server/src/services/Inventory/InventoryCostLotTracker.ts deleted file mode 100644 index f02384a98..000000000 --- a/server/src/services/Inventory/InventoryCostLotTracker.ts +++ /dev/null @@ -1,302 +0,0 @@ -import { pick, chain } from 'lodash'; -import moment from 'moment'; -import { IInventoryLotCost, IInventoryTransaction } from "interfaces"; -import InventoryCostMethod from 'services/Inventory/InventoryCostMethod'; - -type TCostMethod = 'FIFO' | 'LIFO'; - -export default class InventoryCostLotTracker extends InventoryCostMethod implements IInventoryCostMethod { - startingDate: Date; - itemId: number; - costMethod: TCostMethod; - itemsById: Map; - inventoryINTrans: any; - inventoryByItem: any; - costLotsTransactions: IInventoryLotCost[]; - inTransactions: any[]; - outTransactions: IInventoryTransaction[]; - revertJEntriesTransactions: IInventoryTransaction[]; - - /** - * Constructor method. - * @param {Date} startingDate - - * @param {number} itemId - - * @param {string} costMethod - - */ - constructor( - tenantId: number, - startingDate: Date, - itemId: number, - costMethod: TCostMethod = 'FIFO' - ) { - super(tenantId, startingDate, itemId); - - this.startingDate = startingDate; - this.itemId = itemId; - this.costMethod = costMethod; - - // Collect cost lots transactions to insert them to the storage in bulk. - this.costLotsTransactions= []; - // Collect inventory transactions by item id. - this.inventoryByItem = {}; - // Collection `IN` inventory tranaction by transaction id. - this.inventoryINTrans = {}; - // Collects `IN` transactions. - this.inTransactions = []; - // Collects `OUT` transactions. - this.outTransactions = []; - } - - /** - * Computes items costs from the given date using FIFO or LIFO cost method. - * -------- - * - Revert the inventory lots after the given date. - * - Remove all the journal entries from the inventory transactions - * after the given date. - * - Re-tracking the inventory lots from inventory transactions. - * - Re-write the journal entries from the given inventory transactions. - * @async - * @return {void} - */ - public async computeItemCost(): Promise { - await this.revertInventoryLots(this.startingDate); - await this.fetchInvINTransactions(); - await this.fetchInvOUTTransactions(); - await this.fetchRevertInvJReferenceIds(); - await this.fetchItemsMapped(); - - this.trackingInventoryINLots(this.inTransactions); - this.trackingInventoryOUTLots(this.outTransactions); - - // Re-tracking the inventory `IN` and `OUT` lots costs. - const storedTrackedInvLotsOper = this.storeInventoryLotsCost( - this.costLotsTransactions, - ); - return Promise.all([ - storedTrackedInvLotsOper, - ]); - } - - /** - * Fetched inventory transactions that has date from the starting date and - * fetches availiable IN LOTs transactions that has remaining bigger than zero. - * @private - */ - private async fetchInvINTransactions() { - const { InventoryTransaction, InventoryLotCostTracker } = this.tenantModels; - - const commonBuilder = (builder: any) => { - builder.orderBy('date', (this.costMethod === 'LIFO') ? 'DESC': 'ASC'); - builder.where('item_id', this.itemId); - }; - const afterInvTransactions: IInventoryTransaction[] = - await InventoryTransaction.query() - .modify('filterDateRange', this.startingDate) - .orderByRaw("FIELD(direction, 'IN', 'OUT')") - .onBuild(commonBuilder) - .orderBy('lot_number', (this.costMethod === 'LIFO') ? 'DESC' : 'ASC') - .withGraphFetched('item'); - - const availiableINLots: IInventoryLotCost[] = - await InventoryLotCostTracker.query() - .modify('filterDateRange', null, this.startingDate) - .orderBy('date', 'ASC') - .where('direction', 'IN') - .orderBy('lot_number', 'ASC') - .onBuild(commonBuilder) - .whereNot('remaining', 0); - - this.inTransactions = [ - ...availiableINLots.map((trans) => ({ lotTransId: trans.id, ...trans })), - ...afterInvTransactions.map((trans) => ({ invTransId: trans.id, ...trans })), - ]; - } - - /** - * Fetches inventory OUT transactions that has date from the starting date. - * @private - */ - private async fetchInvOUTTransactions() { - const { InventoryTransaction } = this.tenantModels; - - const afterOUTTransactions: IInventoryTransaction[] = - await InventoryTransaction.query() - .modify('filterDateRange', this.startingDate) - .orderBy('date', 'ASC') - .orderBy('lot_number', 'ASC') - .where('item_id', this.itemId) - .where('direction', 'OUT') - .withGraphFetched('item'); - - this.outTransactions = [ ...afterOUTTransactions ]; - } - - private async fetchItemsMapped() { - const itemsIds = chain(this.inTransactions).map((e) => e.itemId).uniq().value(); - const { Item } = this.tenantModels; - const storedItems = await Item.query() - .where('type', 'inventory') - .whereIn('id', itemsIds); - - this.itemsById = new Map(storedItems.map((item: any) => [item.id, item])); - } - - /** - * Fetch the inventory transactions that should revert its journal entries. - * @private - */ - private async fetchRevertInvJReferenceIds() { - const { InventoryTransaction } = this.tenantModels; - const revertJEntriesTransactions: IInventoryTransaction[] = - await InventoryTransaction.query() - .select(['transactionId', 'transactionType']) - .modify('filterDateRange', this.startingDate) - .where('direction', 'OUT') - .where('item_id', this.itemId); - - this.revertJEntriesTransactions = revertJEntriesTransactions; - } - - /** - * Revert the inventory lots to the given date by removing the inventory lots - * transactions after the given date and increment the remaining that - * associate to lot number. - * @async - * @return {Promise} - */ - public async revertInventoryLots(startingDate: Date) { - const { InventoryLotCostTracker } = this.tenantModels; - const asyncOpers: any[] = []; - const inventoryLotsTrans = await InventoryLotCostTracker.query() - .modify('filterDateRange', this.startingDate) - .orderBy('date', 'DESC') - .where('item_id', this.itemId) - .where('direction', 'OUT'); - - const deleteInvLotsTrans = InventoryLotCostTracker.query() - .modify('filterDateRange', this.startingDate) - .where('item_id', this.itemId) - .delete(); - - inventoryLotsTrans.forEach((inventoryLot: IInventoryLotCost) => { - if (!inventoryLot.lotNumber) { return; } - - const incrementOper = InventoryLotCostTracker.query() - .where('lot_number', inventoryLot.lotNumber) - .where('direction', 'IN') - .increment('remaining', inventoryLot.quantity); - - asyncOpers.push(incrementOper); - }); - return Promise.all([deleteInvLotsTrans, ...asyncOpers]); - } - - /** - * Tracking inventory `IN` lots transactions. - * @public - * @param {IInventoryTransaction[]} inventoryTransactions - - * @return {void} - */ - public trackingInventoryINLots( - inventoryTransactions: IInventoryTransaction[], - ) { - inventoryTransactions.forEach((transaction: IInventoryTransaction) => { - const { itemId, id } = transaction; - (this.inventoryByItem[itemId] || (this.inventoryByItem[itemId] = [])); - - const commonLotTransaction: IInventoryLotCost = { - ...pick(transaction, [ - 'date', 'rate', 'itemId', 'quantity', 'invTransId', 'lotTransId', - 'direction', 'transactionType', 'transactionId', 'lotNumber', 'remaining' - ]), - }; - this.inventoryByItem[itemId].push(id); - this.inventoryINTrans[id] = { - ...commonLotTransaction, - decrement: 0, - remaining: commonLotTransaction.remaining || commonLotTransaction.quantity, - }; - this.costLotsTransactions.push(this.inventoryINTrans[id]); - }); - } - - /** - * Tracking inventory `OUT` lots transactions. - * @public - * @param {IInventoryTransaction[]} inventoryTransactions - - * @return {void} - */ - public trackingInventoryOUTLots( - inventoryTransactions: IInventoryTransaction[], - ) { - inventoryTransactions.forEach((transaction: IInventoryTransaction) => { - const { itemId, id } = transaction; - (this.inventoryByItem[itemId] || (this.inventoryByItem[itemId] = [])); - - const commonLotTransaction: IInventoryLotCost = { - ...pick(transaction, [ - 'date', 'rate', 'itemId', 'quantity', 'invTransId', 'lotTransId', 'entryId', - 'direction', 'transactionType', 'transactionId', 'lotNumber', 'remaining' - ]), - }; - let invRemaining = transaction.quantity; - const idsShouldDel: number[] = []; - - this.inventoryByItem?.[itemId]?.some((_invTransactionId: number) => { - const _invINTransaction = this.inventoryINTrans[_invTransactionId]; - - // Can't continue if the IN transaction remaining equals zero. - if (invRemaining <= 0) { return true; } - - // Can't continue if the IN transaction date is after the current transaction date. - if (moment(_invINTransaction.date).isAfter(transaction.date)) { - return true; - } - // Detarmines the 'OUT' lot tranasctions whether bigger than 'IN' remaining transaction. - const biggerThanRemaining = (_invINTransaction.remaining - transaction.quantity) > 0; - const decrement = (biggerThanRemaining) ? transaction.quantity : _invINTransaction.remaining; - const maxDecrement = Math.min(decrement, invRemaining); - const cost = maxDecrement * _invINTransaction.rate; - - _invINTransaction.decrement += maxDecrement; - _invINTransaction.remaining = Math.max( - _invINTransaction.remaining - maxDecrement, - 0, - ); - invRemaining = Math.max(invRemaining - maxDecrement, 0); - - this.costLotsTransactions.push({ - ...commonLotTransaction, - cost, - quantity: maxDecrement, - lotNumber: _invINTransaction.lotNumber, - }); - // Pop the 'IN' lots that has zero remaining. - if (_invINTransaction.remaining === 0) { - idsShouldDel.push(_invTransactionId); - } - return false; - }); - if (invRemaining > 0) { - this.costLotsTransactions.push({ - ...commonLotTransaction, - quantity: invRemaining, - }); - } - this.removeInventoryItems(itemId, idsShouldDel); - }); - } - - /** - * Remove inventory transactions for specific item id. - * @private - * @param {number} itemId - * @param {number[]} idsShouldDel - * @return {void} - */ - private removeInventoryItems(itemId: number, idsShouldDel: number[]) { - // Remove the IN transactions that has zero remaining amount. - this.inventoryByItem[itemId] = this.inventoryByItem?.[itemId] - ?.filter((transId: number) => idsShouldDel.indexOf(transId) === -1); - } -} \ No newline at end of file diff --git a/server/src/services/Inventory/InventoryCostMethod.ts b/server/src/services/Inventory/InventoryCostMethod.ts deleted file mode 100644 index f04a7d54a..000000000 --- a/server/src/services/Inventory/InventoryCostMethod.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { omit } from 'lodash'; -import { Container } from 'typedi'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { IInventoryLotCost } from 'interfaces'; - -export default class InventoryCostMethod { - tenancy: TenancyService; - tenantModels: any; - - /** - * Constructor method. - * @param {number} tenantId - The given tenant id. - */ - constructor(tenantId: number, startingDate: Date, itemId: number) { - const tenancyService = Container.get(TenancyService); - - this.tenantModels = tenancyService.models(tenantId); - } - - /** - * Stores the inventory lots costs transactions in bulk. - * @param {IInventoryLotCost[]} costLotsTransactions - * @return {Promise[]} - */ - public storeInventoryLotsCost( - costLotsTransactions: IInventoryLotCost[] - ): Promise { - const { InventoryCostLotTracker } = this.tenantModels; - const opers: any = []; - - costLotsTransactions.forEach((transaction: any) => { - if (transaction.lotTransId && transaction.decrement) { - const decrementOper = InventoryCostLotTracker.query() - .where('id', transaction.lotTransId) - .decrement('remaining', transaction.decrement); - opers.push(decrementOper); - } else if (!transaction.lotTransId) { - const operation = InventoryCostLotTracker.query().insert({ - ...omit(transaction, ['decrement', 'invTransId', 'lotTransId']), - }); - opers.push(operation); - } - }); - return Promise.all(opers); - } -} diff --git a/server/src/services/Inventory/InventoryItemsQuantitySync.ts b/server/src/services/Inventory/InventoryItemsQuantitySync.ts deleted file mode 100644 index 642d792a2..000000000 --- a/server/src/services/Inventory/InventoryItemsQuantitySync.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { toSafeInteger } from 'lodash'; -import { IInventoryTransaction, IItemsQuantityChanges } from 'interfaces'; -import HasTenancyService from 'services/Tenancy/TenancyService'; - -/** - * Syncs the inventory transactions with inventory items quantity. - */ -@Service() -export default class InventoryItemsQuantitySync { - @Inject() - tenancy: HasTenancyService; - - /** - * Reverse the given inventory transactions. - * @param {IInventoryTransaction[]} inventroyTransactions - * @return {IInventoryTransaction[]} - */ - reverseInventoryTransactions( - inventroyTransactions: IInventoryTransaction[] - ): IInventoryTransaction[] { - return inventroyTransactions.map((transaction) => ({ - ...transaction, - direction: transaction.direction === 'OUT' ? 'IN' : 'OUT', - })); - } - - /** - * Reverses the inventory transactions. - * @param {IInventoryTransaction[]} inventroyTransactions - - * @return {IItemsQuantityChanges[]} - */ - getReverseItemsQuantityChanges( - inventroyTransactions: IInventoryTransaction[] - ): IItemsQuantityChanges[] { - const reversedTransactions = this.reverseInventoryTransactions( - inventroyTransactions - ); - return this.getItemsQuantityChanges(reversedTransactions); - } - - /** - * Retrieve the items quantity changes from the given inventory transactions. - * @param {IInventoryTransaction[]} inventroyTransactions - Inventory transactions. - * @return {IItemsQuantityChanges[]} - */ - getItemsQuantityChanges( - inventroyTransactions: IInventoryTransaction[] - ): IItemsQuantityChanges[] { - const balanceMap: { [itemId: number]: number } = {}; - - inventroyTransactions.forEach( - (inventoryTransaction: IInventoryTransaction) => { - const { itemId, direction, quantity } = inventoryTransaction; - - if (!balanceMap[itemId]) { - balanceMap[itemId] = 0; - } - balanceMap[itemId] += direction === 'IN' ? quantity : 0; - balanceMap[itemId] -= direction === 'OUT' ? quantity : 0; - } - ); - - return Object.entries(balanceMap).map(([itemId, balanceChange]) => ({ - itemId: toSafeInteger(itemId), - balanceChange, - })); - } - - /** - * Changes the items quantity changes. - * @param {IItemsQuantityChanges[]} itemsQuantity - Items quantity changes. - * @return {Promise} - */ - async changeItemsQuantity( - tenantId: number, - itemsQuantity: IItemsQuantityChanges[] - ): Promise { - const { itemRepository } = this.tenancy.repositories(tenantId); - const opers = []; - - itemsQuantity.forEach((itemQuantity: IItemsQuantityChanges) => { - const changeQuantityOper = itemRepository.changeNumber( - { id: itemQuantity.itemId, type: 'inventory' }, - 'quantityOnHand', - itemQuantity.balanceChange - ); - opers.push(changeQuantityOper); - }); - await Promise.all(opers); - } -} diff --git a/server/src/services/InviteUsers/InviteUsersMailMessages.ts b/server/src/services/InviteUsers/InviteUsersMailMessages.ts deleted file mode 100644 index 158e38a62..000000000 --- a/server/src/services/InviteUsers/InviteUsersMailMessages.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { ISystemUser } from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import Mail from 'lib/Mail'; -import { Service, Container } from 'typedi'; -import config from 'config'; - -@Service() -export default class InviteUsersMailMessages { - /** - * Sends invite mail to the given email. - * @param user - * @param invite - */ - async sendInviteMail(tenantId: number, fromUser: ISystemUser, invite: any) { - const { protocol, hostname } = config; - const tenancyService = Container.get(TenancyService); - - // Retrieve tenant's settings - const settings = tenancyService.settings(tenantId); - - // Retreive tenant orgnaization name. - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const mail = new Mail() - .setSubject(`${fromUser.firstName} has invited you to join a Bigcapital`) - .setView('mail/UserInvite.html') - .setTo(invite.email) - .setData({ - acceptUrl: `${protocol}://${hostname}/invite/accept/${invite.token}`, - fullName: `${fromUser.firstName} ${fromUser.lastName}`, - firstName: fromUser.firstName, - lastName: fromUser.lastName, - email: fromUser.email, - organizationName, - }); - - await mail.send(); - } -} diff --git a/server/src/services/InviteUsers/InviteUsersSMSMessages.ts b/server/src/services/InviteUsers/InviteUsersSMSMessages.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/server/src/services/InviteUsers/constants.ts b/server/src/services/InviteUsers/constants.ts deleted file mode 100644 index 1e0516917..000000000 --- a/server/src/services/InviteUsers/constants.ts +++ /dev/null @@ -1,11 +0,0 @@ - - -export const ERRORS = { - EMAIL_ALREADY_INVITED: 'EMAIL_ALREADY_INVITED', - INVITE_TOKEN_INVALID: 'INVITE_TOKEN_INVALID', - PHONE_NUMBER_EXISTS: 'PHONE_NUMBER_EXISTS', - USER_NOT_FOUND: 'USER_NOT_FOUND', - EMAIL_EXISTS: 'EMAIL_EXISTS', - EMAIL_NOT_EXISTS: 'EMAIL_NOT_EXISTS', - USER_RECENTLY_INVITED: 'USER_RECENTLY_INVITED', -}; \ No newline at end of file diff --git a/server/src/services/InviteUsers/index.ts b/server/src/services/InviteUsers/index.ts deleted file mode 100644 index 6fbf79d23..000000000 --- a/server/src/services/InviteUsers/index.ts +++ /dev/null @@ -1,302 +0,0 @@ -import { Service, Inject } from 'typedi'; -import uniqid from 'uniqid'; -import moment from 'moment'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import { ServiceError } from 'exceptions'; -import { Invite, Tenant } from 'system/models'; -import { Setting } from 'models'; -import { hashPassword } from 'utils'; -import TenancyService from 'services/Tenancy/TenancyService'; -import InviteUsersMailMessages from 'services/InviteUsers/InviteUsersMailMessages'; -import events from 'subscribers/events'; -import { - ISystemUser, - IInviteUserInput, - IUserInvite, - IInviteUserService, -} from 'interfaces'; -import TenantsManagerService from 'services/Tenancy/TenantsManager'; -import { ERRORS } from './constants'; - -@Service() -export default class InviteUserService implements IInviteUserService { - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - @Inject() - mailMessages: InviteUsersMailMessages; - - @Inject('repositories') - sysRepositories: any; - - @Inject() - tenantsManager: TenantsManagerService; - - /** - * Sends invite mail to the given email from the given tenant and user. - * @param {number} tenantId - - * @param {string} email - - * @param {IUser} authorizedUser - - * - * @return {Promise} - */ - public async sendInvite( - tenantId: number, - email: string, - authorizedUser: ISystemUser - ): Promise<{ - invite: IUserInvite; - }> { - const { systemUserRepository } = this.sysRepositories; - - // Validates the given email not exists on the storage. - await this.validateUserEmailNotExists(email); - - this.logger.info('[invite] trying to store user with email and tenant.', { - email, - }); - const user = await systemUserRepository.create({ - email, - tenantId, - active: 1, - }); - - this.logger.info('[invite] trying to store invite token.', { email }); - const invite = await Invite.query().insert({ - email, - tenantId: authorizedUser.tenantId, - userId: user.id, - token: uniqid(), - }); - - // Triggers `onUserSendInvite` event. - this.eventDispatcher.dispatch(events.inviteUser.sendInvite, { - invite, - authorizedUser, - tenantId, - user, - }); - return { invite }; - } - - /** - * Accept the received invite. - * @param {string} token - * @param {IInviteUserInput} inviteUserInput - * @throws {ServiceErrors} - * @returns {Promise} - */ - public async acceptInvite( - token: string, - inviteUserInput: IInviteUserInput - ): Promise { - const { systemUserRepository } = this.sysRepositories; - - // Retrieve the invite token or throw not found error. - const inviteToken = await this.getInviteTokenOrThrowError(token); - - // Validates the user phone number. - await this.validateUserPhoneNumberNotExists(inviteUserInput.phoneNumber); - - this.logger.info('[invite] trying to hash the user password.'); - const hashedPassword = await hashPassword(inviteUserInput.password); - - this.logger.info('[invite] trying to update user details.'); - const user = await systemUserRepository.findOneByEmail(inviteToken.email); - - // Sets the invited user details after invite accepting. - const systemUser = await systemUserRepository.update( - { - ...inviteUserInput, - inviteAcceptedAt: moment().format('YYYY-MM-DD'), - password: hashedPassword, - }, - { id: inviteToken.userId } - ); - // Clear invite token by the given user id. - await this.clearInviteTokensByUserId(inviteToken.userId); - - // Triggers `onUserAcceptInvite` event. - this.eventDispatcher.dispatch(events.inviteUser.acceptInvite, { - inviteToken, - user: systemUser, - }); - } - - /** - * Re-send user invite. - * @param tenantId - * @param {string} email - * @return {Promise<{ invite: IUserInvite }>} - */ - public async resendInvite( - tenantId: number, - userId: number, - authorizedUser: ISystemUser - ): Promise<{ - invite: IUserInvite; - }> { - // Retrieve the user by id or throw not found service error. - const user = this.getUserByIdOrThrowError(userId); - - // Validate invite user active - await this.validateInviteUserNotActive(tenantId, userId); - - // Clear all invite tokens of the given user id. - await this.clearInviteTokensByUserId(userId); - - this.logger.info('[invite] trying to store invite token.', { - userId, - tenantId, - }); - const invite = await Invite.query().insert({ - email: user.email, - tenantId, - userId, - token: uniqid(), - }); - // Triggers `onUserSendInvite` event. - this.eventDispatcher.dispatch(events.inviteUser.sendInvite, { - invite, - authorizedUser, - tenantId, - user, - }); - return { invite }; - } - - /** - * Validate the given invite token. - * @param {string} token - the given token string. - * @throws {ServiceError} - */ - public async checkInvite( - token: string - ): Promise<{ inviteToken: IUserInvite; orgName: object }> { - const inviteToken = await this.getInviteTokenOrThrowError(token); - - // Find the tenant that associated to the given token. - const tenant = await Tenant.query().findById(inviteToken.tenantId); - - // Setup the knex instance. - this.tenantsManager.setupKnexInstance(tenant); - - // Retrieve the knex instance of the given tenant. - const tenantKnexInstance = this.tenantsManager.getKnexInstance(tenant.id); - - const orgName = await Setting.bindKnex(tenantKnexInstance) - .query() - .findOne({ key: 'name', group: 'organization' }); - - // Triggers `onUserCheckInvite` event. - this.eventDispatcher.dispatch(events.inviteUser.checkInvite, { - inviteToken, - orgName, - }); - return { inviteToken, orgName }; - } - - /** - * Validate the given user has no active invite token. - * @param {number} tenantId - * @param {number} userId - User id. - */ - private async validateInviteUserNotActive(tenantId: number, userId: number) { - // Retrieve the invite token or throw not found error. - const inviteTokens = await Invite.query() - .modify('notExpired') - .where('user_id', userId); - - // Throw the error if the one invite tokens is still active. - if (inviteTokens.length > 0) { - this.logger.info('[invite] email is already invited.', { - userId, - tenantId, - }); - throw new ServiceError(ERRORS.USER_RECENTLY_INVITED); - } - } - - /** - * Retrieve the given user by id or throw not found service error. - * @param {number} userId - User id. - */ - private async getUserByIdOrThrowError(userId: number) { - const { systemUserRepository } = this.sysRepositories; - const user = await systemUserRepository.findOneById(userId); - - // Throw if the user not found. - if (!user) { - throw new ServiceError(ERRORS.USER_NOT_FOUND); - } - return user; - } - - /** - * Throws error in case the given user email not exists on the storage. - * @param {string} email - * @throws {ServiceError} - */ - private async validateUserEmailNotExists(email: string): Promise { - const { systemUserRepository } = this.sysRepositories; - const foundUser = await systemUserRepository.findOneByEmail(email); - - if (foundUser) { - throw new ServiceError(ERRORS.EMAIL_EXISTS); - } - } - - /** - * Retrieve invite model from the given token or throw error. - * @param {string} token - Then given token string. - * @throws {ServiceError} - * @returns {Invite} - */ - private async getInviteTokenOrThrowError( - token: string - ): Promise { - const inviteToken = await Invite.query() - .modify('notExpired') - .findOne('token', token); - - if (!inviteToken) { - this.logger.info('[invite] the invite token is invalid.'); - throw new ServiceError(ERRORS.INVITE_TOKEN_INVALID); - } - return inviteToken; - } - - /** - * Validate the given user email and phone number uniquine. - * @param {IInviteUserInput} inviteUserInput - */ - private async validateUserPhoneNumberNotExists( - phoneNumber: string - ): Promise { - const { systemUserRepository } = this.sysRepositories; - const foundUser = await systemUserRepository.findOneByPhoneNumber( - phoneNumber - ); - if (foundUser) { - throw new ServiceError(ERRORS.PHONE_NUMBER_EXISTS); - } - } - - /** - * Clear invite tokens of the given user id. - * @param {number} userId - User id. - */ - private async clearInviteTokensByUserId(userId: number) { - this.logger.info('[invite] trying to delete the given token.'); - await Invite.query().where('user_id', userId).delete(); - } -} diff --git a/server/src/services/ItemCategories/ItemCategoriesService.ts b/server/src/services/ItemCategories/ItemCategoriesService.ts deleted file mode 100644 index 54598e28d..000000000 --- a/server/src/services/ItemCategories/ItemCategoriesService.ts +++ /dev/null @@ -1,470 +0,0 @@ -import { Inject } from 'typedi'; -import { difference } from 'lodash'; -import * as R from 'ramda'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import { ServiceError } from 'exceptions'; -import { - IItemCategory, - IItemCategoryOTD, - IItemCategoriesService, - IItemCategoriesFilter, - ISystemUser, - IFilterMeta, -} from 'interfaces'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import TenancyService from 'services/Tenancy/TenancyService'; -import events from 'subscribers/events'; -import { ACCOUNT_ROOT_TYPE, ACCOUNT_TYPE } from 'data/AccountTypes'; - -const ERRORS = { - ITEM_CATEGORIES_NOT_FOUND: 'ITEM_CATEGORIES_NOT_FOUND', - CATEGORY_NAME_EXISTS: 'CATEGORY_NAME_EXISTS', - CATEGORY_NOT_FOUND: 'CATEGORY_NOT_FOUND', - COST_ACCOUNT_NOT_FOUMD: 'COST_ACCOUNT_NOT_FOUMD', - COST_ACCOUNT_NOT_COGS: 'COST_ACCOUNT_NOT_COGS', - SELL_ACCOUNT_NOT_INCOME: 'SELL_ACCOUNT_NOT_INCOME', - SELL_ACCOUNT_NOT_FOUND: 'SELL_ACCOUNT_NOT_FOUND', - INVENTORY_ACCOUNT_NOT_FOUND: 'INVENTORY_ACCOUNT_NOT_FOUND', - INVENTORY_ACCOUNT_NOT_INVENTORY: 'INVENTORY_ACCOUNT_NOT_INVENTORY', - CATEGORY_HAVE_ITEMS: 'CATEGORY_HAVE_ITEMS', -}; - -export default class ItemCategoriesService implements IItemCategoriesService { - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject('logger') - logger: any; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - /** - * Retrieve item category or throw not found error. - * @param {number} tenantId - * @param {number} itemCategoryId - */ - private async getItemCategoryOrThrowError( - tenantId: number, - itemCategoryId: number - ) { - const { ItemCategory } = this.tenancy.models(tenantId); - const category = await ItemCategory.query().findById(itemCategoryId); - - if (!category) { - throw new ServiceError(ERRORS.CATEGORY_NOT_FOUND); - } - return category; - } - - /** - * Transforms OTD to model object. - * @param {IItemCategoryOTD} itemCategoryOTD - * @param {ISystemUser} authorizedUser - */ - private transformOTDToObject( - itemCategoryOTD: IItemCategoryOTD, - authorizedUser: ISystemUser - ) { - return { ...itemCategoryOTD, userId: authorizedUser.id }; - } - - /** - * Retrieve item category of the given id. - * @param {number} tenantId - - * @param {number} itemCategoryId - - * @returns {IItemCategory} - */ - public async getItemCategory( - tenantId: number, - itemCategoryId: number, - user: ISystemUser - ) { - return this.getItemCategoryOrThrowError(tenantId, itemCategoryId); - } - - /** - * Validates the category name uniquiness. - * @param {number} tenantId - Tenant id. - * @param {string} categoryName - Category name. - * @param {number} notAccountId - Ignore the account id. - */ - private async validateCategoryNameUniquiness( - tenantId: number, - categoryName: string, - notCategoryId?: number - ) { - const { ItemCategory } = this.tenancy.models(tenantId); - - this.logger.info('[item_category] validating category name uniquiness.', { - tenantId, - categoryName, - notCategoryId, - }); - const foundItemCategory = await ItemCategory.query() - .findOne('name', categoryName) - .onBuild((query) => { - if (notCategoryId) { - query.whereNot('id', notCategoryId); - } - }); - if (foundItemCategory) { - throw new ServiceError(ERRORS.CATEGORY_NAME_EXISTS); - } - } - - /** - * Inserts a new item category. - * @param {number} tenantId - * @param {IItemCategoryOTD} itemCategoryOTD - * @return {Promise} - */ - public async newItemCategory( - tenantId: number, - itemCategoryOTD: IItemCategoryOTD, - authorizedUser: ISystemUser - ): Promise { - const { ItemCategory } = this.tenancy.models(tenantId); - this.logger.info('[item_category] trying to insert a new item category.', { - tenantId, - }); - // Validate the category name uniquiness. - await this.validateCategoryNameUniquiness(tenantId, itemCategoryOTD.name); - - if (itemCategoryOTD.sellAccountId) { - await this.validateSellAccount(tenantId, itemCategoryOTD.sellAccountId); - } - if (itemCategoryOTD.costAccountId) { - await this.validateCostAccount(tenantId, itemCategoryOTD.costAccountId); - } - if (itemCategoryOTD.inventoryAccountId) { - await this.validateInventoryAccount( - tenantId, - itemCategoryOTD.inventoryAccountId - ); - } - - const itemCategoryObj = this.transformOTDToObject( - itemCategoryOTD, - authorizedUser - ); - const itemCategory = await ItemCategory.query().insert({ - ...itemCategoryObj, - }); - - await this.eventDispatcher.dispatch(events.itemCategory.onCreated); - this.logger.info('[item_category] item category inserted successfully.', { - tenantId, - itemCategoryOTD, - }); - - return itemCategory; - } - - /** - * Validates sell account existance and type. - * @param {number} tenantId - Tenant id. - * @param {number} sellAccountId - Sell account id. - * @return {Promise} - */ - private async validateSellAccount(tenantId: number, sellAccountId: number) { - const { accountRepository } = this.tenancy.repositories(tenantId); - - this.logger.info('[items] validate sell account existance.', { - tenantId, - sellAccountId, - }); - const foundAccount = await accountRepository.findOneById(sellAccountId); - - if (!foundAccount) { - this.logger.info('[items] sell account not found.', { - tenantId, - sellAccountId, - }); - throw new ServiceError(ERRORS.SELL_ACCOUNT_NOT_FOUND); - } else if (!foundAccount.isRootType(ACCOUNT_ROOT_TYPE.INCOME)) { - this.logger.info('[items] sell account not income type.', { - tenantId, - sellAccountId, - }); - throw new ServiceError(ERRORS.SELL_ACCOUNT_NOT_INCOME); - } - } - - /** - * Validates COGS account existance and type. - * @param {number} tenantId - - * @param {number} costAccountId - - * @return {Promise} - */ - private async validateCostAccount(tenantId: number, costAccountId: number) { - const { accountRepository } = this.tenancy.repositories(tenantId); - - this.logger.info('[items] validate cost account existance.', { - tenantId, - costAccountId, - }); - const foundAccount = await accountRepository.findOneById(costAccountId); - - if (!foundAccount) { - this.logger.info('[items] cost account not found.', { - tenantId, - costAccountId, - }); - throw new ServiceError(ERRORS.COST_ACCOUNT_NOT_FOUMD); - } else if (!foundAccount.isRootType(ACCOUNT_ROOT_TYPE.EXPENSE)) { - this.logger.info('[items] validate cost account not COGS type.', { - tenantId, - costAccountId, - }); - throw new ServiceError(ERRORS.COST_ACCOUNT_NOT_COGS); - } - } - - /** - * Validates inventory account existance and type. - * @param {number} tenantId - * @param {number} inventoryAccountId - * @return {Promise} - */ - private async validateInventoryAccount( - tenantId: number, - inventoryAccountId: number - ) { - const { accountRepository } = this.tenancy.repositories(tenantId); - - this.logger.info('[items] validate inventory account existance.', { - tenantId, - inventoryAccountId, - }); - const foundAccount = await accountRepository.findOneById( - inventoryAccountId - ); - - if (!foundAccount) { - this.logger.info('[items] inventory account not found.', { - tenantId, - inventoryAccountId, - }); - throw new ServiceError(ERRORS.INVENTORY_ACCOUNT_NOT_FOUND); - } else if (!foundAccount.isAccountType(ACCOUNT_TYPE.INVENTORY)) { - this.logger.info('[items] inventory account not inventory type.', { - tenantId, - inventoryAccountId, - }); - throw new ServiceError(ERRORS.INVENTORY_ACCOUNT_NOT_INVENTORY); - } - } - - /** - * Edits item category. - * @param {number} tenantId - * @param {number} itemCategoryId - * @param {IItemCategoryOTD} itemCategoryOTD - * @return {Promise} - */ - public async editItemCategory( - tenantId: number, - itemCategoryId: number, - itemCategoryOTD: IItemCategoryOTD, - authorizedUser: ISystemUser - ): Promise { - const { ItemCategory } = this.tenancy.models(tenantId); - const oldItemCategory = await this.getItemCategoryOrThrowError( - tenantId, - itemCategoryId - ); - - // Validate the category name whether unique on the storage. - await this.validateCategoryNameUniquiness( - tenantId, - itemCategoryOTD.name, - itemCategoryId - ); - if (itemCategoryOTD.sellAccountId) { - await this.validateSellAccount(tenantId, itemCategoryOTD.sellAccountId); - } - if (itemCategoryOTD.costAccountId) { - await this.validateCostAccount(tenantId, itemCategoryOTD.costAccountId); - } - if (itemCategoryOTD.inventoryAccountId) { - await this.validateInventoryAccount( - tenantId, - itemCategoryOTD.inventoryAccountId - ); - } - const itemCategoryObj = this.transformOTDToObject( - itemCategoryOTD, - authorizedUser - ); - const itemCategory = await ItemCategory.query().patchAndFetchById( - itemCategoryId, - { ...itemCategoryObj } - ); - - await this.eventDispatcher.dispatch(events.itemCategory.onEdited); - this.logger.info('[item_category] edited successfully.', { - tenantId, - itemCategoryId, - itemCategoryOTD, - }); - - return itemCategory; - } - - /** - * Deletes the given item category. - * @param {number} tenantId - Tenant id. - * @param {number} itemCategoryId - Item category id. - * @return {Promise} - */ - public async deleteItemCategory( - tenantId: number, - itemCategoryId: number, - authorizedUser: ISystemUser - ) { - this.logger.info('[item_category] trying to delete item category.', { - tenantId, - itemCategoryId, - }); - - // Retrieve item category or throw not found error. - await this.getItemCategoryOrThrowError(tenantId, itemCategoryId); - - // Unassociate items with item category. - await this.unassociateItemsWithCategories(tenantId, itemCategoryId); - - const { ItemCategory } = this.tenancy.models(tenantId); - await ItemCategory.query().findById(itemCategoryId).delete(); - this.logger.info('[item_category] deleted successfully.', { - tenantId, - itemCategoryId, - }); - - await this.eventDispatcher.dispatch(events.itemCategory.onDeleted); - } - - /** - * Retrieve item categories or throw not found error. - * @param {number} tenantId - * @param {number[]} itemCategoriesIds - */ - private async getItemCategoriesOrThrowError( - tenantId: number, - itemCategoriesIds: number[] - ) { - const { ItemCategory } = this.tenancy.models(tenantId); - const itemCategories = await ItemCategory.query().whereIn( - 'id', - itemCategoriesIds - ); - - const storedItemCategoriesIds = itemCategories.map( - (category: IItemCategory) => category.id - ); - const notFoundCategories = difference( - itemCategoriesIds, - storedItemCategoriesIds - ); - - if (notFoundCategories.length > 0) { - throw new ServiceError(ERRORS.ITEM_CATEGORIES_NOT_FOUND); - } - } - - /** - * Parses items categories filter DTO. - * @param {} filterDTO - * @returns - */ - private parsesListFilterDTO(filterDTO) { - return R.compose( - // Parses stringified filter roles. - this.dynamicListService.parseStringifiedFilter, - )(filterDTO); - } - - /** - * Retrieve item categories list. - * @param {number} tenantId - * @param filter - */ - public async getItemCategoriesList( - tenantId: number, - filterDTO: IItemCategoriesFilter, - authorizedUser: ISystemUser - ): Promise<{ itemCategories: IItemCategory[]; filterMeta: IFilterMeta }> { - const { ItemCategory } = this.tenancy.models(tenantId); - - // Parses list filter DTO. - const filter = this.parsesListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicList = await this.dynamicListService.dynamicList( - tenantId, - ItemCategory, - filter - ); - - // Items categories. - const itemCategories = await ItemCategory.query().onBuild((query) => { - // Subquery to calculate sumation of assocaited items to the item category. - query.select('*', ItemCategory.relatedQuery('items').count().as('count')); - - dynamicList.buildQuery()(query); - }); - return { itemCategories, filterMeta: dynamicList.getResponseMeta() }; - } - - /** - * Unlink items relations with item categories. - * @param {number} tenantId - * @param {number|number[]} itemCategoryId - - * @return {Promise} - */ - private async unassociateItemsWithCategories( - tenantId: number, - itemCategoryId: number | number[] - ): Promise { - const { Item } = this.tenancy.models(tenantId); - const ids = Array.isArray(itemCategoryId) - ? itemCategoryId - : [itemCategoryId]; - - await Item.query().whereIn('category_id', ids).patch({ category_id: null }); - } - - /** - * Deletes item categories in bulk. - * @param {number} tenantId - * @param {number[]} itemCategoriesIds - */ - public async deleteItemCategories( - tenantId: number, - itemCategoriesIds: number[], - authorizedUser: ISystemUser - ) { - this.logger.info('[item_category] trying to delete item categories.', { - tenantId, - itemCategoriesIds, - }); - const { ItemCategory } = this.tenancy.models(tenantId); - - await this.getItemCategoriesOrThrowError(tenantId, itemCategoriesIds); - await this.unassociateItemsWithCategories(tenantId, itemCategoriesIds); - - await ItemCategory.query().whereIn('id', itemCategoriesIds).delete(); - - await this.eventDispatcher.dispatch(events.itemCategory.onBulkDeleted); - this.logger.info('[item_category] item categories deleted successfully.', { - tenantId, - itemCategoriesIds, - }); - } -} diff --git a/server/src/services/Items/ItemTransformer.ts b/server/src/services/Items/ItemTransformer.ts deleted file mode 100644 index 176c026ff..000000000 --- a/server/src/services/Items/ItemTransformer.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Transformer } from 'lib/Transformer/Transformer'; -import { formatNumber } from 'utils'; - -export default class ItemTransformer extends Transformer { - /** - * Include these attributes to sale invoice object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return ['sellPriceFormatted', 'costPriceFormatted']; - }; - - /** - * Formatted sell price. - * @param item - * @returns {string} - */ - public sellPriceFormatted(item): string { - return formatNumber(item.sellPrice, { - currencyCode: this.meta.baseCurrency, - }); - } - - /** - * Formatted cost price. - * @param item - * @returns {string} - */ - public costPriceFormatted(item): string { - return formatNumber(item.costPrice, { - currencyCode: this.meta.baseCurrency, - }); - } -} diff --git a/server/src/services/Items/ItemsCostService.ts b/server/src/services/Items/ItemsCostService.ts deleted file mode 100644 index 6f028f808..000000000 --- a/server/src/services/Items/ItemsCostService.ts +++ /dev/null @@ -1,5 +0,0 @@ - - -export default class ItemsCostService { - -} \ No newline at end of file diff --git a/server/src/services/Items/ItemsEntriesService.ts b/server/src/services/Items/ItemsEntriesService.ts deleted file mode 100644 index 008a22dc5..000000000 --- a/server/src/services/Items/ItemsEntriesService.ts +++ /dev/null @@ -1,232 +0,0 @@ -import { difference, map } from 'lodash'; -import { Inject, Service } from 'typedi'; -import { IItemEntry, IItemEntryDTO, IItem } from 'interfaces'; -import { ServiceError } from 'exceptions'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { entriesAmountDiff } from 'utils'; - -const ERRORS = { - ITEMS_NOT_FOUND: 'ITEMS_NOT_FOUND', - ENTRIES_IDS_NOT_FOUND: 'ENTRIES_IDS_NOT_FOUND', - NOT_PURCHASE_ABLE_ITEMS: 'NOT_PURCHASE_ABLE_ITEMS', - NOT_SELL_ABLE_ITEMS: 'NOT_SELL_ABLE_ITEMS', -}; - -@Service() -export default class ItemsEntriesService { - @Inject() - tenancy: TenancyService; - - /** - * Retrieve the inventory items entries of the reference id and type. - * @param {number} tenantId - * @param {string} referenceType - * @param {string} referenceId - * @return {Promise} - */ - public async getInventoryEntries( - tenantId: number, - referenceType: string, - referenceId: number - ): Promise { - const { Item, ItemEntry } = this.tenancy.models(tenantId); - - const itemsEntries = await ItemEntry.query() - .where('reference_type', referenceType) - .where('reference_id', referenceId); - - // Inventory items. - const inventoryItems = await Item.query() - .whereIn('id', map(itemsEntries, 'itemId')) - .where('type', 'inventory'); - - // Inventory items ids. - const inventoryItemsIds = map(inventoryItems, 'id'); - - // Filtering the inventory items entries. - const inventoryItemsEntries = itemsEntries.filter( - (itemEntry) => inventoryItemsIds.indexOf(itemEntry.itemId) !== -1 - ); - return inventoryItemsEntries; - } - - /** - * Filter the given entries to inventory entries. - * @param {IItemEntry[]} entries - - * @returns {IItemEntry[]} - */ - public async filterInventoryEntries( - tenantId: number, - entries: IItemEntry[] - ): Promise { - const { Item } = this.tenancy.models(tenantId); - const entriesItemsIds = entries.map((e) => e.itemId); - - // Retrieve entries inventory items. - const inventoryItems = await Item.query() - .whereIn('id', entriesItemsIds) - .where('type', 'inventory'); - - const inventoryEntries = entries.filter((entry) => - inventoryItems.some((item) => item.id === entry.itemId) - ); - return inventoryEntries; - } - - /** - * Validates the entries items ids. - * @async - * @param {number} tenantId - - * @param {IItemEntryDTO} itemEntries - - */ - public async validateItemsIdsExistance( - tenantId: number, - itemEntries: IItemEntryDTO[] - ) { - const { Item } = this.tenancy.models(tenantId); - const itemsIds = itemEntries.map((e) => e.itemId); - - const foundItems = await Item.query().whereIn('id', itemsIds); - - const foundItemsIds = foundItems.map((item: IItem) => item.id); - const notFoundItemsIds = difference(itemsIds, foundItemsIds); - - if (notFoundItemsIds.length > 0) { - throw new ServiceError(ERRORS.ITEMS_NOT_FOUND); - } - } - - /** - * Validates the entries ids existance on the storage. - * @param {number} tenantId - - * @param {number} billId - - * @param {IItemEntry[]} billEntries - - */ - public async validateEntriesIdsExistance( - tenantId: number, - referenceId: number, - referenceType: string, - billEntries: IItemEntryDTO[] - ) { - const { ItemEntry } = this.tenancy.models(tenantId); - const entriesIds = billEntries - .filter((e: IItemEntry) => e.id) - .map((e: IItemEntry) => e.id); - - const storedEntries = await ItemEntry.query() - .whereIn('reference_id', [referenceId]) - .whereIn('reference_type', [referenceType]); - - const storedEntriesIds = storedEntries.map((entry) => entry.id); - const notFoundEntriesIds = difference(entriesIds, storedEntriesIds); - - if (notFoundEntriesIds.length > 0) { - throw new ServiceError(ERRORS.ENTRIES_IDS_NOT_FOUND); - } - } - - /** - * Validate the entries items that not purchase-able. - */ - public async validateNonPurchasableEntriesItems( - tenantId: number, - itemEntries: IItemEntryDTO[] - ) { - const { Item } = this.tenancy.models(tenantId); - const itemsIds = itemEntries.map((e: IItemEntryDTO) => e.itemId); - - const purchasbleItems = await Item.query() - .where('purchasable', true) - .whereIn('id', itemsIds); - - const purchasbleItemsIds = purchasbleItems.map((item: IItem) => item.id); - const notPurchasableItems = difference(itemsIds, purchasbleItemsIds); - - if (notPurchasableItems.length > 0) { - throw new ServiceError(ERRORS.NOT_PURCHASE_ABLE_ITEMS); - } - } - - /** - * Validate the entries items that not sell-able. - */ - public async validateNonSellableEntriesItems( - tenantId: number, - itemEntries: IItemEntryDTO[] - ) { - const { Item } = this.tenancy.models(tenantId); - const itemsIds = itemEntries.map((e: IItemEntryDTO) => e.itemId); - - const sellableItems = await Item.query() - .where('sellable', true) - .whereIn('id', itemsIds); - - const sellableItemsIds = sellableItems.map((item: IItem) => item.id); - const nonSellableItems = difference(itemsIds, sellableItemsIds); - - if (nonSellableItems.length > 0) { - throw new ServiceError(ERRORS.NOT_SELL_ABLE_ITEMS); - } - } - - /** - * Changes items quantity from the given items entries the new and old onces. - * @param {number} tenantId - * @param {IItemEntry} entries - Items entries. - * @param {IItemEntry} oldEntries - Old items entries. - */ - public async changeItemsQuantity( - tenantId: number, - entries: IItemEntry[], - oldEntries?: IItemEntry[] - ): Promise { - const { itemRepository } = this.tenancy.repositories(tenantId); - const opers = []; - - const diffEntries = entriesAmountDiff( - entries, - oldEntries, - 'quantity', - 'itemId' - ); - diffEntries.forEach((entry: IItemEntry) => { - const changeQuantityOper = itemRepository.changeNumber( - { id: entry.itemId, type: 'inventory' }, - 'quantityOnHand', - entry.quantity - ); - opers.push(changeQuantityOper); - }); - await Promise.all(opers); - } - - /** - * Increment items quantity from the given items entries. - * @param {number} tenantId - Tenant id. - * @param {IItemEntry} entries - Items entries. - */ - public async incrementItemsEntries( - tenantId: number, - entries: IItemEntry[] - ): Promise { - return this.changeItemsQuantity(tenantId, entries); - } - - /** - * Decrement items quantity from the given items entries. - * @param {number} tenantId - Tenant id. - * @param {IItemEntry} entries - Items entries. - */ - public async decrementItemsQuantity( - tenantId: number, - entries: IItemEntry[] - ): Promise { - return this.changeItemsQuantity( - tenantId, - entries.map((entry) => ({ - ...entry, - quantity: entry.quantity * -1, - })) - ); - } -} diff --git a/server/src/services/Items/ItemsService.ts b/server/src/services/Items/ItemsService.ts deleted file mode 100644 index 91c538ada..000000000 --- a/server/src/services/Items/ItemsService.ts +++ /dev/null @@ -1,632 +0,0 @@ -import { defaultTo } from 'lodash'; -import { Service, Inject } from 'typedi'; -import * as R from 'ramda'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import events from 'subscribers/events'; -import { - IItemsFilter, - IItemsService, - IItemDTO, - IItem, - IItemsAutoCompleteFilter, -} from 'interfaces'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { ServiceError } from 'exceptions'; -import InventoryService from 'services/Inventory/Inventory'; -import { - ACCOUNT_PARENT_TYPE, - ACCOUNT_ROOT_TYPE, - ACCOUNT_TYPE, -} from 'data/AccountTypes'; -import { ERRORS } from './constants'; -import ItemTransformer from './ItemTransformer'; -import { Tenant } from 'system/models'; - -@Service() -export default class ItemsService implements IItemsService { - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject('logger') - logger: any; - - @Inject() - inventoryService: InventoryService; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - /** - * Retrieve item details or throw not found error. - * @param {number} tenantId - * @param {number} itemId - * @return {Promise} - */ - public async getItemOrThrowError( - tenantId: number, - itemId: number - ): Promise { - const { Item } = this.tenancy.models(tenantId); - - this.logger.info('[items] validate item id existance.', { itemId }); - const foundItem = await Item.query().findById(itemId); - - if (!foundItem) { - this.logger.info('[items] item not found.', { itemId }); - throw new ServiceError(ERRORS.NOT_FOUND); - } - return foundItem; - } - - /** - * Validate wether the given item name already exists on the storage. - * @param {number} tenantId - * @param {string} itemName - * @param {number} notItemId - * @return {Promise} - */ - private async validateItemNameUniquiness( - tenantId: number, - itemName: string, - notItemId?: number - ): Promise { - const { Item } = this.tenancy.models(tenantId); - - this.logger.info('[items] validate item name uniquiness.', { - itemName, - tenantId, - }); - const foundItems: [] = await Item.query().onBuild((builder: any) => { - builder.where('name', itemName); - if (notItemId) { - builder.whereNot('id', notItemId); - } - }); - if (foundItems.length > 0) { - this.logger.info('[items] item name already exists.', { - itemName, - tenantId, - }); - throw new ServiceError(ERRORS.ITEM_NAME_EXISTS); - } - } - - /** - * Validate item COGS account existance and type. - * @param {number} tenantId - * @param {number} costAccountId - * @return {Promise} - */ - private async validateItemCostAccountExistance( - tenantId: number, - costAccountId: number - ): Promise { - const { accountRepository } = this.tenancy.repositories(tenantId); - - this.logger.info('[items] validate cost account existance.', { - tenantId, - costAccountId, - }); - const foundAccount = await accountRepository.findOneById(costAccountId); - - if (!foundAccount) { - this.logger.info('[items] cost account not found.', { - tenantId, - costAccountId, - }); - throw new ServiceError(ERRORS.COST_ACCOUNT_NOT_FOUMD); - - // Detarmines the cost of goods sold account. - } else if (!foundAccount.isParentType(ACCOUNT_PARENT_TYPE.EXPENSE)) { - this.logger.info('[items] validate cost account not COGS type.', { - tenantId, - costAccountId, - }); - throw new ServiceError(ERRORS.COST_ACCOUNT_NOT_COGS); - } - } - - /** - * Validate item sell account existance and type. - * @param {number} tenantId - Tenant id. - * @param {number} sellAccountId - Sell account id. - */ - private async validateItemSellAccountExistance( - tenantId: number, - sellAccountId: number - ) { - const { accountRepository } = this.tenancy.repositories(tenantId); - - this.logger.info('[items] validate sell account existance.', { - tenantId, - sellAccountId, - }); - - const foundAccount = await accountRepository.findOneById(sellAccountId); - - if (!foundAccount) { - this.logger.info('[items] sell account not found.', { - tenantId, - sellAccountId, - }); - throw new ServiceError(ERRORS.SELL_ACCOUNT_NOT_FOUND); - } else if (!foundAccount.isParentType(ACCOUNT_ROOT_TYPE.INCOME)) { - this.logger.info('[items] sell account not income type.', { - tenantId, - sellAccountId, - }); - throw new ServiceError(ERRORS.SELL_ACCOUNT_NOT_INCOME); - } - } - - /** - * Validate item inventory account existance and type. - * @param {number} tenantId - * @param {number} inventoryAccountId - */ - private async validateItemInventoryAccountExistance( - tenantId: number, - inventoryAccountId: number - ) { - const { accountRepository } = this.tenancy.repositories(tenantId); - - this.logger.info('[items] validate inventory account existance.', { - tenantId, - inventoryAccountId, - }); - const foundAccount = await accountRepository.findOneById( - inventoryAccountId - ); - - if (!foundAccount) { - this.logger.info('[items] inventory account not found.', { - tenantId, - inventoryAccountId, - }); - throw new ServiceError(ERRORS.INVENTORY_ACCOUNT_NOT_FOUND); - } else if (!foundAccount.isAccountType(ACCOUNT_TYPE.INVENTORY)) { - this.logger.info('[items] inventory account not inventory type.', { - tenantId, - inventoryAccountId, - }); - throw new ServiceError(ERRORS.INVENTORY_ACCOUNT_NOT_INVENTORY); - } - } - - /** - * Validate item category existance. - * @param {number} tenantId - * @param {number} itemCategoryId - */ - private async validateItemCategoryExistance( - tenantId: number, - itemCategoryId: number - ) { - const { ItemCategory } = this.tenancy.models(tenantId); - const foundCategory = await ItemCategory.query().findById(itemCategoryId); - - if (!foundCategory) { - throw new ServiceError(ERRORS.ITEM_CATEOGRY_NOT_FOUND); - } - } - - /** - * Transforms the item DTO to model. - * @param {IItemDTO} itemDTO - Item DTO. - * @return {IItem} - */ - private transformNewItemDTOToModel(itemDTO: IItemDTO) { - return { - ...itemDTO, - active: defaultTo(itemDTO.active, 1), - quantityOnHand: itemDTO.type === 'inventory' ? 0 : null, - }; - } - - /** - * - * @param {IItemDTO} itemDTO - Item DTO. - * @param {IItem} oldItem - - */ - private transformEditItemDTOToModel(itemDTO: IItemDTO, oldItem: IItem) { - return { - ...itemDTO, - ...(itemDTO.type === 'inventory' && oldItem.type !== 'inventory' - ? { - quantityOnHand: 0, - } - : {}), - }; - } - - /** - * Validate edit item type from inventory to another type that not allowed. - * @param {IItemDTO} itemDTO - * @param {IItem} oldItem - */ - private validateEditItemFromInventory(itemDTO: IItemDTO, oldItem: IItem) { - if ( - itemDTO.type && - oldItem.type === 'inventory' && - itemDTO.type !== oldItem.type - ) { - throw new ServiceError(ERRORS.ITEM_CANNOT_CHANGE_INVENTORY_TYPE); - } - } - - /** - * Validates edit item type from service/non-inventory to inventory. - * Should item has no any relations with accounts transactions. - * @param {number} tenantId - Tenant id. - * @param {number} itemId - Item id. - */ - private async validateEditItemTypeToInventory( - tenantId: number, - oldItem: IItem, - newItemDTO: IItemDTO - ) { - const { AccountTransaction } = this.tenancy.models(tenantId); - - // We have no problem in case the item type not modified. - if (newItemDTO.type === oldItem.type || oldItem.type === 'inventory') { - return; - } - // Retrieve all transactions that associated to the given item id. - const itemTransactionsCount = await AccountTransaction.query() - .where('item_id', oldItem.id) - .count('item_id', { as: 'transactions' }) - .first(); - - if (itemTransactionsCount.transactions > 0) { - throw new ServiceError( - ERRORS.TYPE_CANNOT_CHANGE_WITH_ITEM_HAS_TRANSACTIONS - ); - } - } - - /** - * Validate the item inventory account whether modified and item - * has assocaited inventory transactions. - * @param {numnber} tenantId - * @param {IItem} oldItem - * @param {IItemDTO} newItemDTO - * @returns - */ - async validateItemInvnetoryAccountModified( - tenantId: number, - oldItem: IItem, - newItemDTO: IItemDTO - ) { - const { AccountTransaction } = this.tenancy.models(tenantId); - - if ( - newItemDTO.type !== 'inventory' || - oldItem.inventoryAccountId === newItemDTO.inventoryAccountId - ) { - return; - } - // Inventory transactions associated to the given item id. - const transactions = await AccountTransaction.query().where({ - itemId: oldItem.id, - }); - // Throw the service error in case item has associated inventory transactions. - if (transactions.length > 0) { - throw new ServiceError(ERRORS.INVENTORY_ACCOUNT_CANNOT_MODIFIED); - } - } - - /** - * Creates a new item. - * @param {number} tenantId DTO - * @param {IItemDTO} item - * @return {Promise} - */ - public async newItem(tenantId: number, itemDTO: IItemDTO): Promise { - const { Item } = this.tenancy.models(tenantId); - - // Validate whether the given item name already exists on the storage. - await this.validateItemNameUniquiness(tenantId, itemDTO.name); - - if (itemDTO.categoryId) { - await this.validateItemCategoryExistance(tenantId, itemDTO.categoryId); - } - if (itemDTO.sellAccountId) { - await this.validateItemSellAccountExistance( - tenantId, - itemDTO.sellAccountId - ); - } - if (itemDTO.costAccountId) { - await this.validateItemCostAccountExistance( - tenantId, - itemDTO.costAccountId - ); - } - if (itemDTO.inventoryAccountId) { - await this.validateItemInventoryAccountExistance( - tenantId, - itemDTO.inventoryAccountId - ); - } - const item = await Item.query().insertAndFetch({ - ...this.transformNewItemDTOToModel(itemDTO), - }); - this.logger.info('[items] item inserted successfully.', { - tenantId, - itemDTO, - }); - // Triggers `onItemCreated` event. - await this.eventDispatcher.dispatch(events.item.onCreated, { - tenantId, - item, - itemId: item.id, - }); - return item; - } - - /** - * Edits the item metadata. - * @param {number} tenantId - * @param {number} itemId - * @param {IItemDTO} itemDTO - */ - public async editItem(tenantId: number, itemId: number, itemDTO: IItemDTO) { - const { Item } = this.tenancy.models(tenantId); - - // Validates the given item existance on the storage. - const oldItem = await this.getItemOrThrowError(tenantId, itemId); - - // Validate edit item type from inventory type. - this.validateEditItemFromInventory(itemDTO, oldItem); - - // Validate edit item type to inventory type. - await this.validateEditItemTypeToInventory(tenantId, oldItem, itemDTO); - - // Transform the edit item DTO to model. - const itemModel = this.transformEditItemDTOToModel(itemDTO, oldItem); - - // Validate whether the given item name already exists on the storage. - await this.validateItemNameUniquiness(tenantId, itemDTO.name, itemId); - - // Validate the item category existance on the storage, - if (itemDTO.categoryId) { - await this.validateItemCategoryExistance(tenantId, itemDTO.categoryId); - } - // Validate the sell account existance on the storage. - if (itemDTO.sellAccountId) { - await this.validateItemSellAccountExistance( - tenantId, - itemDTO.sellAccountId - ); - } - // Validate the cost account existance on the storage. - if (itemDTO.costAccountId) { - await this.validateItemCostAccountExistance( - tenantId, - itemDTO.costAccountId - ); - } - // Validate the inventory account existance onthe storage. - if (itemDTO.inventoryAccountId) { - await this.validateItemInventoryAccountExistance( - tenantId, - itemDTO.inventoryAccountId - ); - } - - await this.validateItemInvnetoryAccountModified(tenantId, oldItem, itemDTO); - - const newItem = await Item.query().patchAndFetchById(itemId, { - ...itemModel, - }); - this.logger.info('[items] item edited successfully.', { - tenantId, - itemId, - itemDTO, - }); - - return newItem; - } - - /** - * Delete the given item from the storage. - * @param {number} tenantId - Tenant id. - * @param {number} itemId - Item id. - * @return {Promise} - */ - public async deleteItem(tenantId: number, itemId: number) { - const { Item } = this.tenancy.models(tenantId); - this.logger.info('[items] trying to delete item.', { tenantId, itemId }); - - // Retreive the given item or throw not found service error. - await this.getItemOrThrowError(tenantId, itemId); - - // Validate the item has no associated inventory transactions. - await this.validateHasNoInventoryAdjustments(tenantId, itemId); - - // Validate the item has no associated invoices or bills. - await this.validateHasNoInvoicesOrBills(tenantId, itemId); - - await Item.query().findById(itemId).delete(); - - this.logger.info('[items] deleted successfully.', { tenantId, itemId }); - } - - /** - * Activates the given item on the storage. - * @param {number} tenantId - - * @param {number} itemId - - * @return {Promise} - */ - public async activateItem(tenantId: number, itemId: number): Promise { - const { Item } = this.tenancy.models(tenantId); - - this.logger.info('[items] trying to activate the given item.', { - tenantId, - itemId, - }); - const item = await this.getItemOrThrowError(tenantId, itemId); - - await Item.query().findById(itemId).patch({ active: true }); - - this.logger.info('[items] activated successfully.', { tenantId, itemId }); - } - - /** - * Inactivates the given item on the storage. - * @param {number} tenantId - * @param {number} itemId - * @return {Promise} - */ - public async inactivateItem(tenantId: number, itemId: number): Promise { - const { Item } = this.tenancy.models(tenantId); - - this.logger.info('[items] trying to inactivate the given item.', { - tenantId, - itemId, - }); - const item = await this.getItemOrThrowError(tenantId, itemId); - - await Item.query().findById(itemId).patch({ active: false }); - - this.logger.info('[items] activated successfully.', { tenantId, itemId }); - } - - /** - * Retrieve the item details of the given id with associated details. - * @param {number} tenantId - * @param {number} itemId - */ - public async getItem(tenantId: number, itemId: number): Promise { - const { Item } = this.tenancy.models(tenantId); - - const item = await Item.query() - .findById(itemId) - .withGraphFetched('sellAccount') - .withGraphFetched('inventoryAccount') - .withGraphFetched('category') - .withGraphFetched('costAccount'); - - // Can't continue if the item not found. - if (!item) { - throw new ServiceError(ERRORS.NOT_FOUND); - } - // Retrieve tenant and tenant information. - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const baseCurrency = tenant.metadata?.baseCurrency; - - // Transformes the item model. - return new ItemTransformer().setMeta({ baseCurrency }).transform(item); - } - - /** - * Parses items list filter DTO. - * @param {} filterDTO - Filter DTO. - */ - private parseItemsListFilterDTO(filterDTO) { - return R.compose(this.dynamicListService.parseStringifiedFilter)(filterDTO); - } - - /** - * Retrieve items datatable list. - * @param {number} tenantId - * @param {IItemsFilter} itemsFilter - */ - public async itemsList(tenantId: number, filterDTO: IItemsFilter) { - const { Item } = this.tenancy.models(tenantId); - - // Parses items list filter DTO. - const filter = this.parseItemsListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicFilter = await this.dynamicListService.dynamicList( - tenantId, - Item, - filter - ); - const { results: items, pagination } = await Item.query() - .onBuild((builder) => { - builder.modify('inactiveMode', filter.inactiveMode); - - builder.withGraphFetched('inventoryAccount'); - builder.withGraphFetched('sellAccount'); - builder.withGraphFetched('costAccount'); - builder.withGraphFetched('category'); - - dynamicFilter.buildQuery()(builder); - }) - .pagination(filter.page - 1, filter.pageSize); - - // Retrieve tenant and tenant information. - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - const transformedItems = new ItemTransformer() - .setMeta({ - baseCurrency: tenant?.metadata.baseCurrency, - }) - .transform(items); - - return { - items: transformedItems, - pagination, - filterMeta: dynamicFilter.getResponseMeta(), - }; - } - - /** - * Validates the given item or items have no associated invoices or bills. - * @param {number} tenantId - Tenant id. - * @param {number|number[]} itemId - Item id. - * @throws {ServiceError} - */ - private async validateHasNoInvoicesOrBills( - tenantId: number, - itemId: number[] | number - ) { - const { ItemEntry } = this.tenancy.models(tenantId); - - const ids = Array.isArray(itemId) ? itemId : [itemId]; - const foundItemEntries = await ItemEntry.query().whereIn('item_id', ids); - - if (foundItemEntries.length > 0) { - throw new ServiceError( - ids.length > 1 - ? ERRORS.ITEMS_HAVE_ASSOCIATED_TRANSACTIONS - : ERRORS.ITEM_HAS_ASSOCIATED_TRANSACTINS - ); - } - } - - /** - * Validates the given item has no associated inventory adjustment transactions. - * @param {number} tenantId - - * @param {number} itemId - - */ - private async validateHasNoInventoryAdjustments( - tenantId: number, - itemId: number[] | number - ): Promise { - const { InventoryAdjustmentEntry } = this.tenancy.models(tenantId); - const itemsIds = Array.isArray(itemId) ? itemId : [itemId]; - - const inventoryAdjEntries = await InventoryAdjustmentEntry.query().whereIn( - 'item_id', - itemsIds - ); - if (inventoryAdjEntries.length > 0) { - throw new ServiceError(ERRORS.ITEM_HAS_ASSOCIATED_INVENTORY_ADJUSTMENT); - } - } -} diff --git a/server/src/services/Items/constants.ts b/server/src/services/Items/constants.ts deleted file mode 100644 index bcb158229..000000000 --- a/server/src/services/Items/constants.ts +++ /dev/null @@ -1,59 +0,0 @@ - -export const ERRORS = { - NOT_FOUND: 'NOT_FOUND', - ITEMS_NOT_FOUND: 'ITEMS_NOT_FOUND', - - ITEM_NAME_EXISTS: 'ITEM_NAME_EXISTS', - ITEM_CATEOGRY_NOT_FOUND: 'ITEM_CATEOGRY_NOT_FOUND', - COST_ACCOUNT_NOT_COGS: 'COST_ACCOUNT_NOT_COGS', - COST_ACCOUNT_NOT_FOUMD: 'COST_ACCOUNT_NOT_FOUMD', - SELL_ACCOUNT_NOT_FOUND: 'SELL_ACCOUNT_NOT_FOUND', - SELL_ACCOUNT_NOT_INCOME: 'SELL_ACCOUNT_NOT_INCOME', - - INVENTORY_ACCOUNT_NOT_FOUND: 'INVENTORY_ACCOUNT_NOT_FOUND', - INVENTORY_ACCOUNT_NOT_INVENTORY: 'INVENTORY_ACCOUNT_NOT_INVENTORY', - - ITEMS_HAVE_ASSOCIATED_TRANSACTIONS: 'ITEMS_HAVE_ASSOCIATED_TRANSACTIONS', - ITEM_HAS_ASSOCIATED_TRANSACTINS: 'ITEM_HAS_ASSOCIATED_TRANSACTINS', - - ITEM_HAS_ASSOCIATED_INVENTORY_ADJUSTMENT: - 'ITEM_HAS_ASSOCIATED_INVENTORY_ADJUSTMENT', - ITEM_CANNOT_CHANGE_INVENTORY_TYPE: 'ITEM_CANNOT_CHANGE_INVENTORY_TYPE', - TYPE_CANNOT_CHANGE_WITH_ITEM_HAS_TRANSACTIONS: 'TYPE_CANNOT_CHANGE_WITH_ITEM_HAS_TRANSACTIONS', - INVENTORY_ACCOUNT_CANNOT_MODIFIED: 'INVENTORY_ACCOUNT_CANNOT_MODIFIED' -}; - - -export const DEFAULT_VIEW_COLUMNS = [ - -]; - -export const DEFAULT_VIEWS = [ - { - name: 'Services', - slug: 'services', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'type', comparator: 'equals', value: 'service' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Inventory', - slug: 'inventory', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'type', comparator: 'equals', value: 'inventory' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Non Inventory', - slug: 'non-inventory', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'type', comparator: 'equals', value: 'non-inventory' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, -] \ No newline at end of file diff --git a/server/src/services/Jobs/JobTransformer.ts b/server/src/services/Jobs/JobTransformer.ts deleted file mode 100644 index ad1c8a86e..000000000 --- a/server/src/services/Jobs/JobTransformer.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Service } from 'typedi'; -import moment from 'moment'; -import { ISaleInvoice } from 'interfaces'; -import { Transformer } from 'lib/Transformer/Transformer'; -import { formatNumber } from 'utils'; - -@Service() -export default class JobTransformer extends Transformer { - /** - * Include these attributes to sale invoice object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return ['queued', 'completed', 'failed']; - }; - - /** - * Detarmines the queued state. - * @param {IJob} job - * @returns {String} - */ - protected queued = (job): boolean => { - return !!job.nextRunAt && moment().isSameOrAfter(job.nextRunAt, 'seconds'); - }; - - /** - * Detarmines the completed state. - * @param job - * @returns - */ - protected completed = (job): boolean => { - return !!job.lastFinishedAt; - }; - - /** - * Detarmines the failed state. - * @param job - * @returns - */ - protected failed = (job): boolean => { - return ( - job.lastFinishedAt && - job.failedAt && - moment(job.failedAt).isSame(job.lastFinishedAt) - ); - }; -} diff --git a/server/src/services/Jobs/JobsService.ts b/server/src/services/Jobs/JobsService.ts deleted file mode 100644 index 7c1890524..000000000 --- a/server/src/services/Jobs/JobsService.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { pick, first } from 'lodash'; -import { ObjectId } from 'mongodb'; -import { Service, Inject } from 'typedi'; -import JobTransformer from './JobTransformer'; -import { IJobMeta } from 'interfaces'; - -@Service() -export default class JobsService { - @Inject('agenda') - agenda: any; - - @Inject() - jobsTransformer: JobTransformer; - - /** - * Retrieve job details of the given job id. - * @param {string} jobId - * @returns {Promise} - */ - async getJob(jobId: string): Promise { - const jobs = await this.agenda.jobs({ _id: new ObjectId(jobId) }); - - // Transformes job to json. - const jobJson = this.transformJobToJson(first(jobs)); - - return this.jobsTransformer.transform(jobJson); - } - - /** - * Transformes the job to json. - * @param job - * @returns - */ - private transformJobToJson(job) { - return { - id: job.attrs._id, - ...pick(job.attrs, [ - 'nextRunAt', - 'lastModifiedBy', - 'lockedAt', - 'lastRunAt', - 'failCount', - 'failReason', - 'failedAt', - 'lastFinishedAt', - ]), - running: job.isRunning(), - }; - } -} diff --git a/server/src/services/ManualJournals/ManualJournalTransformer.ts b/server/src/services/ManualJournals/ManualJournalTransformer.ts deleted file mode 100644 index 8a9238dce..000000000 --- a/server/src/services/ManualJournals/ManualJournalTransformer.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { IManualJournal } from 'interfaces'; -import { Transformer } from 'lib/Transformer/Transformer'; -import { Service } from 'typedi'; -import { formatNumber } from 'utils'; - -@Service() -export default class ManualJournalTransfromer extends Transformer { - /** - * Include these attributes to expense object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return ['formattedAmount', 'formattedDate', 'formattedPublishedAt']; - }; - - /** - * Retrieve formatted journal amount. - * @param {IManualJournal} manualJournal - * @returns {string} - */ - protected formattedAmount = (manualJorunal: IManualJournal): string => { - return formatNumber(manualJorunal.amount, { - currencyCode: manualJorunal.currencyCode, - }); - }; - - /** - * Retrieve formatted date. - * @param {IManualJournal} manualJournal - * @returns {string} - */ - protected formattedDate = (manualJorunal: IManualJournal): string => { - return this.formatDate(manualJorunal.date); - }; - - /** - * Retrieve formatted published at date. - * @param {IManualJournal} manualJournal - * @returns {string} - */ - protected formattedPublishedAt = (manualJorunal: IManualJournal): string => { - return this.formatDate(manualJorunal.publishedAt); - }; -} diff --git a/server/src/services/ManualJournals/ManualJournalsService.ts b/server/src/services/ManualJournals/ManualJournalsService.ts deleted file mode 100644 index 413848b19..000000000 --- a/server/src/services/ManualJournals/ManualJournalsService.ts +++ /dev/null @@ -1,916 +0,0 @@ -import { difference, sumBy, omit, map } from 'lodash'; -import { Service, Inject } from 'typedi'; -import moment from 'moment'; -import * as R from 'ramda'; -import { ServiceError } from 'exceptions'; -import { - IManualJournalDTO, - IManualJournalsService, - IManualJournalsFilter, - ISystemUser, - IManualJournal, - IPaginationMeta, - IManualJournalEntry, -} from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import events from 'subscribers/events'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import JournalCommands from 'services/Accounting/JournalCommands'; -import JournalPosterService from 'services/Sales/JournalPosterService'; -import AutoIncrementOrdersService from 'services/Sales/AutoIncrementOrdersService'; -import { ERRORS } from './constants'; -import ManualJournalTransfromer from './ManualJournalTransformer'; -import { Tenant } from 'system/models'; - -@Service() -export default class ManualJournalsService implements IManualJournalsService { - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject() - journalService: JournalPosterService; - - @Inject('logger') - logger: any; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject() - autoIncrementOrdersService: AutoIncrementOrdersService; - - @Inject() - manualJournalTransformer: ManualJournalTransfromer; - - /** - * Validates the manual journal existance. - * @param {number} tenantId - * @param {number} manualJournalId - */ - private async getManualJournalOrThrowError( - tenantId: number, - manualJournalId: number - ) { - const { ManualJournal } = this.tenancy.models(tenantId); - - this.logger.info('[manual_journal] trying to validate existance.', { - tenantId, - manualJournalId, - }); - const manualJournal = await ManualJournal.query() - .findById(manualJournalId) - .withGraphFetched('entries'); - - if (!manualJournal) { - this.logger.warn('[manual_journal] not exists on the storage.', { - tenantId, - manualJournalId, - }); - throw new ServiceError(ERRORS.NOT_FOUND); - } - return manualJournal; - } - - /** - * Validate manual journals existance. - * @param {number} tenantId - Tenant id. - * @param {number[]} manualJournalsIds - Manual jorunal ids. - * @throws {ServiceError} - */ - private async getManualJournalsOrThrowError( - tenantId: number, - manualJournalsIds: number[] - ) { - const { ManualJournal } = this.tenancy.models(tenantId); - - const manualJournals = await ManualJournal.query() - .whereIn('id', manualJournalsIds) - .withGraphFetched('entries'); - - const notFoundManualJournals = difference( - manualJournalsIds, - manualJournals.map((m) => m.id) - ); - if (notFoundManualJournals.length > 0) { - throw new ServiceError(ERRORS.NOT_FOUND); - } - return manualJournals; - } - - /** - * Validate manual journal credit and debit should be equal. - * @param {IManualJournalDTO} manualJournalDTO - */ - private valdiateCreditDebitTotalEquals(manualJournalDTO: IManualJournalDTO) { - let totalCredit = 0; - let totalDebit = 0; - - manualJournalDTO.entries.forEach((entry) => { - if (entry.credit > 0) { - totalCredit += entry.credit; - } - if (entry.debit > 0) { - totalDebit += entry.debit; - } - }); - if (totalCredit <= 0 || totalDebit <= 0) { - this.logger.info( - '[manual_journal] the total credit and debit equals zero.' - ); - throw new ServiceError(ERRORS.CREDIT_DEBIT_NOT_EQUAL_ZERO); - } - if (totalCredit !== totalDebit) { - this.logger.info( - '[manual_journal] the total credit not equals total debit.' - ); - throw new ServiceError(ERRORS.CREDIT_DEBIT_NOT_EQUAL); - } - } - - /** - * Validate manual entries accounts existance on the storage. - * @param {number} tenantId - - * @param {IManualJournalDTO} manualJournalDTO - - */ - private async validateAccountsExistance( - tenantId: number, - manualJournalDTO: IManualJournalDTO - ) { - const { Account } = this.tenancy.models(tenantId); - const manualAccountsIds = manualJournalDTO.entries.map((e) => e.accountId); - - const accounts = await Account.query().whereIn('id', manualAccountsIds); - - const storedAccountsIds = accounts.map((account) => account.id); - - if (difference(manualAccountsIds, storedAccountsIds).length > 0) { - this.logger.info('[manual_journal] some entries accounts not exist.', { - tenantId, - manualAccountsIds, - }); - throw new ServiceError(ERRORS.ACCCOUNTS_IDS_NOT_FOUND); - } - } - - /** - * Validate manual journal number unique. - * @param {number} tenantId - * @param {IManualJournalDTO} manualJournalDTO - */ - private async validateManualJournalNoUnique( - tenantId: number, - journalNumber: string, - notId?: number - ) { - const { ManualJournal } = this.tenancy.models(tenantId); - const journals = await ManualJournal.query() - .where('journal_number', journalNumber) - .onBuild((builder) => { - if (notId) { - builder.whereNot('id', notId); - } - }); - if (journals.length > 0) { - throw new ServiceError(ERRORS.JOURNAL_NUMBER_EXISTS); - } - } - - /** - * Validate accounts with contact type. - * @param {number} tenantId - * @param {IManualJournalDTO} manualJournalDTO - * @param {string} accountBySlug - * @param {string} contactType - */ - private async validateAccountWithContactType( - tenantId: number, - entriesDTO: IManualJournalEntry[], - accountBySlug: string, - contactType: string - ): Promise { - const { Account } = this.tenancy.models(tenantId); - const { contactRepository } = this.tenancy.repositories(tenantId); - - // Retrieve account meta by the given account slug. - const account = await Account.query().findOne('slug', accountBySlug); - - // Retrieve all stored contacts on the storage from contacts entries. - const storedContacts = await contactRepository.findWhereIn( - 'id', - entriesDTO - .filter((entry) => entry.contactId) - .map((entry) => entry.contactId) - ); - // Converts the stored contacts to map with id as key and entry as value. - const storedContactsMap = new Map( - storedContacts.map((contact) => [contact.id, contact]) - ); - - // Filter all entries of the given account. - const accountEntries = entriesDTO.filter( - (entry) => entry.accountId === account.id - ); - // Can't continue if there is no entry that associate to the given account. - if (accountEntries.length === 0) { - return; - } - // Filter entries that have no contact type or not equal the valid type. - const entriesNoContact = accountEntries.filter((entry) => { - const contact = storedContactsMap.get(entry.contactId); - return !contact || contact.contactService !== contactType; - }); - // Throw error in case one of entries that has invalid contact type. - if (entriesNoContact.length > 0) { - const indexes = entriesNoContact.map((e) => e.index); - - return new ServiceError(ERRORS.ENTRIES_SHOULD_ASSIGN_WITH_CONTACT, '', { - accountSlug: accountBySlug, - contactType, - indexes, - }); - } - } - - /** - * Dynamic validates accounts with contacts. - * @param {number} tenantId - * @param {IManualJournalDTO} manualJournalDTO - */ - private async dynamicValidateAccountsWithContactType( - tenantId: number, - entriesDTO: IManualJournalEntry[] - ): Promise { - return Promise.all([ - this.validateAccountWithContactType( - tenantId, - entriesDTO, - 'accounts-receivable', - 'customer' - ), - this.validateAccountWithContactType( - tenantId, - entriesDTO, - 'accounts-payable', - 'vendor' - ), - ]).then((results) => { - const metadataErrors = results - .filter((result) => result instanceof ServiceError) - .map((result: ServiceError) => result.payload); - - if (metadataErrors.length > 0) { - throw new ServiceError( - ERRORS.ENTRIES_SHOULD_ASSIGN_WITH_CONTACT, - '', - metadataErrors - ); - } - - return results; - }); - } - - /** - * Validate entries contacts existance. - * @param {number} tenantId - - * @param {IManualJournalDTO} manualJournalDTO - */ - private async validateContactsExistance( - tenantId: number, - manualJournalDTO: IManualJournalDTO - ) { - const { contactRepository } = this.tenancy.repositories(tenantId); - - // Filters the entries that have contact only. - const entriesContactPairs = manualJournalDTO.entries.filter( - (entry) => entry.contactId - ); - - if (entriesContactPairs.length > 0) { - const entriesContactsIds = entriesContactPairs.map( - (entry) => entry.contactId - ); - // Retrieve all stored contacts on the storage from contacts entries. - const storedContacts = await contactRepository.findWhereIn( - 'id', - entriesContactsIds - ); - // Converts the stored contacts to map with id as key and entry as value. - const storedContactsMap = new Map( - storedContacts.map((contact) => [contact.id, contact]) - ); - const notFoundContactsIds = []; - - entriesContactPairs.forEach((contactEntry) => { - const storedContact = storedContactsMap.get(contactEntry.contactId); - - // in case the contact id not found. - if (!storedContact) { - notFoundContactsIds.push(storedContact); - } - }); - if (notFoundContactsIds.length > 0) { - throw new ServiceError(ERRORS.CONTACTS_NOT_FOUND, '', { - contactsIds: notFoundContactsIds, - }); - } - } - } - - /** - * Retrieve the next journal number. - */ - getNextJournalNumber(tenantId: number): string { - return this.autoIncrementOrdersService.getNextTransactionNumber( - tenantId, - 'manual_journals' - ); - } - - /** - * Increment the manual journal number. - * @param {number} tenantId - */ - incrementNextJournalNumber(tenantId: number) { - return this.autoIncrementOrdersService.incrementSettingsNextNumber( - tenantId, - 'manual_journals' - ); - } - - /** - * Validates the manual journal number require. - * @param {string} journalNumber - */ - private validateJournalNoRequire(journalNumber: string) { - if (!journalNumber) { - throw new ServiceError(ERRORS.MANUAL_JOURNAL_NO_REQUIRED); - } - } - - /** - * Transform the new manual journal DTO to upsert graph operation. - * @param {IManualJournalDTO} manualJournalDTO - Manual jorunal DTO. - * @param {ISystemUser} authorizedUser - */ - private transformNewDTOToModel( - tenantId, - manualJournalDTO: IManualJournalDTO, - authorizedUser: ISystemUser, - tenantMetadata - ) { - const amount = sumBy(manualJournalDTO.entries, 'credit') || 0; - const date = moment(manualJournalDTO.date).format('YYYY-MM-DD'); - - // Retrieve the next manual journal number. - const autoNextNumber = this.getNextJournalNumber(tenantId); - - const journalNumber = manualJournalDTO.journalNumber || autoNextNumber; - - // Validate manual journal number require. - this.validateJournalNoRequire(journalNumber); - - return { - ...omit(manualJournalDTO, ['publish']), - ...(manualJournalDTO.publish - ? { publishedAt: moment().toMySqlDateTime() } - : {}), - amount, - currencyCode: tenantMetadata.baseCurrency, - date, - journalNumber, - userId: authorizedUser.id, - }; - } - - /** - * Transform the edit manual journal DTO to upsert graph operation. - * @param {IManualJournalDTO} manualJournalDTO - Manual jorunal DTO. - * @param {IManualJournal} oldManualJournal - */ - private transformEditDTOToModel( - manualJournalDTO: IManualJournalDTO, - oldManualJournal: IManualJournal - ) { - const amount = sumBy(manualJournalDTO.entries, 'credit') || 0; - const date = moment(manualJournalDTO.date).format('YYYY-MM-DD'); - - return { - id: oldManualJournal.id, - ...omit(manualJournalDTO, ['publish']), - ...(manualJournalDTO.publish && !oldManualJournal.publishedAt - ? { publishedAt: moment().toMySqlDateTime() } - : {}), - amount, - date, - }; - } - - /** - * Make journal entries. - * @param {number} tenantId - * @param {IManualJournalDTO} manualJournalDTO - * @param {ISystemUser} authorizedUser - */ - public async makeJournalEntries( - tenantId: number, - manualJournalDTO: IManualJournalDTO, - authorizedUser: ISystemUser - ): Promise<{ manualJournal: IManualJournal }> { - const { ManualJournal } = this.tenancy.models(tenantId); - - // - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - // Transformes the next DTO to model. - const manualJournalObj = this.transformNewDTOToModel( - tenantId, - manualJournalDTO, - authorizedUser, - tenant.metadata, - ); - // Validate the total credit should equals debit. - this.valdiateCreditDebitTotalEquals(manualJournalDTO); - - // Validate the contacts existance. - await this.validateContactsExistance(tenantId, manualJournalDTO); - - // Validate entries accounts existance. - await this.validateAccountsExistance(tenantId, manualJournalDTO); - - // Validate manual journal uniquiness on the storage. - await this.validateManualJournalNoUnique( - tenantId, - manualJournalObj.journalNumber - ); - // Validate accounts with contact type from the given config. - await this.dynamicValidateAccountsWithContactType( - tenantId, - manualJournalDTO.entries - ); - this.logger.info( - '[manual_journal] trying to save manual journal to the storage.', - { tenantId, manualJournalDTO } - ); - // Upsert the manual journal object. - const manualJournal = await ManualJournal.query().upsertGraph({ - ...manualJournalObj, - }); - // Triggers `onManualJournalCreated` event. - this.eventDispatcher.dispatch(events.manualJournals.onCreated, { - tenantId, - manualJournal, - manualJournalId: manualJournal.id, - }); - this.logger.info( - '[manual_journal] the manual journal inserted successfully.', - { tenantId } - ); - - return { manualJournal }; - } - - /** - * Edits jouranl entries. - * @param {number} tenantId - * @param {number} manualJournalId - * @param {IMakeJournalDTO} manualJournalDTO - * @param {ISystemUser} authorizedUser - */ - public async editJournalEntries( - tenantId: number, - manualJournalId: number, - manualJournalDTO: IManualJournalDTO, - authorizedUser: ISystemUser - ): Promise<{ - manualJournal: IManualJournal; - oldManualJournal: IManualJournal; - }> { - const { ManualJournal } = this.tenancy.models(tenantId); - - // Validates the manual journal existance on the storage. - const oldManualJournal = await this.getManualJournalOrThrowError( - tenantId, - manualJournalId - ); - // Transform manual journal DTO to model. - const manualJournalObj = this.transformEditDTOToModel( - manualJournalDTO, - oldManualJournal - ); - // Validates the total credit and debit to be equals. - this.valdiateCreditDebitTotalEquals(manualJournalDTO); - - // Validate the contacts existance. - await this.validateContactsExistance(tenantId, manualJournalDTO); - - // Validates entries accounts existance. - await this.validateAccountsExistance(tenantId, manualJournalDTO); - - // Validates the manual journal number uniquiness. - if (manualJournalDTO.journalNumber) { - await this.validateManualJournalNoUnique( - tenantId, - manualJournalDTO.journalNumber, - manualJournalId - ); - } - // Validate accounts with contact type from the given config. - await this.dynamicValidateAccountsWithContactType( - tenantId, - manualJournalDTO.entries - ); - - await ManualJournal.query().upsertGraph({ - ...manualJournalObj, - }); - // Retrieve the given manual journal with associated entries after modifications. - const manualJournal = await ManualJournal.query() - .findById(manualJournalId) - .withGraphFetched('entries'); - - // Triggers `onManualJournalEdited` event. - this.eventDispatcher.dispatch(events.manualJournals.onEdited, { - tenantId, - manualJournal, - oldManualJournal, - }); - return { manualJournal, oldManualJournal }; - } - - /** - * Deletes the given manual journal - * @param {number} tenantId - * @param {number} manualJournalId - * @return {Promise} - */ - public async deleteManualJournal( - tenantId: number, - manualJournalId: number - ): Promise<{ - oldManualJournal: IManualJournal; - }> { - const { ManualJournal, ManualJournalEntry } = this.tenancy.models(tenantId); - - // Validate the manual journal exists on the storage. - const oldManualJournal = await this.getManualJournalOrThrowError( - tenantId, - manualJournalId - ); - this.logger.info('[manual_journal] trying to delete the manual journal.', { - tenantId, - manualJournalId, - }); - // Deletes the manual journal entries. - await ManualJournalEntry.query() - .where('manual_journal_id', manualJournalId) - .delete(); - - // Deletes the manual journal transaction. - await ManualJournal.query().findById(manualJournalId).delete(); - - // Triggers `onManualJournalDeleted` event. - this.eventDispatcher.dispatch(events.manualJournals.onDeleted, { - tenantId, - manualJournalId, - oldManualJournal, - }); - this.logger.info( - '[manual_journal] the given manual journal deleted successfully.', - { tenantId, manualJournalId } - ); - - return { oldManualJournal }; - } - - /** - * Deletes the given manual journals. - * @param {number} tenantId - * @param {number[]} manualJournalsIds - * @return {Promise} - */ - public async deleteManualJournals( - tenantId: number, - manualJournalsIds: number[] - ): Promise<{ - oldManualJournals: IManualJournal[]; - }> { - const { ManualJournal, ManualJournalEntry } = this.tenancy.models(tenantId); - - // Validate the manual journals exist on the storage. - const oldManualJournals = await this.getManualJournalsOrThrowError( - tenantId, - manualJournalsIds - ); - this.logger.info('[manual_journal] trying to delete the manual journals.', { - tenantId, - manualJournalsIds, - }); - // Deletes the manual journal entries. - await ManualJournalEntry.query() - .whereIn('manual_journal_id', manualJournalsIds) - .delete(); - - // Deletes the manual journal transaction. - await ManualJournal.query().whereIn('id', manualJournalsIds).delete(); - - // Triggers `onManualJournalDeletedBulk` event. - this.eventDispatcher.dispatch(events.manualJournals.onDeletedBulk, { - tenantId, - manualJournalsIds, - }); - this.logger.info( - '[manual_journal] the given manual journals deleted successfully.', - { tenantId, manualJournalsIds } - ); - return { oldManualJournals }; - } - - /** - * Publish the given manual journals. - * @param {number} tenantId - * @param {number[]} manualJournalsIds - */ - public async publishManualJournals( - tenantId: number, - manualJournalsIds: number[] - ): Promise<{ - meta: { - alreadyPublished: number; - published: number; - total: number; - }; - }> { - const { ManualJournal } = this.tenancy.models(tenantId); - - // Retrieve manual journals or throw service error. - const oldManualJournals = await this.getManualJournalsOrThrowError( - tenantId, - manualJournalsIds - ); - // Filters the not published journals. - const notPublishedJournals = - this.getNonePublishedManualJournals(oldManualJournals); - // Filters the published journals. - const publishedJournals = - this.getPublishedManualJournals(oldManualJournals); - // Mappes the not-published journals to get id. - const notPublishedJournalsIds = map(notPublishedJournals, 'id'); - - this.logger.info('[manual_journal] trying to publish the manual journal.', { - tenantId, - manualJournalsIds, - }); - - if (notPublishedJournals.length > 0) { - // Mark the given manual journals as published. - await ManualJournal.query().whereIn('id', notPublishedJournalsIds).patch({ - publishedAt: moment().toMySqlDateTime(), - }); - } - // Triggers `onManualJournalPublishedBulk` event. - this.eventDispatcher.dispatch(events.manualJournals.onPublishedBulk, { - tenantId, - manualJournalsIds, - oldManualJournals, - }); - this.logger.info( - '[manual_journal] the given manula journal published successfully.', - { tenantId, manualJournalsIds } - ); - - return { - meta: { - alreadyPublished: publishedJournals.length, - published: notPublishedJournals.length, - total: oldManualJournals.length, - }, - }; - } - - /** - * Validates expenses is not already published before. - * @param {IManualJournal} manualJournal - */ - private validateManualJournalIsNotPublished(manualJournal: IManualJournal) { - if (manualJournal.publishedAt) { - throw new ServiceError(ERRORS.MANUAL_JOURNAL_ALREADY_PUBLISHED); - } - } - - /** - * Filters the not published manual jorunals. - * @param {IManualJournal[]} manualJournal - Manual journal. - * @return {IManualJournal[]} - */ - public getNonePublishedManualJournals( - manualJournals: IManualJournal[] - ): IManualJournal[] { - return manualJournals.filter((manualJournal) => !manualJournal.publishedAt); - } - - /** - * Filters the published manual journals. - * @param {IManualJournal[]} manualJournal - Manual journal. - * @return {IManualJournal[]} - */ - public getPublishedManualJournals( - manualJournals: IManualJournal[] - ): IManualJournal[] { - return manualJournals.filter((expense) => expense.publishedAt); - } - - /** - * Publish the given manual journal. - * @param {number} tenantId - Tenant id. - * @param {number} manualJournalId - Manual journal id. - */ - public async publishManualJournal( - tenantId: number, - manualJournalId: number - ): Promise { - const { ManualJournal } = this.tenancy.models(tenantId); - - const oldManualJournal = await this.getManualJournalOrThrowError( - tenantId, - manualJournalId - ); - this.logger.info('[manual_journal] trying to publish the manual journal.', { - tenantId, - manualJournalId, - }); - this.validateManualJournalIsNotPublished(oldManualJournal); - - // Mark the given manual journal as published. - await ManualJournal.query().findById(manualJournalId).patch({ - publishedAt: moment().toMySqlDateTime(), - }); - // Retrieve the manual journal with enrties after modification. - const manualJournal = await ManualJournal.query() - .findById(manualJournalId) - .withGraphFetched('entries'); - - // Triggers `onManualJournalPublishedBulk` event. - this.eventDispatcher.dispatch(events.manualJournals.onPublished, { - tenantId, - manualJournal, - manualJournalId, - oldManualJournal, - }); - this.logger.info( - '[manual_journal] the given manula journal published successfully.', - { tenantId, manualJournalId } - ); - } - - /** - * Parses filter DTO of the manual journals list. - * @param filterDTO - */ - private parseListFilterDTO(filterDTO) { - return R.compose(this.dynamicListService.parseStringifiedFilter)(filterDTO); - } - - /** - * Retrieve manual journals datatable list. - * @param {number} tenantId - - * @param {IManualJournalsFilter} filter - - */ - public async getManualJournals( - tenantId: number, - filterDTO: IManualJournalsFilter - ): Promise<{ - manualJournals: IManualJournal; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }> { - const { ManualJournal } = this.tenancy.models(tenantId); - - // Parses filter DTO. - const filter = this.parseListFilterDTO(filterDTO); - - // Dynamic service. - const dynamicService = await this.dynamicListService.dynamicList( - tenantId, - ManualJournal, - filter - ); - this.logger.info('[manual_journals] trying to get manual journals list.', { - tenantId, - filter, - }); - const { results, pagination } = await ManualJournal.query() - .onBuild((builder) => { - dynamicService.buildQuery()(builder); - builder.withGraphFetched('entries.account'); - }) - .pagination(filter.page - 1, filter.pageSize); - - return { - manualJournals: this.manualJournalTransformer.transform(results), - pagination, - filterMeta: dynamicService.getResponseMeta(), - }; - } - - /** - * Retrieve manual journal details with assocaited journal transactions. - * @param {number} tenantId - * @param {number} manualJournalId - */ - public async getManualJournal(tenantId: number, manualJournalId: number) { - const { ManualJournal } = this.tenancy.models(tenantId); - - await this.getManualJournalOrThrowError(tenantId, manualJournalId); - - this.logger.info( - '[manual_journals] trying to get specific manual journal.', - { tenantId, manualJournalId } - ); - const manualJournal = await ManualJournal.query() - .findById(manualJournalId) - .withGraphFetched('entries.account') - .withGraphFetched('entries.contact') - .withGraphFetched('transactions') - .withGraphFetched('media'); - - return this.manualJournalTransformer.transform(manualJournal); - } - - /** - * Reverts the manual journal journal entries. - * @param {number} tenantId - * @param {number|number[]} manualJournalId - * @return {Promise} - */ - public async revertJournalEntries( - tenantId: number, - manualJournalId: number | number[] - ): Promise { - this.logger.info('[manual_journal] trying to revert journal entries.', { - tenantId, - manualJournalId, - }); - return this.journalService.revertJournalTransactions( - tenantId, - manualJournalId, - 'Journal' - ); - } - - /** - * Write manual journal entries. - * @param {number} tenantId - * @param {number} manualJournalId - * @param {IManualJournal|null} manualJournalObj - * @param {boolean} override - */ - public async writeJournalEntries( - tenantId: number, - manualJorunal: IManualJournal | IManualJournal[], - override: Boolean = false - ) { - const journal = new JournalPoster(tenantId); - const journalCommands = new JournalCommands(journal); - - const manualJournals = Array.isArray(manualJorunal) - ? manualJorunal - : [manualJorunal]; - const manualJournalsIds = map(manualJournals, 'id'); - - if (override) { - this.logger.info('[manual_journal] trying to revert journal entries.', { - tenantId, - manualJorunal, - }); - await journalCommands.revertJournalEntries(manualJournalsIds, 'Journal'); - } - manualJournals.forEach((manualJournal) => { - journalCommands.manualJournal(manualJournal); - }); - this.logger.info('[manual_journal] trying to save journal entries.', { - tenantId, - manualJorunal, - }); - await Promise.all([ - journal.saveBalance(), - journal.deleteEntries(), - journal.saveEntries(), - journal.saveContactsBalance(), - ]); - this.logger.info( - '[manual_journal] the journal entries saved successfully.', - { tenantId, manualJournalId: manualJorunal.id } - ); - } -} diff --git a/server/src/services/ManualJournals/constants.ts b/server/src/services/ManualJournals/constants.ts deleted file mode 100644 index c2c93b21f..000000000 --- a/server/src/services/ManualJournals/constants.ts +++ /dev/null @@ -1,28 +0,0 @@ -export const ERRORS = { - NOT_FOUND: 'manual_journal_not_found', - CREDIT_DEBIT_NOT_EQUAL_ZERO: 'credit_debit_not_equal_zero', - CREDIT_DEBIT_NOT_EQUAL: 'credit_debit_not_equal', - ACCCOUNTS_IDS_NOT_FOUND: 'acccounts_ids_not_found', - JOURNAL_NUMBER_EXISTS: 'journal_number_exists', - ENTRIES_SHOULD_ASSIGN_WITH_CONTACT: 'ENTRIES_SHOULD_ASSIGN_WITH_CONTACT', - CONTACTS_NOT_FOUND: 'contacts_not_found', - ENTRIES_CONTACTS_NOT_FOUND: 'ENTRIES_CONTACTS_NOT_FOUND', - MANUAL_JOURNAL_ALREADY_PUBLISHED: 'MANUAL_JOURNAL_ALREADY_PUBLISHED', - MANUAL_JOURNAL_NO_REQUIRED: 'MANUAL_JOURNAL_NO_REQUIRED' -}; - -export const CONTACTS_CONFIG = [ - { - accountBySlug: 'accounts-receivable', - contactService: 'customer', - assignRequired: true, - }, - { - accountBySlug: 'accounts-payable', - contactService: 'vendor', - assignRequired: true, - }, -]; - - -export const DEFAULT_VIEWS = []; \ No newline at end of file diff --git a/server/src/services/Media/MediaService.ts b/server/src/services/Media/MediaService.ts deleted file mode 100644 index 18d22e02c..000000000 --- a/server/src/services/Media/MediaService.ts +++ /dev/null @@ -1,223 +0,0 @@ -import fs from 'fs'; -import { Service, Inject } from 'typedi'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { ServiceError } from "exceptions"; -import { IMedia, IMediaService } from 'interfaces'; -import { difference } from 'lodash'; - -const fsPromises = fs.promises; - -const ERRORS = { - MINETYPE_NOT_SUPPORTED: 'MINETYPE_NOT_SUPPORTED', - MEDIA_NOT_FOUND: 'MEDIA_NOT_FOUND', - MODEL_NAME_HAS_NO_MEDIA: 'MODEL_NAME_HAS_NO_MEDIA', - MODEL_ID_NOT_FOUND: 'MODEL_ID_NOT_FOUND', - MEDIA_IDS_NOT_FOUND: 'MEDIA_IDS_NOT_FOUND', - MEDIA_LINK_EXISTS: 'MEDIA_LINK_EXISTS' -} -const publicPath = 'storage/app/public/'; -const attachmentsMimes = ['image/png', 'image/jpeg']; - -@Service() -export default class MediaService implements IMediaService { - @Inject('logger') - logger: any; - - @Inject() - tenancy: TenancyService; - - @Inject('repositories') - sysRepositories: any; - - /** - * Retrieve media model or throw not found error - * @param tenantId - * @param mediaId - */ - async getMediaOrThrowError(tenantId: number, mediaId: number) { - const { Media } = this.tenancy.models(tenantId); - const foundMedia = await Media.query().findById(mediaId); - - if (!foundMedia) { - throw new ServiceError(ERRORS.MEDIA_NOT_FOUND); - } - return foundMedia; - } - - /** - * Retreive media models by the given ids or throw not found error. - * @param {number} tenantId - * @param {number[]} mediaIds - */ - async getMediaByIdsOrThrowError(tenantId: number, mediaIds: number[]) { - const { Media } = this.tenancy.models(tenantId); - const foundMedia = await Media.query().whereIn('id', mediaIds); - - const storedMediaIds = foundMedia.map((m) => m.id); - const notFoundMedia = difference(mediaIds, storedMediaIds); - - if (notFoundMedia.length > 0) { - throw new ServiceError(ERRORS.MEDIA_IDS_NOT_FOUND); - } - return foundMedia; - } - - /** - * Validates the model name and id. - * @param {number} tenantId - * @param {string} modelName - * @param {number} modelId - */ - async validateModelNameAndIdExistance(tenantId: number, modelName: string, modelId: number) { - const models = this.tenancy.models(tenantId); - this.logger.info('[media] trying to validate model name and id.', { tenantId, modelName, modelId }); - - if (!models[modelName]) { - this.logger.info('[media] model name not found.', { tenantId, modelName, modelId }); - throw new ServiceError(ERRORS.MODEL_NAME_HAS_NO_MEDIA); - } - if (!models[modelName].media) { - this.logger.info('[media] model is not media-able.', { tenantId, modelName, modelId }); - throw new ServiceError(ERRORS.MODEL_NAME_HAS_NO_MEDIA); - } - - const foundModel = await models[modelName].query().findById(modelId); - - if (!foundModel) { - this.logger.info('[media] model is not found.', { tenantId, modelName, modelId }); - throw new ServiceError(ERRORS.MODEL_ID_NOT_FOUND); - } - } - - /** - * Validates the media existance. - * @param {number} tenantId - * @param {number} mediaId - * @param {number} modelId - * @param {string} modelName - */ - async validateMediaLinkExistance( - tenantId: number, - mediaId: number, - modelId: number, - modelName: string - ) { - const { MediaLink } = this.tenancy.models(tenantId); - - const foundMediaLinks = await MediaLink.query() - .where('media_id', mediaId) - .where('model_id', modelId) - .where('model_name', modelName); - - if (foundMediaLinks.length > 0) { - throw new ServiceError(ERRORS.MEDIA_LINK_EXISTS); - } - } - - /** - * Links the given media to the specific media-able model resource. - * @param {number} tenantId - * @param {number} mediaId - * @param {number} modelId - * @param {string} modelType - */ - async linkMedia(tenantId: number, mediaId: number, modelId: number, modelName: string) { - this.logger.info('[media] trying to link media.', { tenantId, mediaId, modelId, modelName }); - const { MediaLink } = this.tenancy.models(tenantId); - await this.validateMediaLinkExistance(tenantId, mediaId, modelId, modelName); - - const media = await this.getMediaOrThrowError(tenantId, mediaId); - await this.validateModelNameAndIdExistance(tenantId, modelName, modelId); - - await MediaLink.query().insert({ mediaId, modelId, modelName }); - } - - /** - * Retrieve media metadata. - * @param {number} tenantId - Tenant id. - * @param {number} mediaId - Media id. - * @return {Promise} - */ - public async getMedia(tenantId: number, mediaId: number): Promise { - this.logger.info('[media] try to get media.', { tenantId, mediaId }); - return this.getMediaOrThrowError(tenantId, mediaId); - } - - /** - * Deletes the given media. - * @param {number} tenantId - * @param {number} mediaId - * @return {Promise} - */ - public async deleteMedia(tenantId: number, mediaId: number|number[]): Promise { - const { Media, MediaLink } = this.tenancy.models(tenantId); - const { tenantRepository } = this.sysRepositories; - - this.logger.info('[media] trying to delete media.', { tenantId, mediaId }); - - const mediaIds = Array.isArray(mediaId) ? mediaId : [mediaId]; - - const tenant = await tenantRepository.findOneById(tenantId); - const media = await this.getMediaByIdsOrThrowError(tenantId, mediaIds); - - const tenantPath = `${publicPath}${tenant.organizationId}`; - const unlinkOpers = []; - - media.forEach((mediaModel) => { - const oper = fsPromises.unlink(`${tenantPath}/${mediaModel.attachmentFile}`); - unlinkOpers.push(oper); - }); - await Promise.all(unlinkOpers) - .then((resolved) => { - resolved.forEach(() => { - this.logger.info('[attachment] file has been deleted.'); - }); - }) - .catch((errors) => { - this.logger.info('[attachment] Delete item attachment file delete failed.', { errors }); - }); - await MediaLink.query().whereIn('media_id', mediaIds).delete(); - await Media.query().whereIn('id', mediaIds).delete(); - } - - /** - * Uploads the given attachment. - * @param {number} tenantId - - * @param {any} attachment - - * @return {Promise} - */ - public async upload(tenantId: number, attachment: any, modelName?: string, modelId?: number): Promise { - const { tenantRepository } = this.sysRepositories; - const { Media } = this.tenancy.models(tenantId); - - this.logger.info('[media] trying to upload media.', { tenantId }); - - const tenant = await tenantRepository.findOneById(tenantId); - const fileName = `${attachment.md5}.png`; - - // Validate the attachment. - if (attachment && attachmentsMimes.indexOf(attachment.mimetype) === -1) { - throw new ServiceError(ERRORS.MINETYPE_NOT_SUPPORTED); - } - if (modelName && modelId) { - await this.validateModelNameAndIdExistance(tenantId, modelName, modelId); - } - try { - await attachment.mv(`${publicPath}${tenant.organizationId}/${fileName}`); - this.logger.info('[attachment] uploaded successfully'); - } catch (error) { - this.logger.info('[attachment] uploading failed.', { error }); - } - const media = await Media.query().insertGraph({ - attachmentFile: `${fileName}`, - ...(modelName && modelId) ? { - links: [{ - modelName, - modelId, - }] - } : {}, - }); - this.logger.info('[media] uploaded successfully.', { tenantId, fileName, modelName, modelId }); - return media; - } -} \ No newline at end of file diff --git a/server/src/services/Miscellaneous/DateFormats/constants.ts b/server/src/services/Miscellaneous/DateFormats/constants.ts deleted file mode 100644 index 5ae4630c9..000000000 --- a/server/src/services/Miscellaneous/DateFormats/constants.ts +++ /dev/null @@ -1,11 +0,0 @@ -export const DATE_FORMATS = [ - 'MM/DD/YY', - 'DD/MM/YY', - 'YY/MM/DD', - 'MM/DD/yyyy', - 'DD/MM/yyyy', - 'yyyy/MM/DD', - 'DD MMM YYYY', - 'DD MMMM YYYY', - 'MMMM DD, YYYY', -]; diff --git a/server/src/services/Miscellaneous/DateFormats/index.ts b/server/src/services/Miscellaneous/DateFormats/index.ts deleted file mode 100644 index 2a5bef6d3..000000000 --- a/server/src/services/Miscellaneous/DateFormats/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import moment from 'moment-timezone'; -import { Service } from 'typedi'; -import { DATE_FORMATS } from './constants'; - -@Service() -export default class DateFormatsService { - getDateFormats() { - return DATE_FORMATS.map((dateFormat) => { - return { - label: `${moment().format(dateFormat)} [${dateFormat}]`, - key: dateFormat, - }; - }); - } -} diff --git a/server/src/services/Miscellaneous/MiscService.ts b/server/src/services/Miscellaneous/MiscService.ts deleted file mode 100644 index e24a3b3d3..000000000 --- a/server/src/services/Miscellaneous/MiscService.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Service } from 'typedi'; - -@Service() -export default class MiscService { - getDateFormats() { - return []; - } -} diff --git a/server/src/services/Organization/OrganizationBaseCurrencyLocking.ts b/server/src/services/Organization/OrganizationBaseCurrencyLocking.ts deleted file mode 100644 index 971854632..000000000 --- a/server/src/services/Organization/OrganizationBaseCurrencyLocking.ts +++ /dev/null @@ -1,142 +0,0 @@ -import Bluebird from 'bluebird'; -import { Inject, Service } from 'typedi'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { TimeoutSettings } from 'puppeteer'; - -@Service() -export default class OrganizationBaseCurrencyLocking { - @Inject() - tenancy: HasTenancyService; - - async shouldHasAlteastOne(Model) { - const model = await Model.query().limit(1); - return model.length > 0; - } - - /** - * Validate the invoice has atleast once transaction. - * @param tenantId - */ - async validateInvoiceTransaction(tenantId: number) { - const { SaleInvoice } = this.tenancy.models(tenantId); - return this.shouldHasAlteastOne(SaleInvoice); - } - - /** - * Validate the invoice has atleast once transaction. - * @param tenantId - */ - async validateEstimateTransaction(tenantId: number) { - const { SaleEstimate } = this.tenancy.models(tenantId); - return this.shouldHasAlteastOne(SaleEstimate); - } - - /** - * Validate the invoice has atleast once transaction. - * @param tenantId - */ - async validateReceiptTransaction(tenantId: number) { - const { SaleReceipt } = this.tenancy.models(tenantId); - return this.shouldHasAlteastOne(SaleReceipt); - } - - /** - * Validate the invoice has atleast once transaction. - * @param tenantId - */ - async validatePaymentReceiveTransaction(tenantId: number) { - const { PaymentReceive } = this.tenancy.models(tenantId); - return this.shouldHasAlteastOne(PaymentReceive); - } - - /** - * Validate the invoice has atleast once transaction. - * @param tenantId - */ - async validatePaymentMadeTransaction(tenantId: number) { - const { BillPayment } = this.tenancy.models(tenantId); - return this.shouldHasAlteastOne(BillPayment); - } - - /** - * Validate the invoice has atleast once transaction. - * @param tenantId - */ - async validateBillTransaction(tenantId: number) { - const { Bill } = this.tenancy.models(tenantId); - return this.shouldHasAlteastOne(Bill); - } - - async validateJournalTransaction(tenantId: number) { - const { ManualJournal } = this.tenancy.models(tenantId); - return this.shouldHasAlteastOne(ManualJournal); - } - - async validateAccountTransaction(tenantId: number) { - const { AccountTransaction } = this.tenancy.models(tenantId); - return this.shouldHasAlteastOne(AccountTransaction); - } - - /** - * - * @param serviceName - * @param callback - * @returns - */ - validateService(serviceName, callback) { - return callback.then((result) => (result ? serviceName : false)); - } - - getValidators(tenantId: number) { - return [ - { - serviceName: 'invoice', - validator: this.validateInvoiceTransaction(tenantId), - }, - { - serviceName: 'receipt', - validator: this.validateReceiptTransaction(tenantId), - }, - { - serviceName: 'bill', - validator: this.validateBillTransaction(tenantId), - }, - { - serviceName: 'estimate', - validator: this.validateEstimateTransaction(tenantId), - }, - { - serviceName: 'payment-receive', - validator: this.validatePaymentReceiveTransaction(tenantId), - }, - { - serviceName: 'payment-made', - validator: this.validatePaymentMadeTransaction(tenantId), - }, - { - serviceName: 'manual-journal', - validator: this.validateJournalTransaction(tenantId), - }, - { - service: 'transaction', - validator: this.validateAccountTransaction(tenantId), - }, - ]; - } - - /** - * - * @param tenantId - * @returns - */ - async isBaseCurrencyMutateLocked(tenantId: number): Promise { - const validators = this.getValidators(tenantId); - - const asyncValidators = validators.map((validator) => - this.validateService(validator.serviceName, validator.validator) - ); - const results = await Bluebird.all(asyncValidators); - - return results.filter((result) => result); - } -} diff --git a/server/src/services/Organization/constants.ts b/server/src/services/Organization/constants.ts deleted file mode 100644 index 74e30d0ca..000000000 --- a/server/src/services/Organization/constants.ts +++ /dev/null @@ -1,34 +0,0 @@ -import currencies from 'js-money/lib/currency'; - -export const DATE_FORMATS = [ - 'MM.dd.yy', - 'dd.MM.yy', - 'yy.MM.dd', - 'MM.dd.yyyy', - 'dd.MM.yyyy', - 'yyyy.MM.dd', - 'MM/DD/YYYY', - 'M/D/YYYY', - 'dd MMM YYYY', - 'dd MMMM YYYY', - 'MMMM dd, YYYY', - 'EEE, MMMM dd, YYYY', -]; -export const ACCEPTED_CURRENCIES = Object.keys(currencies); - -export const MONTHS = [ - 'january', - 'february', - 'march', - 'april', - 'may', - 'june', - 'july', - 'august', - 'september', - 'october', - 'november', - 'december', -]; - -export const ACCEPTED_LOCALES = ['en', 'ar']; diff --git a/server/src/services/Organization/index.ts b/server/src/services/Organization/index.ts deleted file mode 100644 index 92cb75660..000000000 --- a/server/src/services/Organization/index.ts +++ /dev/null @@ -1,267 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { ObjectId } from 'mongodb'; -import { defaultTo } from 'lodash'; -import { ServiceError } from 'exceptions'; -import { - IOrganizationBuildDTO, - IOrganizationUpdateDTO, - ITenant, -} from 'interfaces'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import events from 'subscribers/events'; -import TenantsManager from 'services/Tenancy/TenantsManager'; -import { Tenant } from 'system/models'; -import OrganizationBaseCurrencyLocking from './OrganizationBaseCurrencyLocking'; - -const ERRORS = { - TENANT_NOT_FOUND: 'tenant_not_found', - TENANT_ALREADY_BUILT: 'TENANT_ALREADY_BUILT', - TENANT_ALREADY_SEEDED: 'tenant_already_seeded', - TENANT_DB_NOT_BUILT: 'tenant_db_not_built', - TENANT_IS_BUILDING: 'TENANT_IS_BUILDING', - BASE_CURRENCY_MUTATE_LOCKED: 'BASE_CURRENCY_MUTATE_LOCKED', -}; - -@Service() -export default class OrganizationService { - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject('logger') - logger: any; - - @Inject('repositories') - sysRepositories: any; - - @Inject() - tenantsManager: TenantsManager; - - @Inject('agenda') - agenda: any; - - @Inject() - baseCurrencyMutateLocking: OrganizationBaseCurrencyLocking; - - /** - * Builds the database schema and seed data of the given organization id. - * @param {srting} organizationId - * @return {Promise} - */ - public async build(tenantId: number): Promise { - const tenant = await this.getTenantOrThrowError(tenantId); - - // Throw error if the tenant is already initialized. - this.throwIfTenantInitizalized(tenant); - - // Drop the database if is already exists. - await this.tenantsManager.dropDatabaseIfExists(tenant); - - // Creates a new database. - await this.tenantsManager.createDatabase(tenant); - - // Migrate the tenant. - await this.tenantsManager.migrateTenant(tenant); - - // Migrated tenant. - const migratedTenant = await tenant.$query(); - - // Seed tenant. - await this.tenantsManager.seedTenant(migratedTenant); - - // Markes the tenant as completed builing. - await Tenant.markAsBuilt(tenantId); - await Tenant.markAsBuildCompleted(tenantId); - - // Throws `onOrganizationBuild` event. - this.eventDispatcher.dispatch(events.organization.build, { - tenantId: tenant.id, - }); - } - - /** - * - * @param tenantId - * @param buildDTO - * @returns - */ - async buildRunJob(tenantId: number, buildDTO: IOrganizationBuildDTO) { - const tenant = await this.getTenantOrThrowError(tenantId); - - // Throw error if the tenant is already initialized. - this.throwIfTenantInitizalized(tenant); - - // Throw error if tenant is currently building. - this.throwIfTenantIsBuilding(tenant); - - // Transformes build DTO object. - const transformedBuildDTO = this.transformBuildDTO(buildDTO); - - // Saves the tenant metadata. - await tenant.saveMetadata(transformedBuildDTO); - - // Send welcome mail to the user. - const jobMeta = await this.agenda.now('organization-setup', { - tenantId, - buildDTO, - }); - // Transformes the mangodb id to string. - const jobId = new ObjectId(jobMeta.attrs._id).toString(); - - // Markes the tenant as currently building. - await Tenant.markAsBuilding(tenantId, jobId); - - return { - nextRunAt: jobMeta.attrs.nextRunAt, - jobId: jobMeta.attrs._id, - }; - } - - /** - * Unlocks tenant build run job. - * @param {number} tenantId - * @param {number} jobId - */ - public async revertBuildRunJob(tenantId: number, jobId: string) { - await Tenant.markAsBuildCompleted(tenantId, jobId); - } - - /** - * Retrieve the current organization metadata. - * @param {number} tenantId - * @returns {Promise} - */ - public async currentOrganization(tenantId: number): Promise { - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('subscriptions') - .withGraphFetched('metadata'); - - this.throwIfTenantNotExists(tenant); - - return tenant; - } - - /** - * Retrieve organization ability of mutate base currency - * @param {number} tenantId - * @returns - */ - public mutateBaseCurrencyAbility(tenantId: number) { - return this.baseCurrencyMutateLocking.isBaseCurrencyMutateLocked(tenantId); - } - - /** - * Updates organization information. - * @param {ITenant} tenantId - * @param {IOrganizationUpdateDTO} organizationDTO - */ - public async updateOrganization( - tenantId: number, - organizationDTO: IOrganizationUpdateDTO - ): Promise { - const tenant = await Tenant.query() - .findById(tenantId) - .withGraphFetched('metadata'); - - // Throw error if the tenant not exists. - this.throwIfTenantNotExists(tenant); - - // Validate organization transactions before mutate base currency. - await this.validateMutateBaseCurrency( - tenant, - organizationDTO.baseCurrency, - tenant.metadata?.baseCurrency - ); - await tenant.saveMetadata(organizationDTO); - } - - /** - * Transformes build DTO object. - * @param {IOrganizationBuildDTO} buildDTO - * @returns {IOrganizationBuildDTO} - */ - private transformBuildDTO( - buildDTO: IOrganizationBuildDTO - ): IOrganizationBuildDTO { - return { - ...buildDTO, - dateFormat: defaultTo(buildDTO.dateFormat, 'DD/MM/yyyy'), - }; - } - - /** - * Throw base currency mutate locked error. - */ - private throwBaseCurrencyMutateLocked() { - throw new ServiceError(ERRORS.BASE_CURRENCY_MUTATE_LOCKED); - } - - /** - * Validate mutate base currency ability. - * @param {Tenant} tenant - - * @param {string} newBaseCurrency - - * @param {string} oldBaseCurrency - - */ - private async validateMutateBaseCurrency( - tenant: Tenant, - newBaseCurrency: string, - oldBaseCurrency: string - ) { - if (tenant.isReady && newBaseCurrency !== oldBaseCurrency) { - const isBaseCurrencyMutateLocked = - await this.baseCurrencyMutateLocking.isBaseCurrencyMutateLocked( - tenant.id - ); - - if (isBaseCurrencyMutateLocked.length > 0) { - this.throwBaseCurrencyMutateLocked(); - } - } - } - - /** - * Throws error in case the given tenant is undefined. - * @param {ITenant} tenant - */ - private throwIfTenantNotExists(tenant: ITenant) { - if (!tenant) { - throw new ServiceError(ERRORS.TENANT_NOT_FOUND); - } - } - - /** - * Throws error in case the given tenant is already initialized. - * @param {ITenant} tenant - */ - private throwIfTenantInitizalized(tenant: ITenant) { - if (tenant.builtAt) { - throw new ServiceError(ERRORS.TENANT_ALREADY_BUILT); - } - } - - /** - * Throw error if the tenant is building. - * @param {ITenant} tenant - */ - private throwIfTenantIsBuilding(tenant) { - if (tenant.buildJobId) { - throw new ServiceError(ERRORS.TENANT_IS_BUILDING); - } - } - - /** - * Retrieve tenant of throw not found error. - * @param {number} tenantId - - */ - async getTenantOrThrowError(tenantId: number): Promise { - const tenant = await Tenant.query().findById(tenantId); - - if (!tenant) { - throw new ServiceError(ERRORS.TENANT_NOT_FOUND); - } - return tenant; - } -} diff --git a/server/src/services/PDF/PdfService.ts b/server/src/services/PDF/PdfService.ts deleted file mode 100644 index 04a0a316f..000000000 --- a/server/src/services/PDF/PdfService.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Service } from 'typedi'; -import puppeteer from 'puppeteer'; -import config from 'config'; - -@Service() -export default class PdfService { - - /** - * Pdf document. - * @param content - * @returns - */ - async pdfDocument(content: string) { - const browser = await puppeteer.connect({ - browserWSEndpoint: config.puppeteer.browserWSEndpoint, - }); - const page = await browser.newPage(); - await page.setContent(content); - - const pdf = await page.pdf({ format: 'a4' }); - - await browser.close(); - - return pdf; - } -} diff --git a/server/src/services/Payment/License.ts b/server/src/services/Payment/License.ts deleted file mode 100644 index c56325a44..000000000 --- a/server/src/services/Payment/License.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { Service, Container, Inject } from 'typedi'; -import cryptoRandomString from 'crypto-random-string'; -import { times } from 'lodash'; -import { License, Plan } from 'system/models'; -import { ILicense, ISendLicenseDTO } from 'interfaces'; -import LicenseMailMessages from 'services/Payment/LicenseMailMessages'; -import LicenseSMSMessages from 'services/Payment/LicenseSMSMessages'; -import { ServiceError } from 'exceptions'; - -const ERRORS = { - PLAN_NOT_FOUND: 'PLAN_NOT_FOUND', - LICENSE_NOT_FOUND: 'LICENSE_NOT_FOUND', - LICENSE_ALREADY_DISABLED: 'LICENSE_ALREADY_DISABLED', - NO_AVALIABLE_LICENSE_CODE: 'NO_AVALIABLE_LICENSE_CODE', -}; - -@Service() -export default class LicenseService { - @Inject() - smsMessages: LicenseSMSMessages; - - @Inject() - mailMessages: LicenseMailMessages; - - /** - * Validate the plan existance on the storage. - * @param {number} tenantId - - * @param {string} planSlug - Plan slug. - */ - private async getPlanOrThrowError(planSlug: string) { - const foundPlan = await Plan.query().where('slug', planSlug).first(); - - if (!foundPlan) { - throw new ServiceError(ERRORS.PLAN_NOT_FOUND); - } - return foundPlan; - } - - /** - * Valdiate the license existance on the storage. - * @param {number} licenseId - License id. - */ - private async getLicenseOrThrowError(licenseId: number) { - const foundLicense = await License.query().findById(licenseId); - - if (!foundLicense) { - throw new ServiceError(ERRORS.LICENSE_NOT_FOUND); - } - return foundLicense; - } - - /** - * Validates whether the license id is disabled. - * @param {ILicense} license - */ - private validateNotDisabledLicense(license: ILicense) { - if (license.disabledAt) { - throw new ServiceError(ERRORS.LICENSE_ALREADY_DISABLED); - } - } - - /** - * Generates the license code in the given period. - * @param {number} licensePeriod - * @return {Promise} - */ - public async generateLicense( - licensePeriod: number, - periodInterval: string = 'days', - planSlug: string - ): ILicense { - let licenseCode: string; - let repeat: boolean = true; - - // Retrieve plan or throw not found error. - const plan = await this.getPlanOrThrowError(planSlug); - - while (repeat) { - licenseCode = cryptoRandomString({ length: 10, type: 'numeric' }); - const foundLicenses = await License.query().where( - 'license_code', - licenseCode - ); - - if (foundLicenses.length === 0) { - repeat = false; - } - } - return License.query().insert({ - licenseCode, - licensePeriod, - periodInterval, - planId: plan.id, - }); - } - - /** - * Generates licenses. - * @param {number} loop - * @param {number} licensePeriod - * @param {string} periodInterval - * @param {number} planId - */ - public async generateLicenses( - loop = 1, - licensePeriod: number, - periodInterval: string = 'days', - planSlug: string - ) { - const asyncOpers: Promise[] = []; - - times(loop, () => { - const generateOper = this.generateLicense( - licensePeriod, - periodInterval, - planSlug - ); - asyncOpers.push(generateOper); - }); - return Promise.all(asyncOpers); - } - - /** - * Disables the given license id on the storage. - * @param {string} licenseSlug - License slug. - * @return {Promise} - */ - public async disableLicense(licenseId: number) { - const license = await this.getLicenseOrThrowError(licenseId); - - this.validateNotDisabledLicense(license); - - return License.markLicenseAsDisabled(license.id, 'id'); - } - - /** - * Deletes the given license id from the storage. - * @param licenseSlug {string} - License slug. - */ - public async deleteLicense(licenseSlug: string) { - const license = await this.getPlanOrThrowError(licenseSlug); - - return License.query().where('id', license.id).delete(); - } - - /** - * Sends license code to the given customer via SMS or mail message. - * @param {string} licenseCode - License code. - * @param {string} phoneNumber - Phone number. - * @param {string} email - Email address. - */ - public async sendLicenseToCustomer(sendLicense: ISendLicenseDTO) { - const agenda = Container.get('agenda'); - const { phoneNumber, email, period, periodInterval } = sendLicense; - - // Retreive plan details byt the given plan slug. - const plan = await this.getPlanOrThrowError(sendLicense.planSlug); - - const license = await License.query() - .modify('filterActiveLicense') - .where('license_period', period) - .where('period_interval', periodInterval) - .where('plan_id', plan.id) - .first(); - - if (!license) { - throw new ServiceError(ERRORS.NO_AVALIABLE_LICENSE_CODE) - } - // Mark the license as used. - await License.markLicenseAsSent(license.licenseCode); - - if (sendLicense.email) { - await agenda.schedule('1 second', 'send-license-via-email', { - licenseCode: license.licenseCode, - email, - }); - } - if (phoneNumber) { - await agenda.schedule('1 second', 'send-license-via-phone', { - licenseCode: license.licenseCode, - phoneNumber, - }); - } - } -} diff --git a/server/src/services/Payment/LicenseMailMessages.ts b/server/src/services/Payment/LicenseMailMessages.ts deleted file mode 100644 index 82088d0aa..000000000 --- a/server/src/services/Payment/LicenseMailMessages.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Container } from 'typedi'; -import Mail from 'lib/Mail'; -import config from 'config'; -export default class SubscriptionMailMessages { - /** - * Send license code to the given mail address. - * @param {string} licenseCode - * @param {email} email - */ - public async sendMailLicense(licenseCode: string, email: string) { - const Logger = Container.get('logger'); - - const mail = new Mail() - .setView('mail/LicenseReceive.html') - .setSubject('Bigcapital - License code') - .setTo(email) - .setData({ - licenseCode, - successEmail: config.customerSuccess.email, - successPhoneNumber: config.customerSuccess.phoneNumber, - }); - - await mail.send(); - Logger.info('[license_mail] sent successfully.'); - } -} \ No newline at end of file diff --git a/server/src/services/Payment/LicensePaymentMethod.ts b/server/src/services/Payment/LicensePaymentMethod.ts deleted file mode 100644 index 584d9d162..000000000 --- a/server/src/services/Payment/LicensePaymentMethod.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { License } from 'system/models'; -import PaymentMethod from 'services/Payment/PaymentMethod'; -import { Plan } from 'system/models'; -import { IPaymentMethod, ILicensePaymentModel } from 'interfaces'; -import { - PaymentInputInvalid, - PaymentAmountInvalidWithPlan, - VoucherCodeRequired, -} from 'exceptions'; - -export default class LicensePaymentMethod - extends PaymentMethod - implements IPaymentMethod -{ - /** - * Payment subscription of organization via license code. - * @param {ILicensePaymentModel} licensePaymentModel - - */ - public async payment(licensePaymentModel: ILicensePaymentModel, plan: Plan) { - this.validateLicensePaymentModel(licensePaymentModel); - - const license = await this.getLicenseOrThrowInvalid(licensePaymentModel); - this.validatePaymentAmountWithPlan(license, plan); - - // Mark the license code as used. - return License.markLicenseAsUsed(licensePaymentModel.licenseCode); - } - - /** - * Validates the license code activation on the storage. - * @param {ILicensePaymentModel} licensePaymentModel - - */ - private async getLicenseOrThrowInvalid( - licensePaymentModel: ILicensePaymentModel - ) { - const foundLicense = await License.query() - .modify('filterActiveLicense') - .where('license_code', licensePaymentModel.licenseCode) - .first(); - - if (!foundLicense) { - throw new PaymentInputInvalid(); - } - return foundLicense; - } - - /** - * Validates the payment amount with given plan price. - * @param {License} license - * @param {Plan} plan - */ - private validatePaymentAmountWithPlan(license: License, plan: Plan) { - if (license.planId !== plan.id) { - throw new PaymentAmountInvalidWithPlan(); - } - } - - /** - * Validate voucher payload. - * @param {ILicensePaymentModel} licenseModel - - */ - private validateLicensePaymentModel(licenseModel: ILicensePaymentModel) { - if (!licenseModel || !licenseModel.licenseCode) { - throw new VoucherCodeRequired(); - } - } -} diff --git a/server/src/services/Payment/LicenseSMSMessages.ts b/server/src/services/Payment/LicenseSMSMessages.ts deleted file mode 100644 index 022ded1b4..000000000 --- a/server/src/services/Payment/LicenseSMSMessages.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Container, Inject } from 'typedi'; -import SMSClient from 'services/SMSClient'; - -export default class SubscriptionSMSMessages { - @Inject('SMSClient') - smsClient: SMSClient; - - /** - * Sends license code to the given phone number via SMS message. - * @param {string} phoneNumber - * @param {string} licenseCode - */ - public async sendLicenseSMSMessage(phoneNumber: string, licenseCode: string) { - const message: string = `Your license card number: ${licenseCode}. If you need any help please contact us. Bigcapital.`; - return this.smsClient.sendMessage(phoneNumber, message); - } -} \ No newline at end of file diff --git a/server/src/services/Payment/PaymentMethod.ts b/server/src/services/Payment/PaymentMethod.ts deleted file mode 100644 index 1f6347d43..000000000 --- a/server/src/services/Payment/PaymentMethod.ts +++ /dev/null @@ -1,6 +0,0 @@ -import moment from 'moment'; -import { IPaymentModel } from 'interfaces'; - -export default class PaymentMethod implements IPaymentModel { - -} \ No newline at end of file diff --git a/server/src/services/Payment/index.ts b/server/src/services/Payment/index.ts deleted file mode 100644 index e40d8d7db..000000000 --- a/server/src/services/Payment/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { IPaymentMethod, IPaymentContext } from "interfaces"; -import { Plan } from 'system/models'; - -export default class PaymentContext implements IPaymentContext{ - paymentMethod: IPaymentMethod; - - /** - * Constructor method. - * @param {IPaymentMethod} paymentMethod - */ - constructor(paymentMethod: IPaymentMethod) { - this.paymentMethod = paymentMethod; - } - - /** - * - * @param {} paymentModel - */ - makePayment(paymentModel: PaymentModel, plan: Plan) { - return this.paymentMethod.payment(paymentModel, plan); - } -} \ No newline at end of file diff --git a/server/src/services/Purchases/BillPayments/BillPaymentTransformer.ts b/server/src/services/Purchases/BillPayments/BillPaymentTransformer.ts deleted file mode 100644 index 86964eee4..000000000 --- a/server/src/services/Purchases/BillPayments/BillPaymentTransformer.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Service } from 'typedi'; -import { IBill, IBillPayment } from 'interfaces'; -import { Transformer } from 'lib/Transformer/Transformer'; -import { formatNumber } from 'utils'; - -@Service() -export default class BillPaymentTransformer extends Transformer { - /** - * Include these attributes to sale invoice object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return ['formattedPaymentDate', 'formattedAmount']; - }; - - /** - * Retrieve formatted invoice date. - * @param {IBill} invoice - * @returns {String} - */ - protected formattedPaymentDate = (billPayment: IBillPayment): string => { - return this.formatDate(billPayment.paymentDate); - }; - - /** - * Retrieve formatted bill amount. - * @param {IBill} invoice - * @returns {string} - */ - protected formattedAmount = (billPayment: IBillPayment): string => { - return formatNumber(billPayment.amount, { - currencyCode: billPayment.currencyCode, - }); - }; -} diff --git a/server/src/services/Purchases/BillPayments/BillPayments.ts b/server/src/services/Purchases/BillPayments/BillPayments.ts deleted file mode 100644 index ffb1fad06..000000000 --- a/server/src/services/Purchases/BillPayments/BillPayments.ts +++ /dev/null @@ -1,743 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { sumBy, difference } from 'lodash'; -import * as R from 'ramda'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import moment from 'moment'; -import events from 'subscribers/events'; -import { - IBill, - IBillPaymentDTO, - IBillPaymentEntryDTO, - IBillPayment, - IBillPaymentsFilter, - IPaginationMeta, - IFilterMeta, - IBillPaymentEntry, -} from 'interfaces'; -import AccountsService from 'services/Accounts/AccountsService'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import JournalEntry from 'services/Accounting/JournalEntry'; -import JournalCommands from 'services/Accounting/JournalCommands'; -import JournalPosterService from 'services/Sales/JournalPosterService'; -import TenancyService from 'services/Tenancy/TenancyService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { entriesAmountDiff, formatDateFields } from 'utils'; -import { ServiceError } from 'exceptions'; -import { ACCOUNT_TYPE } from 'data/AccountTypes'; -import VendorsService from 'services/Contacts/VendorsService'; -import BillPaymentTransformer from './BillPaymentTransformer'; -import { ERRORS } from './constants'; - -/** - * Bill payments service. - * @service - */ -@Service('BillPayments') -export default class BillPaymentsService implements IBillPaymentsService { - @Inject() - accountsService: AccountsService; - - @Inject() - tenancy: TenancyService; - - @Inject() - journalService: JournalPosterService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject() - vendorsService: VendorsService; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject('logger') - logger: any; - - @Inject() - billPaymentTransformer: BillPaymentTransformer; - - /** - * Validate whether the bill payment vendor exists on the storage. - * @param {Request} req - * @param {Response} res - * @param {Function} next - */ - private async getVendorOrThrowError(tenantId: number, vendorId: number) { - const { vendorRepository } = this.tenancy.repositories(tenantId); - - // Retrieve vendor details of the given id. - const vendor = await vendorRepository.findOneById(vendorId); - - if (!vendor) { - throw new ServiceError(ERRORS.BILL_VENDOR_NOT_FOUND); - } - return vendor; - } - - /** - * Validates the bill payment existance. - * @param {Request} req - * @param {Response} res - * @param {Function} next - */ - private async getPaymentMadeOrThrowError( - tenantid: number, - paymentMadeId: number - ) { - const { BillPayment } = this.tenancy.models(tenantid); - const billPayment = await BillPayment.query() - .withGraphFetched('entries') - .findById(paymentMadeId); - - if (!billPayment) { - throw new ServiceError(ERRORS.PAYMENT_MADE_NOT_FOUND); - } - return billPayment; - } - - /** - * Validates the payment account. - * @param {number} tenantId - - * @param {number} paymentAccountId - * @return {Promise} - */ - private async getPaymentAccountOrThrowError( - tenantId: number, - paymentAccountId: number - ) { - const { accountRepository } = this.tenancy.repositories(tenantId); - - const paymentAccount = await accountRepository.findOneById( - paymentAccountId - ); - if (!paymentAccount) { - throw new ServiceError(ERRORS.PAYMENT_ACCOUNT_NOT_FOUND); - } - // Validate the payment account type. - if ( - !paymentAccount.isAccountType([ - ACCOUNT_TYPE.BANK, - ACCOUNT_TYPE.CASH, - ACCOUNT_TYPE.OTHER_CURRENT_ASSET, - ]) - ) { - throw new ServiceError(ERRORS.PAYMENT_ACCOUNT_NOT_CURRENT_ASSET_TYPE); - } - return paymentAccount; - } - - /** - * Validates the payment number uniqness. - * @param {number} tenantId - - * @param {string} paymentMadeNumber - - * @return {Promise} - */ - private async validatePaymentNumber( - tenantId: number, - paymentMadeNumber: string, - notPaymentMadeId?: number - ) { - const { BillPayment } = this.tenancy.models(tenantId); - - const foundBillPayment = await BillPayment.query().onBuild( - (builder: any) => { - builder.findOne('payment_number', paymentMadeNumber); - - if (notPaymentMadeId) { - builder.whereNot('id', notPaymentMadeId); - } - } - ); - - if (foundBillPayment) { - throw new ServiceError(ERRORS.BILL_PAYMENT_NUMBER_NOT_UNQIUE); - } - return foundBillPayment; - } - - /** - * Validate whether the entries bills ids exist on the storage. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - private async validateBillsExistance( - tenantId: number, - billPaymentEntries: IBillPaymentEntry[], - vendorId: number - ) { - const { Bill } = this.tenancy.models(tenantId); - const entriesBillsIds = billPaymentEntries.map((e: any) => e.billId); - - const storedBills = await Bill.query() - .whereIn('id', entriesBillsIds) - .where('vendor_id', vendorId); - - const storedBillsIds = storedBills.map((t: IBill) => t.id); - const notFoundBillsIds = difference(entriesBillsIds, storedBillsIds); - - if (notFoundBillsIds.length > 0) { - throw new ServiceError(ERRORS.BILL_ENTRIES_IDS_NOT_FOUND); - } - - // Validate the not opened bills. - const notOpenedBills = storedBills.filter((bill) => !bill.openedAt); - - if (notOpenedBills.length > 0) { - throw new ServiceError(ERRORS.BILLS_NOT_OPENED_YET, null, { - notOpenedBills, - }); - } - } - - /** - * Validate wether the payment amount bigger than the payable amount. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - * @return {void} - */ - private async validateBillsDueAmount( - tenantId: number, - billPaymentEntries: IBillPaymentEntryDTO[], - oldPaymentEntries: IBillPaymentEntry[] = [] - ) { - const { Bill } = this.tenancy.models(tenantId); - const billsIds = billPaymentEntries.map( - (entry: IBillPaymentEntryDTO) => entry.billId - ); - - const storedBills = await Bill.query().whereIn('id', billsIds); - const storedBillsMap = new Map( - storedBills.map((bill) => { - const oldEntries = oldPaymentEntries.filter( - (entry) => entry.billId === bill.id - ); - const oldPaymentAmount = sumBy(oldEntries, 'paymentAmount') || 0; - - return [ - bill.id, - { ...bill, dueAmount: bill.dueAmount + oldPaymentAmount }, - ]; - }) - ); - interface invalidPaymentAmountError { - index: number; - due_amount: number; - } - const hasWrongPaymentAmount: invalidPaymentAmountError[] = []; - - billPaymentEntries.forEach((entry: IBillPaymentEntryDTO, index: number) => { - const entryBill = storedBillsMap.get(entry.billId); - const { dueAmount } = entryBill; - - if (dueAmount < entry.paymentAmount) { - hasWrongPaymentAmount.push({ index, due_amount: dueAmount }); - } - }); - if (hasWrongPaymentAmount.length > 0) { - throw new ServiceError(ERRORS.INVALID_BILL_PAYMENT_AMOUNT); - } - } - - /** - * Validate the payment receive entries IDs existance. - * @param {Request} req - * @param {Response} res - * @return {Response} - */ - private async validateEntriesIdsExistance( - tenantId: number, - billPaymentId: number, - billPaymentEntries: IBillPaymentEntry[] - ) { - const { BillPaymentEntry } = this.tenancy.models(tenantId); - - const entriesIds = billPaymentEntries - .filter((entry: any) => entry.id) - .map((entry: any) => entry.id); - - const storedEntries = await BillPaymentEntry.query().where( - 'bill_payment_id', - billPaymentId - ); - - const storedEntriesIds = storedEntries.map((entry: any) => entry.id); - const notFoundEntriesIds = difference(entriesIds, storedEntriesIds); - - if (notFoundEntriesIds.length > 0) { - throw new ServiceError(ERRORS.BILL_PAYMENT_ENTRIES_NOT_FOUND); - } - } - - /** - * * Validate the payment vendor whether modified. - * @param {string} billPaymentNo - */ - private validateVendorNotModified( - billPaymentDTO: IBillPaymentDTO, - oldBillPayment: IBillPayment - ) { - if (billPaymentDTO.vendorId !== oldBillPayment.vendorId) { - throw new ServiceError(ERRORS.PAYMENT_NUMBER_SHOULD_NOT_MODIFY); - } - } - - /** - * Transforms create/edit DTO to model. - * @param {number} tenantId - * @param {IBillPaymentDTO} billPaymentDTO - Bill payment. - * @param {IBillPayment} oldBillPayment - Old bill payment. - * @return {Promise} - */ - async transformDTOToModel( - tenantId: number, - billPaymentDTO: IBillPaymentDTO, - oldBillPayment?: IBillPayment - ): Promise { - // Retrieve vendor details by the given vendor id. - const vendor = await this.vendorsService.getVendorByIdOrThrowError( - tenantId, - billPaymentDTO.vendorId - ); - - return { - amount: sumBy(billPaymentDTO.entries, 'paymentAmount'), - currencyCode: vendor.currencyCode, - ...formatDateFields(billPaymentDTO, ['paymentDate']), - entries: billPaymentDTO.entries, - }; - } - - /** - * Creates a new bill payment transcations and store it to the storage - * with associated bills entries and journal transactions. - * - * Precedures:- - * ------ - * - Records the bill payment transaction. - * - Records the bill payment associated entries. - * - Increment the payment amount of the given vendor bills. - * - Decrement the vendor balance. - * - Records payment journal entries. - * ------ - * @param {number} tenantId - Tenant id. - * @param {BillPaymentDTO} billPayment - Bill payment object. - */ - public async createBillPayment( - tenantId: number, - billPaymentDTO: IBillPaymentDTO - ): Promise { - this.logger.info('[paymentDate] trying to save payment made.', { - tenantId, - billPaymentDTO, - }); - const { BillPayment } = this.tenancy.models(tenantId); - - // Transform create DTO to model object. - const billPaymentObj = await this.transformDTOToModel( - tenantId, - billPaymentDTO - ); - // Validate vendor existance on the storage. - await this.getVendorOrThrowError(tenantId, billPaymentObj.vendorId); - - // Validate the payment account existance and type. - await this.getPaymentAccountOrThrowError( - tenantId, - billPaymentObj.paymentAccountId - ); - // Validate the payment number uniquiness. - if (billPaymentObj.paymentNumber) { - await this.validatePaymentNumber(tenantId, billPaymentObj.paymentNumber); - } - // Validates the bills existance and associated to the given vendor. - await this.validateBillsExistance( - tenantId, - billPaymentObj.entries, - billPaymentDTO.vendorId - ); - // Validates the bills due payment amount. - await this.validateBillsDueAmount(tenantId, billPaymentObj.entries); - - const billPayment = await BillPayment.query().insertGraphAndFetch({ - ...billPaymentObj, - }); - // Triggers `onBillPaymentCreated` event. - await this.eventDispatcher.dispatch(events.billPayment.onCreated, { - tenantId, - billPayment, - billPaymentId: billPayment.id, - }); - this.logger.info('[payment_made] inserted successfully.', { - tenantId, - billPaymentId: billPayment.id, - }); - - return billPayment; - } - - /** - * Edits the details of the given bill payment. - * - * Preceducres: - * ------ - * - Update the bill payment transaction. - * - Insert the new bill payment entries that have no ids. - * - Update the bill paymeny entries that have ids. - * - Delete the bill payment entries that not presented. - * - Re-insert the journal transactions and update the diff accounts balance. - * - Update the diff vendor balance. - * - Update the diff bill payment amount. - * ------ - * @param {number} tenantId - Tenant id - * @param {Integer} billPaymentId - * @param {BillPaymentDTO} billPayment - * @param {IBillPayment} oldBillPayment - */ - public async editBillPayment( - tenantId: number, - billPaymentId: number, - billPaymentDTO - ): Promise { - const { BillPayment } = this.tenancy.models(tenantId); - - const oldBillPayment = await this.getPaymentMadeOrThrowError( - tenantId, - billPaymentId - ); - // Transform bill payment DTO to model object. - const billPaymentObj = await this.transformDTOToModel( - tenantId, - billPaymentDTO, - oldBillPayment - ); - // Validate vendor not modified. - this.validateVendorNotModified(billPaymentDTO, oldBillPayment); - - // Validate vendor existance on the storage. - await this.getVendorOrThrowError(tenantId, billPaymentObj.vendorId); - - // Validate the payment account existance and type. - await this.getPaymentAccountOrThrowError( - tenantId, - billPaymentObj.paymentAccountId - ); - // Validate the items entries IDs existance on the storage. - await this.validateEntriesIdsExistance( - tenantId, - billPaymentId, - billPaymentObj.entries - ); - // Validate the bills existance and associated to the given vendor. - await this.validateBillsExistance( - tenantId, - billPaymentObj.entries, - billPaymentDTO.vendorId - ); - // Validates the bills due payment amount. - await this.validateBillsDueAmount( - tenantId, - billPaymentObj.entries, - oldBillPayment.entries - ); - // Validate the payment number uniquiness. - if (billPaymentObj.paymentNumber) { - await this.validatePaymentNumber( - tenantId, - billPaymentObj.paymentNumber, - billPaymentId - ); - } - const billPayment = await BillPayment.query().upsertGraphAndFetch({ - id: billPaymentId, - ...billPaymentObj, - }); - await this.eventDispatcher.dispatch(events.billPayment.onEdited, { - tenantId, - billPaymentId, - billPayment, - oldBillPayment, - }); - this.logger.info('[bill_payment] edited successfully.', { - tenantId, - billPaymentId, - billPayment, - oldBillPayment, - }); - - return billPayment; - } - - /** - * Deletes the bill payment and associated transactions. - * @param {number} tenantId - Tenant id. - * @param {Integer} billPaymentId - The given bill payment id. - * @return {Promise} - */ - public async deleteBillPayment(tenantId: number, billPaymentId: number) { - const { BillPayment, BillPaymentEntry } = this.tenancy.models(tenantId); - - this.logger.info('[bill_payment] trying to delete.', { - tenantId, - billPaymentId, - }); - const oldBillPayment = await this.getPaymentMadeOrThrowError( - tenantId, - billPaymentId - ); - - await BillPaymentEntry.query() - .where('bill_payment_id', billPaymentId) - .delete(); - await BillPayment.query().where('id', billPaymentId).delete(); - - // Triggers `onBillPaymentDeleted` event. - await this.eventDispatcher.dispatch(events.billPayment.onDeleted, { - tenantId, - billPaymentId, - oldBillPayment, - }); - this.logger.info('[bill_payment] deleted successfully.', { - tenantId, - billPaymentId, - }); - } - - /** - * Retrieve payment made associated bills. - * @param {number} tenantId - - * @param {number} billPaymentId - - */ - public async getPaymentBills(tenantId: number, billPaymentId: number) { - const { Bill } = this.tenancy.models(tenantId); - - const billPayment = await this.getPaymentMadeOrThrowError( - tenantId, - billPaymentId - ); - const paymentBillsIds = billPayment.entries.map((entry) => entry.id); - - const bills = await Bill.query().whereIn('id', paymentBillsIds); - - return bills; - } - - /** - * Retrieve bill payment. - * @param {number} tenantId - * @param {number} billPyamentId - * @return {Promise} - */ - public async getBillPayment( - tenantId: number, - billPyamentId: number - ): Promise { - const { BillPayment } = this.tenancy.models(tenantId); - - const billPayment = await BillPayment.query() - .withGraphFetched('entries') - .withGraphFetched('vendor') - .withGraphFetched('paymentAccount') - .withGraphFetched('transactions') - .findById(billPyamentId); - - if (!billPayment) { - throw new ServiceError(ERRORS.PAYMENT_MADE_NOT_FOUND); - } - return this.billPaymentTransformer.transform(billPayment); - } - - /** - * Records bill payment receive journal transactions. - * @param {number} tenantId - - * @param {BillPayment} billPayment - * @param {Integer} billPaymentId - */ - public async recordJournalEntries( - tenantId: number, - billPayment: IBillPayment, - override: boolean = false - ) { - const { AccountTransaction } = this.tenancy.models(tenantId); - const { accountRepository } = this.tenancy.repositories(tenantId); - - const paymentAmount = sumBy(billPayment.entries, 'paymentAmount'); - const formattedDate = moment(billPayment.paymentDate).format('YYYY-MM-DD'); - - // Retrieve A/P account from the storage. - const payableAccount = await accountRepository.findOne({ - slug: 'accounts-payable', - }); - - const journal = new JournalPoster(tenantId); - const commonJournal = { - debit: 0, - credit: 0, - referenceId: billPayment.id, - referenceType: 'BillPayment', - - transactionNumber: billPayment.paymentNumber, - referenceNumber: billPayment.reference, - - date: formattedDate, - createdAt: billPayment.createdAt, - }; - if (override) { - const transactions = await AccountTransaction.query() - .whereIn('reference_type', ['BillPayment']) - .where('reference_id', billPayment.id) - .withGraphFetched('account'); - - journal.fromTransactions(transactions); - journal.removeEntries(); - } - const debitReceivable = new JournalEntry({ - ...commonJournal, - debit: paymentAmount, - contactId: billPayment.vendorId, - account: payableAccount.id, - index: 1, - }); - const creditPaymentAccount = new JournalEntry({ - ...commonJournal, - credit: paymentAmount, - account: billPayment.paymentAccountId, - index: 2, - }); - journal.debit(debitReceivable); - journal.credit(creditPaymentAccount); - - await Promise.all([ - journal.deleteEntries(), - journal.saveEntries(), - journal.saveBalance(), - journal.saveContactsBalance(), - ]); - } - - /** - * Reverts bill payment journal entries. - * @param {number} tenantId - * @param {number} billPaymentId - * @return {Promise} - */ - public async revertJournalEntries(tenantId: number, billPaymentId: number) { - const journal = new JournalPoster(tenantId); - const journalCommands = new JournalCommands(journal); - - await journalCommands.revertJournalEntries(billPaymentId, 'BillPayment'); - - return Promise.all([ - journal.saveBalance(), - journal.deleteEntries(), - journal.saveContactsBalance(), - ]); - } - - private parseListFilterDTO(filterDTO) { - return R.compose( - this.dynamicListService.parseStringifiedFilter - )(filterDTO); - } - - /** - * Retrieve bill payment paginted and filterable list. - * @param {number} tenantId - * @param {IBillPaymentsFilter} billPaymentsFilter - */ - public async listBillPayments( - tenantId: number, - filterDTO: IBillPaymentsFilter - ): Promise<{ - billPayments: IBillPayment; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }> { - const { BillPayment } = this.tenancy.models(tenantId); - - // Parses filter DTO. - const filter = this.parseListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicList = await this.dynamicListService.dynamicList( - tenantId, - BillPayment, - filter - ); - this.logger.info('[bill_payment] try to get bill payments list.', { - tenantId, - }); - - const { results, pagination } = await BillPayment.query() - .onBuild((builder) => { - builder.withGraphFetched('vendor'); - builder.withGraphFetched('paymentAccount'); - - dynamicList.buildQuery()(builder); - }) - .pagination(filter.page - 1, filter.pageSize); - - return { - billPayments: this.billPaymentTransformer.transform(results), - pagination, - filterMeta: dynamicList.getResponseMeta(), - }; - } - - /** - * Saves bills payment amount changes different. - * @param {number} tenantId - - * @param {IBillPaymentEntryDTO[]} paymentMadeEntries - - * @param {IBillPaymentEntryDTO[]} oldPaymentMadeEntries - - */ - public async saveChangeBillsPaymentAmount( - tenantId: number, - paymentMadeEntries: IBillPaymentEntryDTO[], - oldPaymentMadeEntries?: IBillPaymentEntryDTO[] - ): Promise { - const { Bill } = this.tenancy.models(tenantId); - const opers: Promise[] = []; - - const diffEntries = entriesAmountDiff( - paymentMadeEntries, - oldPaymentMadeEntries, - 'paymentAmount', - 'billId' - ); - diffEntries.forEach( - (diffEntry: { paymentAmount: number; billId: number }) => { - if (diffEntry.paymentAmount === 0) { - return; - } - - const oper = Bill.changePaymentAmount( - diffEntry.billId, - diffEntry.paymentAmount - ); - opers.push(oper); - } - ); - await Promise.all(opers); - } - - /** - * Validates the given vendor has no associated payments. - * @param {number} tenantId - * @param {number} vendorId - */ - public async validateVendorHasNoPayments(tenantId: number, vendorId: number) { - const { BillPayment } = this.tenancy.models(tenantId); - - const payments = await BillPayment.query().where('vendor_id', vendorId); - - if (payments.length > 0) { - throw new ServiceError(ERRORS.VENDOR_HAS_PAYMENTS); - } - } -} diff --git a/server/src/services/Purchases/BillPayments/BillPaymentsPages.ts b/server/src/services/Purchases/BillPayments/BillPaymentsPages.ts deleted file mode 100644 index 73bc839a3..000000000 --- a/server/src/services/Purchases/BillPayments/BillPaymentsPages.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { omit } from 'lodash'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { IBill, IBillPayment, IBillReceivePageEntry } from 'interfaces'; -import { ERRORS } from './constants'; -import { ServiceError } from 'exceptions'; - -/** - * Bill payments edit and create pages services. - */ -@Service() -export default class BillPaymentsPages { - @Inject() - tenancy: TenancyService; - - /** - * Retrieve bill payment with associated metadata. - * @param {number} billPaymentId - The bill payment id. - * @return {object} - */ - public async getBillPaymentEditPage( - tenantId: number, - billPaymentId: number - ): Promise<{ - billPayment: Omit; - entries: IBillReceivePageEntry[]; - }> { - const { BillPayment, Bill } = this.tenancy.models(tenantId); - const billPayment = await BillPayment.query() - .findById(billPaymentId) - .withGraphFetched('entries.bill'); - - // Throw not found the bill payment. - if (!billPayment) { - throw new ServiceError(ERRORS.PAYMENT_MADE_NOT_FOUND); - } - const paymentEntries = billPayment.entries.map((entry) => ({ - ...this.mapBillToPageEntry(entry.bill), - dueAmount: entry.bill.dueAmount + entry.paymentAmount, - paymentAmount: entry.paymentAmount, - })); - - const resPayableBills = await Bill.query() - .modify('opened') - .modify('dueBills') - .where('vendor_id', billPayment.vendorId) - .whereNotIn( - 'id', - billPayment.entries.map((e) => e.billId) - ) - .orderBy('bill_date', 'ASC'); - - // Mapping the payable bills to entries. - const restPayableEntries = resPayableBills.map(this.mapBillToPageEntry); - const entries = [...paymentEntries, ...restPayableEntries]; - - return { - billPayment: omit(billPayment, ['entries']), - entries, - }; - } - - /** - * Retrieve the payable entries of the new page once vendor be selected. - * @param {number} tenantId - * @param {number} vendorId - */ - public async getNewPageEntries( - tenantId: number, - vendorId: number - ): Promise { - const { Bill } = this.tenancy.models(tenantId); - - // Retrieve all payable bills that assocaited to the payment made transaction. - const payableBills = await Bill.query() - .modify('opened') - .modify('dueBills') - .where('vendor_id', vendorId) - .orderBy('bill_date', 'ASC'); - - return payableBills.map(this.mapBillToPageEntry); - } - - /** - * Retrive edit page invoices entries from the given sale invoices models. - * @param {ISaleInvoice[]} invoices - Invoices. - * @return {IPaymentReceiveEditPageEntry} - */ - private mapBillToPageEntry(bill: IBill): IBillReceivePageEntry { - return { - entryType: 'invoice', - billId: bill.id, - billNo: bill.billNumber, - amount: bill.amount, - dueAmount: bill.dueAmount, - totalPaymentAmount: bill.paymentAmount, - paymentAmount: bill.paymentAmount, - currencyCode: bill.currencyCode, - date: bill.billDate, - }; - } -} diff --git a/server/src/services/Purchases/BillPayments/constants.ts b/server/src/services/Purchases/BillPayments/constants.ts deleted file mode 100644 index 11c5fcc76..000000000 --- a/server/src/services/Purchases/BillPayments/constants.ts +++ /dev/null @@ -1,17 +0,0 @@ -export const ERRORS = { - BILL_VENDOR_NOT_FOUND: 'VENDOR_NOT_FOUND', - PAYMENT_MADE_NOT_FOUND: 'PAYMENT_MADE_NOT_FOUND', - BILL_PAYMENT_NUMBER_NOT_UNQIUE: 'BILL_PAYMENT_NUMBER_NOT_UNQIUE', - PAYMENT_ACCOUNT_NOT_FOUND: 'PAYMENT_ACCOUNT_NOT_FOUND', - PAYMENT_ACCOUNT_NOT_CURRENT_ASSET_TYPE: - 'PAYMENT_ACCOUNT_NOT_CURRENT_ASSET_TYPE', - BILL_ENTRIES_IDS_NOT_FOUND: 'BILL_ENTRIES_IDS_NOT_FOUND', - BILL_PAYMENT_ENTRIES_NOT_FOUND: 'BILL_PAYMENT_ENTRIES_NOT_FOUND', - INVALID_BILL_PAYMENT_AMOUNT: 'INVALID_BILL_PAYMENT_AMOUNT', - PAYMENT_NUMBER_SHOULD_NOT_MODIFY: 'PAYMENT_NUMBER_SHOULD_NOT_MODIFY', - BILLS_NOT_OPENED_YET: 'BILLS_NOT_OPENED_YET', - VENDOR_HAS_PAYMENTS: 'VENDOR_HAS_PAYMENTS' -}; - - -export const DEFAULT_VIEWS = []; \ No newline at end of file diff --git a/server/src/services/Purchases/Bills.ts b/server/src/services/Purchases/Bills.ts deleted file mode 100644 index ad34828bd..000000000 --- a/server/src/services/Purchases/Bills.ts +++ /dev/null @@ -1,771 +0,0 @@ -import { omit, runInContext, sumBy } from 'lodash'; -import moment from 'moment'; -import { Inject, Service } from 'typedi'; -import * as R from 'ramda'; -import composeAsync from 'async/compose'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import events from 'subscribers/events'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import AccountsService from 'services/Accounts/AccountsService'; -import InventoryService from 'services/Inventory/Inventory'; -import SalesInvoicesCost from 'services/Sales/SalesInvoicesCost'; -import TenancyService from 'services/Tenancy/TenancyService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { formatDateFields, transformToMap } from 'utils'; -import { - IBillDTO, - IBill, - ISystemUser, - IBillEditDTO, - IPaginationMeta, - IFilterMeta, - IBillsFilter, - IBillsService, - IItemEntry, - IItemEntryDTO, -} from 'interfaces'; -import { ServiceError } from 'exceptions'; -import ItemsService from 'services/Items/ItemsService'; -import ItemsEntriesService from 'services/Items/ItemsEntriesService'; -import JournalCommands from 'services/Accounting/JournalCommands'; -import JournalPosterService from 'services/Sales/JournalPosterService'; -import VendorsService from 'services/Contacts/VendorsService'; -import { ERRORS } from './constants'; -import EntriesService from 'services/Entries'; -import PurchaseInvoiceTransfromer from './PurchaseInvoices/PurchaseInvoiceTransformer'; - -/** - * Vendor bills services. - * @service - */ -@Service('Bills') -export default class BillsService - extends SalesInvoicesCost - implements IBillsService -{ - @Inject() - inventoryService: InventoryService; - - @Inject() - accountsService: AccountsService; - - @Inject() - itemsService: ItemsService; - - @Inject() - tenancy: TenancyService; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject('logger') - logger: any; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject() - itemsEntriesService: ItemsEntriesService; - - @Inject() - journalPosterService: JournalPosterService; - - @Inject() - vendorsService: VendorsService; - - @Inject() - entriesService: EntriesService; - - @Inject() - purchaseInvoiceTransformer: PurchaseInvoiceTransfromer; - - /** - * Validates whether the vendor is exist. - * @async - * @param {Request} req - * @param {Response} res - * @param {Function} next - */ - private async getVendorOrThrowError(tenantId: number, vendorId: number) { - const { vendorRepository } = this.tenancy.repositories(tenantId); - - this.logger.info('[bill] trying to get vendor.', { tenantId, vendorId }); - const foundVendor = await vendorRepository.findOneById(vendorId); - - if (!foundVendor) { - this.logger.info('[bill] the given vendor not found.', { - tenantId, - vendorId, - }); - throw new ServiceError(ERRORS.BILL_VENDOR_NOT_FOUND); - } - return foundVendor; - } - - /** - * Validates the given bill existance. - * @async - * @param {number} tenantId - - * @param {number} billId - - */ - public async getBillOrThrowError(tenantId: number, billId: number) { - const { Bill } = this.tenancy.models(tenantId); - - this.logger.info('[bill] trying to get bill.', { tenantId, billId }); - const foundBill = await Bill.query() - .findById(billId) - .withGraphFetched('entries'); - - if (!foundBill) { - this.logger.info('[bill] the given bill not found.', { - tenantId, - billId, - }); - throw new ServiceError(ERRORS.BILL_NOT_FOUND); - } - return foundBill; - } - - /** - * Validates the bill number existance. - * @async - * @param {Request} req - * @param {Response} res - * @param {Function} next - */ - private async validateBillNumberExists( - tenantId: number, - billNumber: string, - notBillId?: number - ) { - const { Bill } = this.tenancy.models(tenantId); - const foundBills = await Bill.query() - .where('bill_number', billNumber) - .onBuild((builder) => { - if (notBillId) { - builder.whereNot('id', notBillId); - } - }); - - if (foundBills.length > 0) { - throw new ServiceError(ERRORS.BILL_NUMBER_EXISTS); - } - } - - /** - * Validate the bill has no payment entries. - * @param {number} tenantId - * @param {number} billId - Bill id. - */ - private async validateBillHasNoEntries(tenantId, billId: number) { - const { BillPaymentEntry } = this.tenancy.models(tenantId); - - // Retireve the bill associate payment made entries. - const entries = await BillPaymentEntry.query().where('bill_id', billId); - - if (entries.length > 0) { - throw new ServiceError(ERRORS.BILL_HAS_ASSOCIATED_PAYMENT_ENTRIES); - } - return entries; - } - - /** - * Validate the bill number require. - * @param {string} billNo - - */ - private validateBillNoRequire(billNo: string) { - if (!billNo) { - throw new ServiceError(ERRORS.BILL_NO_IS_REQUIRED); - } - } - - /** - * Validate bill transaction has no associated allocated landed cost transactions. - * @param {number} tenantId - * @param {number} billId - */ - private async validateBillHasNoLandedCost(tenantId: number, billId: number) { - const { BillLandedCost } = this.tenancy.models(tenantId); - - const billLandedCosts = await BillLandedCost.query().where( - 'billId', - billId - ); - if (billLandedCosts.length > 0) { - throw new ServiceError(ERRORS.BILL_HAS_ASSOCIATED_LANDED_COSTS); - } - } - - /** - * Validate transaction entries that have landed cost type should not be - * inventory items. - * @param {number} tenantId - - * @param {IItemEntryDTO[]} newEntriesDTO - - */ - public async validateCostEntriesShouldBeInventoryItems( - tenantId: number, - newEntriesDTO: IItemEntryDTO[] - ) { - const { Item } = this.tenancy.models(tenantId); - - const entriesItemsIds = newEntriesDTO.map((e) => e.itemId); - const entriesItems = await Item.query().whereIn('id', entriesItemsIds); - - const entriesItemsById = transformToMap(entriesItems, 'id'); - - // Filter the landed cost entries that not associated with inventory item. - const nonInventoryHasCost = newEntriesDTO.filter((entry) => { - const item = entriesItemsById.get(entry.itemId); - - return entry.landedCost && item.type !== 'inventory'; - }); - if (nonInventoryHasCost.length > 0) { - throw new ServiceError( - ERRORS.LANDED_COST_ENTRIES_SHOULD_BE_INVENTORY_ITEMS - ); - } - } - - /** - * Sets the default cost account to the bill entries. - */ - private setBillEntriesDefaultAccounts(tenantId: number) { - return async (entries: IItemEntry[]) => { - const { Item } = this.tenancy.models(tenantId); - - const entriesItemsIds = entries.map((e) => e.itemId); - const items = await Item.query().whereIn('id', entriesItemsIds); - - return entries.map((entry) => { - const item = items.find((i) => i.id === entry.itemId); - - return { - ...entry, - ...(item.type !== 'inventory' && { - costAccountId: entry.costAccountId || item.costAccountId, - }), - }; - }); - }; - } - - /** - * Retrieve the bill entries total. - * @param {IItemEntry[]} entries - * @returns {number} - */ - private getBillEntriesTotal(tenantId: number, entries: IItemEntry[]): number { - const { ItemEntry } = this.tenancy.models(tenantId); - - return sumBy(entries, (e) => ItemEntry.calcAmount(e)); - } - - /** - * Retrieve the bill landed cost amount. - * @param {IBillDTO} billDTO - * @returns {number} - */ - private getBillLandedCostAmount(tenantId: number, billDTO: IBillDTO): number { - const costEntries = billDTO.entries.filter((entry) => entry.landedCost); - - return this.getBillEntriesTotal(tenantId, costEntries); - } - - /** - * Converts create bill DTO to model. - * @param {number} tenantId - * @param {IBillDTO} billDTO - * @param {IBill} oldBill - * @returns {IBill} - */ - private async billDTOToModel( - tenantId: number, - billDTO: IBillDTO, - authorizedUser: ISystemUser, - oldBill?: IBill - ) { - const { ItemEntry } = this.tenancy.models(tenantId); - - const amount = sumBy(billDTO.entries, (e) => ItemEntry.calcAmount(e)); - - // Retrieve the landed cost amount from landed cost entries. - const landedCostAmount = this.getBillLandedCostAmount(tenantId, billDTO); - - // Bill number from DTO or from auto-increment. - const billNumber = billDTO.billNumber || oldBill?.billNumber; - - // Retrieve vendor details by the given vendor id. - const vendor = await this.vendorsService.getVendorByIdOrThrowError( - tenantId, - billDTO.vendorId - ); - const initialEntries = billDTO.entries.map((entry) => ({ - amount: ItemEntry.calcAmount(entry), - reference_type: 'Bill', - ...omit(entry, ['amount']), - })); - const entries = await composeAsync( - // Sets the default cost account to the bill entries. - this.setBillEntriesDefaultAccounts(tenantId) - )(initialEntries); - - return { - ...formatDateFields(omit(billDTO, ['open', 'entries']), [ - 'billDate', - 'dueDate', - ]), - amount, - landedCostAmount, - currencyCode: vendor.currencyCode, - billNumber, - entries, - // Avoid rewrite the open date in edit mode when already opened. - ...(billDTO.open && - !oldBill?.openedAt && { - openedAt: moment().toMySqlDateTime(), - }), - userId: authorizedUser.id, - }; - } - - /** - * Creates a new bill and stored it to the storage. - * ---- - * Precedures. - * ---- - * - Insert bill transactions to the storage. - * - Insert bill entries to the storage. - * - Increment the given vendor id. - * - Record bill journal transactions on the given accounts. - * - Record bill items inventory transactions. - * ---- - * @param {number} tenantId - The given tenant id. - * @param {IBillDTO} billDTO - - * @return {Promise} - */ - public async createBill( - tenantId: number, - billDTO: IBillDTO, - authorizedUser: ISystemUser - ): Promise { - const { billRepository } = this.tenancy.repositories(tenantId); - - // Retrieve vendor or throw not found service error. - await this.getVendorOrThrowError(tenantId, billDTO.vendorId); - - // Validate the bill number uniqiness on the storage. - await this.validateBillNumberExists(tenantId, billDTO.billNumber); - - // Validate items IDs existance. - await this.itemsEntriesService.validateItemsIdsExistance( - tenantId, - billDTO.entries - ); - // Validate non-purchasable items. - await this.itemsEntriesService.validateNonPurchasableEntriesItems( - tenantId, - billDTO.entries - ); - await this.validateCostEntriesShouldBeInventoryItems( - tenantId, - billDTO.entries, - ); - this.logger.info('[bill] trying to create a new bill', { - tenantId, - billDTO, - }); - // Transform the bill DTO to model object. - const billObj = await this.billDTOToModel( - tenantId, - billDTO, - authorizedUser - ); - // Inserts the bill graph object to the storage. - const bill = await billRepository.upsertGraph(billObj); - - // Triggers `onBillCreated` event. - await this.eventDispatcher.dispatch(events.bill.onCreated, { - tenantId, - bill, - billId: bill.id, - }); - this.logger.info('[bill] bill inserted successfully.', { - tenantId, - billId: bill.id, - }); - - return bill; - } - - /** - * Edits details of the given bill id with associated entries. - * - * Precedures: - * ------- - * - Update the bill transaction on the storage. - * - Update the bill entries on the storage and insert the not have id and delete - * once that not presented. - * - Increment the diff amount on the given vendor id. - * - Re-write the inventory transactions. - * - Re-write the bill journal transactions. - * ------ - * @param {number} tenantId - The given tenant id. - * @param {Integer} billId - The given bill id. - * @param {IBillEditDTO} billDTO - The given new bill details. - * @return {Promise} - */ - public async editBill( - tenantId: number, - billId: number, - billDTO: IBillEditDTO, - authorizedUser: ISystemUser - ): Promise { - const { billRepository } = this.tenancy.repositories(tenantId); - - this.logger.info('[bill] trying to edit bill.', { tenantId, billId }); - const oldBill = await this.getBillOrThrowError(tenantId, billId); - - // Retrieve vendor details or throw not found service error. - await this.getVendorOrThrowError(tenantId, billDTO.vendorId); - - // Validate bill number uniqiness on the storage. - if (billDTO.billNumber) { - await this.validateBillNumberExists(tenantId, billDTO.billNumber, billId); - } - // Validate the entries ids existance. - await this.itemsEntriesService.validateEntriesIdsExistance( - tenantId, - billId, - 'Bill', - billDTO.entries - ); - // Validate the items ids existance on the storage. - await this.itemsEntriesService.validateItemsIdsExistance( - tenantId, - billDTO.entries - ); - // Accept the purchasable items only. - await this.itemsEntriesService.validateNonPurchasableEntriesItems( - tenantId, - billDTO.entries - ); - // Transforms the bill DTO to model object. - const billObj = await this.billDTOToModel( - tenantId, - billDTO, - authorizedUser, - oldBill - ); - // Validate landed cost entries that have allocated cost could not be deleted. - await this.entriesService.validateLandedCostEntriesNotDeleted( - oldBill.entries, - billObj.entries - ); - // Validate new landed cost entries should be bigger than new entries. - await this.entriesService.validateLocatedCostEntriesSmallerThanNewEntries( - oldBill.entries, - billObj.entries - ); - // Update the bill transaction. - const bill = await billRepository.upsertGraph({ - id: billId, - ...billObj, - }); - // Triggers event `onBillEdited`. - await this.eventDispatcher.dispatch(events.bill.onEdited, { - tenantId, - billId, - oldBill, - bill, - }); - this.logger.info('[bill] bill upserted successfully.', { - tenantId, - billId, - }); - - return bill; - } - - /** - * Deletes the bill with associated entries. - * @param {Integer} billId - * @return {void} - */ - public async deleteBill(tenantId: number, billId: number) { - const { ItemEntry } = this.tenancy.models(tenantId); - const { billRepository } = this.tenancy.repositories(tenantId); - - // Retrieve the given bill or throw not found error. - const oldBill = await this.getBillOrThrowError(tenantId, billId); - - // Validate the givne bill has no associated landed cost transactions. - await this.validateBillHasNoLandedCost(tenantId, billId); - - // Validate the purchase bill has no assocaited payments transactions. - await this.validateBillHasNoEntries(tenantId, billId); - - // Delete all associated bill entries. - const deleteBillEntriesOper = ItemEntry.query() - .where('reference_type', 'Bill') - .where('reference_id', billId) - .delete(); - - // Delete the bill transaction. - const deleteBillOper = billRepository.deleteById(billId); - - await Promise.all([deleteBillEntriesOper, deleteBillOper]); - - // Triggers `onBillDeleted` event. - await this.eventDispatcher.dispatch(events.bill.onDeleted, { - tenantId, - billId, - oldBill, - }); - } - - /** - * Parses bills list filter DTO. - * @param filterDTO - - */ - private parseListFilterDTO(filterDTO) { - return R.compose( - this.dynamicListService.parseStringifiedFilter, - )(filterDTO); - } - - /** - * Retrieve bills data table list. - * @param {number} tenantId - - * @param {IBillsFilter} billsFilter - - */ - public async getBills( - tenantId: number, - filterDTO: IBillsFilter - ): Promise<{ - bills: IBill; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }> { - const { Bill } = this.tenancy.models(tenantId); - - // Parses bills list filter DTO. - const filter = this.parseListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicFilter = await this.dynamicListService.dynamicList( - tenantId, - Bill, - filter, - ); - this.logger.info('[bills] trying to get bills data table.', { - tenantId, - filter, - }); - const { results, pagination } = await Bill.query() - .onBuild((builder) => { - builder.withGraphFetched('vendor'); - dynamicFilter.buildQuery()(builder); - }) - .pagination(filter.page - 1, filter.pageSize); - - return { - bills: this.purchaseInvoiceTransformer.transform(results), - pagination, - filterMeta: dynamicFilter.getResponseMeta(), - }; - } - - /** - * Retrieve all due bills or for specific given vendor id. - * @param {number} tenantId - - * @param {number} vendorId - - */ - public async getDueBills( - tenantId: number, - vendorId?: number - ): Promise { - const { Bill } = this.tenancy.models(tenantId); - - const dueBills = await Bill.query().onBuild((query) => { - query.orderBy('bill_date', 'DESC'); - query.modify('dueBills'); - - if (vendorId) { - query.where('vendor_id', vendorId); - } - }); - return dueBills; - } - - /** - * Retrieve the given bill details with associated items entries. - * @param {Integer} billId - Specific bill. - * @returns {Promise} - */ - public async getBill(tenantId: number, billId: number): Promise { - const { Bill } = this.tenancy.models(tenantId); - - this.logger.info('[bills] trying to fetch specific bill with metadata.', { - tenantId, - billId, - }); - const bill = await Bill.query() - .findById(billId) - .withGraphFetched('vendor') - .withGraphFetched('entries.item'); - - if (!bill) { - throw new ServiceError(ERRORS.BILL_NOT_FOUND); - } - return this.purchaseInvoiceTransformer.transform(bill); - } - - /** - * Mark the bill as open. - * @param {number} tenantId - * @param {number} billId - */ - public async openBill(tenantId: number, billId: number): Promise { - const { Bill } = this.tenancy.models(tenantId); - - // Retrieve the given bill or throw not found error. - const oldBill = await this.getBillOrThrowError(tenantId, billId); - - if (oldBill.isOpen) { - throw new ServiceError(ERRORS.BILL_ALREADY_OPEN); - } - // Record the bill opened at on the storage. - await Bill.query().findById(billId).patch({ - openedAt: moment().toMySqlDateTime(), - }); - } - - /** - * Records the inventory transactions from the given bill input. - * @param {Bill} bill - Bill model object. - * @param {number} billId - Bill id. - * @return {Promise} - */ - public async recordInventoryTransactions( - tenantId: number, - billId: number, - override?: boolean - ): Promise { - const { Bill } = this.tenancy.models(tenantId); - - // Retireve bill with assocaited entries and allocated cost entries. - const bill = await Bill.query() - .findById(billId) - .withGraphFetched('entries.allocatedCostEntries'); - - // Loads the inventory items entries of the given sale invoice. - const inventoryEntries = - await this.itemsEntriesService.filterInventoryEntries( - tenantId, - bill.entries - ); - const transaction = { - transactionId: bill.id, - transactionType: 'Bill', - date: bill.billDate, - direction: 'IN', - entries: inventoryEntries, - createdAt: bill.createdAt, - }; - await this.inventoryService.recordInventoryTransactionsFromItemsEntries( - tenantId, - transaction, - override - ); - } - - /** - * Reverts the inventory transactions of the given bill id. - * @param {number} tenantId - Tenant id. - * @param {number} billId - Bill id. - * @return {Promise} - */ - public async revertInventoryTransactions(tenantId: number, billId: number) { - // Deletes the inventory transactions by the given reference id and type. - await this.inventoryService.deleteInventoryTransactions( - tenantId, - billId, - 'Bill' - ); - } - - /** - * Records the bill journal transactions. - * @async - * @param {IBill} bill - * @param {Integer} billId - */ - public async recordJournalTransactions( - tenantId: number, - billId: number, - override: boolean = false - ) { - const { Bill, Account } = this.tenancy.models(tenantId); - - const journal = new JournalPoster(tenantId); - const journalCommands = new JournalCommands(journal); - - const bill = await Bill.query() - .findById(billId) - .withGraphFetched('entries.item') - .withGraphFetched('entries.allocatedCostEntries') - .withGraphFetched('locatedLandedCosts.allocateEntries'); - - const payableAccount = await Account.query().findOne({ - slug: 'accounts-payable', - }); - - // Overrides the bill journal entries. - if (override) { - await journalCommands.revertJournalEntries(billId, 'Bill'); - } - // Writes the bill journal entries. - journalCommands.bill(bill, payableAccount); - - return Promise.all([ - journal.deleteEntries(), - journal.saveEntries(), - journal.saveBalance(), - journal.saveContactsBalance(), - ]); - } - - /** - * Reverts the bill journal entries. - * @param {number} tenantId - * @param {number} billId - */ - public async revertJournalEntries( - tenantId: number, - billId: number - ): Promise { - await this.journalPosterService.revertJournalTransactions( - tenantId, - billId, - 'Bill' - ); - } - - /** - * Validate the given vendor has no associated bills transactions. - * @param {number} tenantId - * @param {number} vendorId - Vendor id. - */ - public async validateVendorHasNoBills(tenantId: number, vendorId: number) { - const { Bill } = this.tenancy.models(tenantId); - - const bills = await Bill.query().where('vendor_id', vendorId); - - if (bills.length > 0) { - throw new ServiceError(ERRORS.VENDOR_HAS_BILLS); - } - } -} diff --git a/server/src/services/Purchases/LandedCost/BillLandedCost.ts b/server/src/services/Purchases/LandedCost/BillLandedCost.ts deleted file mode 100644 index 92fcb89ee..000000000 --- a/server/src/services/Purchases/LandedCost/BillLandedCost.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { Service } from 'typedi'; -import { isEmpty } from 'lodash'; -import { - IBill, - IItem, - ILandedCostTransactionEntry, - ILandedCostTransaction, - IItemEntry, -} from 'interfaces'; - -@Service() -export default class BillLandedCost { - /** - * Retrieve the landed cost transaction from the given bill transaction. - * @param {IBill} bill - Bill transaction. - * @returns {ILandedCostTransaction} - Landed cost transaction. - */ - public transformToLandedCost = (bill: IBill): ILandedCostTransaction => { - const number = bill.billNumber || bill.referenceNo; - const name = [ - number, - bill.currencyCode + ' ' + bill.unallocatedCostAmount, - ].join(' - '); - - return { - id: bill.id, - name, - allocatedCostAmount: bill.allocatedCostAmount, - amount: bill.landedCostAmount, - unallocatedCostAmount: bill.unallocatedCostAmount, - transactionType: 'Bill', - - ...(!isEmpty(bill.entries)) && { - entries: bill.entries.map(this.transformToLandedCostEntry), - }, - }; - }; - - /** - * Transformes bill entry to landed cost entry. - * @param {IItemEntry} billEntry - Bill entry. - * @return {ILandedCostTransactionEntry} - */ - public transformToLandedCostEntry( - billEntry: IItemEntry & { item: IItem } - ): ILandedCostTransactionEntry { - return { - id: billEntry.id, - name: billEntry.item.name, - code: billEntry.item.code, - amount: billEntry.amount, - unallocatedCostAmount: billEntry.unallocatedCostAmount, - allocatedCostAmount: billEntry.allocatedCostAmount, - description: billEntry.description, - costAccountId: billEntry.costAccountId || billEntry.item.costAccountId, - }; - } -} diff --git a/server/src/services/Purchases/LandedCost/ExpenseLandedCost.ts b/server/src/services/Purchases/LandedCost/ExpenseLandedCost.ts deleted file mode 100644 index 078ae6627..000000000 --- a/server/src/services/Purchases/LandedCost/ExpenseLandedCost.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { Service } from 'typedi'; -import { isEmpty } from 'lodash'; -import { - IExpense, - ILandedCostTransactionEntry, - IExpenseCategory, - IAccount, - ILandedCostTransaction, -} from 'interfaces'; - -@Service() -export default class ExpenseLandedCost { - /** - * Retrieve the landed cost transaction from the given expense transaction. - * @param {IExpense} expense - * @returns {ILandedCostTransaction} - */ - public transformToLandedCost = ( - expense: IExpense - ): ILandedCostTransaction => { - const name = [expense.currencyCode + ' ' + expense.totalAmount].join(' - '); - - return { - id: expense.id, - name, - allocatedCostAmount: expense.allocatedCostAmount, - amount: expense.landedCostAmount, - unallocatedCostAmount: expense.unallocatedCostAmount, - transactionType: 'Expense', - - ...(!isEmpty(expense.categories) && { - entries: expense.categories.map(this.transformToLandedCostEntry), - }), - }; - }; - - /** - * Transformes expense entry to landed cost entry. - * @param {IExpenseCategory & { expenseAccount: IAccount }} expenseEntry - - * @return {ILandedCostTransactionEntry} - */ - public transformToLandedCostEntry = ( - expenseEntry: IExpenseCategory & { expenseAccount: IAccount } - ): ILandedCostTransactionEntry => { - return { - id: expenseEntry.id, - name: expenseEntry.expenseAccount.name, - code: expenseEntry.expenseAccount.code, - amount: expenseEntry.amount, - description: expenseEntry.description, - allocatedCostAmount: expenseEntry.allocatedCostAmount, - unallocatedCostAmount: expenseEntry.unallocatedCostAmount, - costAccountId: expenseEntry.expenseAccount.id, - }; - }; -} diff --git a/server/src/services/Purchases/LandedCost/LandedCostListing.ts b/server/src/services/Purchases/LandedCost/LandedCostListing.ts deleted file mode 100644 index afa02a5aa..000000000 --- a/server/src/services/Purchases/LandedCost/LandedCostListing.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { ref, transaction } from 'objection'; -import { - ILandedCostTransactionsQueryDTO, - ILandedCostTransaction, - IBillLandedCostTransaction, -} from 'interfaces'; -import TransactionLandedCost from './TransctionLandedCost'; -import BillsService from '../Bills'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { formatNumber } from 'utils'; - -@Service() -export default class LandedCostListing { - @Inject() - transactionLandedCost: TransactionLandedCost; - - @Inject() - billsService: BillsService; - - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve the landed costs based on the given query. - * @param {number} tenantId - * @param {ILandedCostTransactionsQueryDTO} query - * @returns {Promise} - */ - public getLandedCostTransactions = async ( - tenantId: number, - query: ILandedCostTransactionsQueryDTO - ): Promise => { - const { transactionType } = query; - const Model = this.transactionLandedCost.getModel( - tenantId, - query.transactionType - ); - - // Retrieve the model entities. - const transactions = await Model.query().onBuild((q) => { - q.where('allocated_cost_amount', '<', ref('landed_cost_amount')); - - if (query.transactionType === 'Bill') { - q.withGraphFetched('entries.item'); - } else if (query.transactionType === 'Expense') { - q.withGraphFetched('categories.expenseAccount'); - } - }); - return transactions.map((transaction) => ({ - ...this.transactionLandedCost.transformToLandedCost( - transactionType, - transaction - ), - })); - }; - - /** - * Retrieve the bill associated landed cost transactions. - * @param {number} tenantId - Tenant id. - * @param {number} billId - Bill id. - * @return {Promise} - */ - public getBillLandedCostTransactions = async ( - tenantId: number, - billId: number - ): Promise => { - const { BillLandedCost } = this.tenancy.models(tenantId); - - // Retrieve the given bill id or throw not found service error. - const bill = await this.billsService.getBillOrThrowError(tenantId, billId); - - const landedCostTransactions = await BillLandedCost.query() - .where('bill_id', billId) - .withGraphFetched('allocateEntries') - .withGraphFetched('bill'); - - return landedCostTransactions.map((transaction) => ({ - ...transaction.toJSON(), - formattedAmount: formatNumber( - transaction.amount, - transaction.bill.currencyCode - ), - })); - }; -} diff --git a/server/src/services/Purchases/LandedCost/TransctionLandedCost.ts b/server/src/services/Purchases/LandedCost/TransctionLandedCost.ts deleted file mode 100644 index 9362aae1d..000000000 --- a/server/src/services/Purchases/LandedCost/TransctionLandedCost.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { Inject, Service } from 'typedi'; -import * as R from 'ramda'; -import { Model } from 'objection'; -import { IBill, IExpense, ILandedCostTransaction, ILandedCostTransactionEntry } from 'interfaces'; -import { ServiceError } from 'exceptions'; -import BillLandedCost from './BillLandedCost'; -import ExpenseLandedCost from './ExpenseLandedCost'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { ERRORS } from './utils'; - -@Service() -export default class TransactionLandedCost { - @Inject() - billLandedCost: BillLandedCost; - - @Inject() - expenseLandedCost: ExpenseLandedCost; - - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve the cost transaction code model. - * @param {number} tenantId - Tenant id. - * @param {string} transactionType - Transaction type. - * @returns - */ - public getModel = ( - tenantId: number, - transactionType: string - ): Model => { - const Models = this.tenancy.models(tenantId); - const Model = Models[transactionType]; - - if (!Model) { - throw new ServiceError(ERRORS.COST_TYPE_UNDEFINED); - } - return Model; - } - - /** - * Mappes the given expense or bill transaction to landed cost transaction. - * @param {string} transactionType - Transaction type. - * @param {IBill|IExpense} transaction - Expense or bill transaction. - * @returns {ILandedCostTransaction} - */ - public transformToLandedCost = ( - transactionType: string, - transaction: IBill | IExpense - ): ILandedCostTransaction => { - return R.compose( - R.when( - R.always(transactionType === 'Bill'), - this.billLandedCost.transformToLandedCost, - ), - R.when( - R.always(transactionType === 'Expense'), - this.expenseLandedCost.transformToLandedCost, - ), - )(transaction); - } - - /** - * Transformes the given expense or bill entry to landed cost transaction entry. - * @param {string} transactionType - * @param {} transactionEntry - * @returns {ILandedCostTransactionEntry} - */ - public transformToLandedCostEntry = ( - transactionType: 'Bill' | 'Expense', - transactionEntry, - ): ILandedCostTransactionEntry => { - return R.compose( - R.when( - R.always(transactionType === 'Bill'), - this.billLandedCost.transformToLandedCostEntry, - ), - R.when( - R.always(transactionType === 'Expense'), - this.expenseLandedCost.transformToLandedCostEntry, - ), - )(transactionEntry); - } -} diff --git a/server/src/services/Purchases/LandedCost/index.ts b/server/src/services/Purchases/LandedCost/index.ts deleted file mode 100644 index b189610ee..000000000 --- a/server/src/services/Purchases/LandedCost/index.ts +++ /dev/null @@ -1,479 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { difference, sumBy } from 'lodash'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import BillsService from '../Bills'; -import { ServiceError } from 'exceptions'; -import { - IItemEntry, - IBill, - IBillLandedCost, - ILandedCostItemDTO, - ILandedCostDTO, - IBillLandedCostTransaction, - ILandedCostTransaction, - ILandedCostTransactionEntry, -} from 'interfaces'; -import events from 'subscribers/events'; -import InventoryService from 'services/Inventory/Inventory'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import TransactionLandedCost from './TransctionLandedCost'; -import { ERRORS, mergeLocatedWithBillEntries } from './utils'; - -const CONFIG = { - COST_TYPES: { - Expense: { - entries: 'categories', - }, - Bill: { - entries: 'entries', - }, - }, -}; - -@Service() -export default class AllocateLandedCostService { - @Inject() - public billsService: BillsService; - - @Inject() - public inventoryService: InventoryService; - - @Inject() - public tenancy: HasTenancyService; - - @Inject('logger') - public logger: any; - - @Inject() - public transactionLandedCost: TransactionLandedCost; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - /** - * Validates allocate cost items association with the purchase invoice entries. - * @param {IItemEntry[]} purchaseInvoiceEntries - * @param {ILandedCostItemDTO[]} landedCostItems - */ - private validateAllocateCostItems = ( - purchaseInvoiceEntries: IItemEntry[], - landedCostItems: ILandedCostItemDTO[] - ): void => { - // Purchase invoice entries items ids. - const purchaseInvoiceItems = purchaseInvoiceEntries.map((e) => e.id); - const landedCostItemsIds = landedCostItems.map((item) => item.entryId); - - // Not found items ids. - const notFoundItemsIds = difference( - purchaseInvoiceItems, - landedCostItemsIds - ); - // Throw items ids not found service error. - if (notFoundItemsIds.length > 0) { - throw new ServiceError(ERRORS.LANDED_COST_ITEMS_IDS_NOT_FOUND); - } - }; - - /** - * Transformes DTO to bill landed cost model object. - * @param landedCostDTO - * @param bill - * @param costTransaction - * @param costTransactionEntry - * @returns - */ - private transformToBillLandedCost( - landedCostDTO: ILandedCostDTO, - bill: IBill, - costTransaction: ILandedCostTransaction, - costTransactionEntry: ILandedCostTransactionEntry - ) { - const amount = sumBy(landedCostDTO.items, 'cost'); - - return { - billId: bill.id, - fromTransactionType: landedCostDTO.transactionType, - fromTransactionId: landedCostDTO.transactionId, - fromTransactionEntryId: landedCostDTO.transactionEntryId, - amount, - allocationMethod: landedCostDTO.allocationMethod, - description: landedCostDTO.description, - allocateEntries: landedCostDTO.items, - costAccountId: costTransactionEntry.costAccountId, - }; - } - - /** - * Allocate the landed cost amount to cost transactions. - * @param {number} tenantId - - * @param {string} transactionType - * @param {number} transactionId - */ - private incrementLandedCostAmount = async ( - tenantId: number, - transactionType: string, - transactionId: number, - transactionEntryId: number, - amount: number - ): Promise => { - const Model = this.transactionLandedCost.getModel( - tenantId, - transactionType - ); - const relation = CONFIG.COST_TYPES[transactionType].entries; - - // Increment the landed cost transaction amount. - await Model.query() - .where('id', transactionId) - .increment('allocatedCostAmount', amount); - - // Increment the landed cost entry. - await Model.relatedQuery(relation) - .for(transactionId) - .where('id', transactionEntryId) - .increment('allocatedCostAmount', amount); - }; - - /** - * Reverts the landed cost amount to cost transaction. - * @param {number} tenantId - Tenant id. - * @param {string} transactionType - Transaction type. - * @param {number} transactionId - Transaction id. - * @param {number} amount - Amount - */ - private revertLandedCostAmount = ( - tenantId: number, - transactionType: string, - transactionId: number, - amount: number - ) => { - const Model = this.transactionLandedCost.getModel( - tenantId, - transactionType - ); - // Decrement the allocate cost amount of cost transaction. - return Model.query() - .where('id', transactionId) - .decrement('allocatedCostAmount', amount); - }; - - /** - * Retrieve the cost transaction or throw not found error. - * @param {number} tenantId - * @param {transactionType} transactionType - - * @param {transactionId} transactionId - - */ - public getLandedCostOrThrowError = async ( - tenantId: number, - transactionType: string, - transactionId: number - ) => { - const Model = this.transactionLandedCost.getModel( - tenantId, - transactionType - ); - const model = await Model.query().findById(transactionId); - - if (!model) { - throw new ServiceError(ERRORS.LANDED_COST_TRANSACTION_NOT_FOUND); - } - return this.transactionLandedCost.transformToLandedCost( - transactionType, - model - ); - }; - - /** - * Retrieve the landed cost entries. - * @param {number} tenantId - * @param {string} transactionType - * @param {number} transactionId - * @returns - */ - public getLandedCostEntry = async ( - tenantId: number, - transactionType: string, - transactionId: number, - transactionEntryId: number - ): Promise => { - const Model = this.transactionLandedCost.getModel( - tenantId, - transactionType - ); - const relation = CONFIG.COST_TYPES[transactionType].entries; - - const entry = await Model.relatedQuery(relation) - .for(transactionId) - .findOne('id', transactionEntryId) - .where('landedCost', true) - .onBuild((q) => { - if (transactionType === 'Bill') { - q.withGraphFetched('item'); - } else if (transactionType === 'Expense') { - q.withGraphFetched('expenseAccount'); - } - }); - - if (!entry) { - throw new ServiceError(ERRORS.LANDED_COST_ENTRY_NOT_FOUND); - } - return this.transactionLandedCost.transformToLandedCostEntry( - transactionType, - entry - ); - }; - - /** - * Retrieve allocate items cost total. - * @param {ILandedCostDTO} landedCostDTO - * @returns {number} - */ - private getAllocateItemsCostTotal = ( - landedCostDTO: ILandedCostDTO - ): number => { - return sumBy(landedCostDTO.items, 'cost'); - }; - - /** - * Validates the landed cost entry amount. - * @param {number} unallocatedCost - - * @param {number} amount - - */ - private validateLandedCostEntryAmount = ( - unallocatedCost: number, - amount: number - ): void => { - if (unallocatedCost < amount) { - throw new ServiceError(ERRORS.COST_AMOUNT_BIGGER_THAN_UNALLOCATED_AMOUNT); - } - }; - - /** - * Records inventory transactions. - * @param {number} tenantId - * @param {} allocateEntries - */ - private recordInventoryTransactions = async ( - tenantId: number, - billLandedCost: IBillLandedCostTransaction, - bill: IBill - ) => { - // Retrieve the merged allocated entries with bill entries. - const allocateEntries = mergeLocatedWithBillEntries( - billLandedCost.allocateEntries, - bill.entries - ); - // Mappes the allocate cost entries to inventory transactions. - const inventoryTransactions = allocateEntries.map((allocateEntry) => ({ - date: bill.billDate, - itemId: allocateEntry.entry.itemId, - direction: 'IN', - quantity: 0, - rate: allocateEntry.cost, - transactionType: 'LandedCost', - transactionId: billLandedCost.id, - entryId: allocateEntry.entryId, - })); - - return this.inventoryService.recordInventoryTransactions( - tenantId, - inventoryTransactions - ); - }; - - /** - * ================================= - * Allocate landed cost. - * ================================= - * - Validates the allocate cost not the same purchase invoice id. - * - Get the given bill (purchase invoice) or throw not found error. - * - Get the given landed cost transaction or throw not found error. - * - Validate landed cost transaction has enough unallocated cost amount. - * - Validate landed cost transaction entry has enough unallocated cost amount. - * - Validate allocate entries existance and associated with cost bill transaction. - * - Writes inventory landed cost transaction. - * - Increment the allocated landed cost transaction. - * - Increment the allocated landed cost transaction entry. - * - * @param {ILandedCostDTO} landedCostDTO - Landed cost DTO. - * @param {number} tenantId - Tenant id. - * @param {number} billId - Purchase invoice id. - */ - public allocateLandedCost = async ( - tenantId: number, - allocateCostDTO: ILandedCostDTO, - billId: number - ): Promise<{ - billLandedCost: IBillLandedCost; - }> => { - const { BillLandedCost } = this.tenancy.models(tenantId); - - // Retrieve total cost of allocated items. - const amount = this.getAllocateItemsCostTotal(allocateCostDTO); - - // Retrieve the purchase invoice or throw not found error. - const bill = await this.billsService.getBillOrThrowError( - tenantId, - billId - ); - // Retrieve landed cost transaction or throw not found service error. - const landedCostTransaction = await this.getLandedCostOrThrowError( - tenantId, - allocateCostDTO.transactionType, - allocateCostDTO.transactionId - ); - // Retrieve landed cost transaction entries. - const landedCostEntry = await this.getLandedCostEntry( - tenantId, - allocateCostDTO.transactionType, - allocateCostDTO.transactionId, - allocateCostDTO.transactionEntryId - ); - // Validates allocate cost items association with the purchase invoice entries. - this.validateAllocateCostItems( - bill.entries, - allocateCostDTO.items - ); - // Validate the amount of cost with unallocated landed cost. - this.validateLandedCostEntryAmount( - landedCostEntry.unallocatedCostAmount, - amount - ); - // Transformes DTO to bill landed cost model object. - const billLandedCostObj = this.transformToBillLandedCost( - allocateCostDTO, - bill, - landedCostTransaction, - landedCostEntry - ); - // Save the bill landed cost model. - const billLandedCost = await BillLandedCost.query().insertGraph( - billLandedCostObj - ); - // Triggers the event `onBillLandedCostCreated`. - await this.eventDispatcher.dispatch(events.billLandedCost.onCreated, { - tenantId, - billId, - billLandedCostId: billLandedCost.id, - }); - // Records the inventory transactions. - await this.recordInventoryTransactions( - tenantId, - billLandedCost, - bill - ); - // Increment landed cost amount on transaction and entry. - await this.incrementLandedCostAmount( - tenantId, - allocateCostDTO.transactionType, - allocateCostDTO.transactionId, - allocateCostDTO.transactionEntryId, - amount - ); - return { billLandedCost }; - }; - - /** - * Retrieve the give bill landed cost or throw not found service error. - * @param {number} tenantId - Tenant id. - * @param {number} landedCostId - Landed cost id. - * @returns {Promise} - */ - public getBillLandedCostOrThrowError = async ( - tenantId: number, - landedCostId: number - ): Promise => { - const { BillLandedCost } = this.tenancy.models(tenantId); - - // Retrieve the bill landed cost model. - const billLandedCost = await BillLandedCost.query().findById(landedCostId); - - if (!billLandedCost) { - throw new ServiceError(ERRORS.BILL_LANDED_COST_NOT_FOUND); - } - return billLandedCost; - }; - - /** - * Deletes the landed cost transaction with assocaited allocate entries. - * @param {number} tenantId - * @param {number} landedCostId - */ - public deleteLandedCost = async ( - tenantId: number, - landedCostId: number - ): Promise => { - const { BillLandedCost, BillLandedCostEntry } = - this.tenancy.models(tenantId); - - // Deletes the bill landed cost allocated entries associated to landed cost. - await BillLandedCostEntry.query() - .where('bill_located_cost_id', landedCostId) - .delete(); - - // Delete the bill landed cost from the storage. - await BillLandedCost.query().where('id', landedCostId).delete(); - }; - - /** - * Deletes the allocated landed cost. - * ================================== - * - Delete bill landed cost transaction with associated allocate entries. - * - Delete the associated inventory transactions. - * - Decrement allocated amount of landed cost transaction and entry. - * - Revert journal entries. - * ---------------------------------- - * @param {number} tenantId - Tenant id. - * @param {number} landedCostId - Landed cost id. - * @return {Promise} - */ - public deleteAllocatedLandedCost = async ( - tenantId: number, - landedCostId: number - ): Promise<{ - landedCostId: number; - }> => { - // Retrieves the bill landed cost. - const oldBillLandedCost = await this.getBillLandedCostOrThrowError( - tenantId, - landedCostId - ); - // Delete landed cost transaction with assocaited locate entries. - await this.deleteLandedCost(tenantId, landedCostId); - - // Triggers the event `onBillLandedCostCreated`. - await this.eventDispatcher.dispatch(events.billLandedCost.onDeleted, { - tenantId, - billLandedCostId: oldBillLandedCost.id, - billId: oldBillLandedCost.billId, - }); - // Removes the inventory transactions. - await this.removeInventoryTransactions(tenantId, landedCostId); - - // Reverts the landed cost amount to the cost transaction. - await this.revertLandedCostAmount( - tenantId, - oldBillLandedCost.fromTransactionType, - oldBillLandedCost.fromTransactionId, - oldBillLandedCost.amount - ); - return { landedCostId }; - }; - - /** - * Deletes the inventory transaction. - * @param {number} tenantId - * @param {number} landedCostId - * @returns - */ - private removeInventoryTransactions = (tenantId, landedCostId: number) => { - return this.inventoryService.deleteInventoryTransactions( - tenantId, - landedCostId, - 'LandedCost' - ); - }; -} diff --git a/server/src/services/Purchases/LandedCost/utils.ts b/server/src/services/Purchases/LandedCost/utils.ts deleted file mode 100644 index 48d8cb683..000000000 --- a/server/src/services/Purchases/LandedCost/utils.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { IItemEntry, IBillLandedCostTransactionEntry } from 'interfaces'; -import { transformToMap } from 'utils'; - -export const ERRORS = { - COST_TYPE_UNDEFINED: 'COST_TYPE_UNDEFINED', - LANDED_COST_ITEMS_IDS_NOT_FOUND: 'LANDED_COST_ITEMS_IDS_NOT_FOUND', - COST_TRANSACTION_HAS_NO_ENOUGH_TO_LOCATE: - 'COST_TRANSACTION_HAS_NO_ENOUGH_TO_LOCATE', - BILL_LANDED_COST_NOT_FOUND: 'BILL_LANDED_COST_NOT_FOUND', - COST_ENTRY_ID_NOT_FOUND: 'COST_ENTRY_ID_NOT_FOUND', - LANDED_COST_TRANSACTION_NOT_FOUND: 'LANDED_COST_TRANSACTION_NOT_FOUND', - LANDED_COST_ENTRY_NOT_FOUND: 'LANDED_COST_ENTRY_NOT_FOUND', - COST_AMOUNT_BIGGER_THAN_UNALLOCATED_AMOUNT: - 'COST_AMOUNT_BIGGER_THAN_UNALLOCATED_AMOUNT', - ALLOCATE_COST_SHOULD_NOT_BE_BILL: 'ALLOCATE_COST_SHOULD_NOT_BE_BILL', -}; - -/** - * Merges item entry to bill located landed cost entry. - * @param {IBillLandedCostTransactionEntry[]} locatedEntries - - * @param {IItemEntry[]} billEntries - - * @returns {(IBillLandedCostTransactionEntry & { entry: IItemEntry })[]} - */ -export const mergeLocatedWithBillEntries = ( - locatedEntries: IBillLandedCostTransactionEntry[], - billEntries: IItemEntry[] -): (IBillLandedCostTransactionEntry & { entry: IItemEntry })[] => { - const billEntriesByEntryId = transformToMap(billEntries, 'id'); - - return locatedEntries.map((entry) => ({ - ...entry, - entry: billEntriesByEntryId.get(entry.entryId), - })); -}; diff --git a/server/src/services/Purchases/PurchaseInvoices/PurchaseInvoiceTransformer.ts b/server/src/services/Purchases/PurchaseInvoices/PurchaseInvoiceTransformer.ts deleted file mode 100644 index 168f92b0d..000000000 --- a/server/src/services/Purchases/PurchaseInvoices/PurchaseInvoiceTransformer.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { Service } from 'typedi'; -import { IBill } from 'interfaces'; -import { Transformer } from 'lib/Transformer/Transformer'; -import { formatNumber } from 'utils'; - -@Service() -export default class PurchaseInvoiceTransformer extends Transformer { - /** - * Include these attributes to sale invoice object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return [ - 'formattedBillDate', - 'formattedDueDate', - 'formattedAmount', - 'formattedPaymentAmount', - 'formattedDueAmount', - ]; - }; - - /** - * Retrieve formatted invoice date. - * @param {IBill} invoice - * @returns {String} - */ - protected formattedBillDate = (bill: IBill): string => { - return this.formatDate(bill.billDate); - }; - - /** - * Retrieve formatted invoice date. - * @param {IBill} invoice - * @returns {String} - */ - protected formattedDueDate = (bill: IBill): string => { - return this.formatDate(bill.dueDate); - }; - - /** - * Retrieve formatted bill amount. - * @param {IBill} invoice - * @returns {string} - */ - protected formattedAmount = (bill): string => { - return formatNumber(bill.amount, { currencyCode: bill.currencyCode }); - }; - - /** - * Retrieve formatted bill amount. - * @param {IBill} invoice - * @returns {string} - */ - protected formattedPaymentAmount = (bill): string => { - return formatNumber(bill.paymentAmount, { currencyCode: bill.currencyCode}); - }; - - /** - * Retrieve formatted bill amount. - * @param {IBill} invoice - * @returns {string} - */ - protected formattedDueAmount = (bill): string => { - return formatNumber(bill.dueAmount, { currencyCode: bill.currencyCode }); - }; -} diff --git a/server/src/services/Purchases/constants.ts b/server/src/services/Purchases/constants.ts deleted file mode 100644 index cc54df946..000000000 --- a/server/src/services/Purchases/constants.ts +++ /dev/null @@ -1,75 +0,0 @@ -export const ERRORS = { - BILL_NOT_FOUND: 'BILL_NOT_FOUND', - BILL_VENDOR_NOT_FOUND: 'BILL_VENDOR_NOT_FOUND', - BILL_ITEMS_NOT_PURCHASABLE: 'BILL_ITEMS_NOT_PURCHASABLE', - BILL_NUMBER_EXISTS: 'BILL_NUMBER_EXISTS', - BILL_ITEMS_NOT_FOUND: 'BILL_ITEMS_NOT_FOUND', - BILL_ENTRIES_IDS_NOT_FOUND: 'BILL_ENTRIES_IDS_NOT_FOUND', - NOT_PURCHASE_ABLE_ITEMS: 'NOT_PURCHASE_ABLE_ITEMS', - BILL_ALREADY_OPEN: 'BILL_ALREADY_OPEN', - BILL_NO_IS_REQUIRED: 'BILL_NO_IS_REQUIRED', - BILL_HAS_ASSOCIATED_PAYMENT_ENTRIES: 'BILL_HAS_ASSOCIATED_PAYMENT_ENTRIES', - VENDOR_HAS_BILLS: 'VENDOR_HAS_BILLS', - BILL_HAS_ASSOCIATED_LANDED_COSTS: 'BILL_HAS_ASSOCIATED_LANDED_COSTS', - BILL_ENTRIES_ALLOCATED_COST_COULD_DELETED: - 'BILL_ENTRIES_ALLOCATED_COST_COULD_DELETED', - LOCATED_COST_ENTRIES_SHOULD_BIGGE_THAN_NEW_ENTRIES: - 'LOCATED_COST_ENTRIES_SHOULD_BIGGE_THAN_NEW_ENTRIES', - LANDED_COST_ENTRIES_SHOULD_BE_INVENTORY_ITEMS: - 'LANDED_COST_ENTRIES_SHOULD_BE_INVENTORY_ITEMS', -}; - -export const DEFAULT_VIEW_COLUMNS = []; - -export const DEFAULT_VIEWS = [ - { - name: 'Draft', - slug: 'draft', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'draft' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Opened', - slug: 'opened', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'opened' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Unpaid', - slug: 'unpaid', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'unpaid' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Overdue', - slug: 'overdue', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'overdue' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Partially paid', - slug: 'partially-paid', - rolesLogicExpression: '1', - roles: [ - { - index: 1, - fieldKey: 'status', - comparator: 'equals', - value: 'partially-paid', - }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, -]; diff --git a/server/src/services/Resource/ResourceService.ts b/server/src/services/Resource/ResourceService.ts deleted file mode 100644 index b475de274..000000000 --- a/server/src/services/Resource/ResourceService.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { camelCase, upperFirst } from 'lodash'; -import * as qim from 'qim'; -import pluralize from 'pluralize'; -import { IModelMeta } from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { ServiceError } from 'exceptions'; -import I18nService from 'services/I18n/I18nService'; -import { tenantKnexConfig } from 'config/knexConfig'; - -const ERRORS = { - RESOURCE_MODEL_NOT_FOUND: 'RESOURCE_MODEL_NOT_FOUND', -}; - -@Service() -export default class ResourceService { - @Inject() - tenancy: TenancyService; - - @Inject() - i18nService: I18nService; - - /** - * Transform resource to model name. - * @param {string} resourceName - */ - private resourceToModelName(resourceName: string): string { - return upperFirst(camelCase(pluralize.singular(resourceName))); - } - - /** - * Retrieve resource model object. - * @param {number} tenantId - - * @param {string} inputModelName - - */ - public getResourceModel(tenantId: number, inputModelName: string) { - const modelName = this.resourceToModelName(inputModelName); - const Models = this.tenancy.models(tenantId); - - if (!Models[modelName]) { - throw new ServiceError(ERRORS.RESOURCE_MODEL_NOT_FOUND); - } - return Models[modelName]; - } - - /** - * Retrieve the resource meta. - * @param {number} tenantId - * @param {string} modelName - * @returns {IModelMeta} - */ - public getResourceMeta( - tenantId: number, - modelName: string, - metakey?: string - ): IModelMeta { - const resourceModel = this.getResourceModel(tenantId, modelName); - - // Retrieve the resource meta. - const resourceMeta = resourceModel.getMeta(metakey); - - // Localization the fields names. - return this.getResourceMetaLocalized(resourceMeta, tenantId); - } - - /** - * Retrieve the resource meta localized based on the current user language. - */ - public getResourceMetaLocalized(meta, tenantId) { - const $enumerationType = (field) => - field.fieldType === 'enumeration' ? field : undefined; - - const naviagations = [ - ['fields', qim.$each, 'name'], - ['fields', qim.$each, $enumerationType, 'options', qim.$each, 'label'], - ]; - return this.i18nService.i18nApply(naviagations, meta, tenantId); - } -} diff --git a/server/src/services/SMSClient/EasySmsClient.ts b/server/src/services/SMSClient/EasySmsClient.ts deleted file mode 100644 index d7c4f6332..000000000 --- a/server/src/services/SMSClient/EasySmsClient.ts +++ /dev/null @@ -1,27 +0,0 @@ -import axios from 'axios'; -import SMSClientInterface from 'services/SMSClient/SMSClientInterfaces'; -import config from 'config'; - -export default class EasySMSClient implements SMSClientInterface { - clientName: string = 'easysms'; - - /** - * Send message to given phone number via easy SMS client. - * @param {string} to - * @param {string} message - */ - send(to: string, message: string) { - const API_KEY = config.easySMSGateway.api_key; - const parsedTo = to.indexOf('218') === 0 ? to.replace('218', '') : to; - const params = `action=send-sms&api_key=${API_KEY}=&to=${parsedTo}&sms=${message}&unicode=1`; - - return new Promise((resolve, reject) => { - axios.get(`https://easysms.devs.ly/sms/api?${params}`) - .then((response) => { - if (response.data.code === 'ok') { resolve(); } - else { reject(response.data); } - }) - .catch((error) => { reject(error) }); - }); - } -} \ No newline at end of file diff --git a/server/src/services/SMSClient/SMSAPI.ts b/server/src/services/SMSClient/SMSAPI.ts deleted file mode 100644 index 0d2d0b903..000000000 --- a/server/src/services/SMSClient/SMSAPI.ts +++ /dev/null @@ -1,20 +0,0 @@ -import SMSClientInterface from 'services/SMSClient/SMSClientInterface'; - -export default class SMSAPI { - smsClient: SMSClientInterface; - - constructor(smsClient: SMSClientInterface){ - this.smsClient = smsClient; - } - - /** - * Sends the message to the target via the client. - * @param {string} to - * @param {string} message - * @param {array} extraParams - * @param {array} extraHeaders - */ - sendMessage(to: string, message: string, extraParams?: [], extraHeaders?: []) { - return this.smsClient.send(to, message); - } -} \ No newline at end of file diff --git a/server/src/services/SMSClient/SMSClientInterface.ts b/server/src/services/SMSClient/SMSClientInterface.ts deleted file mode 100644 index 8e1c0978b..000000000 --- a/server/src/services/SMSClient/SMSClientInterface.ts +++ /dev/null @@ -1,5 +0,0 @@ - -export default interface SMSClientInterface { - clientName: string; - send(to: string, message: string): boolean; -} \ No newline at end of file diff --git a/server/src/services/SMSClient/index.ts b/server/src/services/SMSClient/index.ts deleted file mode 100644 index ae92b9bbc..000000000 --- a/server/src/services/SMSClient/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import SMSAPI from './SMSAPI'; - -export default SMSAPI; \ No newline at end of file diff --git a/server/src/services/Sales/AutoIncrementOrdersService.ts b/server/src/services/Sales/AutoIncrementOrdersService.ts deleted file mode 100644 index ec2b3391a..000000000 --- a/server/src/services/Sales/AutoIncrementOrdersService.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { Service, Inject } from 'typedi'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { transactionIncrement, parseBoolean } from 'utils'; - -/** - * Auto increment orders service. - */ -@Service() -export default class AutoIncrementOrdersService { - @Inject() - tenancy: TenancyService; - - /** - * Retrieve the next service transaction number. - * @param {number} tenantId - * @param {string} settingsGroup - * @param {Function} getMaxTransactionNo - * @return {Promise} - */ - getNextTransactionNumber(tenantId: number, settingsGroup: string): string { - const settings = this.tenancy.settings(tenantId); - const group = settingsGroup; - - // Settings service transaction number and prefix. - const autoIncrement = settings.get({ group, key: 'auto_increment' }, false); - - const settingNo = settings.get({ group, key: 'next_number' }, ''); - const settingPrefix = settings.get({ group, key: 'number_prefix' }, ''); - - return parseBoolean(autoIncrement, false) ? `${settingPrefix}${settingNo}` : ''; - } - - /** - * Increment setting next number. - * @param {number} tenantId - - * @param {string} orderGroup - Order group. - * @param {string} orderNumber -Order number. - */ - async incrementSettingsNextNumber(tenantId: number, group: string) { - const settings = this.tenancy.settings(tenantId); - - const settingNo = settings.get({ group, key: 'next_number' }); - const autoIncrement = settings.get({ group, key: 'auto_increment' }); - - // Can't continue if the auto-increment of the service was disabled. - if (!autoIncrement) { return; } - - settings.set( - { group, key: 'next_number' }, - transactionIncrement(settingNo) - ); - await settings.save(); - } -} diff --git a/server/src/services/Sales/Estimates/SaleEstimateTransformer.ts b/server/src/services/Sales/Estimates/SaleEstimateTransformer.ts deleted file mode 100644 index a99f7c59c..000000000 --- a/server/src/services/Sales/Estimates/SaleEstimateTransformer.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { Service } from 'typedi'; -import { ISaleEstimate } from 'interfaces'; -import { Transformer } from 'lib/Transformer/Transformer'; -import { formatNumber } from 'utils'; - -export default class SaleEstimateTransfromer extends Transformer { - /** - * Include these attributes to sale invoice object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return [ - 'formattedAmount', - 'formattedEstimateDate', - 'formattedExpirationDate', - 'formattedDeliveredAtDate', - 'formattedApprovedAtDate', - 'formattedRejectedAtDate', - ]; - }; - - /** - * Retrieve formatted estimate date. - * @param {ISaleEstimate} invoice - * @returns {String} - */ - protected formattedEstimateDate = (estimate: ISaleEstimate): string => { - return this.formatDate(estimate.estimateDate); - }; - - /** - * Retrieve formatted estimate date. - * @param {ISaleEstimate} invoice - * @returns {String} - */ - protected formattedExpirationDate = (estimate: ISaleEstimate): string => { - return this.formatDate(estimate.expirationDate); - }; - - /** - * Retrieve formatted estimate date. - * @param {ISaleEstimate} invoice - * @returns {String} - */ - protected formattedDeliveredAtDate = (estimate: ISaleEstimate): string => { - return this.formatDate(estimate.deliveredAt); - }; - - /** - * Retrieve formatted estimate date. - * @param {ISaleEstimate} invoice - * @returns {String} - */ - protected formattedApprovedAtDate = (estimate: ISaleEstimate): string => { - return this.formatDate(estimate.approvedAt); - }; - - /** - * Retrieve formatted estimate date. - * @param {ISaleEstimate} invoice - * @returns {String} - */ - protected formattedRejectedAtDate = (estimate: ISaleEstimate): string => { - return this.formatDate(estimate.rejectedAt); - }; - - /** - * Retrieve formatted invoice amount. - * @param {ISaleEstimate} estimate - * @returns {string} - */ - protected formattedAmount = (estimate: ISaleEstimate): string => { - return formatNumber(estimate.amount, { - currencyCode: estimate.currencyCode, - }); - }; -} diff --git a/server/src/services/Sales/Estimates/SaleEstimatesPdf.ts b/server/src/services/Sales/Estimates/SaleEstimatesPdf.ts deleted file mode 100644 index b31da0ad2..000000000 --- a/server/src/services/Sales/Estimates/SaleEstimatesPdf.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { Inject, Service } from 'typedi'; -import PdfService from 'services/PDF/PdfService'; -import { templateRender } from 'utils'; -import HasTenancyService from 'services/Tenancy/TenancyService'; - -@Service() -export default class SaleEstimatesPdf { - @Inject() - pdfService: PdfService; - - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve sale invoice pdf content. - * @param {} saleInvoice - - */ - async saleEstimatePdf(tenantId: number, saleEstimate) { - const i18n = this.tenancy.i18n(tenantId); - const settings = this.tenancy.settings(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const organizationEmail = settings.get({ - group: 'organization', - key: 'email', - }); - const htmlContent = templateRender('modules/estimate-regular', { - saleEstimate, - organizationName, - organizationEmail, - ...i18n, - }); - - console.log(htmlContent, 'XXX'); - - const pdfContent = await this.pdfService.pdfDocument(htmlContent); - - return pdfContent; - } -} diff --git a/server/src/services/Sales/Estimates/constants.ts b/server/src/services/Sales/Estimates/constants.ts deleted file mode 100644 index 2b58c74a8..000000000 --- a/server/src/services/Sales/Estimates/constants.ts +++ /dev/null @@ -1,109 +0,0 @@ - -export const ERRORS = { - SALE_ESTIMATE_NOT_FOUND: 'SALE_ESTIMATE_NOT_FOUND', - SALE_ESTIMATE_NUMBER_EXISTANCE: 'SALE_ESTIMATE_NUMBER_EXISTANCE', - SALE_ESTIMATE_CONVERTED_TO_INVOICE: 'SALE_ESTIMATE_CONVERTED_TO_INVOICE', - SALE_ESTIMATE_NOT_DELIVERED: 'SALE_ESTIMATE_NOT_DELIVERED', - SALE_ESTIMATE_ALREADY_REJECTED: 'SALE_ESTIMATE_ALREADY_REJECTED', - CUSTOMER_HAS_SALES_ESTIMATES: 'CUSTOMER_HAS_SALES_ESTIMATES', - SALE_ESTIMATE_NO_IS_REQUIRED: 'SALE_ESTIMATE_NO_IS_REQUIRED', - SALE_ESTIMATE_ALREADY_DELIVERED: 'SALE_ESTIMATE_ALREADY_DELIVERED', - SALE_ESTIMATE_ALREADY_APPROVED: 'SALE_ESTIMATE_ALREADY_APPROVED' -}; - -export const DEFAULT_VIEW_COLUMNS = []; -export const DEFAULT_VIEWS = [ - { - name: 'Draft', - slug: 'draft', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'draft' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Delivered', - slug: 'delivered', - rolesLogicExpression: '1', - roles: [ - { - index: 1, - fieldKey: 'status', - comparator: 'equals', - value: 'delivered', - }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Approved', - slug: 'approved', - rolesLogicExpression: '1', - roles: [ - { - index: 1, - fieldKey: 'status', - comparator: 'equals', - value: 'approved', - }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Rejected', - slug: 'rejected', - rolesLogicExpression: '1', - roles: [ - { - index: 1, - fieldKey: 'status', - comparator: 'equals', - value: 'rejected', - }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Invoiced', - slug: 'invoiced', - rolesLogicExpression: '1', - roles: [ - { - index: 1, - fieldKey: 'status', - comparator: 'equals', - value: 'invoiced', - }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Expired', - slug: 'expired', - rolesLogicExpression: '1', - roles: [ - { - index: 1, - fieldKey: 'status', - comparator: 'equals', - value: 'expired', - }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Closed', - slug: 'closed', - rolesLogicExpression: '1', - roles: [ - { - index: 1, - fieldKey: 'status', - comparator: 'equals', - value: 'closed', - }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, -]; diff --git a/server/src/services/Sales/HasItemsEntries.ts b/server/src/services/Sales/HasItemsEntries.ts deleted file mode 100644 index ccac4a475..000000000 --- a/server/src/services/Sales/HasItemsEntries.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { difference, omit } from 'lodash'; -import { Service, Inject } from 'typedi'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { ItemEntry } from 'models'; - -@Service() -export default class HasItemEntries { - @Inject() - tenancy: TenancyService; - - filterNonInventoryEntries(entries: [], items: []) { - const nonInventoryItems = items.filter((item: any) => item.type !== 'inventory'); - const nonInventoryItemsIds = nonInventoryItems.map((i: any) => i.id); - - return entries - .filter((entry: any) => ( - (nonInventoryItemsIds.indexOf(entry.item_id)) !== -1 - )); - } - - filterInventoryEntries(entries: [], items: []) { - const inventoryItems = items.filter((item: any) => item.type === 'inventory'); - const inventoryItemsIds = inventoryItems.map((i: any) => i.id); - - return entries - .filter((entry: any) => ( - (inventoryItemsIds.indexOf(entry.item_id)) !== -1 - )); - } -} \ No newline at end of file diff --git a/server/src/services/Sales/JournalPosterService.ts b/server/src/services/Sales/JournalPosterService.ts deleted file mode 100644 index 0be67c3d5..000000000 --- a/server/src/services/Sales/JournalPosterService.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Service, Inject } from 'typedi'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import TenancyService from 'services/Tenancy/TenancyService'; -import JournalCommands from 'services/Accounting/JournalCommands'; - -@Service() -export default class JournalPosterService { - @Inject() - tenancy: TenancyService; - - /** - * Deletes the journal transactions that associated to the given reference id. - * @param {number} tenantId - The given tenant id. - * @param {number} referenceId - The transaction reference id. - * @param {string} referenceType - The transaction reference type. - * @return {Promise} - */ - async revertJournalTransactions( - tenantId: number, - referenceId: number|number[], - referenceType: string - ): Promise { - const journal = new JournalPoster(tenantId); - const journalCommand = new JournalCommands(journal); - - await journalCommand.revertJournalEntries(referenceId, referenceType); - - await Promise.all([ - journal.deleteEntries(), - journal.saveBalance(), - journal.saveContactsBalance(), - ]); - } -} \ No newline at end of file diff --git a/server/src/services/Sales/PaymentReceives/PaymentReceiveTransformer.ts b/server/src/services/Sales/PaymentReceives/PaymentReceiveTransformer.ts deleted file mode 100644 index 515bd90af..000000000 --- a/server/src/services/Sales/PaymentReceives/PaymentReceiveTransformer.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Service } from 'typedi'; -import { IPaymentReceive } from 'interfaces'; -import { Transformer } from 'lib/Transformer/Transformer'; -import { formatNumber } from 'utils'; - -export default class PaymentReceiveTransfromer extends Transformer { - /** - * Include these attributes to payment receive object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return ['formattedPaymentDate', 'formattedAmount']; - }; - - /** - * Retrieve formatted payment receive date. - * @param {ISaleInvoice} invoice - * @returns {String} - */ - protected formattedPaymentDate = (payment: IPaymentReceive): string => { - return this.formatDate(payment.paymentDate); - }; - - /** - * Retrieve formatted payment amount. - * @param {ISaleInvoice} invoice - * @returns {string} - */ - protected formattedAmount = (payment: IPaymentReceive): string => { - return formatNumber(payment.amount, { currencyCode: payment.currencyCode }); - }; -} diff --git a/server/src/services/Sales/PaymentReceives/PaymentReceivesPages.ts b/server/src/services/Sales/PaymentReceives/PaymentReceivesPages.ts deleted file mode 100644 index 47d6a8985..000000000 --- a/server/src/services/Sales/PaymentReceives/PaymentReceivesPages.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { Inject, Service } from 'typedi'; -import { omit } from 'lodash'; -import { - ISaleInvoice, - IPaymentReceivePageEntry, - IPaymentReceive, - ISystemUser, -} from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { ServiceError } from 'exceptions'; -import { ERRORS } from './constants'; - -/** - * Payment receives edit/new pages service. - */ -@Service() -export default class PaymentReceivesPages { - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - /** - * Retrive page invoices entries from the given sale invoices models. - * @param {ISaleInvoice[]} invoices - Invoices. - * @return {IPaymentReceivePageEntry} - */ - private invoiceToPageEntry(invoice: ISaleInvoice): IPaymentReceivePageEntry { - return { - entryType: 'invoice', - invoiceId: invoice.id, - invoiceNo: invoice.invoiceNo, - amount: invoice.balance, - dueAmount: invoice.dueAmount, - paymentAmount: invoice.paymentAmount, - totalPaymentAmount: invoice.paymentAmount, - currencyCode: invoice.currencyCode, - date: invoice.invoiceDate, - }; - } - - /** - * Retrieve payment receive new page receivable entries. - * @param {number} tenantId - Tenant id. - * @param {number} vendorId - Vendor id. - * @return {IPaymentReceivePageEntry[]} - */ - public async getNewPageEntries(tenantId: number, customerId: number) { - const { SaleInvoice } = this.tenancy.models(tenantId); - - // Retrieve due invoices. - const entries = await SaleInvoice.query() - .modify('delivered') - .modify('dueInvoices') - .where('customer_id', customerId) - .orderBy('invoice_date', 'ASC'); - - return entries.map(this.invoiceToPageEntry); - } - - /** - * Retrieve the payment receive details of the given id. - * @param {number} tenantId - Tenant id. - * @param {Integer} paymentReceiveId - Payment receive id. - */ - public async getPaymentReceiveEditPage( - tenantId: number, - paymentReceiveId: number, - ): Promise<{ - paymentReceive: Omit; - entries: IPaymentReceivePageEntry[]; - }> { - const { PaymentReceive, SaleInvoice } = this.tenancy.models(tenantId); - - // Retrieve payment receive. - const paymentReceive = await PaymentReceive.query() - .findById(paymentReceiveId) - .withGraphFetched('entries.invoice'); - - // Throw not found the payment receive. - if (!paymentReceive) { - throw new ServiceError(ERRORS.PAYMENT_RECEIVE_NOT_EXISTS); - } - const paymentEntries = paymentReceive.entries.map((entry) => ({ - ...this.invoiceToPageEntry(entry.invoice), - dueAmount: entry.invoice.dueAmount + entry.paymentAmount, - paymentAmount: entry.paymentAmount, - })); - // Retrieves all receivable bills that associated to the payment receive transaction. - const restReceivableInvoices = await SaleInvoice.query() - .modify('delivered') - .modify('dueInvoices') - .where('customer_id', paymentReceive.customerId) - .whereNotIn( - 'id', - paymentReceive.entries.map((entry) => entry.invoiceId) - ) - .orderBy('invoice_date', 'ASC'); - - const restReceivableEntries = restReceivableInvoices.map( - this.invoiceToPageEntry - ); - const entries = [...paymentEntries, ...restReceivableEntries]; - - return { - paymentReceive: omit(paymentReceive, ['entries']), - entries, - }; - } -} diff --git a/server/src/services/Sales/PaymentReceives/PaymentsReceives.ts b/server/src/services/Sales/PaymentReceives/PaymentsReceives.ts deleted file mode 100644 index 3469ed41c..000000000 --- a/server/src/services/Sales/PaymentReceives/PaymentsReceives.ts +++ /dev/null @@ -1,826 +0,0 @@ -import { omit, sumBy, difference } from 'lodash'; -import { Service, Inject } from 'typedi'; -import * as R from 'ramda'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import events from 'subscribers/events'; -import { - IAccount, - IFilterMeta, - IPaginationMeta, - IPaymentReceive, - IPaymentReceiveCreateDTO, - IPaymentReceiveEditDTO, - IPaymentReceiveEntry, - IPaymentReceiveEntryDTO, - IPaymentReceivesFilter, - IPaymentsReceiveService, - ISaleInvoice, - ISystemUser, -} from 'interfaces'; -import AccountsService from 'services/Accounts/AccountsService'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import JournalEntry from 'services/Accounting/JournalEntry'; -import JournalPosterService from 'services/Sales/JournalPosterService'; -import TenancyService from 'services/Tenancy/TenancyService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { formatDateFields, entriesAmountDiff } from 'utils'; -import { ServiceError } from 'exceptions'; -import CustomersService from 'services/Contacts/CustomersService'; -import ItemsEntriesService from 'services/Items/ItemsEntriesService'; -import JournalCommands from 'services/Accounting/JournalCommands'; -import { ACCOUNT_PARENT_TYPE, ACCOUNT_TYPE } from 'data/AccountTypes'; -import AutoIncrementOrdersService from '../AutoIncrementOrdersService'; -import { ERRORS } from './constants'; -import PaymentReceiveTransfromer from './PaymentReceiveTransformer'; - -/** - * Payment receive service. - * @service - */ -@Service('PaymentReceives') -export default class PaymentReceiveService implements IPaymentsReceiveService { - @Inject() - accountsService: AccountsService; - - @Inject() - customersService: CustomersService; - - @Inject() - itemsEntries: ItemsEntriesService; - - @Inject() - tenancy: TenancyService; - - @Inject() - journalService: JournalPosterService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject() - autoIncrementOrdersService: AutoIncrementOrdersService; - - @Inject('logger') - logger: any; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - /** - * Validates the payment receive number existance. - * @param {number} tenantId - - * @param {string} paymentReceiveNo - - */ - async validatePaymentReceiveNoExistance( - tenantId: number, - paymentReceiveNo: string, - notPaymentReceiveId?: number - ): Promise { - const { PaymentReceive } = this.tenancy.models(tenantId); - const paymentReceive = await PaymentReceive.query() - .findOne('payment_receive_no', paymentReceiveNo) - .onBuild((builder) => { - if (notPaymentReceiveId) { - builder.whereNot('id', notPaymentReceiveId); - } - }); - - if (paymentReceive) { - throw new ServiceError(ERRORS.PAYMENT_RECEIVE_NO_EXISTS); - } - } - - /** - * Validates the payment receive existance. - * @param {number} tenantId - Tenant id. - * @param {number} paymentReceiveId - Payment receive id. - */ - async getPaymentReceiveOrThrowError( - tenantId: number, - paymentReceiveId: number - ): Promise { - const { PaymentReceive } = this.tenancy.models(tenantId); - const paymentReceive = await PaymentReceive.query() - .withGraphFetched('entries') - .findById(paymentReceiveId); - - if (!paymentReceive) { - throw new ServiceError(ERRORS.PAYMENT_RECEIVE_NOT_EXISTS); - } - return paymentReceive; - } - - /** - * Validate the deposit account id existance. - * @param {number} tenantId - Tenant id. - * @param {number} depositAccountId - Deposit account id. - * @return {Promise} - */ - async getDepositAccountOrThrowError( - tenantId: number, - depositAccountId: number - ): Promise { - const { accountRepository } = this.tenancy.repositories(tenantId); - - const depositAccount = await accountRepository.findOneById( - depositAccountId - ); - if (!depositAccount) { - throw new ServiceError(ERRORS.DEPOSIT_ACCOUNT_NOT_FOUND); - } - // Detarmines whether the account is cash, bank or other current asset. - if ( - !depositAccount.isAccountType([ - ACCOUNT_TYPE.CASH, - ACCOUNT_TYPE.BANK, - ACCOUNT_TYPE.OTHER_CURRENT_ASSET, - ]) - ) { - throw new ServiceError(ERRORS.DEPOSIT_ACCOUNT_INVALID_TYPE); - } - return depositAccount; - } - - /** - * Validates the invoices IDs existance. - * @param {number} tenantId - - * @param {number} customerId - - * @param {IPaymentReceiveEntryDTO[]} paymentReceiveEntries - - */ - async validateInvoicesIDsExistance( - tenantId: number, - customerId: number, - paymentReceiveEntries: IPaymentReceiveEntryDTO[] - ): Promise { - const { SaleInvoice } = this.tenancy.models(tenantId); - - const invoicesIds = paymentReceiveEntries.map( - (e: IPaymentReceiveEntryDTO) => e.invoiceId - ); - const storedInvoices = await SaleInvoice.query() - .whereIn('id', invoicesIds) - .where('customer_id', customerId); - - const storedInvoicesIds = storedInvoices.map((invoice) => invoice.id); - const notFoundInvoicesIDs = difference(invoicesIds, storedInvoicesIds); - - if (notFoundInvoicesIDs.length > 0) { - throw new ServiceError(ERRORS.INVOICES_IDS_NOT_FOUND); - } - // Filters the not delivered invoices. - const notDeliveredInvoices = storedInvoices.filter( - (invoice) => !invoice.isDelivered - ); - - if (notDeliveredInvoices.length > 0) { - throw new ServiceError(ERRORS.INVOICES_NOT_DELIVERED_YET, null, { - notDeliveredInvoices, - }); - } - return storedInvoices; - } - - /** - * Validates entries invoice payment amount. - * @param {Request} req - - * @param {Response} res - - * @param {Function} next - - */ - async validateInvoicesPaymentsAmount( - tenantId: number, - paymentReceiveEntries: IPaymentReceiveEntryDTO[], - oldPaymentEntries: IPaymentReceiveEntry[] = [] - ) { - const { SaleInvoice } = this.tenancy.models(tenantId); - const invoicesIds = paymentReceiveEntries.map( - (e: IPaymentReceiveEntryDTO) => e.invoiceId - ); - - const storedInvoices = await SaleInvoice.query().whereIn('id', invoicesIds); - - const storedInvoicesMap = new Map( - storedInvoices.map((invoice: ISaleInvoice) => { - const oldEntries = oldPaymentEntries.filter((entry) => entry.invoiceId); - const oldPaymentAmount = sumBy(oldEntries, 'paymentAmount') || 0; - - return [ - invoice.id, - { ...invoice, dueAmount: invoice.dueAmount + oldPaymentAmount }, - ]; - }) - ); - const hasWrongPaymentAmount: any[] = []; - - paymentReceiveEntries.forEach( - (entry: IPaymentReceiveEntryDTO, index: number) => { - const entryInvoice = storedInvoicesMap.get(entry.invoiceId); - const { dueAmount } = entryInvoice; - - if (dueAmount < entry.paymentAmount) { - hasWrongPaymentAmount.push({ index, due_amount: dueAmount }); - } - } - ); - if (hasWrongPaymentAmount.length > 0) { - throw new ServiceError(ERRORS.INVALID_PAYMENT_AMOUNT); - } - } - - /** - * Retrieve the next unique payment receive number. - * @param {number} tenantId - Tenant id. - * @return {string} - */ - getNextPaymentReceiveNumber(tenantId: number): string { - return this.autoIncrementOrdersService.getNextTransactionNumber( - tenantId, - 'payment_receives' - ); - } - - /** - * Increment the payment receive next number. - * @param {number} tenantId - */ - incrementNextPaymentReceiveNumber(tenantId: number) { - return this.autoIncrementOrdersService.incrementSettingsNextNumber( - tenantId, - 'payment_receives' - ); - } - - /** - * Validate the payment receive number require. - * @param {IPaymentReceive} paymentReceiveObj - */ - validatePaymentReceiveNoRequire(paymentReceiveObj: IPaymentReceive) { - if (!paymentReceiveObj.paymentReceiveNo) { - throw new ServiceError(ERRORS.PAYMENT_RECEIVE_NO_IS_REQUIRED); - } - } - - /** - * Validate the payment receive entries IDs existance. - * @param {number} tenantId - * @param {number} paymentReceiveId - * @param {IPaymentReceiveEntryDTO[]} paymentReceiveEntries - */ - private async validateEntriesIdsExistance( - tenantId: number, - paymentReceiveId: number, - paymentReceiveEntries: IPaymentReceiveEntryDTO[] - ) { - const { PaymentReceiveEntry } = this.tenancy.models(tenantId); - - const entriesIds = paymentReceiveEntries - .filter((entry) => entry.id) - .map((entry) => entry.id); - - const storedEntries = await PaymentReceiveEntry.query().where( - 'payment_receive_id', - paymentReceiveId - ); - const storedEntriesIds = storedEntries.map((entry: any) => entry.id); - const notFoundEntriesIds = difference(entriesIds, storedEntriesIds); - - if (notFoundEntriesIds.length > 0) { - throw new ServiceError(ERRORS.ENTRIES_IDS_NOT_EXISTS); - } - } - - /** - * Validates the payment receive number require. - * @param {string} paymentReceiveNo - */ - validatePaymentNoRequire(paymentReceiveNo: string) { - if (!paymentReceiveNo) { - throw new ServiceError(ERRORS.PAYMENT_RECEIVE_NO_REQUIRED); - } - } - - /** - * Validate the payment customer whether modified. - * @param {IPaymentReceiveEditDTO} paymentReceiveDTO - * @param {IPaymentReceive} oldPaymentReceive - */ - validateCustomerNotModified( - paymentReceiveDTO: IPaymentReceiveEditDTO, - oldPaymentReceive: IPaymentReceive - ) { - if (paymentReceiveDTO.customerId !== oldPaymentReceive.customerId) { - throw new ServiceError(ERRORS.PAYMENT_CUSTOMER_SHOULD_NOT_UPDATE); - } - } - - /** - * Transformes the create payment receive DTO to model object. - * @param {number} tenantId - * @param {IPaymentReceiveCreateDTO|IPaymentReceiveEditDTO} paymentReceiveDTO - Payment receive DTO. - * @param {IPaymentReceive} oldPaymentReceive - - * @return {IPaymentReceive} - */ - async transformPaymentReceiveDTOToModel( - tenantId: number, - paymentReceiveDTO: IPaymentReceiveCreateDTO | IPaymentReceiveEditDTO, - oldPaymentReceive?: IPaymentReceive - ): Promise { - const paymentAmount = sumBy(paymentReceiveDTO.entries, 'paymentAmount'); - - // Retrieve customer details. - const customer = await this.customersService.getCustomerByIdOrThrowError( - tenantId, - paymentReceiveDTO.customerId - ); - // Retreive the next invoice number. - const autoNextNumber = this.getNextPaymentReceiveNumber(tenantId); - - // Retrieve the next payment receive number. - const paymentReceiveNo = - paymentReceiveDTO.paymentReceiveNo || - oldPaymentReceive?.paymentReceiveNo || - autoNextNumber; - - this.validatePaymentNoRequire(paymentReceiveNo); - - return { - amount: paymentAmount, - currencyCode: customer.currencyCode, - ...formatDateFields(omit(paymentReceiveDTO, ['entries']), [ - 'paymentDate', - ]), - ...(paymentReceiveNo ? { paymentReceiveNo } : {}), - entries: paymentReceiveDTO.entries.map((entry) => ({ - ...entry, - })), - }; - } - - /** - * Creates a new payment receive and store it to the storage - * with associated invoices payment and journal transactions. - * @async - * @param {number} tenantId - Tenant id. - * @param {IPaymentReceive} paymentReceive - */ - public async createPaymentReceive( - tenantId: number, - paymentReceiveDTO: IPaymentReceiveCreateDTO, - authorizedUser: ISystemUser - ) { - const { PaymentReceive } = this.tenancy.models(tenantId); - - // Transformes the payment receive DTO to model. - const paymentReceiveObj = await this.transformPaymentReceiveDTOToModel( - tenantId, - paymentReceiveDTO - ); - // Validate payment receive number uniquiness. - await this.validatePaymentReceiveNoExistance( - tenantId, - paymentReceiveObj.paymentReceiveNo - ); - // Validate customer existance. - await this.customersService.getCustomerByIdOrThrowError( - tenantId, - paymentReceiveDTO.customerId - ); - // Validate the deposit account existance and type. - await this.getDepositAccountOrThrowError( - tenantId, - paymentReceiveDTO.depositAccountId - ); - // Validate payment receive invoices IDs existance. - await this.validateInvoicesIDsExistance( - tenantId, - paymentReceiveDTO.customerId, - paymentReceiveDTO.entries - ); - // Validate invoice payment amount. - await this.validateInvoicesPaymentsAmount( - tenantId, - paymentReceiveDTO.entries - ); - this.logger.info('[payment_receive] inserting to the storage.'); - const paymentReceive = await PaymentReceive.query().insertGraphAndFetch({ - ...paymentReceiveObj, - }); - // Triggers `onPaymentReceiveCreated` event. - await this.eventDispatcher.dispatch(events.paymentReceive.onCreated, { - tenantId, - paymentReceive, - paymentReceiveId: paymentReceive.id, - authorizedUser, - }); - this.logger.info('[payment_receive] updated successfully.', { - tenantId, - paymentReceive, - }); - - return paymentReceive; - } - - /** - * Edit details the given payment receive with associated entries. - * ------ - * - Update the payment receive transactions. - * - Insert the new payment receive entries. - * - Update the given payment receive entries. - * - Delete the not presented payment receive entries. - * - Re-insert the journal transactions and update the different accounts balance. - * - Update the different customer balances. - * - Update the different invoice payment amount. - * @async - * @param {number} tenantId - - * @param {Integer} paymentReceiveId - - * @param {IPaymentReceive} paymentReceive - - */ - public async editPaymentReceive( - tenantId: number, - paymentReceiveId: number, - paymentReceiveDTO: IPaymentReceiveEditDTO, - authorizedUser: ISystemUser - ) { - const { PaymentReceive } = this.tenancy.models(tenantId); - - this.logger.info('[payment_receive] trying to edit payment receive.', { - tenantId, - paymentReceiveId, - paymentReceiveDTO, - }); - // Validate the payment receive existance. - const oldPaymentReceive = await this.getPaymentReceiveOrThrowError( - tenantId, - paymentReceiveId - ); - // Transformes the payment receive DTO to model. - const paymentReceiveObj = await this.transformPaymentReceiveDTOToModel( - tenantId, - paymentReceiveDTO, - oldPaymentReceive - ); - // Validate customer whether modified. - this.validateCustomerNotModified(paymentReceiveDTO, oldPaymentReceive); - - // Validate payment receive number uniquiness. - if (paymentReceiveDTO.paymentReceiveNo) { - await this.validatePaymentReceiveNoExistance( - tenantId, - paymentReceiveDTO.paymentReceiveNo, - paymentReceiveId - ); - } - // Validate the deposit account existance and type. - this.getDepositAccountOrThrowError( - tenantId, - paymentReceiveDTO.depositAccountId - ); - // Validate the entries ids existance on payment receive type. - await this.validateEntriesIdsExistance( - tenantId, - paymentReceiveId, - paymentReceiveDTO.entries - ); - // Validate payment receive invoices IDs existance and associated to the given customer id. - await this.validateInvoicesIDsExistance( - tenantId, - oldPaymentReceive.customerId, - paymentReceiveDTO.entries - ); - // Validate invoice payment amount. - await this.validateInvoicesPaymentsAmount( - tenantId, - paymentReceiveDTO.entries, - oldPaymentReceive.entries - ); - // Update the payment receive transaction. - const paymentReceive = await PaymentReceive.query().upsertGraphAndFetch({ - id: paymentReceiveId, - ...paymentReceiveObj, - }); - - await this.eventDispatcher.dispatch(events.paymentReceive.onEdited, { - tenantId, - paymentReceiveId, - paymentReceive, - oldPaymentReceive, - authorizedUser, - }); - this.logger.info('[payment_receive] upserted successfully.', { - tenantId, - paymentReceiveId, - }); - } - - /** - * Deletes the given payment receive with associated entries - * and journal transactions. - * ----- - * - Deletes the payment receive transaction. - * - Deletes the payment receive associated entries. - * - Deletes the payment receive associated journal transactions. - * - Revert the customer balance. - * - Revert the payment amount of the associated invoices. - * @async - * @param {number} tenantId - Tenant id. - * @param {Integer} paymentReceiveId - Payment receive id. - * @param {IPaymentReceive} paymentReceive - Payment receive object. - */ - public async deletePaymentReceive( - tenantId: number, - paymentReceiveId: number, - authorizedUser: ISystemUser - ) { - const { PaymentReceive, PaymentReceiveEntry } = this.tenancy.models( - tenantId - ); - // Retreive payment receive or throw not found service error. - const oldPaymentReceive = await this.getPaymentReceiveOrThrowError( - tenantId, - paymentReceiveId - ); - - // Deletes the payment receive associated entries. - await PaymentReceiveEntry.query() - .where('payment_receive_id', paymentReceiveId) - .delete(); - - // Deletes the payment receive transaction. - await PaymentReceive.query().findById(paymentReceiveId).delete(); - - // Triggers `onPaymentReceiveDeleted` event. - await this.eventDispatcher.dispatch(events.paymentReceive.onDeleted, { - tenantId, - paymentReceiveId, - oldPaymentReceive, - authorizedUser, - }); - this.logger.info('[payment_receive] deleted successfully.', { - tenantId, - paymentReceiveId, - }); - } - - /** - * Retrieve payment receive details. - * @param {number} tenantId - Tenant id. - * @param {number} paymentReceiveId - Payment receive id. - * @return {Promise} - */ - public async getPaymentReceive( - tenantId: number, - paymentReceiveId: number - ): Promise { - const { PaymentReceive } = this.tenancy.models(tenantId); - const paymentReceive = await PaymentReceive.query() - .withGraphFetched('customer') - .withGraphFetched('depositAccount') - .withGraphFetched('entries.invoice') - .withGraphFetched('transactions') - .findById(paymentReceiveId); - - if (!paymentReceive) { - throw new ServiceError(ERRORS.PAYMENT_RECEIVE_NOT_EXISTS); - } - return new PaymentReceiveTransfromer().transform(paymentReceive); - } - - /** - * Retrieve sale invoices that assocaited to the given payment receive. - * @param {number} tenantId - Tenant id. - * @param {number} paymentReceiveId - Payment receive id. - * @return {Promise} - */ - public async getPaymentReceiveInvoices( - tenantId: number, - paymentReceiveId: number - ) { - const { SaleInvoice } = this.tenancy.models(tenantId); - - const paymentReceive = await this.getPaymentReceiveOrThrowError( - tenantId, - paymentReceiveId - ); - const paymentReceiveInvoicesIds = paymentReceive.entries.map( - (entry) => entry.invoiceId - ); - const saleInvoices = await SaleInvoice.query().whereIn( - 'id', - paymentReceiveInvoicesIds - ); - - return saleInvoices; - } - - /** - * Parses payments receive list filter DTO. - * @param filterDTO - */ - private parseListFilterDTO(filterDTO) { - return R.compose( - this.dynamicListService.parseStringifiedFilter - )(filterDTO); - } - - /** - * Retrieve payment receives paginated and filterable list. - * @param {number} tenantId - * @param {IPaymentReceivesFilter} paymentReceivesFilter - */ - public async listPaymentReceives( - tenantId: number, - filterDTO: IPaymentReceivesFilter - ): Promise<{ - paymentReceives: IPaymentReceive[]; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }> { - const { PaymentReceive } = this.tenancy.models(tenantId); - - // Parses filter DTO. - const filter = this.parseListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicList = await this.dynamicListService.dynamicList( - tenantId, - PaymentReceive, - filter - ); - - const { results, pagination } = await PaymentReceive.query() - .onBuild((builder) => { - builder.withGraphFetched('customer'); - builder.withGraphFetched('depositAccount'); - dynamicList.buildQuery()(builder); - }) - .pagination( - filter.page - 1, - filter.pageSize - ); - - const transformedPayments = new PaymentReceiveTransfromer().transform(results); - - return { - paymentReceives: transformedPayments, - pagination, - filterMeta: dynamicList.getResponseMeta(), - }; - } - - /** - * Records payment receive journal transactions. - * - * Invoice payment journals. - * -------- - * - Account receivable -> Debit - * - Payment account [current asset] -> Credit - */ - public async recordPaymentReceiveJournalEntries( - tenantId: number, - paymentReceive: IPaymentReceive, - authorizedUserId: number, - override: boolean = false - ): Promise { - const { - accountRepository, - transactionsRepository, - } = this.tenancy.repositories(tenantId); - - const paymentAmount = sumBy(paymentReceive.entries, 'paymentAmount'); - - // Retrieve the receivable account. - const receivableAccount = await accountRepository.findOne({ - slug: 'accounts-receivable', - }); - // Accounts dependency graph. - const accountsDepGraph = await accountRepository.getDependencyGraph(); - - const journal = new JournalPoster(tenantId, accountsDepGraph); - const commonJournal = { - debit: 0, - credit: 0, - referenceId: paymentReceive.id, - referenceType: 'PaymentReceive', - - transactionNumber: paymentReceive.paymentReceiveNo, - referenceNumber: paymentReceive.referenceNo, - - date: paymentReceive.paymentDate, - userId: authorizedUserId, - createdAt: paymentReceive.createdAt, - }; - if (override) { - const transactions = await transactionsRepository.journal({ - referenceType: ['PaymentReceive'], - referenceId: [paymentReceive.id], - }); - journal.fromTransactions(transactions); - journal.removeEntries(); - } - const creditReceivable = new JournalEntry({ - ...commonJournal, - credit: paymentAmount, - contactId: paymentReceive.customerId, - account: receivableAccount.id, - index: 1, - }); - const debitDepositAccount = new JournalEntry({ - ...commonJournal, - debit: paymentAmount, - account: paymentReceive.depositAccountId, - index: 2, - }); - journal.credit(creditReceivable); - journal.debit(debitDepositAccount); - - await Promise.all([ - journal.deleteEntries(), - journal.saveEntries(), - journal.saveBalance(), - journal.saveContactsBalance(), - ]); - } - - /** - * Reverts the given payment receive journal entries. - * @param {number} tenantId - Tenant id. - * @param {number} paymentReceiveId - Payment receive id. - */ - async revertPaymentReceiveJournalEntries( - tenantId: number, - paymentReceiveId: number - ) { - const { accountRepository } = this.tenancy.repositories(tenantId); - - // Accounts dependency graph. - const accountsDepGraph = await accountRepository.getDependencyGraph(); - - const journal = new JournalPoster(tenantId, accountsDepGraph); - const commands = new JournalCommands(journal); - - await commands.revertJournalEntries(paymentReceiveId, 'PaymentReceive'); - - await Promise.all([ - journal.saveBalance(), - journal.deleteEntries(), - journal.saveContactsBalance(), - ]); - } - - /** - * Saves difference changing between old and new invoice payment amount. - * @async - * @param {number} tenantId - Tenant id. - * @param {Array} paymentReceiveEntries - * @param {Array} newPaymentReceiveEntries - * @return {Promise} - */ - public async saveChangeInvoicePaymentAmount( - tenantId: number, - newPaymentReceiveEntries: IPaymentReceiveEntryDTO[], - oldPaymentReceiveEntries?: IPaymentReceiveEntryDTO[] - ): Promise { - const { SaleInvoice } = this.tenancy.models(tenantId); - const opers: Promise[] = []; - - const diffEntries = entriesAmountDiff( - newPaymentReceiveEntries, - oldPaymentReceiveEntries, - 'paymentAmount', - 'invoiceId' - ); - diffEntries.forEach((diffEntry: any) => { - if (diffEntry.paymentAmount === 0) { - return; - } - const oper = SaleInvoice.changePaymentAmount( - diffEntry.invoiceId, - diffEntry.paymentAmount - ); - opers.push(oper); - }); - await Promise.all([...opers]); - } - - /** - * Validate the given customer has no payments receives. - * @param {number} tenantId - * @param {number} customerId - Customer id. - */ - public async validateCustomerHasNoPayments( - tenantId: number, - customerId: number - ) { - const { PaymentReceive } = this.tenancy.models(tenantId); - - const paymentReceives = await PaymentReceive.query().where( - 'customer_id', - customerId - ); - if (paymentReceives.length > 0) { - throw new ServiceError(ERRORS.CUSTOMER_HAS_PAYMENT_RECEIVES); - } - } -} diff --git a/server/src/services/Sales/PaymentReceives/constants.ts b/server/src/services/Sales/PaymentReceives/constants.ts deleted file mode 100644 index 831d9d9f4..000000000 --- a/server/src/services/Sales/PaymentReceives/constants.ts +++ /dev/null @@ -1,17 +0,0 @@ -export const ERRORS = { - PAYMENT_RECEIVE_NO_EXISTS: 'PAYMENT_RECEIVE_NO_EXISTS', - PAYMENT_RECEIVE_NOT_EXISTS: 'PAYMENT_RECEIVE_NOT_EXISTS', - DEPOSIT_ACCOUNT_NOT_FOUND: 'DEPOSIT_ACCOUNT_NOT_FOUND', - DEPOSIT_ACCOUNT_INVALID_TYPE: 'DEPOSIT_ACCOUNT_INVALID_TYPE', - INVALID_PAYMENT_AMOUNT: 'INVALID_PAYMENT_AMOUNT', - INVOICES_IDS_NOT_FOUND: 'INVOICES_IDS_NOT_FOUND', - ENTRIES_IDS_NOT_EXISTS: 'ENTRIES_IDS_NOT_EXISTS', - INVOICES_NOT_DELIVERED_YET: 'INVOICES_NOT_DELIVERED_YET', - PAYMENT_RECEIVE_NO_IS_REQUIRED: 'PAYMENT_RECEIVE_NO_IS_REQUIRED', - PAYMENT_RECEIVE_NO_REQUIRED: 'PAYMENT_RECEIVE_NO_REQUIRED', - PAYMENT_CUSTOMER_SHOULD_NOT_UPDATE: 'PAYMENT_CUSTOMER_SHOULD_NOT_UPDATE', - CUSTOMER_HAS_PAYMENT_RECEIVES: 'CUSTOMER_HAS_PAYMENT_RECEIVES' -}; - - -export const DEFAULT_VIEWS = []; \ No newline at end of file diff --git a/server/src/services/Sales/Receipts/SaleReceiptTransformer.ts b/server/src/services/Sales/Receipts/SaleReceiptTransformer.ts deleted file mode 100644 index fc9ff213a..000000000 --- a/server/src/services/Sales/Receipts/SaleReceiptTransformer.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { Service } from 'typedi'; -import { ISaleReceipt } from 'interfaces'; -import { Transformer } from 'lib/Transformer/Transformer'; -import { formatNumber } from 'utils'; - -@Service() -export default class SaleReceiptTransformer extends Transformer { - /** - * Include these attributes to sale invoice object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return ['formattedAmount', 'formattedReceiptDate', 'formattedClosedAtDate']; - }; - - /** - * Retrieve formatted receipt date. - * @param {ISaleReceipt} invoice - * @returns {String} - */ - protected formattedReceiptDate = (receipt: ISaleReceipt): string => { - return this.formatDate(receipt.receiptDate); - }; - - /** - * Retrieve formatted estimate closed at date. - * @param {ISaleReceipt} invoice - * @returns {String} - */ - protected formattedClosedAtDate = (receipt: ISaleReceipt): string => { - return this.formatDate(receipt.closedAt); - }; - - /** - * Retrieve formatted invoice amount. - * @param {ISaleReceipt} estimate - * @returns {string} - */ - protected formattedAmount = (receipt: ISaleReceipt): string => { - return formatNumber(receipt.amount, { - currencyCode: receipt.currencyCode, - }); - }; -} diff --git a/server/src/services/Sales/Receipts/SaleReceiptsPdfService.ts b/server/src/services/Sales/Receipts/SaleReceiptsPdfService.ts deleted file mode 100644 index 06bd52a19..000000000 --- a/server/src/services/Sales/Receipts/SaleReceiptsPdfService.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Inject, Service } from 'typedi'; -import PdfService from 'services/PDF/PdfService'; -import { templateRender } from 'utils'; -import HasTenancyService from 'services/Tenancy/TenancyService'; - -@Service() -export default class SaleReceiptsPdf { - @Inject() - pdfService: PdfService; - - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve sale invoice pdf content. - * @param {} saleInvoice - - */ - async saleReceiptPdf(tenantId: number, saleReceipt) { - const i18n = this.tenancy.i18n(tenantId); - const settings = this.tenancy.settings(tenantId); - - const organizationName = settings.get({ - group: 'organization', - key: 'name', - }); - const organizationEmail = settings.get({ - group: 'organization', - key: 'email', - }); - - const htmlContent = templateRender('modules/receipt-regular', { - saleReceipt, - organizationEmail, - organizationName, - ...i18n, - }); - const pdfContent = await this.pdfService.pdfDocument(htmlContent); - - return pdfContent; - } -} diff --git a/server/src/services/Sales/Receipts/constants.ts b/server/src/services/Sales/Receipts/constants.ts deleted file mode 100644 index bf0cdef18..000000000 --- a/server/src/services/Sales/Receipts/constants.ts +++ /dev/null @@ -1,31 +0,0 @@ -export const ERRORS = { - SALE_RECEIPT_NOT_FOUND: 'SALE_RECEIPT_NOT_FOUND', - DEPOSIT_ACCOUNT_NOT_FOUND: 'DEPOSIT_ACCOUNT_NOT_FOUND', - DEPOSIT_ACCOUNT_NOT_CURRENT_ASSET: 'DEPOSIT_ACCOUNT_NOT_CURRENT_ASSET', - SALE_RECEIPT_NUMBER_NOT_UNIQUE: 'SALE_RECEIPT_NUMBER_NOT_UNIQUE', - SALE_RECEIPT_IS_ALREADY_CLOSED: 'SALE_RECEIPT_IS_ALREADY_CLOSED', - SALE_RECEIPT_NO_IS_REQUIRED: 'SALE_RECEIPT_NO_IS_REQUIRED', - CUSTOMER_HAS_SALES_INVOICES: 'CUSTOMER_HAS_SALES_INVOICES', -}; - -export const DEFAULT_VIEW_COLUMNS = []; -export const DEFAULT_VIEWS = [ - { - name: 'Draft', - slug: 'draft', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'draft' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Closed', - slug: 'closed', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'closed' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, -]; diff --git a/server/src/services/Sales/SaleInvoicePdf.ts b/server/src/services/Sales/SaleInvoicePdf.ts deleted file mode 100644 index 6a966df63..000000000 --- a/server/src/services/Sales/SaleInvoicePdf.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Inject, Service } from 'typedi'; -import PdfService from 'services/PDF/PdfService'; -import { templateRender } from 'utils'; -import HasTenancyService from 'services/Tenancy/TenancyService'; - -@Service() -export default class SaleInvoicePdf { - @Inject() - pdfService: PdfService - - @Inject() - tenancy: HasTenancyService; - - /** - * Retrieve sale invoice pdf content. - * @param {} saleInvoice - - */ - async saleInvoicePdf(tenantId: number, saleInvoice) { - const i18n = this.tenancy.i18n(tenantId); - const settings = this.tenancy.settings(tenantId); - - const organizationName = settings.get({ group: 'organization', key: 'name' }); - const organizationEmail = settings.get({ group: 'organization', key: 'email' }); - - const htmlContent = templateRender('modules/invoice-regular', { - organizationName, - organizationEmail, - saleInvoice, - ...i18n - }); - const pdfContent = await this.pdfService.pdfDocument(htmlContent); - - return pdfContent; - } -} diff --git a/server/src/services/Sales/SaleInvoiceTransformer.ts b/server/src/services/Sales/SaleInvoiceTransformer.ts deleted file mode 100644 index 5d8e177ca..000000000 --- a/server/src/services/Sales/SaleInvoiceTransformer.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Service } from 'typedi'; -import { Transformer } from 'lib/Transformer/Transformer'; -import { formatNumber } from 'utils'; - -export default class SaleInvoiceTransformer extends Transformer { - /** - * Include these attributes to sale invoice object. - * @returns {Array} - */ - protected includeAttributes = (): string[] => { - return [ - 'formattedInvoiceDate', - 'formattedDueDate', - 'formattedAmount', - 'formattedDueAmount', - 'formattedPaymentAmount', - ]; - }; - - /** - * Retrieve formatted invoice date. - * @param {ISaleInvoice} invoice - * @returns {String} - */ - protected formattedInvoiceDate = (invoice): string => { - return this.formatDate(invoice.invoiceDate); - }; - - /** - * Retrieve formatted due date. - * @param {ISaleInvoice} invoice - * @returns {string} - */ - protected formattedDueDate = (invoice): string => { - return this.formatDate(invoice.dueDate); - }; - - /** - * Retrieve formatted invoice amount. - * @param {ISaleInvoice} invoice - * @returns {string} - */ - protected formattedAmount = (invoice): string => { - return formatNumber(invoice.balance, { - currencyCode: invoice.currencyCode, - }); - }; - - /** - * Retrieve formatted invoice due amount. - * @param {ISaleInvoice} invoice - * @returns {string} - */ - protected formattedDueAmount = (invoice): string => { - return formatNumber(invoice.dueAmount, { - currencyCode: invoice.currencyCode, - }); - }; - - /** - * Retrieve formatted payment amount. - * @param {ISaleInvoice} invoice - * @returns {string} - */ - protected formattedPaymentAmount = (invoice): string => { - return formatNumber(invoice.paymentAmount, { - currencyCode: invoice.currencyCode, - }); - }; -} diff --git a/server/src/services/Sales/SalesEstimate.ts b/server/src/services/Sales/SalesEstimate.ts deleted file mode 100644 index 0091049dd..000000000 --- a/server/src/services/Sales/SalesEstimate.ts +++ /dev/null @@ -1,606 +0,0 @@ -import { filter, omit, sumBy } from 'lodash'; -import { Service, Inject } from 'typedi'; -import * as R from 'ramda'; -import { - IEstimatesFilter, - IFilterMeta, - IPaginationMeta, - ISaleEstimate, - ISaleEstimateDTO, - ISalesEstimatesService, -} from 'interfaces'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import { formatDateFields } from 'utils'; -import TenancyService from 'services/Tenancy/TenancyService'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import ItemsEntriesService from 'services/Items/ItemsEntriesService'; -import events from 'subscribers/events'; -import { ServiceError } from 'exceptions'; -import CustomersService from 'services/Contacts/CustomersService'; -import moment from 'moment'; -import AutoIncrementOrdersService from './AutoIncrementOrdersService'; -import SaleEstimateTransformer from './Estimates/SaleEstimateTransformer'; -import { ERRORS } from './Estimates/constants'; - -/** - * Sale estimate service. - * @Service - */ -@Service('SalesEstimates') -export default class SaleEstimateService implements ISalesEstimatesService{ - @Inject() - tenancy: TenancyService; - - @Inject() - itemsEntriesService: ItemsEntriesService; - - @Inject() - customersService: CustomersService; - - @Inject('logger') - logger: any; - - @Inject() - dynamicListService: DynamicListingService; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject() - autoIncrementOrdersService: AutoIncrementOrdersService; - - /** - * Retrieve sale estimate or throw service error. - * @param {number} tenantId - * @return {ISaleEstimate} - */ - async getSaleEstimateOrThrowError(tenantId: number, saleEstimateId: number) { - const { SaleEstimate } = this.tenancy.models(tenantId); - const foundSaleEstimate = await SaleEstimate.query().findById( - saleEstimateId - ); - - if (!foundSaleEstimate) { - throw new ServiceError(ERRORS.SALE_ESTIMATE_NOT_FOUND); - } - return foundSaleEstimate; - } - - /** - * Validate the estimate number unique on the storage. - * @param {Request} req - * @param {Response} res - * @param {Function} next - */ - async validateEstimateNumberExistance( - tenantId: number, - estimateNumber: string, - notEstimateId?: number - ) { - const { SaleEstimate } = this.tenancy.models(tenantId); - - const foundSaleEstimate = await SaleEstimate.query() - .findOne('estimate_number', estimateNumber) - .onBuild((builder) => { - if (notEstimateId) { - builder.whereNot('id', notEstimateId); - } - }); - if (foundSaleEstimate) { - throw new ServiceError(ERRORS.SALE_ESTIMATE_NUMBER_EXISTANCE); - } - } - - /** - * Validates the given sale estimate not already converted to invoice. - * @param {ISaleEstimate} saleEstimate - - */ - validateEstimateNotConverted(saleEstimate: ISaleEstimate) { - if (saleEstimate.isConvertedToInvoice) { - throw new ServiceError(ERRORS.SALE_ESTIMATE_CONVERTED_TO_INVOICE); - } - } - - /** - * Retrieve the next unique estimate number. - * @param {number} tenantId - Tenant id. - * @return {string} - */ - getNextEstimateNumber(tenantId: number): string { - return this.autoIncrementOrdersService.getNextTransactionNumber( - tenantId, - 'sales_estimates' - ); - } - - /** - * Increment the estimate next number. - * @param {number} tenantId - - */ - incrementNextEstimateNumber(tenantId: number) { - return this.autoIncrementOrdersService.incrementSettingsNextNumber( - tenantId, - 'sales_estimates' - ); - } - - /** - * Retrieve estimate number to object model. - * @param {number} tenantId - * @param {ISaleEstimateDTO} saleEstimateDTO - * @param {ISaleEstimate} oldSaleEstimate - */ - transformEstimateNumberToModel( - tenantId: number, - saleEstimateDTO: ISaleEstimateDTO, - oldSaleEstimate?: ISaleEstimate - ): string { - // Retreive the next invoice number. - const autoNextNumber = this.getNextEstimateNumber(tenantId); - - if (saleEstimateDTO.estimateNumber) { - return saleEstimateDTO.estimateNumber; - } - return oldSaleEstimate ? oldSaleEstimate.estimateNumber : autoNextNumber; - } - - /** - * Transform create DTO object ot model object. - * @param {number} tenantId - * @param {ISaleEstimateDTO} saleEstimateDTO - Sale estimate DTO. - * @return {ISaleEstimate} - */ - async transformDTOToModel( - tenantId: number, - estimateDTO: ISaleEstimateDTO, - oldSaleEstimate?: ISaleEstimate - ): Promise { - const { ItemEntry } = this.tenancy.models(tenantId); - const amount = sumBy(estimateDTO.entries, (e) => ItemEntry.calcAmount(e)); - - // Retreive the next invoice number. - const autoNextNumber = this.getNextEstimateNumber(tenantId); - - // Retreive the next estimate number. - const estimateNumber = - estimateDTO.estimateNumber || - oldSaleEstimate?.estimateNumber || - autoNextNumber; - - // Validate the sale estimate number require. - this.validateEstimateNoRequire(estimateNumber); - - // Retrieve customer details. - const customer = await this.customersService.getCustomerByIdOrThrowError( - tenantId, - estimateDTO.customerId - ); - - return { - amount, - ...formatDateFields(omit(estimateDTO, ['delivered', 'entries']), [ - 'estimateDate', - 'expirationDate', - ]), - currencyCode: customer.currencyCode, - ...(estimateNumber ? { estimateNumber } : {}), - entries: estimateDTO.entries.map((entry) => ({ - reference_type: 'SaleEstimate', - ...entry, - })), - // Avoid rewrite the deliver date in edit mode when already published. - ...(estimateDTO.delivered && - !oldSaleEstimate?.deliveredAt && { - deliveredAt: moment().toMySqlDateTime(), - }), - }; - } - - /** - * Validate the sale estimate number require. - * @param {ISaleEstimate} saleInvoiceObj - */ - validateEstimateNoRequire(estimateNumber: string) { - if (!estimateNumber) { - throw new ServiceError(ERRORS.SALE_ESTIMATE_NO_IS_REQUIRED); - } - } - - /** - * Creates a new estimate with associated entries. - * @async - * @param {number} tenantId - The tenant id. - * @param {EstimateDTO} estimate - * @return {Promise} - */ - public async createEstimate( - tenantId: number, - estimateDTO: ISaleEstimateDTO - ): Promise { - const { SaleEstimate } = this.tenancy.models(tenantId); - - this.logger.info('[sale_estimate] inserting sale estimate to the storage.'); - - // Transform DTO object ot model object. - const estimateObj = await this.transformDTOToModel(tenantId, estimateDTO); - // Validate estimate number uniquiness on the storage. - await this.validateEstimateNumberExistance( - tenantId, - estimateObj.estimateNumber - ); - // Retrieve the given customer or throw not found service error. - await this.customersService.getCustomerByIdOrThrowError( - tenantId, - estimateDTO.customerId - ); - // Validate items IDs existance on the storage. - await this.itemsEntriesService.validateItemsIdsExistance( - tenantId, - estimateDTO.entries - ); - // Validate non-sellable items. - await this.itemsEntriesService.validateNonSellableEntriesItems( - tenantId, - estimateDTO.entries - ); - - const saleEstimate = await SaleEstimate.query().upsertGraphAndFetch({ - ...estimateObj, - }); - - this.logger.info('[sale_estimate] insert sale estimated success.'); - await this.eventDispatcher.dispatch(events.saleEstimate.onCreated, { - tenantId, - saleEstimate, - saleEstimateId: saleEstimate.id, - saleEstimateDTO: estimateDTO, - }); - - return saleEstimate; - } - - /** - * Edit details of the given estimate with associated entries. - * @async - * @param {number} tenantId - The tenant id. - * @param {Integer} estimateId - * @param {EstimateDTO} estimate - * @return {void} - */ - public async editEstimate( - tenantId: number, - estimateId: number, - estimateDTO: ISaleEstimateDTO - ): Promise { - const { SaleEstimate } = this.tenancy.models(tenantId); - const oldSaleEstimate = await this.getSaleEstimateOrThrowError( - tenantId, - estimateId - ); - // Transform DTO object ot model object. - const estimateObj = await this.transformDTOToModel( - tenantId, - estimateDTO, - oldSaleEstimate - ); - // Validate estimate number uniquiness on the storage. - if (estimateDTO.estimateNumber) { - await this.validateEstimateNumberExistance( - tenantId, - estimateDTO.estimateNumber, - estimateId - ); - } - // Retrieve the given customer or throw not found service error. - await this.customersService.getCustomerByIdOrThrowError( - tenantId, - estimateDTO.customerId - ); - // Validate sale estimate entries existance. - await this.itemsEntriesService.validateEntriesIdsExistance( - tenantId, - estimateId, - 'SaleEstimate', - estimateDTO.entries - ); - // Validate items IDs existance on the storage. - await this.itemsEntriesService.validateItemsIdsExistance( - tenantId, - estimateDTO.entries - ); - // Validate non-sellable items. - await this.itemsEntriesService.validateNonSellableEntriesItems( - tenantId, - estimateDTO.entries - ); - - this.logger.info('[sale_estimate] editing sale estimate on the storage.'); - const saleEstimate = await SaleEstimate.query().upsertGraphAndFetch({ - id: estimateId, - ...estimateObj, - }); - - await this.eventDispatcher.dispatch(events.saleEstimate.onEdited, { - tenantId, - estimateId, - saleEstimate, - oldSaleEstimate, - }); - this.logger.info('[sale_estiamte] edited successfully', { - tenantId, - estimateId, - }); - - return saleEstimate; - } - - /** - * Deletes the given estimate id with associated entries. - * @async - * @param {number} tenantId - The tenant id. - * @param {IEstimate} estimateId - * @return {void} - */ - public async deleteEstimate( - tenantId: number, - estimateId: number - ): Promise { - const { SaleEstimate, ItemEntry } = this.tenancy.models(tenantId); - - // Retrieve sale estimate or throw not found service error. - const oldSaleEstimate = await this.getSaleEstimateOrThrowError( - tenantId, - estimateId - ); - // Throw error if the sale estimate converted to sale invoice. - if (oldSaleEstimate.convertedToInvoiceId) { - throw new ServiceError(ERRORS.SALE_ESTIMATE_CONVERTED_TO_INVOICE); - } - // Delete sale estimate entries. - await ItemEntry.query() - .where('reference_id', estimateId) - .where('reference_type', 'SaleEstimate') - .delete(); - - // Delete sale estimate transaction. - await SaleEstimate.query().where('id', estimateId).delete(); - - // Triggers `onSaleEstimatedDeleted` event. - await this.eventDispatcher.dispatch(events.saleEstimate.onDeleted, { - tenantId, - saleEstimateId: estimateId, - oldSaleEstimate, - }); - } - - /** - * Retrieve the estimate details with associated entries. - * @async - * @param {number} tenantId - The tenant id. - * @param {Integer} estimateId - */ - public async getEstimate(tenantId: number, estimateId: number) { - const { SaleEstimate } = this.tenancy.models(tenantId); - const estimate = await SaleEstimate.query() - .findById(estimateId) - .withGraphFetched('entries.item') - .withGraphFetched('customer'); - - if (!estimate) { - throw new ServiceError(ERRORS.SALE_ESTIMATE_NOT_FOUND); - } - return new SaleEstimateTransformer().transform(estimate); - } - - /** - * Parses estimates list filter DTO. - * @param filterDTO - */ - private parseListFilterDTO(filterDTO) { - return R.compose( - this.dynamicListService.parseStringifiedFilter - )(filterDTO); - } - - /** - * Retrieves estimates filterable and paginated list. - * @param {number} tenantId - - * @param {IEstimatesFilter} estimatesFilter - - */ - public async estimatesList( - tenantId: number, - filterDTO: IEstimatesFilter - ): Promise<{ - salesEstimates: ISaleEstimate[]; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }> { - const { SaleEstimate } = this.tenancy.models(tenantId); - - // Parses filter DTO. - const filter = this.parseListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicFilter = await this.dynamicListService.dynamicList( - tenantId, - SaleEstimate, - filter, - ); - - const { results, pagination } = await SaleEstimate.query() - .onBuild((builder) => { - builder.withGraphFetched('customer'); - builder.withGraphFetched('entries'); - dynamicFilter.buildQuery()(builder); - }) - .pagination(filter.page - 1, filter.pageSize); - - const transformedEstimates = new SaleEstimateTransformer().transform(results); - - return { - salesEstimates: transformedEstimates, - pagination, - filterMeta: dynamicFilter.getResponseMeta(), - }; - } - - /** - * Converts estimate to invoice. - * @param {number} tenantId - - * @param {number} estimateId - - * @return {Promise} - */ - async convertEstimateToInvoice( - tenantId: number, - estimateId: number, - invoiceId: number - ): Promise { - const { SaleEstimate } = this.tenancy.models(tenantId); - - // Retrieve details of the given sale estimate. - const saleEstimate = await this.getSaleEstimateOrThrowError( - tenantId, - estimateId - ); - - await SaleEstimate.query().where('id', estimateId).patch({ - convertedToInvoiceId: invoiceId, - convertedToInvoiceAt: moment().toMySqlDateTime(), - }); - } - - /** - * Unlink the converted sale estimates from the given sale invoice. - * @param {number} tenantId - - * @param {number} invoiceId - - * @return {Promise} - */ - async unlinkConvertedEstimateFromInvoice( - tenantId: number, - invoiceId: number - ): Promise { - const { SaleEstimate } = this.tenancy.models(tenantId); - - await SaleEstimate.query() - .where({ - convertedToInvoiceId: invoiceId, - }) - .patch({ - convertedToInvoiceId: null, - convertedToInvoiceAt: null, - }); - } - - /** - * Mark the sale estimate as delivered. - * @param {number} tenantId - Tenant id. - * @param {number} saleEstimateId - Sale estimate id. - */ - public async deliverSaleEstimate( - tenantId: number, - saleEstimateId: number - ): Promise { - const { SaleEstimate } = this.tenancy.models(tenantId); - - // Retrieve details of the given sale estimate id. - const saleEstimate = await this.getSaleEstimateOrThrowError( - tenantId, - saleEstimateId - ); - - // Throws error in case the sale estimate already published. - if (saleEstimate.isDelivered) { - throw new ServiceError(ERRORS.SALE_ESTIMATE_ALREADY_DELIVERED); - } - // Record the delivered at on the storage. - await SaleEstimate.query().where('id', saleEstimateId).patch({ - deliveredAt: moment().toMySqlDateTime(), - }); - } - - /** - * Mark the sale estimate as approved from the customer. - * @param {number} tenantId - * @param {number} saleEstimateId - */ - public async approveSaleEstimate( - tenantId: number, - saleEstimateId: number - ): Promise { - const { SaleEstimate } = this.tenancy.models(tenantId); - - // Retrieve details of the given sale estimate id. - const saleEstimate = await this.getSaleEstimateOrThrowError( - tenantId, - saleEstimateId - ); - - // Throws error in case the sale estimate still not delivered to customer. - if (!saleEstimate.isDelivered) { - throw new ServiceError(ERRORS.SALE_ESTIMATE_NOT_DELIVERED); - } - // Throws error in case the sale estimate already approved. - if (saleEstimate.isApproved) { - throw new ServiceError(ERRORS.SALE_ESTIMATE_ALREADY_APPROVED); - } - await SaleEstimate.query().where('id', saleEstimateId).patch({ - approvedAt: moment().toMySqlDateTime(), - rejectedAt: null, - }); - } - - /** - * Mark the sale estimate as rejected from the customer. - * @param {number} tenantId - * @param {number} saleEstimateId - */ - public async rejectSaleEstimate( - tenantId: number, - saleEstimateId: number - ): Promise { - const { SaleEstimate } = this.tenancy.models(tenantId); - - // Retrieve details of the given sale estimate id. - const saleEstimate = await this.getSaleEstimateOrThrowError( - tenantId, - saleEstimateId - ); - - // Throws error in case the sale estimate still not delivered to customer. - if (!saleEstimate.isDelivered) { - throw new ServiceError(ERRORS.SALE_ESTIMATE_NOT_DELIVERED); - } - // Throws error in case the sale estimate already rejected. - if (saleEstimate.isRejected) { - throw new ServiceError(ERRORS.SALE_ESTIMATE_ALREADY_REJECTED); - } - // Mark the sale estimate as reject on the storage. - await SaleEstimate.query().where('id', saleEstimateId).patch({ - rejectedAt: moment().toMySqlDateTime(), - approvedAt: null, - }); - } - - /** - * Validate the given customer has no sales estimates. - * @param {number} tenantId - * @param {number} customerId - Customer id. - */ - public async validateCustomerHasNoEstimates( - tenantId: number, - customerId: number - ) { - const { SaleEstimate } = this.tenancy.models(tenantId); - - const estimates = await SaleEstimate.query().where( - 'customer_id', - customerId - ); - if (estimates.length > 0) { - throw new ServiceError(ERRORS.CUSTOMER_HAS_SALES_ESTIMATES); - } - } -} diff --git a/server/src/services/Sales/SalesInvoices.ts b/server/src/services/Sales/SalesInvoices.ts deleted file mode 100644 index 76fcf5317..000000000 --- a/server/src/services/Sales/SalesInvoices.ts +++ /dev/null @@ -1,748 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { omit, sumBy } from 'lodash'; -import * as R from 'ramda'; -import moment from 'moment'; -import composeAsync from 'async/compose'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import { - ISaleInvoice, - ISaleInvoiceCreateDTO, - ISaleInvoiceEditDTO, - ISalesInvoicesFilter, - IPaginationMeta, - IFilterMeta, - ISystemUser, - IItem, - IItemEntry, - ISalesInvoicesService, -} from 'interfaces'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import JournalCommands from 'services/Accounting/JournalCommands'; -import events from 'subscribers/events'; -import InventoryService from 'services/Inventory/Inventory'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { formatDateFields } from 'utils'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { ServiceError } from 'exceptions'; -import ItemsService from 'services/Items/ItemsService'; -import ItemsEntriesService from 'services/Items/ItemsEntriesService'; -import CustomersService from 'services/Contacts/CustomersService'; -import SaleEstimateService from 'services/Sales/SalesEstimate'; -import JournalPosterService from './JournalPosterService'; -import AutoIncrementOrdersService from './AutoIncrementOrdersService'; -import { ERRORS } from './constants'; -import SaleInvoiceTransformer from './SaleInvoiceTransformer'; - -/** - * Sales invoices service - * @service - */ -@Service('SalesInvoices') -export default class SaleInvoicesService implements ISalesInvoicesService { - @Inject() - tenancy: TenancyService; - - @Inject() - inventoryService: InventoryService; - - @Inject() - itemsEntriesService: ItemsEntriesService; - - @Inject('logger') - logger: any; - - @Inject() - dynamicListService: DynamicListingService; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject() - itemsService: ItemsService; - - @Inject() - customersService: CustomersService; - - @Inject() - saleEstimatesService: SaleEstimateService; - - @Inject() - journalService: JournalPosterService; - - @Inject() - autoIncrementOrdersService: AutoIncrementOrdersService; - - /** - * Validate whether sale invoice number unqiue on the storage. - */ - async validateInvoiceNumberUnique( - tenantId: number, - invoiceNumber: string, - notInvoiceId?: number - ) { - const { SaleInvoice } = this.tenancy.models(tenantId); - - this.logger.info( - '[sale_invoice] validating sale invoice number existance.', - { tenantId, invoiceNumber } - ); - const saleInvoice = await SaleInvoice.query() - .findOne('invoice_no', invoiceNumber) - .onBuild((builder) => { - if (notInvoiceId) { - builder.whereNot('id', notInvoiceId); - } - }); - - if (saleInvoice) { - this.logger.info('[sale_invoice] sale invoice number not unique.', { - tenantId, - invoiceNumber, - }); - throw new ServiceError(ERRORS.INVOICE_NUMBER_NOT_UNIQUE); - } - } - - /** - * Validate the sale invoice has no payment entries. - * @param {number} tenantId - * @param {number} saleInvoiceId - */ - async validateInvoiceHasNoPaymentEntries( - tenantId: number, - saleInvoiceId: number - ) { - const { PaymentReceiveEntry } = this.tenancy.models(tenantId); - - // Retrieve the sale invoice associated payment receive entries. - const entries = await PaymentReceiveEntry.query().where( - 'invoice_id', - saleInvoiceId - ); - if (entries.length > 0) { - throw new ServiceError(ERRORS.INVOICE_HAS_ASSOCIATED_PAYMENT_ENTRIES); - } - return entries; - } - - /** - * Validate the invoice amount is bigger than payment amount before edit the invoice. - * @param {number} saleInvoiceAmount - * @param {number} paymentAmount - */ - validateInvoiceAmountBiggerPaymentAmount( - saleInvoiceAmount: number, - paymentAmount: number - ) { - if (saleInvoiceAmount < paymentAmount) { - throw new ServiceError(ERRORS.INVOICE_AMOUNT_SMALLER_THAN_PAYMENT_AMOUNT); - } - } - - /** - * Validate whether sale invoice exists on the storage. - * @param {Request} req - * @param {Response} res - * @param {Function} next - */ - async getInvoiceOrThrowError(tenantId: number, saleInvoiceId: number) { - const { saleInvoiceRepository } = this.tenancy.repositories(tenantId); - - const saleInvoice = await saleInvoiceRepository.findOneById( - saleInvoiceId, - 'entries' - ); - if (!saleInvoice) { - throw new ServiceError(ERRORS.SALE_INVOICE_NOT_FOUND); - } - return saleInvoice; - } - - /** - * Retrieve the next unique invoice number. - * @param {number} tenantId - Tenant id. - * @return {string} - */ - getNextInvoiceNumber(tenantId: number): string { - return this.autoIncrementOrdersService.getNextTransactionNumber( - tenantId, - 'sales_invoices' - ); - } - - /** - * Increment the invoice next number. - * @param {number} tenantId - - */ - incrementNextInvoiceNumber(tenantId: number) { - return this.autoIncrementOrdersService.incrementSettingsNextNumber( - tenantId, - 'sales_invoices' - ); - } - - /** - * Sets the cost/sell accounts to the invoice entries. - */ - setInvoiceEntriesDefaultAccounts(tenantId: number) { - return async (entries: IItemEntry[]) => { - const { Item } = this.tenancy.models(tenantId); - - const entriesItemsIds = entries.map((e) => e.itemId); - const items = await Item.query().whereIn('id', entriesItemsIds); - - return entries.map((entry) => { - const item = items.find((i) => i.id === entry.itemId); - - return { - ...entry, - sellAccountId: entry.sellAccountId || item.sellAccountId, - ...(item.type === 'inventory' && { - costAccountId: entry.costAccountId || item.costAccountId, - }), - }; - }); - }; - } - - /** - * Transformes the create DTO to invoice object model. - * @param {ISaleInvoiceCreateDTO} saleInvoiceDTO - Sale invoice DTO. - * @param {ISaleInvoice} oldSaleInvoice - Old sale invoice. - * @return {ISaleInvoice} - */ - private async transformDTOToModel( - tenantId: number, - saleInvoiceDTO: ISaleInvoiceCreateDTO | ISaleInvoiceEditDTO, - oldSaleInvoice?: ISaleInvoice - ): Promise { - const { ItemEntry } = this.tenancy.models(tenantId); - - const balance = sumBy(saleInvoiceDTO.entries, (e) => - ItemEntry.calcAmount(e) - ); - // Retrieve customer details. - const customer = await this.customersService.getCustomerByIdOrThrowError( - tenantId, - saleInvoiceDTO.customerId - ); - // Retreive the next invoice number. - const autoNextNumber = this.getNextInvoiceNumber(tenantId); - - // Invoice number. - const invoiceNo = - saleInvoiceDTO.invoiceNo || oldSaleInvoice?.invoiceNo || autoNextNumber; - - // Validate the invoice is required. - this.validateInvoiceNoRequire(invoiceNo); - - const initialEntries = saleInvoiceDTO.entries.map((entry) => ({ - referenceType: 'SaleInvoice', - ...entry, - })); - - const entries = await composeAsync( - // Sets default cost and sell account to invoice items entries. - this.setInvoiceEntriesDefaultAccounts(tenantId) - )(initialEntries); - - return { - ...formatDateFields( - omit(saleInvoiceDTO, ['delivered', 'entries', 'fromEstimateId']), - ['invoiceDate', 'dueDate'] - ), - // Avoid rewrite the deliver date in edit mode when already published. - balance, - currencyCode: customer.currencyCode, - ...(saleInvoiceDTO.delivered && - !oldSaleInvoice?.deliveredAt && { - deliveredAt: moment().toMySqlDateTime(), - }), - // Avoid override payment amount in edit mode. - ...(!oldSaleInvoice && { paymentAmount: 0 }), - ...(invoiceNo ? { invoiceNo } : {}), - entries, - }; - } - - /** - * Validate the invoice number require. - * @param {ISaleInvoice} saleInvoiceObj - */ - validateInvoiceNoRequire(invoiceNo: string) { - if (!invoiceNo) { - throw new ServiceError(ERRORS.SALE_INVOICE_NO_IS_REQUIRED); - } - } - - /** - * Creates a new sale invoices and store it to the storage - * with associated to entries and journal transactions. - * @async - * @param {number} tenantId - Tenant id. - * @param {ISaleInvoice} saleInvoiceDTO - Sale invoice object DTO. - * @return {Promise} - */ - public async createSaleInvoice( - tenantId: number, - saleInvoiceDTO: ISaleInvoiceCreateDTO, - authorizedUser: ISystemUser - ): Promise { - const { saleInvoiceRepository } = this.tenancy.repositories(tenantId); - - // Validate customer existance. - await this.customersService.getCustomerByIdOrThrowError( - tenantId, - saleInvoiceDTO.customerId - ); - // Validate the from estimate id exists on the storage. - if (saleInvoiceDTO.fromEstimateId) { - const fromEstimate = await this.saleEstimatesService.getSaleEstimateOrThrowError( - tenantId, - saleInvoiceDTO.fromEstimateId - ); - // Validate the sale estimate is not already converted to invoice. - this.saleEstimatesService.validateEstimateNotConverted(fromEstimate); - } - // Validate items ids existance. - await this.itemsEntriesService.validateItemsIdsExistance( - tenantId, - saleInvoiceDTO.entries - ); - // Validate items should be sellable items. - await this.itemsEntriesService.validateNonSellableEntriesItems( - tenantId, - saleInvoiceDTO.entries - ); - // Transform DTO object to model object. - const saleInvoiceObj = await this.transformDTOToModel( - tenantId, - saleInvoiceDTO - ); - // Validate sale invoice number uniquiness. - if (saleInvoiceObj.invoiceNo) { - await this.validateInvoiceNumberUnique( - tenantId, - saleInvoiceObj.invoiceNo - ); - } - this.logger.info('[sale_invoice] inserting sale invoice to the storage.'); - const saleInvoice = await saleInvoiceRepository.upsertGraph(saleInvoiceObj); - - // Triggers the event `onSaleInvoiceCreated`. - await this.eventDispatcher.dispatch(events.saleInvoice.onCreated, { - tenantId, - saleInvoice, - saleInvoiceDTO, - saleInvoiceId: saleInvoice.id, - authorizedUser, - }); - this.logger.info('[sale_invoice] successfully inserted.', { - tenantId, - saleInvoiceId: saleInvoice.id, - }); - - return saleInvoice; - } - - /** - * Edit the given sale invoice. - * @async - * @param {number} tenantId - Tenant id. - * @param {Number} saleInvoiceId - Sale invoice id. - * @param {ISaleInvoice} saleInvoice - Sale invoice DTO object. - * @return {Promise} - */ - public async editSaleInvoice( - tenantId: number, - saleInvoiceId: number, - saleInvoiceDTO: ISaleInvoiceEditDTO, - authorizedUser: ISystemUser - ): Promise { - const { saleInvoiceRepository } = this.tenancy.repositories(tenantId); - - // Retrieve the sale invoice or throw not found service error. - const oldSaleInvoice = await this.getInvoiceOrThrowError( - tenantId, - saleInvoiceId - ); - // Validate customer existance. - await this.customersService.getCustomerByIdOrThrowError( - tenantId, - saleInvoiceDTO.customerId - ); - // Validate items ids existance. - await this.itemsEntriesService.validateItemsIdsExistance( - tenantId, - saleInvoiceDTO.entries - ); - // Validate non-sellable entries items. - await this.itemsEntriesService.validateNonSellableEntriesItems( - tenantId, - saleInvoiceDTO.entries - ); - // Validate the items entries existance. - await this.itemsEntriesService.validateEntriesIdsExistance( - tenantId, - saleInvoiceId, - 'SaleInvoice', - saleInvoiceDTO.entries - ); - // Transform DTO object to model object. - const saleInvoiceObj = await this.transformDTOToModel( - tenantId, - saleInvoiceDTO, - oldSaleInvoice - ); - // Validate sale invoice number uniquiness. - if (saleInvoiceObj.invoiceNo) { - await this.validateInvoiceNumberUnique( - tenantId, - saleInvoiceObj.invoiceNo, - saleInvoiceId - ); - } - // Validate the invoice amount is not smaller than the invoice payment amount. - this.validateInvoiceAmountBiggerPaymentAmount( - saleInvoiceObj.balance, - oldSaleInvoice.paymentAmount - ); - - this.logger.info('[sale_invoice] trying to update sale invoice.'); - const saleInvoice: ISaleInvoice = await saleInvoiceRepository.upsertGraph({ - id: saleInvoiceId, - ...saleInvoiceObj, - }); - // Triggers `onSaleInvoiceEdited` event. - await this.eventDispatcher.dispatch(events.saleInvoice.onEdited, { - tenantId, - saleInvoiceId, - saleInvoice, - oldSaleInvoice, - authorizedUser, - }); - return saleInvoice; - } - - /** - * Deliver the given sale invoice. - * @param {number} tenantId - Tenant id. - * @param {number} saleInvoiceId - Sale invoice id. - * @return {Promise} - */ - public async deliverSaleInvoice( - tenantId: number, - saleInvoiceId: number, - authorizedUser: ISystemUser - ): Promise { - const { saleInvoiceRepository } = this.tenancy.repositories(tenantId); - - // Retrieve details of the given sale invoice id. - const oldSaleInvoice = await this.getInvoiceOrThrowError( - tenantId, - saleInvoiceId - ); - // Throws error in case the sale invoice already published. - if (oldSaleInvoice.isDelivered) { - throw new ServiceError(ERRORS.SALE_INVOICE_ALREADY_DELIVERED); - } - // Record the delivered at on the storage. - await saleInvoiceRepository.update( - { deliveredAt: moment().toMySqlDateTime() }, - { id: saleInvoiceId } - ); - // Triggers `onSaleInvoiceDelivered` event. - this.eventDispatcher.dispatch(events.saleInvoice.onDelivered, { - tenantId, - saleInvoiceId, - oldSaleInvoice, - }); - } - - /** - * Deletes the given sale invoice with associated entries - * and journal transactions. - * @param {number} tenantId - Tenant id. - * @param {Number} saleInvoiceId - The given sale invoice id. - * @param {ISystemUser} authorizedUser - - */ - public async deleteSaleInvoice( - tenantId: number, - saleInvoiceId: number, - authorizedUser: ISystemUser - ): Promise { - const { ItemEntry } = this.tenancy.models(tenantId); - const { saleInvoiceRepository } = this.tenancy.repositories(tenantId); - - // Retrieve the given sale invoice with associated entries - // or throw not found error. - const oldSaleInvoice = await this.getInvoiceOrThrowError( - tenantId, - saleInvoiceId - ); - // Validate the sale invoice has no associated payment entries. - await this.validateInvoiceHasNoPaymentEntries(tenantId, saleInvoiceId); - - // Triggers `onSaleInvoiceDelete` event. - await this.eventDispatcher.dispatch(events.saleInvoice.onDelete, { - tenantId, - saleInvoice: oldSaleInvoice, - saleInvoiceId, - }); - // Unlink the converted sale estimates from the given sale invoice. - await this.saleEstimatesService.unlinkConvertedEstimateFromInvoice( - tenantId, - saleInvoiceId - ); - this.logger.info('[sale_invoice] delete sale invoice with entries.'); - - await ItemEntry.query() - .where('reference_id', saleInvoiceId) - .where('reference_type', 'SaleInvoice') - .delete(); - - await saleInvoiceRepository.deleteById(saleInvoiceId); - - // Triggers `onSaleInvoiceDeleted` event. - await this.eventDispatcher.dispatch(events.saleInvoice.onDeleted, { - tenantId, - oldSaleInvoice, - saleInvoiceId, - authorizedUser, - }); - } - - /** - * Records the inventory transactions of the given sale invoice in case - * the invoice has inventory entries only. - * - * @param {number} tenantId - Tenant id. - * @param {SaleInvoice} saleInvoice - Sale invoice DTO. - * @param {number} saleInvoiceId - Sale invoice id. - * @param {boolean} override - Allow to override old transactions. - * @return {Promise} - */ - public async recordInventoryTranscactions( - tenantId: number, - saleInvoice: ISaleInvoice, - override?: boolean - ): Promise { - // Loads the inventory items entries of the given sale invoice. - const inventoryEntries = await this.itemsEntriesService.filterInventoryEntries( - tenantId, - saleInvoice.entries - ); - const transaction = { - transactionId: saleInvoice.id, - transactionType: 'SaleInvoice', - transactionNumber: saleInvoice.invoiceNo, - - date: saleInvoice.invoiceDate, - direction: 'OUT', - entries: inventoryEntries, - createdAt: saleInvoice.created_at, - }; - await this.inventoryService.recordInventoryTransactionsFromItemsEntries( - tenantId, - transaction, - override - ); - } - - /** - * Writes the sale invoice income journal entries. - * @param {number} tenantId - Tenant id. - * @param {ISaleInvoice} saleInvoice - Sale invoice id. - */ - public async writesIncomeJournalEntries( - tenantId: number, - saleInvoice: ISaleInvoice & { - entries: IItemEntry & { item: IItem }; - }, - override: boolean = false - ): Promise { - const { accountRepository } = this.tenancy.repositories(tenantId); - - const journal = new JournalPoster(tenantId); - const journalCommands = new JournalCommands(journal); - - const receivableAccount = await accountRepository.findOne({ - slug: 'accounts-receivable', - }); - if (override) { - await journalCommands.revertInvoiceIncomeEntries(saleInvoice.id); - } - // Records the sale invoice journal entries. - await journalCommands.saleInvoiceIncomeEntries( - saleInvoice, - receivableAccount.id - ); - await Promise.all([ - journal.deleteEntries(), - journal.saveBalance(), - journal.saveContactsBalance(), - journal.saveEntries(), - ]); - } - - /** - * Reverting the inventory transactions once the invoice deleted. - * @param {number} tenantId - Tenant id. - * @param {number} billId - Bill id. - * @return {Promise} - */ - public async revertInventoryTransactions( - tenantId: number, - saleInvoiceId: number - ): Promise { - // Delete the inventory transaction of the given sale invoice. - const { - oldInventoryTransactions, - } = await this.inventoryService.deleteInventoryTransactions( - tenantId, - saleInvoiceId, - 'SaleInvoice' - ); - } - - /** - * Reverting the sale invoice journal entries. - * @param {number} tenantId - * @param {number} saleInvoiceId - * @return {Promise} - */ - public async revertInvoiceJournalEntries( - tenantId: number, - saleInvoiceId: number | number[] - ): Promise { - return this.journalService.revertJournalTransactions( - tenantId, - saleInvoiceId, - 'SaleInvoice' - ); - } - - /** - * Retrieve sale invoice with associated entries. - * @param {Number} saleInvoiceId - - * @param {ISystemUser} authorizedUser - - * @return {Promise} - */ - public async getSaleInvoice( - tenantId: number, - saleInvoiceId: number, - authorizedUser: ISystemUser - ): Promise { - const { SaleInvoice } = this.tenancy.models(tenantId); - - const saleInvoice = await SaleInvoice.query() - .findById(saleInvoiceId) - .withGraphFetched('entries.item') - .withGraphFetched('customer'); - - if (!saleInvoice) { - throw new ServiceError(ERRORS.SALE_INVOICE_NOT_FOUND); - } - return new SaleInvoiceTransformer().transform(saleInvoice); - } - - /** - * Parses the sale invoice list filter DTO. - * @param filterDTO - * @returns - */ - private parseListFilterDTO(filterDTO) { - return R.compose( - this.dynamicListService.parseStringifiedFilter, - )(filterDTO); - } - - /** - * Retrieve sales invoices filterable and paginated list. - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - */ - public async salesInvoicesList( - tenantId: number, - filterDTO: ISalesInvoicesFilter - ): Promise<{ - salesInvoices: ISaleInvoice[]; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }> { - const { SaleInvoice } = this.tenancy.models(tenantId); - - // Parses stringified filter roles. - const filter = this.parseListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicFilter = await this.dynamicListService.dynamicList( - tenantId, - SaleInvoice, - filter - ); - - this.logger.info('[sale_invoice] try to get sales invoices list.', { - tenantId, - filter, - }); - const { results, pagination } = await SaleInvoice.query() - .onBuild((builder) => { - builder.withGraphFetched('entries'); - builder.withGraphFetched('customer'); - dynamicFilter.buildQuery()(builder); - }) - .pagination(filter.page - 1, filter.pageSize); - - return { - salesInvoices: new SaleInvoiceTransformer().transform(results), - pagination, - filterMeta: dynamicFilter.getResponseMeta(), - }; - } - - /** - * Retrieve due sales invoices. - * @param {number} tenantId - * @param {number} customerId - */ - public async getPayableInvoices( - tenantId: number, - customerId?: number - ): Promise { - const { SaleInvoice } = this.tenancy.models(tenantId); - - const salesInvoices = await SaleInvoice.query().onBuild((query) => { - query.modify('dueInvoices'); - query.modify('delivered'); - - if (customerId) { - query.where('customer_id', customerId); - } - }); - - return salesInvoices; - } - - /** - * Validate the given customer has no sales invoices. - * @param {number} tenantId - * @param {number} customerId - Customer id. - */ - public async validateCustomerHasNoInvoices( - tenantId: number, - customerId: number - ) { - const { SaleInvoice } = this.tenancy.models(tenantId); - - const invoices = await SaleInvoice.query().where('customer_id', customerId); - - if (invoices.length > 0) { - throw new ServiceError(ERRORS.CUSTOMER_HAS_SALES_INVOICES); - } - } -} diff --git a/server/src/services/Sales/SalesInvoicesCost.ts b/server/src/services/Sales/SalesInvoicesCost.ts deleted file mode 100644 index b2180d769..000000000 --- a/server/src/services/Sales/SalesInvoicesCost.ts +++ /dev/null @@ -1,169 +0,0 @@ -import { Container, Service, Inject } from 'typedi'; -import { chain, groupBy } from 'lodash'; -import moment from 'moment'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import InventoryService from 'services/Inventory/Inventory'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { IInventoryLotCost, IInventoryTransaction, IItem } from 'interfaces'; -import JournalCommands from 'services/Accounting/JournalCommands'; - -@Service() -export default class SaleInvoicesCost { - @Inject() - inventoryService: InventoryService; - - @Inject() - tenancy: TenancyService; - - /** - * Schedule sale invoice re-compute based on the item - * cost method and starting date. - * @param {number[]} itemIds - Inventory items ids. - * @param {Date} startingDate - Starting compute cost date. - * @return {Promise} - */ - async scheduleComputeCostByItemsIds( - tenantId: number, - inventoryItemsIds: number[], - startingDate: Date - ): Promise { - const asyncOpers: Promise<[]>[] = []; - - inventoryItemsIds.forEach((inventoryItemId: number) => { - const oper: Promise<[]> = this.inventoryService.scheduleComputeItemCost( - tenantId, - inventoryItemId, - startingDate - ); - asyncOpers.push(oper); - }); - await Promise.all([...asyncOpers]); - } - - /** - * Retrieve the max dated inventory transactions in the transactions that - * have the same item id. - * @param {IInventoryTransaction[]} inventoryTransactions - * @return {IInventoryTransaction[]} - */ - getMaxDateInventoryTransactions( - inventoryTransactions: IInventoryTransaction[] - ): IInventoryTransaction[] { - return chain(inventoryTransactions) - .reduce((acc: any, transaction) => { - const compatatorDate = acc[transaction.itemId]; - - if ( - !compatatorDate || - moment(compatatorDate.date).isBefore(transaction.date) - ) { - return { - ...acc, - [transaction.itemId]: { - ...transaction, - }, - }; - } - return acc; - }, {}) - .values() - .value(); - } - - /** - * Computes items costs by the given inventory transaction. - * @param {number} tenantId - * @param {IInventoryTransaction[]} inventoryTransactions - */ - async computeItemsCostByInventoryTransactions( - tenantId: number, - inventoryTransactions: IInventoryTransaction[] - ) { - const asyncOpers: Promise<[]>[] = []; - const reducedTransactions = this.getMaxDateInventoryTransactions( - inventoryTransactions - ); - reducedTransactions.forEach((transaction) => { - const oper: Promise<[]> = this.inventoryService.scheduleComputeItemCost( - tenantId, - transaction.itemId, - transaction.date - ); - asyncOpers.push(oper); - }); - await Promise.all([...asyncOpers]); - } - - /** - * Schedule writing journal entries. - * @param {Date} startingDate - * @return {Promise} - */ - scheduleWriteJournalEntries(tenantId: number, startingDate?: Date) { - const agenda = Container.get('agenda'); - - return agenda.schedule('in 3 seconds', 'rewrite-invoices-journal-entries', { - startingDate, - tenantId, - }); - } - - /** - * Grpups by transaction type and id the inventory transactions. - * @param {IInventoryTransaction} invTransactions - * @returns - */ - inventoryTransactionsGroupByType( - invTransactions: { transactionType: string; transactionId: number }[] - ): { transactionType: string; transactionId: number }[][] { - return chain(invTransactions) - .groupBy((t) => `${t.transactionType}-${t.transactionId}`) - .values() - .value(); - } - - /** - * Writes journal entries from sales invoices. - * @param {number} tenantId - The tenant id. - * @param {Date} startingDate - Starting date. - * @param {boolean} override - */ - async writeInventoryCostJournalEntries( - tenantId: number, - startingDate: Date, - override: boolean - ) { - const { InventoryCostLotTracker } = this.tenancy.models(tenantId); - const { accountRepository } = this.tenancy.repositories(tenantId); - - const inventoryCostLotTrans = await InventoryCostLotTracker.query() - .where('direction', 'OUT') - .modify('filterDateRange', startingDate) - .orderBy('date', 'ASC') - .where('cost', '>', 0) - .withGraphFetched('item') - .withGraphFetched('itemEntry'); - - const accountsDepGraph = await accountRepository.getDependencyGraph(); - - const journal = new JournalPoster(tenantId, accountsDepGraph); - const journalCommands = new JournalCommands(journal); - - // Groups the inventory cost lots transactions. - const inventoryTransactions = this.inventoryTransactionsGroupByType( - inventoryCostLotTrans - ); - if (override) { - await journalCommands.revertInventoryCostJournalEntries(startingDate); - } - inventoryTransactions.forEach((inventoryLots) => { - journalCommands.saleInvoiceInventoryCost(inventoryLots); - }); - - return Promise.all([ - journal.deleteEntries(), - journal.saveEntries(), - journal.saveBalance(), - ]); - } -} diff --git a/server/src/services/Sales/SalesReceipts.ts b/server/src/services/Sales/SalesReceipts.ts deleted file mode 100644 index 09165be09..000000000 --- a/server/src/services/Sales/SalesReceipts.ts +++ /dev/null @@ -1,588 +0,0 @@ -import { omit, sumBy } from 'lodash'; -import { Service, Inject } from 'typedi'; -import moment from 'moment'; -import * as R from 'ramda'; -import { - EventDispatcher, - EventDispatcherInterface, -} from 'decorators/eventDispatcher'; -import events from 'subscribers/events'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import JournalCommands from 'services/Accounting/JournalCommands'; -import { - IFilterMeta, - IPaginationMeta, - ISaleReceipt, - ISaleReceiptDTO, - ISalesReceiptsService, - IItemEntry, - IItem, -} from 'interfaces'; -import JournalPosterService from 'services/Sales/JournalPosterService'; -import TenancyService from 'services/Tenancy/TenancyService'; -import { formatDateFields } from 'utils'; -import DynamicListingService from 'services/DynamicListing/DynamicListService'; -import { ServiceError } from 'exceptions'; -import ItemsEntriesService from 'services/Items/ItemsEntriesService'; -import { ItemEntry } from 'models'; -import InventoryService from 'services/Inventory/Inventory'; -import { ACCOUNT_PARENT_TYPE } from 'data/AccountTypes'; -import AutoIncrementOrdersService from './AutoIncrementOrdersService'; -import CustomersService from 'services/Contacts/CustomersService'; -import { ERRORS } from './Receipts/constants'; -import SaleReceiptTransfromer from './Receipts/SaleReceiptTransformer'; - -@Service('SalesReceipts') -export default class SalesReceiptService implements ISalesReceiptsService { - @Inject() - tenancy: TenancyService; - - @Inject() - dynamicListService: DynamicListingService; - - @Inject() - journalService: JournalPosterService; - - @Inject() - itemsEntriesService: ItemsEntriesService; - - @Inject() - inventoryService: InventoryService; - - @EventDispatcher() - eventDispatcher: EventDispatcherInterface; - - @Inject('logger') - logger: any; - - @Inject() - autoIncrementOrdersService: AutoIncrementOrdersService; - - @Inject() - customersService: CustomersService; - - @Inject() - saleReceiptTransformer: SaleReceiptTransfromer; - - /** - * Validate whether sale receipt exists on the storage. - * @param {number} tenantId - - * @param {number} saleReceiptId - - */ - async getSaleReceiptOrThrowError(tenantId: number, saleReceiptId: number) { - const { SaleReceipt } = this.tenancy.models(tenantId); - - this.logger.info('[sale_receipt] trying to validate existance.', { - tenantId, - saleReceiptId, - }); - const foundSaleReceipt = await SaleReceipt.query() - .findById(saleReceiptId) - .withGraphFetched('entries'); - - if (!foundSaleReceipt) { - this.logger.info('[sale_receipt] not found on the storage.', { - tenantId, - saleReceiptId, - }); - throw new ServiceError(ERRORS.SALE_RECEIPT_NOT_FOUND); - } - return foundSaleReceipt; - } - - /** - * Validate whether sale receipt deposit account exists on the storage. - * @param {number} tenantId - Tenant id. - * @param {number} accountId - Account id. - */ - async validateReceiptDepositAccountExistance( - tenantId: number, - accountId: number - ) { - const { accountRepository } = this.tenancy.repositories(tenantId); - const depositAccount = await accountRepository.findOneById(accountId); - - if (!depositAccount) { - throw new ServiceError(ERRORS.DEPOSIT_ACCOUNT_NOT_FOUND); - } - if (!depositAccount.isParentType(ACCOUNT_PARENT_TYPE.CURRENT_ASSET)) { - throw new ServiceError(ERRORS.DEPOSIT_ACCOUNT_NOT_CURRENT_ASSET); - } - } - - /** - * Validate sale receipt number uniquiness on the storage. - * @param {number} tenantId - - * @param {string} receiptNumber - - * @param {number} notReceiptId - - */ - async validateReceiptNumberUnique( - tenantId: number, - receiptNumber: string, - notReceiptId?: number - ) { - const { SaleReceipt } = this.tenancy.models(tenantId); - - this.logger.info('[sale_receipt] validate receipt number uniquiness.', { - tenantId, - receiptNumber, - }); - const saleReceipt = await SaleReceipt.query() - .findOne('receipt_number', receiptNumber) - .onBuild((builder) => { - if (notReceiptId) { - builder.whereNot('id', notReceiptId); - } - }); - - if (saleReceipt) { - this.logger.info('[sale_receipt] sale receipt number not unique.', { - tenantId, - }); - throw new ServiceError(ERRORS.SALE_RECEIPT_NUMBER_NOT_UNIQUE); - } - } - - /** - * Validate the sale receipt number require. - * @param {ISaleReceipt} saleReceipt - */ - validateReceiptNoRequire(receiptNumber: string) { - if (!receiptNumber) { - throw new ServiceError(ERRORS.SALE_RECEIPT_NO_IS_REQUIRED); - } - } - - /** - * Retrieve the next unique receipt number. - * @param {number} tenantId - Tenant id. - * @return {string} - */ - getNextReceiptNumber(tenantId: number): string { - return this.autoIncrementOrdersService.getNextTransactionNumber( - tenantId, - 'sales_receipts' - ); - } - - /** - * Increment the receipt next number. - * @param {number} tenantId - - */ - incrementNextReceiptNumber(tenantId: number) { - return this.autoIncrementOrdersService.incrementSettingsNextNumber( - tenantId, - 'sales_receipts' - ); - } - - /** - * Transform create DTO object to model object. - * @param {ISaleReceiptDTO} saleReceiptDTO - - * @param {ISaleReceipt} oldSaleReceipt - - * @returns {ISaleReceipt} - */ - async transformDTOToModel( - tenantId: number, - saleReceiptDTO: ISaleReceiptDTO, - oldSaleReceipt?: ISaleReceipt - ): Promise { - const amount = sumBy(saleReceiptDTO.entries, (e) => - ItemEntry.calcAmount(e) - ); - // Retreive the next invoice number. - const autoNextNumber = this.getNextReceiptNumber(tenantId); - - // Retreive the receipt number. - const receiptNumber = - saleReceiptDTO.receiptNumber || - oldSaleReceipt?.receiptNumber || - autoNextNumber; - - // Validate receipt number require. - this.validateReceiptNoRequire(receiptNumber); - - // Retrieve customer details. - const customer = await this.customersService.getCustomerByIdOrThrowError( - tenantId, - saleReceiptDTO.customerId - ); - - return { - amount, - currencyCode: customer.currencyCode, - ...formatDateFields(omit(saleReceiptDTO, ['closed', 'entries']), [ - 'receiptDate', - ]), - receiptNumber, - // Avoid rewrite the deliver date in edit mode when already published. - ...(saleReceiptDTO.closed && - !oldSaleReceipt?.closedAt && { - closedAt: moment().toMySqlDateTime(), - }), - entries: saleReceiptDTO.entries.map((entry) => ({ - reference_type: 'SaleReceipt', - ...entry, - })), - }; - } - - /** - * Creates a new sale receipt with associated entries. - * @async - * @param {ISaleReceipt} saleReceipt - * @return {Object} - */ - public async createSaleReceipt( - tenantId: number, - saleReceiptDTO: any - ): Promise { - const { SaleReceipt } = this.tenancy.models(tenantId); - - // Transform sale receipt DTO to model. - const saleReceiptObj = await this.transformDTOToModel( - tenantId, - saleReceiptDTO - ); - // Validate receipt deposit account existance and type. - await this.validateReceiptDepositAccountExistance( - tenantId, - saleReceiptDTO.depositAccountId - ); - // Validate items IDs existance on the storage. - await this.itemsEntriesService.validateItemsIdsExistance( - tenantId, - saleReceiptDTO.entries - ); - // Validate the sellable items. - await this.itemsEntriesService.validateNonSellableEntriesItems( - tenantId, - saleReceiptDTO.entries - ); - // Validate sale receipt number uniuqiness. - if (saleReceiptDTO.receiptNumber) { - await this.validateReceiptNumberUnique( - tenantId, - saleReceiptDTO.receiptNumber - ); - } - this.logger.info('[sale_receipt] trying to insert sale receipt graph.', { - tenantId, - saleReceiptDTO, - }); - const saleReceipt = await SaleReceipt.query().upsertGraph({ - ...saleReceiptObj, - }); - // Triggers `onSaleReceiptCreated` event. - await this.eventDispatcher.dispatch(events.saleReceipt.onCreated, { - tenantId, - saleReceipt, - saleReceiptId: saleReceipt.id, - }); - this.logger.info('[sale_receipt] sale receipt inserted successfully.', { - tenantId, - }); - - return saleReceipt; - } - - /** - * Edit details sale receipt with associated entries. - * @param {Integer} saleReceiptId - * @param {ISaleReceipt} saleReceipt - * @return {void} - */ - public async editSaleReceipt( - tenantId: number, - saleReceiptId: number, - saleReceiptDTO: any - ) { - const { SaleReceipt } = this.tenancy.models(tenantId); - - // Retrieve sale receipt or throw not found service error. - const oldSaleReceipt = await this.getSaleReceiptOrThrowError( - tenantId, - saleReceiptId - ); - // Transform sale receipt DTO to model. - const saleReceiptObj = await this.transformDTOToModel( - tenantId, - saleReceiptDTO, - oldSaleReceipt - ); - // Validate receipt deposit account existance and type. - await this.validateReceiptDepositAccountExistance( - tenantId, - saleReceiptDTO.depositAccountId - ); - // Validate items IDs existance on the storage. - await this.itemsEntriesService.validateItemsIdsExistance( - tenantId, - saleReceiptDTO.entries - ); - // Validate the sellable items. - await this.itemsEntriesService.validateNonSellableEntriesItems( - tenantId, - saleReceiptDTO.entries - ); - // Validate sale receipt number uniuqiness. - if (saleReceiptDTO.receiptNumber) { - await this.validateReceiptNumberUnique( - tenantId, - saleReceiptDTO.receiptNumber, - saleReceiptId - ); - } - const saleReceipt = await SaleReceipt.query().upsertGraphAndFetch({ - id: saleReceiptId, - ...saleReceiptObj, - }); - - this.logger.info('[sale_receipt] edited successfully.', { - tenantId, - saleReceiptId, - }); - // Triggers `onSaleReceiptEdited` event. - await this.eventDispatcher.dispatch(events.saleReceipt.onEdited, { - tenantId, - oldSaleReceipt, - saleReceipt, - saleReceiptId, - }); - return saleReceipt; - } - - /** - * Deletes the sale receipt with associated entries. - * @param {Integer} saleReceiptId - * @return {void} - */ - public async deleteSaleReceipt(tenantId: number, saleReceiptId: number) { - const { SaleReceipt, ItemEntry } = this.tenancy.models(tenantId); - - const oldSaleReceipt = await this.getSaleReceiptOrThrowError( - tenantId, - saleReceiptId - ); - await ItemEntry.query() - .where('reference_id', saleReceiptId) - .where('reference_type', 'SaleReceipt') - .delete(); - - await SaleReceipt.query().where('id', saleReceiptId).delete(); - - this.logger.info('[sale_receipt] deleted successfully.', { - tenantId, - saleReceiptId, - }); - await this.eventDispatcher.dispatch(events.saleReceipt.onDeleted, { - tenantId, - saleReceiptId, - oldSaleReceipt, - }); - } - - /** - * Retrieve sale receipt with associated entries. - * @param {Integer} saleReceiptId - * @return {ISaleReceipt} - */ - async getSaleReceipt(tenantId: number, saleReceiptId: number) { - const { SaleReceipt } = this.tenancy.models(tenantId); - - const saleReceipt = await SaleReceipt.query() - .findById(saleReceiptId) - .withGraphFetched('entries.item') - .withGraphFetched('customer') - .withGraphFetched('depositAccount'); - - if (!saleReceipt) { - throw new ServiceError(ERRORS.SALE_RECEIPT_NOT_FOUND); - } - return this.saleReceiptTransformer.transform(saleReceipt); - } - - /** - * Parses the sale receipts list filter DTO. - * @param filterDTO - */ - private parseListFilterDTO(filterDTO) { - return R.compose( - this.dynamicListService.parseStringifiedFilter, - )(filterDTO); - } - - /** - * Retrieve sales receipts paginated and filterable list. - * @param {number} tenantId - * @param {ISaleReceiptFilter} salesReceiptsFilter - */ - public async salesReceiptsList( - tenantId: number, - filterDTO: ISaleReceiptFilter - ): Promise<{ - data: ISaleReceipt[]; - pagination: IPaginationMeta; - filterMeta: IFilterMeta; - }> { - const { SaleReceipt } = this.tenancy.models(tenantId); - - // Parses the stringified filter roles. - const filter = this.parseListFilterDTO(filterDTO); - - // Dynamic list service. - const dynamicFilter = await this.dynamicListService.dynamicList( - tenantId, - SaleReceipt, - filter, - ); - - this.logger.info('[sale_receipt] try to get sales receipts list.', { - tenantId, - }); - const { results, pagination } = await SaleReceipt.query() - .onBuild((builder) => { - builder.withGraphFetched('depositAccount'); - builder.withGraphFetched('customer'); - builder.withGraphFetched('entries'); - - dynamicFilter.buildQuery()(builder); - }) - .pagination(filter.page - 1, filter.pageSize); - - return { - data: this.saleReceiptTransformer.transform(results), - pagination, - filterMeta: dynamicFilter.getResponseMeta(), - }; - } - - /** - * Mark the given sale receipt as closed. - * @param {number} tenantId - * @param {number} saleReceiptId - * @return {Promise} - */ - async closeSaleReceipt( - tenantId: number, - saleReceiptId: number - ): Promise { - const { SaleReceipt } = this.tenancy.models(tenantId); - - // Retrieve sale receipt or throw not found service error. - const oldSaleReceipt = await this.getSaleReceiptOrThrowError( - tenantId, - saleReceiptId - ); - - // Throw service error if the sale receipt already closed. - if (oldSaleReceipt.isClosed) { - throw new ServiceError(ERRORS.SALE_RECEIPT_IS_ALREADY_CLOSED); - } - // Mark the sale receipt as closed on the storage. - await SaleReceipt.query().findById(saleReceiptId).patch({ - closedAt: moment().toMySqlDateTime(), - }); - } - - /** - * Writes the sale invoice income journal entries. - * @param {number} tenantId - Tenant id. - * @param {ISaleInvoice} saleInvoice - Sale invoice id. - */ - public async writesIncomeJournalEntries( - tenantId: number, - saleInvoice: ISaleReceipt & { - entries: IItemEntry & { item: IItem }; - }, - override: boolean = false - ): Promise { - const journal = new JournalPoster(tenantId); - const journalCommands = new JournalCommands(journal); - - if (override) { - await journalCommands.revertJournalEntries(saleInvoice.id, 'SaleReceipt'); - } - // Records the sale invoice journal entries. - await journalCommands.saleReceiptIncomeEntries(saleInvoice); - - await Promise.all([ - journal.deleteEntries(), - journal.saveBalance(), - journal.saveEntries(), - ]); - } - - /** - * Reverting the sale receipt journal entries. - * @param {number} tenantId - * @param {number} saleReceiptId - * @return {Promise} - */ - public async revertReceiptJournalEntries( - tenantId: number, - saleReceiptId: number | number[] - ): Promise { - return this.journalService.revertJournalTransactions( - tenantId, - saleReceiptId, - 'SaleReceipt' - ); - } - - /** - * Records the inventory transactions from the given bill input. - * @param {Bill} bill - Bill model object. - * @param {number} billId - Bill id. - * @return {Promise} - */ - public async recordInventoryTransactions( - tenantId: number, - saleReceipt: ISaleReceipt, - override?: boolean - ): Promise { - return this.inventoryService.recordInventoryTransactionsFromItemsEntries( - tenantId, - saleReceipt.id, - 'SaleReceipt', - saleReceipt.receiptDate, - 'OUT', - override - ); - } - - /** - * Reverts the inventory transactions of the given bill id. - * @param {number} tenantId - Tenant id. - * @param {number} billId - Bill id. - * @return {Promise} - */ - public async revertInventoryTransactions( - tenantId: number, - receiptId: number - ) { - return this.inventoryService.deleteInventoryTransactions( - tenantId, - receiptId, - 'SaleReceipt' - ); - } - - /** - * Validate the given customer has no sales receipts. - * @param {number} tenantId - * @param {number} customerId - Customer id. - */ - public async validateCustomerHasNoReceipts( - tenantId: number, - customerId: number - ) { - const { SaleReceipt } = this.tenancy.models(tenantId); - - const receipts = await SaleReceipt.query().where('customer_id', customerId); - - if (receipts.length > 0) { - throw new ServiceError(ERRORS.CUSTOMER_HAS_SALES_INVOICES); - } - } -} diff --git a/server/src/services/Sales/ServiceItemsEntries.js b/server/src/services/Sales/ServiceItemsEntries.js deleted file mode 100644 index 95d2cd6c4..000000000 --- a/server/src/services/Sales/ServiceItemsEntries.js +++ /dev/null @@ -1,16 +0,0 @@ -import { difference } from "lodash"; - - -export default class ServiceItemsEntries { - - static entriesShouldDeleted(storedEntries, entries) { - const storedEntriesIds = storedEntries.map((e) => e.id); - const entriesIds = entries.map((e) => e.id); - - return difference( - storedEntriesIds, - entriesIds, - ); - } - -} \ No newline at end of file diff --git a/server/src/services/Sales/constants.ts b/server/src/services/Sales/constants.ts deleted file mode 100644 index 2666542e2..000000000 --- a/server/src/services/Sales/constants.ts +++ /dev/null @@ -1,72 +0,0 @@ -export const ERRORS = { - INVOICE_NUMBER_NOT_UNIQUE: 'INVOICE_NUMBER_NOT_UNIQUE', - SALE_INVOICE_NOT_FOUND: 'SALE_INVOICE_NOT_FOUND', - SALE_INVOICE_ALREADY_DELIVERED: 'SALE_INVOICE_ALREADY_DELIVERED', - ENTRIES_ITEMS_IDS_NOT_EXISTS: 'ENTRIES_ITEMS_IDS_NOT_EXISTS', - NOT_SELLABLE_ITEMS: 'NOT_SELLABLE_ITEMS', - SALE_INVOICE_NO_NOT_UNIQUE: 'SALE_INVOICE_NO_NOT_UNIQUE', - INVOICE_AMOUNT_SMALLER_THAN_PAYMENT_AMOUNT: - 'INVOICE_AMOUNT_SMALLER_THAN_PAYMENT_AMOUNT', - INVOICE_HAS_ASSOCIATED_PAYMENT_ENTRIES: - 'INVOICE_HAS_ASSOCIATED_PAYMENT_ENTRIES', - SALE_INVOICE_NO_IS_REQUIRED: 'SALE_INVOICE_NO_IS_REQUIRED', - CUSTOMER_HAS_SALES_INVOICES: 'CUSTOMER_HAS_SALES_INVOICES', -}; -export const DEFAULT_VIEW_COLUMNS = []; -export const DEFAULT_VIEWS = [ - { - name: 'Draft', - slug: 'draft', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'draft' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Delivered', - slug: 'delivered', - rolesLogicExpression: '1', - roles: [ - { - index: 1, - fieldKey: 'status', - comparator: 'equals', - value: 'delivered', - }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Unpaid', - slug: 'unpaid', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'unpaid' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Partially paid', - slug: 'partially-paid', - rolesLogicExpression: '1', - roles: [ - { - index: 1, - fieldKey: 'status', - comparator: 'equals', - value: 'partially-paid', - }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, - { - name: 'Paid', - slug: 'paid', - rolesLogicExpression: '1', - roles: [ - { index: 1, fieldKey: 'status', comparator: 'equals', value: 'paid' }, - ], - columns: DEFAULT_VIEW_COLUMNS, - }, -]; diff --git a/server/src/services/SessionModel/SessionQueryBuilder.js b/server/src/services/SessionModel/SessionQueryBuilder.js deleted file mode 100644 index 31ec831d8..000000000 --- a/server/src/services/SessionModel/SessionQueryBuilder.js +++ /dev/null @@ -1,13 +0,0 @@ -import SessionModel from 'services/SessionModel'; - -export default class SessionQueryBuilder extends SessionModel.QueryBuilder { - /** - * Add a custom method that stores a session object to the query context. - * @param {*} session - - */ - session(session) { - return this.mergeContext({ - session, - }); - } -} diff --git a/server/src/services/SessionModel/index.js b/server/src/services/SessionModel/index.js deleted file mode 100644 index 368345e6e..000000000 --- a/server/src/services/SessionModel/index.js +++ /dev/null @@ -1,24 +0,0 @@ -import SessionQueryBuilder from 'services/SessionModel/SessionQueryBuilder'; - -export default class SessionModel { - /** - * Constructor method. - * @param {Object} options - - */ - constructor(options) { - this.options = { ...options, ...SessionModel.defaultOptions }; - } - - static get defaultOptions() { - return { - setModifiedBy: true, - setModifiedAt: true, - setCreatedBy: true, - setCreatedAt: true, - }; - } - - static get QueryBuilder() { - return SessionQueryBuilder; - } -} diff --git a/server/src/services/Settings/SettingsService.ts b/server/src/services/Settings/SettingsService.ts deleted file mode 100644 index 34148a7d7..000000000 --- a/server/src/services/Settings/SettingsService.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Service, Inject } from 'typedi'; -import TenancyService from 'services/Tenancy/TenancyService'; - -@Service() -export default class SettingsService { - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - /** - * Increment next number based on the given find query. - * @param {number} tenantId - * @param {any} findQuery - */ - async incrementNextNumber(tenantId: number, findQuery: any): Promise { - const settings = this.tenancy.settings(tenantId); - - this.logger.info('[settings] increment the next number.', { - tenantId, - findQuery, - }); - const currentNumber = settings.find(findQuery); - - if (currentNumber) { - const nextNumber = parseInt(currentNumber.value, 10) + 1; - settings.set(findQuery, nextNumber); - - await settings.save(); - } - } - - /** - * Validates the given options is defined or either not. - * @param {Array} options - * @return {Boolean} - */ - validateNotDefinedSettings(tenantId: number, options) { - const notDefined = []; - - const settings = this.tenancy.settings(tenantId); - - options.forEach((option) => { - const setting = settings.config.getMetaConfig(option.key, option.group); - - if (!setting) { - notDefined.push(option); - } - }); - return notDefined; - } -} diff --git a/server/src/services/Settings/SettingsStore.ts b/server/src/services/Settings/SettingsStore.ts deleted file mode 100644 index 362674014..000000000 --- a/server/src/services/Settings/SettingsStore.ts +++ /dev/null @@ -1,15 +0,0 @@ -import Knex from 'knex'; -import MetableStoreDB from 'lib/Metable/MetableStoreDB'; -import Setting from 'models/Setting'; - -export default class SettingsStore extends MetableStoreDB { - /** - * Constructor method. - * @param {number} tenantId - */ - constructor(repository) { - super(); - this.setExtraColumns(['group']); - this.setRepository(repository); - } -} \ No newline at end of file diff --git a/server/src/services/Setup/SetupService.ts b/server/src/services/Setup/SetupService.ts deleted file mode 100644 index 9a0838e8c..000000000 --- a/server/src/services/Setup/SetupService.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { Service, Inject } from 'typedi'; -import Currencies from 'js-money/lib/currency'; -import HasTenancyService from 'services/Tenancy/TenancyService'; -import { IOrganizationSetupDTO, ITenant } from 'interfaces'; - -import CurrenciesService from 'services/Currencies/CurrenciesService'; -import TenantsManagerService from 'services/Tenancy/TenantsManager'; -import { ServiceError } from 'exceptions'; - -const ERRORS = { - TENANT_IS_ALREADY_SETUPED: 'TENANT_IS_ALREADY_SETUPED', - BASE_CURRENCY_INVALID: 'BASE_CURRENCY_INVALID', -}; - -@Service() -export default class SetupService { - @Inject() - tenancy: HasTenancyService; - - @Inject() - currenciesService: CurrenciesService; - - @Inject() - tenantsManager: TenantsManagerService; - - @Inject('repositories') - sysRepositories: any; - - /** - * Transformes the setup DTO to settings. - * @param {IOrganizationSetupDTO} setupDTO - * @returns - */ - private transformSetupDTOToOptions(setupDTO: IOrganizationSetupDTO) { - return [ - { key: 'name', value: setupDTO.organizationName }, - { key: 'base_currency', value: setupDTO.baseCurrency }, - { key: 'time_zone', value: setupDTO.timeZone }, - { key: 'industry', value: setupDTO.industry }, - ]; - } - - /** - * Sets organization setup settings. - * @param {number} tenantId - * @param {IOrganizationSetupDTO} organizationSetupDTO - */ - private setOrganizationSetupSettings( - tenantId: number, - organizationSetupDTO: IOrganizationSetupDTO - ) { - const settings = this.tenancy.settings(tenantId); - - // Can't continue if app is already configured. - if (settings.get('app_configured')) { return; } - - settings.set([ - ...this.transformSetupDTOToOptions(organizationSetupDTO) - .filter((option) => typeof option.value !== 'undefined') - .map((option) => ({ - ...option, - group: 'organization', - })), - { key: 'app_configured', value: true }, - ]); - } - - /** - * Validates the base currency code. - * @param {string} baseCurrency - */ - public validateBaseCurrencyCode(baseCurrency: string) { - if (typeof Currencies[baseCurrency] === 'undefined') { - throw new ServiceError(ERRORS.BASE_CURRENCY_INVALID); - } - } - - /** - * Organization setup DTO. - * @param {IOrganizationSetupDTO} organizationSetupDTO - * @return {Promise} - */ - public async organizationSetup( - tenantId: number, - organizationSetupDTO: IOrganizationSetupDTO, - ): Promise { - const { tenantRepository } = this.sysRepositories; - - // Find tenant model by the given id. - const tenant = await tenantRepository.findOneById(tenantId); - - // Validate base currency code. - this.validateBaseCurrencyCode(organizationSetupDTO.baseCurrency); - - // Validate tenant not already seeded. - this.validateTenantNotSeeded(tenant); - - // Seeds the base currency to the currencies list. - this.currenciesService.seedBaseCurrency( - tenantId, - organizationSetupDTO.baseCurrency - ); - // Sets organization setup settings. - await this.setOrganizationSetupSettings(tenantId, organizationSetupDTO); - - // Seed tenant. - await this.tenantsManager.seedTenant(tenant); - } - - /** - * Validates tenant not seeded. - * @param {ITenant} tenant - */ - private validateTenantNotSeeded(tenant: ITenant) { - if (tenant.seededAt) { - throw new ServiceError(ERRORS.TENANT_IS_ALREADY_SETUPED); - } - } -} diff --git a/server/src/services/Subscription/MailMessages.ts b/server/src/services/Subscription/MailMessages.ts deleted file mode 100644 index 4c50a5243..000000000 --- a/server/src/services/Subscription/MailMessages.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Service } from "typedi"; - -@Service() -export default class SubscriptionMailMessages { - /** - * - * @param phoneNumber - * @param remainingDays - */ - public async sendRemainingSubscriptionPeriod(phoneNumber: string, remainingDays: number) { - const message: string = ` - Your remaining subscription is ${remainingDays} days, - please renew your subscription before expire. - `; - this.smsClient.sendMessage(phoneNumber, message); - } - - /** - * - * @param phoneNumber - * @param remainingDays - */ - public async sendRemainingTrialPeriod(phoneNumber: string, remainingDays: number) { - const message: string = ` - Your remaining free trial is ${remainingDays} days, - please subscription before ends, if you have any quation to contact us.`; - - this.smsClient.sendMessage(phoneNumber, message); - } -} \ No newline at end of file diff --git a/server/src/services/Subscription/SMSMessages.ts b/server/src/services/Subscription/SMSMessages.ts deleted file mode 100644 index 181862059..000000000 --- a/server/src/services/Subscription/SMSMessages.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Service, Inject } from 'typedi'; -import SMSClient from 'services/SMSClient'; - -@Service() -export default class SubscriptionSMSMessages { - @Inject('SMSClient') - smsClient: SMSClient; - - /** - * Send remaining subscription period SMS message. - * @param {string} phoneNumber - - * @param {number} remainingDays - - */ - public async sendRemainingSubscriptionPeriod(phoneNumber: string, remainingDays: number): Promise { - const message: string = ` - Your remaining subscription is ${remainingDays} days, - please renew your subscription before expire. - `; - this.smsClient.sendMessage(phoneNumber, message); - } - - /** - * Send remaining trial period SMS message. - * @param {string} phoneNumber - - * @param {number} remainingDays - - */ - public async sendRemainingTrialPeriod(phoneNumber: string, remainingDays: number): Promise { - const message: string = ` - Your remaining free trial is ${remainingDays} days, - please subscription before ends, if you have any quation to contact us.`; - - this.smsClient.sendMessage(phoneNumber, message); - } -} \ No newline at end of file diff --git a/server/src/services/Subscription/Subscription.ts b/server/src/services/Subscription/Subscription.ts deleted file mode 100644 index 67d186ac4..000000000 --- a/server/src/services/Subscription/Subscription.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Inject } from 'typedi'; -import { Tenant, Plan } from 'system/models'; -import { IPaymentContext } from 'interfaces'; -import { NotAllowedChangeSubscriptionPlan } from 'exceptions'; - -export default class Subscription { - paymentContext: IPaymentContext | null; - - @Inject('logger') - logger: any; - - /** - * Constructor method. - * @param {IPaymentContext} - */ - constructor(payment?: IPaymentContext) { - this.paymentContext = payment; - } - - /** - * Give the tenant a new subscription. - * @param {Tenant} tenant - * @param {Plan} plan - * @param {string} invoiceInterval - * @param {number} invoicePeriod - * @param {string} subscriptionSlug - */ - protected async newSubscribtion( - tenant, - plan, - invoiceInterval: string, - invoicePeriod: number, - subscriptionSlug: string = 'main' - ) { - const subscription = await tenant - .$relatedQuery('subscriptions') - .modify('subscriptionBySlug', subscriptionSlug) - .first(); - - // No allowed to re-new the the subscription while the subscription is active. - if (subscription && subscription.active()) { - throw new NotAllowedChangeSubscriptionPlan(); - - // In case there is already subscription associated to the given tenant renew it. - } else if (subscription && subscription.inactive()) { - await subscription.renew(invoiceInterval, invoicePeriod); - - // No stored past tenant subscriptions create new one. - } else { - await tenant.newSubscription( - plan.id, - invoiceInterval, - invoicePeriod, - subscriptionSlug - ); - } - } - - /** - * Subscripe to the given plan. - * @param {Plan} plan - * @throws {NotAllowedChangeSubscriptionPlan} - */ - public async subscribe( - tenant: Tenant, - plan: Plan, - paymentModel?: PaymentModel, - subscriptionSlug: string = 'main' - ) { - await this.paymentContext.makePayment(paymentModel, plan); - - return this.newSubscribtion( - tenant, - plan, - plan.invoiceInterval, - plan.invoicePeriod, - subscriptionSlug - ); - } -} diff --git a/server/src/services/Subscription/SubscriptionPeriod.ts b/server/src/services/Subscription/SubscriptionPeriod.ts deleted file mode 100644 index c1d2e4a8b..000000000 --- a/server/src/services/Subscription/SubscriptionPeriod.ts +++ /dev/null @@ -1,41 +0,0 @@ -import moment from 'moment'; - -export default class SubscriptionPeriod { - start: Date; - end: Date; - interval: string; - count: number; - - /** - * Constructor method. - * @param {string} interval - - * @param {number} count - - * @param {Date} start - - */ - constructor(interval: string = 'month', count: number, start?: Date) { - this.interval = interval; - this.count = count; - this.start = start; - - if (!start) { - this.start = moment().toDate(); - } - this.end = moment(start).add(count, interval).toDate(); - } - - getStartDate() { - return this.start; - } - - getEndDate() { - return this.end; - } - - getInterval() { - return this.interval; - } - - getIntervalCount() { - return this.interval; - } -} \ No newline at end of file diff --git a/server/src/services/Subscription/SubscriptionService.ts b/server/src/services/Subscription/SubscriptionService.ts deleted file mode 100644 index 1a5788fcd..000000000 --- a/server/src/services/Subscription/SubscriptionService.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { Plan, PlanSubscription, Tenant } from 'system/models'; -import Subscription from 'services/Subscription/Subscription'; -import LicensePaymentMethod from 'services/Payment/LicensePaymentMethod'; -import PaymentContext from 'services/Payment'; -import SubscriptionSMSMessages from 'services/Subscription/SMSMessages'; -import SubscriptionMailMessages from 'services/Subscription/MailMessages'; -import { ILicensePaymentModel } from 'interfaces'; -import SubscriptionViaLicense from './SubscriptionViaLicense'; - -@Service() -export default class SubscriptionService { - @Inject() - smsMessages: SubscriptionSMSMessages; - - @Inject() - mailMessages: SubscriptionMailMessages; - - @Inject('logger') - logger: any; - - @Inject('repositories') - sysRepositories: any; - - /** - * Handles the payment process via license code and than subscribe to - * the given tenant. - * @param {number} tenantId - * @param {String} planSlug - * @param {string} licenseCode - * @return {Promise} - */ - public async subscriptionViaLicense( - tenantId: number, - planSlug: string, - paymentModel: ILicensePaymentModel, - subscriptionSlug: string = 'main' - ) { - // Retrieve plan details. - const plan = await Plan.query().findOne('slug', planSlug); - - // Retrieve tenant details. - const tenant = await Tenant.query().findById(tenantId); - - // License payment method. - const paymentViaLicense = new LicensePaymentMethod(); - - // Payment context. - const paymentContext = new PaymentContext(paymentViaLicense); - - // Subscription. - const subscription = new SubscriptionViaLicense(paymentContext); - - // Subscribe. - await subscription.subscribe(tenant, plan, paymentModel, subscriptionSlug); - } - - /** - * Retrieve all subscription of the given tenant. - * @param {number} tenantId - */ - public async getSubscriptions(tenantId: number) { - const subscriptions = await PlanSubscription.query().where( - 'tenant_id', - tenantId - ); - return subscriptions; - } -} diff --git a/server/src/services/Subscription/SubscriptionViaLicense.ts b/server/src/services/Subscription/SubscriptionViaLicense.ts deleted file mode 100644 index ffeeb7b64..000000000 --- a/server/src/services/Subscription/SubscriptionViaLicense.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { License, Tenant, Plan } from 'system/models'; -import Subscription from './Subscription'; -import { PaymentModel } from 'interfaces'; - -export default class SubscriptionViaLicense extends Subscription { - /** - * Subscripe to the given plan. - * @param {Plan} plan - * @throws {NotAllowedChangeSubscriptionPlan} - */ - public async subscribe( - tenant: Tenant, - plan: Plan, - paymentModel?: PaymentModel, - subscriptionSlug: string = 'main' - ): Promise { - await this.paymentContext.makePayment(paymentModel, plan); - - return this.newSubscriptionFromLicense( - tenant, - plan, - paymentModel.licenseCode, - subscriptionSlug - ); - } - - /** - * New subscription from the given license. - * @param {Tanant} tenant - * @param {Plab} plan - * @param {string} licenseCode - * @param {string} subscriptionSlug - * @returns {Promise} - */ - private async newSubscriptionFromLicense( - tenant, - plan, - licenseCode: string, - subscriptionSlug: string = 'main' - ): Promise { - // License information. - const licenseInfo = await License.query().findOne( - 'licenseCode', - licenseCode - ); - return this.newSubscribtion( - tenant, - plan, - licenseInfo.periodInterval, - licenseInfo.licensePeriod, - subscriptionSlug - ); - } -} diff --git a/server/src/services/Tenancy/SystemService.ts b/server/src/services/Tenancy/SystemService.ts deleted file mode 100644 index 15159d6e5..000000000 --- a/server/src/services/Tenancy/SystemService.ts +++ /dev/null @@ -1,26 +0,0 @@ -import Container from "typedi" -import { Service, Inject } from 'typedi'; - -@Service() -export default class HasSystemService implements SystemService{ - - private container(key: string) { - return Container.get(key); - } - - knex() { - return this.container('knex'); - } - - repositories() { - return this.container('repositories'); - } - - cache() { - return this.container('cache'); - } - - dbManager() { - return this.container('dbManager'); - } -} \ No newline at end of file diff --git a/server/src/services/Tenancy/TenancyService.ts b/server/src/services/Tenancy/TenancyService.ts deleted file mode 100644 index 057e6f53c..000000000 --- a/server/src/services/Tenancy/TenancyService.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { Container, Service, Inject } from 'typedi'; -import TenantsManagerService from 'services/Tenancy/TenantsManager'; -import tenantModelsLoader from 'loaders/tenantModels'; -import tenantRepositoriesLoader from 'loaders/tenantRepositories'; -import tenantCacheLoader from 'loaders/tenantCache'; - -@Service() -export default class HasTenancyService { - @Inject() - tenantsManager: TenantsManagerService; - - /** - * Retrieve the given tenant container. - * @param {number} tenantId - * @return {Container} - */ - tenantContainer(tenantId: number) { - return Container.of(`tenant-${tenantId}`); - } - - /** - * Singleton tenant service. - * @param {number} tenantId - Tenant id. - * @param {string} key - Service key. - * @param {Function} callback - */ - singletonService(tenantId: number, key: string, callback: Function) { - const container = this.tenantContainer(tenantId); - const Logger = Container.get('logger'); - const hasServiceInstnace = container.has(key); - - if (!hasServiceInstnace) { - const serviceInstance = callback(); - - container.set(key, serviceInstance); - Logger.info(`[tenant_DI] ${key} injected to tenant container.`, { tenantId, key }); - - return serviceInstance; - } else { - return container.get(key); - } - } - - /** - * Retrieve knex instance of the given tenant id. - * @param {number} tenantId - */ - knex(tenantId: number) { - return this.singletonService(tenantId, 'tenantManager', () => { - return this.tenantsManager.getKnexInstance(tenantId); - }); - } - - /** - * Retrieve models of the givne tenant id. - * @param {number} tenantId - The tenant id. - */ - models(tenantId: number) { - const knexInstance = this.knex(tenantId); - - return this.singletonService(tenantId, 'models', () => { - return tenantModelsLoader(knexInstance); - }); - } - - /** - * Retrieve repositories of the given tenant id. - * @param {number} tenantId - Tenant id. - */ - repositories(tenantId: number) { - return this.singletonService(tenantId, 'repositories', () => { - const cache = this.cache(tenantId); - const knex = this.knex(tenantId); - - return tenantRepositoriesLoader(knex, cache); - }); - } - - /** - * Sets i18n locals function. - * @param {number} tenantId - * @param locals - */ - setI18nLocals(tenantId: number, locals: any) { - return this.singletonService(tenantId, 'i18n', () => { - return locals; - }); - } - - /** - * Retrieve i18n locales methods. - * @param {number} tenantId - Tenant id. - */ - i18n(tenantId: number) { - return this.singletonService(tenantId, 'i18n', () => { - throw new Error('I18n locals is not set yet.'); - }); - } - - /** - * Retrieve tenant cache instance. - * @param {number} tenantId - Tenant id. - */ - cache(tenantId: number) { - return this.singletonService(tenantId, 'cache', () => { - return tenantCacheLoader(tenantId); - }); - } - - settings(tenantId: number) { - return this.singletonService(tenantId, 'settings', () => { - throw new Error('Settings is not injected yet.'); - }); - } -} \ No newline at end of file diff --git a/server/src/services/Tenancy/TenantDBManager.ts b/server/src/services/Tenancy/TenantDBManager.ts deleted file mode 100644 index 1a1f03973..000000000 --- a/server/src/services/Tenancy/TenantDBManager.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { Container } from 'typedi'; -import Knex from 'knex'; -import { knexSnakeCaseMappers } from 'objection'; -import config from 'config'; -import { ITenant, ITenantDBManager, ISystemService } from 'interfaces'; -import SystemService from 'services/Tenancy/SystemService'; -import { TenantDBAlreadyExists } from 'exceptions'; -import { tenantKnexConfig, tenantSeedConfig } from 'config/knexConfig'; - -export default class TenantDBManager implements ITenantDBManager { - static knexCache: { [key: string]: Knex } = {}; - - // System database manager. - dbManager: any; - - // System knex instance. - sysKnex: Knex; - - /** - * Constructor method. - * @param {ITenant} tenant - */ - constructor() { - const systemService = Container.get(SystemService); - - this.dbManager = systemService.dbManager(); - this.sysKnex = systemService.knex(); - } - - /** - * Retrieve the tenant database name. - * @return {string} - */ - private getDatabaseName(tenant: ITenant) { - return `${config.tenant.db_name_prefix}${tenant.organizationId}`; - } - - /** - * Detarmines the tenant database weather exists. - * @return {Promise} - */ - public async databaseExists(tenant: ITenant) { - const databaseName = this.getDatabaseName(tenant); - - const results = await this.sysKnex.raw( - 'SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = "' + - databaseName + - '"' - ); - - return results[0].length > 0; - } - - /** - * Creates a tenant database. - * @throws {TenantAlreadyInitialized} - * @return {Promise} - */ - public async createDatabase(tenant: ITenant): Promise { - await this.throwErrorIfTenantDBExists(tenant); - - const databaseName = this.getDatabaseName(tenant); - await this.dbManager.createDb(databaseName); - } - - /** - * Dropdowns the tenant database if it was exist. - * @param {ITenant} tenant - - */ - public async dropDatabaseIfExists(tenant: ITenant) { - const isExists = await this.databaseExists(tenant); - - if (!isExists) { - return; - } - - await this.dropDatabase(tenant); - } - - /** - * dropdowns the tenant's database. - * @param {ITenant} tenant - */ - public async dropDatabase(tenant: ITenant) { - const databaseName = this.getDatabaseName(tenant); - - await this.dbManager.dropDb(databaseName); - } - - /** - * Migrate tenant database schema to the latest version. - * @return {Promise} - */ - public async migrate(tenant: ITenant): Promise { - const knex = this.setupKnexInstance(tenant); - - await knex.migrate.latest(); - } - - /** - * Seeds initial data to the tenant database. - * @return {Promise} - */ - public async seed(tenant: ITenant): Promise { - const knex = this.setupKnexInstance(tenant); - - await knex.migrate.latest({ - ...tenantSeedConfig(tenant), - disableMigrationsListValidation: true, - }); - } - - /** - * Retrieve the knex instance of tenant. - * @return {Knex} - */ - public setupKnexInstance(tenant: ITenant) { - const key: string = `${tenant.id}`; - let knexInstance = TenantDBManager.knexCache[key]; - - if (!knexInstance) { - knexInstance = Knex({ - ...tenantKnexConfig(tenant), - ...knexSnakeCaseMappers({ upperCase: true }), - }); - TenantDBManager.knexCache[key] = knexInstance; - } - return knexInstance; - } - - /** - * Retrieve knex instance from the givne tenant. - */ - public getKnexInstance(tenantId: number) { - const key: string = `${tenantId}`; - let knexInstance = TenantDBManager.knexCache[key]; - - if (!knexInstance) { - throw new Error('Knex instance is not initialized yut.'); - } - return knexInstance; - } - - /** - * Throws error if the tenant database already exists. - * @return {Promise} - */ - async throwErrorIfTenantDBExists(tenant: ITenant) { - const isExists = await this.databaseExists(tenant); - if (isExists) { - throw new TenantDBAlreadyExists(); - } - } -} diff --git a/server/src/services/Tenancy/TenantService.ts b/server/src/services/Tenancy/TenantService.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/server/src/services/Tenancy/TenantsManager.ts b/server/src/services/Tenancy/TenantsManager.ts deleted file mode 100644 index 2bdc2b6d2..000000000 --- a/server/src/services/Tenancy/TenantsManager.ts +++ /dev/null @@ -1,177 +0,0 @@ -import { Container, Inject, Service } from 'typedi'; -import { ServiceError } from 'exceptions'; -import { ITenantManager, ITenant, ITenantDBManager } from 'interfaces'; -import { - EventDispatcherInterface, - EventDispatcher, -} from 'decorators/eventDispatcher'; -import { - TenantAlreadyInitialized, - TenantAlreadySeeded, - TenantDatabaseNotBuilt, -} from 'exceptions'; -import TenantDBManager from 'services/Tenancy/TenantDBManager'; -import events from 'subscribers/events'; -import { Tenant } from 'system/models'; - -const ERRORS = { - TENANT_ALREADY_CREATED: 'TENANT_ALREADY_CREATED', - TENANT_NOT_EXISTS: 'TENANT_NOT_EXISTS', -}; - -// Tenants manager service. -@Service() -export default class TenantsManagerService implements ITenantManager { - static instances: { [key: number]: ITenantManager } = {}; - - @EventDispatcher() - private eventDispatcher: EventDispatcherInterface; - - @Inject('repositories') - private sysRepositories: any; - - private tenantDBManager: ITenantDBManager; - - /** - * Constructor method. - */ - constructor() { - this.tenantDBManager = new TenantDBManager(); - } - - /** - * Creates a new teant with unique organization id. - * @param {ITenant} tenant - * @return {Promise} - */ - public async createTenant(): Promise { - const { tenantRepository } = this.sysRepositories; - const tenant = await tenantRepository.createWithUniqueOrgId(); - - return tenant; - } - - /** - * Creates a new tenant database. - * @param {ITenant} tenant - - * @return {Promise} - */ - public async createDatabase(tenant: ITenant): Promise { - this.throwErrorIfTenantAlreadyInitialized(tenant); - - await this.tenantDBManager.createDatabase(tenant); - - this.eventDispatcher.dispatch(events.tenantManager.databaseCreated); - } - - /** - * Drops the database if the given tenant. - * @param {number} tenantId - */ - async dropDatabaseIfExists(tenant: ITenant) { - // Drop the database if exists. - await this.tenantDBManager.dropDatabaseIfExists(tenant); - } - - /** - * Detarmines the tenant has database. - * @param {ITenant} tenant - * @returns {Promise} - */ - public async hasDatabase(tenant: ITenant): Promise { - return this.tenantDBManager.databaseExists(tenant); - } - - /** - * Migrates the tenant database. - * @param {ITenant} tenant - * @return {Promise} - */ - public async migrateTenant(tenant: ITenant): Promise { - // Throw error if the tenant already initialized. - this.throwErrorIfTenantAlreadyInitialized(tenant); - - // Migrate the database tenant. - await this.tenantDBManager.migrate(tenant); - - // Mark the tenant as initialized. - await Tenant.markAsInitialized(tenant.id); - - // Triggers `onTenantMigrated` event. - this.eventDispatcher.dispatch(events.tenantManager.tenantMigrated, { - tenantId: tenant.id, - }); - } - - /** - * Seeds the tenant database. - * @param {ITenant} tenant - * @return {Promise} - */ - public async seedTenant(tenant: ITenant): Promise { - // Throw error if the tenant is not built yet. - this.throwErrorIfTenantNotBuilt(tenant); - - // Throw error if the tenant is not seeded yet. - this.throwErrorIfTenantAlreadySeeded(tenant); - - // Seed the tenant database. - await this.tenantDBManager.seed(tenant); - - // Mark the tenant as seeded in specific date. - await Tenant.markAsSeeded(tenant.id); - - // Triggers `onTenantSeeded` event. - this.eventDispatcher.dispatch(events.tenantManager.tenantSeeded, { - tenantId: tenant.id, - }); - } - - /** - * Initialize knex instance or retrieve the instance of cache map. - * @param {ITenant} tenant - * @returns {Knex} - */ - public setupKnexInstance(tenant: ITenant) { - return this.tenantDBManager.setupKnexInstance(tenant); - } - - /** - * Retrieve tenant knex instance or throw error in case was not initialized. - * @param {number} tenantId - * @returns {Knex} - */ - public getKnexInstance(tenantId: number) { - return this.tenantDBManager.getKnexInstance(tenantId); - } - - /** - * Throws error if the tenant already seeded. - * @throws {TenantAlreadySeeded} - */ - private throwErrorIfTenantAlreadySeeded(tenant: ITenant) { - if (tenant.seededAt) { - throw new TenantAlreadySeeded(); - } - } - - /** - * Throws error if the tenant database is not built yut. - * @param {ITenant} tenant - */ - private throwErrorIfTenantNotBuilt(tenant: ITenant) { - if (!tenant.initializedAt) { - throw new TenantDatabaseNotBuilt(); - } - } - - /** - * Throws error if the tenant already migrated. - * @throws {TenantAlreadyInitialized} - */ - private throwErrorIfTenantAlreadyInitialized(tenant: ITenant) { - if (tenant.initializedAt) { - throw new TenantAlreadyInitialized(); - } - } -} diff --git a/server/src/services/Users/UsersService.ts b/server/src/services/Users/UsersService.ts deleted file mode 100644 index 48a151add..000000000 --- a/server/src/services/Users/UsersService.ts +++ /dev/null @@ -1,239 +0,0 @@ -import TenancyService from 'services/Tenancy/TenancyService'; -import { Inject, Service } from 'typedi'; -import { ServiceError, ServiceErrors } from 'exceptions'; -import { ISystemUser, ISystemUserDTO } from 'interfaces'; -import { SystemUser } from 'system/models'; - -const ERRORS = { - CANNOT_DELETE_LAST_USER: 'CANNOT_DELETE_LAST_USER', - USER_ALREADY_ACTIVE: 'USER_ALREADY_ACTIVE', - USER_ALREADY_INACTIVE: 'USER_ALREADY_INACTIVE', - EMAIL_ALREADY_EXISTS: 'EMAIL_ALREADY_EXISTS', - PHONE_NUMBER_ALREADY_EXIST: 'PHONE_NUMBER_ALREADY_EXIST', - USER_NOT_FOUND: 'USER_NOT_FOUND', - USER_SAME_THE_AUTHORIZED_USER: 'USER_SAME_THE_AUTHORIZED_USER', -}; - -@Service() -export default class UsersService { - @Inject('logger') - logger: any; - - @Inject('repositories') - repositories: any; - - /** - * Creates a new user. - * @param {number} tenantId - * @param {number} userId - * @param {IUserDTO} userDTO - * @return {Promise} - */ - public async editUser( - tenantId: number, - userId: number, - userDTO: ISystemUserDTO - ): Promise { - const { systemUserRepository } = this.repositories; - - const userByEmail = await SystemUser.query() - .where('email', userDTO.email) - .whereNot('id', userId); - - const userByPhoneNumber = await SystemUser.query() - .where('phone_number', userDTO.phoneNumber) - .whereNot('id', userId); - - const serviceErrors: ServiceError[] = []; - - if (userByEmail.length > 0) { - serviceErrors.push(new ServiceError(ERRORS.EMAIL_ALREADY_EXISTS)); - } - if (userByPhoneNumber.length > 0) { - serviceErrors.push(new ServiceError(ERRORS.PHONE_NUMBER_ALREADY_EXIST)); - } - if (serviceErrors.length > 0) { - throw new ServiceErrors(serviceErrors); - } - const updateSystemUser = await systemUserRepository.update( - { ...userDTO }, - { id: userId } - ); - return updateSystemUser; - } - - /** - * Deletes the given user id. - * @param {number} tenantId - * @param {number} userId - */ - public async deleteUser(tenantId: number, userId: number): Promise { - const { systemUserRepository } = this.repositories; - - // Retrieve user details or throw not found service error. - const oldUser = await this.getUserOrThrowError(tenantId, userId); - - this.logger.info('[users] trying to delete the given user.', { - tenantId, - userId, - }); - // Validate the delete user should not be the last user. - await this.validateNotLastUserDelete(tenantId); - - // Delete user from the storage. - await systemUserRepository.deleteById(userId); - - this.logger.info('[users] the given user deleted successfully.', { - tenantId, - userId, - }); - } - - /** - * Activate the given user id. - * @param {number} tenantId - Tenant id. - * @param {number} userId - User id. - * @return {Promise} - */ - public async activateUser( - tenantId: number, - userId: number, - authorizedUser: ISystemUser - ): Promise { - const { systemUserRepository } = this.repositories; - - // Throw service error if the given user is equals the authorized user. - this.throwErrorIfUserSameAuthorizedUser(userId, authorizedUser); - - // Retrieve the user or throw not found service error. - const user = await this.getUserOrThrowError(tenantId, userId); - - // Throw serivce error if the user is already activated. - this.throwErrorIfUserActive(user); - - await systemUserRepository.activateById(userId); - } - - /** - * Inactivate the given user id. - * @param {number} tenantId - * @param {number} userId - * @return {Promise} - */ - public async inactivateUser( - tenantId: number, - userId: number, - authorizedUser: ISystemUser - ): Promise { - const { systemUserRepository } = this.repositories; - - // Throw service error if the given user is equals the authorized user. - this.throwErrorIfUserSameAuthorizedUser(userId, authorizedUser); - - // Retrieve the user or throw not found service error. - const user = await this.getUserOrThrowError(tenantId, userId); - - // Throw serivce error if the user is already inactivated. - this.throwErrorIfUserInactive(user); - - await systemUserRepository.inactivateById(userId); - } - - /** - * Retrieve users list based on the given filter. - * @param {number} tenantId - * @param {object} filter - */ - public async getList(tenantId: number) { - const { systemUserRepository } = this.repositories; - - const users = await systemUserRepository.find({ tenantId }); - - return users; - } - - /** - * Retrieve the given user details. - * @param {number} tenantId - Tenant id. - * @param {number} userId - User id. - */ - public async getUser(tenantId: number, userId: number) { - return this.getUserOrThrowError(tenantId, userId); - } - - /** - * Validate user existance throw error in case user was not found., - * @param {number} tenantId - - * @param {number} userId - - * @returns {ISystemUser} - */ - async getUserOrThrowError( - tenantId: number, - userId: number - ): Promise { - const { systemUserRepository } = this.repositories; - - const user = await systemUserRepository.findOneByIdAndTenant( - userId, - tenantId - ); - if (!user) { - this.logger.info('[users] the given user not found.', { - tenantId, - userId, - }); - throw new ServiceError(ERRORS.USER_NOT_FOUND); - } - return user; - } - - /** - * Validate the delete user should not be the last user. - * @param {number} tenantId - */ - private async validateNotLastUserDelete(tenantId: number) { - const { systemUserRepository } = this.repositories; - - const usersFound = await systemUserRepository.find({ tenantId }); - - if (usersFound.length === 1) { - throw new ServiceError(ERRORS.CANNOT_DELETE_LAST_USER); - } - } - - /** - * Throws service error in case the user was already active. - * @param {ISystemUser} user - * @throws {ServiceError} - */ - private throwErrorIfUserActive(user: ISystemUser) { - if (user.active) { - throw new ServiceError(ERRORS.USER_ALREADY_ACTIVE); - } - } - - /** - * Throws service error in case the user was already inactive. - * @param {ISystemUser} user - * @throws {ServiceError} - */ - private throwErrorIfUserInactive(user: ISystemUser) { - if (!user.active) { - throw new ServiceError(ERRORS.USER_ALREADY_INACTIVE); - } - } - - /** - * Throw service error in case the given user same the authorized user. - * @param {number} userId - * @param {ISystemUser} authorizedUser - */ - private throwErrorIfUserSameAuthorizedUser( - userId: number, - authorizedUser: ISystemUser - ) { - if (userId === authorizedUser.id) { - throw new ServiceError(ERRORS.USER_SAME_THE_AUTHORIZED_USER); - } - } -} diff --git a/server/src/services/Views/ViewsService.ts b/server/src/services/Views/ViewsService.ts deleted file mode 100644 index 0c0feda7c..000000000 --- a/server/src/services/Views/ViewsService.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Service, Inject } from 'typedi'; -import { - IViewsService, - IView, - IModel, -} from 'interfaces'; -import TenancyService from 'services/Tenancy/TenancyService'; -import ResourceService from 'services/Resource/ResourceService'; - -@Service() -export default class ViewsService implements IViewsService { - @Inject() - tenancy: TenancyService; - - @Inject('logger') - logger: any; - - @Inject() - resourceService: ResourceService; - - /** - * Listing resource views. - * @param {number} tenantId - - * @param {string} resourceModel - - */ - public async listResourceViews( - tenantId: number, - resourceModelName: string - ): Promise { - // Validate the resource model name is valid. - const resourceModel = this.getResourceModelOrThrowError( - tenantId, - resourceModelName - ); - // Default views. - const defaultViews = resourceModel.getDefaultViews(); - - return defaultViews; - } - - /** - * Retrieve resource model from resource name or throw not found error. - * @param {number} tenantId - * @param {number} resourceModel - */ - private getResourceModelOrThrowError( - tenantId: number, - resourceModel: string - ): IModel { - return this.resourceService.getResourceModel(tenantId, resourceModel); - } -} diff --git a/server/src/subscribers/Bills/WriteInventoryTransactions.ts b/server/src/subscribers/Bills/WriteInventoryTransactions.ts deleted file mode 100644 index 75ff3da4e..000000000 --- a/server/src/subscribers/Bills/WriteInventoryTransactions.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Container } from 'typedi'; -import { EventSubscriber, On } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import BillsService from 'services/Purchases/Bills'; - -@EventSubscriber() -export default class BillSubscriber { - tenancy: TenancyService; - billsService: BillsService; - logger: any; - - /** - * Constructor method. - */ - constructor() { - this.tenancy = Container.get(TenancyService); - this.billsService = Container.get(BillsService); - this.logger = Container.get('logger'); - } - - /** - * Handles writing the inventory transactions once bill created. - */ - @On(events.bill.onCreated) - async handleWritingInventoryTransactions({ tenantId, bill }) { - this.logger.info('[bill] writing the inventory transactions', { tenantId }); - this.billsService.recordInventoryTransactions( - tenantId, - bill - ); - } - - /** - * Handles the overwriting the inventory transactions once bill edited. - */ - @On(events.bill.onEdited) - async handleOverwritingInventoryTransactions({ tenantId, bill }) { - this.logger.info('[bill] overwriting the inventory transactions.', { - tenantId, - }); - this.billsService.recordInventoryTransactions( - tenantId, - bill, - true - ); - } - - /** - * Handles the reverting the inventory transactions once the bill deleted. - */ - @On(events.bill.onDeleted) - async handleRevertInventoryTransactions({ tenantId, billId }) { - this.logger.info('[bill] reverting the bill inventory transactions', { - tenantId, - billId, - }); - this.billsService.revertInventoryTransactions(tenantId, billId); - } -} diff --git a/server/src/subscribers/Bills/WriteJournalEntries.ts b/server/src/subscribers/Bills/WriteJournalEntries.ts deleted file mode 100644 index 0741f6255..000000000 --- a/server/src/subscribers/Bills/WriteJournalEntries.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { Container } from 'typedi'; -import { EventSubscriber, On } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import BillsService from 'services/Purchases/Bills'; - -@EventSubscriber() -export default class BillSubscriber { - tenancy: TenancyService; - billsService: BillsService; - logger: any; - - /** - * Constructor method. - */ - constructor() { - this.tenancy = Container.get(TenancyService); - this.billsService = Container.get(BillsService); - this.logger = Container.get('logger'); - } - - /** - * Handles writing journal entries once bill created. - */ - @On(events.bill.onCreated) - async handlerWriteJournalEntriesOnCreate({ tenantId, billId }) { - // Writes the journal entries for the given bill transaction. - this.logger.info('[bill] writing bill journal entries.', { tenantId }); - await this.billsService.recordJournalTransactions(tenantId, billId); - } - - /** - * Handles the overwriting journal entries once bill edited. - */ - @On(events.bill.onEdited) - async handleOverwriteJournalEntriesOnEdit({ tenantId, billId }) { - // Overwrite the journal entries for the given bill transaction. - this.logger.info('[bill] overwriting bill journal entries.', { tenantId }); - await this.billsService.recordJournalTransactions(tenantId, billId, true); - } - - /** - * Handles revert journal entries on bill deleted. - */ - @On(events.bill.onDeleted) - async handlerDeleteJournalEntries({ tenantId, billId }) { - // Delete associated bill journal transactions. - this.logger.info('[bill] trying to delete journal entries.', { - tenantId, - billId, - }); - await this.billsService.revertJournalEntries(tenantId, billId); - } -} diff --git a/server/src/subscribers/Bills/index.ts b/server/src/subscribers/Bills/index.ts deleted file mode 100644 index 984dae35e..000000000 --- a/server/src/subscribers/Bills/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Container } from 'typedi'; -import { EventSubscriber, On } from 'event-dispatch'; - -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import BillsService from 'services/Purchases/Bills'; - -@EventSubscriber() -export default class BillSubscriber { - tenancy: TenancyService; - billsService: BillsService; - logger: any; - - /** - * Constructor method. - */ - constructor() { - this.tenancy = Container.get(TenancyService); - this.billsService = Container.get(BillsService); - this.logger = Container.get('logger'); - } -} diff --git a/server/src/subscribers/Inventory/Inventory.ts b/server/src/subscribers/Inventory/Inventory.ts deleted file mode 100644 index 05c8c3fd2..000000000 --- a/server/src/subscribers/Inventory/Inventory.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { Container } from 'typedi'; -import { EventSubscriber, On } from 'event-dispatch'; -import { map, head } from 'lodash'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import SaleInvoicesCost from 'services/Sales/SalesInvoicesCost'; -import InventoryItemsQuantitySync from 'services/Inventory/InventoryItemsQuantitySync'; -import InventoryService from 'services/Inventory/Inventory'; - -@EventSubscriber() -export class InventorySubscriber { - depends: number = 0; - startingDate: Date; - saleInvoicesCost: SaleInvoicesCost; - tenancy: TenancyService; - itemsQuantitySync: InventoryItemsQuantitySync; - inventoryService: InventoryService; - agenda: any; - - /** - * Constructor method. - */ - constructor() { - this.saleInvoicesCost = Container.get(SaleInvoicesCost); - this.itemsQuantitySync = Container.get(InventoryItemsQuantitySync); - this.inventoryService = Container.get(InventoryService); - this.tenancy = Container.get(TenancyService); - this.agenda = Container.get('agenda'); - } - - /** - * Marks items cost compute running state. - */ - @On(events.inventory.onComputeItemCostJobScheduled) - async markGlobalSettingsComputeItems({ - tenantId - }) { - await this.inventoryService.markItemsCostComputeRunning(tenantId, true); - } - - /** - * Marks items cost compute as completed. - */ - @On(events.inventory.onInventoryCostEntriesWritten) - async markGlobalSettingsComputeItemsCompeted({ - tenantId - }) { - await this.inventoryService.markItemsCostComputeRunning(tenantId, false); - } - - /** - * Handle run writing the journal entries once the compute items jobs completed. - */ - @On(events.inventory.onComputeItemCostJobCompleted) - async onComputeItemCostJobFinished({ itemId, tenantId, startingDate }) { - const dependsComputeJobs = await this.agenda.jobs({ - name: 'compute-item-cost', - nextRunAt: { $ne: null }, - 'data.tenantId': tenantId, - }); - // There is no scheduled compute jobs waiting. - if (dependsComputeJobs.length === 0) { - this.startingDate = null; - - await this.saleInvoicesCost.scheduleWriteJournalEntries( - tenantId, - startingDate - ); - } - } - - /** - * Sync inventory items quantity once inventory transactions created. - */ - @On(events.inventory.onInventoryTransactionsCreated) - async syncItemsQuantityOnceInventoryTransactionsCreated({ - tenantId, - inventoryTransactions, - }) { - const itemsQuantityChanges = this.itemsQuantitySync.getItemsQuantityChanges( - inventoryTransactions - ); - await this.itemsQuantitySync.changeItemsQuantity( - tenantId, - itemsQuantityChanges - ); - } - - /** - * Sync inventory items quantity once inventory transactions deleted. - */ - @On(events.inventory.onInventoryTransactionsDeleted) - async syncItemsQuantityOnceInventoryTransactionsDeleted({ - tenantId, - oldInventoryTransactions, - }) { - const itemsQuantityChanges = this.itemsQuantitySync.getReverseItemsQuantityChanges( - oldInventoryTransactions - ); - await this.itemsQuantitySync.changeItemsQuantity( - tenantId, - itemsQuantityChanges - ); - } - - /** - * - */ - @On(events.inventory.onInventoryTransactionsCreated) - async handleScheduleItemsCostOnInventoryTransactionsCreated({ - tenantId, - inventoryTransactions, - }) { - const inventoryItemsIds = map(inventoryTransactions, 'itemId'); - - await this.saleInvoicesCost.computeItemsCostByInventoryTransactions( - tenantId, - inventoryTransactions - ); - } - - /** - * Schedules compute items cost once the inventory transactions deleted. - */ - @On(events.inventory.onInventoryTransactionsDeleted) - async handleScheduleItemsCostOnInventoryTransactionsDeleted({ - tenantId, - transactionType, - transactionId, - oldInventoryTransactions, - }) { - // Ignore compute item cost with theses transaction types. - const ignoreWithTransactionTypes = ['OpeningItem']; - - if (ignoreWithTransactionTypes.indexOf(transactionType) !== -1) { - return; - } - const inventoryItemsIds = map(oldInventoryTransactions, 'itemId'); - const startingDates = map(oldInventoryTransactions, 'date'); - const startingDate = head(startingDates); - - await this.saleInvoicesCost.scheduleComputeCostByItemsIds( - tenantId, - inventoryItemsIds, - startingDate - ); - } -} diff --git a/server/src/subscribers/Inventory/InventoryAdjustment.ts b/server/src/subscribers/Inventory/InventoryAdjustment.ts deleted file mode 100644 index b4b494b5a..000000000 --- a/server/src/subscribers/Inventory/InventoryAdjustment.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Container } from 'typedi'; -import { On, EventSubscriber } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import InventoryAdjustmentService from 'services/Inventory/InventoryAdjustmentService'; - -@EventSubscriber() -export default class InventoryAdjustmentsSubscriber { - logger: any; - tenancy: TenancyService; - inventoryAdjustment: InventoryAdjustmentService; - - /** - * Constructor method. - */ - constructor() { - this.logger = Container.get('logger'); - this.tenancy = Container.get(TenancyService); - this.inventoryAdjustment = Container.get(InventoryAdjustmentService); - } - - /** - * Handles writing inventory transactions once the quick adjustment created. - */ - @On(events.inventoryAdjustment.onQuickCreated) - async handleWriteInventoryTransactionsOnceQuickCreated({ - tenantId, - inventoryAdjustment, - }) { - // Can't continue if the inventory adjustment is not published. - if (!inventoryAdjustment.isPublished) { return; } - - await this.inventoryAdjustment.writeInventoryTransactions( - tenantId, - inventoryAdjustment - ); - } - - /** - * Handles reverting invetory transactions once the inventory adjustment deleted. - */ - @On(events.inventoryAdjustment.onDeleted) - async handleRevertInventoryTransactionsOnceDeleted({ - tenantId, - inventoryAdjustmentId, - oldInventoryAdjustment, - }) { - // Can't continue if the inventory adjustment is not published. - if (!oldInventoryAdjustment.isPublished) { return; } - - await this.inventoryAdjustment.revertInventoryTransactions( - tenantId, - inventoryAdjustmentId, - ); - } - - /** - * Handles writing inventory transactions once the quick adjustment created. - */ - @On(events.inventoryAdjustment.onPublished) - async handleWriteInventoryTransactionsOncePublished({ - tenantId, - inventoryAdjustment, - }) { - await this.inventoryAdjustment.writeInventoryTransactions( - tenantId, - inventoryAdjustment - ) - } -} \ No newline at end of file diff --git a/server/src/subscribers/LandedCost/index.ts b/server/src/subscribers/LandedCost/index.ts deleted file mode 100644 index ec31b83d9..000000000 --- a/server/src/subscribers/LandedCost/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Container } from 'typedi'; -import { On, EventSubscriber } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import BillsService from 'services/Purchases/Bills'; - -@EventSubscriber() -export default class BillLandedCostSubscriber { - logger: any; - tenancy: TenancyService; - billsService: BillsService; - - /** - * Constructor method. - */ - constructor() { - this.logger = Container.get('logger'); - this.tenancy = Container.get(TenancyService); - this.billsService = Container.get(BillsService); - } - - /** - * Marks the rewrite bill journal entries once the landed cost transaction - * be deleted or created. - */ - @On(events.billLandedCost.onCreated) - @On(events.billLandedCost.onDeleted) - public async handleRewriteBillJournalEntries({ - tenantId, - billId, - bilLandedCostId, - }) { - // Overwrite the journal entries for the given bill transaction. - this.logger.info('[bill] overwriting bill journal entries.', { tenantId }); - await this.billsService.recordJournalTransactions(tenantId, billId, true); - } -} diff --git a/server/src/subscribers/SaleInvoices/WriteInventoryTransactions.ts b/server/src/subscribers/SaleInvoices/WriteInventoryTransactions.ts deleted file mode 100644 index 3c5e259e1..000000000 --- a/server/src/subscribers/SaleInvoices/WriteInventoryTransactions.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { Container } from 'typedi'; -import { On, EventSubscriber } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import SaleInvoicesService from 'services/Sales/SalesInvoices'; - -@EventSubscriber() -export default class WriteInventoryTransactions { - logger: any; - tenancy: TenancyService; - saleInvoicesService: SaleInvoicesService; - - /** - * Constructor method. - */ - constructor() { - this.logger = Container.get('logger'); - this.tenancy = Container.get(TenancyService); - this.saleInvoicesService = Container.get(SaleInvoicesService); - } - - /** - * Handles the writing inventory transactions once the invoice created. - */ - @On(events.saleInvoice.onCreated) - public async handleWritingInventoryTransactions({ tenantId, saleInvoice }) { - this.logger.info('[sale_invoice] trying to write inventory transactions.', { - tenantId, - }); - await this.saleInvoicesService.recordInventoryTranscactions( - tenantId, - saleInvoice - ); - } - - /** - * Rewriting the inventory transactions once the sale invoice be edited. - */ - @On(events.saleInvoice.onEdited) - public async handleRewritingInventoryTransactions({ tenantId, saleInvoice }) { - this.logger.info('[sale_invoice] trying to write inventory transactions.', { - tenantId, - }); - await this.saleInvoicesService.recordInventoryTranscactions( - tenantId, - saleInvoice, - true - ); - } - - /** - * Handles deleting the inventory transactions once the invoice deleted. - */ - @On(events.saleInvoice.onDeleted) - public async handleDeletingInventoryTransactions({ - tenantId, - saleInvoiceId, - oldSaleInvoice, - }) { - this.logger.info( - '[sale_invoice] trying to revert inventory transactions.', - { - tenantId, - saleInvoiceId, - } - ); - await this.saleInvoicesService.revertInventoryTransactions( - tenantId, - saleInvoiceId - ); - } -} diff --git a/server/src/subscribers/SaleInvoices/WriteJournalEntries.ts b/server/src/subscribers/SaleInvoices/WriteJournalEntries.ts deleted file mode 100644 index 5ecea4f91..000000000 --- a/server/src/subscribers/SaleInvoices/WriteJournalEntries.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { Container } from 'typedi'; -import { On, EventSubscriber } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import SaleInvoicesService from 'services/Sales/SalesInvoices'; - -@EventSubscriber() -export default class SaleInvoiceSubscriber { - logger: any; - tenancy: TenancyService; - saleInvoicesService: SaleInvoicesService; - - /** - * Constructor method. - */ - constructor() { - this.logger = Container.get('logger'); - this.tenancy = Container.get(TenancyService); - this.saleInvoicesService = Container.get(SaleInvoicesService); - } - - /** - * Records journal entries of the non-inventory invoice. - */ - @On(events.saleInvoice.onCreated) - public async handleWriteJournalEntriesOnInvoiceCreated({ - tenantId, - saleInvoiceId, - saleInvoice, - authorizedUser, - }) { - const { saleInvoiceRepository } = this.tenancy.repositories(tenantId); - - const saleInvoiceWithItems = await saleInvoiceRepository.findOneById( - saleInvoiceId, - 'entries.item' - ); - await this.saleInvoicesService.writesIncomeJournalEntries( - tenantId, - saleInvoiceWithItems - ); - } - - /** - * Records journal entries of the non-inventory invoice. - */ - @On(events.saleInvoice.onEdited) - public async handleRewriteJournalEntriesOnceInvoiceEdit({ - tenantId, - saleInvoiceId, - saleInvoice, - authorizedUser, - }) { - await this.saleInvoicesService.writesIncomeJournalEntries( - tenantId, - saleInvoice, - true - ); - } - - /** - * Handle reverting journal entries once sale invoice delete. - */ - @On(events.saleInvoice.onDeleted) - public async handleRevertingInvoiceJournalEntriesOnDelete({ - tenantId, - saleInvoiceId, - }) { - await this.saleInvoicesService.revertInvoiceJournalEntries( - tenantId, - saleInvoiceId, - ); - } -} diff --git a/server/src/subscribers/SaleInvoices/index.ts b/server/src/subscribers/SaleInvoices/index.ts deleted file mode 100644 index 2106a47bc..000000000 --- a/server/src/subscribers/SaleInvoices/index.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { Container } from 'typedi'; -import { On, EventSubscriber } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import SettingsService from 'services/Settings/SettingsService'; -import SaleEstimateService from 'services/Sales/SalesEstimate'; -import SaleInvoicesService from 'services/Sales/SalesInvoices'; - -@EventSubscriber() -export default class SaleInvoiceSubscriber { - logger: any; - tenancy: TenancyService; - settingsService: SettingsService; - saleEstimatesService: SaleEstimateService; - saleInvoicesService: SaleInvoicesService; - - /** - * Constructor method. - */ - constructor() { - this.logger = Container.get('logger'); - this.tenancy = Container.get(TenancyService); - this.settingsService = Container.get(SettingsService); - this.saleEstimatesService = Container.get(SaleEstimateService); - this.saleInvoicesService = Container.get(SaleInvoicesService); - } - - /** - * Marks the sale estimate as converted from the sale invoice once created. - */ - @On(events.saleInvoice.onCreated) - public async handleMarkEstimateConvertOnceInvoiceCreated({ - tenantId, - saleInvoice, - saleInvoiceDTO, - saleInvoiceId, - }) { - if (saleInvoiceDTO.fromEstimateId) { - await this.saleEstimatesService.convertEstimateToInvoice( - tenantId, - saleInvoiceDTO.fromEstimateId, - saleInvoiceId - ); - } - } - - /** - * Handles sale invoice next number increment once invoice created. - */ - @On(events.saleInvoice.onCreated) - public async handleInvoiceNextNumberIncrement({ - tenantId, - }) { - await this.saleInvoicesService.incrementNextInvoiceNumber( - tenantId, - ); - } -} diff --git a/server/src/subscribers/SaleReceipt/WriteInventoryTransactions.ts b/server/src/subscribers/SaleReceipt/WriteInventoryTransactions.ts deleted file mode 100644 index 00f204725..000000000 --- a/server/src/subscribers/SaleReceipt/WriteInventoryTransactions.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Container } from 'typedi'; -import { On, EventSubscriber } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import SalesReceiptService from 'services/Sales/SalesReceipts'; - -@EventSubscriber() -export default class SaleReceiptSubscriber { - logger: any; - tenancy: TenancyService; - saleReceiptsService: SalesReceiptService; - - constructor() { - this.logger = Container.get('logger'); - this.tenancy = Container.get(TenancyService); - this.saleReceiptsService = Container.get(SalesReceiptService); - } - - /** - * Handles the writing inventory transactions once the receipt created. - */ - @On(events.saleReceipt.onCreated) - public async handleWritingInventoryTransactions({ tenantId, saleReceipt }) { - this.logger.info('[sale_receipt] trying to write inventory transactions.', { - tenantId, - }); - await this.saleReceiptsService.recordInventoryTransactions( - tenantId, - saleReceipt - ); - } - - /** - * Rewriting the inventory transactions once the sale invoice be edited. - */ - @On(events.saleReceipt.onEdited) - public async handleRewritingInventoryTransactions({ tenantId, saleReceipt }) { - this.logger.info('[sale_invoice] trying to write inventory transactions.', { - tenantId, - }); - await this.saleReceiptsService.recordInventoryTransactions( - tenantId, - saleReceipt, - true - ); - } - - /** - * Handles deleting the inventory transactions once the receipt deleted. - */ - @On(events.saleReceipt.onDeleted) - public async handleDeletingInventoryTransactions({ - tenantId, - saleReceiptId, - }) { - this.logger.info( - '[sale_invoice] trying to revert inventory transactions.', - { - tenantId, - saleReceiptId, - } - ); - await this.saleReceiptsService.revertInventoryTransactions( - tenantId, - saleReceiptId - ); - } -} diff --git a/server/src/subscribers/SaleReceipt/WriteJournalEntries.ts b/server/src/subscribers/SaleReceipt/WriteJournalEntries.ts deleted file mode 100644 index c9e9cafef..000000000 --- a/server/src/subscribers/SaleReceipt/WriteJournalEntries.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { Container } from 'typedi'; -import { On, EventSubscriber } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import SalesReceiptService from 'services/Sales/SalesReceipts'; - -@EventSubscriber() -export default class SaleReceiptSubscriber { - logger: any; - tenancy: TenancyService; - saleReceiptsService: SalesReceiptService; - - constructor() { - this.logger = Container.get('logger'); - this.tenancy = Container.get(TenancyService); - this.saleReceiptsService = Container.get(SalesReceiptService); - } - - /** - * Handles writing sale receipt income journal entries once created. - */ - @On(events.saleReceipt.onCreated) - public async handleWriteReceiptIncomeJournalEntrieOnCreate({ - tenantId, - saleReceiptId, - }) { - const { SaleReceipt } = this.tenancy.models(tenantId); - - const saleReceiptWithItems = await SaleReceipt.query() - .findById(saleReceiptId) - .withGraphFetched('entries.item'); - - // Writes the sale receipt income journal entries. - await this.saleReceiptsService.writesIncomeJournalEntries( - tenantId, - saleReceiptWithItems - ); - } - - /** - * Handles sale receipt revert jouranl entries once be deleted. - */ - @On(events.saleReceipt.onDeleted) - public async handleRevertReceiptJournalEntriesOnDeleted({ - tenantId, - saleReceiptId, - }) { - await this.saleReceiptsService.revertReceiptJournalEntries( - tenantId, - saleReceiptId - ); - } - - /** - * Handles writing sale receipt income journal entries once be edited. - */ - @On(events.saleReceipt.onEdited) - public async handleWriteReceiptIncomeJournalEntrieOnEdited({ - tenantId, - saleReceiptId, - }) { - const { SaleReceipt } = this.tenancy.models(tenantId); - - const saleReceiptWithItems = await SaleReceipt.query() - .findById(saleReceiptId) - .withGraphFetched('entries.item'); - - // Writes the sale receipt income journal entries. - await this.saleReceiptsService.writesIncomeJournalEntries( - tenantId, - saleReceiptWithItems, - true - ); - } -} diff --git a/server/src/subscribers/SaleReceipt/index.ts b/server/src/subscribers/SaleReceipt/index.ts deleted file mode 100644 index d8b91b27d..000000000 --- a/server/src/subscribers/SaleReceipt/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Container } from 'typedi'; -import { On, EventSubscriber } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import SettingsService from 'services/Settings/SettingsService'; -import SalesReceiptService from 'services/Sales/SalesReceipts'; - -@EventSubscriber() -export default class SaleReceiptSubscriber { - logger: any; - tenancy: TenancyService; - settingsService: SettingsService; - saleReceiptsService: SalesReceiptService; - - constructor() { - this.logger = Container.get('logger'); - this.tenancy = Container.get(TenancyService); - this.settingsService = Container.get(SettingsService); - this.saleReceiptsService = Container.get(SalesReceiptService); - } - - /** - * Handle sale receipt increment next number once be created. - */ - @On(events.saleReceipt.onCreated) - public async handleReceiptNextNumberIncrement({ tenantId, saleReceiptId }) { - await this.saleReceiptsService.incrementNextReceiptNumber(tenantId); - } -} diff --git a/server/src/subscribers/authentication.ts b/server/src/subscribers/authentication.ts deleted file mode 100644 index 718747dd4..000000000 --- a/server/src/subscribers/authentication.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Container } from 'typedi'; -import { pick } from 'lodash'; -import { EventSubscriber, On } from 'event-dispatch'; -import events from 'subscribers/events'; - -@EventSubscriber() -export class AuthenticationSubscriber { - /** - * Resets the login throttle once the login success. - */ - @On(events.auth.login) - public async resetLoginThrottleOnceSuccessLogin(payload) { - const { emailOrPhone, password, user } = payload; - - const loginThrottler = Container.get('rateLimiter.login'); - - // Reset the login throttle by the given email and phone number. - await loginThrottler.reset(user.email); - await loginThrottler.reset(user.phoneNumber); - await loginThrottler.reset(emailOrPhone); - } - - /** - * Sends welcome email once the user register. - */ - @On(events.auth.register) - public async sendWelcomeEmail(payload) { - const { registerDTO, tenant, user } = payload; - - const agenda = Container.get('agenda'); - - // Send welcome mail to the user. - await agenda.now('welcome-email', { - organizationId: tenant.organizationId, - user, - }); - } - - /** - * Sends reset password mail once the reset password success. - */ - @On(events.auth.sendResetPassword) - public onSendResetPassword (payload) { - const { user, token } = payload; - const agenda = Container.get('agenda'); - - // Send reset password mail. - agenda.now('reset-password-mail', { user, token }) - } -} \ No newline at end of file diff --git a/server/src/subscribers/customers.ts b/server/src/subscribers/customers.ts deleted file mode 100644 index 3edda50e2..000000000 --- a/server/src/subscribers/customers.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Container } from 'typedi'; -import { EventSubscriber, On } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import CustomersService from 'services/Contacts/CustomersService'; - -@EventSubscriber() -export default class CustomersSubscriber { - logger: any; - tenancy: TenancyService; - customersService: CustomersService; - - constructor() { - this.logger = Container.get('logger'); - this.customersService = Container.get(CustomersService); - } - - /** - * Handles the writing opening balance journal entries once the customer created. - */ - @On(events.customers.onCreated) - async handleWriteOpenBalanceEntries({ - tenantId, - customerId, - customer, - authorizedUser, - }) { - // Writes the customer opening balance journal entries. - if (customer.openingBalance) { - await this.customersService.writeCustomerOpeningBalanceJournal( - tenantId, - customer.id, - customer.openingBalance, - customer.openingBalanceAt, - authorizedUser.id - ); - } - } - - /** - * Handles the deleting opeing balance journal entrise once the customer deleted. - */ - @On(events.customers.onDeleted) - async handleRevertOpeningBalanceEntries({ - tenantId, - customerId, - authorizedUser, - }) { - await this.customersService.revertOpeningBalanceEntries( - tenantId, - customerId - ); - } - - /** - * Handles the deleting opening balance journal entries once the given - * customers deleted. - */ - @On(events.customers.onBulkDeleted) - async handleBulkRevertOpeningBalanceEntries({ - tenantId, - customersIds, - authorizedUser, - }) { - await this.customersService.revertOpeningBalanceEntries( - tenantId, - customersIds - ); - } -} diff --git a/server/src/subscribers/events.ts b/server/src/subscribers/events.ts deleted file mode 100644 index fe6a74f0f..000000000 --- a/server/src/subscribers/events.ts +++ /dev/null @@ -1,217 +0,0 @@ - -export default { - /** - * Authentication service. - */ - auth: { - login: 'onLogin', - register: 'onRegister', - sendResetPassword: 'onSendResetPassword', - resetPassword: 'onResetPassword', - }, - - /** - * Invite users service. - */ - inviteUser: { - acceptInvite: 'onUserAcceptInvite', - sendInvite: 'onUserSendInvite', - checkInvite: 'onUserCheckInvite' - }, - - /** - * Organization managment service. - */ - organization: { - build: 'onOrganizationBuild', - seeded: 'onOrganizationSeeded', - }, - - /** - * Tenants managment service. - */ - tenantManager: { - databaseCreated: 'onDatabaseCreated', - tenantMigrated: 'onTenantMigrated', - tenantSeeded: 'onTenantSeeded', - }, - - /** - * Accounts service. - */ - accounts: { - onCreated: 'onAccountCreated', - onEdited: 'onAccountEdited', - onDeleted: 'onAccountDeleted', - onBulkDeleted: 'onBulkDeleted', - onBulkActivated: 'onAccountBulkActivated', - onActivated: 'onAccountActivated' - }, - - /** - * Manual journals service. - */ - manualJournals: { - onCreated: 'onManualJournalCreated', - onEdited: 'onManualJournalEdited', - onDeleted: 'onManualJournalDeleted', - onDeletedBulk: 'onManualJournalCreatedBulk', - onPublished: 'onManualJournalPublished', - onPublishedBulk: 'onManualJournalPublishedBulk', - }, - - /** - * Expenses service. - */ - expenses: { - onCreated: 'onExpenseCreated', - onEdited: 'onExpenseEdited', - onDeleted: 'onExpenseDelted', - onPublished: 'onExpensePublished', - onBulkDeleted: 'onExpenseBulkDeleted', - onBulkPublished: 'onBulkPublished', - }, - - /** - * Sales invoices service. - */ - saleInvoice: { - onCreated: 'onSaleInvoiceCreated', - onEdited: 'onSaleInvoiceEdited', - onDelete: 'onSaleInvoiceDelete', - onDeleted: 'onSaleInvoiceDeleted', - onDelivered: 'onSaleInvoiceDelivered', - onBulkDelete: 'onSaleInvoiceBulkDeleted', - onPublished: 'onSaleInvoicePublished', - }, - - /** - * Sales estimates service. - */ - saleEstimate: { - onCreated: 'onSaleEstimateCreated', - onEdited: 'onSaleEstimateEdited', - onDeleted: 'onSaleEstimatedDeleted', - onBulkDelete: 'onSaleEstimatedBulkDeleted', - onPublished: 'onSaleEstimatedPublished', - }, - - /** - * Sales receipts service. - */ - saleReceipt: { - onCreated: 'onSaleReceiptsCreated', - onEdited: 'onSaleReceiptsEdited', - onDeleted: 'onSaleReceiptsDeleted', - onBulkDeleted: 'onSaleReceiptsBulkDeleted', - onPublished: 'onSaleReceiptPublished', - }, - - /** - * Payment receipts service. - */ - paymentReceive: { - onCreated: 'onPaymentReceiveCreated', - onEdited: 'onPaymentReceiveEdited', - onDeleted: 'onPaymentReceiveDeleted', - onPublished: 'onPaymentReceivePublished', - }, - - /** - * Bills service. - */ - bill: { - onCreated: 'onBillCreated', - onEdited: 'onBillEdited', - onDeleted: 'onBillDeleted', - onBulkDeleted: 'onBillBulkDeleted', - onPublished: 'onBillPublished', - }, - - /** - * Bill payments service. - */ - billPayment: { - onCreated: 'onBillPaymentCreated', - onEdited: 'onBillPaymentEdited', - onDeleted: 'onBillPaymentDeleted', - onBulkDeleted: 'onBillPaymentsBulkDeleted', - onPublished: 'onBillPaymentPublished', - }, - - /** - * Customers services. - */ - customers: { - onCreated: 'onCustomerCreated', - onEdited: 'onCustomerEdited', - onDeleted: 'onCustomerDeleted', - onBulkDeleted: 'onBulkDeleted', - onOpeningBalanceChanged: 'onOpeingBalanceChanged', - }, - - /** - * Vendors services. - */ - vendors: { - onCreated: 'onVendorCreated', - onEdited: 'onVendorEdited', - onDeleted: 'onVendorDeleted', - onBulkDeleted: 'onVendorBulkDeleted', - onOpeningBalanceChanged: 'onOpeingBalanceChanged', - }, - - /** - * Items service. - */ - item: { - onCreated: 'onItemCreated', - onEdited: 'onItemEdited', - onDeleted: 'onItemDeleted', - onBulkDeleted: 'onItemBulkDeleted', - }, - - /** - * Item category service. - */ - itemCategory: { - onCreated: 'onItemCategoryCreated', - onEdited: 'onItemCategoryEdited', - onDeleted: 'onItemCategoryDeleted', - onBulkDeleted: 'onItemCategoryBulkDeleted', - }, - - /** - * Inventory service. - */ - inventory: { - onInventoryTransactionsCreated: 'onInventoryTransactionsCreated', - onInventoryTransactionsDeleted: 'onInventoryTransactionsDeleted', - - onComputeItemCostJobScheduled: 'onComputeItemCostJobScheduled', - onComputeItemCostJobStarted: 'onComputeItemCostJobStarted', - onComputeItemCostJobCompleted: 'onComputeItemCostJobCompleted', - - onInventoryCostEntriesWritten: 'onInventoryCostEntriesWritten' - }, - - /** - * Inventory adjustment service. - */ - inventoryAdjustment: { - onCreated: 'onInventoryAdjustmentCreated', - onQuickCreated: 'onInventoryAdjustmentQuickCreated', - onDeleted: 'onInventoryAdjustmentDeleted', - onPublished: 'onInventoryAdjustmentPublished', - }, - - /** - * Bill landed cost. - */ - billLandedCost: { - onCreate: 'onBillLandedCostCreate', - onCreated: 'onBillLandedCostCreated', - onDelete: 'onBillLandedCostDelete', - onDeleted: 'onBillLandedCostDeleted' - } -} diff --git a/server/src/subscribers/expenses.ts b/server/src/subscribers/expenses.ts deleted file mode 100644 index d097a36df..000000000 --- a/server/src/subscribers/expenses.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { Container, Inject, Service } from 'typedi'; -import { EventSubscriber, On } from 'event-dispatch'; -import events from 'subscribers/events'; -import ExpensesService from 'services/Expenses/ExpensesService'; -import TenancyService from 'services/Tenancy/TenancyService'; -import ExpenseRepository from 'repositories/ExpenseRepository'; - -@EventSubscriber() -export default class ExpensesSubscriber { - tenancy: TenancyService; - expensesService: ExpensesService; - - constructor() { - this.tenancy = Container.get(TenancyService); - this.expensesService = Container.get(ExpensesService); - } - - /** - * Handles the writing journal entries once the expense created. - */ - @On(events.expenses.onCreated) - public async onExpenseCreated({ - expenseId, - expense, - tenantId, - authorizedUser, - }) { - // In case expense published, write journal entries. - if (expense.publishedAt) { - await this.expensesService.writeJournalEntries( - tenantId, - expense, - authorizedUser.id, - false - ); - } - } - - /** - * Handle writing expense journal entries once the expense edited. - */ - @On(events.expenses.onEdited) - public async onExpenseEdited({ - expenseId, - tenantId, - expense, - authorizedUser, - }) { - // In case expense published, write journal entries. - if (expense.publishedAt) { - await this.expensesService.writeJournalEntries( - tenantId, - expense, - authorizedUser.id, - true - ); - } - } - - /** - * Reverts expense journal entries once the expense deleted. - */ - @On(events.expenses.onDeleted) - public async onExpenseDeleted({ expenseId, tenantId }) { - await this.expensesService.revertJournalEntries(tenantId, expenseId); - } - - /** - * Handles writing expense journal once the expense publish. - */ - @On(events.expenses.onPublished) - public async onExpensePublished({ - expenseId, - tenantId, - expense, - authorizedUser, - }) { - // In case expense published, write journal entries. - if (expense.publishedAt) { - await this.expensesService.writeJournalEntries( - tenantId, - expense, - authorizedUser.id, - false - ); - } - } - - /** - * Handles the revert journal entries once the expenses deleted in bulk. - */ - @On(events.expenses.onBulkDeleted) - public async handleRevertJournalEntriesOnceDeleted({ - expensesIds, - tenantId, - }) { - await this.expensesService.revertJournalEntries(tenantId, expensesIds); - } - - /** - * Handles writing journal entriers of the not-published expenses. - */ - @On(events.expenses.onBulkPublished) - public async onExpenseBulkPublished({ - expensesIds, - tenantId, - expenses, - oldExpenses, - authorizedUser, - }) { - // Filters the not published expenses. - const notPublishedExpenses = this.expensesService.getNonePublishedExpenses( - oldExpenses - ); - // Can't continue if there is no not-published expoenses. - if (notPublishedExpenses.length === 0) { return; } - - // Writing the journal entries of not-published expenses. - await this.expensesService.writeJournalEntries( - tenantId, - notPublishedExpenses, - authorizedUser.id, - false - ); - } -} diff --git a/server/src/subscribers/inviteUser.ts b/server/src/subscribers/inviteUser.ts deleted file mode 100644 index 54fa2f5cc..000000000 --- a/server/src/subscribers/inviteUser.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Container } from 'typedi'; -import { EventSubscriber, On } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import InviteUserService from 'services/InviteUsers'; - -@EventSubscriber() -export class InviteUserSubscriber { - - /** - * - */ - @On(events.inviteUser.sendInvite) - public onSendInvite(payload) { - const { invite, authorizedUser, tenantId } = payload; - const agenda = Container.get('agenda'); - - agenda.now('user-invite-mail', { - invite, authorizedUser, tenantId - }); - } -} diff --git a/server/src/subscribers/items.ts b/server/src/subscribers/items.ts deleted file mode 100644 index 5ded804af..000000000 --- a/server/src/subscribers/items.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Container } from 'typedi'; -import { EventSubscriber, On } from 'event-dispatch'; -import events from 'subscribers/events'; -import ItemsService from 'services/Items/ItemsService'; - -@EventSubscriber() -export default class ItemsSubscriber{ - itemsService: ItemsService; - - constructor() { - this.itemsService = Container.get(ItemsService); - }; -} \ No newline at end of file diff --git a/server/src/subscribers/manualJournals.ts b/server/src/subscribers/manualJournals.ts deleted file mode 100644 index 48603d17c..000000000 --- a/server/src/subscribers/manualJournals.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { Inject, Container } from 'typedi'; -import { On, EventSubscriber } from 'event-dispatch'; -import events from 'subscribers/events'; -import SettingsService from 'services/Settings/SettingsService'; -import ManualJournalsService from 'services/ManualJournals/ManualJournalsService'; - -@EventSubscriber() -export class ManualJournalSubscriber { - logger: any; - settingsService: SettingsService; - manualJournalsService: ManualJournalsService; - - constructor() { - this.logger = Container.get('logger'); - this.settingsService = Container.get(SettingsService); - this.manualJournalsService = Container.get(ManualJournalsService); - } - - /** - * Handle manual journal created event. - */ - @On(events.manualJournals.onCreated) - public async handleWriteJournalEntriesOnCreated({ tenantId, manualJournal }) { - // Ingore writing manual journal journal entries in case was not published. - if (manualJournal.publishedAt) { - await this.manualJournalsService.writeJournalEntries( - tenantId, - manualJournal - ); - } - } - - /** - * Handles the manual journal next number increment once the journal be created. - */ - @On(events.manualJournals.onCreated) - public async handleJournalNumberIncrement({ tenantId }) { - await this.manualJournalsService.incrementNextJournalNumber(tenantId); - } - - /** - * Handle manual journal edited event. - */ - @On(events.manualJournals.onEdited) - public async handleRewriteJournalEntriesOnEdited({ - tenantId, - manualJournal, - oldManualJournal, - }) { - if (manualJournal.publishedAt) { - await this.manualJournalsService.writeJournalEntries( - tenantId, - manualJournal, - true - ); - } - } - - /** - * Handles writing journal entries once the manula journal publish. - */ - @On(events.manualJournals.onPublished) - public async handleWriteJournalEntriesOnPublished({ - tenantId, - manualJournal, - }) { - await this.manualJournalsService.writeJournalEntries( - tenantId, - manualJournal - ); - } - - /** - * Handle manual journal deleted event. - */ - @On(events.manualJournals.onDeleted) - public async handleRevertJournalEntries({ - tenantId, - manualJournalId, - oldManualJournal, - }) { - await this.manualJournalsService.revertJournalEntries( - tenantId, - manualJournalId - ); - } - - /** - * Handles the writing journal entries once the manual journals bulk published. - */ - @On(events.manualJournals.onPublishedBulk) - public async handleWritingJournalEntriesOnBulkPublish({ - tenantId, - oldManualJournals, - }) { - const notPublishedJournals = this.manualJournalsService.getNonePublishedManualJournals( - oldManualJournals - ); - await this.manualJournalsService.writeJournalEntries( - tenantId, - notPublishedJournals - ); - } - - /** - * Handles revert journal entries once manual journals bulk delete. - */ - @On(events.manualJournals.onDeletedBulk) - public async handleRevertJournalEntriesOnBulkDelete({ - tenantId, - manualJournalsIds, - }) { - await this.manualJournalsService.revertJournalEntries( - tenantId, - manualJournalsIds - ); - } -} diff --git a/server/src/subscribers/organization.ts b/server/src/subscribers/organization.ts deleted file mode 100644 index 0abe42991..000000000 --- a/server/src/subscribers/organization.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Container } from 'typedi'; -import { On, EventSubscriber } from "event-dispatch"; -import events from 'subscribers/events'; - -@EventSubscriber() -export class OrganizationSubscriber { - /** - * Sends welcome SMS once the organization build completed. - */ - @On(events.organization.build) - public async onBuild({ tenant, user }) { - const agenda = Container.get('agenda'); - - await agenda.now('welcome-sms', { tenant, user }); - } -} \ No newline at end of file diff --git a/server/src/subscribers/paymentMades.ts b/server/src/subscribers/paymentMades.ts deleted file mode 100644 index 5f76d9062..000000000 --- a/server/src/subscribers/paymentMades.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { Container, Inject, Service } from 'typedi'; -import { EventSubscriber, On } from 'event-dispatch'; -import events from 'subscribers/events'; -import BillPaymentsService from 'services/Purchases/BillPayments/BillPayments'; -import TenancyService from 'services/Tenancy/TenancyService'; - -@EventSubscriber() -export default class PaymentMadesSubscriber { - tenancy: TenancyService; - billPaymentsService: BillPaymentsService; - logger: any; - - constructor() { - this.tenancy = Container.get(TenancyService); - this.billPaymentsService = Container.get(BillPaymentsService); - this.logger = Container.get('logger'); - } - - /** - * Handle bill payment amount increment/decrement once bill payment created or edited. - */ - @On(events.billPayment.onCreated) - @On(events.billPayment.onEdited) - async handleBillsIncrementPaymentAmount({ - tenantId, - billPayment, - oldBillPayment, - billPaymentId, - }) { - this.logger.info('[payment_made] trying to change bills payment amount.', { - tenantId, - billPaymentId, - }); - this.billPaymentsService.saveChangeBillsPaymentAmount( - tenantId, - billPayment.entries, - oldBillPayment?.entries || null - ); - } - - /** - * Handle revert bill payment amount once bill payment deleted. - */ - @On(events.billPayment.onDeleted) - handleBillDecrementPaymentAmount({ - tenantId, - billPaymentId, - oldBillPayment, - }) { - this.logger.info('[payment_made] tring to revert bill payment amount.', { - tenantId, - billPaymentId, - }); - this.billPaymentsService.saveChangeBillsPaymentAmount( - tenantId, - oldBillPayment.entries.map((entry) => ({ ...entry, paymentAmount: 0 })), - oldBillPayment.entries - ); - } - - /** - * Handle bill payment writing journal entries once created. - */ - @On(events.billPayment.onCreated) - async handleWriteJournalEntries({ tenantId, billPayment }) { - // Records the journal transactions after bills payment - // and change diff acoount balance. - this.logger.info('[bill_payment] trying to write journal entries.', { - tenantId, - billPaymentId: billPayment.id, - }); - await this.billPaymentsService.recordJournalEntries(tenantId, billPayment); - } - - /** - * Handle bill payment re-writing journal entries once the payment transaction be edited. - */ - @On(events.billPayment.onEdited) - async handleRewriteJournalEntriesOncePaymentEdited({ - tenantId, - billPayment, - }) { - // Records the journal transactions after bills payment be edited. - this.logger.info('[bill_payment] trying to rewrite journal entries.', { - tenantId, - billPaymentId: billPayment.id, - }); - await this.billPaymentsService.recordJournalEntries( - tenantId, - billPayment, - true - ); - } - - /** - * Reverts journal entries once bill payment deleted. - */ - @On(events.billPayment.onDeleted) - async handleRevertJournalEntries({ tenantId, billPaymentId }) { - await this.billPaymentsService.revertJournalEntries( - tenantId, - billPaymentId - ); - } -} diff --git a/server/src/subscribers/paymentReceives.ts b/server/src/subscribers/paymentReceives.ts deleted file mode 100644 index 422e6d207..000000000 --- a/server/src/subscribers/paymentReceives.ts +++ /dev/null @@ -1,135 +0,0 @@ -import { Container, Inject, Service } from 'typedi'; -import { EventSubscriber, On } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import PaymentReceiveService from 'services/Sales/PaymentReceives/PaymentsReceives'; -import SettingsService from 'services/Settings/SettingsService'; - -@EventSubscriber() -export default class PaymentReceivesSubscriber { - tenancy: TenancyService; - logger: any; - paymentReceivesService: PaymentReceiveService; - settingsService: SettingsService; - - constructor() { - this.tenancy = Container.get(TenancyService); - this.logger = Container.get('logger'); - this.paymentReceivesService = Container.get(PaymentReceiveService); - this.settingsService = Container.get(SettingsService); - } - - /** - * Handle journal entries writing once the payment receive created. - */ - @On(events.paymentReceive.onCreated) - async handleWriteJournalEntriesOnceCreated({ - tenantId, - paymentReceiveId, - paymentReceive, - authorizedUser, - }) { - this.logger.info('[payment_receive] trying to write journal entries.', { - tenantId, paymentReceiveId, - }); - await this.paymentReceivesService.recordPaymentReceiveJournalEntries( - tenantId, - paymentReceive, - authorizedUser.id, - ); - } - - /** - * Handle journal entries writing once the payment receive edited. - */ - @On(events.paymentReceive.onEdited) - async handleOverwriteJournalEntriesOnceEdited({ - tenantId, - paymentReceiveId, - paymentReceive, - authorizedUser, - }) { - this.logger.info('[payment_receive] trying to overwrite journal entries.', { - tenantId, paymentReceiveId, - }); - await this.paymentReceivesService.recordPaymentReceiveJournalEntries( - tenantId, - paymentReceive, - authorizedUser.id, - true - ); - } - - /** - * Handle sale invoice increment/decrement payment amount once created, edited or deleted. - */ - @On(events.paymentReceive.onCreated) - @On(events.paymentReceive.onEdited) - async handleInvoiceIncrementPaymentAmount({ - tenantId, - paymentReceiveId, - paymentReceive, - oldPaymentReceive, - }) { - this.logger.info( - '[payment_receive] trying to change sale invoice payment amount.', - { tenantId } - ); - await this.paymentReceivesService.saveChangeInvoicePaymentAmount( - tenantId, - paymentReceive.entries, - oldPaymentReceive?.entries || null - ); - } - - /** - * Handle revert invoices payment amount once payment receive deleted. - */ - @On(events.paymentReceive.onDeleted) - async handleInvoiceDecrementPaymentAmount({ - tenantId, - paymentReceiveId, - oldPaymentReceive, - }) { - this.logger.info( - '[payment_receive] trying to decrement sale invoice payment amount.' - ); - await this.paymentReceivesService.saveChangeInvoicePaymentAmount( - tenantId, - oldPaymentReceive.entries.map((entry) => ({ - ...entry, - paymentAmount: 0, - })), - oldPaymentReceive.entries - ); - } - - /** - * Handles revert journal entries once deleted. - */ - @On(events.paymentReceive.onDeleted) - async handleRevertJournalEntriesOnceDeleted({ - tenantId, - paymentReceiveId, - }) { - this.logger.info('[payment_receive] trying to revert journal entries.', { - tenantId, - paymentReceiveId, - }); - await this.paymentReceivesService.revertPaymentReceiveJournalEntries( - tenantId, - paymentReceiveId - ) - } - - /** - * Handles increment next number of payment receive once be created. - */ - @On(events.paymentReceive.onCreated) - public async handlePaymentNextNumberIncrement({ - tenantId, - paymentReceiveId, - }) { - await this.paymentReceivesService.incrementNextPaymentReceiveNumber(tenantId); - } -} diff --git a/server/src/subscribers/saleEstimates.ts b/server/src/subscribers/saleEstimates.ts deleted file mode 100644 index 32facc31c..000000000 --- a/server/src/subscribers/saleEstimates.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Container } from 'typedi'; -import { On, EventSubscriber } from "event-dispatch"; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import SettingsService from 'services/Settings/SettingsService'; - -@EventSubscriber() -export default class SaleEstimateSubscriber { - logger: any; - tenancy: TenancyService; - settingsService: SettingsService; - - constructor() { - this.logger = Container.get('logger'); - this.tenancy = Container.get(TenancyService); - this.settingsService = Container.get(SettingsService); - } - - /** - * Handle sale estimate increment next number once be created. - */ - @On(events.saleEstimate.onCreated) - public async handleEstimateNextNumberIncrement({ tenantId, saleEstimateId }) { - await this.settingsService.incrementNextNumber(tenantId, { - key: 'next_number', - group: 'sales_estimates', - }); - } -} \ No newline at end of file diff --git a/server/src/subscribers/tenantManager.ts b/server/src/subscribers/tenantManager.ts deleted file mode 100644 index e830aced1..000000000 --- a/server/src/subscribers/tenantManager.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Container } from 'typedi'; -import { On, EventSubscriber } from "event-dispatch"; -import events from 'subscribers/events'; - -@EventSubscriber() -export default class TenantManagerSubscriber { - - @On(events.tenantManager.databaseCreated) - onDatabaseCreated() { - - } - - @On(events.tenantManager.tenantMigrated) - onTenantMigrated() { - - } - - @On(events.tenantManager.tenantSeeded) - onTenantSeeded() { - - } -} \ No newline at end of file diff --git a/server/src/subscribers/users.ts b/server/src/subscribers/users.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/server/src/subscribers/vendors.ts b/server/src/subscribers/vendors.ts deleted file mode 100644 index ac5fe4e92..000000000 --- a/server/src/subscribers/vendors.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Container, Inject, Service } from 'typedi'; -import { EventSubscriber, On } from 'event-dispatch'; -import events from 'subscribers/events'; -import TenancyService from 'services/Tenancy/TenancyService'; -import VendorsService from 'services/Contacts/VendorsService'; - -@EventSubscriber() -export default class VendorsSubscriber { - logger: any; - tenancy: TenancyService; - vendorsService: VendorsService; - - /** - * Constructor method. - */ - constructor() { - this.logger = Container.get('logger'); - this.vendorsService = Container.get(VendorsService); - } - - /** - * Writes the open balance journal entries once the vendor created. - */ - @On(events.vendors.onCreated) - async handleWriteOpeningBalanceEntries({ tenantId, vendorId, vendor, authorizedUser }) { - // Writes the vendor opening balance journal entries. - if (vendor.openingBalance) { - await this.vendorsService.writeVendorOpeningBalanceJournal( - tenantId, - vendor.id, - vendor.openingBalance, - vendor.openingBalanceAt, - authorizedUser.id - ); - } - } - - /** - * Revert the opening balance journal entries once the vendor deleted. - */ - @On(events.vendors.onDeleted) - async handleRevertOpeningBalanceEntries({ tenantId, vendorId, authorizedUser }) { - await this.vendorsService.revertOpeningBalanceEntries( - tenantId, vendorId, - ); - } - - /** - * Revert the opening balance journal entries once the vendors deleted in bulk. - */ - @On(events.vendors.onBulkDeleted) - async handleBulkRevertOpeningBalanceEntries({ tenantId, vendorsIds, authorizedUser }) { - await this.vendorsService.revertOpeningBalanceEntries( - tenantId, vendorsIds, - ); - } -} \ No newline at end of file diff --git a/server/src/system/migrations/20190104195900_create_password_resets_table.js b/server/src/system/migrations/20190104195900_create_password_resets_table.js deleted file mode 100644 index 9337949c7..000000000 --- a/server/src/system/migrations/20190104195900_create_password_resets_table.js +++ /dev/null @@ -1,9 +0,0 @@ - -exports.up = (knex) => knex.schema.createTable('password_resets', (table) => { - table.increments(); - table.string('email').index(); - table.string('token').index(); - table.timestamp('created_at'); -}); - -exports.down = (knex) => knex.schema.dropTableIfExists('password_resets'); \ No newline at end of file diff --git a/server/src/system/migrations/20200420134631_create_tenants_table.js b/server/src/system/migrations/20200420134631_create_tenants_table.js deleted file mode 100644 index 08940348b..000000000 --- a/server/src/system/migrations/20200420134631_create_tenants_table.js +++ /dev/null @@ -1,19 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('tenants', (table) => { - table.bigIncrements(); - table.string('organization_id').index(); - - table.dateTime('under_maintenance_since').nullable(); - table.dateTime('initialized_at').nullable(); - table.dateTime('seeded_at').nullable(); - table.dateTime('built_at').nullable(); - table.string('build_job_id'); - - table.timestamps(); - }); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('tenants'); -}; diff --git a/server/src/system/migrations/20200420134633_create_users_table.js b/server/src/system/migrations/20200420134633_create_users_table.js deleted file mode 100644 index de5071ad7..000000000 --- a/server/src/system/migrations/20200420134633_create_users_table.js +++ /dev/null @@ -1,22 +0,0 @@ - -exports.up = function (knex) { - return knex.schema.createTable('users', (table) => { - table.increments(); - table.string('first_name'); - table.string('last_name'); - table.string('email').index(); - table.string('phone_number').index(); - table.string('password'); - table.boolean('active').index(); - table.string('language'); - table.bigInteger('tenant_id').unsigned().index().references('id').inTable('tenants'); - table.date('invite_accepted_at').index(); - table.date('last_login_at').index(); - table.dateTime('deleted_at').index(); - table.timestamps(); - }); -}; - -exports.down = function (knex) { - return knex.schema.dropTableIfExists('users'); -}; diff --git a/server/src/system/migrations/20200422225247_create_user_invites_table.js b/server/src/system/migrations/20200422225247_create_user_invites_table.js deleted file mode 100644 index 42028ccc7..000000000 --- a/server/src/system/migrations/20200422225247_create_user_invites_table.js +++ /dev/null @@ -1,15 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('user_invites', (table) => { - table.increments(); - table.string('email').index(); - table.string('token').unique().index(); - table.bigInteger('tenant_id').unsigned().index().references('id').inTable('tenants'); - table.integer('user_id').unsigned().index().references('id').inTable('users'); - table.datetime('created_at'); - }); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('user_invites'); -}; diff --git a/server/src/system/migrations/20200527091642_create_subscriptions_plans_table.js b/server/src/system/migrations/20200527091642_create_subscriptions_plans_table.js deleted file mode 100644 index 09d890648..000000000 --- a/server/src/system/migrations/20200527091642_create_subscriptions_plans_table.js +++ /dev/null @@ -1,22 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('subscriptions_plans', table => { - table.increments(); - - table.string('name'); - table.string('description'); - table.decimal('price'); - table.string('currency', 3); - - table.integer('trial_period'); - table.string('trial_interval'); - - table.integer('invoice_period'); - table.string('invoice_interval'); - table.timestamps(); - }); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('subscriptions_plans') -}; diff --git a/server/src/system/migrations/20200823234134_create_plans_table.js b/server/src/system/migrations/20200823234134_create_plans_table.js deleted file mode 100644 index 2fc61a43a..000000000 --- a/server/src/system/migrations/20200823234134_create_plans_table.js +++ /dev/null @@ -1,30 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('subscription_plans', table => { - table.increments(); - table.string('slug'); - table.string('name'); - table.string('desc'); - table.boolean('active'); - - table.decimal('price').unsigned(); - table.string('currency', 3); - - table.decimal('trial_period').nullable(); - table.string('trial_interval').nullable(); - - table.decimal('invoice_period').nullable(); - table.string('invoice_interval').nullable(); - - table.integer('index').unsigned(); - table.timestamps(); - }).then(() => { - return knex.seed.run({ - specific: 'seed_subscriptions_plans.js', - }); - }); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('subscription_plans') -}; diff --git a/server/src/system/migrations/20200823234434_create_subscription_plan_feature.js b/server/src/system/migrations/20200823234434_create_subscription_plan_feature.js deleted file mode 100644 index 43fea2798..000000000 --- a/server/src/system/migrations/20200823234434_create_subscription_plan_feature.js +++ /dev/null @@ -1,15 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('subscription_plan_features', table => { - table.increments(); - table.integer('plan_id').unsigned().index().references('id').inTable('subscription_plans'); - table.string('slug'); - table.string('name'); - table.string('description'); - table.timestamps(); - }); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('subscription_plan_features'); -}; diff --git a/server/src/system/migrations/20200823234636_create_subscription_plan_subscription.js b/server/src/system/migrations/20200823234636_create_subscription_plan_subscription.js deleted file mode 100644 index 267be4614..000000000 --- a/server/src/system/migrations/20200823234636_create_subscription_plan_subscription.js +++ /dev/null @@ -1,22 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('subscription_plan_subscriptions', table => { - table.increments('id'); - table.string('slug'); - - table.integer('plan_id').unsigned().index().references('id').inTable('subscription_plans'); - table.bigInteger('tenant_id').unsigned().index().references('id').inTable('tenants'); - - table.dateTime('starts_at').nullable(); - table.dateTime('ends_at').nullable(); - - table.dateTime('cancels_at').nullable(); - table.dateTime('canceled_at').nullable(); - - table.timestamps(); - }); -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('subscription_plan_subscriptions'); -}; diff --git a/server/src/system/migrations/20200823235339_create_subscription_licenses_table.js b/server/src/system/migrations/20200823235339_create_subscription_licenses_table.js deleted file mode 100644 index 6babd6f03..000000000 --- a/server/src/system/migrations/20200823235339_create_subscription_licenses_table.js +++ /dev/null @@ -1,22 +0,0 @@ - -exports.up = function(knex) { - return knex.schema.createTable('subscription_licenses', (table) => { - table.increments(); - - table.string('license_code').unique().index(); - table.integer('plan_id').unsigned().index().references('id').inTable('subscription_plans'); - - table.integer('license_period').unsigned(); - table.string('period_interval'); - - table.dateTime('sent_at').index(); - table.dateTime('disabled_at').index(); - table.dateTime('used_at').index(); - - table.timestamps(); - }) -}; - -exports.down = function(knex) { - return knex.schema.dropTableIfExists('subscription_licenses'); -}; diff --git a/server/src/system/migrations/20200823235340_create_tenants_metadata_table.js b/server/src/system/migrations/20200823235340_create_tenants_metadata_table.js deleted file mode 100644 index c8f765b6a..000000000 --- a/server/src/system/migrations/20200823235340_create_tenants_metadata_table.js +++ /dev/null @@ -1,22 +0,0 @@ -exports.up = function (knex) { - return knex.schema.createTable('tenants_metadata', (table) => { - table.bigIncrements(); - table.integer('tenant_id').unsigned(); - - table.string('name'); - table.string('industry'); - table.string('location'); - - table.string('base_currency'); - table.string('language'); - - table.string('timezone'); - table.string('date_format'); - - table.string('fiscal_year'); - }); -}; - -exports.down = function (knex) { - return knex.schema.dropTableIfExists('tenants_metadata'); -}; diff --git a/server/src/system/models/Invite.js b/server/src/system/models/Invite.js deleted file mode 100644 index 2de707735..000000000 --- a/server/src/system/models/Invite.js +++ /dev/null @@ -1,30 +0,0 @@ -import SystemModel from 'system/models/SystemModel'; -import moment from 'moment'; - -export default class UserInvite extends SystemModel { - /** - * Table name. - */ - static get tableName() { - return 'user_invites'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt']; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - notExpired(query) { - const comp = moment().subtract(24, 'hours').toMySqlDateTime(); - query.where('created_at', '>=', comp); - } - } - } -} diff --git a/server/src/system/models/PasswordReset.js b/server/src/system/models/PasswordReset.js deleted file mode 100644 index 12aa1e54d..000000000 --- a/server/src/system/models/PasswordReset.js +++ /dev/null @@ -1,17 +0,0 @@ -import SystemModel from 'system/models/SystemModel'; - -export default class PasswordResets extends SystemModel { - /** - * Table name - */ - static get tableName() { - return 'password_resets'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt']; - } -} diff --git a/server/src/system/models/Subscriptions/License.js b/server/src/system/models/Subscriptions/License.js deleted file mode 100644 index 09ec75947..000000000 --- a/server/src/system/models/Subscriptions/License.js +++ /dev/null @@ -1,129 +0,0 @@ -import { Model, mixin } from 'objection'; -import moment from 'moment'; -import SystemModel from 'system/models/SystemModel'; - -export default class License extends SystemModel { - /** - * Table name. - */ - static get tableName() { - return 'subscription_licenses'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - // Filters active licenses. - filterActiveLicense(query) { - query.where('disabled_at', null); - query.where('used_at', null); - }, - - // Find license by its code or id. - findByCodeOrId(query, id, code) { - if (id) { - query.where('id', id); - } - if (code) { - query.where('license_code', code); - } - }, - - // Filters licenses list. - filter(builder, licensesFilter) { - if (licensesFilter.active) { - builder.modify('filterActiveLicense'); - } - if (licensesFilter.disabled) { - builder.whereNot('disabled_at', null); - } - if (licensesFilter.used) { - builder.whereNot('used_at', null); - } - if (licensesFilter.sent) { - builder.whereNot('sent_at', null); - } - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Plan = require('system/models/Subscriptions/Plan'); - - return { - plan: { - relation: Model.BelongsToOneRelation, - modelClass: Plan.default, - join: { - from: 'subscription_licenses.planId', - to: 'subscriptions_plans.id', - }, - }, - }; - } - - /** - * Deletes the given license code from the storage. - * @param {string} licenseCode - * @return {Promise} - */ - static deleteLicense(licenseCode, viaAttribute = 'license_code') { - return this.query().where(viaAttribute, licenseCode).delete(); - } - - /** - * Marks the given license code as disabled on the storage. - * @param {string} licenseCode - * @return {Promise} - */ - static markLicenseAsDisabled(licenseCode, viaAttribute = 'license_code') { - return this.query().where(viaAttribute, licenseCode).patch({ - disabled_at: moment().toMySqlDateTime(), - }); - } - - /** - * Marks the given license code as sent on the storage. - * @param {string} licenseCode - */ - static markLicenseAsSent(licenseCode, viaAttribute = 'license_code') { - return this.query().where(viaAttribute, licenseCode).patch({ - sent_at: moment().toMySqlDateTime(), - }); - } - - /** - * Marks the given license code as used on the storage. - * @param {string} licenseCode - * @return {Promise} - */ - static markLicenseAsUsed(licenseCode, viaAttribute = 'license_code') { - return this.query().where(viaAttribute, licenseCode).patch({ - used_at: moment().toMySqlDateTime(), - }); - } - - /** - * - * @param {IIPlan} plan - * @return {boolean} - */ - isEqualPlanPeriod(plan) { - return ( - this.invoicePeriod === plan.invoiceInterval && - license.licensePeriod === license.periodInterval - ); - } -} diff --git a/server/src/system/models/Subscriptions/Plan.js b/server/src/system/models/Subscriptions/Plan.js deleted file mode 100644 index cb724ff46..000000000 --- a/server/src/system/models/Subscriptions/Plan.js +++ /dev/null @@ -1,82 +0,0 @@ -import { Model, mixin } from 'objection'; -import SystemModel from 'system/models/SystemModel'; -import { PlanSubscription } from '..'; - -export default class Plan extends mixin(SystemModel) { - /** - * Table name. - */ - static get tableName() { - return 'subscription_plans'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Defined virtual attributes. - */ - static get virtualAttributes() { - return ['isFree', 'hasTrial']; - } - - /** - * Model modifiers. - */ - static get modifiers() { - return { - getFeatureBySlug(builder, featureSlug) { - builder.where('slug', featureSlug); - }, - }; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const PlanSubscription = require('system/models/Subscriptions/PlanSubscription'); - - return { - /** - * The plan may have many subscriptions. - */ - subscriptions: { - relation: Model.HasManyRelation, - modelClass: PlanSubscription.default, - join: { - from: 'subscription_plans.id', - to: 'subscription_plan_subscriptions.planId', - }, - } - }; - } - - /** - * Check if plan is free. - * @return {boolean} - */ - isFree() { - return this.price <= 0; - } - - /** - * Check if plan is paid. - * @return {boolean} - */ - isPaid() { - return !this.isFree(); - } - - /** - * Check if plan has trial. - * @return {boolean} - */ - hasTrial() { - return this.trialPeriod && this.trialInterval; - } -} diff --git a/server/src/system/models/Subscriptions/PlanFeature.js b/server/src/system/models/Subscriptions/PlanFeature.js deleted file mode 100644 index 75dc6d29b..000000000 --- a/server/src/system/models/Subscriptions/PlanFeature.js +++ /dev/null @@ -1,36 +0,0 @@ -import { Model, mixin } from 'objection'; -import SystemModel from 'system/models/SystemModel'; - -export default class PlanFeature extends mixin(SystemModel) { - /** - * Table name. - */ - static get tableName() { - return 'subscriptions.plan_features'; - } - - /** - * Timestamps columns. - */ - static get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Plan = require('system/models/Subscriptions/Plan'); - - return { - plan: { - relation: Model.BelongsToOneRelation, - modelClass: Plan.default, - join: { - from: 'subscriptions.plan_features.planId', - to: 'subscriptions.plans.id', - }, - }, - }; - } -} diff --git a/server/src/system/models/Subscriptions/PlanSubscription.js b/server/src/system/models/Subscriptions/PlanSubscription.js deleted file mode 100644 index 7b8e53f07..000000000 --- a/server/src/system/models/Subscriptions/PlanSubscription.js +++ /dev/null @@ -1,164 +0,0 @@ -import { Model, mixin } from 'objection'; -import SystemModel from 'system/models/SystemModel'; -import moment from 'moment'; -import SubscriptionPeriod from 'services/Subscription/SubscriptionPeriod'; - -export default class PlanSubscription extends mixin(SystemModel) { - /** - * Table name. - */ - static get tableName() { - return 'subscription_plan_subscriptions'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Defined virtual attributes. - */ - static get virtualAttributes() { - return ['active', 'inactive', 'ended', 'onTrial']; - } - - /** - * Modifiers queries. - */ - static get modifiers() { - return { - activeSubscriptions(builder) { - const dateFormat = 'YYYY-MM-DD HH:mm:ss'; - const now = moment().format(dateFormat); - - builder.where('ends_at', '>', now); - builder.where('trial_ends_at', '>', now); - }, - - inactiveSubscriptions() { - builder.modify('endedTrial'); - builder.modify('endedPeriod'); - }, - - subscriptionBySlug(builder, subscriptionSlug) { - builder.where('slug', subscriptionSlug); - }, - - endedTrial(builder) { - const dateFormat = 'YYYY-MM-DD HH:mm:ss'; - const endDate = moment().format(dateFormat); - - builder.where('ends_at', '<=', endDate); - }, - - endedPeriod(builder) { - const dateFormat = 'YYYY-MM-DD HH:mm:ss'; - const endDate = moment().format(dateFormat); - - builder.where('trial_ends_at', '<=', endDate); - }, - }; - } - - /** - * Relations mappings. - */ - static get relationMappings() { - const Tenant = require('system/models/Tenant'); - const Plan = require('system/models/Subscriptions/Plan'); - - return { - /** - * Plan subscription belongs to tenant. - */ - tenant: { - relation: Model.BelongsToOneRelation, - modelClass: Tenant.default, - join: { - from: 'subscription_plan_subscriptions.tenantId', - to: 'tenants.id', - }, - }, - - /** - * Plan description belongs to plan. - */ - plan: { - relation: Model.BelongsToOneRelation, - modelClass: Plan.default, - join: { - from: 'subscription_plan_subscriptions.planId', - to: 'subscription_plans.id', - }, - }, - }; - } - - /** - * Check if subscription is active. - * @return {Boolean} - */ - active() { - return !this.ended() || this.onTrial(); - } - - /** - * Check if subscription is inactive. - * @return {Boolean} - */ - inactive() { - return !this.active(); - } - - /** - * Check if subscription period has ended. - * @return {Boolean} - */ - ended() { - return this.endsAt ? moment().isAfter(this.endsAt) : false; - } - - /** - * Check if subscription is currently on trial. - * @return {Boolean} - */ - onTrial() { - return this.trailEndsAt ? moment().isAfter(this.trailEndsAt) : false; - } - - /** - * Set new period from the given details. - * @param {string} invoiceInterval - * @param {number} invoicePeriod - * @param {string} start - * - * @return {Object} - */ - static setNewPeriod(invoiceInterval, invoicePeriod, start) { - const period = new SubscriptionPeriod( - invoiceInterval, - invoicePeriod, - start, - ); - - const startsAt = period.getStartDate(); - const endsAt = period.getEndDate(); - - return { startsAt, endsAt }; - } - - /** - * Renews subscription period. - * @Promise - */ - renew(invoiceInterval, invoicePeriod) { - const { startsAt, endsAt } = PlanSubscription.setNewPeriod( - invoiceInterval, - invoicePeriod, - ); - return this.$query().update({ startsAt, endsAt }); - } -} diff --git a/server/src/system/models/SystemModel.js b/server/src/system/models/SystemModel.js deleted file mode 100644 index cba8eea01..000000000 --- a/server/src/system/models/SystemModel.js +++ /dev/null @@ -1,19 +0,0 @@ -import { Container } from 'typedi'; -import BaseModel from 'models/Model'; - -export default class SystemModel extends BaseModel{ - /** - * Loging all system database queries. - * @param {...any} args - */ - static query(...args) { - const Logger = Container.get('logger'); - return super.query(...args).onBuildKnex(knexQueryBuilder => { - knexQueryBuilder.on('query', queryData => { - Logger.info(`[query][system] ${queryData.sql}`, { - bindings: queryData.bindings, - }); - }); - }); - } -} \ No newline at end of file diff --git a/server/src/system/models/SystemUser.js b/server/src/system/models/SystemUser.js deleted file mode 100644 index a314240e2..000000000 --- a/server/src/system/models/SystemUser.js +++ /dev/null @@ -1,85 +0,0 @@ -import { Model } from 'objection'; -import bcrypt from 'bcryptjs'; -import SystemModel from 'system/models/SystemModel'; -import SoftDeleteQueryBuilder from 'collection/SoftDeleteQueryBuilder'; - -export default class SystemUser extends SystemModel { - /** - * Table name. - */ - static get tableName() { - return 'users'; - } - - /** - * Soft delete query builder. - */ - static get QueryBuilder() { - return SoftDeleteQueryBuilder; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return ['fullName', 'isDeleted', 'isInviteAccepted']; - } - - /** - * - */ - get isDeleted() { - return !!this.deletedAt; - } - - /** - * - */ - get isInviteAccepted() { - return !!this.inviteAcceptedAt; - } - - /** - * Full name attribute. - */ - get fullName() { - return (this.firstName + ' ' + this.lastName).trim(); - } - - /** - * Relationship mapping. - */ - static get relationMappings() { - const Tenant = require('system/models/Tenant'); - - return { - /** - * System user may belongs to tenant model. - */ - tenant: { - relation: Model.BelongsToOneRelation, - modelClass: Tenant.default, - join: { - from: 'users.tenantId', - to: 'tenants.id', - }, - }, - }; - } - - /** - * Verify the password of the user. - * @param {String} password - The given password. - * @return {Boolean} - */ - verifyPassword(password) { - return bcrypt.compareSync(password, this.password); - } -} diff --git a/server/src/system/models/Tenant.js b/server/src/system/models/Tenant.js deleted file mode 100644 index cb0718987..000000000 --- a/server/src/system/models/Tenant.js +++ /dev/null @@ -1,200 +0,0 @@ -import moment from 'moment'; -import { Model } from 'objection'; -import uniqid from 'uniqid'; -import SubscriptionPeriod from 'services/Subscription/SubscriptionPeriod'; -import BaseModel from 'models/Model'; -import TenantMetadata from './TenantMetadata'; -import PlanSubscription from './Subscriptions/PlanSubscription'; - -export default class Tenant extends BaseModel { - /** - * Table name. - */ - static get tableName() { - return 'tenants'; - } - - /** - * Timestamps columns. - */ - get timestamps() { - return ['createdAt', 'updatedAt']; - } - - /** - * Virtual attributes. - */ - static get virtualAttributes() { - return ['isReady', 'isBuildRunning']; - } - - /** - * Tenant is ready. - */ - get isReady() { - return !!(this.initializedAt && this.seededAt); - } - - /** - * Detarimes the tenant whether is build currently running. - */ - get isBuildRunning() { - return !!this.buildJobId; - } - - /** - * Query modifiers. - */ - static modifiers() { - return { - subscriptions(builder) { - builder.withGraphFetched('subscriptions'); - }, - }; - } - - /** - * Relations mappings. - */ - static get relationMappings() { - const PlanSubscription = require('./Subscriptions/PlanSubscription'); - const TenantMetadata = require('./TenantMetadata'); - - return { - subscriptions: { - relation: Model.HasManyRelation, - modelClass: PlanSubscription.default, - join: { - from: 'tenants.id', - to: 'subscription_plan_subscriptions.tenantId', - }, - }, - metadata: { - relation: Model.HasOneRelation, - modelClass: TenantMetadata.default, - join: { - from: 'tenants.id', - to: 'tenants_metadata.tenantId', - }, - }, - }; - } - - /** - * Retrieve the subscribed plans ids. - * @return {number[]} - */ - async subscribedPlansIds() { - const { subscriptions } = this; - return chain(subscriptions).map('planId').unq(); - } - - /** - * - * @param {*} planId - * @param {*} invoiceInterval - * @param {*} invoicePeriod - * @param {*} subscriptionSlug - * @returns - */ - newSubscription(planId, invoiceInterval, invoicePeriod, subscriptionSlug) { - return Tenant.newSubscription( - this.id, - planId, - invoiceInterval, - invoicePeriod, - subscriptionSlug, - ); - } - - /** - * Records a new subscription for the associated tenant. - */ - static newSubscription( - tenantId, - planId, - invoiceInterval, - invoicePeriod, - subscriptionSlug - ) { - const period = new SubscriptionPeriod(invoiceInterval, invoicePeriod); - - return PlanSubscription.query().insert({ - tenantId, - slug: subscriptionSlug, - planId, - startsAt: period.getStartDate(), - endsAt: period.getEndDate(), - }); - } - - /** - * Creates a new tenant with random organization id. - */ - static createWithUniqueOrgId(uniqId) { - const organizationId = uniqid() || uniqId; - return this.query().insert({ organizationId }); - } - - /** - * Mark as seeded. - * @param {number} tenantId - */ - static markAsSeeded(tenantId) { - const seededAt = moment().toMySqlDateTime(); - return this.query().update({ seededAt }).where({ id: tenantId }); - } - - /** - * Mark the the given organization as initialized. - * @param {string} organizationId - */ - static markAsInitialized(tenantId) { - const initializedAt = moment().toMySqlDateTime(); - return this.query().update({ initializedAt }).where({ id: tenantId }); - } - - /** - * Marks the given tenant as built. - */ - static markAsBuilt(tenantId) { - const builtAt = moment().toMySqlDateTime(); - return this.query().update({ builtAt }).where({ id: tenantId }); - } - - /** - * Marks the given tenant as built. - */ - static markAsBuilding(tenantId, buildJobId) { - return this.query().update({ buildJobId }).where({ id: tenantId }); - } - - /** - * Marks the given tenant as built. - */ - static markAsBuildCompleted(tenantId) { - return this.query().update({ buildJobId: null }).where({ id: tenantId }); - } - - /** - * Saves the metadata of the given tenant. - */ - static async saveMetadata(tenantId, metadata) { - const foundMetadata = await TenantMetadata.query().findOne({ tenantId }); - const updateOrInsert = foundMetadata ? 'update' : 'insert'; - - return TenantMetadata.query() - [updateOrInsert]({ - tenantId, - ...metadata, - }) - .where({ tenantId }); - } - - /** - * Saves the metadata of the tenant. - */ - saveMetadata(metadata) { - return Tenant.saveMetadata(this.id, metadata); - } -} diff --git a/server/src/system/models/TenantMetadata.js b/server/src/system/models/TenantMetadata.js deleted file mode 100644 index 4664cfd6d..000000000 --- a/server/src/system/models/TenantMetadata.js +++ /dev/null @@ -1,10 +0,0 @@ -import BaseModel from 'models/Model'; - -export default class TenantMetadata extends BaseModel { - /** - * Table name. - */ - static get tableName() { - return 'tenants_metadata'; - } -} diff --git a/server/src/system/models/index.js b/server/src/system/models/index.js deleted file mode 100644 index 6e5ee2d80..000000000 --- a/server/src/system/models/index.js +++ /dev/null @@ -1,22 +0,0 @@ - -import Plan from './Subscriptions/Plan'; -import PlanFeature from './Subscriptions/PlanFeature'; -import PlanSubscription from './Subscriptions/PlanSubscription'; -import License from './Subscriptions/License'; -import Tenant from './Tenant'; -import TenantMetadata from './TenantMetadata'; -import SystemUser from './SystemUser'; -import PasswordReset from './PasswordReset'; -import Invite from './Invite'; - -export { - Plan, - PlanFeature, - PlanSubscription, - License, - Tenant, - TenantMetadata, - SystemUser, - PasswordReset, - Invite, -} \ No newline at end of file diff --git a/server/src/system/repositories/SubscriptionRepository.ts b/server/src/system/repositories/SubscriptionRepository.ts deleted file mode 100644 index d02c6837c..000000000 --- a/server/src/system/repositories/SubscriptionRepository.ts +++ /dev/null @@ -1,26 +0,0 @@ -import SystemRepository from 'system/repositories/SystemRepository'; -import { PlanSubscription } from 'system/models'; - -export default class SubscriptionRepository extends SystemRepository { - /** - * Gets the repository's model. - */ - get model() { - return PlanSubscription.bindKnex(this.knex); - } - - /** - * Retrieve subscription from a given slug in specific tenant. - * @param {string} slug - * @param {number} tenantId - */ - getBySlugInTenant(slug: string, tenantId: number) { - const cacheKey = this.getCacheKey('getBySlugInTenant', slug, tenantId); - - return this.cache.get(cacheKey, () => { - return PlanSubscription.query() - .findOne('slug', slug) - .where('tenant_id', tenantId); - }); - } -} diff --git a/server/src/system/repositories/SystemRepository.ts b/server/src/system/repositories/SystemRepository.ts deleted file mode 100644 index e44377130..000000000 --- a/server/src/system/repositories/SystemRepository.ts +++ /dev/null @@ -1,5 +0,0 @@ -import CachableRepository from "repositories/CachableRepository"; - -export default class SystemRepository extends CachableRepository { - -} \ No newline at end of file diff --git a/server/src/system/repositories/SystemUserRepository.ts b/server/src/system/repositories/SystemUserRepository.ts deleted file mode 100644 index 6e8f7d4eb..000000000 --- a/server/src/system/repositories/SystemUserRepository.ts +++ /dev/null @@ -1,101 +0,0 @@ -import moment from 'moment'; -import SystemRepository from 'system/repositories/SystemRepository'; -import { SystemUser } from 'system/models'; -import { ISystemUser } from 'interfaces'; - -export default class SystemUserRepository extends SystemRepository { - /** - * Gets the repository's model. - */ - get model() { - return SystemUser.bindKnex(this.knex); - } - - /** - * Finds system user by crediential. - * @param {string} crediential - Phone number or email. - * @return {ISystemUser} - * @return {Promise} - */ - findByCrediential(crediential: string): Promise { - const cacheKey = this.getCacheKey('findByCrediential', crediential); - - return this.cache.get(cacheKey, () => { - return this.model.query() - .findOne('email', crediential) - .orWhere('phone_number', crediential); - }); - } - - /** - * Retrieve user by id and tenant id. - * @param {number} userId - User id. - * @param {number} tenantId - Tenant id. - * @return {Promise} - */ - findOneByIdAndTenant(userId: number, tenantId: number): Promise { - const cacheKey = this.getCacheKey('findOneByIdAndTenant', userId, tenantId); - - return this.cache.get(cacheKey, () => { - return this.model.query() - .findOne({ id: userId, tenant_id: tenantId }); - }); - } - - /** - * Retrieve system user details by the given email. - * @param {string} email - Email - * @return {Promise} - */ - findOneByEmail(email: string): Promise { - const cacheKey = this.getCacheKey('findOneByEmail', email); - - return this.cache.get(cacheKey, () => { - return this.model.query().findOne('email', email); - }); - } - - /** - * Retrieve user by phone number. - * @param {string} phoneNumber - Phone number - * @return {Promise} - */ - findOneByPhoneNumber(phoneNumber: string): Promise { - const cacheKey = this.getCacheKey('findOneByPhoneNumber', phoneNumber); - - return this.cache.get(cacheKey, () => { - return this.model.query() - .findOne('phoneNumber', phoneNumber); - }); - } - - /** - * Patches the last login date to the given system user. - * @param {number} userId - * @return {Promise} - */ - patchLastLoginAt(userId: number): Promise { - return super.update( - { last_login_at: moment().toMySqlDateTime() }, - { id: userId } - ); - } - - /** - * Activate user by the given id. - * @param {number} userId - User id. - * @return {Promise} - */ - activateById(userId: number): Promise { - return super.update({ active: 1 }, { id: userId }); - } - - /** - * Inactivate user by the given id. - * @param {number} userId - User id. - * @return {Promise} - */ - inactivateById(userId: number): Promise { - return super.update({ active: 0 }, { id: userId }); - } -} diff --git a/server/src/system/repositories/TenantRepository.ts b/server/src/system/repositories/TenantRepository.ts deleted file mode 100644 index e2d3e5e72..000000000 --- a/server/src/system/repositories/TenantRepository.ts +++ /dev/null @@ -1,43 +0,0 @@ -import moment from "moment"; -import uniqid from 'uniqid'; -import SystemRepository from "./SystemRepository"; -import { Tenant } from "system/models"; -import { ITenant } from 'interfaces'; - -export default class TenantRepository extends SystemRepository { - /** - * Gets the repository's model. - */ - get model() { - return Tenant.bindKnex(this.knex); - } - - /** - * Creates a new tenant with random organization id. - * @return {ITenant} - */ - createWithUniqueOrgId(uniqId?: string): Promise{ - const organizationId = uniqid() || uniqId; - return super.create({ organizationId }); - } - - /** - * Mark as seeded. - * @param {number} tenantId - */ - markAsSeeded(tenantId: number) { - return super.update({ - seededAt: moment().toMySqlDateTime(), - }, { id: tenantId }) - } - - /** - * Mark the the given organization as initialized. - * @param {string} organizationId - */ - markAsInitialized(tenantId: number) { - return super.update({ - initializedAt: moment().toMySqlDateTime(), - }, { id: tenantId }); - } -} \ No newline at end of file diff --git a/server/src/system/repositories/index.ts b/server/src/system/repositories/index.ts deleted file mode 100644 index cf3f6bdd2..000000000 --- a/server/src/system/repositories/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import SystemUserRepository from 'system/repositories/SystemUserRepository'; -import SubscriptionRepository from 'system/repositories/SubscriptionRepository'; -import TenantRepository from 'system/repositories/TenantRepository'; - -export { - SystemUserRepository, - SubscriptionRepository, - TenantRepository, -}; \ No newline at end of file diff --git a/server/src/system/seeds/seed_subscriptions_plans.js b/server/src/system/seeds/seed_subscriptions_plans.js deleted file mode 100644 index 0e69b94db..000000000 --- a/server/src/system/seeds/seed_subscriptions_plans.js +++ /dev/null @@ -1,66 +0,0 @@ - -exports.seed = (knex) => { - // Deletes ALL existing entries - return knex('subscription_plans').del() - .then(() => { - // Inserts seed entries - return knex('subscription_plans').insert([ - { - name: 'Essentials', - slug: 'essentials-monthly', - price: 100, - active: true, - currency: 'LYD', - trial_period: 7, - trial_interval: 'days', - }, - { - name: 'Essentials', - slug: 'essentials-yearly', - price: 1200, - active: true, - currency: 'LYD', - trial_period: 12, - trial_interval: 'months', - }, - { - name: 'Pro', - slug: 'pro-monthly', - price: 200, - active: true, - currency: 'LYD', - trial_period: 1, - trial_interval: 'months', - }, - { - name: 'Pro', - slug: 'pro-yearly', - price: 500, - active: true, - currency: 'LYD', - invoice_period: 12, - invoice_interval: 'month', - index: 2, - }, - { - name: 'Plus', - slug: 'plus-monthly', - price: 200, - active: true, - currency: 'LYD', - trial_period: 1, - trial_interval: 'months', - }, - { - name: 'Plus', - slug: 'plus-yearly', - price: 500, - active: true, - currency: 'LYD', - invoice_period: 12, - invoice_interval: 'month', - index: 2, - }, - ]); - }); -}; diff --git a/server/src/utils/deepdash.ts b/server/src/utils/deepdash.ts deleted file mode 100644 index b1e2f96f4..000000000 --- a/server/src/utils/deepdash.ts +++ /dev/null @@ -1,52 +0,0 @@ -import _ from 'lodash'; -import deepdash from 'deepdash'; - -const { - condense, - condenseDeep, - eachDeep, - exists, - filterDeep, - findDeep, - findPathDeep, - findValueDeep, - forEachDeep, - index, - keysDeep, - mapDeep, - mapKeysDeep, - mapValuesDeep, - omitDeep, - pathMatches, - pathToString, - paths, - pickDeep, - reduceDeep, - someDeep, - iteratee, -} = deepdash(_); - -export { - iteratee, - condense, - condenseDeep, - eachDeep, - exists, - filterDeep, - findDeep, - findPathDeep, - findValueDeep, - forEachDeep, - index, - keysDeep, - mapDeep, - mapKeysDeep, - mapValuesDeep, - omitDeep, - pathMatches, - pathToString, - paths, - pickDeep, - reduceDeep, - someDeep, -}; diff --git a/server/src/utils/index.ts b/server/src/utils/index.ts deleted file mode 100644 index aa2553fa3..000000000 --- a/server/src/utils/index.ts +++ /dev/null @@ -1,418 +0,0 @@ -import bcrypt from 'bcryptjs'; -import moment from 'moment'; -import _ from 'lodash'; -import path from 'path'; -import accounting from 'accounting'; -import pug from 'pug'; -import Currencies from 'js-money/lib/currency'; -import definedOptions from 'data/options'; - -export * from './table'; - -const hashPassword = (password) => - new Promise((resolve) => { - bcrypt.genSalt(10, (error, salt) => { - bcrypt.hash(password, salt, (err, hash) => { - resolve(hash); - }); - }); - }); - -const origin = (request) => `${request.protocol}://${request.hostname}`; - -const dateRangeCollection = ( - fromDate, - toDate, - addType = 'day', - increment = 1 -) => { - const collection = []; - const momentFromDate = moment(fromDate); - let dateFormat = ''; - - switch (addType) { - case 'day': - default: - dateFormat = 'YYYY-MM-DD'; - break; - case 'month': - case 'quarter': - dateFormat = 'YYYY-MM'; - break; - case 'year': - dateFormat = 'YYYY'; - break; - } - for ( - let i = momentFromDate; - i.isBefore(toDate, addType) || i.isSame(toDate, addType); - i.add(increment, `${addType}s`) - ) { - collection.push(i.endOf(addType).format(dateFormat)); - } - return collection; -}; - -const dateRangeFromToCollection = ( - fromDate, - toDate, - addType = 'day', - increment = 1 -) => { - const collection = []; - const momentFromDate = moment(fromDate); - const dateFormat = 'YYYY-MM-DD'; - - for ( - let i = momentFromDate; - i.isBefore(toDate, addType) || i.isSame(toDate, addType); - i.add(increment, `${addType}s`) - ) { - collection.push({ - fromDate: i.startOf(addType).format(dateFormat), - toDate: i.endOf(addType).format(dateFormat), - }); - } - return collection; -}; - - -const dateRangeFormat = (rangeType) => { - switch (rangeType) { - case 'year': - return 'YYYY'; - case 'month': - case 'quarter': - default: - return 'YYYY-MM'; - } -}; - -function mapKeysDeep(obj, cb, isRecursive) { - if (!obj && !isRecursive) { - return {}; - } - if (!isRecursive) { - if ( - typeof obj === 'string' || - typeof obj === 'number' || - typeof obj === 'boolean' - ) { - return {}; - } - } - if (Array.isArray(obj)) { - return obj.map((item) => mapKeysDeep(item, cb, true)); - } - if (!_.isPlainObject(obj)) { - return obj; - } - const result = _.mapKeys(obj, cb); - return _.mapValues(result, (value) => mapKeysDeep(value, cb, true)); -} - -const mapValuesDeep = (v, callback) => - _.isObject(v) - ? _.mapValues(v, (v) => mapValuesDeep(v, callback)) - : callback(v); - -const promiseSerial = (funcs) => { - return funcs.reduce( - (promise, func) => - promise.then((result) => - func().then(Array.prototype.concat.bind(result)) - ), - Promise.resolve([]) - ); -}; - -const flatToNestedArray = ( - data, - config = { id: 'id', parentId: 'parent_id' } -) => { - const map = {}; - const nestedArray = []; - - data.forEach((item) => { - map[item[config.id]] = item; - map[item[config.id]].children = []; - }); - - data.forEach((item) => { - const parentItemId = item[config.parentId]; - - if (!item[config.parentId]) { - nestedArray.push(item); - } - if (parentItemId) { - map[parentItemId].children.push(item); - } - }); - return nestedArray; -}; - -const itemsStartWith = (items, char) => { - return items.filter((item) => item.indexOf(char) === 0); -}; - -const getTotalDeep = (items, deepProp, totalProp) => - items.reduce((acc, item) => { - const total = Array.isArray(item[deepProp]) - ? getTotalDeep(item[deepProp], deepProp, totalProp) - : 0; - return _.sumBy(item, totalProp) + total + acc; - }, 0); - -function applyMixins(derivedCtor, baseCtors) { - baseCtors.forEach((baseCtor) => { - Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => { - Object.defineProperty( - derivedCtor.prototype, - name, - Object.getOwnPropertyDescriptor(baseCtor.prototype, name) - ); - }); - }); -} - -const formatDateFields = (inputDTO, fields, format = 'YYYY-MM-DD') => { - const _inputDTO = { ...inputDTO }; - - fields.forEach((field) => { - if (_inputDTO[field]) { - _inputDTO[field] = moment(_inputDTO[field]).format(format); - } - }); - return _inputDTO; -}; - -const getDefinedOptions = () => { - const options = []; - - Object.keys(definedOptions).forEach((groupKey) => { - const groupOptions = definedOptions[groupKey]; - groupOptions.forEach((option) => { - options.push({ ...option, group: groupKey }); - }); - }); - return options; -}; - -const getDefinedOption = (key, group) => { - return definedOptions?.[group]?.find((option) => option.key == key); -}; - -const isDefinedOptionConfigurable = (key, group) => { - const definedOption = getDefinedOption(key, group); - return definedOption?.config || false; -}; - -const entriesAmountDiff = ( - newEntries, - oldEntries, - amountAttribute, - idAttribute -) => { - const oldEntriesTable = _.chain(oldEntries) - .groupBy(idAttribute) - .mapValues((group) => _.sumBy(group, amountAttribute) || 0) - .value(); - - const newEntriesTable = _.chain(newEntries) - .groupBy(idAttribute) - .mapValues((group) => _.sumBy(group, amountAttribute) || 0) - .mergeWith(oldEntriesTable, (objValue, srcValue) => { - return _.isNumber(objValue) ? objValue - srcValue : srcValue * -1; - }) - .value(); - - return _.chain(newEntriesTable) - .mapValues((value, key) => ({ - [idAttribute]: key, - [amountAttribute]: value, - })) - .filter((entry) => entry[amountAttribute] != 0) - .values() - .value(); -}; - -const convertEmptyStringToNull = (value) => { - return typeof value === 'string' - ? value.trim() === '' - ? null - : value - : value; -}; - -const getNegativeFormat = (formatName) => { - switch (formatName) { - case 'parentheses': - return '(%s%v)'; - case 'mines': - return '-%s%v'; - } -}; - -const getCurrencySign = (currencyCode) => { - return _.get(Currencies, `${currencyCode}.symbol`); -}; - -const formatNumber = ( - balance, - { - precision = 2, - divideOn1000 = false, - excerptZero = false, - negativeFormat = 'mines', - thousand = ',', - decimal = '.', - zeroSign = '', - money = true, - currencyCode, - symbol - } -) => { - const formattedSymbol = getCurrencySign(currencyCode); - const negForamt = getNegativeFormat(negativeFormat); - const format = '%s%v'; - - let formattedBalance = parseFloat(balance); - - if (divideOn1000) { - formattedBalance /= 1000; - } - return accounting.formatMoney( - formattedBalance, - money ? formattedSymbol : symbol ? symbol : '', - precision, - thousand, - decimal, - { - pos: format, - neg: negForamt, - zero: excerptZero ? zeroSign : format, - } - ); -}; - -const isBlank = (value) => { - return (_.isEmpty(value) && !_.isNumber(value)) || _.isNaN(value); -}; - -function defaultToTransform(value, defaultOrTransformedValue, defaultValue) { - const _defaultValue = - typeof defaultValue === 'undefined' - ? defaultOrTransformedValue - : defaultValue; - - const _transfromedValue = - typeof defaultValue === 'undefined' ? value : defaultOrTransformedValue; - - return value == null || value !== value || value === '' - ? _defaultValue - : _transfromedValue; -} - -const transformToMap = (objects, key) => { - const map = new Map(); - - objects.forEach((object) => { - map.set(object[key], object); - }); - return map; -}; - -const transactionIncrement = (s) => s.replace(/([0-8]|\d?9+)?$/, (e) => ++e); - -const booleanValuesRepresentingTrue: string[] = [ - 'true', - '1', -]; -const booleanValuesRepresentingFalse: string[] = [ - 'false', - '0', -]; - -const normalizeValue = (value: any): string => value.toString().trim().toLowerCase(); - -const booleanValues: string[] = [ - ...booleanValuesRepresentingTrue, - ...booleanValuesRepresentingFalse, -].map((value) => normalizeValue(value)); - -export const parseBoolean = (value: any, defaultValue: T): T | boolean => { - const normalizedValue = normalizeValue(value); - if (booleanValues.indexOf(normalizedValue) === -1) { - return defaultValue; - } - return booleanValuesRepresentingTrue.indexOf(normalizedValue) !== -1; -}; - -var increment = (n) => { - return () => { - n += 1; - return n; - }; -}; - -const transformToMapBy = (collection, key) => { - return new Map( - Object.entries(_.groupBy(collection, key)), - ); -} - -const transformToMapKeyValue = (collection, key) => { - return new Map( - collection.map((item) => [item[key], item]), - ); -}; - - -const accumSum = (data, callback) => { - return data.reduce((acc, _data) => { - const amount = callback(_data); - return acc + amount; - }, 0) -} - -const mergeObjectsBykey = (object1, object2, key) => { - var merged = _.merge(_.keyBy(object1, key), _.keyBy(object2, key)); - return _.values(merged); -} - -function templateRender(filePath, options) { - const basePath = path.join(__dirname, '../../resources/views'); - return pug.renderFile(`${basePath}/${filePath}.pug`, options); -} - -export { - templateRender, - accumSum, - increment, - hashPassword, - origin, - dateRangeCollection, - dateRangeFormat, - mapValuesDeep, - mapKeysDeep, - promiseSerial, - flatToNestedArray, - itemsStartWith, - getTotalDeep, - applyMixins, - formatDateFields, - isDefinedOptionConfigurable, - getDefinedOption, - getDefinedOptions, - entriesAmountDiff, - convertEmptyStringToNull, - formatNumber, - isBlank, - defaultToTransform, - transformToMap, - transactionIncrement, - transformToMapBy, - dateRangeFromToCollection, - transformToMapKeyValue, - mergeObjectsBykey -}; diff --git a/server/src/utils/table.ts b/server/src/utils/table.ts deleted file mode 100644 index 579f6e944..000000000 --- a/server/src/utils/table.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { get } from 'lodash'; -import { IColumnMapperMeta, ITableRow } from 'interfaces'; - -export function tableMapper( - data: Object[], - columns: IColumnMapperMeta[], - rowsMeta -): ITableRow[] { - return data.map((object) => tableRowMapper(object, columns, rowsMeta)); -} - -function getAccessor(object, accessor) { - return typeof accessor === 'function' - ? accessor(object) - : get(object, accessor); -} - -export function tableRowMapper( - object: Object, - columns: IColumnMapperMeta[], - rowMeta -): ITableRow { - const cells = columns.map((column) => ({ - key: column.key, - value: column.value ? column.value : getAccessor(object, column.accessor), - })); - - return { - cells, - ...rowMeta, - }; -} diff --git a/server/tests/collection/NestedSet.test.js b/server/tests/collection/NestedSet.test.js deleted file mode 100644 index 3bab1f766..000000000 --- a/server/tests/collection/NestedSet.test.js +++ /dev/null @@ -1,130 +0,0 @@ -import { expect } from '~/testInit'; -import NestedSet from 'collection/NestedSet'; - -describe('NestedSet', () => { - describe('linkChildren()', () => { - it('Should link parent and children nodes.', () => { - const flattenArray = [ - { id: 10 }, - { id: 1 }, - { - id: 3, - parent_id: 1, - }, - { - id: 2, - parent_id: 1, - }, - { - id: 4, - parent_id: 3, - }, - ]; - const nestSet = new NestedSet(flattenArray); - const treeGroups = nestSet.linkChildren(); - - expect(treeGroups['1']).deep.equals({ - id: 1, - children: { - '2': { id: 2, parent_id: 1, children: {} }, - '3': { - id: 3, parent_id: 1, children: { - '4': { id: 4, parent_id: 3, children: {} } - } - } - } - }); - expect(treeGroups['2']).deep.equals({ - id: 2, parent_id: 1, children: {}, - }); - expect(treeGroups['3']).deep.equals({ - id: 3, - parent_id: 1, - children: { '4': { id: 4, parent_id: 3, children: {} } } - }); - expect(treeGroups['4']).deep.equals({ - id: 4, parent_id: 3, children: {}, - }); - }); - }); - - describe('toArray()', () => { - it('Should retrieve nested sets as array.', () => { - const flattenArray = [ - { id: 10 }, - { id: 1 }, - { - id: 3, - parent_id: 1, - }, - { - id: 2, - parent_id: 1, - }, - { - id: 4, - parent_id: 3, - }, - ]; - const nestSet = new NestedSet(flattenArray); - const treeArray = nestSet.toArray(); - - expect(treeArray[0]).deep.equals({ - id: 10, children: [], - }); - expect(treeArray[1]).deep.equals({ - id: 1, - children: [ - { id: 2, parent_id: 1, children: [] }, - { id: 3, parent_id: 1, children: [{ - id: 4, parent_id: 3, children: [] - }] } - ] - }); - }); - }); - - describe('getParents(id)', () => { - it('Should retrieve parent nodes of the given node id.', () => { - const flattenArray = [ - { id: 10 }, - { id: 1 }, - { - id: 3, - parent_id: 1, - }, - { - id: 2, - parent_id: 1, - }, - { - id: 4, - parent_id: 3, - }, - ]; - const nestSet = new NestedSet(flattenArray); - const parentNodes = nestSet.getParents(4); - - expect(parentNodes).deep.equals([ - { id: 4, parent_id: 3, children: {} }, - { - id: 3, - parent_id: 1, - children: { '4': { id: 4, parent_id: 3, children: {} } } - }, - { - id: 1, - children: { - '2': { id: 2, parent_id: 1, children: {} }, - '3': { - id: 3, parent_id: 1, children: { - '4': { id: 4, parent_id: 3, children: {} } - } - } - } - } - ]); - }); - }) - -}); diff --git a/server/tests/dbInit.js b/server/tests/dbInit.js deleted file mode 100644 index 3ae7a7142..000000000 --- a/server/tests/dbInit.js +++ /dev/null @@ -1,40 +0,0 @@ -import { - request, - expect, - createTenantFactory, - createTenant, - bindTenantModel, - login, - systemFactory, - dropTenant, -} from '~/testInit'; -import CacheService from 'services/Cache'; - -let tenantWebsite; -let tenantFactory; -let loginRes; - -beforeEach(async () => { - tenantWebsite = await createTenant(); - tenantFactory = createTenantFactory(tenantWebsite.tenantDb); - - bindTenantModel(tenantWebsite.tenantDb); - loginRes = await login(tenantWebsite); - - CacheService.flush(); -}); - -afterEach(async () => { - await dropTenant(tenantWebsite); - - loginRes = null; - tenantFactory = null; - tenantWebsite = null; -}); - -export { - tenantWebsite, - tenantFactory, - systemFactory, - loginRes, -}; \ No newline at end of file diff --git a/server/tests/docker-compose.yml b/server/tests/docker-compose.yml deleted file mode 100644 index 52c7a1c24..000000000 --- a/server/tests/docker-compose.yml +++ /dev/null @@ -1,14 +0,0 @@ - -services: - mysql: - image: mysql/mysql-server:5.7 - ports: - - "3306:3306" - environment: - - MYSQL_ROOT_PASSWORD=root - - MYSQL_DATABASE=moosher_test - - MYSQL_USER=moosher - - MYSQL_PASSWORD=moosher - tmpfs: - - /var/lib/mysql/:rw,noexec,nosuid,size=600m - - /tmp/:rw,noexec,nosuid,size=50m diff --git a/server/tests/lib/CachableModel.test.js b/server/tests/lib/CachableModel.test.js deleted file mode 100644 index d81541cf1..000000000 --- a/server/tests/lib/CachableModel.test.js +++ /dev/null @@ -1,32 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import Account from 'models/Account'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; -import { times } from 'lodash'; - -describe('CachableModel', () => { - describe('remember()', () => { - it('Should retrieve the data from the storage.', async () => { - - for (let i = 0; i < 1; i++) { - const account = await Account.tenant().query() - .remember() - .where('id', 1); - - const account2 = await Account.tenant().query() - .remember() - .withGraphFetched('balance'); - - console.log(account2); - // \\\ - } - // Account.flushCache(); - }); - }); -}); \ No newline at end of file diff --git a/server/tests/lib/MetableStore.test.ts b/server/tests/lib/MetableStore.test.ts deleted file mode 100644 index 2dade1368..000000000 --- a/server/tests/lib/MetableStore.test.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { expect } from '~/testInit'; -import MetableStore from 'lib/MetableStore'; - -describe('MetableStore()', () => { - - describe('find', () => { - it('Find metadata by the given key.', () => { - const store = new MetableStore(); - store.metadata = [{ key: 'first-key', value: 'first-value' }]; - - const meta = store.find('first-key'); - - expect(meta.value).equals('first-value'); - expect(meta.key).equals('first-key'); - }); - - it('Find metadata by the key as payload.', () => { - - }); - - it('Find metadata by the given key and extra columns.', () => { - - }); - }); - - describe('all()', () => { - it('Should retrieve all metadata in the store.', () => { - - }); - }); - - describe('get()', () => { - it('Should retrieve data of the given metadata query.', () => { - - }); - }); - - describe('removeMeta') -}); \ No newline at end of file diff --git a/server/tests/models/Account.test.js b/server/tests/models/Account.test.js deleted file mode 100644 index 47f1db188..000000000 --- a/server/tests/models/Account.test.js +++ /dev/null @@ -1,50 +0,0 @@ -import { - expect, -} from '~/testInit'; -import Account from 'models/Account'; -import AccountType from 'models/AccountType'; -import { - tenantFactory, - tenantWebsite -} from '~/dbInit'; -import DependencyGraph from 'lib/DependencyGraph'; - -describe('Model: Account', () => { - it('Should account model belongs to the associated account type model.', async () => { - const accountType = await tenantFactory.create('account_type'); - const account = await tenantFactory.create('account', { account_type_id: accountType.id }); - - const accountModel = await Account.tenant().query() - .where('id', account.id) - .withGraphFetched('type') - .first(); - - expect(accountModel.type.id).equals(accountType.id); - }); - - it('Should account model has one balance model that associated to the account model.', async () => { - const accountBalance = await tenantFactory.create('account_balance'); - - const accountModel = await Account.tenant().query() - .where('id', accountBalance.accountId) - .withGraphFetched('balance') - .first(); - - expect(accountModel.balance.amount).equals(accountBalance.amount); - }); - - it('Should account model has many transactions models that associated to the account model.', async () => { - const account = await tenantFactory.create('account'); - const accountTransaction = await tenantFactory.create('account_transaction', { account_id: account.id }); - - const accountModel = await Account.tenant().query().where('id', account.id).first(); - const transactionsModels = await accountModel.$relatedQuery('transactions'); - - expect(transactionsModels.length).equals(1); - }); - - it('Should retrieve dependency graph.', async () => { - const accountsDepGraph = await Account.tenant().depGraph().query(); - expect(accountsDepGraph).to.be.an.instanceOf(DependencyGraph); - }); -}); diff --git a/server/tests/models/AccountType.test.js b/server/tests/models/AccountType.test.js deleted file mode 100644 index 51bd5f5d7..000000000 --- a/server/tests/models/AccountType.test.js +++ /dev/null @@ -1,22 +0,0 @@ -import { create, expect } from '~/testInit'; -import 'models/Account'; -import AccountType from 'models/AccountType'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('Model: AccountType', () => { - it('Shoud account type model has many associated accounts.', async () => { - const accountType = await tenantFactory.create('account_type'); - await tenantFactory.create('account', { account_type_id: accountType.id }); - await tenantFactory.create('account', { account_type_id: accountType.id }); - - const accountTypeModel = await AccountType.tenant().query().where('id', accountType.id).first(); - const typeAccounts = await accountTypeModel.$relatedQuery('accounts'); - - expect(typeAccounts.length).equals(2); - }); -}); diff --git a/server/tests/models/Expense.test.js b/server/tests/models/Expense.test.js deleted file mode 100644 index ed5348a46..000000000 --- a/server/tests/models/Expense.test.js +++ /dev/null @@ -1,39 +0,0 @@ -import { create, expect } from '~/testInit'; -import Expense from 'models/Expense'; -import ExpenseCategory from 'models/ExpenseCategory'; -import { - tenantFactory, - tenantWebsite -} from '~/dbInit'; - -describe('Model: Expense', () => { - describe('relations', () => { - it('Expense model may belongs to associated payment account.', async () => { - const expense = await tenantFactory.create('expense'); - - const expenseModel = await Expense.tenant().query().findById(expense.id); - const paymentAccountModel = await expenseModel.$relatedQuery('paymentAccount'); - - expect(paymentAccountModel.id).equals(expense.paymentAccountId); - }); - - it('Expense model may has many associated expense categories.', async () => { - const expenseCategory = await tenantFactory.create('expense_category'); - - const expenseModel = await Expense.tenant().query().findById(expenseCategory.expenseId); - const expenseCategories = await expenseModel.$relatedQuery('categories'); - - expect(expenseCategories.length).equals(1); - expect(expenseCategories[0].expenseId).equals(expenseModel.id); - }); - - it('Expense model may belongs to associated user model.', async () => { - const expense = await tenantFactory.create('expense'); - - const expenseModel = await Expense.tenant().query().findById(expense.id); - const expenseUserModel = await expenseModel.$relatedQuery('user'); - - expect(expenseUserModel.id).equals(expense.userId); - }); - }); -}); diff --git a/server/tests/models/ExpenseCategory.test.js b/server/tests/models/ExpenseCategory.test.js deleted file mode 100644 index 1eca93c07..000000000 --- a/server/tests/models/ExpenseCategory.test.js +++ /dev/null @@ -1,5 +0,0 @@ - - -describe('ExpenseCategory', () => { - -}); \ No newline at end of file diff --git a/server/tests/models/Item.test.js b/server/tests/models/Item.test.js deleted file mode 100644 index 8ce26771c..000000000 --- a/server/tests/models/Item.test.js +++ /dev/null @@ -1,22 +0,0 @@ -import { create, expect } from '~/testInit'; -import Item from 'models/Item'; -// eslint-disable-next-line no-unused-vars -import itemCategory from 'models/ItemCategory'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('Model: Item', () => { - it('Should item model belongs to the associated category model.', async () => { - const category = await tenantFactory.create('item_category'); - const item = await tenantFactory.create('item', { category_id: category.id }); - - const itemModel = await Item.tenant().query().where('id', item.id).first(); - const itemCategoryModel = await itemModel.$relatedQuery('category'); - - expect(itemCategoryModel.id).equals(category.id); - }); -}); diff --git a/server/tests/models/ItemCategories.test.js b/server/tests/models/ItemCategories.test.js deleted file mode 100644 index cd339d70c..000000000 --- a/server/tests/models/ItemCategories.test.js +++ /dev/null @@ -1,24 +0,0 @@ -import { create, expect } from '~/testInit'; -import 'models/Item'; -import ItemCategory from 'models/ItemCategory'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('Model: ItemCategories', () => { - it('Shoud item category model has many associated items.', async () => { - const category = await tenantFactory.create('item_category'); - await tenantFactory.create('item', { category_id: category.id }); - await tenantFactory.create('item', { category_id: category.id }); - - const categoryModel = await ItemCategory.tenant().query() - .where('id', category.id).first(); - - const categoryItems = await categoryModel.$relatedQuery('items'); - - expect(categoryItems.length).equals(2); - }); -}); diff --git a/server/tests/models/Resource.test.js b/server/tests/models/Resource.test.js deleted file mode 100644 index 8a2a1eb11..000000000 --- a/server/tests/models/Resource.test.js +++ /dev/null @@ -1,31 +0,0 @@ -import { create, expect } from '~/testInit'; -import Resource from 'models/Resource'; -import 'models/View'; -import 'models/ResourceField'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('Model: Resource', () => { - it('Resource model may has many associated views.', async () => { - const view = await tenantFactory.create('view'); - await tenantFactory.create('view', { resource_id: view.resourceId }); - - const resourceModel = await Resource.tenant().query().findById(view.resourceId); - const resourceViews = await resourceModel.$relatedQuery('views'); - - expect(resourceViews).to.have.lengthOf(2); - }); - - it('Resource model may has many fields.', async () => { - const resourceField = await tenantFactory.create('resource_field'); - - const resourceModel = await Resource.tenant().query().findById(resourceField.resourceId); - const resourceFields = await resourceModel.$relatedQuery('fields'); - - expect(resourceFields).to.have.lengthOf(1); - }); -}); diff --git a/server/tests/models/User.test.js b/server/tests/models/User.test.js deleted file mode 100644 index b29332288..000000000 --- a/server/tests/models/User.test.js +++ /dev/null @@ -1,23 +0,0 @@ -import { create, expect } from '~/testInit'; -import User from 'models/TenantUser'; -import 'models/Role'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('Model: User', () => { - describe('relations', () => { - it('User model may has many associated roles.', async () => { - const userHasRole = await tenantFactory.create('user_has_role'); - await tenantFactory.create('user_has_role', { user_id: userHasRole.user_id }); - - const userModel = await User.tenant().query().where('id', userHasRole.userId).first(); - const userRoles = await userModel.$relatedQuery('roles'); - - expect(userRoles).to.have.lengthOf(1); - }); - }); -}); diff --git a/server/tests/models/View.test.js b/server/tests/models/View.test.js deleted file mode 100644 index 208302afa..000000000 --- a/server/tests/models/View.test.js +++ /dev/null @@ -1,47 +0,0 @@ -import { create, expect } from '~/testInit'; -import View from 'models/View'; -import Resource from 'models/Resource'; -import ResourceField from 'models/ResourceField'; -import ViewRole from 'models/ViewRole'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('Model: View', () => { - it('View model may has many associated resource.', async () => { - const view = await tenantFactory.create('view'); - - const viewModel = await View.tenant().query().findById(view.id); - const viewResource = await viewModel.$relatedQuery('resource'); - - const foundResource = await Resource.tenant().query().findById(view.resourceId); - - expect(viewResource.id).equals(foundResource.id); - expect(viewResource.name).equals(foundResource.name); - }); - - it('View model may has many associated view roles.', async () => { - const view = await tenantFactory.create('view'); - await tenantFactory.create('view_role', { view_id: view.id }); - await tenantFactory.create('view_role', { view_id: view.id }); - - const viewModel = await View.tenant().query().findById(view.id); - const viewRoles = await viewModel.$relatedQuery('roles'); - - expect(viewRoles).to.have.lengthOf(2); - }); - - it('View model may has many associated view columns', async () => { - const view = await tenantFactory.create('view'); - await tenantFactory.create('view_column', { view_id: view.id }); - await tenantFactory.create('view_column', { view_id: view.id }); - - const viewModel = await View.tenant().query().findById(view.id); - const viewColumns = await viewModel.$relatedQuery('columns'); - - expect(viewColumns).to.have.lengthOf(2); - }); -}); diff --git a/server/tests/mysql-tmpfs.sh b/server/tests/mysql-tmpfs.sh deleted file mode 100644 index 7ee993230..000000000 --- a/server/tests/mysql-tmpfs.sh +++ /dev/null @@ -1,31 +0,0 @@ -MYSQL_USER="database_test" -MYSQL_DATABASE="database_test" -MYSQL_CONTAINER_NAME="database_test" - -MYSQL_ROOT_PASSWORD="root" -MYSQL_PASSWORD="root" - -echo "Start the testing MySql database..." - -docker \ - run \ - --detach \ - --env MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \ - --env MYSQL_USER=${MYSQL_USER} \ - --env MYSQL_PASSWORD=${MYSQL_PASSWORD} \ - --env MYSQL_DATABASE=${MYSQL_DATABASE} \ - --name ${MYSQL_CONTAINER_NAME} \ - --publish 3306:3306 \ - --tmpfs /var/lib/mysql:rw,noexec,nosuid,size=600m \ - mysql:5.7; - -echo "Sleeping for 10 seconds to allow time for the DB to be provisioned:" -for i in `seq 1 10`; -do - echo "." - sleep 1 -done - -echo "Database '${MYSQL_DATABASE}' running." -echo " Username: ${MYSQL_USER}" -echo " Password: ${MYSQL_PASSWORD}" diff --git a/server/tests/routes/accounting.test.js b/server/tests/routes/accounting.test.js deleted file mode 100644 index 1b2d1b2c5..000000000 --- a/server/tests/routes/accounting.test.js +++ /dev/null @@ -1,887 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import moment from 'moment'; -import ManualJournal from 'models/ManualJournal'; -import AccountTransaction from 'models/AccountTransaction'; -import AccountBalance from 'models/AccountBalance'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('routes: `/accounting`', () => { - describe('route: `/accounting/make-journal-entries`', async () => { - it('Should sumation of credit or debit does not equal zero.', async () => { - const account = await tenantFactory.create('account'); - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: '123', - reference: 'ASC', - entries: [ - { - index: 1, - credit: 0, - debit: 0, - account_id: account.id, - }, - { - index: 2, - credit: 0, - debit: 0, - account_id: account.id, - }, - ], - }); - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equal({ - type: 'CREDIT.DEBIT.SUMATION.SHOULD.NOT.EQUAL.ZERO', - code: 400, - }); - }); - - it('Should all credit entries equal debit.', async () => { - const account = await tenantFactory.create('account'); - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: '123', - entries: [ - { - index: 1, - credit: 1000, - debit: 0, - account_id: account.id, - }, - { - index: 2, - credit: 0, - debit: 500, - account_id: account.id, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equal({ - type: 'CREDIT.DEBIT.NOT.EQUALS', - code: 100, - }); - }); - - it('Should journal reference be not exists.', async () => { - const manualJournal = await tenantFactory.create('manual_journal'); - const account = await tenantFactory.create('account'); - - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: manualJournal.journalNumber, - entries: [ - { - index: 1, - credit: 1000, - debit: 0, - account_id: account.id, - }, - { - index: 2, - credit: 0, - debit: 1000, - account_id: account.id, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equal({ - type: 'JOURNAL.NUMBER.ALREADY.EXISTS', - code: 300, - }); - }); - - it('Should response error in case account id not exists in one of the given entries.', async () => { - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: '123', - entries: [ - { - index: 1, - credit: 1000, - debit: 0, - account_id: 12, - }, - { - index: 2, - credit: 0, - debit: 1000, - account_id: 12, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equal({ - type: 'ACCOUNTS.IDS.NOT.FOUND', - code: 200, - }); - }); - - it('Should discard journal entries that has null credit and debit amount.', async () => { - const account1 = await tenantFactory.create('account'); - const account2 = await tenantFactory.create('account'); - - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: '1000', - entries: [ - { - index: 1, - credit: null, - debit: 0, - account_id: account1.id, - }, - { - index: 2, - credit: null, - debit: 0, - account_id: account2.id, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equal({ - type: 'CREDIT.DEBIT.SUMATION.SHOULD.NOT.EQUAL.ZERO', - - code: 400, - }); - }); - - it('Should validate the customers and vendors contact if were not found on the storage.', async () => { - const account1 = await tenantFactory.create('account'); - const account2 = await tenantFactory.create('account'); - - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: '1000', - entries: [ - { - index: 1, - credit: null, - debit: 1000, - account_id: account1.id, - contact_type: 'customer', - contact_id: 100, - }, - { - index: 2, - credit: 1000, - debit: 0, - account_id: account1.id, - contact_type: 'vendor', - contact_id: 300, - }, - ], - }); - - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMERS.CONTACTS.NOT.FOUND', code: 500, ids: [100], - }); - expect(res.body.errors).include.something.deep.equals({ - type: 'VENDORS.CONTACTS.NOT.FOUND', code: 600, ids: [300], - }) - }); - - it('Should customer contact_type with receivable accounts type.', async () => { - const account1 = await tenantFactory.create('account'); - const account2 = await tenantFactory.create('account'); - const customer = await tenantFactory.create('customer'); - - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: '1000', - entries: [ - { - index: 1, - credit: null, - debit: 1000, - account_id: account1.id, - contact_type: 'customer', - contact_id: 100, - }, - { - index: 2, - credit: 1000, - debit: 0, - account_id: account1.id, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMERS.NOT.WITH.RECEIVABLE.ACCOUNT', - code: 700, - indexes: [1] - }); - }); - - it('Should account receivable entries has contact_id and contact_type customer.', async () => { - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: '1000', - entries: [ - { - index: 1, - credit: null, - debit: 1000, - account_id: 10, - }, - { - index: 2, - credit: 1000, - debit: 0, - account_id: 1, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'RECEIVABLE.ENTRIES.HAS.NO.CUSTOMERS', code: 900, indexes: [1], - }); - }); - - it('Should account payable entries has contact_id and contact_type vendor.', async () => { - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: '1000', - entries: [ - { - index: 1, - credit: null, - debit: 1000, - account_id: 10, - }, - { - index: 2, - credit: 1000, - debit: 0, - account_id: 11, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'PAYABLE.ENTRIES.HAS.NO.VENDORS', code: 1000, indexes: [2] - }); - }); - - it('Should retrieve account_id is not receivable in case contact_type equals customer.', async () => { - const customer = await tenantFactory.create('customer'); - - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: '1000', - entries: [ - { - index: 1, - credit: null, - debit: 1000, - account_id: 2, - contact_id: customer.id, - contact_type: 'customer', - }, - { - index: 2, - credit: 1000, - debit: 0, - account_id: 11, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMERS.NOT.WITH.RECEIVABLE.ACCOUNT', code: 700, indexes: [1], - }); - }); - - it('Should store manual journal transaction to the storage.', async () => { - const account1 = await tenantFactory.create('account'); - const account2 = await tenantFactory.create('account'); - - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date('2020-2-2').toISOString(), - journal_number: '1000', - reference: '2000', - description: 'Description here.', - entries: [ - { - index: 1, - credit: 1000, - account_id: account1.id, - }, - { - index: 2, - debit: 1000, - account_id: account2.id, - }, - ], - }); - - const foundManualJournal = await ManualJournal.tenant().query(); - expect(foundManualJournal.length).equals(1); - - expect(foundManualJournal[0].reference).equals('2000'); - expect(foundManualJournal[0].journalNumber).equals('1000'); - expect(foundManualJournal[0].transactionType).equals('Journal'); - expect(foundManualJournal[0].amount).equals(1000); - expect(moment(foundManualJournal[0].date).format('YYYY-MM-DD')).equals('2020-02-02'); - expect(foundManualJournal[0].description).equals('Description here.'); - expect(foundManualJournal[0].userId).to.be.a('number'); - }); - - it('Should store journal transactions to the storage.', async () => { - const account1 = await tenantFactory.create('account'); - const account2 = await tenantFactory.create('account'); - - const res = await request() - .post('/api/accounting/make-journal-entries') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - journal_number: '1', - date: new Date('2020-1-1').toISOString(), - reference: '1000', - memo: 'Description here.', - entries: [ - { - index: 1, - credit: 1000, - account_id: account1.id, - note: 'First note', - }, - { - index: 2, - debit: 1000, - account_id: account2.id, - note: 'Second note', - }, - ], - }); - - const foundAccountsTransactions = await AccountTransaction.tenant().query(); - - expect(foundAccountsTransactions.length).equals(2); - - expect(foundAccountsTransactions[0].credit).equals(1000); - expect(foundAccountsTransactions[0].debit).equals(null); - expect(foundAccountsTransactions[0].accountId).equals(account1.id); - expect(foundAccountsTransactions[0].note).equals('First note'); - expect(foundAccountsTransactions[0].referenceType).equals('Journal'); - expect(foundAccountsTransactions[0].userId).equals(1); - - expect(foundAccountsTransactions[1].credit).equals(null); - expect(foundAccountsTransactions[1].debit).equals(1000); - expect(foundAccountsTransactions[1].accountId).equals(account2.id); - expect(foundAccountsTransactions[1].note).equals('Second note'); - expect(foundAccountsTransactions[1].referenceType).equals('Journal'); - expect(foundAccountsTransactions[1].userId).equals(1); - }); - }); - - describe('route: POST: `/accounting/manual-journal/:id`', () => { - it('Should response not found in case manual journal transaction was not exists.', async () => { - const res = await request() - .post('/api/manual-journal/1000') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - }); - - it('Should sumation of credit or debit be equal zero.', async () => { - const manualJournal = await tenantFactory.create('manual_journal'); - - const res = await request() - .post(`/api/accounting/manual-journals/${manualJournal.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: '123', - reference: 'ASC', - entries: [ - { - credit: 0, - debit: 0, - account_id: 2000, - }, - { - credit: 0, - debit: 0, - account_id: 2000, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equal({ - type: 'CREDIT.DEBIT.SUMATION.SHOULD.NOT.EQUAL.ZERO', - code: 400, - }); - }); - - it('Should all credit and debit sumation be equal.', async () => { - const manualJournal = await tenantFactory.create('manual_journal'); - - const res = await request() - .post(`/api/accounting/manual-journals/${manualJournal.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: new Date().toISOString(), - journal_number: '123', - reference: 'ASC', - entries: [ - { - credit: 0, - debit: 2000, - account_id: 2000, - }, - { - credit: 1000, - debit: 0, - account_id: 2000, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equal({ - type: 'CREDIT.DEBIT.NOT.EQUALS', code: 100, - }); - }); - - it('Should response journal number already exists in case another one on the storage.', async () => { - const manualJournal = await tenantFactory.create('manual_journal'); - const manualJournal2 = await tenantFactory.create('manual_journal'); - - const jsonBody = { - date: new Date().toISOString(), - reference: 'ASC', - entries: [ - { - credit: 0, - debit: 2000, - account_id: 2000, - }, - { - credit: 1000, - debit: 0, - account_id: 2000, - }, - ], - }; - - const res = await request() - .post(`/api/accounting/manual-journals/${manualJournal.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - ...jsonBody, - journal_number: manualJournal2.journalNumber, - }); - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equal({ - type: 'JOURNAL.NUMBER.ALREADY.EXISTS', code: 300, - }); - }); - - it('Should not response journal number exists in case was unique number.', async () => { - const manualJournal = await tenantFactory.create('manual_journal'); - const manualJournal2 = await tenantFactory.create('manual_journal'); - - const jsonBody = { - date: new Date().toISOString(), - reference: 'ASC', - entries: [ - { - credit: 0, - debit: 2000, - account_id: 2000, - }, - { - credit: 1000, - debit: 0, - account_id: 2000, - }, - ], - }; - const res = await request() - .post(`/api/accounting/manual-journals/${manualJournal.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - ...jsonBody, - journal_number: manualJournal.journalNumber, - }); - - expect(res.status).equals(400); - expect(res.body.errors).not.include.something.that.deep.equal({ - type: 'JOURNAL.NUMBER.ALREADY.EXISTS', code: 300, - }); - }) - - it('Should response error in case account id not exists in one of the given entries.', async () => { - const manualJournal = await tenantFactory.create('manual_journal'); - const manualJournal2 = await tenantFactory.create('manual_journal'); - - const jsonBody = { - date: new Date().toISOString(), - reference: 'ASC', - entries: [ - { - credit: 0, - debit: 1000, - account_id: 2000, - }, - { - credit: 1000, - debit: 0, - account_id: 2000, - }, - ], - }; - const res = await request() - .post(`/api/accounting/manual-journals/${manualJournal.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - ...jsonBody, - journal_number: manualJournal.journalNumber, - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equal({ - type: 'ACCOUNTS.IDS.NOT.FOUND', code: 200, - }); - }); - - it('Should update the given manual journal transaction in the storage.', async () => { - const manualJournal = await tenantFactory.create('manual_journal'); - const account1 = await tenantFactory.create('account'); - const account2 = await tenantFactory.create('account'); - - const res = await request() - .post(`/api/accounting/manual-journals/${manualJournal.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - journal_number: '123', - date: new Date().toISOString(), - reference: 'ABC', - description: 'hello world', - entries: [ - { - credit: 0, - debit: 1000, - account_id: account1.id, - }, - { - credit: 1000, - debit: 0, - account_id: account2.id, - }, - ], - }); - - const foundManualJournal = await ManualJournal.tenant().query() - .where('id', manualJournal.id); - - expect(foundManualJournal.length).equals(1); - expect(foundManualJournal[0].journalNumber).equals('123'); - expect(foundManualJournal[0].reference).equals('ABC'); - expect(foundManualJournal[0].description).equals('hello world'); - }); - - it('Should update account transactions that associated to the manual journal transaction.', async () => { - const manualJournal = await tenantFactory.create('manual_journal'); - const account1 = await tenantFactory.create('account'); - const account2 = await tenantFactory.create('account'); - const transaction = await tenantFactory.create('account_transaction', { - reference_type: 'Journal', - reference_id: manualJournal.id, - }); - const transaction2 = await tenantFactory.create('account_transaction', { - reference_type: 'Journal', - reference_id: manualJournal.id, - }); - - const res = await request() - .post(`/api/accounting/manual-journals/${manualJournal.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - journal_number: '123', - date: new Date().toISOString(), - reference: 'ABC', - description: 'hello world', - entries: [ - { - credit: 0, - debit: 1000, - account_id: account1.id, - note: 'hello 1', - }, - { - credit: 1000, - debit: 0, - account_id: account2.id, - note: 'hello 2', - }, - ], - }); - - const foundTransactions = await AccountTransaction.tenant().query(); - - expect(foundTransactions.length).equals(2); - expect(foundTransactions[0].credit).equals(0); - expect(foundTransactions[0].debit).equals(1000); - expect(foundTransactions[0].accountId).equals(account1.id); - expect(foundTransactions[0].note).equals('hello 1'); - - expect(foundTransactions[1].credit).equals(1000); - expect(foundTransactions[1].debit).equals(0); - expect(foundTransactions[1].accountId).equals(account2.id); - expect(foundTransactions[1].note).equals('hello 2'); - }); - }); - - describe('route: DELETE `accounting/manual-journals/:id`', () => { - it('Should response not found in case the manual journal transaction was not found.', async() => { - const res = await request() - .delete('/api/accounting/manual-journals/1000') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.that.deep.equal({ - type: 'MANUAL.JOURNAL.NOT.FOUND', code: 100, - }); - }); - - it('Should delete manual journal transactions from storage.', async () => { - const manualJournal = await tenantFactory.create('manual_journal'); - - const res = await request() - .delete(`/api/accounting/manual-journals/${manualJournal.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const foundManualTransaction = await ManualJournal.tenant().query() - .where('id', manualJournal.id).first(); - - expect(foundManualTransaction).equals(undefined); - }); - - it('Should delete associated transactions of journal transaction.', async () => { - const manualJournal = await tenantFactory.create('manual_journal'); - const transaction1 = await tenantFactory.create('account_transaction', { - reference_type: 'Journal', reference_id: manualJournal.id, - }); - const transaction2 = await tenantFactory.create('account_transaction', { - reference_type: 'Journal', reference_id: manualJournal.id, - }); - - const res = await request() - .delete(`/api/accounting/manual-journals/${manualJournal.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const foundTransactions = await AccountTransaction.tenant().query(); - expect(foundTransactions.length).equals(0); - }); - - it('Should revert accounts balance after delete account transactions.', () => { - - }); - }); - - describe('route: GET `accounting/manual-journals/:id`', () => { - it('Should response not found in case manual transaction id was not exists.', async () => { - const res = await request() - .delete('/api/accounting/manual-journals/100') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'MANUAL.JOURNAL.NOT.FOUND', code: 100, - }); - }); - - it('Should response manual transaction and transactions metadata.', async () => { - - }); - - }); - - describe('route: `accounting/manual-journals`', async () => { - - it('Should retrieve all manual journals with pagination meta.', async () => { - const manualJournal1 = await tenantFactory.create('manual_journal'); - const manualJournal2 = await tenantFactory.create('manual_journal'); - - const res = await request() - .get('/api/accounting/manual-journals') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - expect(res.body.manualJournals.results).to.be.a('array'); - expect(res.body.manualJournals.results.length).equals(2); - }); - }); - - describe('route: POST `accounting/manual-journals/:id/publish`', () => { - - it('Should response not found in case the manual journal id was not exists.', async () => { - const manualJournal = await tenantFactory.create('manual_journal'); - - const res = await request() - .post('/api/accounting/manual-journals/123/publish') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'MANUAL.JOURNAL.NOT.FOUND', code: 100, - }); - }); - - it('Should response published ready.', async () => { - const manualJournal = await tenantFactory.create('manual_journal', { status: 1 }); - - const res = await request() - .post(`/api/accounting/manual-journals/${manualJournal.id}/publish`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'MANUAL.JOURNAL.PUBLISHED.ALREADY', code: 200, - }); - }); - - it('Should update all accounts transactions to not draft.', async () => { - const manualJournal = await tenantFactory.create('manual_journal', { status: 0 }); - const transaction = await tenantFactory.create('account_transaction', { - reference_type: 'Journal', - reference_id: manualJournal.id, - draft: 1, - }); - const transaction2 = await tenantFactory.create('account_transaction', { - reference_type: 'Journal', - reference_id: manualJournal.id, - draft: 1, - }); - const res = await request() - .post(`/api/accounting/manual-journals/${manualJournal.id}/publish`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const foundTransactions = await AccountTransaction.tenant().query() - .whereIn('id', [transaction.id, transaction2.id]); - - expect(foundTransactions[0].draft).equals(0); - expect(foundTransactions[1].draft).equals(0); - }); - - it('Should increment/decrement accounts balance.', () => { - - }); - }); - - describe('route: `/accounting/quick-journal-entries`', async () => { - it('Shoud `credit_account_id` be required', () => { - - }); - it('Should `debit_account_id` be required.', () => { - - }); - - it('Should `amount` be required.', () => { - - }); - - it('Should credit account id be exists.', () => { - - }); - - it('Should debit account id be exists.', () => { - - }); - - it('Should store the quick journal entry to the storage.', () => { - - }); - }); -}); \ No newline at end of file diff --git a/server/tests/routes/accounts.test.js b/server/tests/routes/accounts.test.js deleted file mode 100644 index 1a6fb1d31..000000000 --- a/server/tests/routes/accounts.test.js +++ /dev/null @@ -1,758 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import Account from 'models/Account'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('routes: /accounts/', () => { - describe('POST `/accounts`', () => { - it('Should `name` be required.', async () => { - const res = await request() - .post('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - }); - - it('Should `account_type_id` be required.', async () => { - const res = await request() - .post('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - }); - - it('Should max length of `code` be limited.', async () => { - const res = await request() - .post('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - }); - - it('Should response type not found in case `account_type_id` was not exist.', async () => { - const account = await tenantFactory.create('account'); - const res = await request() - .post('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Account Name', - description: account.description, - account_type_id: 22, // not found. - code: 123, - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'NOT_EXIST_ACCOUNT_TYPE', code: 200, - }); - }); - - it('Should account code be unique in the storage.', async () => { - const account = await tenantFactory.create('account'); - const res = await request() - .post('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: account.name, - description: account.description, - account_type_id: account.accountTypeId, - code: account.code, - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'NOT_UNIQUE_CODE', code: 100, - }); - }); - - it('Should response success with correct data form.', async () => { - const account = await tenantFactory.create('account'); - const res = await request() - .post('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Name', - description: 'description here', - code: 100, - account_type_id: account.accountTypeId, - parent_account_id: account.id, - }); - - expect(res.status).equals(200); - }); - - it('Should store account data in the storage.', async () => { - const account = await tenantFactory.create('account'); - - const res = await request().post('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Account Name', - description: 'desc here', - account_type_id: account.accountTypeId, - parent_account_id: account.id, - }); - - const accountModel = await Account.tenant().query() - .where('name', 'Account Name') - .first(); - - expect(accountModel).a.an('object'); - expect(accountModel.description).equals('desc here'); - expect(accountModel.accountTypeId).equals(account.accountTypeId); - expect(accountModel.parentAccountId).equals(account.id); - }); - }); - - describe('POST `/accounts/:id`', () => { - it('Should `name` be required.', async () => { - const account = await tenantFactory.create('account'); - const res = await request() - .post(`/api/accounts/${account.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - }); - - it('Should `account_type_id` be required.', async () => { - const account = await tenantFactory.create('account'); - const res = await request() - .post(`/api/accounts/${account.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - }); - - it('Should max length of `code` be limited.', async () => { - const account = await tenantFactory.create('account'); - const res = await request() - .post(`/api/accounts/${account.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - }); - - it('Should response type not found in case `account_type_id` was not exist.', async () => { - const res = await request() - .post('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - }); - - it('Should account code be unique in the storage.', async () => { - await tenantFactory.create('account', { code: 'ABCD' }); - const account = await tenantFactory.create('account'); - const res = await request() - .post(`/api/accounts/${account.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'name', - code: 'ABCD', - account_type_id: account.accountTypeId, - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'NOT_UNIQUE_CODE', code: 100, - }); - }); - - it('Should response success with correct data form.', async () => { - const account = await tenantFactory.create('account'); - const res = await request() - .post('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Name', - description: 'description here', - account_type_id: account.accountTypeId, - parent_account_id: account.id, - code: '123', - }); - - expect(res.status).equals(200); - }); - }); - - describe('GET: `/accounts`', () => { - it('Should retrieve chart of accounts', async () => { - await tenantFactory.create('resource', { name: 'accounts' }); - const account = await tenantFactory.create('account'); - await tenantFactory.create('account', { parent_account_id: account.id }); - - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - expect(res.body.accounts.length).above(0); - }); - - it('Should retrieve accounts based on view roles conditionals of the custom view.', async () => { - const resource = await tenantFactory.create('resource', { name: 'accounts' }); - - const accountTypeField = await tenantFactory.create('resource_field', { - label_name: 'Account type', - key: 'type', - resource_id: resource.id, - active: true, - predefined: true, - }); - - const accountNameField = await tenantFactory.create('resource_field', { - label_name: 'Account Name', - key: 'name', - resource_id: resource.id, - active: true, - predefined: true, - }); - const accountsView = await tenantFactory.create('view', { - name: 'Accounts View', - resource_id: resource.id, - roles_logic_expression: '1 AND 2', - }); - const accountType = await tenantFactory.create('account_type'); - - await tenantFactory.create('view_role', { - view_id: accountsView.id, - index: 1, - field_id: accountTypeField.id, - value: accountType.name, - comparator: 'equals', - }); - await tenantFactory.create('view_role', { - view_id: accountsView.id, - index: 2, - field_id: accountNameField.id, - value: 'account', - comparator: 'contains', - }); - - await tenantFactory.create('account', { name: 'account-1', account_type_id: accountType.id }); - await tenantFactory.create('account', { name: 'account-2', account_type_id: accountType.id }); - await tenantFactory.create('account', { name: 'account-3' }); - - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - custom_view_id: accountsView.id - }) - .send(); - - expect(res.body.accounts.length).equals(2); - expect(res.body.accounts[0].name).equals('account-1'); - expect(res.body.accounts[1].name).equals('account-2'); - expect(res.body.accounts[0].account_type_id).equals(accountType.id); - expect(res.body.accounts[1].account_type_id).equals(accountType.id); - }); - - it('Should retrieve accounts based on view roles conditionals with relation join column.', async () => { - const resource = await tenantFactory.create('resource', { name: 'accounts' }); - - const accountTypeField = await tenantFactory.create('resource_field', { - label_name: 'Account type', - key: 'type', - resource_id: resource.id, - active: true, - predefined: true, - }); - const accountsView = await tenantFactory.create('view', { - name: 'Accounts View', - resource_id: resource.id, - roles_logic_expression: '1', - }); - - const accountType = await tenantFactory.create('account_type'); - const accountsViewRole = await tenantFactory.create('view_role', { - view_id: accountsView.id, - index: 1, - field_id: accountTypeField.id, - value: accountType.name, - comparator: 'equals', - }); - - await tenantFactory.create('account', { account_type_id: accountType.id }); - await tenantFactory.create('account'); - await tenantFactory.create('account'); - - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - custom_view_id: accountsView.id - }) - .send(); - - expect(res.body.accounts.length).equals(1); - expect(res.body.accounts[0].account_type_id).equals(accountType.id); - }); - - it('Should retrieve accounts and child accounts in nested set graph.', async () => { - const resource = await tenantFactory.create('resource', { name: 'accounts' }); - - const account1 = await tenantFactory.create('account'); - const account2 = await tenantFactory.create('account', { parent_account_id: account1.id }); - const account3 = await tenantFactory.create('account', { parent_account_id: account2.id }); - - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - - const foundAccount = res.body.accounts.find(a => a.id === account1.id); - - expect(foundAccount.id).equals(account1.id); - expect(foundAccount.children[0].id).equals(account2.id); - expect(foundAccount.children[0].children[0].id).equals(account3.id); - }); - - it('Should retrieve bad request when `filter_roles.*.comparator` not associated to `field_key`.', () => { - - }); - - it('Should retrieve bad request when `filter_roles.*.field_key` not found in accounts resource.', async () => { - const resource = await tenantFactory.create('resource', { name: 'accounts' }); - - const account1 = await tenantFactory.create('account', { name: 'ahmed' }); - const account2 = await tenantFactory.create('account'); - const account3 = await tenantFactory.create('account'); - - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - stringified_filter_roles: JSON.stringify([{ - condition: 'AND', - field_key: 'not_found', - comparator: 'equals', - value: 'ahmed', - }, { - condition: 'AND', - field_key: 'mybe_found', - comparator: 'equals', - value: 'ahmed', - }]), - }); - - expect(res.body.errors).include.something.that.deep.equals({ - type: 'ACCOUNTS.RESOURCE.HAS.NO.GIVEN.FIELDS', code: 500, - }); - }); - - it('Should retrieve bad request when `filter_roles.*.condition` is invalid.', async () => { - - }); - - it('Should retrieve filtered accounts according to the given account type filter condition.', async () => { - const resource = await tenantFactory.create('resource', { name: 'accounts' }); - const keyField = await tenantFactory.create('resource_field', { - key: 'type', - resource_id: resource.id, - }); - const nameFiled = await tenantFactory.create('resource_field', { - key: 'name', - resource_id: resource.id, - }); - const accountType = await tenantFactory.create('account_type'); - - const account1 = await tenantFactory.create('account', { - name: 'ahmed', - account_type_id: accountType.id - }); - const account2 = await tenantFactory.create('account'); - const account3 = await tenantFactory.create('account'); - - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - stringified_filter_roles: JSON.stringify([{ - condition: '&&', - field_key: 'type', - comparator: 'equals', - value: accountType.name, - }, { - condition: '&&', - field_key: 'name', - comparator: 'equals', - value: 'ahmed', - }]), - }); - - expect(res.body.accounts.length).equals(1); - }); - - it('Shoud retrieve filtered accounts according to the given account description filter condition.', async () => { - const resource = await tenantFactory.create('resource', { name: 'accounts' }); - const resourceField = await tenantFactory.create('resource_field', { - key: 'description', - resource_id: resource.id, - }); - - const account1 = await tenantFactory.create('account', { name: 'ahmed', description: 'here' }); - const account2 = await tenantFactory.create('account'); - const account3 = await tenantFactory.create('account'); - - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - stringified_filter_roles: JSON.stringify([{ - condition: 'AND', - field_key: resourceField.key, - comparator: 'contain', - value: 'here', - }]), - }); - - expect(res.body.accounts.length).equals(1); - expect(res.body.accounts[0].description).equals('here'); - }); - - it('Should retrieve filtered accounts based on given filter roles between OR conditions.', async () => { - const resource = await tenantFactory.create('resource', { name: 'accounts' }); - const resourceField = await tenantFactory.create('resource_field', { - key: 'description', - resource_id: resource.id, - }); - - const resourceCodeField = await tenantFactory.create('resource_field', { - key: 'code', - resource_id: resource.id, - }); - - const account1 = await tenantFactory.create('account', { name: 'ahmed', description: 'target' }); - const account2 = await tenantFactory.create('account', { description: 'target' }); - const account3 = await tenantFactory.create('account'); - - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - stringified_filter_roles: JSON.stringify([{ - condition: '&&', - field_key: resourceField.key, - comparator: 'contain', - value: 'target', - }, { - condition: '||', - field_key: resourceCodeField.key, - comparator: 'equals', - value: 'ahmed', - }]), - }); - - expect(res.body.accounts.length).equals(2); - expect(res.body.accounts[0].description).equals('target'); - expect(res.body.accounts[1].description).equals('target'); - expect(res.body.accounts[0].name).equals('ahmed'); - }); - - it('Should retrieve filtered accounts from custom view and filter roles.', async () => { - const resource = await tenantFactory.create('resource', { name: 'accounts' }); - const accountTypeField = await tenantFactory.create('resource_field', { - key: 'type', resource_id: resource.id, - }); - const accountDescriptionField = await tenantFactory.create('resource_field', { - key: 'description', resource_id: resource.id, - }); - - const accountType = await tenantFactory.create('account_type', { name: 'type-name' }); - - const account1 = await tenantFactory.create('account', { name: 'ahmed-1' }); - const account2 = await tenantFactory.create('account', { name: 'ahmed-2', account_type_id: accountType.id, description: 'target' }); - const account3 = await tenantFactory.create('account', { name: 'ahmed-3' }); - - const accountsView = await tenantFactory.create('view', { - name: 'Accounts View', - resource_id: resource.id, - roles_logic_expression: '1', - }); - const accountsViewRole = await tenantFactory.create('view_role', { - view_id: accountsView.id, - field_id: accountTypeField.id, - index: 1, - value: 'type-name', - comparator: 'equals', - }); - - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - custom_view_id: accountsView.id, - stringified_filter_roles: JSON.stringify([{ - condition: 'AND', - field_key: 'description', - comparator: 'contain', - value: 'target', - }]), - }); - - expect(res.body.accounts.length).equals(1); - expect(res.body.accounts[0].name).equals('ahmed-2'); - expect(res.body.accounts[0].description).equals('target'); - }); - - it('Should validate the given `column_sort_order` column on the accounts resource.', async () => { - const resource = await tenantFactory.create('resource', { name: 'accounts' }); - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - column_sort_by: 'not_found', - sort_order: 'desc', - }); - - expect(res.body.errors).include.something.that.deep.equals({ - type: 'COLUMN.SORT.ORDER.NOT.FOUND', code: 300, - }); - }); - - it('Should sorting the given `column_sort_order` column on asc direction,', async () => { - const resource = await tenantFactory.create('resource', { name: 'accounts' }); - const resourceField = await tenantFactory.create('resource_field', { - key: 'name', resource_id: resource.id, - }); - const accounts1 = await tenantFactory.create('account', { name: 'A' }); - const accounts2 = await tenantFactory.create('account', { name: 'B' }); - - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - column_sort_by: 'name', - sort_order: 'asc', - }); - - const AAccountIndex = res.body.accounts.findIndex(a => a.name === 'B'); - const BAccountIndex = res.body.accounts.findIndex(a => a.name === 'A'); - - expect(AAccountIndex).above(BAccountIndex); - }); - - it('Should sorting the given `column_sort_order` columnw with relation on another table on asc direction.', async () => { - const resource = await tenantFactory.create('resource', { name: 'accounts' }); - const resourceField = await tenantFactory.create('resource_field', { - key: 'type', resource_id: resource.id, - }); - const accounts1 = await tenantFactory.create('account', { name: 'A' }); - const accounts2 = await tenantFactory.create('account', { name: 'B' }); - - const res = await request() - .get('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - column_sort_by: 'name', - sort_order: 'asc', - }); - - expect(res.body.accounts[0].name).equals('A'); - expect(res.body.accounts[1].name).equals('B'); - }); - }); - - describe('DELETE: `/accounts`', () => { - it('Should response not found in case account was not exist.', async () => { - const res = await request() - .delete('/api/accounts/10') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - }); - - it('Should delete the give account from the storage.', async () => { - const account = await tenantFactory.create('account'); - await request() - .delete(`/api/accounts/${account.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const foundAccounts = await Account.tenant().query().where('id', account.id); - expect(foundAccounts).to.have.lengthOf(0); - }); - - it('Should not delete the given account in case account has associated transactions.', async () => { - const accountTransaction = await tenantFactory.create('account_transaction'); - - const res = await request() - .delete(`/api/accounts/${accountTransaction.accountId}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'ACCOUNT.HAS.ASSOCIATED.TRANSACTIONS', code: 100, - }); - }); - }); - - describe('DELETE: `/accounts?ids=`', () => { - it('Should response in case on of accounts ids was not exists.', async () => { - const res = await request() - .delete('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [100, 200], - }) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'ACCOUNTS.IDS.NOT.FOUND', code: 200, ids: [100, 200], - }); - }); - - it('Should response bad request in case one of accounts has transactions.', async () => { - const accountTransaction = await tenantFactory.create('account_transaction'); - const accountTransaction2 = await tenantFactory.create('account_transaction'); - - const res = await request() - .delete('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [accountTransaction.accountId, accountTransaction2.accountId], - }) - .send(); - - expect(res.body.errors).include.something.that.deep.equals({ - type: 'ACCOUNT.HAS.ASSOCIATED.TRANSACTIONS', - code: 300, - ids: [accountTransaction.accountId, accountTransaction2.accountId], - }); - }); - - it('Should delete the given accounts from the storage.', async () => { - const account1 = await tenantFactory.create('account'); - const account2 = await tenantFactory.create('account'); - - const res = await request() - .delete('/api/accounts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [account1.id, account2.id], - }) - .send(); - - expect(res.status).equals(200); - - const foundAccounts = await Account.tenant().query() - .whereIn('id', [account1.id, account2.id]); - - expect(foundAccounts.length).equals(0); - }); - }); - - describe('POST: `/api/accounts/bulk/activate|inactivate', () => { - it('Should response if there one of accounts ids were not found.', async () => { - const res = await request() - .post('/api/accounts/bulk/activate') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [123123, 321321], - }) - .send(); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'ACCOUNTS.NOT.FOUND', code: 200, - }); - }); - - it('Should activate all the given accounts.', async () => { - const accountA = await tenantFactory.create('account', { active: 1 }); - const accountB = await tenantFactory.create('account', { active: 1 }); - - const res = await request() - .post('/api/accounts/bulk/inactivate') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [accountA.id, accountB.id], - }) - .send(); - - const updatedAccounts = await Account.tenant().query().whereIn('id', [accountA.id, accountB.id]); - - expect(updatedAccounts[0].active).equals(0); - expect(updatedAccounts[1].active).equals(0); - }); - - it('Should inactivate all the given accounts.', async () => { - const accountA = await tenantFactory.create('account', { active: 0 }); - const accountB = await tenantFactory.create('account', { active: 0 }); - - const res = await request() - .post('/api/accounts/bulk/activate') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [accountA.id, accountB.id], - }) - .send(); - - const updatedAccounts = await Account.tenant().query().whereIn('id', [accountA.id, accountB.id]); - - expect(updatedAccounts[0].active).equals(1); - expect(updatedAccounts[1].active).equals(1); - }); - }); -}); diff --git a/server/tests/routes/auth.test.js b/server/tests/routes/auth.test.js deleted file mode 100644 index 78895dc64..000000000 --- a/server/tests/routes/auth.test.js +++ /dev/null @@ -1,288 +0,0 @@ -import { request, expect, createUser } from '~/testInit'; -import { hashPassword } from 'utils'; -import knex from 'database/knex'; -import { - tenantWebsite, - tenantFactory, - systemFactory, - loginRes -} from '~/dbInit'; -import TenantUser from 'models/TenantUser'; -import PasswordReset from 'system/models/PasswordReset'; -import SystemUser from 'system/models/SystemUser'; - - -describe('routes: /auth/', () => { - describe('POST `/api/auth/login`', () => { - it('Should `crediential` be required.', async () => { - const res = await request().post('/api/auth/login').send({}); - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - - const paramsErrors = res.body.errors.map((error) => error.param); - expect(paramsErrors).to.include('crediential'); - }); - - it('Should `password` be required.', async () => { - const res = await request().post('/api/auth/login').send(); - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - - const paramsErrors = res.body.errors.map((error) => error.param); - expect(paramsErrors).to.include('password'); - }); - - it('Should the min length of the `password` be 5 ch.', async () => { - const res = await request().post('/api/auth/login').send({ - crediential: 'admin@admin.com', - password: 'test', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - - const paramsErrors = res.body.errors.map((error) => error.param); - expect(paramsErrors).to.include('password'); - }); - - it('Should be a valid email format in crediential attribute.', async () => { - const res = await request().post('/api/auth/login').send({ - crediential: 'admin', - password: 'test', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - - const paramsErrors = res.body.errors.map((error) => error.param); - expect(paramsErrors).to.include('password'); - }); - - it('Should not authenticate with wrong user email and password.', async () => { - const res = await request().post('/api/auth/login').send({ - crediential: 'admin@admin.com', - password: 'admin', - }); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'INVALID_DETAILS', code: 100, - }); - }); - - it('Should not authenticate in case user was not active.', async () => { - const user = await createUser(tenantWebsite, { - active: false, - email: 'admin@admin.com', - }); - - const res = await request().post('/api/auth/login').send({ - crediential: 'admin@admin.com', - password: 'admin', - }); - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'USER_INACTIVE', code: 110, - }); - }); - - it('Should authenticate with correct email and password and active user.', async () => { - const user = await createUser(tenantWebsite, { - email: 'admin@admin.com', - }); - const res = await request().post('/api/auth/login').send({ - crediential: user.email, - password: 'admin', - }); - expect(res.status).equals(200); - }); - - it('Should autheticate success with correct phone number and password.', async () => { - const password = await hashPassword('admin'); - const user = await createUser(tenantWebsite, { - phone_number: '0920000000', - password, - }); - const res = await request().post('/api/auth/login').send({ - crediential: user.email, - password: 'admin', - }); - - expect(res.status).equals(200); - }); - - it('Should last login date be saved after success login.', async () => { - const user = await createUser(tenantWebsite, { - email: 'admin@admin.com', - }); - const res = await request().post('/api/auth/login').send({ - crediential: user.email, - password: 'admin', - }); - const foundUserAfterUpdate = await TenantUser.tenant().query() - .where('email', user.email) - .where('first_name', user.first_name) - .first(); - - expect(res.status).equals(200); - expect(foundUserAfterUpdate.lastLoginAt).to.not.be.null; - }); - }); - - describe('POST: `/auth/send_reset_password`', () => { - it('Should `email` be required.', async () => { - const res = await request().post('/api/auth/send_reset_password').send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - }); - - it('Should response unproccessable if the email address was invalid.', async () => { - const res = await request().post('/api/auth/send_reset_password').send({ - email: 'invalid_email', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - }); - - it('Should response unproccessable if the email address was not exist.', async () => { - const res = await request().post('/api/auth/send_reset_password').send({ - email: 'admin@admin.com', - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'EMAIL.NOT.REGISTERED', code: 200, - }); - }); - - it('Should delete all already tokens that associate to the given email.', async () => { - const user = await createUser(tenantWebsite); - const token = '123123'; - - await knex('password_resets').insert({ email: user.email, token }); - - await request().post('/api/auth/send_reset_password').send({ - email: user.email, - }); - - const oldPasswordToken = await knex('password_resets').where('token', token); - - expect(oldPasswordToken).to.have.lengthOf(0); - }); - - it('Should store new token associate with the given email.', async () => { - const user = await createUser(tenantWebsite); - await request().post('/api/auth/send_reset_password').send({ - email: user.email, - }); - - const token = await knex('password_resets').where('email', user.email); - - expect(token).to.have.lengthOf(1); - }); - - it('Should response success if the email was exist.', async () => { - const user = await createUser(tenantWebsite); - const res = await request().post('/api/auth/send_reset_password').send({ - email: user.email, - }); - - expect(res.status).equals(200); - }); - }); - - describe('POST: `/auth/reset/:token`', () => { - // it('Should response forbidden if the token was invalid.', () => { - - // }); - - it('Should response forbidden if the token was expired.', () => { - - }); - - it('Should `password` be required.', async () => { - const user = await createUser(tenantWebsite); - const passwordReset = await systemFactory.create('password_reset', { - email: user.email, - }); - - const res = await request() - .post(`/api/auth/reset/${passwordReset.token}`) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - - const paramsErrors = res.body.errors.map((error) => error.param); - expect(paramsErrors).to.include('password'); - }); - - it('Should password and confirm_password be equal.', async () => { - const user = await createUser(tenantWebsite); - const passwordReset = await systemFactory.create('password_reset', { - email: user.email, - }); - - const res = await request() - .post(`/api/auth/reset/${passwordReset.token}`) - .send({ - password: '123123', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - - const paramsErrors = res.body.errors.map((error) => error.param); - expect(paramsErrors).to.include('password'); - }); - - it('Should response success with correct data form.', async () => { - const user = await createUser(tenantWebsite); - const passwordReset = await systemFactory.create('password_reset', { - email: user.email, - }); - - const res = await request() - .post(`/api/auth/reset/${passwordReset.token}`) - .send({ - password: '123123', - confirm_password: '123123', - }); - expect(res.status).equals(200); - }); - - it('Should token be deleted after success response.', async () => { - const user = await createUser(tenantWebsite); - const passwordReset = await systemFactory.create('password_reset', { - email: user.email, - }); - await request() - .post(`/api/auth/reset/${passwordReset.token}`) - .send({ - password: '123123', - confirm_password: '123123', - }); - - const foundTokens = await PasswordReset.query().where('email', passwordReset.email); - - expect(foundTokens).to.have.lengthOf(0); - }); - - it('Should password be updated after success response.', async () => { - const user = await createUser(tenantWebsite); - const passwordReset = await systemFactory.create('password_reset', { - email: user.email, - }); - - const res = await request().post(`/api/auth/reset/${passwordReset.token}`).send({ - password: '123123', - confirm_password: '123123', - }); - const systemUserPasswordUpdated = await SystemUser.query() - .where('id', user.id).first(); - - expect(systemUserPasswordUpdated.id).equals(user.id); - expect(systemUserPasswordUpdated.password).not.equals(user.password); - }); - }); -}); diff --git a/server/tests/routes/balance_sheet.test.js b/server/tests/routes/balance_sheet.test.js deleted file mode 100644 index d3260e09d..000000000 --- a/server/tests/routes/balance_sheet.test.js +++ /dev/null @@ -1,541 +0,0 @@ -import moment from 'moment'; -import { - request, - expect, -} from '~/testInit'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; -import { iteratee } from 'lodash'; - -let creditAccount; -let debitAccount; -let incomeAccount; -let incomeType; - -describe('routes: `/financial_statements`', () => { - beforeEach(async () => { - const accountTransactionMixied = { date: '2020-1-10' }; - - // Expense -- - // 1000 Credit - Cash account - // 1000 Debit - Bank account. - await tenantFactory.create('account_transaction', { - credit: 1000, debit: 0, account_id: 2, referenceType: 'Expense', - referenceId: 1, ...accountTransactionMixied, - }); - await tenantFactory.create('account_transaction', { - credit: 0, debit: 1000, account_id: 7, referenceType: 'Expense', - referenceId: 1, ...accountTransactionMixied, - }); - - // Jounral - // 4000 Credit - Opening balance account. - // 2000 Debit - Bank account - // 2000 Debit - Bank account - await tenantFactory.create('account_transaction', { - credit: 4000, debit: 0, account_id: 5, ...accountTransactionMixied, - }); - await tenantFactory.create('account_transaction', { - debit: 2000, credit: 0, account_id: 2, ...accountTransactionMixied, - }); - await tenantFactory.create('account_transaction', { - debit: 2000, credit: 0, account_id: 2, ...accountTransactionMixied, - }); - - // Income Journal. - // 2000 Credit - Income account. - // 2000 Debit - Bank account. - await tenantFactory.create('account_transaction', { - credit: 2000, account_id: 4, ...accountTransactionMixied - }); - await tenantFactory.create('account_transaction', { - debit: 2000, credit: 0, account_id: 2, ...accountTransactionMixied, - }); - - // ----------------------------------------- - // Bank account balance = 5000 | Opening balance account balance = 4000 - // Expense account balance = 1000 | Income account balance = 2000 - }); - - describe('routes: `financial_statements/balance_sheet`', () => { - it('Should response unauthorzied in case the user was not authorized.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .send(); - - expect(res.status).equals(401); - }); - - it('Should retrieve query of the balance sheet with default values.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - display_columns_by: 'year', - from_date: '2020-01-01', - to_date: '2020-02-01', - }) - .send(); - - expect(res.body.query.display_columns_by).equals('year'); - expect(res.body.query.from_date).equals('2020-01-01'); - expect(res.body.query.to_date).equals('2020-02-01'); - - expect(res.body.query.number_format.no_cents).equals(false); - expect(res.body.query.number_format.divide_1000).equals(false); - - expect(res.body.query.none_zero).equals(false); - }); - - it('Should retrieve assets and liabilities/equity section.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - display_columns_by: 'year', - }) - .send(); - - expect(res.body.balance_sheet[0].name).equals('Assets'); - expect(res.body.balance_sheet[1].name).equals('Liabilities and Equity'); - - expect(res.body.balance_sheet[0].section_type).equals('assets'); - expect(res.body.balance_sheet[1].section_type).equals('liabilities_equity'); - - expect(res.body.balance_sheet[0].type).equals('section'); - expect(res.body.balance_sheet[1].type).equals('section'); - }); - - it('Should retrieve assets and liabilities/equity total of each section.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - to_date: '2020-12-10', - }) - .send(); - - expect(res.body.balance_sheet[0].total.amount).equals(5000); - expect(res.body.balance_sheet[1].total.amount).equals(4000); - }); - - it('Should retrieve the asset and liabilities/equity accounts.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - display_columns_type: 'total', - from_date: '2012-01-01', - to_date: '2032-02-02', - }) - .send(); - - expect(res.body.balance_sheet[0].children).to.be.a('array'); - expect(res.body.balance_sheet[0].children).to.be.a('array'); - - expect(res.body.balance_sheet[0].children.length).is.not.equals(0); - expect(res.body.balance_sheet[1].children.length).is.not.equals(0); - - expect(res.body.balance_sheet[1].children[0].children.length).is.not.equals(0); - expect(res.body.balance_sheet[1].children[1].children.length).is.not.equals(0); - }); - - it('Should retrieve assets/liabilities total balance between the given date range.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - display_columns_type: 'total', - from_date: '2012-01-01', - to_date: '2032-02-02', - }) - .send(); - - expect(res.body.accounts[0].children).include.something.deep.equals({ - id: 1001, - index: null, - name: debitAccount.name, - code: debitAccount.code, - parentAccountId: null, - children: [], - total: { formatted_amount: 5000, amount: 5000, date: '2032-02-02' } - }); - - expect(res.body.accounts[1].children).include.something.deep.equals({ - id: 1000, - index: null, - name: creditAccount.name, - code: creditAccount.code, - parentAccountId: null, - children: [], - total: { formatted_amount: 4000, amount: 4000, date: '2032-02-02' } - }); - }); - - it('Should retrieve asset/liabilities balance sheet with display columns by `year`.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - display_columns_by: 'year', - display_columns_type: 'date_periods', - from_date: '2012-01-01', - to_date: '2018-02-02', - }) - .send(); - - expect(res.body.accounts[0].children[0].total_periods.length).equals(7); - expect(res.body.accounts[1].children[0].total_periods.length).equals(7); - - expect(res.body.accounts[0].children[0].total_periods).deep.equals([ - { - amount: 0, - formatted_amount: 0, - date: '2012', - }, - { - amount: 0, - formatted_amount: 0, - date: '2013', - }, - { - amount: 0, - formatted_amount: 0, - date: '2014', - }, - { - amount: 0, - formatted_amount: 0, - date: '2015', - }, - { - amount: 0, - formatted_amount: 0, - date: '2016', - }, - { - amount: 0, - formatted_amount: 0, - date: '2017', - }, - { - amount: 0, - formatted_amount: 0, - date: '2018', - }, - ]); - }); - - it('Should retrieve balance sheet with display columns by `day`.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - display_columns_by: 'day', - display_columns_type: 'date_periods', - from_date: '2020-01-08', - to_date: '2020-01-12', - }) - .send(); - - expect(res.body.accounts[0].children).include.something.deep.equals({ - id: debitAccount.id, - index: debitAccount.index, - name: debitAccount.name, - code: debitAccount.code, - parentAccountId: null, - children: [], - total_periods: [ - { date: '2020-01-08', formatted_amount: 0, amount: 0 }, - { date: '2020-01-09', formatted_amount: 0, amount: 0 }, - { date: '2020-01-10', formatted_amount: 5000, amount: 5000 }, - { date: '2020-01-11', formatted_amount: 5000, amount: 5000 }, - { date: '2020-01-12', formatted_amount: 5000, amount: 5000 }, - ], - total: { formatted_amount: 5000, amount: 5000, date: '2020-01-12' } - }); - expect(res.body.accounts[1].children).include.something.deep.equals({ - id: creditAccount.id, - index: creditAccount.index, - name: creditAccount.name, - code: creditAccount.code, - parentAccountId: null, - children: [], - total_periods: [ - { date: '2020-01-08', formatted_amount: 0, amount: 0 }, - { date: '2020-01-09', formatted_amount: 0, amount: 0 }, - { date: '2020-01-10', formatted_amount: 4000, amount: 4000 }, - { date: '2020-01-11', formatted_amount: 4000, amount: 4000 }, - { date: '2020-01-12', formatted_amount: 4000, amount: 4000 } - ], - total: { formatted_amount: 4000, amount: 4000, date: '2020-01-12' } - }); - }); - - it('Should retrieve the balance sheet with display columns by `month`.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - display_columns_by: 'month', - display_columns_type: 'date_periods', - from_date: '2019-07-01', - to_date: '2020-06-30', - }) - .send(); - - expect(res.body.accounts[0].children).include.something.deep.equals({ - id: debitAccount.id, - index: debitAccount.index, - name: debitAccount.name, - code: debitAccount.code, - parentAccountId: null, - children: [], - total_periods: [ - { date: '2019-07', formatted_amount: 0, amount: 0 }, - { date: '2019-08', formatted_amount: 0, amount: 0 }, - { date: '2019-09', formatted_amount: 0, amount: 0 }, - { date: '2019-10', formatted_amount: 0, amount: 0 }, - { date: '2019-11', formatted_amount: 0, amount: 0 }, - { date: '2019-12', formatted_amount: 0, amount: 0 }, - { date: '2020-01', formatted_amount: 5000, amount: 5000 }, - { date: '2020-02', formatted_amount: 5000, amount: 5000 }, - { date: '2020-03', formatted_amount: 5000, amount: 5000 }, - { date: '2020-04', formatted_amount: 5000, amount: 5000 }, - { date: '2020-05', formatted_amount: 5000, amount: 5000 }, - { date: '2020-06', formatted_amount: 5000, amount: 5000 }, - ], - total: { formatted_amount: 5000, amount: 5000, date: '2020-06-30' } - }); - }); - - it('Should retrieve the balance sheet with display columns `quarter`.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - display_columns_by: 'quarter', - display_columns_type: 'date_periods', - from_date: '2020-01-01', - to_date: '2020-12-31', - }) - .send(); - - expect(res.body.accounts[0].children).include.something.deep.equals({ - id: debitAccount.id, - index: debitAccount.index, - name: debitAccount.name, - code: debitAccount.code, - parentAccountId: null, - children: [], - total_periods: [ - { date: '2020-03', formatted_amount: 5000, amount: 5000 }, - { date: '2020-06', formatted_amount: 5000, amount: 5000 }, - { date: '2020-09', formatted_amount: 5000, amount: 5000 }, - { date: '2020-12', formatted_amount: 5000, amount: 5000 }, - ], - total: { formatted_amount: 5000, amount: 5000, date: '2020-12-31' }, - }); - }); - - it('Should retrieve the balance sheet amounts without cents.', async () => { - await tenantFactory.create('account_transaction', { - debit: 0.25, credit: 0, account_id: debitAccount.id, date: '2020-1-10', - }); - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - display_columns_by: 'quarter', - display_columns_type: 'date_periods', - from_date: '2020-01-01', - to_date: '2020-12-31', - number_format: { - no_cents: true, - }, - }) - .send(); - - expect(res.body.accounts[0].children).include.something.deep.equals({ - id: debitAccount.id, - index: debitAccount.index, - name: debitAccount.name, - code: debitAccount.code, - parentAccountId: null, - children: [], - total_periods: [ - { date: '2020-03', formatted_amount: 5000, amount: 5000.25 }, - { date: '2020-06', formatted_amount: 5000, amount: 5000.25 }, - { date: '2020-09', formatted_amount: 5000, amount: 5000.25 }, - { date: '2020-12', formatted_amount: 5000, amount: 5000.25 }, - ], - total: { formatted_amount: 5000, amount: 5000.25, date: '2020-12-31' }, - }); - }); - - it('Should retrieve the balance sheet amounts divided on 1000.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - display_columns_by: 'quarter', - display_columns_type: 'date_periods', - from_date: '2020', - to_date: '2021', - number_format: { - divide_1000: true, - }, - }) - .send(); - - expect(res.body.accounts[0].children).include.something.deep.equals({ - id: debitAccount.id, - index: debitAccount.index, - name: debitAccount.name, - code: debitAccount.code, - parentAccountId: null, - children: [], - total_periods: [ - { date: '2020-03', formatted_amount: 5, amount: 5000 }, - { date: '2020-06', formatted_amount: 5, amount: 5000 }, - { date: '2020-09', formatted_amount: 5, amount: 5000 }, - { date: '2020-12', formatted_amount: 5, amount: 5000 }, - { date: '2021-03', formatted_amount: 5, amount: 5000 }, - ], - total: { formatted_amount: 5, amount: 5000, date: '2021' }, - }); - }); - - it('Should not retrieve accounts has no transactions between the given date range in case query none_zero is true.', async () => { - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - display_columns_by: 'quarter', - from_date: '2002', - to_date: '2003', - number_format: { - divide_1000: true, - }, - none_zero: true, - }) - .send(); - - expect(res.body.accounts[0].children.length).equals(0); - expect(res.body.accounts[1].children.length).equals(0); - }); - - it('Should retrieve accounts in nested structure parent and children accounts.', async () => { - const childAccount = await tenantFactory.create('account', { - parent_account_id: debitAccount.id, - account_type_id: 1 - }); - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - none_zero: false, - account_ids: [childAccount.id, debitAccount.id] - }) - .send(); - - expect(res.body.accounts[0].children).include.something.deep.equals({ - id: debitAccount.id, - index: null, - name: debitAccount.name, - code: debitAccount.code, - parentAccountId: null, - total: { formatted_amount: 5000, amount: 5000, date: '2020-12-31' }, - children: [ - { - id: childAccount.id, - index: null, - name: childAccount.name, - code: childAccount.code, - parentAccountId: debitAccount.id, - total: { formatted_amount: 0, amount: 0, date: '2020-12-31' }, - children: [], - } - ] - }); - }); - - it('Should parent account balance sumation of total balane all children accounts.', async () => { - const childAccount = await tenantFactory.create('account', { - parent_account_id: debitAccount.id, - account_type_id: 1 - }); - await tenantFactory.create('account_transaction', { - credit: 0, debit: 1000, account_id: childAccount.id, date: '2020-1-10' - }); - - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - none_zero: false, - account_ids: [childAccount.id, debitAccount.id] - }) - .send(); - - expect(res.body.accounts[0].children[0].total.amount).equals(6000); - expect(res.body.accounts[0].children[0].total.formatted_amount).equals(6000); - }); - - it('Should parent account balance sumation of total periods amounts all children accounts.', async () => { - const childAccount = await tenantFactory.create('account', { - parent_account_id: debitAccount.id, - account_type_id: 1 - }); - await tenantFactory.create('account_transaction', { - credit: 0, debit: 1000, account_id: childAccount.id, date: '2020-2-10' - }); - - const res = await request() - .get('/api/financial_statements/balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - none_zero: false, - account_ids: [childAccount.id, debitAccount.id], - display_columns_type: 'date_periods', - display_columns_by: 'month', - from_date: '2020-01-01', - to_date: '2020-12-12', - }) - .send(); - - expect(res.body.accounts[0].children[0].total_periods).deep.equals([ - { amount: 5000, formatted_amount: 5000, date: '2020-01' }, - { amount: 6000, formatted_amount: 6000, date: '2020-02' }, - { amount: 6000, formatted_amount: 6000, date: '2020-03' }, - { amount: 6000, formatted_amount: 6000, date: '2020-04' }, - { amount: 6000, formatted_amount: 6000, date: '2020-05' }, - { amount: 6000, formatted_amount: 6000, date: '2020-06' }, - { amount: 6000, formatted_amount: 6000, date: '2020-07' }, - { amount: 6000, formatted_amount: 6000, date: '2020-08' }, - { amount: 6000, formatted_amount: 6000, date: '2020-09' }, - { amount: 6000, formatted_amount: 6000, date: '2020-10' }, - { amount: 6000, formatted_amount: 6000, date: '2020-11' }, - { amount: 6000, formatted_amount: 6000, date: '2020-12' } - ]) - }); - }); -}); diff --git a/server/tests/routes/bill_payments.test.js b/server/tests/routes/bill_payments.test.js deleted file mode 100644 index 5c7440125..000000000 --- a/server/tests/routes/bill_payments.test.js +++ /dev/null @@ -1,113 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - -describe('route: `/api/purchases/bill_payments`', () => { - describe('POST: `/api/purchases/bill_payments`', () => { - it('Should `payment_date` be required.', async () => { - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'payment_date', - location: 'body', - }); - }); - - it('Should `payment_account_id` be required.', async () => { - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'payment_account_id', - location: 'body', - }); - }); - - it('Should `payment_number` be required.', async () => { - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'payment_number', - location: 'body', - }); - }); - - it('Should `entries.*.item_id` be required.', async () => { - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].item_id', - location: 'body', - }); - }); - - it('Should `payment_number` be unique on the storage.', () => { - - }); - - it('Should `payment_account_id` be exists on the storage.', () => { - - }); - - it('Should `entries.*.item_id` be exists on the storage.', () => { - - }); - - it('Should store the given bill payment to the storage.', () => { - - }); - }); - - describe('POST: `/api/purchases/bill_payments/:id`', () => { - it('Should bill payment be exists on the storage.', () => { - - }); - }); - - describe('DELETE: `/api/purchases/bill_payments/:id`', () => { - it('Should bill payment be exists on the storage.', () => { - - }); - - it('Should delete the given bill payment from the storage.', () => { - - }); - }); - - describe('GET: `/api/purchases/bill_payments/:id`', () => { - it('Should bill payment be exists on the storage.', () => { - - }); - }); -}); \ No newline at end of file diff --git a/server/tests/routes/bills.test.js b/server/tests/routes/bills.test.js deleted file mode 100644 index 5ace5cec2..000000000 --- a/server/tests/routes/bills.test.js +++ /dev/null @@ -1,217 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - -describe('route: `/api/purchases/bills`', () => { - describe('POST: `/api/purchases/bills`', () => { - it('Should `bill_number` be required.', async () => { - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'bill_number', - location: 'body', - }); - }); - - it('Should `vendor_id` be required.', async () => { - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'vendor_id', - location: 'body', - }); - }); - - it('Should `bill_date` be required.', async () => { - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'bill_date', - location: 'body', - }); - }); - - it('Should `entries` be minimum one', async () => { - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries', - location: 'body', - }); - }); - - it('Should `entries.*.item_id be required.', async () => { - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{ - - }] - }); - expect(res.status).equals(422); - expecvt(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].item_id', - location: 'body' - }); - }); - - it('Should `entries.*.rate` be required.', async () => { - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{ - - }] - }); - expect(res.status).equals(422); - expecvt(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].rate', - location: 'body' - }); - }); - - it('Should `entries.*.discount` be required.', () => { - - }); - - it('Should entries.*.quantity be required.', () => { - - }); - - - it('Should vendor_id be exists on the storage.', async () => { - const vendor = await tenantFactory.create('vendor'); - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - vendor_id: vendor.id, - bill_number: '123', - bill_date: '2020-02-02', - entries: [{ - item_id: 1, - rate: 1, - quantity: 1, - }] - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'VENDOR.ID.NOT.FOUND', code: 300, - }) - }); - - it('Should entries.*.item_id be exists on the storage.', async () => { - const item = await tenantFactory.create('item'); - const vendor = await tenantFactory.create('vendor'); - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - vendor_id: vendor.id, - bill_number: '123', - bill_date: '2020-02-02', - entries: [{ - item_id: 123123, - rate: 1, - quantity: 1, - }] - }); - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'ITEMS.IDS.NOT.FOUND', code: 400, - }); - }); - - it('Should validate the bill number is not exists on the storage.', async () => { - const item = await tenantFactory.create('item'); - const vendor = await tenantFactory.create('vendor'); - const bill = await tenantFactory.create('bill', { bill_number: '123' }); - - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - vendor_id: vendor.id, - bill_number: '123', - bill_date: '2020-02-02', - entries: [{ - item_id: item.id, - rate: 1, - quantity: 1, - }] - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'BILL.NUMBER.EXISTS', code: 500, - }) - }) - - it('Should store the given bill details with associated entries to the storage.', async () => { - const item = await tenantFactory.create('item'); - const vendor = await tenantFactory.create('vendor'); - const res = await request() - .post('/api/purchases/bills') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - vendor_id: vendor.id, - bill_number: '123', - bill_date: '2020-02-02', - entries: [{ - item_id: item.id, - rate: 1, - quantity: 1, - }] - }); - - expect(res.status).equals(200); - }); - - - }); - - describe('DELETE: `/api/purchases/bills/:id`', () => { - - }); -}); \ No newline at end of file diff --git a/server/tests/routes/currencies.test.js b/server/tests/routes/currencies.test.js deleted file mode 100644 index a6583c0cd..000000000 --- a/server/tests/routes/currencies.test.js +++ /dev/null @@ -1,191 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import Currency from 'models/Currency'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('route: /currencies/', () => { - describe('POST: `/api/currencies`', () => { - it('Should response unauthorized in case user was not logged in.', async () => { - const res = await request() - .post('/api/currencies') - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should `currency_name` be required.', async () => { - const res = await request() - .post('/api/currencies') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'currency_name', location: 'body', - }); - }); - - it('Should `currency_code` be required.', async () => { - const res = await request() - .post('/api/currencies') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'currency_code', location: 'body', - }); - }); - - it('Should response currency code is duplicated.', async () => { - tenantFactory.create('currency', { currency_code: 'USD' }); - - const res = await request() - .post('/api/currencies') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - currency_code: 'USD', - currency_name: 'Dollar', - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'CURRENCY.CODE.ALREADY.EXISTS', code: 100, - }); - }); - - it('Should insert currency details to the storage.', async () => { - const res = await request() - .post('/api/currencies') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - currency_code: 'USD', - currency_name: 'Dollar', - }); - - const foundCurrency = await Currency.tenant().query().where('currency_code', 'USD'); - - expect(foundCurrency.length).equals(1); - expect(foundCurrency[0].currencyCode).equals('USD'); - expect(foundCurrency[0].currencyName).equals('Dollar'); - }); - - it('Should response success with correct data.', async () => { - const res = await request() - .post('/api/currencies') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - currency_code: 'USD', - currency_name: 'Dollar', - }); - - expect(res.status).equals(200); - }); - }); - - describe('DELETE: `/api/currencies/:currency_code`', () => { - it('Should delete the given currency code from the storage.', async () => { - const currency = await tenantFactory.create('currency'); - const res = await request() - .delete(`/api/currencies/${currency.currencyCode}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - - const foundCurrency = await Currency.tenant().query().where('currency_code', 'USD'); - expect(foundCurrency.length).equals(0); - }); - }); - - describe('POST: `/api/currencies/:id`', () => { - it('Should `currency_name` be required.', async () => { - const currency = await tenantFactory.create('currency'); - const res = await request() - .post(`/api/currencies/${currency.code}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'currency_name', location: 'body', - }); - }); - - it('Should `currency_code` be required.', async () => { - const currency = await tenantFactory.create('currency'); - const res = await request() - .post(`/api/currencies/${currency.code}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'currency_code', location: 'body', - }); - }); - - it('Should response currency code is duplicated.', async () => { - const currency1 = await tenantFactory.create('currency'); - const currency2 = await tenantFactory.create('currency'); - - const res = await request() - .post(`/api/currencies/${currency2.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - currency_code: currency1.currencyCode, - currency_name: 'Dollar', - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'CURRENCY.CODE.ALREADY.EXISTS', code: 100, - }); - }); - - it('Should update currency details of the given currency on the storage.', async () => { - const currency1 = await tenantFactory.create('currency'); - const currency2 = await tenantFactory.create('currency'); - - const res = await request() - .post(`/api/currencies/${currency2.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - currency_code: 'ABC', - currency_name: 'Name', - }); - - const foundCurrency = await Currency.tenant().query().where('currency_code', 'ABC'); - - expect(foundCurrency.length).equals(1); - expect(foundCurrency[0].currencyCode).equals('ABC'); - expect(foundCurrency[0].currencyName).equals('Name'); - }); - - it('Should response success with correct data.', () => { - - }); - }) -}); diff --git a/server/tests/routes/customers.test.js b/server/tests/routes/customers.test.js deleted file mode 100644 index 2a3eb327d..000000000 --- a/server/tests/routes/customers.test.js +++ /dev/null @@ -1,250 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import Currency from 'models/Currency'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; -import Customer from '../../src/models/Customer'; - -describe('route: `/customers`', () => { - describe('POST: `/customers`', () => { - it('Should response unauthorized in case the user was not logged in.', async () => { - const res = await request() - .post('/api/customers') - .send({}); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should `display_name` be required field.', async () => { - const res = await request() - .post('/api/customers') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'display_name', location: 'body', - }) - }); - - it('Should `customer_type` be required field', async () => { - const res = await request() - .post('/api/customers') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'customer_type', location: 'body', - }); - }); - - it('Should store the customer data to the storage.', async () => { - const res = await request() - .post('/api/customers') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_type: 'business', - - first_name: 'Ahmed', - last_name: 'Bouhuolia', - - company_name: 'Bigcapital', - - display_name: 'Ahmed Bouhuolia, Bigcapital', - - email: 'a.bouhuolia@live.com', - work_phone: '0927918381', - personal_phone: '0925173379', - - billing_address_city: 'Tripoli', - billing_address_country: 'Libya', - billing_address_email: 'a.bouhuolia@live.com', - billing_address_state: 'State Tripoli', - billing_address_zipcode: '21892', - - shipping_address_city: 'Tripoli', - shipping_address_country: 'Libya', - shipping_address_email: 'a.bouhuolia@live.com', - shipping_address_state: 'State Tripoli', - shipping_address_zipcode: '21892', - - note: '__desc__', - - active: true, - }); - - expect(res.status).equals(200); - - const foundCustomer = await Customer.tenant().query().where('id', res.body.id); - - expect(foundCustomer[0].customerType).equals('business'); - expect(foundCustomer[0].firstName).equals('Ahmed'); - expect(foundCustomer[0].lastName).equals('Bouhuolia'); - expect(foundCustomer[0].companyName).equals('Bigcapital'); - expect(foundCustomer[0].displayName).equals('Ahmed Bouhuolia, Bigcapital'); - - expect(foundCustomer[0].email).equals('a.bouhuolia@live.com'); - - expect(foundCustomer[0].workPhone).equals('0927918381'); - expect(foundCustomer[0].personalPhone).equals('0925173379'); - - expect(foundCustomer[0].billingAddressCity).equals('Tripoli'); - expect(foundCustomer[0].billingAddressCountry).equals('Libya'); - expect(foundCustomer[0].billingAddressEmail).equals('a.bouhuolia@live.com'); - expect(foundCustomer[0].billingAddressState).equals('State Tripoli'); - expect(foundCustomer[0].billingAddressZipcode).equals('21892'); - - expect(foundCustomer[0].shippingAddressCity).equals('Tripoli'); - expect(foundCustomer[0].shippingAddressCountry).equals('Libya'); - expect(foundCustomer[0].shippingAddressEmail).equals('a.bouhuolia@live.com'); - expect(foundCustomer[0].shippingAddressState).equals('State Tripoli'); - expect(foundCustomer[0].shippingAddressZipcode).equals('21892'); - }); - }); - - describe('GET: `/customers/:id`', () => { - it('Should response not found in case the given customer id was not exists on the storage.', async () => { - const res = await request() - .get('/api/customers/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMER.NOT.FOUND', code: 200, - }); - }); - }); - - describe('GET: `customers`', () => { - it('Should response customers items', async () => { - await tenantFactory.create('customer'); - await tenantFactory.create('customer'); - - const res = await request() - .get('/api/customers') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.body.customers.results.length).equals(2); - }); - }); - - describe('DELETE: `/customers/:id`', () => { - it('Should response not found in case the given customer id was not exists on the storage.', async () => { - const res = await request() - .delete('/api/customers/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMER.NOT.FOUND', code: 200, - }); - }); - - it('Should delete the given customer from the storage.', async () => { - const customer = await tenantFactory.create('customer'); - const res = await request() - .delete(`/api/customers/${customer.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - - const foundCustomer = await Customer.tenant().query().where('id', customer.id); - expect(foundCustomer.length).equals(0); - }) - }); - - describe('POST: `/customers/:id`', () => { - it('Should response customer not found', async () => { - const res = await request() - .post('/api/customers/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_type: 'business', - display_name: 'Ahmed Bouhuolia, Bigcapital', - }); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMER.NOT.FOUND', code: 200, - }); - }); - - it('Should update details of the given customer.', async () => { - const customer = await tenantFactory.create('customer'); - const res = await request() - .post(`/api/customers/${customer.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_type: 'business', - display_name: 'Ahmed Bouhuolia, Bigcapital', - }); - - expect(res.status).equals(200); - const foundCustomer = await Customer.tenant().query().where('id', res.body.id); - - expect(foundCustomer.length).equals(1); - expect(foundCustomer[0].customerType).equals('business'); - expect(foundCustomer[0].displayName).equals('Ahmed Bouhuolia, Bigcapital'); - }) - }); - - describe('DELETE: `customers`', () => { - it('Should response customers ids not found.', async () => { - const res = await request() - .delete('/api/customers') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [100, 200], - }) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMERS.NOT.FOUND', code: 200, - }); - }); - - it('Should delete the given customers.', async () => { - const customer1 = await tenantFactory.create('customer'); - const customer2 = await tenantFactory.create('customer'); - - const res = await request() - .delete('/api/customers') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [customer1.id, customer2.id], - }) - .send(); - - const foundCustomers = await Customer.tenant().query() - .whereIn('id', [customer1.id, customer2.id]); - - expect(res.status).equals(200); - expect(foundCustomers.length).equals(0); - }); - }) -}); diff --git a/server/tests/routes/exchange_rates.test.js b/server/tests/routes/exchange_rates.test.js deleted file mode 100644 index c655ab316..000000000 --- a/server/tests/routes/exchange_rates.test.js +++ /dev/null @@ -1,230 +0,0 @@ -import moment from 'moment'; -import { - request, - expect, -} from '~/testInit'; -import ExchangeRate from '../../src/models/ExchangeRate'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('route: /exchange_rates/', () => { - describe('POST: `/api/exchange_rates`', () => { - it('Should response unauthorized in case the user was not logged in.', async () => { - const res = await request() - .post('/api/exchange_rates') - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should `currency_code` be required.', async () => { - const res = await request() - .post('/api/exchange_rates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'currency_code', location: 'body', - }); - }); - - it('Should `exchange_rate` be required.', async () => { - const res = await request() - .post('/api/exchange_rates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'exchange_rate', location: 'body', - }); - }); - - it('Should date be required', async () => { - const res = await request() - .post('/api/exchange_rates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'date', location: 'body', - }); - }); - - it('Should response date and currency code is already exists.', async () => { - await tenantFactory.create('exchange_rate', { - date: '2020-02-02', - currency_code: 'USD', - exchange_rate: 4.4, - }); - const res = await request() - .post('/api/exchange_rates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: '2020-02-02', - currency_code: 'USD', - exchange_rate: 4.4, - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'EXCHANGE.RATE.DATE.PERIOD.DEFINED', code: 200, - }); - }); - - it('Should save the given exchange rate to the storage.', async () => { - const res = await request() - .post('/api/exchange_rates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: '2020-02-02', - currency_code: 'USD', - exchange_rate: 4.4, - }); - expect(res.status).equals(200); - - const foundExchangeRate = await ExchangeRate.tenant().query() - .where('currency_code', 'USD'); - - expect(foundExchangeRate.length).equals(1); - expect( - moment(foundExchangeRate[0].date).format('YYYY-MM-DD'), - ).equals('2020-02-02'); - expect(foundExchangeRate[0].currencyCode).equals('USD'); - expect(foundExchangeRate[0].exchangeRate).equals(4.4); - }); - }); - - describe('GET: `/api/exchange_rates', () => { - it('Should retrieve all exchange rates with pagination meta.', async () => { - await tenantFactory.create('exchange_rate'); - await tenantFactory.create('exchange_rate'); - await tenantFactory.create('exchange_rate'); - - const res = await request() - .get('/api/exchange_rates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - expect(res.body.exchange_rates.results.length).equals(3); - }); - }); - - describe('POST: `/api/exchange_rates/:id`', () => { - it('Should response the given exchange rate not found.', async () => { - const res = await request() - .post('/api/exchange_rates/100') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - date: '2020-02-02', - currency_code: 'USD', - exchange_rate: 4.4, - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'EXCHANGE.RATE.NOT.FOUND', code: 200, - }); - }); - - it('Should update exchange rate of the given id on the storage.', async () => { - const exRate = await tenantFactory.create('exchange_rate'); - const res = await request() - .post(`/api/exchange_rates/${exRate.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - exchange_rate: 4.4, - }); - expect(res.status).equals(200); - - const foundExchangeRate = await ExchangeRate.tenant().query() - .where('id', exRate.id); - - expect(foundExchangeRate.length).equals(1); - expect(foundExchangeRate[0].exchangeRate).equals(4.4); - }); - }); - - describe('DELETE: `/api/exchange_rates/:id`', () => { - it('Should response the given exchange rate id not found.', async () => { - const res = await request() - .delete('/api/exchange_rates/100') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'EXCHANGE.RATE.NOT.FOUND', code: 200, - }); - }); - - it('Should delete the given exchange rate id from the storage.', async () => { - const exRate = await tenantFactory.create('exchange_rate'); - const res = await request() - .delete(`/api/exchange_rates/${exRate.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const foundRates = await ExchangeRate.tenant().query(); - expect(foundRates.length).equals(0); - }); - }); - - describe('DELETE: `/api/exchange_rates/bulk`', () => { - it('Should response the given exchange rates ids where not found.', async () => { - const res = await request() - .delete('/api/exchange_rates/bulk') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [12332, 32432], - }) - .send(); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'EXCHANGE.RATES.IS.NOT.FOUND', code: 200, ids: [12332, 32432], - }) - }); - - it('Should delete the given excahnge rates ids.', async () => { - const exRate = await tenantFactory.create('exchange_rate'); - const exRate2 = await tenantFactory.create('exchange_rate'); - - const res = await request() - .delete('/api/exchange_rates/bulk') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [exRate.id, exRate2.id], - }) - .send(); - - const foundExchangeRate = await ExchangeRate.tenant().query() - .whereIn('id', [exRate.id, exRate2.id]); - - expect(foundExchangeRate.length).equals(0); - }) - }); -}); diff --git a/server/tests/routes/expenses.test.js b/server/tests/routes/expenses.test.js deleted file mode 100644 index 17a4c4ac9..000000000 --- a/server/tests/routes/expenses.test.js +++ /dev/null @@ -1,739 +0,0 @@ -import moment from 'moment'; -import { pick } from 'lodash'; -import { - request, - expect, -} from '~/testInit'; -import Expense from 'models/Expense'; -import ExpenseCategory from 'models/ExpenseCategory'; -import AccountTransaction from 'models/AccountTransaction'; -import { - tenantWebsite, - tenantFactory, - loginRes, -} from '~/dbInit'; - -describe('routes: /expenses/', () => { - describe('POST `/expenses`', () => { - it('Should retrieve unauthorized access if the user was not authorized.', async () => { - const res = await request() - .post('/api/expenses') - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should categories total not be equals zero.', async () => { - const res = await request() - .post('/api/expenses') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - payment_date: moment().format('YYYY-MM-DD'), - reference_no: '', - payment_account_id: 0, - description: '', - publish: 1, - categories: [ - { - index: 1, - expense_account_id: 33, - amount: 1000, - description: '', - } - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'EXPENSE.ACCOUNTS.IDS.NOT.STORED', code: 400, ids: [33] - }); - }); - - it('Should expense accounts ids be stored in the storage.', async () => { - const res = await request() - .post('/api/expenses') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - payment_date: moment().format('YYYY-MM-DD'), - reference_no: '', - payment_account_id: 0, - description: '', - publish: 1, - categories: [ - { - index: 1, - expense_account_id: 22, - amount: 1000, - description: '', - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'EXPENSE.ACCOUNTS.IDS.NOT.STORED', code: 400, ids: [22], - }); - }); - - it('Should `payment_account_id` be in the storage.', async () => { - const res = await request() - .post('/api/expenses') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - payment_date: moment().format('YYYY-MM-DD'), - reference_no: '', - payment_account_id: 22, - description: '', - publish: 1, - categories: [ - { - index: 1, - expense_account_id: 22, - amount: 1000, - description: '', - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'PAYMENT.ACCOUNT.NOT.FOUND', code: 500, - }); - }); - - it('Should payment_account be required.', async () => { - const res = await request() - .post('/api/expenses') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - }); - - it('Should `categories.*.expense_account_id` be required.', async () => { - const res = await request() - .post('/api/expenses') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - - }); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'payment_account_id', location: 'body' - }); - }); - - it('Should expense transactions be stored on the storage.', async () => { - const paymentAccount = await tenantFactory.create('account'); - const expenseAccount = await tenantFactory.create('account'); - - const res = await request() - .post('/api/expenses') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - payment_date: moment().format('YYYY-MM-DD'), - reference_no: 'ABC', - payment_account_id: paymentAccount.id, - description: 'desc', - publish: 1, - categories: [ - { - index: 1, - expense_account_id: expenseAccount.id, - amount: 1000, - description: '', - }, - ], - }); - - const foundExpense = await Expense.tenant().query().where('id', res.body.id); - - expect(foundExpense.length).equals(1); - expect(foundExpense[0].referenceNo).equals('ABC'); - expect(foundExpense[0].paymentAccountId).equals(paymentAccount.id); - expect(foundExpense[0].description).equals('desc'); - expect(foundExpense[0].totalAmount).equals(1000); - }); - - it('Should expense categories transactions be stored on the storage.', async () => { - const paymentAccount = await tenantFactory.create('account'); - const expenseAccount = await tenantFactory.create('account'); - - const res = await request() - .post('/api/expenses') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - payment_date: moment().format('YYYY-MM-DD'), - reference_no: 'ABC', - payment_account_id: paymentAccount.id, - description: 'desc', - publish: 1, - categories: [ - { - index: 1, - expense_account_id: expenseAccount.id, - amount: 1000, - description: 'category desc', - }, - ], - }); - - const foundCategories = await ExpenseCategory.tenant().query().where('id', res.body.id); - - expect(foundCategories.length).equals(1); - expect(foundCategories[0].index).equals(1); - expect(foundCategories[0].expenseAccountId).equals(expenseAccount.id); - expect(foundCategories[0].amount).equals(1000); - expect(foundCategories[0].description).equals('category desc'); - }); - - it('Should save journal entries that associate to the expense transaction.', async () => { - const paymentAccount = await tenantFactory.create('account'); - const expenseAccount = await tenantFactory.create('account'); - - const res = await request() - .post('/api/expenses') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - payment_date: moment().format('YYYY-MM-DD'), - reference_no: 'ABC', - payment_account_id: paymentAccount.id, - description: 'desc', - publish: 1, - categories: [ - { - index: 1, - expense_account_id: expenseAccount.id, - amount: 1000, - description: 'category desc', - }, - ], - }); - - const transactions = await AccountTransaction.tenant().query() - .where('reference_id', res.body.id) - .where('reference_type', 'Expense'); - - const mappedTransactions = transactions.map(tr => ({ - ...pick(tr, ['credit', 'debit', 'referenceId', 'referenceType']), - })); - - expect(mappedTransactions[0]).deep.equals({ - credit: 1000, - debit: 0, - referenceType: 'Expense', - referenceId: res.body.id, - }); - expect(mappedTransactions[1]).deep.equals({ - credit: 0, - debit: 1000, - referenceType: 'Expense', - referenceId: res.body.id, - }); - expect(transactions.length).equals(2); - }) - }); - - describe('GET: `/expenses`', () => { - it('Should response unauthorized if the user was not logged in.', async () => { - const res = await request() - .post('/api/expenses') - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should retrieve expenses with pagination meta.', async () => { - await tenantFactory.create('expense'); - await tenantFactory.create('expense'); - - const res = await request() - .get('/api/expenses') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.body.expenses).that.is.an('object'); - expect(res.body.expenses.results).that.is.an('array'); - }); - - it('Should retrieve expenses based on view roles conditions of the custom view.', () => { - - }); - - it('Should sort expenses based on the given `column_sort_order` column on ASC direction.', () => { - - }); - }); - - describe('DELETE: `/expenses/:id`', () => { - it('Should response unauthorized if the user was not logged in.', async () => { - const res = await request() - .delete('/api/expenses') - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should response not found in case expense id was not exists on the storage.', async () => { - const res = await request() - .delete('/api/expenses/123321') - .set('organization-id', tenantWebsite.organizationId) - .set('x-access-token', loginRes.body.token) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'EXPENSE.NOT.FOUND', code: 200, - }); - }); - - it('Should delete the given expense transactions with associated categories.', async () => { - const expense = await tenantFactory.create('expense'); - - const res = await request() - .delete(`/api/expenses/${expense.id}`) - .set('organization-id', tenantWebsite.organizationId) - .set('x-access-token', loginRes.body.token) - .send(); - - expect(res.status).equals(200); - - const storedExpense = await Expense.tenant().query().where('id', expense.id); - const storedExpenseCategories = await ExpenseCategory.tenant().query().where('expense_id', expense.id); - - expect(storedExpense.length).equals(0); - expect(storedExpenseCategories.length).equals(0); - }); - - it('Should delete all journal entries that associated to the given expense.', async () => { - const expense = await tenantFactory.create('expense'); - - const trans = { reference_id: expense.id, reference_type: 'Expense' }; - await tenantFactory.create('account_transaction', trans); - await tenantFactory.create('account_transaction', trans); - - const res = await request() - .delete(`/api/expenses/${expense.id}`) - .set('organization-id', tenantWebsite.organizationId) - .set('x-access-token', loginRes.body.token) - .send(); - - const foundTransactions = await AccountTransaction.tenant().query() - .where('reference_type', 'Expense') - .where('reference_id', expense.id); - - expect(foundTransactions.length).equals(0); - }); - }); - - describe('GET: `/expenses/:id`', () => { - it('Should response unauthorized if the user was not logged in.', async () => { - const res = await request() - .get('/api/expenses/123') - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should response not found in case the given expense id was not exists in the storage.', async () => { - const res = await request() - .get(`/api/expenses/321`) - .set('organization-id', tenantWebsite.organizationId) - .set('x-access-token', loginRes.body.token) - .send(); - - expect(res.status).equals(404); - }); - - it('Should retrieve expense metadata and associated expense categories.', async () => { - const expense = await tenantFactory.create('expense'); - const expenseCategory = await tenantFactory.create('expense_category', { - expense_id: expense.id, - }) - const res = await request() - .get(`/api/expenses/${expense.id}`) - .set('organization-id', tenantWebsite.organizationId) - .set('x-access-token', loginRes.body.token) - .send(); - - expect(res.status).equals(200); - - expect(res.body.expense.id).is.a('number'); - expect(res.body.expense.paymentAccountId).is.a('number'); - expect(res.body.expense.totalAmount).is.a('number'); - expect(res.body.expense.userId).is.a('number'); - expect(res.body.expense.referenceNo).is.a('string'); - expect(res.body.expense.description).is.a('string'); - expect(res.body.expense.categories).is.a('array'); - - expect(res.body.expense.categories[0].id).is.a('number'); - expect(res.body.expense.categories[0].description).is.a('string'); - expect(res.body.expense.categories[0].expenseAccountId).is.a('number'); - }); - - it('Should retrieve journal entries with expense metadata.', async () => { - const expense = await tenantFactory.create('expense'); - const expenseCategory = await tenantFactory.create('expense_category', { - expense_id: expense.id, - }); - const trans = { reference_id: expense.id, reference_type: 'Expense' }; - await tenantFactory.create('account_transaction', trans); - await tenantFactory.create('account_transaction', trans); - - const res = await request() - .get(`/api/expenses/${expense.id}`) - .set('organization-id', tenantWebsite.organizationId) - .set('x-access-token', loginRes.body.token) - .send(); - - expect(res.body.expense.journalEntries).is.an('array'); - expect(res.body.expense.journalEntries.length).equals(2); - }); - }); - - describe('POST: `expenses/:id`', () => { - it('Should response unauthorized in case the user was not logged in.', async () => { - const expense = await tenantFactory.create('expense'); - const res = await request() - .post(`/api/expenses/${expense.id}`) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should response the given expense id not exists on the storage.', async () => { - const expenseAccount = await tenantFactory.create('account'); - - const res = await request() - .post('/api/expenses/1233') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - reference_no: '123', - payment_date: moment().format('YYYY-MM-DD'), - payment_account_id: 321, - publish: true, - categories: [ - { - expense_account_id: expenseAccount.id, - index: 1, - amount: 1000, - description: '', - }, - ], - }); - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'EXPENSE.NOT.FOUND', code: 200, - }); - }); - - it('Should response the given `payment_account_id` not exists.', async () => { - const expense = await tenantFactory.create('expense'); - const expenseAccount = await tenantFactory.create('account'); - - const res = await request() - .post(`/api/expenses/${expense.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - reference_no: '123', - payment_date: moment().format('YYYY-MM-DD'), - payment_account_id: 321, - publish: true, - categories: [ - { - expense_account_id: expenseAccount.id, - index: 1, - amount: 1000, - description: '', - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'PAYMENT.ACCOUNT.NOT.FOUND', code: 400, - }); - }); - - it('Should response the given `categories.*.expense_account_id` not exists.', async () => { - const paymentAccount = await tenantFactory.create('account'); - const expense = await tenantFactory.create('expense'); - - const res = await request() - .post(`/api/expenses/${expense.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - reference_no: '123', - payment_date: moment().format('YYYY-MM-DD'), - payment_account_id: paymentAccount.id, - publish: true, - categories: [ - { - index: 1, - expense_account_id: 100, - amount: 1000, - description: '', - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'EXPENSE.ACCOUNTS.IDS.NOT.FOUND', code: 600, ids: [100], - }); - }); - - it('Should response the total amount equals zero.', async () => { - const expense = await tenantFactory.create('expense'); - const expenseAccount = await tenantFactory.create('account'); - const paymentAccount = await tenantFactory.create('account'); - - const res = await request() - .post(`/api/expenses/${expense.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - reference_no: '123', - payment_date: moment().format('YYYY-MM-DD'), - payment_account_id: paymentAccount.id, - publish: true, - categories: [ - { - index: 1, - expense_account_id: expenseAccount.id, - amount: 0, - description: '', - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'TOTAL.AMOUNT.EQUALS.ZERO', code: 500, - }); - }); - - it('Should update the expense transaction.', async () => { - const expense = await tenantFactory.create('expense'); - const paymentAccount = await tenantFactory.create('account'); - const expenseAccount = await tenantFactory.create('account'); - - const res = await request() - .post(`/api/expenses/${expense.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - reference_no: '123', - payment_date: moment('2009-01-02').format('YYYY-MM-DD'), - payment_account_id: paymentAccount.id, - publish: true, - description: 'Updated description', - categories: [ - { - index: 1, - expense_account_id: expenseAccount.id, - amount: 3000, - description: '', - }, - ], - }); - expect(res.status).equals(200); - - const updatedExpense = await Expense.tenant().query() - .where('id', expense.id).first(); - - expect(updatedExpense.id).equals(expense.id); - expect(updatedExpense.referenceNo).equals('123'); - expect(updatedExpense.description).equals('Updated description'); - expect(updatedExpense.totalAmount).equals(3000); - expect(updatedExpense.paymentAccountId).equals(paymentAccount.id); - }); - - it('Should delete the expense categories that associated to the expense transaction.', async () => { - const expense = await tenantFactory.create('expense'); - const expenseCategory = await tenantFactory.create('expense_category', { - expense_id: expense.id, - }); - const paymentAccount = await tenantFactory.create('account'); - const expenseAccount = await tenantFactory.create('account'); - - const res = await request() - .post(`/api/expenses/${expense.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - reference_no: '123', - payment_date: moment('2009-01-02').format('YYYY-MM-DD'), - payment_account_id: paymentAccount.id, - publish: true, - description: 'Updated description', - categories: [ - { - index: 1, - expense_account_id: expenseAccount.id, - amount: 3000, - description: '', - }, - ], - }); - - const foundExpenseCategories = await ExpenseCategory.tenant() - .query().where('id', expenseCategory.id) - - expect(foundExpenseCategories.length).equals(0); - }); - - it('Should insert the expense categories to associated to the expense transaction.', async () => { - const expense = await tenantFactory.create('expense'); - const expenseCategory = await tenantFactory.create('expense_category', { - expense_id: expense.id, - }); - const paymentAccount = await tenantFactory.create('account'); - const expenseAccount = await tenantFactory.create('account'); - - const res = await request() - .post(`/api/expenses/${expense.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - reference_no: '123', - payment_date: moment('2009-01-02').format('YYYY-MM-DD'), - payment_account_id: paymentAccount.id, - publish: true, - description: 'Updated description', - categories: [ - { - index: 1, - expense_account_id: expenseAccount.id, - amount: 3000, - description: '__desc__', - }, - ], - }); - - const foundExpenseCategories = await ExpenseCategory.tenant() - .query() - .where('expense_id', expense.id) - - expect(foundExpenseCategories.length).equals(1); - expect(foundExpenseCategories[0].id).not.equals(expenseCategory.id); - }); - - it('Should update the expense categories that associated to the expense transactions.', async () => { - const expense = await tenantFactory.create('expense'); - const expenseCategory = await tenantFactory.create('expense_category', { - expense_id: expense.id, - }); - const paymentAccount = await tenantFactory.create('account'); - const expenseAccount = await tenantFactory.create('account'); - - const res = await request() - .post(`/api/expenses/${expense.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - reference_no: '123', - payment_date: moment('2009-01-02').format('YYYY-MM-DD'), - payment_account_id: paymentAccount.id, - publish: true, - description: 'Updated description', - categories: [ - { - id: expenseCategory.id, - index: 1, - expense_account_id: expenseAccount.id, - amount: 3000, - description: '__desc__', - }, - ], - }); - - const foundExpenseCategory = await ExpenseCategory.tenant().query() - .where('id', expenseCategory.id); - - expect(foundExpenseCategory.length).equals(1); - expect(foundExpenseCategory[0].expenseAccountId).equals(expenseAccount.id); - expect(foundExpenseCategory[0].description).equals('__desc__'); - expect(foundExpenseCategory[0].amount).equals(3000); - }); - }); - - describe('DELETE: `/api/expenses`', () => { - it('Should response not found expenses ids.', async () => { - const res = await request() - .delete('/api/expenses') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [100, 200], - }) - .send({}); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'EXPENSES.NOT.FOUND', code: 200, - }); - }); - - it('Should delete the given expenses ids.', async () => { - const expense1 = await tenantFactory.create('expense'); - const expense2 = await tenantFactory.create('expense'); - - const res = await request() - .delete('/api/expenses') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [expense1.id, expense2.id], - }) - .send({}); - - const foundExpenses = await Expense.tenant().query() - .whereIn('id', [expense1.id, expense2.id]); - - expect(res.status).equals(200); - expect(foundExpenses.length).equals(0); - }) - }); - - describe('POST: `/api/expenses/:id/publish`', () => { - it('Should publish the given expense.', async () => { - const expense = await tenantFactory.create('expense', { - published: 0, - }); - - const res = await request() - .post(`/api/expenses/${expense.id}/publish`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const foundExpense = await Expense.tenant().query() - .where('id', expense.id).first(); - - expect(res.status).equals(200); - expect(foundExpense.published).equals(1); - }); - }); -}); diff --git a/server/tests/routes/financial_statements.test.js b/server/tests/routes/financial_statements.test.js deleted file mode 100644 index e7a0893e1..000000000 --- a/server/tests/routes/financial_statements.test.js +++ /dev/null @@ -1,956 +0,0 @@ -import moment from 'moment'; -import { - request, - expect, -} from '~/testInit'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; -import { iteratee } from 'lodash'; - -let creditAccount; -let debitAccount; -let incomeAccount; -let incomeType; - -describe('routes: `/financial_statements`', () => { - beforeEach(async () => { - // Balance sheet types. - const assetType = await tenantFactory.create('account_type', { normal: 'debit', balance_sheet: true }); - const liabilityType = await tenantFactory.create('account_type', { normal: 'credit', balance_sheet: true }); - - // Income statement types. - incomeType = await tenantFactory.create('account_type', { normal: 'credit', income_sheet: true }); - const expenseType = await tenantFactory.create('account_type', { normal: 'debit', income_sheet: true }); - - // Assets & liabilites accounts. - creditAccount = await tenantFactory.create('account', { account_type_id: liabilityType.id }); - debitAccount = await tenantFactory.create('account', { account_type_id: assetType.id }); - - // Income && expenses accounts. - incomeAccount = await tenantFactory.create('account', { account_type_id: incomeType.id }); - const expenseAccount = await tenantFactory.create('account', { account_type_id: expenseType.id }); - // const income2Account = await tenantFactory.create('account', { account_type_id: incomeType.id }); - - const accountTransactionMixied = { date: '2020-1-10' }; - - // Expense -- - // 1000 Credit - Credit account - // 1000 Debit - expense account. - await tenantFactory.create('account_transaction', { - credit: 1000, debit: 0, account_id: debitAccount.id, referenceType: 'Expense', - referenceId: 1, ...accountTransactionMixied, - }); - await tenantFactory.create('account_transaction', { - credit: 0, debit: 1000, account_id: expenseAccount.id, referenceType: 'Expense', - referenceId: 1, ...accountTransactionMixied, - }); - - // Jounral - // 4000 Credit - liability account. - // 2000 Debit - Asset account - // 2000 Debit - Asset account - await tenantFactory.create('account_transaction', { - credit: 4000, debit: 0, account_id: creditAccount.id, ...accountTransactionMixied, - }); - await tenantFactory.create('account_transaction', { - debit: 2000, credit: 0, account_id: debitAccount.id, ...accountTransactionMixied, - }); - await tenantFactory.create('account_transaction', { - debit: 2000, credit: 0, account_id: debitAccount.id, ...accountTransactionMixied, - }); - - // Income Journal. - // 2000 Credit - Income account. - // 2000 Debit - Asset account. - await tenantFactory.create('account_transaction', { - credit: 2000, account_id: incomeAccount.id, ...accountTransactionMixied - }); - await tenantFactory.create('account_transaction', { - debit: 2000, credit: 0, account_id: debitAccount.id, ...accountTransactionMixied, - }); - - // ----------------------------------------- - // Assets account balance = 5000 | Libility account balance = 4000 - // Expense account balance = 1000 | Income account balance = 2000 - }); - - - describe('routes: `/financial_statements/journal`', () => { - it('Should response unauthorized in case the user was not authorized.', async () => { - const res = await request() - .get('/api/financial_statements/journal') - .send(); - - expect(res.status).equals(401); - }); - - it('Should retrieve ledger sheet transactions grouped by reference type and id.', async () => { - const res = await request() - .get('/api/financial_statements/journal') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - expect(res.body.journal.length).to.be.at.least(1); - - expect(res.body.journal[0].credit).to.be.a('number'); - expect(res.body.journal[0].debit).to.be.a('number'); - expect(res.body.journal[0].entries).to.be.a('array'); - expect(res.body.journal[0].id).to.be.a('string'); - - expect(res.body.journal[0].entries[0].credit).to.be.a('number'); - expect(res.body.journal[0].entries[0].debit).to.be.a('number'); - }); - - it('Should retrieve transactions between date range.', async () => { - const res = await request() - .get('/api/financial_statements/journal') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2018-01-01', - to_date: '2019-01-01', - }) - .send(); - - expect(res.body.journal.length).equals(0); - }); - - it('Should retrieve transactions that associated to the queried accounts.', async () => { - const res = await request() - .get('/api/financial_statements/journal') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - account_ids: [creditAccount.id], - }) - .send(); - - expect(res.body.journal[0].entries.length).equals(1); - expect(res.body.journal[0].entries[0].account_id).equals(creditAccount.id); - - expect(res.body.journal.length).equals(1); - }); - - it('Should retrieve tranasactions with the given types.', async () => { - const res = await request() - .get('/api/financial_statements/journal') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - transaction_types: ['Expense'], - }); - - expect(res.body.journal.length).equals(1); - }); - - it('Should retrieve transactions with range amount.', async () => { - const res = await request() - .get('/api/financial_statements/journal') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_range: 2000, - to_range: 2000, - }) - .send(); - - expect(res.body.journal[0].credit).satisfy((credit) => { - return credit === 0 || credit >= 2000; - }); - expect(res.body.journal[0].debit).satisfy((debit) => { - return debit === 0 || debit >= 2000; - }); - }); - - it('Should format credit and debit to no cents of retrieved transactions.', async () => { - - }); - - it('Should divide credit/debit amount on 1000', async () => { - const res = await request() - .get('/api/financial_statements/journal') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - number_format: { - divide_1000: true, - }, - }) - .send(); - - const journal = res.body.journal.find((j) => j.id === '1-Expense'); - - expect(journal.formatted_credit).equals(1); - expect(journal.formatted_debit).equals(1); - }); - }); - - describe('routes: `/financial_statements/general_ledger`', () => { - it('Should response unauthorized in case the user was not authorized.', async () => { - const res = await request() - .get('/api/financial_statements/general_ledger') - .send(); - - expect(res.status).equals(401); - }); - - it('Should retrieve request query meta on response schema.', async () => { - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.body.query.from_date).equals(moment().startOf('year').format('YYYY-MM-DD')); - expect(res.body.query.to_date).equals(moment().endOf('year').format('YYYY-MM-DD')); - expect(res.body.query.basis).equals('cash'); - expect(res.body.query.number_format.no_cents).equals(false); - expect(res.body.query.number_format.divide_1000).equals(false); - expect(res.body.query.none_zero).equals(false); - expect(res.body.query.accounts_ids).to.be.an('array'); - }); - - it('Should retrieve the general ledger accounts with associated transactions and opening/closing balance.', async () => { - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.body.accounts).is.an('array'); - expect(res.body.accounts[0].id).to.be.an('number'); - expect(res.body.accounts[0].name).to.be.a('string'); - expect(res.body.accounts[0].code).to.be.a('string'); - expect(res.body.accounts[0].transactions).to.be.a('array'); - expect(res.body.accounts[0].opening).to.be.a('object'); - expect(res.body.accounts[0].opening.amount).to.be.a('number'); - expect(res.body.accounts[0].opening.date).to.be.a('string'); - expect(res.body.accounts[0].closing).to.be.a('object'); - expect(res.body.accounts[0].closing.amount).to.be.a('number'); - expect(res.body.accounts[0].closing.date).to.be.a('string'); - }); - - it('Should retrieve opening and closing balance.', async () => { - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const targetAccount = res.body.accounts.find((a) => a.id === creditAccount.id); - - expect(targetAccount).to.be.an('object'); - expect(targetAccount.opening).to.deep.equal({ - amount: 0, formatted_amount: 0, date: '2020-01-01', - }); - expect(targetAccount.closing).to.deep.equal({ - amount: 4000, formatted_amount: 4000, date: '2020-12-31', - }); - }); - - it('Should retrieve opening and closing balance between the given date range.', async () => { - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2018-01-01', - to_date: '2020-03-30', - // none_zero: true, - }) - .send(); - - const targetAccount = res.body.accounts.find((a) => a.id === creditAccount.id); - - expect(targetAccount).to.be.an('object'); - expect(targetAccount.opening).to.deep.equal({ - amount: 0, formatted_amount: 0, date: '2018-01-01', - }); - expect(targetAccount.closing).to.deep.equal({ - amount: 4000, formatted_amount: 4000, date: '2020-03-30', - }); - }); - - it('Should retrieve accounts with associated transactions.', async () => { - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - none_zero: true, - }) - .send(); - - }) - - it('Should retrieve accounts transactions only that between date range.', async () => { - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2020-01-01', - to_date: '2020-03-30', - none_zero: true, - }) - .send(); - - - // console.log(res.body.accounts); - }); - - it('Should retrieve no accounts with given date period has not transactions.', async () => { - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2020-01-20', - to_date: '2020-03-30', - none_zero: true, - }) - .send(); - - expect(res.body.accounts.length).equals(0); - }); - - it('Should retrieve all accounts even it have no transactions in the given date range when `none_zero` is `true`', async () => { - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2020-01-01', - to_date: '2020-03-30', - none_zero: true, - }) - .send(); - - const accountsNoTransactions = res.body.accounts.filter(a => a.transactions.length === 0); - const accountsWithTransactions = res.body.accounts.filter(a => a.transactions.length > 0); - - expect(accountsNoTransactions.length).equals(0); - expect(accountsWithTransactions.length).not.equals(0); - }); - - it('Should amount transactions divided on `1000` when `number_format.none_zero` is `true`.', async () => { - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2020-01-01', - to_date: '2020-03-30', - accounts_ids: [creditAccount.id], - number_format: { - divide_1000: true, - }, - }) - .send(); - - expect(res.body.accounts).include.something.deep.equals({ - id: creditAccount.id, - name: creditAccount.name, - code: creditAccount.code, - index: null, - parentAccountId: null, - children: [], - transactions: [ - { - id: 1002, - note: null, - transactionType: null, - referenceType: null, - referenceId: null, - date: '2020-01-09T22:00:00.000Z', - createdAt: null, - formatted_amount: 4, - amount: 4000, - } - ], - opening: { date: '2020-01-01', formatted_amount: 0, amount: 0 }, - closing: { date: '2020-03-30', formatted_amount: 4, amount: 4000 } - }); - }); - - it('Should amount transactions rounded with no decimals when `number_format.no_cents` is `true`.', async () => { - await tenantFactory.create('account_transaction', { - debit: 0.25, credit: 0, account_id: debitAccount.id, date: '2020-1-10', - }); - - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2020-01-01', - to_date: '2020-03-30', - number_format: { - divide_1000: true, - no_cents: true, - }, - accounts_ids: [debitAccount.id] - }) - .send(); - - expect(res.body.accounts[0].transactions[2].formatted_amount).equal(2); - }); - - it('Should retrieve only accounts that given in the query.', async () => { - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2020-01-01', - to_date: '2020-03-30', - none_zero: true, - accounts_ids: [creditAccount.id], - }) - .send(); - - expect(res.body.accounts.length).equals(1); - }); - - it('Should retrieve accounts in nested array structure as parent/children accounts.', async () => { - const childAccount = await tenantFactory.create('account', { - parent_account_id: debitAccount.id, - account_type_id: 1 - }); - - const res = await request() - .get('/api/financial_statements/general_ledger') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - accounts_ids: [childAccount.id, debitAccount.id], - }) - .send(); - - expect(res.body.accounts[0].children.length).equals(1); - expect(res.body.accounts[0].children[0].id).equals(childAccount.id); - }); - }); - - describe('routes: `/financial_statements/trial_balance`', () => { - it('Should response unauthorized in case the user was not authorized.', async () => { - const res = await request() - .get('/api/financial_statements/trial_balance_sheet') - .send(); - - expect(res.status).equals(401); - }); - - it('Should retrieve the trial balance of accounts.', async () => { - const res = await request() - .get('/api/financial_statements/trial_balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.body.accounts).include.something.deep.equals({ - id: debitAccount.id, - name: debitAccount.name, - code: debitAccount.code, - parentAccountId: null, - accountNormal: 'debit', - credit: 1000, - debit: 6000, - balance: 5000, - - formatted_credit: 1000, - formatted_debit: 6000, - formatted_balance: 5000, - - children: [], - }); - expect(res.body.accounts).include.something.deep.equals({ - id: creditAccount.id, - name: creditAccount.name, - code: creditAccount.code, - accountNormal: 'credit', - parentAccountId: null, - - credit: 4000, - debit: 0, - balance: 4000, - - formatted_credit: 4000, - formatted_debit: 0, - formatted_balance: 4000, - - children: [], - }); - }); - - it('Should not retrieve accounts has no transactions between the given date range.', async () => { - const res = await request() - .get('/api/financial_statements/trial_balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - // There is no transactions between these dates. - from_date: '2002-01-01', - to_date: '2003-01-01', - none_zero: true, - }) - .send(); - - expect(res.body.accounts.length).equals(0); - }); - - it('Should retrieve trial balance of accounts between the given date range.', async () => { - const res = await request() - .get('/api/financial_statements/trial_balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - // There is no transactions between these dates. - from_date: '2020-01-05', - to_date: '2020-01-10', - none_zero: true, - }) - .send(); - - expect(res.body.accounts).include.something.deep.equals({ - id: creditAccount.id, - name: creditAccount.name, - code: creditAccount.code, - accountNormal: 'credit', - parentAccountId: null, - credit: 4000, - debit: 0, - balance: 4000, - - formatted_credit: 4000, - formatted_debit: 0, - formatted_balance: 4000, - - children: [] - }); - }); - - it('Should credit, debit and balance amount be divided on 1000.', async () => { - const res = await request() - .get('/api/financial_statements/trial_balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - // There is no transactions between these dates. - from_date: '2020-01-05', - to_date: '2020-01-10', - number_format: { - divide_1000: true, - }, - }) - .send(); - - expect(res.body.accounts).include.something.deep.equals({ - id: creditAccount.id, - name: creditAccount.name, - code: creditAccount.code, - accountNormal: 'credit', - parentAccountId: null, - - credit: 4000, - debit: 0, - balance: 4000, - - formatted_credit: 4, - formatted_debit: 0, - formatted_balance: 4, - - children: [], - }); - }); - - it('Should credit, debit and balance amount rounded without cents.', async () => { - const res = await request() - .get('/api/financial_statements/trial_balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - // There is no transactions between these dates. - from_date: '2020-01-05', - to_date: '2020-01-10', - number_format: { - no_cents: true, - }, - }) - .send(); - }); - - it('Should retrieve associated account details in accounts list.', async () => { - - }); - - it('Should retrieve account with nested array structure as parent/children accounts.', async () => { - const childAccount = await tenantFactory.create('account', { - parent_account_id: debitAccount.id, - account_type_id: 1 - }); - - const res = await request() - .get('/api/financial_statements/trial_balance_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - account_ids: [debitAccount.id, childAccount.id], - }) - .send(); - - expect(res.body.accounts[0].children.length).equals(1); - expect(res.body.accounts[0].children[0].id).equals(childAccount.id); - }); - }); - - describe('routes: `/api/financial_statements/profit_loss_sheet`', () => { - it('Should response unauthorized in case the user was not authorized.', async () => { - const res = await request() - .get('/api/financial_statements/profit_loos_sheet') - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should retrieve columns when display type `date_periods` and columns by `month` between date range.', async () => { - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2020-01-01', - to_date: '2020-12-12', - display_columns_type: 'date_periods', - display_columns_by: 'month', - }) - .send(); - - expect(res.body.columns.length).equals(12); - expect(res.body.columns).deep.equals([ - '2020-01', '2020-02', - '2020-03', '2020-04', - '2020-05', '2020-06', - '2020-07', '2020-08', - '2020-09', '2020-10', - '2020-11', '2020-12', - ]); - }); - - it('Should retrieve columns when display type `date_periods` and columns by `quarter`.', async () => { - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: moment().startOf('year').format('YYYY-MM-DD'), - to_date: moment().endOf('year').format('YYYY-MM-DD'), - display_columns_type: 'date_periods', - display_columns_by: 'quarter', - }) - .send(); - - expect(res.body.columns.length).equals(4); - expect(res.body.columns).deep.equals([ - '2020-03', '2020-06', '2020-09', '2020-12', - ]); - }); - - it('Should retrieve columns when display type `date_periods` and columns by `day` between date range.', async () => { - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: moment('2020-01-01').startOf('month').format('YYYY-MM-DD'), - to_date: moment('2020-01-01').endOf('month').format('YYYY-MM-DD'), - display_columns_type: 'date_periods', - display_columns_by: 'day', - }) - .send(); - - expect(res.body.columns.length).equals(31); - expect(res.body.columns).deep.equals([ - '2020-01-01', '2020-01-02', '2020-01-03', - '2020-01-04', '2020-01-05', '2020-01-06', - '2020-01-07', '2020-01-08', '2020-01-09', - '2020-01-10', '2020-01-11', '2020-01-12', - '2020-01-13', '2020-01-14', '2020-01-15', - '2020-01-16', '2020-01-17', '2020-01-18', - '2020-01-19', '2020-01-20', '2020-01-21', - '2020-01-22', '2020-01-23', '2020-01-24', - '2020-01-25', '2020-01-26', '2020-01-27', - '2020-01-28', '2020-01-29', '2020-01-30', - '2020-01-31', - ]); - }); - - it('Should retrieve all income accounts even it has no transactions.', async () => { - const zeroAccount = await tenantFactory.create('account', { account_type_id: incomeType.id }); - - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: moment('2020-01-01').startOf('month').format('YYYY-MM-DD'), - to_date: moment('2020-01-31').endOf('month').format('YYYY-MM-DD'), - display_columns_type: 'total', - display_columns_by: 'month', - none_zero: false, - }) - .send(); - - expect(res.body.profitLoss.income.accounts).include.something.deep.equals({ - id: zeroAccount.id, - index: zeroAccount.index, - name: zeroAccount.name, - code: zeroAccount.code, - parentAccountId: null, - children: [], - total: { amount: 0, date: '2020-01-31', formatted_amount: 0 }, - }); - }); - - it('Should retrieve total of each income account when display columns by `total`.', async () => { - const toDate = moment('2020-01-01').endOf('month').format('YYYY-MM-DD'); - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: moment('2020-01-01').startOf('month').format('YYYY-MM-DD'), - to_date: toDate, - }) - .send(); - - expect(res.body.profitLoss.income.accounts).to.be.an('array'); - expect(res.body.profitLoss.income.accounts.length).not.equals(0); - expect(res.body.profitLoss.income.accounts[0].id).to.be.an('number'); - expect(res.body.profitLoss.income.accounts[0].name).to.be.an('string'); - expect(res.body.profitLoss.income.accounts[0].total).to.be.an('object'); - expect(res.body.profitLoss.income.accounts[0].total.amount).to.be.an('number'); - expect(res.body.profitLoss.income.accounts[0].total.formatted_amount).to.be.an('number'); - expect(res.body.profitLoss.income.accounts[0].total.date).equals(toDate); - }); - - it('Should retrieve credit sumation of income accounts.', async () => { - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2020-01-01', - to_date: '2021-01-01', - }) - .send(); - - expect(res.body.profitLoss.income.total).to.be.an('object'); - expect(res.body.profitLoss.income.total.amount).equals(2000); - expect(res.body.profitLoss.income.total.formatted_amount).equals(2000); - expect(res.body.profitLoss.income.total.date).equals('2021-01-01'); - }); - - it('Should retrieve debit sumation of expenses accounts.', async () => { - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2020-01-01', - to_date: '2021-01-01', - }) - .send(); - - expect(res.body.profitLoss.expenses.total).to.be.an('object'); - expect(res.body.profitLoss.expenses.total.amount).equals(1000); - expect(res.body.profitLoss.expenses.total.formatted_amount).equals(1000); - expect(res.body.profitLoss.expenses.total.date).equals('2021-01-01'); - }); - - it('Should retrieve credit total of income accounts with `date_periods` columns between the given date range.', async () => { - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2019-12-01', - to_date: '2020-12-01', - display_columns_type: 'date_periods', - display_columns_by: 'month', - }) - .send(); - - expect(res.body.profitLoss.income.total_periods[0].amount).equals(0); - expect(res.body.profitLoss.income.total_periods[1].amount).equals(2000); - expect(res.body.profitLoss.income.total_periods[2].amount).equals(2000); - }); - - it('Should retrieve debit total of expenses accounts with `date_periods` columns between the given date range.', async () => { - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2019-12-01', - to_date: '2020-12-01', - display_columns_type: 'date_periods', - display_columns_by: 'month', - }) - .send(); - - expect(res.body.profitLoss.expenses.total_periods[0].amount).equals(0); - expect(res.body.profitLoss.expenses.total_periods[1].amount).equals(1000); - expect(res.body.profitLoss.expenses.total_periods[2].amount).equals(1000); - }); - - it('Should retrieve total net income with `total column display between the given date range.', async () => { - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2019-12-01', - to_date: '2020-12-01', - display_columns_type: 'total', - }) - .send(); - - expect(res.body.profitLoss.net_income.total.amount).equals(1000); - expect(res.body.profitLoss.net_income.total.formatted_amount).equals(1000); - expect(res.body.profitLoss.net_income.total.date).equals('2020-12-01'); - }); - - it('Should retrieve total net income with `date_periods` columns between the given date range.', async () => { - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2019-12-01', - to_date: '2020-12-01', - display_columns_type: 'date_periods', - display_columns_by: 'quarter', - }) - .send(); - - expect(res.body.profitLoss.net_income).deep.equals({ - total_periods: [ - { date: '2019-12', amount: 0, formatted_amount: 0 }, - { date: '2020-03', amount: 1000, formatted_amount: 1000 }, - { date: '2020-06', amount: 1000, formatted_amount: 1000 }, - { date: '2020-09', amount: 1000, formatted_amount: 1000 }, - { date: '2020-12', amount: 1000, formatted_amount: 1000 } - ], - }); - }); - - it('Should not retrieve income or expenses accounts that has no transactions between the given date range in case none_zero equals true.', async () => { - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - from_date: '2020-01-01', - to_date: '2021-01-01', - display_columns_by: 'month', - display_columns_type: 'date_periods', - none_zero: true, - }) - .send(); - - expect(res.body.profitLoss.income.accounts.length).equals(1); - }); - - it('Should retrieve accounts in nested array structure as parent/children accounts.', async () => { - const childAccount = await tenantFactory.create('account', { - parent_account_id: incomeAccount.id, - account_type_id: 7 - }); - - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - account_ids: [childAccount.id, incomeAccount.id], - }) - .send(); - - expect(res.body.profitLoss.income.accounts.length).equals(1); - expect(res.body.profitLoss.income.accounts[0].children.length).equals(1); - expect(res.body.profitLoss.income.accounts[0].children[0].id).equals(childAccount.id); - }); - - it('Should parent account credit/debit sumation of total periods amounts all children accounts.', async () => { - const childAccount = await tenantFactory.create('account', { - parent_account_id: incomeAccount.id, - account_type_id: 7, - }); - await tenantFactory.create('account_transaction', { - credit: 1000, debit: 0, account_id: childAccount.id, date: '2020-2-10' - }); - - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - account_ids: [childAccount.id, incomeAccount.id], - from_date: '2020-01-01', - to_date: '2020-12-12', - }) - .send(); - - expect(res.body.profitLoss.income.accounts[0].total).deep.equals({ - amount: 3000, date: '2020-12-12', formatted_amount: 3000 - }); - }); - - it('Should parent account credit/debit sumation of total date periods.', async () => { - const childAccount = await tenantFactory.create('account', { - parent_account_id: incomeAccount.id, - account_type_id: 7, - }); - await tenantFactory.create('account_transaction', { - credit: 1000, debit: 0, account_id: childAccount.id, date: '2020-2-10' - }); - - const res = await request() - .get('/api/financial_statements/profit_loss_sheet') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - account_ids: [childAccount.id, incomeAccount.id], - display_columns_type: 'date_periods', - display_columns_by: 'month', - from_date: '2020-01-01', - to_date: '2020-12-12', - }) - .send(); - - const periods = [ - { date: '2020-01', amount: 2000, formatted_amount: 2000 }, - { date: '2020-02', amount: 3000, formatted_amount: 3000 }, - { date: '2020-03', amount: 3000, formatted_amount: 3000 }, - { date: '2020-04', amount: 3000, formatted_amount: 3000 }, - { date: '2020-05', amount: 3000, formatted_amount: 3000 }, - { date: '2020-06', amount: 3000, formatted_amount: 3000 }, - { date: '2020-07', amount: 3000, formatted_amount: 3000 }, - { date: '2020-08', amount: 3000, formatted_amount: 3000 }, - { date: '2020-09', amount: 3000, formatted_amount: 3000 }, - { date: '2020-10', amount: 3000, formatted_amount: 3000 }, - { date: '2020-11', amount: 3000, formatted_amount: 3000 }, - { date: '2020-12', amount: 3000, formatted_amount: 3000 } - ]; - expect(res.body.profitLoss.income.accounts[0].periods).deep.equals(periods); - expect(res.body.profitLoss.income.total_periods).deep.equals(periods); - }); - }); -}); diff --git a/server/tests/routes/inviteUsers.test.js b/server/tests/routes/inviteUsers.test.js deleted file mode 100644 index 24582e2a6..000000000 --- a/server/tests/routes/inviteUsers.test.js +++ /dev/null @@ -1,259 +0,0 @@ -import knex from 'database/knex'; -import { - request, - expect, - createUser, -} from '~/testInit'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; -import Invite from 'system/models/Invite' -import TenantUser from 'models/TenantUser'; -import SystemUser from 'system/models/SystemUser'; - -describe('routes: `/api/invite_users`', () => { - describe('POST: `/api/invite_users/send`', () => { - it('Should response unauthorized if the user was not authorized.', async () => { - const res = await request().get('/api/invite_users/send'); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should email be required.', async () => { - const res = await request() - .post('/api/invite/send') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'email', location: 'body', - }); - }); - - it('Should email not be already registered in the system database.', async () => { - const user = await createUser(tenantWebsite, { - active: false, - email: 'admin@admin.com', - }); - - const res = await request() - .post('/api/invite/send') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - email: 'admin@admin.com', - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'USER.EMAIL.ALREADY.REGISTERED', code: 100, - }); - }); - - it('Should invite token be inserted to the master database.', async () => { - const res = await request() - .post('/api/invite/send') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - email: 'admin@admin.com' - }); - - const foundInviteToken = await Invite.query() - .where('email', 'admin@admin.com').first(); - - expect(foundInviteToken).is.not.null; - expect(foundInviteToken.token).is.not.null; - }); - - it('Should invite email be insereted to users tenant database.', async () => { - const res = await request() - .post('/api/invite/send') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - email: 'admin@admin.com' - }); - - const foundTenantUser = await TenantUser.tenant().query() - .where('email', 'admin@admin.com').first(); - - expect(foundTenantUser).is.not.null; - expect(foundTenantUser.email).equals('admin@admin.com'); - expect(foundTenantUser.firstName).equals('admin@admin.com'); - expect(foundTenantUser.createdAt).is.not.null; - }); - }); - - describe('POST: `/api/invite/accept/:token`', () => { - let sendInviteRes; - let inviteUser; - - beforeEach(async () => { - sendInviteRes = await request() - .post('/api/invite/send') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - email: 'admin@admin.com' - }); - - inviteUser = await Invite.query() - .where('email', 'admin@admin.com') - .first(); - }); - - it('Should the given token be valid.', async () => { - const res = await request() - .post('/api/invite/accept/invalid_token') - .send({ - first_name: 'Ahmed', - last_name: 'Bouhuolia', - password: 'hard-password', - phone_number: '0927918381', - }); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'INVITE.TOKEN.NOT.FOUND', code: 300, - }); - }); - - it('Should first_name be required.', async () => { - const res = await request() - .post(`/api/invite/accept/${inviteUser.token}`) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'first_name', location: 'body' - }); - }); - - it('Should last_name be required.', async () => { - const res = await request() - .post(`/api/invite/accept/${inviteUser.token}`) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'last_name', location: 'body' - }); - }); - - it('Should phone_number be required.', async () => { - const res = await request() - .post(`/api/invite/accept/${inviteUser.token}`) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'phone_number', location: 'body' - }); - }); - - it('Should password be required.', async () => { - const res = await request() - .post(`/api/invite/accept/${inviteUser.token}`) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'password', location: 'body' - }); - }); - - it('Should phone number not be already registered.', async () => { - const user = await createUser(tenantWebsite); - const res = await request() - .post(`/api/invite/accept/${inviteUser.token}`) - .send({ - first_name: 'Ahmed', - last_name: 'Bouhuolia', - password: 'hard-password', - phone_number: user.phone_number, - }) - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'PHONE_MUMNER.ALREADY.EXISTS', code: 400, - }); - }); - - it('Should tenant user details updated after invite accept.', async () => { - const user = await createUser(tenantWebsite); - const res = await request() - .post(`/api/invite/accept/${inviteUser.token}`) - .send({ - first_name: 'Ahmed', - last_name: 'Bouhuolia', - password: 'hard-password', - phone_number: '0927918381', - }); - - const foundTenantUser = await TenantUser.tenant().query() - .where('email', 'admin@admin.com').first(); - - expect(foundTenantUser).is.not.null; - expect(foundTenantUser.id).is.not.null; - expect(foundTenantUser.email).equals('admin@admin.com'); - expect(foundTenantUser.firstName).equals('Ahmed'); - expect(foundTenantUser.lastName).equals('Bouhuolia'); - expect(foundTenantUser.active).equals(1); - expect(foundTenantUser.inviteAcceptedAt).is.not.null; - expect(foundTenantUser.createdAt).is.not.null; - expect(foundTenantUser.updatedAt).is.not.null; - }); - - it('Should user details be insereted to the system database', async () => { - const user = await createUser(tenantWebsite); - const res = await request() - .post(`/api/invite/accept/${inviteUser.token}`) - .send({ - first_name: 'Ahmed', - last_name: 'Bouhuolia', - password: 'hard-password', - phone_number: '0927918381', - }); - - const foundSystemUser = await SystemUser.query() - .where('email', 'admin@admin.com').first(); - - expect(foundSystemUser).is.not.null; - expect(foundSystemUser.id).is.not.null; - expect(foundSystemUser.tenantId).equals(inviteUser.tenantId); - expect(foundSystemUser.email).equals('admin@admin.com'); - expect(foundSystemUser.firstName).equals('Ahmed'); - expect(foundSystemUser.lastName).equals('Bouhuolia'); - expect(foundSystemUser.active).equals(1); - expect(foundSystemUser.lastLoginAt).is.null; - expect(foundSystemUser.createdAt).is.not.null; - expect(foundSystemUser.updatedAt).is.null; - }); - - it('Should invite token be deleted after invite accept.', async () => { - const res = await request() - .post(`/api/invite/accept/${inviteUser.token}`) - .send({ - first_name: 'Ahmed', - last_name: 'Bouhuolia', - password: 'hard-password', - phone_number: '0927918381', - }); - - const foundInviteToken = await Invite.query().where('token', inviteUser.token); - expect(foundInviteToken.length).equals(0); - }); - }); - - describe('GET: `/api/invite_users/:token`', () => { - it('Should response token invalid.', () => { - - }); - }); -}); \ No newline at end of file diff --git a/server/tests/routes/items.test.js b/server/tests/routes/items.test.js deleted file mode 100644 index 4e2858668..000000000 --- a/server/tests/routes/items.test.js +++ /dev/null @@ -1,729 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import Item from 'models/Item'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('routes: `/items`', () => { - describe('POST: `/items`', () => { - it('Should not create a new item if the user was not authorized.', async () => { - const res = await request() - .post('/api/items') - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should `name` be required.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'name', location: 'body', - }); - }); - - it('Should `type` be required.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'type', location: 'body', - }); - }); - - it('Should `type` be one of defined words.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - type: 'not-defined', - }); - - expect(res.body.errors).include.something.deep.equals({ - value: 'not-defined', - msg: 'Invalid value', - param: 'type', - location: 'body', - }); - }); - - it('Should `buy_price` be numeric.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - cost_price: 'not_numeric', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - value: 'not_numeric', - msg: 'Invalid value', - param: 'cost_price', - location: 'body', - }); - }); - - it('Should `sell_price` be numeric.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - sell_price: 'not_numeric', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - value: 'not_numeric', - msg: 'Invalid value', - param: 'sell_price', - location: 'body', - }); - }); - - it('Should `sell_account_id` be integer.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - cost_account_id: 'not_numeric', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - value: 'not_numeric', - msg: 'Invalid value', - param: 'cost_account_id', - location: 'body', - }); - }); - - it('Should `cost_account_id` be integer.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - sell_account_id: 'not_numeric', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - value: 'not_numeric', - msg: 'Invalid value', - param: 'sell_account_id', - location: 'body', - }); - }); - - it('Should `cost_account_id` be required if `cost_price` was presented.', async () => { - - }); - - it('Should `buy_account_id` be required if `buy_price` was presented.', async () => { - - }); - - it('Should `inventory_account_id` be required if type was `inventory` item.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Item Name', - type: 'inventory', - sell_price: 10.2, - cost_price: 20.2, - sell_account_id: 10, - cost_account_id: 20, - }); - - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'inventory_account_id', - location: 'body', - }); - }); - - it('Should `inventory_account_id` be not required if type was not `inventory`.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Item Name', - type: 'service', - sell_price: 10.2, - cost_price: 20.2, - sell_account_id: 10, - cost_account_id: 20, - }); - - expect(res.body.errors).include.something.deep.not.equals({ - msg: 'Invalid value', - param: 'inventory_account_id', - location: 'body', - }); - }); - - it('Should response bad request in case `cost account` was not exist.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Item Name', - type: 'service', - sell_price: 10.2, - cost_price: 20.2, - sell_account_id: 10, - cost_account_id: 20, - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'COST_ACCOUNT_NOT_FOUND', code: 100, - }); - }); - - it('Should response bad request in case sell account was not exist.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Item Name', - type: 'service', - sell_price: 10.2, - cost_price: 20.2, - sell_account_id: 10, - cost_account_id: 20, - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'SELL_ACCOUNT_NOT_FOUND', code: 120, - }); - }); - - it('Should response not category found in case item category was not exist.', async () => { - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Item Name', - type: 'service', - sell_price: 10.2, - cost_price: 20.2, - sell_account_id: 10, - cost_account_id: 20, - category_id: 20, - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'ITEM_CATEGORY_NOT_FOUND', code: 140, - }); - }); - - it('Should response success with correct data format.', async () => { - const account = await tenantFactory.create('account'); - const anotherAccount = await tenantFactory.create('account'); - const itemCategory = await tenantFactory.create('item_category'); - - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Item Name', - type: 'service', - sell_price: 10.2, - cost_price: 20.2, - sell_account_id: account.id, - cost_account_id: anotherAccount.id, - category_id: itemCategory.id, - }); - - expect(res.status).equals(200); - }); - - it('Should store the given item details to the storage.', async () => { - const account = await tenantFactory.create('account'); - const anotherAccount = await tenantFactory.create('account'); - const itemCategory = await tenantFactory.create('item_category'); - - const res = await request() - .post('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Item Name', - type: 'service', - sku: 'SKU CODE', - sell_price: 10.2, - cost_price: 20.2, - sell_account_id: account.id, - cost_account_id: anotherAccount.id, - category_id: itemCategory.id, - note: 'note about item' - }); - - const storedItem = await Item.tenant().query().where('id', res.body.id).first(); - - expect(storedItem.name).equals('Item Name'); - expect(storedItem.type).equals('service'); - - expect(storedItem.sellPrice).equals(10.2); - expect(storedItem.costPrice).equals(20.2); - expect(storedItem.sellAccountId).equals(account.id); - expect(storedItem.costAccountId).equals(anotherAccount.id); - expect(storedItem.categoryId).equals(itemCategory.id); - expect(storedItem.sku).equals('SKU CODE'); - expect(storedItem.note).equals('note about item'); - expect(storedItem.userId).is.not.null; - }); - }); - - describe('POST: `items/:id`', () => { - it('Should response item not found in case item id was not exist.', async () => { - const res = await request() - .post('/api/items/100') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Item Name', - type: 'product', - cost_price: 100, - sell_price: 200, - sell_account_id: 1, - cost_account_id: 2, - category_id: 2, - }); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'ITEM.NOT.FOUND', code: 100, - }); - }); - - it('Should `name` be required.', async () => { - const item = await tenantFactory.create('item'); - const res = await request() - .post(`/api/items/${item.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'name', location: 'body', - }); - }); - - it('Should `type` be required.', async () => { - const item = await tenantFactory.create('item'); - const res = await request() - .post(`/api/items/${item.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'type', location: 'body', - }); - }); - - it('Should `sell_price` be numeric.', async () => { - const item = await tenantFactory.create('item'); - const res = await request() - .post(`/api/items/${item.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - sell_price: 'not_numeric', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - value: 'not_numeric', - msg: 'Invalid value', - param: 'sell_price', - location: 'body', - }); - }); - - it('Should `cost_price` be numeric.', async () => { - const item = await tenantFactory.create('item'); - const res = await request() - .post(`/api/items/${item.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - cost_price: 'not_numeric', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - value: 'not_numeric', - msg: 'Invalid value', - param: 'cost_price', - location: 'body', - }); - }); - - it('Should `sell_account_id` be integer.', async () => { - const item = await tenantFactory.create('item'); - const res = await request() - .post(`/api/items/${item.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - sell_account_id: 'not_numeric', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - value: 'not_numeric', - msg: 'Invalid value', - param: 'sell_account_id', - location: 'body', - }); - }); - - it('Should `cost_account_id` be integer.', async () => { - const item = await tenantFactory.create('item'); - const res = await request() - .post(`/api/items/${item.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - cost_account_id: 'not_numeric', - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - value: 'not_numeric', - msg: 'Invalid value', - param: 'cost_account_id', - location: 'body', - }); - }); - - it ('Should response bad request in case cost account was not exist.', async () => { - const item = await tenantFactory.create('item'); - const res = await request() - .post(`/api/items/${item.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Item Name', - type: 'service', - sell_price: 10.2, - cost_price: 20.2, - sell_account_id: 10, - cost_account_id: 20, - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'COST_ACCOUNT_NOT_FOUND', code: 100, - }); - }); - - it('Should response bad request in case sell account was not exist.', async () => { - const item = await tenantFactory.create('item'); - const res = await request() - .post(`/api/items/${item.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Item Name', - type: 'product', - sell_price: 10.2, - cost_price: 20.2, - sell_account_id: 1000000, - cost_account_id: 1000000, - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'SELL_ACCOUNT_NOT_FOUND', code: 120, - }); - }); - - it('Should update details of the given item.', async () => { - const account = await tenantFactory.create('account'); - const anotherAccount = await tenantFactory.create('account'); - const itemCategory = await tenantFactory.create('item_category'); - - const item = await tenantFactory.create('item'); - const res = await request() - .post(`/api/items/${item.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'New Item Name', - type: 'service', - sell_price: 10.2, - cost_price: 20.2, - sell_account_id: account.id, - cost_account_id: anotherAccount.id, - category_id: itemCategory.id, - }); - - const updatedItem = await Item.tenant().query().findById(item.id); - - expect(updatedItem.name).equals('New Item Name'); - expect(updatedItem.type).equals('service'); - expect(updatedItem.sellPrice).equals(10.2); - expect(updatedItem.costPrice).equals(20.2); - expect(updatedItem.sellAccountId).equals(account.id); - expect(updatedItem.costAccountId).equals(anotherAccount.id); - expect(updatedItem.categoryId).equals(itemCategory.id); - }); - }); - - describe('DELETE: `items/:id`', () => { - it('Should response not found in case the item was not exist.', async () => { - const res = await request() - .delete('/api/items/10') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - }); - - it('Should response success in case was exist.', async () => { - const item = await tenantFactory.create('item'); - const res = await request() - .delete(`/api/items/${item.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - }); - - it('Should delete the given item from the storage.', async () => { - const item = await tenantFactory.create('item'); - await request() - .delete(`/api/items/${item.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const storedItems = await Item.tenant().query().where('id', item.id); - expect(storedItems).to.have.lengthOf(0); - }); - }); - - describe('DELETE: `items?ids=`', () => { - it('Should response in case one of items ids where not exists.', async () => { - const res = await request() - .delete('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [100, 200], - }) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'ITEMS.NOT.FOUND', code: 200, ids: [100, 200], - }); - }); - - it('Should delete the given items from the storage.', async () => { - const item1 = await tenantFactory.create('item'); - const item2 = await tenantFactory.create('item'); - - const res = await request() - .delete('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [item1.id, item2.id], - }) - .send(); - - const foundItems = await Item.tenant().query(); - - expect(res.status).equals(200); - expect(foundItems.length).equals(0) - }); - }); - - describe('GET: `items`', () => { - it('Should response unauthorized access in case the user not authenticated.', async () => { - const res = await request() - .get('/api/items') - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should retrieve items list with associated accounts.', async () => { - await tenantFactory.create('resource', { name: 'items' }); - await tenantFactory.create('item'); - - const res = await request() - .get('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - - expect(res.body.items).to.be.a('object'); - expect(res.body.items.results).to.be.a('array'); - expect(res.body.items.results.length).equals(1); - - expect(res.body.items.results[0].cost_account).to.be.an('object'); - expect(res.body.items.results[0].sell_account).to.be.an('object'); - expect(res.body.items.results[0].inventory_account).to.be.an('object'); - expect(res.body.items.results[0].category).to.be.an('object'); - }); - - it('Should retrieve ordered items based on the given `column_sort_order` and `sort_order` query.', async () => { - await tenantFactory.create('item', { name: 'ahmed' }); - await tenantFactory.create('item', { name: 'mohamed' }); - - const res = await request() - .get('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - column_sort_order: 'name', - sort_order: 'desc', - }) - .send(); - - expect(res.body.items.results.length).equals(2); - expect(res.body.items.results[0].name).equals('mohamed'); - expect(res.body.items.results[1].name).equals('ahmed'); - }); - - it('Should retrieve pagination meta of items list.', async () => { - await tenantFactory.create('resource', { name: 'items' }); - - const res = await request() - .get('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.body.items.results).to.be.a('array'); - expect(res.body.items.results.length).equals(0); - expect(res.body.items.pagination).to.be.a('object'); - expect(res.body.items.pagination.total).to.be.a('number'); - expect(res.body.items.pagination.total).equals(0) - }); - - it('Should retrieve filtered items based on custom view conditions.', async () => { - const item1 = await tenantFactory.create('item', { type: 'service' }); - const item2 = await tenantFactory.create('item', { type: 'service' }); - const item3 = await tenantFactory.create('item', { type: 'inventory' }); - const item4 = await tenantFactory.create('item', { type: 'inventory' }); - - const view = await tenantFactory.create('view', { - name: 'Items Inventory', - resource_id: 2, - roles_logic_expression: '1', - }); - const viewCondition = await tenantFactory.create('view_role', { - view_id: view.id, - index: 1, - field_id: 12, - value: 'inventory', - comparator: 'equals', - }); - const res = await request() - .get('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - custom_view_id: view.id, - }) - .send(); - - expect(res.body.customViewId).equals(view.id); - expect(res.body.viewColumns).to.be.a('array'); - expect(res.body.viewConditions).to.be.a('array'); - expect(res.body.items.results.length).equals(2); - expect(res.body.items.results[0].type).equals('inventory'); - expect(res.body.items.results[1].type).equals('inventory'); - }); - - it('Should retrieve filtered items based on filtering conditions.', async () => { - const item1 = await tenantFactory.create('item', { type: 'service' }); - const item2 = await tenantFactory.create('item', { type: 'service', name: 'target' }); - const item3 = await tenantFactory.create('item', { type: 'inventory' }); - const item4 = await tenantFactory.create('item', { type: 'inventory' }); - - const res = await request() - .get('/api/items') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - stringified_filter_roles: JSON.stringify([ - { - condition: 'AND', - field_key: 'type', - comparator: 'equals', - value: 'inventory', - }, - { - condition: 'OR', - field_key: 'name', - comparator: 'equals', - value: 'target', - }, - ]), - }) - .send(); - - expect(res.body.items.results.length).equals(3); - expect(res.body.items.results[0].name).equals('target'); - expect(res.body.items.results[1].type).equals('inventory'); - expect(res.body.items.results[2].type).equals('inventory'); - }); - }); -}); diff --git a/server/tests/routes/itemsCategories.test.js b/server/tests/routes/itemsCategories.test.js deleted file mode 100644 index 63e1ee1a2..000000000 --- a/server/tests/routes/itemsCategories.test.js +++ /dev/null @@ -1,311 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import ItemCategory from 'models/ItemCategory'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - -describe('routes: /item_categories/', () => { - describe('POST `/items_categories``', async () => { - it('Should not create a item category if the user was not authorized.', async () => { - const res = await request().post('/api/item_categories').send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should `name` be required.', async () => { - const res = await request() - .post('/api/item_categories') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - }); - - it('Should `parent_category_id` be exist in the storage.', async () => { - const res = await request() - .post('/api/item_categories') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Clothes', - parent_category_id: 10, - }); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'PARENT_CATEGORY_NOT_FOUND', code: 100, - }); - }); - - it('Should response success with correct form data.', async () => { - const res = await request() - .post('/api/item_categories') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Clothes', - description: 'Here is description', - }); - - expect(res.status).equals(200); - expect(res.body.category).to.be.a('object'); - expect(res.body.category.id).to.be.a('number'); - expect(res.body.category.name).to.be.a('string'); - expect(res.body.category.description).to.be.a('string'); - }); - - it('Should item category data be saved to the storage.', async () => { - const category = await tenantFactory.create('item_category'); - const res = await request() - .post('/api/item_categories') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Clothes', - description: 'Here is description', - parent_category_id: category.id, - }); - - expect(res.status).equals(200); - - const storedCategory = await ItemCategory.tenant().query() - .where('id', res.body.category.id) - .first(); - - expect(storedCategory.name).equals('Clothes'); - expect(storedCategory.description).equals('Here is description'); - expect(storedCategory.parentCategoryId).equals(category.id); - expect(storedCategory.userId).to.be.a('number'); - }); - }); - - describe('POST `/items_category/{id}`', () => { - it('Should not update a item category if the user was not authorized.', async () => { - const category = await tenantFactory.create('item_category'); - const res = await request() - .post(`/api/item_categories/${category.id}`) - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should `name` be required.', async () => { - const category = await tenantFactory.create('item_category'); - const res = await request() - .post(`/api/item_categories/${category.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - }); - - it('Should `parent_category_id` be exist in the storage.', async () => { - const category = await tenantFactory.create('item_category'); - const res = await request() - .post(`/api/item_categories/${category.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Name', - parent_category_id: 10, - }); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'PARENT_CATEGORY_NOT_FOUND', code: 100, - }); - }); - - it('Should response success with correct data format.', async () => { - const category = await tenantFactory.create('item_category'); - const anotherCategory = await tenantFactory.create('item_category'); - - const res = await request() - .post(`/api/item_categories/${category.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Name', - parent_category_id: anotherCategory.id, - description: 'updated description', - }); - - expect(res.status).equals(200); - }); - - it('Should item category data be update in the storage.', async () => { - const category = await tenantFactory.create('item_category'); - const anotherCategory = await tenantFactory.create('item_category'); - - const res = await request() - .post(`/api/item_categories/${category.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'Name', - parent_category_id: anotherCategory.id, - description: 'updated description', - }); - - const storedCategory = await ItemCategory.tenant().query() - .where('id', res.body.id) - .first(); - - expect(storedCategory.name).equals('Name'); - expect(storedCategory.description).equals('updated description'); - expect(storedCategory.parentCategoryId).equals(anotherCategory.id); - }); - }); - - describe('DELETE: `/items_categories`', async () => { - it('Should not delete the give item category if the user was not authorized.', async () => { - const category = await tenantFactory.create('item_category'); - - const res = await request() - .delete(`/api/item_categories/${category.id}`) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should not delete if the item category was not found.', async () => { - const res = await request() - .delete('/api/item_categories/10') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - }); - - it('Should response success after delete the given item category.', async () => { - const category = await tenantFactory.create('item_category'); - const res = await request() - .delete(`/api/item_categories/${category.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - }); - - it('Should delete the give item category from the storage.', async () => { - const category = await tenantFactory.create('item_category'); - const res = await request() - .delete(`/api/item_categories/${category.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const categories = await ItemCategory.tenant().query() - .where('id', category.id); - - expect(categories).to.have.lengthOf(0); - }); - }); - - describe('GET: `/item_categories`', () => { - - it('Should retrieve list of item categories.', async () => { - const category1 = await tenantFactory.create('item_category'); - const category2 = await tenantFactory.create('item_category', { parent_category_id: category1.id }); - - const res = await request() - .get('/api/item_categories') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.body.categories).to.be.a('array'); - expect(res.body.categories.length).equals(2); - - expect(res.body.categories[0].id).to.be.a('number'); - expect(res.body.categories[0].name).to.be.a('string'); - expect(res.body.categories[0].parent_category_id).to.be.a('null'); - expect(res.body.categories[0].description).to.be.a('string'); - - expect(res.body.categories[1].parent_category_id).to.be.a('number'); - }); - - - it('Should retrieve of related items.', async () => { - const category1 = await tenantFactory.create('item_category'); - const category2 = await tenantFactory.create('item_category', { parent_category_id: category1.id }); - - await tenantFactory.create('item', { category_id: category1.id }); - - const res = await request() - .get('/api/item_categories') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.body.categories[0].count).to.be.a('number'); - expect(res.body.categories[0].count).equals(1); - }); - }); - - describe('GET `/items_category/{id}', () => { - it('Should response not found with incorrect item category ID.', () => { - - }); - - it('Should response success with exist item category.', () => { - - }); - - it('Should response data of item category.', () => { - - }); - }); - - describe('DELETE: `/items_cateogires`', () => { - it('Should response bad request in case one of item categories id not exists in the storage.', async () => { - const res = await request() - .delete('/api/item_categories/bulk') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [1020, 2020], - }) - .send(); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'ITEM.CATEGORIES.IDS.NOT.FOUND', code: 200 - }); - }); - - it('Should delete the given item categories.', async () => { - const itemCategory = await tenantFactory.create('item_category'); - const itemCategory2 = await tenantFactory.create('item_category'); - - const res = await request() - .delete('/api/item_categories/bulk') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - ids: [itemCategory.id, itemCategory2.id], - }) - .send(); - - const deleteItemCategories = await ItemCategory.tenant().query() - .whereIn('id', [itemCategory.id, itemCategory2.id]); - - expect(deleteItemCategories.length).equals(0); - }); - }); -}); diff --git a/server/tests/routes/options.test.js b/server/tests/routes/options.test.js deleted file mode 100644 index cc7445e30..000000000 --- a/server/tests/routes/options.test.js +++ /dev/null @@ -1,120 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import Option from 'models/Option'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('routes: `/options`', () => { - describe('POST: `/options/`', () => { - it('Should response unauthorized if the user was not logged in.', async () => { - const res = await request() - .post('/api/options') - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should response the options key and group is not defined.', async () => { - const res = await request() - .post('/api/options') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - options: [ - { - key: 'key', - value: 'hello world', - group: 'group', - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'OPTIONS.KEY.NOT.DEFINED', - code: 200, - keys: [ - { key: 'key', group: 'group' }, - ], - }); - }); - - it('Should save options to the storage.', async () => { - const res = await request() - .post('/api/options') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - options: [{ - key: 'name', - group: 'organization', - value: 'hello world', - }], - }); - expect(res.status).equals(200); - - const storedOptions = await Option.tenant().query() - .where('group', 'organization') - .where('key', 'name'); - - expect(storedOptions.metadata.length).equals(1); - }); - }); - - describe('GET: `/options`', () => { - it('Should response unauthorized if the user was not unauthorized.', async () => { - const res = await request() - .get('/api/options') - .query({ - group: 'organization', - }) - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should retrieve options the associated to the given group.', async () => { - await tenantFactory.create('option', { group: 'organization', key: 'name' }); - await tenantFactory.create('option', { group: 'organization', key: 'base_currency' }); - - const res = await request() - .get('/api/options') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - group: 'organization', - }) - .send(); - - expect(res.status).equals(200); - expect(res.body.options).is.an('array'); - expect(res.body.options.length).equals(2); - }); - - it('Should retrieve options that associated to the given key.', async () => { - await tenantFactory.create('option', { group: 'organization', key: 'base_currency' }); - await tenantFactory.create('option', { group: 'organization', key: 'name' }); - - const res = await request() - .get('/api/options') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - key: 'name', - }) - .send(); - - expect(res.status).equals(200); - expect(res.body.options).is.an('array'); - expect(res.body.options.length).equals(1); - }); - }); -}); \ No newline at end of file diff --git a/server/tests/routes/payable_aging.test.js b/server/tests/routes/payable_aging.test.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/server/tests/routes/payment_receives.test.js b/server/tests/routes/payment_receives.test.js deleted file mode 100644 index c89af23fb..000000000 --- a/server/tests/routes/payment_receives.test.js +++ /dev/null @@ -1,274 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; -import { - PaymentReceive, - PaymentReceiveEntry, -} from 'models'; - -describe('route: `/sales/payment_receives`', () => { - describe('POST: `/sales/payment_receives`', () => { - it('Should `customer_id` be required.', async () => { - const res = await request() - .post('/api/sales/payment_receives') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'customer_id', - location: 'body', - }); - }); - - it('Should `payment_date` be required.', async () => { - const res = await request() - .post('/api/sales/payment_receives') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'payment_date', - location: 'body', - }); - }); - - it('Should `deposit_account_id` be required.', async () => { - const res = await request() - .post('/api/sales/payment_receives') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'deposit_account_id', - location: 'body', - }); - }); - - it('Should `payment_receive_no` be required.', async () => { - const res = await request() - .post('/api/sales/payment_receives') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'payment_receive_no', - location: 'body', - }); - }); - - it('Should invoices IDs be required.', async () => { - const res = await request() - .post('/api/sales/payment_receives') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'payment_receive_no', - location: 'body', - }); - }); - - it('Should `customer_id` be exists on the storage.', async () => { - const res = await request() - .post('/api/sales/payment_receives') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: 123, - payment_date: '2020-02-02', - reference_no: '123', - deposit_account_id: 100, - payment_receive_no: '123', - entries: [ - { - invoice_id: 1, - payment_amount: 1000, - } - ], - }); - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMER.ID.NOT.EXISTS', code: 200, - }); - }); - - it('Should `deposit_account_id` be exists on the storage.', async () => { - const customer = await tenantFactory.create('customer'); - const res = await request() - .post('/api/sales/payment_receives') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - payment_date: '2020-02-02', - reference_no: '123', - deposit_account_id: 10000, - payment_receive_no: '123', - entries: [ - { - invoice_id: 1, - payment_amount: 1000, - } - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'DEPOSIT.ACCOUNT.NOT.EXISTS', code: 300, - }); - }); - - it('Should invoices IDs be exist on the storage.', async () => { - const customer = await tenantFactory.create('customer'); - const account = await tenantFactory.create('account'); - - const res = await request() - .post('/api/sales/payment_receives') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - payment_date: '2020-02-02', - reference_no: '123', - deposit_account_id: account.id, - payment_receive_no: '123', - entries: [ - { - invoice_id: 1, - payment_amount: 1000, - } - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'DEPOSIT.ACCOUNT.NOT.EXISTS', code: 300, - }); - }); - - it('Should payment receive number be unique on the storage.', async () => { - const customer = await tenantFactory.create('customer'); - const account = await tenantFactory.create('account'); - const paymentReceive = await tenantFactory.create('payment_receive', { - payment_receive_no: '123', - }); - - const res = await request() - .post('/api/sales/payment_receives') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - payment_date: '2020-02-02', - reference_no: '123', - deposit_account_id: account.id, - payment_receive_no: '123', - entries: [ - { - invoice_id: 1, - payment_amount: 1000, - } - ], - }); - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'PAYMENT.RECEIVE.NUMBER.EXISTS', code: 400, - }); - }); - - it('Should store the payment receive details with associated entries.', async () => { - const customer = await tenantFactory.create('customer'); - const account = await tenantFactory.create('account'); - const invoice = await tenantFactory.create('sale_invoice'); - - const res = await request() - .post('/api/sales/payment_receives') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - payment_date: '2020-02-02', - reference_no: '123', - deposit_account_id: account.id, - payment_receive_no: '123', - entries: [ - { - invoice_id: invoice.id, - payment_amount: 1000, - } - ], - }); - - const storedPaymentReceived = await PaymentReceive.tenant().query().where('id', res.body.id).first(); - - expect(res.status).equals(200); - expect(storedPaymentReceived.customerId).equals(customer.id) - expect(storedPaymentReceived.referenceNo).equals('123'); - expect(storedPaymentReceived.paymentReceiveNo).equals('123'); - }); - }); - - describe('POST: `/sales/payment_receives/:id`', () => { - it('Should update the payment receive details with associated entries.', async () => { - const paymentReceive = await tenantFactory.create('payment_receive'); - const customer = await tenantFactory.create('customer'); - const account = await tenantFactory.create('account'); - const invoice = await tenantFactory.create('sale_invoice'); - - const res = await request() - .post(`/api/sales/payment_receives/${paymentReceive.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - payment_date: '2020-02-02', - reference_no: '123', - deposit_account_id: account.id, - payment_receive_no: '123', - entries: [ - { - invoice_id: invoice.id, - payment_amount: 1000, - } - ], - }); - expect(res.status).equals(200); - }); - }); - - describe('DELETE: `/sales/payment_receives/:id`', () => { - it('Should response the given payment receive is not exists on the storage.', async () => { - const res = await request() - .delete(`/api/sales/payment_receives/123`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'PAYMENT.RECEIVE.NO.EXISTS', code: 600, - }); - }); - }); -}); \ No newline at end of file diff --git a/server/tests/routes/receivable_aging.test.js b/server/tests/routes/receivable_aging.test.js deleted file mode 100644 index a08c05fb1..000000000 --- a/server/tests/routes/receivable_aging.test.js +++ /dev/null @@ -1,234 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import Item from 'models/Item'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('routes: `/financial_statements/receivable_aging_summary`', () => { - - it('Should retrieve customers list.', async () => { - const customer1 = await tenantFactory.create('customer', { display_name: 'Ahmed' }); - const customer2 = await tenantFactory.create('customer', { display_name: 'Mohamed' }); - - const res = await request() - .get('/api/financial_statements/receivable_aging_summary') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - - expect(res.body.aging.customers).is.an('array'); - expect(res.body.aging.customers.length).equals(2); - - expect(res.body.aging.customers[0].customer_name).equals('Ahmed'); - expect(res.body.aging.customers[1].customer_name).equals('Mohamed'); - }); - - it('Should respon se the customers ids not found.', async () => { - const res = await request() - .get('/api/financial_statements/receivable_aging_summary') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - customer_ids: [3213, 3322], - }) - .send(); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMERS.IDS.NOT.FOUND', code: 300, ids: [3213, 3322] - }) - }); - - it('Should retrieve aging report columns.', async () => { - const customer1 = await tenantFactory.create('customer', { display_name: 'Ahmed' }); - const customer2 = await tenantFactory.create('customer', { display_name: 'Mohamed' }); - - const res = await request() - .get('/api/financial_statements/receivable_aging_summary') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - as_date: '2020-06-01', - aging_days_before: 30, - aging_periods: 6, - }) - .send(); - - expect(res.body.columns).length(6); - expect(res.body.columns[0].before_days).equals(0); - expect(res.body.columns[0].to_days).equals(30); - - expect(res.body.columns[1].before_days).equals(31); - expect(res.body.columns[1].to_days).equals(60); - - expect(res.body.columns[2].before_days).equals(61); - expect(res.body.columns[2].to_days).equals(90); - - expect(res.body.columns[3].before_days).equals(91); - expect(res.body.columns[3].to_days).equals(120); - - expect(res.body.columns[4].before_days).equals(121); - expect(res.body.columns[4].to_days).equals(150); - - expect(res.body.columns[5].before_days).equals(151); - expect(res.body.columns[5].to_days).equals(null); - }); - - it('Should retrieve receivable total of the customers.', async () => { - const customer1 = await tenantFactory.create('customer', { display_name: 'Ahmed' }); - const customer2 = await tenantFactory.create('customer', { display_name: 'Mohamed' }); - - await tenantFactory.create('account_transaction', { - contact_id: customer1.id, - contact_type: 'customer', - debit: 10000, - credit: 0, - account_id: 10, - date: '2020-01-01', - }); - - await tenantFactory.create('account_transaction', { - contact_id: customer1.id, - contact_type: 'customer', - debit: 1000, - credit: 0, - account_id: 10, - date: '2020-03-15', - }); - - // Receive - await tenantFactory.create('account_transaction', { - contact_id: customer1.id, - contact_type: 'customer', - debit: 0, - credit: 8000, - account_id: 10, - date: '2020-06-01', - }); - - const res = await request() - .get('/api/financial_statements/receivable_aging_summary') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - as_date: '2020-06-01', - aging_days_before: 30, - aging_periods: 6, - }) - .send(); - - expect(res.body.aging.total[0].total).equals(0); - expect(res.body.aging.total[1].total).equals(0); - expect(res.body.aging.total[2].total).equals(1000); - expect(res.body.aging.total[3].total).equals(0); - expect(res.body.aging.total[4].total).equals(0); - expect(res.body.aging.total[5].total).equals(2000); - }); - - - it('Should retrieve customer aging.', async () => { - const customer1 = await tenantFactory.create('customer', { display_name: 'Ahmed' }); - const customer2 = await tenantFactory.create('customer', { display_name: 'Mohamed' }); - - await tenantFactory.create('account_transaction', { - contact_id: customer1.id, - contact_type: 'customer', - debit: 10000, - credit: 0, - account_id: 10, - date: '2020-01-14', - }); - - await tenantFactory.create('account_transaction', { - contact_id: customer1.id, - contact_type: 'customer', - debit: 1000, - credit: 0, - account_id: 10, - date: '2020-03-15', - }); - - // Receive - await tenantFactory.create('account_transaction', { - contact_id: customer1.id, - contact_type: 'customer', - debit: 0, - credit: 8000, - account_id: 10, - date: '2020-06-01', - }); - - const res = await request() - .get('/api/financial_statements/receivable_aging_summary') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - as_date: '2020-06-01', - aging_days_before: 30, - aging_periods: 6, - }) - .send(); - - expect(res.body.aging.customers[0].aging[0].total).equals(0); - expect(res.body.aging.customers[0].aging[1].total).equals(0); - expect(res.body.aging.customers[0].aging[2].total).equals(1000); - expect(res.body.aging.customers[0].aging[3].total).equals(0); - expect(res.body.aging.customers[0].aging[4].total).equals(2000); - expect(res.body.aging.customers[0].aging[5].total).equals(0); - }); - - it('Should retrieve the queried customers ids only.', async () => { - const customer1 = await tenantFactory.create('customer', { display_name: 'Ahmed' }); - const customer2 = await tenantFactory.create('customer', { display_name: 'Mohamed' }); - - await tenantFactory.create('account_transaction', { - contact_id: customer1.id, - contact_type: 'customer', - debit: 10000, - credit: 0, - account_id: 10, - date: '2020-01-14', - }); - - await tenantFactory.create('account_transaction', { - contact_id: customer1.id, - contact_type: 'customer', - debit: 1000, - credit: 0, - account_id: 10, - date: '2020-03-15', - }); - - // Receive - await tenantFactory.create('account_transaction', { - contact_id: customer1.id, - contact_type: 'customer', - debit: 0, - credit: 8000, - account_id: 10, - date: '2020-06-01', - }); - - const res = await request() - .get('/api/financial_statements/receivable_aging_summary') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ - as_date: '2020-06-01', - aging_days_before: 30, - aging_periods: 6, - customer_ids: [customer1.id], - }) - .send(); - - expect(res.body.aging.customers.length).equals(1); - }) -}); diff --git a/server/tests/routes/sales_estimates.test.js b/server/tests/routes/sales_estimates.test.js deleted file mode 100644 index 54e20241a..000000000 --- a/server/tests/routes/sales_estimates.test.js +++ /dev/null @@ -1,439 +0,0 @@ -const { iteratee } = require('lodash'); -import { tenantWebsite, tenantFactory, loginRes } from '~/dbInit'; -import { request, expect } from '~/testInit'; -import { SaleEstimate, SaleEstimateEntry } from '../../src/models'; - -describe('route: `/sales/estimates`', () => { - describe('POST: `/sales/estimates`', () => { - it('Should `customer_id` be required.', async () => { - const res = await request() - .post('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'customer_id', - location: 'body', - }); - }); - - it('Should `estimate_date` be required.', async () => { - const res = await request() - .post('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'estimate_date', - location: 'body', - }); - }); - - it('Should `estimate_number` be required.', async () => { - const res = await request() - .post('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'estimate_number', - location: 'body', - }); - }); - - it('Should `entries` be atleast one entry.', async () => { - const res = await request() - .post('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [], - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - value: [], - msg: 'Invalid value', - param: 'entries', - location: 'body', - }); - }); - - it('Should `entries.*.item_id` be required.', async () => { - const res = await request() - .post('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].item_id', - location: 'body', - }); - }); - - it('Should `entries.*.quantity` be required.', async () => { - const res = await request() - .post('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].quantity', - location: 'body', - }); - }); - - it('Should be `entries.*.rate` be required.', async () => { - const res = await request() - .post('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].rate', - location: 'body', - }); - }); - - it('Should `customer_id` be exists on the storage.', async () => { - const res = await request() - .post('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: 10, - estimate_date: '2020-02-02', - expiration_date: '2020-03-03', - estimate_number: '1', - entries: [ - { - item_id: 1, - rate: 1, - quantity: 2, - } - ], - }); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMER.ID.NOT.FOUND', code: 200, - }); - }); - - it('Should `estimate_number` be unique on the storage.', async () => { - const saleEstimate = await tenantFactory.create('sale_estimate'); - - const res = await request() - .post('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: saleEstimate.customerId, - estimate_date: '2020-02-02', - expiration_date: '2020-03-03', - estimate_number: saleEstimate.estimateNumber, - entries: [ - { - item_id: 1, - rate: 1, - quantity: 2, - } - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'ESTIMATE.NUMBER.IS.NOT.UNQIUE', code: 300, - }); - }); - - it('Should `entries.*.item_id` be exists on the storage.', async () => { - const customer = await tenantFactory.create('customer'); - const res = await request() - .post('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - estimate_date: '2020-02-02', - expiration_date: '2020-03-03', - estimate_number: '12', - entries: [ - { - item_id: 1, - rate: 1, - quantity: 2, - } - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'ITEMS.IDS.NOT.EXISTS', code: 400, - }); - }); - - it('Should store the given details on the storage.', async () => { - const customer = await tenantFactory.create('customer'); - const item = await tenantFactory.create('item'); - - const res = await request() - .post('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - estimate_date: '2020-02-02', - expiration_date: '2020-03-03', - estimate_number: '12', - reference: 'reference', - note: 'note here', - terms_conditions: 'terms and conditions', - entries: [ - { - item_id: item.id, - rate: 1, - quantity: 2, - description: 'desc..' - } - ], - }); - - expect(res.status).equals(200); - - const storedEstimate = await SaleEstimate.tenant().query().where('id', res.body.id).first(); - const storedEstimateEntry = await SaleEstimateEntry.tenant().query().where('estimate_id', res.body.id).first(); - - expect(storedEstimate.id).equals(res.body.id); - expect(storedEstimate.customerId).equals(customer.id); - expect(storedEstimate.reference).equals('reference') - expect(storedEstimate.note).equals('note here'); - expect(storedEstimate.termsConditions).equals('terms and conditions'); - expect(storedEstimate.estimateNumber).equals('12'); - - expect(storedEstimateEntry.itemId).equals(item.id); - expect(storedEstimateEntry.rate).equals(1); - expect(storedEstimateEntry.quantity).equals(2); - expect(storedEstimateEntry.description).equals('desc..'); - }); - }); - - describe('DELETE: `/sales/estimates/:id`', () => { - it('Should estimate id be exists on the storage.', async () => { - const estimate = await tenantFactory.create('sale_estimate'); - const res = await request() - .delete(`/api/sales/estimates/123`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'SALE.ESTIMATE.ID.NOT.FOUND', code: 200 - }); - }); - - it('Should delete the given estimate with associated entries from the storage.', async () => { - const estimate = await tenantFactory.create('sale_estimate'); - const estimateEntry = await tenantFactory.create('sale_estimate_entry', { estimate_id: estimate.id }); - - const res = await request() - .delete(`/api/sales/estimates/${estimate.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const foundEstimate = await SaleEstimate.tenant().query().where('id', estimate.id); - const foundEstimateEntry = await SaleEstimateEntry.tenant().query().where('estimate_id', estimate.id); - - expect(res.status).equals(200); - expect(foundEstimate.length).equals(0); - expect(foundEstimateEntry.length).equals(0); - }); - }); - - describe('POST: `/sales/estimates/:id`', () => { - it('Should estimate id be exists on the storage.', async () => { - const customer = await tenantFactory.create('customer'); - const item = await tenantFactory.create('item'); - - const res = await request() - .post(`/api/sales/estimates/123`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - estimate_date: '2020-02-02', - expiration_date: '2020-03-03', - estimate_number: '12', - reference: 'reference', - note: 'note here', - terms_conditions: 'terms and conditions', - entries: [ - { - item_id: item.id, - rate: 1, - quantity: 2, - description: 'desc..' - } - ], - }) - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'SALE.ESTIMATE.ID.NOT.FOUND', code: 200 - }); - }); - - it('Should `entries.*.item_id` be exists on the storage.', async () => { - const saleEstimate = await tenantFactory.create('sale_estimate'); - const customer = await tenantFactory.create('customer'); - - const res = await request() - .post(`/api/sales/estimates/${saleEstimate.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - estimate_date: '2020-02-02', - expiration_date: '2020-03-03', - estimate_number: '12', - entries: [ - { - item_id: 1, - rate: 1, - quantity: 2, - } - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'ITEMS.IDS.NOT.EXISTS', code: 400 - }); - }); - - it('Should sale estimate number unique on the storage.', async () => { - const saleEstimate = await tenantFactory.create('sale_estimate'); - const saleEstimate2 = await tenantFactory.create('sale_estimate'); - - const res = await request() - .post(`/api/sales/estimates/${saleEstimate.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: saleEstimate.customerId, - estimate_date: '2020-02-02', - expiration_date: '2020-03-03', - estimate_number: saleEstimate2.estimateNumber, - entries: [ - { - item_id: 1, - rate: 1, - quantity: 2, - } - ], - }); - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'ESTIMATE.NUMBER.IS.NOT.UNQIUE', code: 300, - }); - }); - - it('Should sale estimate entries IDs be exists on the storage and associated to the sale estimate.', async () => { - const item = await tenantFactory.create('item'); - const saleEstimate = await tenantFactory.create('sale_estimate'); - const saleEstimate2 = await tenantFactory.create('sale_estimate'); - - const res = await request() - .post(`/api/sales/estimates/${saleEstimate.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: saleEstimate.customerId, - estimate_date: '2020-02-02', - expiration_date: '2020-03-03', - estimate_number: saleEstimate.estimateNumber, - entries: [ - { - id: 100, - item_id: item.id, - rate: 1, - quantity: 2, - } - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'ESTIMATE.NOT.FOUND.ENTRIES.IDS', code: 500, - }); - }); - - it('Should update the given sale estimates with associated entries.', async () => { - const customer = await tenantFactory.create('customer'); - const item = await tenantFactory.create('item'); - const saleEstimate = await tenantFactory.create('sale_estimate'); - const saleEstimateEntry = await tenantFactory.create('sale_estimate_entry', { - estimate_id: saleEstimate.id, - }); - - const res = await request() - .post(`/api/sales/estimates/${saleEstimate.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - estimate_date: '2020-02-02', - expiration_date: '2020-03-03', - estimate_number: '123', - entries: [ - { - id: saleEstimateEntry.id, - item_id: item.id, - rate: 100, - quantity: 200, - } - ], - }); - expect(res.status).equals(200); - }); - }); - - - describe('GET: `/sales/estimates`', () => { - it('Should retrieve sales estimates.', async () => { - const res = await request() - .get('/api/sales/estimates') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - console.log(res.status, res.body); - }); - }); -}); diff --git a/server/tests/routes/sales_invoices.test.js b/server/tests/routes/sales_invoices.test.js deleted file mode 100644 index 8e759fbdc..000000000 --- a/server/tests/routes/sales_invoices.test.js +++ /dev/null @@ -1,494 +0,0 @@ -import { tenantWebsite, tenantFactory, loginRes } from '~/dbInit'; -import { request, expect } from '~/testInit'; -import { SaleInvoice } from 'models'; -import { SaleInvoiceEntry } from '../../src/models'; - -describe('route: `/sales/invoices`', () => { - describe('POST: `/sales/invoices`', () => { - it('Should `customer_id` be required.', async () => { - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'customer_id', - location: 'body', - }); - }); - - it('Should `invoice_date` be required.', async () => { - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'invoice_date', - location: 'body', - }); - }); - - it('Should `due_date` be required.', async () => { - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'due_date', - location: 'body', - }); - }); - - it('Should `invoice_no` be required.', async () => { - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'invoice_no', - location: 'body', - }); - }); - - it('Should `status` be required.', async () => { - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'status', - location: 'body', - }); - }); - - it('Should `entries.*.item_id` be required.', async () => { - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].item_id', - location: 'body', - }); - }); - - it('Should `entries.*.quantity` be required.', async () => { - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].quantity', - location: 'body', - }); - }); - - it('Should `entries.*.rate` be required.', async () => { - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].rate', - location: 'body', - }); - }); - - it('Should `customer_id` be exists on the storage.', async () => { - const customer = await tenantFactory.create('customer'); - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: 123, - invoice_date: '2020-02-02', - due_date: '2020-03-03', - invoice_no: '123', - reference_no: '123', - status: 'published', - invoice_message: 'Invoice message...', - terms_conditions: 'terms and conditions', - entries: [ - { - item_id: 1, - rate: 1, - quantity: 1, - discount: 1, - } - ] - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMER.ID.NOT.EXISTS', code: 200, - }); - }); - - it('Should `invoice_date` be bigger than `due_date`.', async () => { - - }); - - it('Should `invoice_no` be unique on the storage.', async () => { - const saleInvoice = await tenantFactory.create('sale_invoice', { - invoice_no: '123', - }); - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: 123, - invoice_date: '2020-02-02', - due_date: '2020-03-03', - invoice_no: '123', - reference_no: '123', - status: 'published', - invoice_message: 'Invoice message...', - terms_conditions: 'terms and conditions', - entries: [ - { - item_id: 1, - rate: 1, - quantity: 1, - discount: 1, - } - ] - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'SALE.INVOICE.NUMBER.IS.EXISTS', code: 200 - }); - }); - - it('Should `entries.*.item_id` be exists on the storage.', async () => { - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: 123, - invoice_date: '2020-02-02', - due_date: '2020-03-03', - invoice_no: '123', - reference_no: '123', - status: 'published', - invoice_message: 'Invoice message...', - terms_conditions: 'terms and conditions', - entries: [ - { - item_id: 1, - rate: 1, - quantity: 1, - discount: 1, - } - ] - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'ITEMS.IDS.NOT.EXISTS', code: 300, - }); - }); - - it('Should save the given sale invoice details with associated entries.', async () => { - const customer = await tenantFactory.create('customer'); - const item = await tenantFactory.create('item'); - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - invoice_date: '2020-02-02', - due_date: '2020-03-03', - invoice_no: '123', - reference_no: '123', - status: 'published', - invoice_message: 'Invoice message...', - terms_conditions: 'terms and conditions', - entries: [ - { - item_id: item.id, - rate: 1, - quantity: 1, - discount: 1, - } - ] - }); - expect(res.status).equals(200); - }); - }); - - describe('POST: `/api/sales/invoices/:id`', () => { - it('Should `customer_id` be required.', async () => { - const res = await request() - .post('/api/sales/invoices/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'customer_id', - location: 'body', - }); - }); - - it('Should `invoice_date` be required.', async () => { - const res = await request() - .post('/api/sales/invoices/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'invoice_date', - location: 'body', - }); - }); - - - it('Should `status` be required.', async () => { - const res = await request() - .post('/api/sales/invoices/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'status', - location: 'body', - }); - }); - - it('Should `entries.*.item_id` be required.', async () => { - const res = await request() - .post('/api/sales/invoices/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].item_id', - location: 'body', - }); - }); - - it('Should `entries.*.quantity` be required.', async () => { - const res = await request() - .post('/api/sales/invoices/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].quantity', - location: 'body', - }); - }); - - it('Should `entries.*.rate` be required.', async () => { - const res = await request() - .post('/api/sales/invoices/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - entries: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'entries[0].rate', - location: 'body', - }); - }); - - it('Should `customer_id` be exists on the storage.', async () => { - const customer = await tenantFactory.create('customer'); - const saleInvoice = await tenantFactory.create('sale_invoice'); - - const res = await request() - .post(`/api/sales/invoices/${saleInvoice.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: 123, - invoice_date: '2020-02-02', - due_date: '2020-03-03', - invoice_no: '123', - reference_no: '123', - status: 'published', - invoice_message: 'Invoice message...', - terms_conditions: 'terms and conditions', - entries: [ - { - item_id: 1, - rate: 1, - quantity: 1, - discount: 1, - } - ] - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMER.ID.NOT.EXISTS', code: 200, - }); - }); - - it('Should `invoice_date` be bigger than `due_date`.', async () => { - - }); - - it('Should `invoice_no` be unique on the storage.', async () => { - const saleInvoice = await tenantFactory.create('sale_invoice', { - invoice_no: '123', - }); - const res = await request() - .post('/api/sales/invoices') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: 123, - invoice_date: '2020-02-02', - due_date: '2020-03-03', - invoice_no: '123', - reference_no: '123', - status: 'published', - invoice_message: 'Invoice message...', - terms_conditions: 'terms and conditions', - entries: [ - { - item_id: 1, - rate: 1, - quantity: 1, - discount: 1, - } - ] - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'SALE.INVOICE.NUMBER.IS.EXISTS', code: 200 - }); - }); - - it('Should update the sale invoice details with associated entries.', async () => { - const saleInvoice = await tenantFactory.create('sale_invoice'); - const customer = await tenantFactory.create('customer'); - const item = await tenantFactory.create('item'); - - const res = await request() - .post(`/api/sales/invoices/${saleInvoice.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - customer_id: customer.id, - invoice_date: '2020-02-02', - due_date: '2020-03-03', - invoice_no: '1', - reference_no: '123', - status: 'published', - invoice_message: 'Invoice message...', - terms_conditions: 'terms and conditions', - entries: [ - { - item_id: item.id, - rate: 1, - quantity: 1, - discount: 1, - } - ] - }); - expect(res.status).equals(200); - }); - }); - - describe('DELETE: `/sales/invoices/:id`', () => { - it('Should retrieve sale invoice not found.', async () => { - const res = await request() - .delete('/api/sales/invoices/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'SALE.INVOICE.NOT.FOUND', code: 200, - }); - }); - - it('Should delete the given sale invoice with assocaited entries.', async () => { - const saleInvoice = await tenantFactory.create('sale_invoice'); - const saleInvoiceEntey = await tenantFactory.create('sale_invoice_entry', { - sale_invoice_id: saleInvoice.id, - }); - - const res = await request() - .delete(`/api/sales/invoices/${saleInvoice.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const storedSaleInvoice = await SaleInvoice.tenant().query().where('id', saleInvoice.id); - const storedSaleInvoiceEntry = await SaleInvoiceEntry.tenant().query().where('id', saleInvoiceEntey.id); - - expect(res.status).equals(200); - expect(storedSaleInvoice.length).equals(0); - expect(storedSaleInvoiceEntry.length).equals(0); - }); - }); -}); \ No newline at end of file diff --git a/server/tests/routes/sales_receipts.test.js b/server/tests/routes/sales_receipts.test.js deleted file mode 100644 index 5d112acb1..000000000 --- a/server/tests/routes/sales_receipts.test.js +++ /dev/null @@ -1,294 +0,0 @@ -import { tenantWebsite, tenantFactory, loginRes } from '~/dbInit'; -import { request, expect } from '~/testInit'; -import { SaleReceipt } from 'models'; - -describe('route: `/sales/receipts`', () => { - describe('POST: `/sales/receipts`', () => { - it('Should `deposit_account_id` be required.', async () => { - const res = await request() - .post('/api/sales/receipts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'deposit_account_id', - location: 'body', - }); - }); - - it('Should `customer_id` be required.', async () => { - const res = await request() - .post('/api/sales/receipts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'customer_id', - location: 'body', - }); - }); - - it('should `receipt_date` be required.', async () => { - const res = await request() - .post('/api/sales/receipts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'receipt_date', - location: 'body', - }); - }); - - it('Should `entries.*.item_id` be required.', async () => {}); - - it('Should `deposit_account_id` be exists.', async () => { - const res = await request() - .post('/api/sales/receipts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - deposit_account_id: 12220, - customer_id: 1, - receipt_date: '2020-02-02', - reference_no: '123', - entries: [ - { - item_id: 1, - quantity: 1, - rate: 2, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'DEPOSIT.ACCOUNT.NOT.EXISTS', - code: 300, - }); - }); - - it('Should `customer_id` be exists.', async () => { - const res = await request() - .post('/api/sales/receipts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - deposit_account_id: 12220, - customer_id: 1001, - receipt_date: '2020-02-02', - reference_no: '123', - entries: [ - { - item_id: 1, - quantity: 1, - rate: 2, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'CUSTOMER.ID.NOT.EXISTS', - code: 200, - }); - }); - - it('Should all `entries.*.item_id` be exists on the storage.', async () => { - const res = await request() - .post('/api/sales/receipts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - deposit_account_id: 12220, - customer_id: 1001, - receipt_date: '2020-02-02', - reference_no: '123', - entries: [ - { - item_id: 1000, - quantity: 1, - rate: 2, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'ITEMS.IDS.NOT.EXISTS', - code: 400, - }); - }); - - it('Should store the sale receipt details with entries to the storage.', async () => { - const item = await tenantFactory.create('item'); - const customer = await tenantFactory.create('customer'); - const account = await tenantFactory.create('account'); - - const res = await request() - .post('/api/sales/receipts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - deposit_account_id: account.id, - customer_id: customer.id, - receipt_date: '2020-02-02', - reference_no: '123', - receipt_message: 'Receipt message...', - statement: 'Receipt statement...', - entries: [ - { - item_id: item.id, - quantity: 1, - rate: 2, - }, - ], - }); - - const storedSaleReceipt = await SaleReceipt.tenant() - .query() - .where('id', res.body.id) - .first(); - - expect(res.status).equals(200); - expect(storedSaleReceipt.depositAccountId).equals(account.id); - expect(storedSaleReceipt.referenceNo).equals('123'); - expect(storedSaleReceipt.customerId).equals(customer.id); - - expect(storedSaleReceipt.receiptMessage).equals('Receipt message...'); - expect(storedSaleReceipt.statement).equals('Receipt statement...'); - }); - }); - - describe('DELETE: `/sales/receipts/:id`', () => { - it('Should the given sale receipt id be exists on the storage.', async () => { - const res = await request() - .delete('/api/sales/receipts/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'SALE.RECEIPT.NOT.FOUND', - code: 200, - }); - }); - - it('Should delete the sale receipt with associated entries and journal transactions.', async () => { - const saleReceipt = await tenantFactory.create('sale_receipt'); - const saleReceiptEntry = await tenantFactory.create( - 'sale_receipt_entry', - { - sale_receipt_id: saleReceipt.id, - } - ); - const res = await request() - .delete(`/api/sales/receipts/${saleReceipt.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const storedSaleReceipt = await SaleReceipt.tenant() - .query() - .where('id', saleReceipt.id); - const storedSaleReceiptEntries = await SaleReceipt.tenant() - .query() - .where('id', saleReceiptEntry.id); - - expect(res.status).equals(200); - expect(storedSaleReceipt.length).equals(0); - expect(storedSaleReceiptEntries.length).equals(0); - }); - }); - - describe('POST: `/sales/receipts/:id`', () => { - it('Should the given sale receipt id be exists on the storage.', async () => { - const res = await request() - .post('/api/sales/receipts/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - deposit_account_id: 123, - customer_id: 123, - receipt_date: '2020-02-02', - reference_no: '123', - receipt_message: 'Receipt message...', - statement: 'Receipt statement...', - entries: [ - { - item_id: 123, - quantity: 1, - rate: 2, - }, - ], - }); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'SALE.RECEIPT.NOT.FOUND', - code: 200, - }); - }); - - it('Should update the sale receipt details with associated entries.', async () => { - const saleReceipt = await tenantFactory.create('sale_receipt'); - const depositAccount = await tenantFactory.create('account'); - const customer = await tenantFactory.create('customer'); - const item = await tenantFactory.create('item'); - - const res = await request() - .post(`/api/sales/receipts/${saleReceipt.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - deposit_account_id: depositAccount.id, - customer_id: customer.id, - receipt_date: '2020-02-02', - reference_no: '123', - receipt_message: 'Receipt message...', - statement: 'Receipt statement...', - entries: [ - { - id: 100, - item_id: item.id, - quantity: 1, - rate: 2, - }, - ], - }); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.deep.equals({ - type: 'ENTRIES.IDS.NOT.FOUND', code: 500, - }); - }); - }); - - describe('GET: `/sales/receipts`', () => { - it('Should response the custom view id not exists on the storage.', async () => { - const res = await request() - .get('/api/sales/receipts') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - - }); - - console.log(res.status, res.body); - }); - - it('Should retrieve all sales receipts on the storage with pagination meta.', () => { - - }); - }); -}); diff --git a/server/tests/routes/users.test.js b/server/tests/routes/users.test.js deleted file mode 100644 index 4455e50a6..000000000 --- a/server/tests/routes/users.test.js +++ /dev/null @@ -1,203 +0,0 @@ -import knex from 'database/knex'; -import { - request, - expect, -} from '~/testInit'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('routes: `/routes`', () => { - describe('GET: `/users`', () => { - it('Should response unauthorized if the user was not authorized.', async () => { - const res = await request().get('/api/users'); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should retrieve the stored users with pagination meta.', async () => { - await tenantFactory.create('user'); - - const res = await request() - .get('/api/users') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.body.users.results.length).equals(2); - expect(res.body.users.total).equals(2); - }); - }); - - describe('POST: `/users/:id`', () => { - it('Should create a new user if the user was not authorized.', async () => { - const user = await tenantFactory.create('user'); - const res = await request() - .post(`/api/users/${user.id}`); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should `first_name` be required.', async () => { - const user = await  tenantFactory.create('user'); - const res = await request() - .post(`/api/users/${user.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - - const foundFirstNameParam = res.body.errors.find((error) => error.param === 'first_name'); - expect(!!foundFirstNameParam).equals(true); - }); - - it('Should `last_name` be required.', async () => { - const user = await tenantFactory.create('user'); - const res = await request() - .post(`/api/users/${user.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - - const foundFirstNameParam = res.body.errors.find((error) => error.param === 'last_name'); - expect(!!foundFirstNameParam).equals(true); - }); - - it('Should `email` be required.', async () => { - const user = await tenantFactory.create('user'); - const res = await request() - .post(`/api/users/${user.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - - const foundEmailParam = res.body.errors.find((error) => error.param === 'email'); - expect(!!foundEmailParam).equals(true); - }); - - it('Should be `email` be valid format.', async () => { - const user = await tenantFactory.create('user'); - const res = await request() - .post(`/api/users/${user.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - first_name: user.first_name, - last_name: user.last_name, - email: 'email', - phone_number: user.phone_number, - status: 1, - }); - - expect(res.status).equals(422); - - const foundEmailParam = res.body.errors.find((error) => error.param === 'email'); - expect(!!foundEmailParam).equals(true); - }); - - it('Should `phone_number` be valid format.', async () => { - const user = tenantFactory.create('user'); - const res = await request() - .post(`/api/users/${user.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - first_name: user.first_name, - last_name: user.last_name, - email: user.email, - phone_number: 'phone_number', - status: 1, - }); - - expect(res.status).equals(422); - - const phoneNumberParam = res.body.errors.find((error) => error.param === 'phone_number'); - expect(!!phoneNumberParam).equals(true); - }); - }); - - describe('GET: `/users/:id`', () => { - it('Should not success if the user was not authorized.', async () => { - const res = await request().get('/api/users/1'); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should response not found if the user was not exist.', async () => { - const res = await request() - .get('/api/users/10') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - }); - - it('Should response success if the user was exist.', async () => { - const user = await tenantFactory.create('user'); - const res = await request() - .get(`/api/users/${user.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - }); - }); - - describe('DELETE: `/users/:id`', () => { - it('Should not success if the user was not authorized.', async () => { - const res = await request().delete('/api/users/1'); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should response not found if the user was not exist.', async () => { - const res = await request() - .delete('/api/users/10') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'USER_NOT_FOUND', code: 100, - }); - }); - - it('Should response success if the user was exist.', async () => { - const user = await tenantFactory.create('user'); - const res = await request() - .delete(`/api/users/${user.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - }); - - it('Should delete the give user from the storage.', async () => { - const user = await tenantFactory.create('user'); - await request() - .delete(`/api/users/${user.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - const storedUsers = await knex('users').where('id', user.id); - expect(storedUsers).to.have.lengthOf(0); - }); - }); -}); diff --git a/server/tests/routes/vendors.test.js b/server/tests/routes/vendors.test.js deleted file mode 100644 index 0fb1661c2..000000000 --- a/server/tests/routes/vendors.test.js +++ /dev/null @@ -1,193 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import Currency from 'models/Currency'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; -import Vendor from 'models/Vendor'; - -describe('route: `/vendors`', () => { - describe('POST: `/vendors`', () => { - it('Should response unauthorized in case the user was not logged in.', async () => { - const res = await request() - .post('/api/vendors') - .send({}); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should `display_name` be required field.', async () => { - const res = await request() - .post('/api/vendors') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - - }); - - expect(res.status).equals(422); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'display_name', location: 'body', - }) - }); - - it('Should store the vendor data to the storage.', async () => { - const res = await request() - .post('/api/vendors') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - first_name: 'Ahmed', - last_name: 'Bouhuolia', - - company_name: 'Bigcapital', - - display_name: 'Ahmed Bouhuolia, Bigcapital', - - email: 'a.bouhuolia@live.com', - work_phone: '0927918381', - personal_phone: '0925173379', - - billing_address_city: 'Tripoli', - billing_address_country: 'Libya', - billing_address_email: 'a.bouhuolia@live.com', - billing_address_state: 'State Tripoli', - billing_address_zipcode: '21892', - - shipping_address_city: 'Tripoli', - shipping_address_country: 'Libya', - shipping_address_email: 'a.bouhuolia@live.com', - shipping_address_state: 'State Tripoli', - shipping_address_zipcode: '21892', - - note: '__desc__', - - active: true, - }); - - expect(res.status).equals(200); - - const foundVendor = await Vendor.tenant().query().where('id', res.body.id); - - expect(foundVendor[0].firstName).equals('Ahmed'); - expect(foundVendor[0].lastName).equals('Bouhuolia'); - expect(foundVendor[0].companyName).equals('Bigcapital'); - expect(foundVendor[0].displayName).equals('Ahmed Bouhuolia, Bigcapital'); - - expect(foundVendor[0].email).equals('a.bouhuolia@live.com'); - - expect(foundVendor[0].workPhone).equals('0927918381'); - expect(foundVendor[0].personalPhone).equals('0925173379'); - - expect(foundVendor[0].billingAddressCity).equals('Tripoli'); - expect(foundVendor[0].billingAddressCountry).equals('Libya'); - expect(foundVendor[0].billingAddressEmail).equals('a.bouhuolia@live.com'); - expect(foundVendor[0].billingAddressState).equals('State Tripoli'); - expect(foundVendor[0].billingAddressZipcode).equals('21892'); - - expect(foundVendor[0].shippingAddressCity).equals('Tripoli'); - expect(foundVendor[0].shippingAddressCountry).equals('Libya'); - expect(foundVendor[0].shippingAddressEmail).equals('a.bouhuolia@live.com'); - expect(foundVendor[0].shippingAddressState).equals('State Tripoli'); - expect(foundVendor[0].shippingAddressZipcode).equals('21892'); - }); - }); - - describe('GET: `/vendors/:id`', () => { - it('Should response not found in case the given vendor id was not exists on the storage.', async () => { - const res = await request() - .get('/api/vendors/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'VENDOR.NOT.FOUND', code: 200, - }); - }); - }); - - describe('GET: `vendors`', () => { - it('Should response vendors items', async () => { - await tenantFactory.create('vendor'); - await tenantFactory.create('vendor'); - - const res = await request() - .get('/api/vendors') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.body.vendors.results.length).equals(2); - }); - }); - - describe('DELETE: `/vendors/:id`', () => { - it('Should response not found in case the given vendor id was not exists on the storage.', async () => { - const res = await request() - .delete('/api/vendors/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'VENDOR.NOT.FOUND', code: 200, - }); - }); - - it('Should delete the given vendor from the storage.', async () => { - const vendor = await tenantFactory.create('vendor'); - const res = await request() - .delete(`/api/vendors/${vendor.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - - const foundVendor = await Vendor.tenant().query().where('id', vendor.id); - expect(foundVendor.length).equals(0); - }) - }); - - describe('POST: `/vendors/:id`', () => { - it('Should response vendor not found', async () => { - const res = await request() - .post('/api/vendors/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - display_name: 'Ahmed Bouhuolia, Bigcapital', - }); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.deep.equals({ - type: 'VENDOR.NOT.FOUND', code: 200, - }); - }); - - it('Should update details of the given vendor.', async () => { - const vendor = await tenantFactory.create('vendor'); - const res = await request() - .post(`/api/vendors/${vendor.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - display_name: 'Ahmed Bouhuolia, Bigcapital', - }); - - expect(res.status).equals(200); - const foundVendor = await Vendor.tenant().query().where('id', res.body.id); - - expect(foundVendor.length).equals(1); - expect(foundVendor[0].displayName).equals('Ahmed Bouhuolia, Bigcapital'); - }) - }); -}); diff --git a/server/tests/routes/views.test.js b/server/tests/routes/views.test.js deleted file mode 100644 index 0dedf29f6..000000000 --- a/server/tests/routes/views.test.js +++ /dev/null @@ -1,936 +0,0 @@ -import { - request, - expect, -} from '~/testInit'; -import View from 'models/View'; -import ViewRole from 'models/ViewRole'; -import 'models/ResourceField'; -import ViewColumn from '../../src/models/ViewColumn'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; - - -describe('routes: `/views`', () => { - describe('GET: `/views`', () => { - it('Should response unauthorized in case the user was not authorized.', async () => { - const res = await request().get('/api/views'); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should retrieve all views of the given resource name.', async () => { - const resource = await tenantFactory.create('resource', { name: 'resource_name' }); - const resourceFields = await tenantFactory.create('view', { - name: 'Resource View', - resource_id: resource.id, - roles_logic_expression: '', - }); - - const res = await request() - .get('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .query({ resource_name: 'resource_name' }) - .send(); - - expect(res.status).equals(200); - expect(res.body.views.length).equals(1); - }); - }); - - describe('GET `/views/:id`', () => { - it('Should response unauthorized in case the user was not authorized.', async () => { - const resource = await tenantFactory.create('resource', { name: 'resource_name' }); - const resourceView = await tenantFactory.create('view', { - name: 'Resource View', - resource_id: resource.id, - roles_logic_expression: '', - }); - - const res = await request() - .get(`/api/views/${resourceView.id}`) - .query({ resource_name: 'resource_name' }) - .send(); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should response not found in case the given view was not found.', async () => { - const resource = await tenantFactory.create('resource', { name: 'resource_name' }); - const resourceView = await tenantFactory.create('view', { - name: 'Resource View', - resource_id: resource.id, - roles_logic_expression: '', - }); - - const res = await request() - .get('/api/views/123') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors[0]).deep.equals({ - type: 'VIEW_NOT_FOUND', code: 100, - }); - }); - - it('Should retrieve details of the given view with associated graphs.', async () => { - const resource = await tenantFactory.create('resource', { name: 'resource_name' }); - const resourceView = await tenantFactory.create('view', { - name: 'Resource View', - resource_id: resource.id, - roles_logic_expression: '1 AND 2', - }); - const resourceField = await tenantFactory.create('resource_field', { - label_name: 'Expense Account', - key: 'expense_account', - data_type: 'integer', - resource_id: resource.id, - active: true, - predefined: true, - builtin: true, - }); - const viewRole = await tenantFactory.create('view_role', { - view_id: resourceView.id, - index: 1, - field_id: resourceField.id, - value: '12', - comparator: 'equals', - }); - - const res = await request() - .get(`/api/views/${resourceView.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(200); - expect(res.body.view.name).equals(resourceView.name); - expect(res.body.view.resource_id).equals(resourceView.resourceId); - expect(res.body.view.roles_logic_expression).equals(resourceView.rolesLogicExpression); - - expect(res.body.view.roles.length).equals(1); - expect(res.body.view.roles[0].view_id).equals(viewRole.viewId); - }); - }); - - describe('POST: `/views`', () => { - it('Should response unauthorzied in case the user was not authorized.', async () => { - const res = await request().post('/api/views'); - - expect(res.status).equals(401); - expect(res.body.message).equals('Unauthorized'); - }); - - it('Should `name` be required.', async () => { - await tenantFactory.create('resource'); - const res = await request() - .post('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'name', location: 'body', - }); - }); - - it('Should `resource_name` be required.', async () => { - await tenantFactory.create('resource'); - const res = await request() - .post('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'resource_name', location: 'body', - }); - }); - - it('Should `columns` be minimum limited', async () => { - await tenantFactory.create('resource'); - const res = await request() - .post('/api/views', { - label: 'View Label', - columns: [], - }) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'columns', location: 'body', - }); - }); - - it('Should `columns` be array.', async () => { - await tenantFactory.create('resource'); - const res = await request() - .post('/api/views', { - label: 'View Label', - columns: 'not_array', - }) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'columns', location: 'body', - }); - }); - - it('Should `roles.*.field_key` be required.', async () => { - const resource = await tenantFactory.create('resource'); - const res = await request() - .post('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - resource_name: resource.name, - label: 'View Label', - roles: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'roles[0].field_key', location: 'body', - }); - }); - - it('Should `roles.*.comparator` be valid.', async () => { - const resource = await tenantFactory.create('resource'); - const res = await request() - .post('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - resource_name: resource.name, - label: 'View Label', - roles: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - - const paramsErrors = res.body.errors.map((error) => error.param); - expect(paramsErrors).to.include('roles[0].comparator'); - }); - - it('Should `roles.*.index` be number as integer.', async () => { - const resource = await tenantFactory.create('resource'); - const res = await request() - .post('/api/views') - .send({ - resource_name: resource.name, - label: 'View Label', - roles: [ - { index: 'not_numeric' }, - ], - }) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - value: 'not_numeric', - msg: 'Invalid value', - param: 'roles[0].index', - location: 'body', - }); - }); - - it('Should response not found in case resource was not exist.', async () => { - const res = await request() - .post('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - resource_name: 'not_found', - name: 'View Label', - columns: [ - { key: 'amount', index: 1 }, - { key: 'thumbnail', index: 1 }, - { key: 'status', index: 1 }, - ], - roles: [{ - index: 1, - field_key: 'amount', - comparator: 'equals', - value: '100', - }], - logic_expression: '1', - }); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'RESOURCE_NOT_FOUND', code: 100, - }); - }); - - it('Should response invalid logic expression.', async () =>{ - const resource = await tenantFactory.create('resource'); - await tenantFactory.create('resource_field', { - resource_id: resource.id, - label_name: 'Amount', - key: 'amount', - }); - const res = await request() - .post('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - resource_name: resource.name, - logic_expression: '100 && 100', - name: 'View Label', - columns: [ - { key: 'amount', index: 1 }, - ], - roles: [{ - index: 1, - field_key: 'amount', - comparator: 'equals', - value: '100', - }], - }); - - expect(res.body.errors).include.something.that.deep.equals({ - type: 'VIEW.ROLES.LOGIC.EXPRESSION.INVALID', code: 400, - }); - }); - - it('Should response the roles fields not exist in case role field was not exist.', async () => { - const resource = await tenantFactory.create('resource'); - await tenantFactory.create('resource_field', { resource_id: resource.id, label_name: 'Amount' }); - - const res = await request() - .post('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - resource_name: resource.name, - name: 'View Label', - logic_expression: '1', - columns: [ - { key: 'amount', index: 1 }, - { key: 'thumbnail', index: 1 }, - { key: 'status', index: 1 }, - ], - roles: [{ - index: 1, - field_key: 'price', - comparator: 'equals', - value: '100', - }], - }); - - expect(res.body.errors).include.something.that.deep.equals({ - type: 'RESOURCE_FIELDS_NOT_EXIST', code: 100, fields: ['price'], - }); - }); - - it('Should response the columns that not exists in case column was not exist.', async () => { - const resource = await tenantFactory.create('resource'); - const resourceField = await tenantFactory.create('resource_field', { - resource_id: resource.id, - label_name: 'Amount', - key: 'amount', - }); - const res = await request() - .post('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - resource_name: resource.name, - name: 'View Label', - logic_expression: '1', - columns: [ - { key: 'amount', index: 1 }, - { key: 'thumbnail', index: 2 }, - { key: 'status', index: 3 }, - ], - roles: [{ - index: 1, - field_key: 'price', - comparator: 'equals', - value: '100', - }], - }); - - expect(res.body.errors).include.something.that.deep.equals({ - type: 'COLUMNS_NOT_EXIST', code: 200, columns: ['thumbnail', 'status'], - }); - }); - - it('Should save the given details of the view.', async () => { - const resource = await tenantFactory.create('resource'); - await tenantFactory.create('resource_field', { - resource_id: resource.id, - label_name: 'Amount', - key: 'amount', - }); - const res = await request() - .post('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - resource_name: resource.name, - name: 'View Label', - logic_expression: '1', - columns: [ - { key: 'amount', index: 1 }, - ], - roles: [{ - index: 1, - field_key: 'amount', - comparator: 'equals', - value: '100', - }], - }); - - const storedView = await View.tenant().query().where('name', 'View Label').first(); - - expect(storedView.name).equals('View Label'); - expect(storedView.predefined).equals(0); - expect(storedView.resourceId).equals(resource.id); - }); - - it('Should save the given details of view fields that associated to the given view id.', async () => { - const resource = await tenantFactory.create('resource'); - const resourceField = await tenantFactory.create('resource_field', { - resource_id: resource.id, - label_name: 'Amount', - key: 'amount', - }); - - const res = await request() - .post('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - resource_name: resource.name, - name: 'View Label', - columns: [{ key: 'amount', index: 1 }], - logic_expression: '1', - roles: [{ - index: 1, - field_key: 'amount', - comparator: 'equals', - value: '100', - }], - }); - - const viewRoles = await ViewRole.tenant().query().where('view_id', res.body.id); - - expect(viewRoles.length).equals(1); - expect(viewRoles[0].index).equals(1); - expect(viewRoles[0].fieldId).equals(resourceField.id); - expect(viewRoles[0].value).equals('100'); - expect(viewRoles[0].comparator).equals('equals'); - }); - - it('Should save columns that associated to the given view.', async () => { - const resource = await tenantFactory.create('resource'); - const resourceField = await tenantFactory.create('resource_field', { - resource_id: resource.id, - label_name: 'Amount', - key: 'amount', - }); - - const res = await request() - .post('/api/views') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - resource_name: resource.name, - name: 'View Label', - logic_expression: '1', - columns: [ - { key: 'amount', index: 1 }, - ], - roles: [{ - index: 1, - field_key: 'amount', - comparator: 'equals', - value: '100', - }], - }); - - const viewColumns = await ViewColumn.tenant().query().where('view_id', res.body.id); - expect(viewColumns.length).equals(1); - }); - - - }); - - describe('POST: `/views/:view_id`', () => { - it('Should `name` be required.', async () => { - const view = await tenantFactory.create('view'); - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'name', location: 'body', - }); - }); - - it('Should columns be minimum limited', async () => { - const view = await tenantFactory.create('view'); - const res = await request() - .post(`/api/views/${view.id}`, { - label: 'View Label', - columns: [], - }) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'columns', location: 'body', - }); - }); - - it('Should columns be array.', async () => { - const view = await tenantFactory.create('view'); - const res = await request() - .post(`/api/views/${view.id}`, { - label: 'View Label', - columns: 'not_array', - }) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - columns: 'columns' - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'columns', location: 'body', value: 'columns', - }); - }); - - it('Should `roles.*.field_key` be required.', async () => { - const view = await tenantFactory.create('view'); - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - label: 'View Label', - roles: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'roles[0].field_key', location: 'body', - }); - }); - - it('Should `roles.*.comparator` be required.', async () => { - const view = await tenantFactory.create('view'); - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - label: 'View Label', - roles: [{}], - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', param: 'roles[0].comparator', location: 'body', - }); - }); - - it('Should `roles.*.index` be number as integer.', async () => { - const view = await tenantFactory.create('view'); - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - label: 'View Label', - roles: [{ index: 'not_numeric' }], - }); - - expect(res.status).equals(422); - expect(res.body.code).equals('validation_error'); - expect(res.body.errors).include.something.deep.equals({ - msg: 'Invalid value', - param: 'roles[0].index', - location: 'body', - value: 'not_numeric', - }); - }); - - it('Should response the roles fields not exist in case role field was not exist.', async () => { - const view = await tenantFactory.create('view'); - await tenantFactory.create('resource_field', { - resource_id: view.resource_id, - label_name: 'Amount', - }); - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'View Label', - logic_expression: '1', - columns: [{ - key: 'amount', - index: 1, - }, { - key: 'thumbnail', - index: 2, - }, { - key: 'status', - index: 3, - }], - roles: [{ - index: 1, - field_key: 'price', - comparator: 'equals', - value: '100', - }], - }); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'RESOURCE_FIELDS_NOT_EXIST', code: 100, fields: ['price'], - }); - }); - - it('Should response the resource columns not exists in case the column keys was not exist.', async () => { - const view = await tenantFactory.create('view'); - await tenantFactory.create('resource_field', { - resource_id: view.resource_id, - label_name: 'Amount', - }); - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'View Label', - logic_expression: '1', - columns: [{ - key: 'amount', - index: 1, - }, { - key: 'thumbnail', - index: 2, - }, { - key: 'status', - index: 3, - }], - roles: [{ - index: 1, - field_key: 'price', - comparator: 'equals', - value: '100', - }], - }); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'RESOURCE_COLUMNS_NOT_EXIST', - code: 200, - columns: ['amount', 'thumbnail', 'status'], - }); - }); - - it('Should validate the logic expressions with the given conditions.', () => { - - }); - - it('Should delete the view roles that not presented the post data.', async () => { - const resource = await tenantFactory.create('resource'); - const resourceField = await tenantFactory.create('resource_field', { - resource_id: resource.id, - label_name: 'Amount', - key: 'amount', - }); - - const view = await tenantFactory.create('view', { resource_id: resource.id }); - const viewRole = await tenantFactory.create('view_role', { - view_id: view.id, - field_id: resourceField.id, - }); - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'View Label', - logic_expression: '1', - columns: [{ - key: resourceField.key, - index: 1, - }], - roles: [{ - index: 1, - field_key: resourceField.key, - comparator: 'equals', - value: '100', - }], - }); - - const foundViewRole = await ViewRole.tenant().query().where('id', viewRole.id); - expect(foundViewRole.length).equals(0); - }); - - it('Should update the view roles that presented in the given data.', async () => { - const resource = await tenantFactory.create('resource'); - const resourceField = await tenantFactory.create('resource_field', { - resource_id: resource.id, - label_name: 'Amount', - key: 'amount', - }); - - const view = await tenantFactory.create('view', { resource_id: resource.id }); - const viewRole = await tenantFactory.create('view_role', { - view_id: view.id, - field_id: resourceField.id, - }); - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'View Label', - logic_expression: '1', - columns: [{ - key: resourceField.key, - index: 1, - }], - roles: [{ - id: viewRole.id, - index: 1, - field_key: resourceField.key, - comparator: 'equals', - value: '100', - }], - }); - - const foundViewRole = await ViewRole.tenant().query().where('id', viewRole.id); - - expect(foundViewRole.length).equals(1); - expect(foundViewRole[0].id).equals(viewRole.id); - expect(foundViewRole[0].index).equals(1); - expect(foundViewRole[0].value).equals('100'); - expect(foundViewRole[0].comparator).equals('equals'); - }); - - it('Should response not found roles ids in case not exists in the storage.', async () => { - const resource = await tenantFactory.create('resource'); - const resourceField = await tenantFactory.create('resource_field', { - resource_id: resource.id, - label_name: 'Amount', - key: 'amount', - }); - const view = await tenantFactory.create('view', { resource_id: resource.id }); - - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'View Label', - logic_expression: '1', - columns: [{ - key: resourceField.key, - index: 1, - }], - roles: [{ - id: 1, - index: 1, - field_key: resourceField.key, - comparator: 'equals', - value: '100', - }], - }); - - expect(res.body.errors).include.something.that.deep.equals({ - type: 'VIEW.ROLES.IDS.NOT.FOUND', code: 500, ids: [1], - }); - }); - - it('Should delete columns from storage in case view columns ids not presented.', async () => { - const resource = await tenantFactory.create('resource'); - const resourceField = await tenantFactory.create('resource_field', { - resource_id: resource.id, - label_name: 'Amount', - key: 'amount', - }); - const view = await tenantFactory.create('view', { resource_id: resource.id }); - const viewColumn = await tenantFactory.create('view_column', { view_id: view.id }); - - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'View Label', - logic_expression: '1', - columns: [{ - key: resourceField.key, - index: 1, - }], - roles: [{ - index: 1, - field_key: resourceField.key, - comparator: 'equals', - value: '100', - }], - }); - const foundViewColumns = await ViewColumn.tenant().query().where('id', viewColumn.id); - expect(foundViewColumns.length).equals(0); - }); - - it('Should insert columns to the storage if where new columns', async () => { - const resource = await tenantFactory.create('resource'); - const resourceField = await tenantFactory.create('resource_field', { - resource_id: resource.id, - label_name: 'Amount', - key: 'amount', - }); - const view = await tenantFactory.create('view', { resource_id: resource.id }); - - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'View Label', - logic_expression: '1', - columns: [{ - key: resourceField.key, - index: 1, - }], - roles: [{ - index: 1, - field_key: resourceField.key, - comparator: 'equals', - value: '100', - }], - }); - - const foundViewColumns = await ViewColumn.tenant().query().where('view_id', view.id); - - expect(foundViewColumns.length).equals(1); - expect(foundViewColumns[0].viewId).equals(view.id); - expect(foundViewColumns[0].index).equals(1); - expect(foundViewColumns[0].fieldId).equals(resourceField.id); - }); - - - it('Should update columns on the storage.', async () => { - const resource = await tenantFactory.create('resource'); - const resourceField = await tenantFactory.create('resource_field', { - resource_id: resource.id, - label_name: 'Amount', - key: 'amount', - }); - const view = await tenantFactory.create('view', { resource_id: resource.id }); - const viewColumn = await tenantFactory.create('view_column', { view_id: view.id }); - - const res = await request() - .post(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send({ - name: 'View Label', - logic_expression: '1', - columns: [{ - id: viewColumn.id, - key: resourceField.key, - index: 10, - }], - roles: [{ - index: 1, - field_key: resourceField.key, - comparator: 'equals', - value: '100', - }], - }); - - console.log(res.body) - - const foundViewColumns = await ViewColumn.tenant().query().where('id', viewColumn.id); - - expect(foundViewColumns.length).equals(1); - expect(foundViewColumns[0].id).equals(viewColumn.id); - expect(foundViewColumns[0].viewId).equals(view.id); - expect(foundViewColumns[0].index).equals(10); - // expect(foundViewColumns[0].fieldId).equals(); - }) - }); - - describe('DELETE: `/views/:resource_id`', () => { - it('Should not delete predefined view.', async () => { - const view = await tenantFactory.create('view', { predefined: true }); - const res = await request() - .delete(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(400); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'PREDEFINED_VIEW', code: 200, - }); - }); - - it('Should response not found in case view was not exist.', async () => { - const res = await request() - .delete('/api/views/100') - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.status).equals(404); - expect(res.body.errors).include.something.that.deep.equals({ - type: 'VIEW_NOT_FOUND', code: 100, - }); - }); - - it('Should delete the given view and associated view columns and roles.', async () => { - const view = await tenantFactory.create('view', { predefined: false }); - await tenantFactory.create('view_role', { view_id: view.id }); - await tenantFactory.create('view_column', { view_id: view.id }); - - const res = await request() - .delete(`/api/views/${view.id}`) - .set('x-access-token', loginRes.body.token) - .set('organization-id', tenantWebsite.organizationId) - .send(); - - expect(res.body.id).equals(view.id); - - const foundViews = await View.tenant().query().where('id', view.id); - const foundViewRoles = await ViewRole.tenant().query().where('view_id', view.id); - - expect(foundViews).to.have.lengthOf(0); - expect(foundViewRoles).to.have.lengthOf(0); - }); - }); -}); diff --git a/server/tests/services/JournalPoster.test.js b/server/tests/services/JournalPoster.test.js deleted file mode 100644 index d6f69a911..000000000 --- a/server/tests/services/JournalPoster.test.js +++ /dev/null @@ -1,406 +0,0 @@ -import { expect } from '~/testInit'; -import JournalPoster from 'services/Accounting/JournalPoster'; -import JournalEntry from 'services/Accounting/JournalEntry'; -import AccountBalance from 'models/AccountBalance'; -import AccountTransaction from 'models/AccountTransaction'; -import Account from 'models/Account'; -import { - tenantWebsite, - tenantFactory, - loginRes -} from '~/dbInit'; -import { omit } from 'lodash'; -import DependencyGraph from 'lib/DependencyGraph'; - -let accountsDepGraph; - -describe('JournalPoster', () => { - beforeEach(async () => { - accountsDepGraph = await Account.tenant().depGraph().query().remember(); - }); - describe('credit()', () => { - it('Should write credit entry to journal entries stack.', () => { - const journalEntries = new JournalPoster(accountsDepGraph); - const journalEntry = new JournalEntry({ - referenceId: 1, - referenceType: 'Expense', - credit: 100, - account: 1, - }); - journalEntries.credit(journalEntry); - expect(journalEntries.entries.length).equals(1); - }); - }); - - describe('debit()', () => { - it('Should write debit entry to journal entries stack.', () => { - const journalEntries = new JournalPoster(accountsDepGraph); - const journalEntry = new JournalEntry({ - referenceId: 1, - referenceType: 'Expense', - debit: 100, - account: 1, - }); - - journalEntries.debit(journalEntry); - expect(journalEntries.entries.length).equals(1); - }); - }); - - describe('setBalanceChange()', () => { - it('Should increment balance amount after credit entry with credit normal account.', () => { - const journalEntries = new JournalPoster(accountsDepGraph); - const journalEntry = new JournalEntry({ - referenceId: 1, - referenceType: 'Expense', - credit: 100, - debit: 0, - account: 1, - accountNormal: 'debit', - }); - journalEntries.credit(journalEntry); - expect(journalEntries.balancesChange).to.have.property(1, -100); - }); - - it('Should decrement balance amount after debit entry wiht debit normal account.', () => { - const journalEntries = new JournalPoster(accountsDepGraph); - const journalEntry = new JournalEntry({ - referenceId: 1, - referenceType: 'Expense', - debit: 100, - account: 1, - accountNormal: 'debit', - }); - journalEntries.debit(journalEntry); - expect(journalEntries.balancesChange).to.have.property(1, 100); - }); - }); - - describe('setContactAccountBalance', () => { - it('Should increment balance amount after credit/debit entry.', () => { - - }); - - it('Should decrement balance amount after credit/debit customer/vendor entry.', () => { - - }); - }); - - describe('saveEntries()', () => { - it('Should save all stacked entries to the storage.', async () => { - const journalEntries = new JournalPoster(accountsDepGraph); - const journalEntry = new JournalEntry({ - referenceId: 1, - referenceType: 'Expense', - debit: 100, - account: 1, - accountNormal: 'debit', - }); - - journalEntries.debit(journalEntry); - await journalEntries.saveEntries(); - - const storedJournalEntries = await AccountTransaction.tenant().query(); - - expect(storedJournalEntries.length).equals(1); - expect(storedJournalEntries[0]).to.deep.include({ - referenceType: 'Expense', - referenceId: 1, - debit: 100, - credit: 0, - accountId: 1, - }); - }); - }); - - describe('saveBalance()', () => { - it('Should save account balance increment.', async () => { - const account = await tenantFactory.create('account'); - const depGraph = await Account.tenant().depGraph().query(); - - const journalEntries = new JournalPoster(depGraph); - const journalEntry = new JournalEntry({ - referenceId: 1, - referenceType: 'Expense', - debit: 100, - account: account.id, - accountNormal: 'debit', - }); - journalEntries.debit(journalEntry); - - await journalEntries.saveBalance(); - - const storedAccountBalance = await AccountBalance.tenant().query(); - - expect(storedAccountBalance.length).equals(1); - expect(storedAccountBalance[0].amount).equals(100); - }); - - it('Should save account balance decrement.', async () => { - const account = await tenantFactory.create('account'); - const depGraph = await Account.tenant().depGraph().query(); - - const journalEntries = new JournalPoster(depGraph); - const journalEntry = new JournalEntry({ - referenceId: 1, - referenceType: 'Expense', - credit: 100, - account: account.id, - accountNormal: 'debit', - }); - journalEntries.credit(journalEntry); - - await journalEntries.saveBalance(); - - const storedAccountBalance = await AccountBalance.tenant().query(); - - expect(storedAccountBalance.length).equals(1); - expect(storedAccountBalance[0].amount).equals(-100); - }); - }); - - describe('getClosingBalance', () => { - it('Should retrieve closing balance the given account id.', () => { - const journalEntries = new JournalPoster(accountsDepGraph); - const journalEntry = new JournalEntry({ - referenceId: 1, - referenceType: 'Expense', - debit: 100, - account: 1, - accountNormal: 'debit', - date: '2020-1-10', - }); - const journalEntry2 = new JournalEntry({ - referenceId: 1, - referenceType: 'Income', - credit: 100, - account: 2, - accountNormal: 'credit', - date: '2020-1-12', - }); - journalEntries.credit(journalEntry); - journalEntries.credit(journalEntry2); - - const closingBalance = journalEntries.getClosingBalance(1, '2020-1-30'); - expect(closingBalance).equals(100); - }); - - it('Should retrieve closing balance the given closing date period.', () => { - const journalEntries = new JournalPoster(accountsDepGraph); - const journalEntry = new JournalEntry({ - referenceId: 1, - referenceType: 'Expense', - debit: 100, - account: 1, - accountNormal: 'debit', - date: '2020-1-10', - }); - const journalEntry2 = new JournalEntry({ - referenceId: 1, - referenceType: 'Income', - credit: 100, - account: 2, - accountNormal: 'credit', - date: '2020-1-12', - }); - journalEntries.credit(journalEntry); - journalEntries.credit(journalEntry2); - - const closingBalance = journalEntries.getClosingBalance(1, '2020-1-2'); - expect(closingBalance).equals(0); - }); - }); - - describe('getTrialBalance(account, closeDate, dateType)', () => { - it('Should retrieve the trial balance of the given account id.', () => { - const journalEntries = new JournalPoster(accountsDepGraph); - const journalEntry = new JournalEntry({ - referenceId: 1, - referenceType: 'Expense', - debit: 200, - account: 1, - accountNormal: 'debit', - date: '2020-1-10', - }); - const journalEntry2 = new JournalEntry({ - referenceId: 1, - referenceType: 'Income', - credit: 100, - account: 1, - accountNormal: 'credit', - date: '2020-1-12', - }); - - journalEntries.debit(journalEntry); - journalEntries.credit(journalEntry2); - - const trialBalance = journalEntries.getTrialBalance(1); - - expect(trialBalance.credit).equals(100); - expect(trialBalance.debit).equals(200); - }); - }); - - describe('groupingEntriesByDate(accountId, dateGroupType)', () => { - - }); - - describe('removeEntries', () => { - it('Should remove all entries in the collection.', () => { - const journalPoster = new JournalPoster(accountsDepGraph); - const journalEntry1 = new JournalEntry({ - id: 1, - credit: 1000, - account: 1, - accountNormal: 'credit', - }); - const journalEntry2 = new JournalEntry({ - id: 2, - debit: 1000, - account: 2, - accountNormal: 'debit', - }); - journalPoster.credit(journalEntry1); - journalPoster.debit(journalEntry2); - - journalPoster.removeEntries(); - - expect(journalPoster.entries.length).equals(0); - }); - - it('Should remove the given entries ids from the collection.', () => { - const journalPoster = new JournalPoster(accountsDepGraph); - const journalEntry1 = new JournalEntry({ - id: 1, - credit: 1000, - account: 1, - accountNormal: 'credit', - }); - const journalEntry2 = new JournalEntry({ - id: 2, - debit: 1000, - account: 2, - accountNormal: 'debit', - }); - journalPoster.credit(journalEntry1); - journalPoster.debit(journalEntry2); - - journalPoster.removeEntries([1]); - expect(journalPoster.entries.length).equals(1); - }); - - it('Should the removed entries ids be stacked to deleted entries ids.', () => { - const journalPoster = new JournalPoster(accountsDepGraph); - const journalEntry1 = new JournalEntry({ - id: 1, - credit: 1000, - account: 1, - accountNormal: 'credit', - }); - const journalEntry2 = new JournalEntry({ - id: 2, - debit: 1000, - account: 2, - accountNormal: 'debit', - }); - journalPoster.credit(journalEntry1); - journalPoster.debit(journalEntry2); - - journalPoster.removeEntries(); - - expect(journalPoster.deletedEntriesIds.length).equals(2); - expect(journalPoster.deletedEntriesIds[0]).equals(1); - expect(journalPoster.deletedEntriesIds[1]).equals(2); - }); - - it('Should revert the account balance after remove the entries.', () => { - const journalPoster = new JournalPoster(accountsDepGraph); - const journalEntry1 = new JournalEntry({ - id: 1, - credit: 1000, - account: 1, - accountNormal: 'credit', - }); - const journalEntry2 = new JournalEntry({ - id: 2, - debit: 1000, - account: 2, - accountNormal: 'debit', - }); - journalPoster.credit(journalEntry1); - journalPoster.debit(journalEntry2); - - journalPoster.removeEntries([1]); - - expect(journalPoster.balancesChange['1']).equals(0); - expect(journalPoster.balancesChange['2']).equals(1000); - }) - }); - - describe('deleteEntries', () => { - it('Should delete all entries from the storage based on the stacked deleted entries ids.', () => { - - }); - }); - - describe('effectParentAccountsBalance()', () => { - it('Should all parent accounts increment after one of child accounts balance increment.', async () => { - const debitType = await tenantFactory.create('account_type', { normal: 'debit', balance_sheet: true }); - const mixin = { account_type_id: debitType.id }; - - const accountA = await tenantFactory.create('account', { ...mixin }); - const accountB = await tenantFactory.create('account', { ...mixin }); - - const accountAC = await tenantFactory.create('account', { parent_account_id: accountA.id, ...mixin }); - const accountBD = await tenantFactory.create('account', { ...mixin }); - - const depGraph = await Account.tenant().depGraph().query(); - const journalPoster = new JournalPoster(depGraph); - const journalEntryA = new JournalEntry({ - id: 1, - debit: 1000, - account: accountAC.id, - accountNormal: 'debit', - }); - const journalEntryB = new JournalEntry({ - id: 1, - debit: 1000, - account: accountBD.id, - accountNormal: 'debit', - }); - - journalPoster.debit(journalEntryA); - journalPoster.debit(journalEntryB); - - await journalPoster.saveBalance(); - - const accountBalances = await AccountBalance.tenant().query(); - const simplifiedArray = accountBalances.map(x => ({ ...omit(x, ['id']) })); - - expect(simplifiedArray.length).equals(3); - expect(simplifiedArray).to.include.something.deep.equals({ - accountId: accountA.id, - amount: 1000, - currencyCode: 'USD' - }); - expect(simplifiedArray).to.include.something.deep.equals({ - accountId: accountAC.id, - amount: 1000, - currencyCode: 'USD' - }); - expect(simplifiedArray).to.include.something.deep.equals({ - accountId: accountBD.id, - amount: 1000, - currencyCode: 'USD' - }); - }); - }); - - describe('reverseEntries()', () => { - - }); - - describe('loadFromCollection', () => { - - }); -}); diff --git a/server/tests/testInit.js b/server/tests/testInit.js deleted file mode 100644 index 96d738d42..000000000 --- a/server/tests/testInit.js +++ /dev/null @@ -1,88 +0,0 @@ -import chai from 'chai'; -import chaiHttp from 'chai-http'; -import chaiThings from 'chai-things'; -import systemDb from 'database/knex'; -import app from 'app'; -import createTenantFactory from 'database/factories'; -import TenantsManager from 'system/TenantsManager'; -import faker from 'faker'; -import { hashPassword } from 'utils'; -import TenantModel from 'models/TenantModel'; -import createSystemFactory from 'database/factories/system'; - - -const { expect } = chai; -const request = () => chai.request(app); - -beforeEach(async () => { - // Rollback/migrate the system database. - await systemDb.migrate.rollback(); - await systemDb.migrate.latest(); -}); - -afterEach(async () => { -}); - -chai.use(chaiHttp); -chai.use(chaiThings); - -// Create tenant database. -const createTenant = () => { - return TenantsManager.createTenant(); -}; - -// Drops tenant database. -const dropTenant = async (tenantWebsite) => { - return TenantsManager.dropTenant(tenantWebsite); -}; - -// Create a new user that associate to the given tenant Db. -const createUser = async (tenantWebsite, givenUser) => { - const userPassword = (givenUser && givenUser.password) ? givenUser.password : 'admin' - const hashedPassword = await hashPassword(userPassword); - - const userInfo = { - first_name: faker.lorem.word(), - last_name: faker.lorem.word(), - email: faker.internet.email(), - active: 1, - phone_number: faker.phone.phoneNumberFormat().replace('-', ''), - password: hashedPassword, - ...givenUser, - }; - const user = await TenantsManager.createTenantUser(tenantWebsite, userInfo); - return user; -}; - -const login = async (tenantWebsite, givenUser) => { - let user = givenUser; - - if (!givenUser && tenantWebsite) { - const createdUser = await createUser(tenantWebsite, givenUser); - user = createdUser; - } - return request() - .post('/api/auth/login') - .send({ - crediential: user.email, - password: 'admin', - }); -}; - -const bindTenantModel = (tenantDb) => { - TenantModel.knexBinded = tenantDb; -}; - -const systemFactory = createSystemFactory(); - -export { - login, - systemFactory, - createTenantFactory, - createTenant, - createUser, - dropTenant, - expect, - request, - bindTenantModel, -}; diff --git a/server/tests/utils/utils.test.js b/server/tests/utils/utils.test.js deleted file mode 100644 index 4dc6ae640..000000000 --- a/server/tests/utils/utils.test.js +++ /dev/null @@ -1,16 +0,0 @@ -import { dateRangeCollection } from 'utils'; -import { expect } from '../testInit'; - -describe('utils', () => { - - describe('dateRangeCollection()', () => { - it('Should retrieve all range dates.', () => { - const fromDate = new Date('2020-1-1'); - const toDate = new Date('2020-1-25'); - - const range = dateRangeCollection(fromDate, toDate); - - expect(range.length).equals(25); - }); - }); -}); diff --git a/server/tsconfig.json b/server/tsconfig.json deleted file mode 100644 index 1ee84b78f..000000000 --- a/server/tsconfig.json +++ /dev/null @@ -1,55 +0,0 @@ - -{ - "compilerOptions": { - "target": "es2017", - "lib": [ - "es2017", - "esnext.asynciterable" - ], - "typeRoots": [ - "./node_modules/@types", - "./src/types" - ], - "allowSyntheticDefaultImports": true, - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "forceConsistentCasingInFileNames": true, - "moduleResolution": "node", - "module": "commonjs", - "pretty": true, - "sourceMap": true, - "outDir": "./build", - "allowJs": true, - "noEmit": false, - "esModuleInterop": true, - "skipLibCheck": true, - "baseUrl": "./src", - }, - "include": [ - "./src/**/*" - ], - "exclude": [ - "node_modules", - "tests" - ], - "paths": { - "loaders": ["src/loaders/**/*"], - "collection": ["src/collection/**/*"], - "config": ["src/config/**/*"], - "api": ["src/api/**/*"], - "data": ["src/data/**/*"], - "database": ["src/database/**/*"], - "decorators": ["src/decorators/**/*"], - "exceptions": ["src/exceptions/**/*"], - "interfaces": ["src/interfaces/**/*"], - "jobs": ["src/jobs/**/*"], - "lib": ["src/lib/**/*"], - "utils": ["src/utils/**/*"], - "locales": ["src/locales/**/*"], - "models": ["src/models/**/*"], - "repositories": ["src/repositories/**/*"], - "services": ["src/services/**/*"], - "subscribers": ["src/subscribers/**/*"], - "system": ["src/system/**/*"], - } -} \ No newline at end of file diff --git a/server/views/mail/LicenseReceive.html b/server/views/mail/LicenseReceive.html deleted file mode 100644 index 6a8c721e3..000000000 --- a/server/views/mail/LicenseReceive.html +++ /dev/null @@ -1,411 +0,0 @@ - - - - - - Bigcapital | Reset your password - - - - This is preheader text. Some clients will show this text as a preview. - - - - - - - - - diff --git a/server/views/mail/ResetPassword.html b/server/views/mail/ResetPassword.html deleted file mode 100644 index fb4c6bd25..000000000 --- a/server/views/mail/ResetPassword.html +++ /dev/null @@ -1,427 +0,0 @@ - - - - - - Bigcapital | Reset your password - - - - This is preheader text. Some clients will show this text as a preview. - - - - - - - - - diff --git a/server/views/mail/UserInvite.html b/server/views/mail/UserInvite.html deleted file mode 100644 index 0ada80cd7..000000000 --- a/server/views/mail/UserInvite.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - - - Bigcapital | Reset your password - - - - This is preheader text. Some clients will show this text as a preview. - - - - - - - - - diff --git a/server/views/mail/Welcome.html b/server/views/mail/Welcome.html deleted file mode 100644 index 31af866ad..000000000 --- a/server/views/mail/Welcome.html +++ /dev/null @@ -1,411 +0,0 @@ - - - - - - Bigcapital | Reset your password - - - - This is preheader text. Some clients will show this text as a preview. - - - - - - - - - diff --git a/server/webpack.config.js b/server/webpack.config.js deleted file mode 100644 index 28aae01a1..000000000 --- a/server/webpack.config.js +++ /dev/null @@ -1,76 +0,0 @@ -const path = require('path'); -const { - NODE_ENV = 'production', -} = process.env; -// const nodeExternals = require('webpack-node-externals'); - - - -module.exports = { - entry: [ - // 'regenerator-runtime/runtime', - './src/server.ts', - ], - mode: NODE_ENV, - target: 'node', - output: { - path: path.resolve(__dirname, 'build'), - filename: 'index.js' - }, -// externals: [nodeExternals()], - resolve: { - // preferRelative: true, - extensions: ['.ts', '.js'], - alias: { - 'loaders': path.resolve(__dirname, 'src/loaders'), - 'services': path.resolve(__dirname, 'src/services'), - 'collection': path.resolve(__dirname, 'src/collection'), - 'config': path.resolve(__dirname, 'src/config'), - 'api': path.resolve(__dirname, 'src/api'), - 'data': path.resolve(__dirname, 'src/data'), - 'database': path.resolve(__dirname, 'src/database'), - 'decorators': path.resolve(__dirname, 'src/decorators'), - 'exceptions': path.resolve(__dirname, 'src/exceptions'), - 'interfaces': path.resolve(__dirname, 'src/interfaces'), - 'jobs': path.resolve(__dirname, 'src/jobs'), - 'lib': path.resolve(__dirname, 'src/lib'), - 'utils': path.resolve(__dirname, 'src/utils'), - - - 'locales': path.resolve(__dirname, 'src/locales'), - 'models': path.resolve(__dirname, 'src/models'), - 'repositories': path.resolve(__dirname, 'src/repositories'), - 'services': path.resolve(__dirname, 'src/services'), - 'subscribers': path.resolve(__dirname, 'src/subscribers'), - 'system': path.resolve(__dirname, 'src/system'), - - - - - - - // - // - // - // - - // - // - // - } - }, - module: { - rules: [{ - // all files with a `.ts` or `.tsx` extension will be handled by `ts-loader` - test: /\.ts?$/, - use: [ - { - loader: 'ts-loader', - options: { - transpileOnly: true - } - } - ], - }] - } -} \ No newline at end of file diff --git a/client/setupProxy.js b/setupProxy.js similarity index 100% rename from client/setupProxy.js rename to setupProxy.js diff --git a/client/src/common/accountTypes.js b/src/common/accountTypes.js similarity index 100% rename from client/src/common/accountTypes.js rename to src/common/accountTypes.js diff --git a/client/src/common/adjustmentType.js b/src/common/adjustmentType.js similarity index 100% rename from client/src/common/adjustmentType.js rename to src/common/adjustmentType.js diff --git a/client/src/common/allocateLandedCostType.js b/src/common/allocateLandedCostType.js similarity index 100% rename from client/src/common/allocateLandedCostType.js rename to src/common/allocateLandedCostType.js diff --git a/client/src/common/classes.js b/src/common/classes.js similarity index 100% rename from client/src/common/classes.js rename to src/common/classes.js diff --git a/client/src/common/contactsOptions.js b/src/common/contactsOptions.js similarity index 100% rename from client/src/common/contactsOptions.js rename to src/common/contactsOptions.js diff --git a/client/src/common/countries.js b/src/common/countries.js similarity index 100% rename from client/src/common/countries.js rename to src/common/countries.js diff --git a/client/src/common/currencies.js b/src/common/currencies.js similarity index 100% rename from client/src/common/currencies.js rename to src/common/currencies.js diff --git a/client/src/common/dataTypes.js b/src/common/dataTypes.js similarity index 100% rename from client/src/common/dataTypes.js rename to src/common/dataTypes.js diff --git a/client/src/common/dateFormatsOptions.js b/src/common/dateFormatsOptions.js similarity index 100% rename from client/src/common/dateFormatsOptions.js rename to src/common/dateFormatsOptions.js diff --git a/client/src/common/drawers.js b/src/common/drawers.js similarity index 100% rename from client/src/common/drawers.js rename to src/common/drawers.js diff --git a/client/src/common/errors.js b/src/common/errors.js similarity index 100% rename from client/src/common/errors.js rename to src/common/errors.js diff --git a/client/src/common/fiscalYearOptions.js b/src/common/fiscalYearOptions.js similarity index 100% rename from client/src/common/fiscalYearOptions.js rename to src/common/fiscalYearOptions.js diff --git a/client/src/common/homepageOptions.js b/src/common/homepageOptions.js similarity index 100% rename from client/src/common/homepageOptions.js rename to src/common/homepageOptions.js diff --git a/client/src/common/keyboardShortcutsOptions.js b/src/common/keyboardShortcutsOptions.js similarity index 100% rename from client/src/common/keyboardShortcutsOptions.js rename to src/common/keyboardShortcutsOptions.js diff --git a/client/src/common/languagesOptions.js b/src/common/languagesOptions.js similarity index 100% rename from client/src/common/languagesOptions.js rename to src/common/languagesOptions.js diff --git a/client/src/common/numberFormatsOptions.js b/src/common/numberFormatsOptions.js similarity index 100% rename from client/src/common/numberFormatsOptions.js rename to src/common/numberFormatsOptions.js diff --git a/client/src/common/quickNewOptions.js b/src/common/quickNewOptions.js similarity index 100% rename from client/src/common/quickNewOptions.js rename to src/common/quickNewOptions.js diff --git a/client/src/common/registerWizard.js b/src/common/registerWizard.js similarity index 100% rename from client/src/common/registerWizard.js rename to src/common/registerWizard.js diff --git a/client/src/common/resourcesTypes.js b/src/common/resourcesTypes.js similarity index 100% rename from client/src/common/resourcesTypes.js rename to src/common/resourcesTypes.js diff --git a/client/src/common/subscriptionModels.js b/src/common/subscriptionModels.js similarity index 100% rename from client/src/common/subscriptionModels.js rename to src/common/subscriptionModels.js diff --git a/client/src/common/tables.js b/src/common/tables.js similarity index 100% rename from client/src/common/tables.js rename to src/common/tables.js diff --git a/client/src/components/AccountsMultiSelect.js b/src/components/AccountsMultiSelect.js similarity index 100% rename from client/src/components/AccountsMultiSelect.js rename to src/components/AccountsMultiSelect.js diff --git a/client/src/components/AccountsSelectList.js b/src/components/AccountsSelectList.js similarity index 100% rename from client/src/components/AccountsSelectList.js rename to src/components/AccountsSelectList.js diff --git a/client/src/components/AccountsSuggestField.js b/src/components/AccountsSuggestField.js similarity index 100% rename from client/src/components/AccountsSuggestField.js rename to src/components/AccountsSuggestField.js diff --git a/client/src/components/AccountsTypesSelect.js b/src/components/AccountsTypesSelect.js similarity index 100% rename from client/src/components/AccountsTypesSelect.js rename to src/components/AccountsTypesSelect.js diff --git a/client/src/components/AdvancedFilter/AdvancedFilter.schema.js b/src/components/AdvancedFilter/AdvancedFilter.schema.js similarity index 100% rename from client/src/components/AdvancedFilter/AdvancedFilter.schema.js rename to src/components/AdvancedFilter/AdvancedFilter.schema.js diff --git a/client/src/components/AdvancedFilter/AdvancedFilterCompatatorField.js b/src/components/AdvancedFilter/AdvancedFilterCompatatorField.js similarity index 100% rename from client/src/components/AdvancedFilter/AdvancedFilterCompatatorField.js rename to src/components/AdvancedFilter/AdvancedFilterCompatatorField.js diff --git a/client/src/components/AdvancedFilter/AdvancedFilterDropdown.js b/src/components/AdvancedFilter/AdvancedFilterDropdown.js similarity index 100% rename from client/src/components/AdvancedFilter/AdvancedFilterDropdown.js rename to src/components/AdvancedFilter/AdvancedFilterDropdown.js diff --git a/client/src/components/AdvancedFilter/AdvancedFilterDropdownContext.js b/src/components/AdvancedFilter/AdvancedFilterDropdownContext.js similarity index 100% rename from client/src/components/AdvancedFilter/AdvancedFilterDropdownContext.js rename to src/components/AdvancedFilter/AdvancedFilterDropdownContext.js diff --git a/client/src/components/AdvancedFilter/AdvancedFilterPopover.js b/src/components/AdvancedFilter/AdvancedFilterPopover.js similarity index 100% rename from client/src/components/AdvancedFilter/AdvancedFilterPopover.js rename to src/components/AdvancedFilter/AdvancedFilterPopover.js diff --git a/client/src/components/AdvancedFilter/AdvancedFilterValueField.js b/src/components/AdvancedFilter/AdvancedFilterValueField.js similarity index 100% rename from client/src/components/AdvancedFilter/AdvancedFilterValueField.js rename to src/components/AdvancedFilter/AdvancedFilterValueField.js diff --git a/client/src/components/AdvancedFilter/components.js b/src/components/AdvancedFilter/components.js similarity index 100% rename from client/src/components/AdvancedFilter/components.js rename to src/components/AdvancedFilter/components.js diff --git a/client/src/components/AdvancedFilter/interfaces.ts b/src/components/AdvancedFilter/interfaces.ts similarity index 100% rename from client/src/components/AdvancedFilter/interfaces.ts rename to src/components/AdvancedFilter/interfaces.ts diff --git a/client/src/components/AdvancedFilter/utils.js b/src/components/AdvancedFilter/utils.js similarity index 100% rename from client/src/components/AdvancedFilter/utils.js rename to src/components/AdvancedFilter/utils.js diff --git a/client/src/components/Alert/index.js b/src/components/Alert/index.js similarity index 100% rename from client/src/components/Alert/index.js rename to src/components/Alert/index.js diff --git a/client/src/components/Alert/style.module.scss b/src/components/Alert/style.module.scss similarity index 100% rename from client/src/components/Alert/style.module.scss rename to src/components/Alert/style.module.scss diff --git a/client/src/components/App.js b/src/components/App.js similarity index 100% rename from client/src/components/App.js rename to src/components/App.js diff --git a/client/src/components/AppIntlLoader.js b/src/components/AppIntlLoader.js similarity index 100% rename from client/src/components/AppIntlLoader.js rename to src/components/AppIntlLoader.js diff --git a/client/src/components/AppIntlProvider.js b/src/components/AppIntlProvider.js similarity index 100% rename from client/src/components/AppIntlProvider.js rename to src/components/AppIntlProvider.js diff --git a/client/src/components/AppToaster.js b/src/components/AppToaster.js similarity index 100% rename from client/src/components/AppToaster.js rename to src/components/AppToaster.js diff --git a/client/src/components/Authentication.js b/src/components/Authentication.js similarity index 100% rename from client/src/components/Authentication.js rename to src/components/Authentication.js diff --git a/client/src/components/Card.js b/src/components/Card.js similarity index 100% rename from client/src/components/Card.js rename to src/components/Card.js diff --git a/client/src/components/CategoriesSelectList.js b/src/components/CategoriesSelectList.js similarity index 100% rename from client/src/components/CategoriesSelectList.js rename to src/components/CategoriesSelectList.js diff --git a/client/src/components/CloudLoadingIndicator.js b/src/components/CloudLoadingIndicator.js similarity index 100% rename from client/src/components/CloudLoadingIndicator.js rename to src/components/CloudLoadingIndicator.js diff --git a/client/src/components/ContactSelecetList.js b/src/components/ContactSelecetList.js similarity index 100% rename from client/src/components/ContactSelecetList.js rename to src/components/ContactSelecetList.js diff --git a/client/src/components/ContactsMultiSelect.js b/src/components/ContactsMultiSelect.js similarity index 100% rename from client/src/components/ContactsMultiSelect.js rename to src/components/ContactsMultiSelect.js diff --git a/client/src/components/ContactsSuggestField.js b/src/components/ContactsSuggestField.js similarity index 100% rename from client/src/components/ContactsSuggestField.js rename to src/components/ContactsSuggestField.js diff --git a/client/src/components/ContextMenu.js b/src/components/ContextMenu.js similarity index 100% rename from client/src/components/ContextMenu.js rename to src/components/ContextMenu.js diff --git a/client/src/components/CurrenciesSelectList.js b/src/components/CurrenciesSelectList.js similarity index 100% rename from client/src/components/CurrenciesSelectList.js rename to src/components/CurrenciesSelectList.js diff --git a/client/src/components/CurrencySelectList.js b/src/components/CurrencySelectList.js similarity index 100% rename from client/src/components/CurrencySelectList.js rename to src/components/CurrencySelectList.js diff --git a/client/src/components/CustomFields.js b/src/components/CustomFields.js similarity index 100% rename from client/src/components/CustomFields.js rename to src/components/CustomFields.js diff --git a/client/src/components/Dashboard/AuthenticatedUser.js b/src/components/Dashboard/AuthenticatedUser.js similarity index 100% rename from client/src/components/Dashboard/AuthenticatedUser.js rename to src/components/Dashboard/AuthenticatedUser.js diff --git a/client/src/components/Dashboard/BigcapitalLoading.js b/src/components/Dashboard/BigcapitalLoading.js similarity index 100% rename from client/src/components/Dashboard/BigcapitalLoading.js rename to src/components/Dashboard/BigcapitalLoading.js diff --git a/client/src/components/Dashboard/Dashboard.js b/src/components/Dashboard/Dashboard.js similarity index 100% rename from client/src/components/Dashboard/Dashboard.js rename to src/components/Dashboard/Dashboard.js diff --git a/client/src/components/Dashboard/DashboardActionViewsList.js b/src/components/Dashboard/DashboardActionViewsList.js similarity index 100% rename from client/src/components/Dashboard/DashboardActionViewsList.js rename to src/components/Dashboard/DashboardActionViewsList.js diff --git a/client/src/components/Dashboard/DashboardActionsBar.js b/src/components/Dashboard/DashboardActionsBar.js similarity index 100% rename from client/src/components/Dashboard/DashboardActionsBar.js rename to src/components/Dashboard/DashboardActionsBar.js diff --git a/client/src/components/Dashboard/DashboardBackLink.js b/src/components/Dashboard/DashboardBackLink.js similarity index 100% rename from client/src/components/Dashboard/DashboardBackLink.js rename to src/components/Dashboard/DashboardBackLink.js diff --git a/client/src/components/Dashboard/DashboardBoot.js b/src/components/Dashboard/DashboardBoot.js similarity index 100% rename from client/src/components/Dashboard/DashboardBoot.js rename to src/components/Dashboard/DashboardBoot.js diff --git a/client/src/components/Dashboard/DashboardBreadcrumbs.js b/src/components/Dashboard/DashboardBreadcrumbs.js similarity index 100% rename from client/src/components/Dashboard/DashboardBreadcrumbs.js rename to src/components/Dashboard/DashboardBreadcrumbs.js diff --git a/client/src/components/Dashboard/DashboardCard.js b/src/components/Dashboard/DashboardCard.js similarity index 100% rename from client/src/components/Dashboard/DashboardCard.js rename to src/components/Dashboard/DashboardCard.js diff --git a/client/src/components/Dashboard/DashboardContent.js b/src/components/Dashboard/DashboardContent.js similarity index 100% rename from client/src/components/Dashboard/DashboardContent.js rename to src/components/Dashboard/DashboardContent.js diff --git a/client/src/components/Dashboard/DashboardContentRoute.js b/src/components/Dashboard/DashboardContentRoute.js similarity index 100% rename from client/src/components/Dashboard/DashboardContentRoute.js rename to src/components/Dashboard/DashboardContentRoute.js diff --git a/client/src/components/Dashboard/DashboardContentTable.js b/src/components/Dashboard/DashboardContentTable.js similarity index 100% rename from client/src/components/Dashboard/DashboardContentTable.js rename to src/components/Dashboard/DashboardContentTable.js diff --git a/client/src/components/Dashboard/DashboardErrorBoundary.js b/src/components/Dashboard/DashboardErrorBoundary.js similarity index 100% rename from client/src/components/Dashboard/DashboardErrorBoundary.js rename to src/components/Dashboard/DashboardErrorBoundary.js diff --git a/client/src/components/Dashboard/DashboardFilterButton.js b/src/components/Dashboard/DashboardFilterButton.js similarity index 100% rename from client/src/components/Dashboard/DashboardFilterButton.js rename to src/components/Dashboard/DashboardFilterButton.js diff --git a/client/src/components/Dashboard/DashboardFooter.js b/src/components/Dashboard/DashboardFooter.js similarity index 100% rename from client/src/components/Dashboard/DashboardFooter.js rename to src/components/Dashboard/DashboardFooter.js diff --git a/client/src/components/Dashboard/DashboardInsider.js b/src/components/Dashboard/DashboardInsider.js similarity index 100% rename from client/src/components/Dashboard/DashboardInsider.js rename to src/components/Dashboard/DashboardInsider.js diff --git a/client/src/components/Dashboard/DashboardLoadingIndicator.js b/src/components/Dashboard/DashboardLoadingIndicator.js similarity index 100% rename from client/src/components/Dashboard/DashboardLoadingIndicator.js rename to src/components/Dashboard/DashboardLoadingIndicator.js diff --git a/client/src/components/Dashboard/DashboardPage.js b/src/components/Dashboard/DashboardPage.js similarity index 100% rename from client/src/components/Dashboard/DashboardPage.js rename to src/components/Dashboard/DashboardPage.js diff --git a/client/src/components/Dashboard/DashboardPageContent.js b/src/components/Dashboard/DashboardPageContent.js similarity index 100% rename from client/src/components/Dashboard/DashboardPageContent.js rename to src/components/Dashboard/DashboardPageContent.js diff --git a/client/src/components/Dashboard/DashboardProvider.js b/src/components/Dashboard/DashboardProvider.js similarity index 100% rename from client/src/components/Dashboard/DashboardProvider.js rename to src/components/Dashboard/DashboardProvider.js diff --git a/client/src/components/Dashboard/DashboardRowsHeightButton.js b/src/components/Dashboard/DashboardRowsHeightButton.js similarity index 100% rename from client/src/components/Dashboard/DashboardRowsHeightButton.js rename to src/components/Dashboard/DashboardRowsHeightButton.js diff --git a/client/src/components/Dashboard/DashboardSplitePane.js b/src/components/Dashboard/DashboardSplitePane.js similarity index 100% rename from client/src/components/Dashboard/DashboardSplitePane.js rename to src/components/Dashboard/DashboardSplitePane.js diff --git a/client/src/components/Dashboard/DashboardTopbar.js b/src/components/Dashboard/DashboardTopbar.js similarity index 100% rename from client/src/components/Dashboard/DashboardTopbar.js rename to src/components/Dashboard/DashboardTopbar.js diff --git a/client/src/components/Dashboard/DashboardViewsTabs.js b/src/components/Dashboard/DashboardViewsTabs.js similarity index 100% rename from client/src/components/Dashboard/DashboardViewsTabs.js rename to src/components/Dashboard/DashboardViewsTabs.js diff --git a/client/src/components/Dashboard/GlobalHotkeys.js b/src/components/Dashboard/GlobalHotkeys.js similarity index 100% rename from client/src/components/Dashboard/GlobalHotkeys.js rename to src/components/Dashboard/GlobalHotkeys.js diff --git a/client/src/components/Dashboard/PrivatePages.js b/src/components/Dashboard/PrivatePages.js similarity index 100% rename from client/src/components/Dashboard/PrivatePages.js rename to src/components/Dashboard/PrivatePages.js diff --git a/client/src/components/Dashboard/PrivatePagesProvider.js b/src/components/Dashboard/PrivatePagesProvider.js similarity index 100% rename from client/src/components/Dashboard/PrivatePagesProvider.js rename to src/components/Dashboard/PrivatePagesProvider.js diff --git a/client/src/components/Dashboard/SplashScreen.js b/src/components/Dashboard/SplashScreen.js similarity index 100% rename from client/src/components/Dashboard/SplashScreen.js rename to src/components/Dashboard/SplashScreen.js diff --git a/client/src/components/Dashboard/TopbarUser.js b/src/components/Dashboard/TopbarUser.js similarity index 100% rename from client/src/components/Dashboard/TopbarUser.js rename to src/components/Dashboard/TopbarUser.js diff --git a/client/src/components/Dashboard/index.js b/src/components/Dashboard/index.js similarity index 100% rename from client/src/components/Dashboard/index.js rename to src/components/Dashboard/index.js diff --git a/client/src/components/DataTable.js b/src/components/DataTable.js similarity index 100% rename from client/src/components/DataTable.js rename to src/components/DataTable.js diff --git a/client/src/components/DataTableCells/AccountsListFieldCell.js b/src/components/DataTableCells/AccountsListFieldCell.js similarity index 100% rename from client/src/components/DataTableCells/AccountsListFieldCell.js rename to src/components/DataTableCells/AccountsListFieldCell.js diff --git a/client/src/components/DataTableCells/CheckBoxFieldCell.js b/src/components/DataTableCells/CheckBoxFieldCell.js similarity index 100% rename from client/src/components/DataTableCells/CheckBoxFieldCell.js rename to src/components/DataTableCells/CheckBoxFieldCell.js diff --git a/client/src/components/DataTableCells/ContactsListFieldCell.js b/src/components/DataTableCells/ContactsListFieldCell.js similarity index 100% rename from client/src/components/DataTableCells/ContactsListFieldCell.js rename to src/components/DataTableCells/ContactsListFieldCell.js diff --git a/client/src/components/DataTableCells/DivFieldCell.js b/src/components/DataTableCells/DivFieldCell.js similarity index 100% rename from client/src/components/DataTableCells/DivFieldCell.js rename to src/components/DataTableCells/DivFieldCell.js diff --git a/client/src/components/DataTableCells/InputGroupCell.js b/src/components/DataTableCells/InputGroupCell.js similarity index 100% rename from client/src/components/DataTableCells/InputGroupCell.js rename to src/components/DataTableCells/InputGroupCell.js diff --git a/client/src/components/DataTableCells/ItemsListCell.js b/src/components/DataTableCells/ItemsListCell.js similarity index 100% rename from client/src/components/DataTableCells/ItemsListCell.js rename to src/components/DataTableCells/ItemsListCell.js diff --git a/client/src/components/DataTableCells/MoneyFieldCell.js b/src/components/DataTableCells/MoneyFieldCell.js similarity index 100% rename from client/src/components/DataTableCells/MoneyFieldCell.js rename to src/components/DataTableCells/MoneyFieldCell.js diff --git a/client/src/components/DataTableCells/NumericInputCell.js b/src/components/DataTableCells/NumericInputCell.js similarity index 100% rename from client/src/components/DataTableCells/NumericInputCell.js rename to src/components/DataTableCells/NumericInputCell.js diff --git a/client/src/components/DataTableCells/PaymentReceiveListFieldCell.js b/src/components/DataTableCells/PaymentReceiveListFieldCell.js similarity index 100% rename from client/src/components/DataTableCells/PaymentReceiveListFieldCell.js rename to src/components/DataTableCells/PaymentReceiveListFieldCell.js diff --git a/client/src/components/DataTableCells/PercentFieldCell.js b/src/components/DataTableCells/PercentFieldCell.js similarity index 100% rename from client/src/components/DataTableCells/PercentFieldCell.js rename to src/components/DataTableCells/PercentFieldCell.js diff --git a/client/src/components/DataTableCells/index.js b/src/components/DataTableCells/index.js similarity index 100% rename from client/src/components/DataTableCells/index.js rename to src/components/DataTableCells/index.js diff --git a/client/src/components/Datatable/Cells.js b/src/components/Datatable/Cells.js similarity index 100% rename from client/src/components/Datatable/Cells.js rename to src/components/Datatable/Cells.js diff --git a/client/src/components/Datatable/DatatableEditable.js b/src/components/Datatable/DatatableEditable.js similarity index 100% rename from client/src/components/Datatable/DatatableEditable.js rename to src/components/Datatable/DatatableEditable.js diff --git a/client/src/components/Datatable/TableBody.js b/src/components/Datatable/TableBody.js similarity index 100% rename from client/src/components/Datatable/TableBody.js rename to src/components/Datatable/TableBody.js diff --git a/client/src/components/Datatable/TableCell.js b/src/components/Datatable/TableCell.js similarity index 100% rename from client/src/components/Datatable/TableCell.js rename to src/components/Datatable/TableCell.js diff --git a/client/src/components/Datatable/TableContext.js b/src/components/Datatable/TableContext.js similarity index 100% rename from client/src/components/Datatable/TableContext.js rename to src/components/Datatable/TableContext.js diff --git a/client/src/components/Datatable/TableFastCell.js b/src/components/Datatable/TableFastCell.js similarity index 100% rename from client/src/components/Datatable/TableFastCell.js rename to src/components/Datatable/TableFastCell.js diff --git a/client/src/components/Datatable/TableFooter.js b/src/components/Datatable/TableFooter.js similarity index 100% rename from client/src/components/Datatable/TableFooter.js rename to src/components/Datatable/TableFooter.js diff --git a/client/src/components/Datatable/TableHeader.js b/src/components/Datatable/TableHeader.js similarity index 100% rename from client/src/components/Datatable/TableHeader.js rename to src/components/Datatable/TableHeader.js diff --git a/client/src/components/Datatable/TableHeaderSkeleton.js b/src/components/Datatable/TableHeaderSkeleton.js similarity index 100% rename from client/src/components/Datatable/TableHeaderSkeleton.js rename to src/components/Datatable/TableHeaderSkeleton.js diff --git a/client/src/components/Datatable/TableIndeterminateCheckboxHeader.js b/src/components/Datatable/TableIndeterminateCheckboxHeader.js similarity index 100% rename from client/src/components/Datatable/TableIndeterminateCheckboxHeader.js rename to src/components/Datatable/TableIndeterminateCheckboxHeader.js diff --git a/client/src/components/Datatable/TableIndeterminateCheckboxRow.js b/src/components/Datatable/TableIndeterminateCheckboxRow.js similarity index 100% rename from client/src/components/Datatable/TableIndeterminateCheckboxRow.js rename to src/components/Datatable/TableIndeterminateCheckboxRow.js diff --git a/client/src/components/Datatable/TableLoading.js b/src/components/Datatable/TableLoading.js similarity index 100% rename from client/src/components/Datatable/TableLoading.js rename to src/components/Datatable/TableLoading.js diff --git a/client/src/components/Datatable/TableNoResultsRow.js b/src/components/Datatable/TableNoResultsRow.js similarity index 100% rename from client/src/components/Datatable/TableNoResultsRow.js rename to src/components/Datatable/TableNoResultsRow.js diff --git a/client/src/components/Datatable/TablePage.js b/src/components/Datatable/TablePage.js similarity index 100% rename from client/src/components/Datatable/TablePage.js rename to src/components/Datatable/TablePage.js diff --git a/client/src/components/Datatable/TablePagination.js b/src/components/Datatable/TablePagination.js similarity index 100% rename from client/src/components/Datatable/TablePagination.js rename to src/components/Datatable/TablePagination.js diff --git a/client/src/components/Datatable/TableRow.js b/src/components/Datatable/TableRow.js similarity index 100% rename from client/src/components/Datatable/TableRow.js rename to src/components/Datatable/TableRow.js diff --git a/client/src/components/Datatable/TableRows.js b/src/components/Datatable/TableRows.js similarity index 100% rename from client/src/components/Datatable/TableRows.js rename to src/components/Datatable/TableRows.js diff --git a/client/src/components/Datatable/TableSkeletonRows.js b/src/components/Datatable/TableSkeletonRows.js similarity index 100% rename from client/src/components/Datatable/TableSkeletonRows.js rename to src/components/Datatable/TableSkeletonRows.js diff --git a/client/src/components/Datatable/TableTBody.js b/src/components/Datatable/TableTBody.js similarity index 100% rename from client/src/components/Datatable/TableTBody.js rename to src/components/Datatable/TableTBody.js diff --git a/client/src/components/Datatable/TableVirtualizedRows.js b/src/components/Datatable/TableVirtualizedRows.js similarity index 100% rename from client/src/components/Datatable/TableVirtualizedRows.js rename to src/components/Datatable/TableVirtualizedRows.js diff --git a/client/src/components/Datatable/TableWrapper.js b/src/components/Datatable/TableWrapper.js similarity index 100% rename from client/src/components/Datatable/TableWrapper.js rename to src/components/Datatable/TableWrapper.js diff --git a/client/src/components/Datatable/utils.js b/src/components/Datatable/utils.js similarity index 100% rename from client/src/components/Datatable/utils.js rename to src/components/Datatable/utils.js diff --git a/client/src/components/Details/index.js b/src/components/Details/index.js similarity index 100% rename from client/src/components/Details/index.js rename to src/components/Details/index.js diff --git a/client/src/components/Dialog/Dialog.js b/src/components/Dialog/Dialog.js similarity index 100% rename from client/src/components/Dialog/Dialog.js rename to src/components/Dialog/Dialog.js diff --git a/client/src/components/Dialog/DialogContent.js b/src/components/Dialog/DialogContent.js similarity index 100% rename from client/src/components/Dialog/DialogContent.js rename to src/components/Dialog/DialogContent.js diff --git a/client/src/components/Dialog/DialogSuspense.js b/src/components/Dialog/DialogSuspense.js similarity index 100% rename from client/src/components/Dialog/DialogSuspense.js rename to src/components/Dialog/DialogSuspense.js diff --git a/client/src/components/DialogReduxConnect.js b/src/components/DialogReduxConnect.js similarity index 100% rename from client/src/components/DialogReduxConnect.js rename to src/components/DialogReduxConnect.js diff --git a/client/src/components/DialogsContainer.js b/src/components/DialogsContainer.js similarity index 100% rename from client/src/components/DialogsContainer.js rename to src/components/DialogsContainer.js diff --git a/client/src/components/DisplayNameList.js b/src/components/DisplayNameList.js similarity index 100% rename from client/src/components/DisplayNameList.js rename to src/components/DisplayNameList.js diff --git a/client/src/components/Dragzone.js b/src/components/Dragzone.js similarity index 100% rename from client/src/components/Dragzone.js rename to src/components/Dragzone.js diff --git a/client/src/components/Drawer/Drawer.js b/src/components/Drawer/Drawer.js similarity index 100% rename from client/src/components/Drawer/Drawer.js rename to src/components/Drawer/Drawer.js diff --git a/client/src/components/Drawer/DrawerHeaderContent.js b/src/components/Drawer/DrawerHeaderContent.js similarity index 100% rename from client/src/components/Drawer/DrawerHeaderContent.js rename to src/components/Drawer/DrawerHeaderContent.js diff --git a/client/src/components/Drawer/DrawerInsider.js b/src/components/Drawer/DrawerInsider.js similarity index 100% rename from client/src/components/Drawer/DrawerInsider.js rename to src/components/Drawer/DrawerInsider.js diff --git a/client/src/components/Drawer/DrawerMainTabs.js b/src/components/Drawer/DrawerMainTabs.js similarity index 100% rename from client/src/components/Drawer/DrawerMainTabs.js rename to src/components/Drawer/DrawerMainTabs.js diff --git a/client/src/components/Drawer/DrawerSuspense.js b/src/components/Drawer/DrawerSuspense.js similarity index 100% rename from client/src/components/Drawer/DrawerSuspense.js rename to src/components/Drawer/DrawerSuspense.js diff --git a/client/src/components/Drawer/index.js b/src/components/Drawer/index.js similarity index 100% rename from client/src/components/Drawer/index.js rename to src/components/Drawer/index.js diff --git a/client/src/components/DrawersContainer.js b/src/components/DrawersContainer.js similarity index 100% rename from client/src/components/DrawersContainer.js rename to src/components/DrawersContainer.js diff --git a/client/src/components/EmptyStatus.js b/src/components/EmptyStatus.js similarity index 100% rename from client/src/components/EmptyStatus.js rename to src/components/EmptyStatus.js diff --git a/client/src/components/ErrorBoundary/index.js b/src/components/ErrorBoundary/index.js similarity index 100% rename from client/src/components/ErrorBoundary/index.js rename to src/components/ErrorBoundary/index.js diff --git a/client/src/components/ErrorMessage.js b/src/components/ErrorMessage.js similarity index 100% rename from client/src/components/ErrorMessage.js rename to src/components/ErrorMessage.js diff --git a/client/src/components/FieldHint.js b/src/components/FieldHint.js similarity index 100% rename from client/src/components/FieldHint.js rename to src/components/FieldHint.js diff --git a/client/src/components/FieldRequiredHint.js b/src/components/FieldRequiredHint.js similarity index 100% rename from client/src/components/FieldRequiredHint.js rename to src/components/FieldRequiredHint.js diff --git a/client/src/components/FinancialSheet.js b/src/components/FinancialSheet.js similarity index 100% rename from client/src/components/FinancialSheet.js rename to src/components/FinancialSheet.js diff --git a/client/src/components/FinancialStatement.js b/src/components/FinancialStatement.js similarity index 100% rename from client/src/components/FinancialStatement.js rename to src/components/FinancialStatement.js diff --git a/client/src/components/FormattedMessage.js b/src/components/FormattedMessage.js similarity index 100% rename from client/src/components/FormattedMessage.js rename to src/components/FormattedMessage.js diff --git a/client/src/components/Forms/Checkbox.tsx b/src/components/Forms/Checkbox.tsx similarity index 100% rename from client/src/components/Forms/Checkbox.tsx rename to src/components/Forms/Checkbox.tsx diff --git a/client/src/components/Forms/FormObserver.js b/src/components/Forms/FormObserver.js similarity index 100% rename from client/src/components/Forms/FormObserver.js rename to src/components/Forms/FormObserver.js diff --git a/client/src/components/Forms/InputPrepend.js b/src/components/Forms/InputPrepend.js similarity index 100% rename from client/src/components/Forms/InputPrepend.js rename to src/components/Forms/InputPrepend.js diff --git a/client/src/components/Forms/InputPrependButton.js b/src/components/Forms/InputPrependButton.js similarity index 100% rename from client/src/components/Forms/InputPrependButton.js rename to src/components/Forms/InputPrependButton.js diff --git a/client/src/components/Forms/InputPrependOptions.js b/src/components/Forms/InputPrependOptions.js similarity index 100% rename from client/src/components/Forms/InputPrependOptions.js rename to src/components/Forms/InputPrependOptions.js diff --git a/client/src/components/Forms/InputPrependText.js b/src/components/Forms/InputPrependText.js similarity index 100% rename from client/src/components/Forms/InputPrependText.js rename to src/components/Forms/InputPrependText.js diff --git a/client/src/components/Forms/MoneyInputGroup/CurrencyInputProps.ts b/src/components/Forms/MoneyInputGroup/CurrencyInputProps.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/CurrencyInputProps.ts rename to src/components/Forms/MoneyInputGroup/CurrencyInputProps.ts diff --git a/client/src/components/Forms/MoneyInputGroup/index.tsx b/src/components/Forms/MoneyInputGroup/index.tsx similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/index.tsx rename to src/components/Forms/MoneyInputGroup/index.tsx diff --git a/client/src/components/Forms/MoneyInputGroup/utils/__tests__/addSeparators.spec.ts b/src/components/Forms/MoneyInputGroup/utils/__tests__/addSeparators.spec.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/__tests__/addSeparators.spec.ts rename to src/components/Forms/MoneyInputGroup/utils/__tests__/addSeparators.spec.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/__tests__/cleanValue.spec.ts b/src/components/Forms/MoneyInputGroup/utils/__tests__/cleanValue.spec.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/__tests__/cleanValue.spec.ts rename to src/components/Forms/MoneyInputGroup/utils/__tests__/cleanValue.spec.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/__tests__/fixedDecimalValue.spec.ts b/src/components/Forms/MoneyInputGroup/utils/__tests__/fixedDecimalValue.spec.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/__tests__/fixedDecimalValue.spec.ts rename to src/components/Forms/MoneyInputGroup/utils/__tests__/fixedDecimalValue.spec.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/__tests__/formatValue.spec.ts b/src/components/Forms/MoneyInputGroup/utils/__tests__/formatValue.spec.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/__tests__/formatValue.spec.ts rename to src/components/Forms/MoneyInputGroup/utils/__tests__/formatValue.spec.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/__tests__/isNumber.spec.ts b/src/components/Forms/MoneyInputGroup/utils/__tests__/isNumber.spec.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/__tests__/isNumber.spec.ts rename to src/components/Forms/MoneyInputGroup/utils/__tests__/isNumber.spec.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/__tests__/padTrimValue.spec.ts b/src/components/Forms/MoneyInputGroup/utils/__tests__/padTrimValue.spec.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/__tests__/padTrimValue.spec.ts rename to src/components/Forms/MoneyInputGroup/utils/__tests__/padTrimValue.spec.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/__tests__/parseAbbrValue.spec.ts b/src/components/Forms/MoneyInputGroup/utils/__tests__/parseAbbrValue.spec.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/__tests__/parseAbbrValue.spec.ts rename to src/components/Forms/MoneyInputGroup/utils/__tests__/parseAbbrValue.spec.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/__tests__/removeInvalidChars.spec.ts b/src/components/Forms/MoneyInputGroup/utils/__tests__/removeInvalidChars.spec.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/__tests__/removeInvalidChars.spec.ts rename to src/components/Forms/MoneyInputGroup/utils/__tests__/removeInvalidChars.spec.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/__tests__/removeSeparators.spec.ts b/src/components/Forms/MoneyInputGroup/utils/__tests__/removeSeparators.spec.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/__tests__/removeSeparators.spec.ts rename to src/components/Forms/MoneyInputGroup/utils/__tests__/removeSeparators.spec.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/addSeparators.ts b/src/components/Forms/MoneyInputGroup/utils/addSeparators.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/addSeparators.ts rename to src/components/Forms/MoneyInputGroup/utils/addSeparators.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/cleanValue.ts b/src/components/Forms/MoneyInputGroup/utils/cleanValue.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/cleanValue.ts rename to src/components/Forms/MoneyInputGroup/utils/cleanValue.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/escapeRegExp.ts b/src/components/Forms/MoneyInputGroup/utils/escapeRegExp.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/escapeRegExp.ts rename to src/components/Forms/MoneyInputGroup/utils/escapeRegExp.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/fixedDecimalValue.ts b/src/components/Forms/MoneyInputGroup/utils/fixedDecimalValue.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/fixedDecimalValue.ts rename to src/components/Forms/MoneyInputGroup/utils/fixedDecimalValue.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/formatValue.ts b/src/components/Forms/MoneyInputGroup/utils/formatValue.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/formatValue.ts rename to src/components/Forms/MoneyInputGroup/utils/formatValue.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/index.tsx b/src/components/Forms/MoneyInputGroup/utils/index.tsx similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/index.tsx rename to src/components/Forms/MoneyInputGroup/utils/index.tsx diff --git a/client/src/components/Forms/MoneyInputGroup/utils/isNumber.ts b/src/components/Forms/MoneyInputGroup/utils/isNumber.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/isNumber.ts rename to src/components/Forms/MoneyInputGroup/utils/isNumber.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/padTrimValue.ts b/src/components/Forms/MoneyInputGroup/utils/padTrimValue.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/padTrimValue.ts rename to src/components/Forms/MoneyInputGroup/utils/padTrimValue.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/parseAbbrValue.ts b/src/components/Forms/MoneyInputGroup/utils/parseAbbrValue.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/parseAbbrValue.ts rename to src/components/Forms/MoneyInputGroup/utils/parseAbbrValue.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/removeInvalidChars.ts b/src/components/Forms/MoneyInputGroup/utils/removeInvalidChars.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/removeInvalidChars.ts rename to src/components/Forms/MoneyInputGroup/utils/removeInvalidChars.ts diff --git a/client/src/components/Forms/MoneyInputGroup/utils/removeSeparators.ts b/src/components/Forms/MoneyInputGroup/utils/removeSeparators.ts similarity index 100% rename from client/src/components/Forms/MoneyInputGroup/utils/removeSeparators.ts rename to src/components/Forms/MoneyInputGroup/utils/removeSeparators.ts diff --git a/client/src/components/Forms/index.js b/src/components/Forms/index.js similarity index 100% rename from client/src/components/Forms/index.js rename to src/components/Forms/index.js diff --git a/client/src/components/Grid/Col.js b/src/components/Grid/Col.js similarity index 100% rename from client/src/components/Grid/Col.js rename to src/components/Grid/Col.js diff --git a/client/src/components/Grid/Row.js b/src/components/Grid/Row.js similarity index 100% rename from client/src/components/Grid/Row.js rename to src/components/Grid/Row.js diff --git a/client/src/components/Guards/EnsureOrganizationIsNotReady.js b/src/components/Guards/EnsureOrganizationIsNotReady.js similarity index 100% rename from client/src/components/Guards/EnsureOrganizationIsNotReady.js rename to src/components/Guards/EnsureOrganizationIsNotReady.js diff --git a/client/src/components/Guards/EnsureOrganizationIsReady.js b/src/components/Guards/EnsureOrganizationIsReady.js similarity index 100% rename from client/src/components/Guards/EnsureOrganizationIsReady.js rename to src/components/Guards/EnsureOrganizationIsReady.js diff --git a/client/src/components/Guards/EnsureSubscriptionIsActive.js b/src/components/Guards/EnsureSubscriptionIsActive.js similarity index 100% rename from client/src/components/Guards/EnsureSubscriptionIsActive.js rename to src/components/Guards/EnsureSubscriptionIsActive.js diff --git a/client/src/components/Guards/EnsureSubscriptionsIsActive.js b/src/components/Guards/EnsureSubscriptionsIsActive.js similarity index 100% rename from client/src/components/Guards/EnsureSubscriptionsIsActive.js rename to src/components/Guards/EnsureSubscriptionsIsActive.js diff --git a/client/src/components/Guards/EnsureSubscriptionsIsInactive.js b/src/components/Guards/EnsureSubscriptionsIsInactive.js similarity index 100% rename from client/src/components/Guards/EnsureSubscriptionsIsInactive.js rename to src/components/Guards/EnsureSubscriptionsIsInactive.js diff --git a/client/src/components/Guards/PrivateRoute.js b/src/components/Guards/PrivateRoute.js similarity index 100% rename from client/src/components/Guards/PrivateRoute.js rename to src/components/Guards/PrivateRoute.js diff --git a/client/src/components/Icon.js b/src/components/Icon.js similarity index 100% rename from client/src/components/Icon.js rename to src/components/Icon.js diff --git a/client/src/components/Items/ItemsMultiSelect.js b/src/components/Items/ItemsMultiSelect.js similarity index 100% rename from client/src/components/Items/ItemsMultiSelect.js rename to src/components/Items/ItemsMultiSelect.js diff --git a/client/src/components/Items/index.js b/src/components/Items/index.js similarity index 100% rename from client/src/components/Items/index.js rename to src/components/Items/index.js diff --git a/client/src/components/ItemsListField.js b/src/components/ItemsListField.js similarity index 100% rename from client/src/components/ItemsListField.js rename to src/components/ItemsListField.js diff --git a/client/src/components/ItemsSuggestField.js b/src/components/ItemsSuggestField.js similarity index 100% rename from client/src/components/ItemsSuggestField.js rename to src/components/ItemsSuggestField.js diff --git a/client/src/components/LazyLoader.js b/src/components/LazyLoader.js similarity index 100% rename from client/src/components/LazyLoader.js rename to src/components/LazyLoader.js diff --git a/client/src/components/ListSelect.js b/src/components/ListSelect.js similarity index 100% rename from client/src/components/ListSelect.js rename to src/components/ListSelect.js diff --git a/client/src/components/LoadingIndicator.js b/src/components/LoadingIndicator.js similarity index 100% rename from client/src/components/LoadingIndicator.js rename to src/components/LoadingIndicator.js diff --git a/client/src/components/MaterialProgressBar.js b/src/components/MaterialProgressBar.js similarity index 100% rename from client/src/components/MaterialProgressBar.js rename to src/components/MaterialProgressBar.js diff --git a/client/src/components/Menu/index.js b/src/components/Menu/index.js similarity index 100% rename from client/src/components/Menu/index.js rename to src/components/Menu/index.js diff --git a/client/src/components/MenuItem.js b/src/components/MenuItem.js similarity index 100% rename from client/src/components/MenuItem.js rename to src/components/MenuItem.js diff --git a/client/src/components/MenuItemLabel.js b/src/components/MenuItemLabel.js similarity index 100% rename from client/src/components/MenuItemLabel.js rename to src/components/MenuItemLabel.js diff --git a/client/src/components/Money.js b/src/components/Money.js similarity index 100% rename from client/src/components/Money.js rename to src/components/Money.js diff --git a/client/src/components/MoneyExchangeRate.js b/src/components/MoneyExchangeRate.js similarity index 100% rename from client/src/components/MoneyExchangeRate.js rename to src/components/MoneyExchangeRate.js diff --git a/client/src/components/MultiSelect.js b/src/components/MultiSelect.js similarity index 100% rename from client/src/components/MultiSelect.js rename to src/components/MultiSelect.js diff --git a/client/src/components/MultiSelectTaggable/index.js b/src/components/MultiSelectTaggable/index.js similarity index 100% rename from client/src/components/MultiSelectTaggable/index.js rename to src/components/MultiSelectTaggable/index.js diff --git a/client/src/components/NProgress/AppProgress.js b/src/components/NProgress/AppProgress.js similarity index 100% rename from client/src/components/NProgress/AppProgress.js rename to src/components/NProgress/AppProgress.js diff --git a/client/src/components/NProgress/Bar.js b/src/components/NProgress/Bar.js similarity index 100% rename from client/src/components/NProgress/Bar.js rename to src/components/NProgress/Bar.js diff --git a/client/src/components/NProgress/Container.js b/src/components/NProgress/Container.js similarity index 100% rename from client/src/components/NProgress/Container.js rename to src/components/NProgress/Container.js diff --git a/client/src/components/NProgress/Progress.js b/src/components/NProgress/Progress.js similarity index 100% rename from client/src/components/NProgress/Progress.js rename to src/components/NProgress/Progress.js diff --git a/client/src/components/NProgress/Spinner.js b/src/components/NProgress/Spinner.js similarity index 100% rename from client/src/components/NProgress/Spinner.js rename to src/components/NProgress/Spinner.js diff --git a/client/src/components/NumberFormatDropdown/NumberFormatFields.js b/src/components/NumberFormatDropdown/NumberFormatFields.js similarity index 100% rename from client/src/components/NumberFormatDropdown/NumberFormatFields.js rename to src/components/NumberFormatDropdown/NumberFormatFields.js diff --git a/client/src/components/NumberFormatDropdown/NumberFormatFooter.js b/src/components/NumberFormatDropdown/NumberFormatFooter.js similarity index 100% rename from client/src/components/NumberFormatDropdown/NumberFormatFooter.js rename to src/components/NumberFormatDropdown/NumberFormatFooter.js diff --git a/client/src/components/NumberFormatDropdown/NumberFormats.schema.js b/src/components/NumberFormatDropdown/NumberFormats.schema.js similarity index 100% rename from client/src/components/NumberFormatDropdown/NumberFormats.schema.js rename to src/components/NumberFormatDropdown/NumberFormats.schema.js diff --git a/client/src/components/NumberFormatDropdown/index.js b/src/components/NumberFormatDropdown/index.js similarity index 100% rename from client/src/components/NumberFormatDropdown/index.js rename to src/components/NumberFormatDropdown/index.js diff --git a/client/src/components/PageFormBigNumber.js b/src/components/PageFormBigNumber.js similarity index 100% rename from client/src/components/PageFormBigNumber.js rename to src/components/PageFormBigNumber.js diff --git a/client/src/components/Pagination.js b/src/components/Pagination.js similarity index 100% rename from client/src/components/Pagination.js rename to src/components/Pagination.js diff --git a/client/src/components/PaymentReceiveListField.js b/src/components/PaymentReceiveListField.js similarity index 100% rename from client/src/components/PaymentReceiveListField.js rename to src/components/PaymentReceiveListField.js diff --git a/client/src/components/PdfPreview/index.js b/src/components/PdfPreview/index.js similarity index 100% rename from client/src/components/PdfPreview/index.js rename to src/components/PdfPreview/index.js diff --git a/client/src/components/Postbox.js b/src/components/Postbox.js similarity index 100% rename from client/src/components/Postbox.js rename to src/components/Postbox.js diff --git a/client/src/components/Preferences/PreferencesContentRoute.js b/src/components/Preferences/PreferencesContentRoute.js similarity index 100% rename from client/src/components/Preferences/PreferencesContentRoute.js rename to src/components/Preferences/PreferencesContentRoute.js diff --git a/client/src/components/Preferences/PreferencesPage.js b/src/components/Preferences/PreferencesPage.js similarity index 100% rename from client/src/components/Preferences/PreferencesPage.js rename to src/components/Preferences/PreferencesPage.js diff --git a/client/src/components/Preferences/PreferencesSidebar.js b/src/components/Preferences/PreferencesSidebar.js similarity index 100% rename from client/src/components/Preferences/PreferencesSidebar.js rename to src/components/Preferences/PreferencesSidebar.js diff --git a/client/src/components/Preferences/PreferencesSidebarContainer.js b/src/components/Preferences/PreferencesSidebarContainer.js similarity index 100% rename from client/src/components/Preferences/PreferencesSidebarContainer.js rename to src/components/Preferences/PreferencesSidebarContainer.js diff --git a/client/src/components/Preferences/PreferencesSubContent.js b/src/components/Preferences/PreferencesSubContent.js similarity index 100% rename from client/src/components/Preferences/PreferencesSubContent.js rename to src/components/Preferences/PreferencesSubContent.js diff --git a/client/src/components/Preferences/PreferencesTopbar.js b/src/components/Preferences/PreferencesTopbar.js similarity index 100% rename from client/src/components/Preferences/PreferencesTopbar.js rename to src/components/Preferences/PreferencesTopbar.js diff --git a/client/src/components/RequiredHint.js b/src/components/RequiredHint.js similarity index 100% rename from client/src/components/RequiredHint.js rename to src/components/RequiredHint.js diff --git a/client/src/components/SalutationList.js b/src/components/SalutationList.js similarity index 100% rename from client/src/components/SalutationList.js rename to src/components/SalutationList.js diff --git a/client/src/components/SelectList.js b/src/components/SelectList.js similarity index 100% rename from client/src/components/SelectList.js rename to src/components/SelectList.js diff --git a/client/src/components/Sidebar/Sidebar.js b/src/components/Sidebar/Sidebar.js similarity index 100% rename from client/src/components/Sidebar/Sidebar.js rename to src/components/Sidebar/Sidebar.js diff --git a/client/src/components/Sidebar/SidebarContainer.js b/src/components/Sidebar/SidebarContainer.js similarity index 100% rename from client/src/components/Sidebar/SidebarContainer.js rename to src/components/Sidebar/SidebarContainer.js diff --git a/client/src/components/Sidebar/SidebarHead.js b/src/components/Sidebar/SidebarHead.js similarity index 100% rename from client/src/components/Sidebar/SidebarHead.js rename to src/components/Sidebar/SidebarHead.js diff --git a/client/src/components/Sidebar/SidebarMenu.js b/src/components/Sidebar/SidebarMenu.js similarity index 100% rename from client/src/components/Sidebar/SidebarMenu.js rename to src/components/Sidebar/SidebarMenu.js diff --git a/client/src/components/SidebarOverlay/SidebarOverlayContainer.tsx b/src/components/SidebarOverlay/SidebarOverlayContainer.tsx similarity index 100% rename from client/src/components/SidebarOverlay/SidebarOverlayContainer.tsx rename to src/components/SidebarOverlay/SidebarOverlayContainer.tsx diff --git a/client/src/components/SidebarOverlay/index.tsx b/src/components/SidebarOverlay/index.tsx similarity index 100% rename from client/src/components/SidebarOverlay/index.tsx rename to src/components/SidebarOverlay/index.tsx diff --git a/client/src/components/Skeleton.js b/src/components/Skeleton.js similarity index 100% rename from client/src/components/Skeleton.js rename to src/components/Skeleton.js diff --git a/client/src/components/Subscriptions/index.js b/src/components/Subscriptions/index.js similarity index 100% rename from client/src/components/Subscriptions/index.js rename to src/components/Subscriptions/index.js diff --git a/client/src/components/TotalLines/TotalLines.module.scss b/src/components/TotalLines/TotalLines.module.scss similarity index 100% rename from client/src/components/TotalLines/TotalLines.module.scss rename to src/components/TotalLines/TotalLines.module.scss diff --git a/client/src/components/TotalLines/index.js b/src/components/TotalLines/index.js similarity index 100% rename from client/src/components/TotalLines/index.js rename to src/components/TotalLines/index.js diff --git a/client/src/components/UniversalSearch/UniversalSearch.js b/src/components/UniversalSearch/UniversalSearch.js similarity index 100% rename from client/src/components/UniversalSearch/UniversalSearch.js rename to src/components/UniversalSearch/UniversalSearch.js diff --git a/client/src/components/UniversalSearch/UniversalSearchProvider.js b/src/components/UniversalSearch/UniversalSearchProvider.js similarity index 100% rename from client/src/components/UniversalSearch/UniversalSearchProvider.js rename to src/components/UniversalSearch/UniversalSearchProvider.js diff --git a/client/src/components/UniversalSearch/utils.js b/src/components/UniversalSearch/utils.js similarity index 100% rename from client/src/components/UniversalSearch/utils.js rename to src/components/UniversalSearch/utils.js diff --git a/client/src/components/Utils/Choose.js b/src/components/Utils/Choose.js similarity index 100% rename from client/src/components/Utils/Choose.js rename to src/components/Utils/Choose.js diff --git a/client/src/components/Utils/For.js b/src/components/Utils/For.js similarity index 100% rename from client/src/components/Utils/For.js rename to src/components/Utils/For.js diff --git a/client/src/components/Utils/FormatDate.js b/src/components/Utils/FormatDate.js similarity index 100% rename from client/src/components/Utils/FormatDate.js rename to src/components/Utils/FormatDate.js diff --git a/client/src/components/Utils/FormatNumber.js b/src/components/Utils/FormatNumber.js similarity index 100% rename from client/src/components/Utils/FormatNumber.js rename to src/components/Utils/FormatNumber.js diff --git a/client/src/components/Utils/If.js b/src/components/Utils/If.js similarity index 100% rename from client/src/components/Utils/If.js rename to src/components/Utils/If.js diff --git a/client/src/components/Utils/index.js b/src/components/Utils/index.js similarity index 100% rename from client/src/components/Utils/index.js rename to src/components/Utils/index.js diff --git a/client/src/components/index.js b/src/components/index.js similarity index 100% rename from client/src/components/index.js rename to src/components/index.js diff --git a/client/src/components/modifiers.js b/src/components/modifiers.js similarity index 100% rename from client/src/components/modifiers.js rename to src/components/modifiers.js diff --git a/client/src/components/utils.js b/src/components/utils.js similarity index 100% rename from client/src/components/utils.js rename to src/components/utils.js diff --git a/client/src/config/app.js b/src/config/app.js similarity index 100% rename from client/src/config/app.js rename to src/config/app.js diff --git a/client/src/config/financialReportsMenu.js b/src/config/financialReportsMenu.js similarity index 100% rename from client/src/config/financialReportsMenu.js rename to src/config/financialReportsMenu.js diff --git a/client/src/config/footerLinks.js b/src/config/footerLinks.js similarity index 100% rename from client/src/config/footerLinks.js rename to src/config/footerLinks.js diff --git a/client/src/config/preferencesMenu.js b/src/config/preferencesMenu.js similarity index 100% rename from client/src/config/preferencesMenu.js rename to src/config/preferencesMenu.js diff --git a/client/src/config/sidebarMenu.js b/src/config/sidebarMenu.js similarity index 100% rename from client/src/config/sidebarMenu.js rename to src/config/sidebarMenu.js diff --git a/client/src/containers/Accounting/JournalsLanding/ManualJournalActionsBar.js b/src/containers/Accounting/JournalsLanding/ManualJournalActionsBar.js similarity index 100% rename from client/src/containers/Accounting/JournalsLanding/ManualJournalActionsBar.js rename to src/containers/Accounting/JournalsLanding/ManualJournalActionsBar.js diff --git a/client/src/containers/Accounting/JournalsLanding/ManualJournalsAlerts.js b/src/containers/Accounting/JournalsLanding/ManualJournalsAlerts.js similarity index 100% rename from client/src/containers/Accounting/JournalsLanding/ManualJournalsAlerts.js rename to src/containers/Accounting/JournalsLanding/ManualJournalsAlerts.js diff --git a/client/src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js b/src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js similarity index 100% rename from client/src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js rename to src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js diff --git a/client/src/containers/Accounting/JournalsLanding/ManualJournalsEmptyStatus.js b/src/containers/Accounting/JournalsLanding/ManualJournalsEmptyStatus.js similarity index 100% rename from client/src/containers/Accounting/JournalsLanding/ManualJournalsEmptyStatus.js rename to src/containers/Accounting/JournalsLanding/ManualJournalsEmptyStatus.js diff --git a/client/src/containers/Accounting/JournalsLanding/ManualJournalsList.js b/src/containers/Accounting/JournalsLanding/ManualJournalsList.js similarity index 100% rename from client/src/containers/Accounting/JournalsLanding/ManualJournalsList.js rename to src/containers/Accounting/JournalsLanding/ManualJournalsList.js diff --git a/client/src/containers/Accounting/JournalsLanding/ManualJournalsListProvider.js b/src/containers/Accounting/JournalsLanding/ManualJournalsListProvider.js similarity index 100% rename from client/src/containers/Accounting/JournalsLanding/ManualJournalsListProvider.js rename to src/containers/Accounting/JournalsLanding/ManualJournalsListProvider.js diff --git a/client/src/containers/Accounting/JournalsLanding/ManualJournalsViewTabs.js b/src/containers/Accounting/JournalsLanding/ManualJournalsViewTabs.js similarity index 100% rename from client/src/containers/Accounting/JournalsLanding/ManualJournalsViewTabs.js rename to src/containers/Accounting/JournalsLanding/ManualJournalsViewTabs.js diff --git a/client/src/containers/Accounting/JournalsLanding/components.js b/src/containers/Accounting/JournalsLanding/components.js similarity index 100% rename from client/src/containers/Accounting/JournalsLanding/components.js rename to src/containers/Accounting/JournalsLanding/components.js diff --git a/client/src/containers/Accounting/JournalsLanding/utils.js b/src/containers/Accounting/JournalsLanding/utils.js similarity index 100% rename from client/src/containers/Accounting/JournalsLanding/utils.js rename to src/containers/Accounting/JournalsLanding/utils.js diff --git a/client/src/containers/Accounting/JournalsLanding/withManualJournals.js b/src/containers/Accounting/JournalsLanding/withManualJournals.js similarity index 100% rename from client/src/containers/Accounting/JournalsLanding/withManualJournals.js rename to src/containers/Accounting/JournalsLanding/withManualJournals.js diff --git a/client/src/containers/Accounting/JournalsLanding/withManualJournalsActions.js b/src/containers/Accounting/JournalsLanding/withManualJournalsActions.js similarity index 100% rename from client/src/containers/Accounting/JournalsLanding/withManualJournalsActions.js rename to src/containers/Accounting/JournalsLanding/withManualJournalsActions.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalEntries.schema.js b/src/containers/Accounting/MakeJournal/MakeJournalEntries.schema.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalEntries.schema.js rename to src/containers/Accounting/MakeJournal/MakeJournalEntries.schema.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalEntriesField.js b/src/containers/Accounting/MakeJournal/MakeJournalEntriesField.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalEntriesField.js rename to src/containers/Accounting/MakeJournal/MakeJournalEntriesField.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalEntriesFooter.js b/src/containers/Accounting/MakeJournal/MakeJournalEntriesFooter.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalEntriesFooter.js rename to src/containers/Accounting/MakeJournal/MakeJournalEntriesFooter.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.js b/src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.js rename to src/containers/Accounting/MakeJournal/MakeJournalEntriesForm.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeader.js b/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeader.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeader.js rename to src/containers/Accounting/MakeJournal/MakeJournalEntriesHeader.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.js b/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.js rename to src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalEntriesPage.js b/src/containers/Accounting/MakeJournal/MakeJournalEntriesPage.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalEntriesPage.js rename to src/containers/Accounting/MakeJournal/MakeJournalEntriesPage.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalEntriesTable.js b/src/containers/Accounting/MakeJournal/MakeJournalEntriesTable.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalEntriesTable.js rename to src/containers/Accounting/MakeJournal/MakeJournalEntriesTable.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalFormDialogs.js b/src/containers/Accounting/MakeJournal/MakeJournalFormDialogs.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalFormDialogs.js rename to src/containers/Accounting/MakeJournal/MakeJournalFormDialogs.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalFormFloatingActions.js b/src/containers/Accounting/MakeJournal/MakeJournalFormFloatingActions.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalFormFloatingActions.js rename to src/containers/Accounting/MakeJournal/MakeJournalFormFloatingActions.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalFormFooter.js b/src/containers/Accounting/MakeJournal/MakeJournalFormFooter.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalFormFooter.js rename to src/containers/Accounting/MakeJournal/MakeJournalFormFooter.js diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalProvider.js b/src/containers/Accounting/MakeJournal/MakeJournalProvider.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/MakeJournalProvider.js rename to src/containers/Accounting/MakeJournal/MakeJournalProvider.js diff --git a/client/src/containers/Accounting/MakeJournal/components.js b/src/containers/Accounting/MakeJournal/components.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/components.js rename to src/containers/Accounting/MakeJournal/components.js diff --git a/client/src/containers/Accounting/MakeJournal/utils.js b/src/containers/Accounting/MakeJournal/utils.js similarity index 100% rename from client/src/containers/Accounting/MakeJournal/utils.js rename to src/containers/Accounting/MakeJournal/utils.js diff --git a/client/src/containers/Accounting/ManualJournalUniversalSearch.js b/src/containers/Accounting/ManualJournalUniversalSearch.js similarity index 100% rename from client/src/containers/Accounting/ManualJournalUniversalSearch.js rename to src/containers/Accounting/ManualJournalUniversalSearch.js diff --git a/client/src/containers/Accounts/AccountUniversalSearch.js b/src/containers/Accounts/AccountUniversalSearch.js similarity index 100% rename from client/src/containers/Accounts/AccountUniversalSearch.js rename to src/containers/Accounts/AccountUniversalSearch.js diff --git a/client/src/containers/Accounts/AccountsActionsBar.js b/src/containers/Accounts/AccountsActionsBar.js similarity index 100% rename from client/src/containers/Accounts/AccountsActionsBar.js rename to src/containers/Accounts/AccountsActionsBar.js diff --git a/client/src/containers/Accounts/AccountsAlerts.js b/src/containers/Accounts/AccountsAlerts.js similarity index 100% rename from client/src/containers/Accounts/AccountsAlerts.js rename to src/containers/Accounts/AccountsAlerts.js diff --git a/client/src/containers/Accounts/AccountsChart.js b/src/containers/Accounts/AccountsChart.js similarity index 100% rename from client/src/containers/Accounts/AccountsChart.js rename to src/containers/Accounts/AccountsChart.js diff --git a/client/src/containers/Accounts/AccountsChartProvider.js b/src/containers/Accounts/AccountsChartProvider.js similarity index 100% rename from client/src/containers/Accounts/AccountsChartProvider.js rename to src/containers/Accounts/AccountsChartProvider.js diff --git a/client/src/containers/Accounts/AccountsDataTable.js b/src/containers/Accounts/AccountsDataTable.js similarity index 100% rename from client/src/containers/Accounts/AccountsDataTable.js rename to src/containers/Accounts/AccountsDataTable.js diff --git a/client/src/containers/Accounts/AccountsViewsTabs.js b/src/containers/Accounts/AccountsViewsTabs.js similarity index 100% rename from client/src/containers/Accounts/AccountsViewsTabs.js rename to src/containers/Accounts/AccountsViewsTabs.js diff --git a/client/src/containers/Accounts/components.js b/src/containers/Accounts/components.js similarity index 100% rename from client/src/containers/Accounts/components.js rename to src/containers/Accounts/components.js diff --git a/client/src/containers/Accounts/utils.js b/src/containers/Accounts/utils.js similarity index 100% rename from client/src/containers/Accounts/utils.js rename to src/containers/Accounts/utils.js diff --git a/client/src/containers/Accounts/withAccounts.js b/src/containers/Accounts/withAccounts.js similarity index 100% rename from client/src/containers/Accounts/withAccounts.js rename to src/containers/Accounts/withAccounts.js diff --git a/client/src/containers/Accounts/withAccountsTableActions.js b/src/containers/Accounts/withAccountsTableActions.js similarity index 100% rename from client/src/containers/Accounts/withAccountsTableActions.js rename to src/containers/Accounts/withAccountsTableActions.js diff --git a/client/src/containers/Alert/withAlertActions.js b/src/containers/Alert/withAlertActions.js similarity index 100% rename from client/src/containers/Alert/withAlertActions.js rename to src/containers/Alert/withAlertActions.js diff --git a/client/src/containers/Alert/withAlertStoreConnect.js b/src/containers/Alert/withAlertStoreConnect.js similarity index 100% rename from client/src/containers/Alert/withAlertStoreConnect.js rename to src/containers/Alert/withAlertStoreConnect.js diff --git a/client/src/containers/Alerts/AccountActivateAlert.js b/src/containers/Alerts/AccountActivateAlert.js similarity index 100% rename from client/src/containers/Alerts/AccountActivateAlert.js rename to src/containers/Alerts/AccountActivateAlert.js diff --git a/client/src/containers/Alerts/AccountBulkActivateAlert.js b/src/containers/Alerts/AccountBulkActivateAlert.js similarity index 100% rename from client/src/containers/Alerts/AccountBulkActivateAlert.js rename to src/containers/Alerts/AccountBulkActivateAlert.js diff --git a/client/src/containers/Alerts/AccountBulkDeleteAlert.js b/src/containers/Alerts/AccountBulkDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/AccountBulkDeleteAlert.js rename to src/containers/Alerts/AccountBulkDeleteAlert.js diff --git a/client/src/containers/Alerts/AccountBulkInactivateAlert.js b/src/containers/Alerts/AccountBulkInactivateAlert.js similarity index 100% rename from client/src/containers/Alerts/AccountBulkInactivateAlert.js rename to src/containers/Alerts/AccountBulkInactivateAlert.js diff --git a/client/src/containers/Alerts/AccountDeleteAlert.js b/src/containers/Alerts/AccountDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/AccountDeleteAlert.js rename to src/containers/Alerts/AccountDeleteAlert.js diff --git a/client/src/containers/Alerts/AccountInactivateAlert.js b/src/containers/Alerts/AccountInactivateAlert.js similarity index 100% rename from client/src/containers/Alerts/AccountInactivateAlert.js rename to src/containers/Alerts/AccountInactivateAlert.js diff --git a/client/src/containers/Alerts/Bills/BillDeleteAlert.js b/src/containers/Alerts/Bills/BillDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Bills/BillDeleteAlert.js rename to src/containers/Alerts/Bills/BillDeleteAlert.js diff --git a/client/src/containers/Alerts/Bills/BillLocatedLandedCostDeleteAlert.js b/src/containers/Alerts/Bills/BillLocatedLandedCostDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Bills/BillLocatedLandedCostDeleteAlert.js rename to src/containers/Alerts/Bills/BillLocatedLandedCostDeleteAlert.js diff --git a/client/src/containers/Alerts/Bills/BillOpenAlert.js b/src/containers/Alerts/Bills/BillOpenAlert.js similarity index 100% rename from client/src/containers/Alerts/Bills/BillOpenAlert.js rename to src/containers/Alerts/Bills/BillOpenAlert.js diff --git a/client/src/containers/Alerts/Contacts/ContactActivateAlert.js b/src/containers/Alerts/Contacts/ContactActivateAlert.js similarity index 100% rename from client/src/containers/Alerts/Contacts/ContactActivateAlert.js rename to src/containers/Alerts/Contacts/ContactActivateAlert.js diff --git a/client/src/containers/Alerts/Contacts/ContactInactivateAlert.js b/src/containers/Alerts/Contacts/ContactInactivateAlert.js similarity index 100% rename from client/src/containers/Alerts/Contacts/ContactInactivateAlert.js rename to src/containers/Alerts/Contacts/ContactInactivateAlert.js diff --git a/client/src/containers/Alerts/Currencies/CurrencyDeleteAlert.js b/src/containers/Alerts/Currencies/CurrencyDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Currencies/CurrencyDeleteAlert.js rename to src/containers/Alerts/Currencies/CurrencyDeleteAlert.js diff --git a/client/src/containers/Alerts/Customers/CustomerBulkDeleteAlert.js b/src/containers/Alerts/Customers/CustomerBulkDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Customers/CustomerBulkDeleteAlert.js rename to src/containers/Alerts/Customers/CustomerBulkDeleteAlert.js diff --git a/client/src/containers/Alerts/Customers/CustomerDeleteAlert.js b/src/containers/Alerts/Customers/CustomerDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Customers/CustomerDeleteAlert.js rename to src/containers/Alerts/Customers/CustomerDeleteAlert.js diff --git a/client/src/containers/Alerts/Estimates/EstimateApproveAlert.js b/src/containers/Alerts/Estimates/EstimateApproveAlert.js similarity index 100% rename from client/src/containers/Alerts/Estimates/EstimateApproveAlert.js rename to src/containers/Alerts/Estimates/EstimateApproveAlert.js diff --git a/client/src/containers/Alerts/Estimates/EstimateDeleteAlert.js b/src/containers/Alerts/Estimates/EstimateDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Estimates/EstimateDeleteAlert.js rename to src/containers/Alerts/Estimates/EstimateDeleteAlert.js diff --git a/client/src/containers/Alerts/Estimates/EstimateDeliveredAlert.js b/src/containers/Alerts/Estimates/EstimateDeliveredAlert.js similarity index 100% rename from client/src/containers/Alerts/Estimates/EstimateDeliveredAlert.js rename to src/containers/Alerts/Estimates/EstimateDeliveredAlert.js diff --git a/client/src/containers/Alerts/Estimates/EstimateRejectAlert.js b/src/containers/Alerts/Estimates/EstimateRejectAlert.js similarity index 100% rename from client/src/containers/Alerts/Estimates/EstimateRejectAlert.js rename to src/containers/Alerts/Estimates/EstimateRejectAlert.js diff --git a/client/src/containers/Alerts/ExchangeRates/ExchangeRateBulkDeleteAlert.js b/src/containers/Alerts/ExchangeRates/ExchangeRateBulkDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/ExchangeRates/ExchangeRateBulkDeleteAlert.js rename to src/containers/Alerts/ExchangeRates/ExchangeRateBulkDeleteAlert.js diff --git a/client/src/containers/Alerts/ExchangeRates/ExchangeRateDeleteAlert.js b/src/containers/Alerts/ExchangeRates/ExchangeRateDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/ExchangeRates/ExchangeRateDeleteAlert.js rename to src/containers/Alerts/ExchangeRates/ExchangeRateDeleteAlert.js diff --git a/client/src/containers/Alerts/Expenses/ExpenseBulkDeleteAlert.js b/src/containers/Alerts/Expenses/ExpenseBulkDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Expenses/ExpenseBulkDeleteAlert.js rename to src/containers/Alerts/Expenses/ExpenseBulkDeleteAlert.js diff --git a/client/src/containers/Alerts/Expenses/ExpenseDeleteAlert.js b/src/containers/Alerts/Expenses/ExpenseDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Expenses/ExpenseDeleteAlert.js rename to src/containers/Alerts/Expenses/ExpenseDeleteAlert.js diff --git a/client/src/containers/Alerts/Expenses/ExpenseDeleteEntriesAlert.js b/src/containers/Alerts/Expenses/ExpenseDeleteEntriesAlert.js similarity index 100% rename from client/src/containers/Alerts/Expenses/ExpenseDeleteEntriesAlert.js rename to src/containers/Alerts/Expenses/ExpenseDeleteEntriesAlert.js diff --git a/client/src/containers/Alerts/Expenses/ExpensePublishAlert.js b/src/containers/Alerts/Expenses/ExpensePublishAlert.js similarity index 100% rename from client/src/containers/Alerts/Expenses/ExpensePublishAlert.js rename to src/containers/Alerts/Expenses/ExpensePublishAlert.js diff --git a/client/src/containers/Alerts/Invoices/InvoiceDeleteAlert.js b/src/containers/Alerts/Invoices/InvoiceDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Invoices/InvoiceDeleteAlert.js rename to src/containers/Alerts/Invoices/InvoiceDeleteAlert.js diff --git a/client/src/containers/Alerts/Invoices/InvoiceDeliverAlert.js b/src/containers/Alerts/Invoices/InvoiceDeliverAlert.js similarity index 100% rename from client/src/containers/Alerts/Invoices/InvoiceDeliverAlert.js rename to src/containers/Alerts/Invoices/InvoiceDeliverAlert.js diff --git a/client/src/containers/Alerts/Items/InventoryAdjustmentDeleteAlert.js b/src/containers/Alerts/Items/InventoryAdjustmentDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Items/InventoryAdjustmentDeleteAlert.js rename to src/containers/Alerts/Items/InventoryAdjustmentDeleteAlert.js diff --git a/client/src/containers/Alerts/Items/InventoryAdjustmentPublishAlert.js b/src/containers/Alerts/Items/InventoryAdjustmentPublishAlert.js similarity index 100% rename from client/src/containers/Alerts/Items/InventoryAdjustmentPublishAlert.js rename to src/containers/Alerts/Items/InventoryAdjustmentPublishAlert.js diff --git a/client/src/containers/Alerts/Items/ItemActivateAlert.js b/src/containers/Alerts/Items/ItemActivateAlert.js similarity index 100% rename from client/src/containers/Alerts/Items/ItemActivateAlert.js rename to src/containers/Alerts/Items/ItemActivateAlert.js diff --git a/client/src/containers/Alerts/Items/ItemBulkDeleteAlert.js b/src/containers/Alerts/Items/ItemBulkDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Items/ItemBulkDeleteAlert.js rename to src/containers/Alerts/Items/ItemBulkDeleteAlert.js diff --git a/client/src/containers/Alerts/Items/ItemCategoryBulkDeleteAlert.js b/src/containers/Alerts/Items/ItemCategoryBulkDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Items/ItemCategoryBulkDeleteAlert.js rename to src/containers/Alerts/Items/ItemCategoryBulkDeleteAlert.js diff --git a/client/src/containers/Alerts/Items/ItemCategoryDeleteAlert.js b/src/containers/Alerts/Items/ItemCategoryDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Items/ItemCategoryDeleteAlert.js rename to src/containers/Alerts/Items/ItemCategoryDeleteAlert.js diff --git a/client/src/containers/Alerts/Items/ItemDeleteAlert.js b/src/containers/Alerts/Items/ItemDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Items/ItemDeleteAlert.js rename to src/containers/Alerts/Items/ItemDeleteAlert.js diff --git a/client/src/containers/Alerts/Items/ItemInactivateAlert.js b/src/containers/Alerts/Items/ItemInactivateAlert.js similarity index 100% rename from client/src/containers/Alerts/Items/ItemInactivateAlert.js rename to src/containers/Alerts/Items/ItemInactivateAlert.js diff --git a/client/src/containers/Alerts/ItemsEntries/ItemsEntriesDeleteAlert.js b/src/containers/Alerts/ItemsEntries/ItemsEntriesDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/ItemsEntries/ItemsEntriesDeleteAlert.js rename to src/containers/Alerts/ItemsEntries/ItemsEntriesDeleteAlert.js diff --git a/client/src/containers/Alerts/ManualJournals/JournalBulkDeleteAlert.js b/src/containers/Alerts/ManualJournals/JournalBulkDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/ManualJournals/JournalBulkDeleteAlert.js rename to src/containers/Alerts/ManualJournals/JournalBulkDeleteAlert.js diff --git a/client/src/containers/Alerts/ManualJournals/JournalDeleteAlert.js b/src/containers/Alerts/ManualJournals/JournalDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/ManualJournals/JournalDeleteAlert.js rename to src/containers/Alerts/ManualJournals/JournalDeleteAlert.js diff --git a/client/src/containers/Alerts/ManualJournals/JournalDeleteEntriesAlert.js b/src/containers/Alerts/ManualJournals/JournalDeleteEntriesAlert.js similarity index 100% rename from client/src/containers/Alerts/ManualJournals/JournalDeleteEntriesAlert.js rename to src/containers/Alerts/ManualJournals/JournalDeleteEntriesAlert.js diff --git a/client/src/containers/Alerts/ManualJournals/JournalPublishAlert.js b/src/containers/Alerts/ManualJournals/JournalPublishAlert.js similarity index 100% rename from client/src/containers/Alerts/ManualJournals/JournalPublishAlert.js rename to src/containers/Alerts/ManualJournals/JournalPublishAlert.js diff --git a/client/src/containers/Alerts/PaymentMades/ChangingFullAmountAlert.js b/src/containers/Alerts/PaymentMades/ChangingFullAmountAlert.js similarity index 100% rename from client/src/containers/Alerts/PaymentMades/ChangingFullAmountAlert.js rename to src/containers/Alerts/PaymentMades/ChangingFullAmountAlert.js diff --git a/client/src/containers/Alerts/PaymentMades/ClearTransactionAlert.js b/src/containers/Alerts/PaymentMades/ClearTransactionAlert.js similarity index 100% rename from client/src/containers/Alerts/PaymentMades/ClearTransactionAlert.js rename to src/containers/Alerts/PaymentMades/ClearTransactionAlert.js diff --git a/client/src/containers/Alerts/PaymentMades/ClearningAllLinesAlert.js b/src/containers/Alerts/PaymentMades/ClearningAllLinesAlert.js similarity index 100% rename from client/src/containers/Alerts/PaymentMades/ClearningAllLinesAlert.js rename to src/containers/Alerts/PaymentMades/ClearningAllLinesAlert.js diff --git a/client/src/containers/Alerts/PaymentMades/PaymentMadeDeleteAlert.js b/src/containers/Alerts/PaymentMades/PaymentMadeDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/PaymentMades/PaymentMadeDeleteAlert.js rename to src/containers/Alerts/PaymentMades/PaymentMadeDeleteAlert.js diff --git a/client/src/containers/Alerts/PaymentReceives/ClearingAllLinesAlert.js b/src/containers/Alerts/PaymentReceives/ClearingAllLinesAlert.js similarity index 100% rename from client/src/containers/Alerts/PaymentReceives/ClearingAllLinesAlert.js rename to src/containers/Alerts/PaymentReceives/ClearingAllLinesAlert.js diff --git a/client/src/containers/Alerts/PaymentReceives/PaymentReceiveDeleteAlert.js b/src/containers/Alerts/PaymentReceives/PaymentReceiveDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/PaymentReceives/PaymentReceiveDeleteAlert.js rename to src/containers/Alerts/PaymentReceives/PaymentReceiveDeleteAlert.js diff --git a/client/src/containers/Alerts/Receipts/ReceiptCloseAlert.js b/src/containers/Alerts/Receipts/ReceiptCloseAlert.js similarity index 100% rename from client/src/containers/Alerts/Receipts/ReceiptCloseAlert.js rename to src/containers/Alerts/Receipts/ReceiptCloseAlert.js diff --git a/client/src/containers/Alerts/Receipts/ReceiptDeleteAlert.js b/src/containers/Alerts/Receipts/ReceiptDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Receipts/ReceiptDeleteAlert.js rename to src/containers/Alerts/Receipts/ReceiptDeleteAlert.js diff --git a/client/src/containers/Alerts/Users/UserActivateAlert.js b/src/containers/Alerts/Users/UserActivateAlert.js similarity index 100% rename from client/src/containers/Alerts/Users/UserActivateAlert.js rename to src/containers/Alerts/Users/UserActivateAlert.js diff --git a/client/src/containers/Alerts/Users/UserDeleteAlert.js b/src/containers/Alerts/Users/UserDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Users/UserDeleteAlert.js rename to src/containers/Alerts/Users/UserDeleteAlert.js diff --git a/client/src/containers/Alerts/Users/UserInactivateAlert.js b/src/containers/Alerts/Users/UserInactivateAlert.js similarity index 100% rename from client/src/containers/Alerts/Users/UserInactivateAlert.js rename to src/containers/Alerts/Users/UserInactivateAlert.js diff --git a/client/src/containers/Alerts/Vendors/VendorDeleteAlert.js b/src/containers/Alerts/Vendors/VendorDeleteAlert.js similarity index 100% rename from client/src/containers/Alerts/Vendors/VendorDeleteAlert.js rename to src/containers/Alerts/Vendors/VendorDeleteAlert.js diff --git a/client/src/containers/Alerts/index.js b/src/containers/Alerts/index.js similarity index 100% rename from client/src/containers/Alerts/index.js rename to src/containers/Alerts/index.js diff --git a/client/src/containers/Authentication/AuthCopyright.js b/src/containers/Authentication/AuthCopyright.js similarity index 100% rename from client/src/containers/Authentication/AuthCopyright.js rename to src/containers/Authentication/AuthCopyright.js diff --git a/client/src/containers/Authentication/AuthInsider.js b/src/containers/Authentication/AuthInsider.js similarity index 100% rename from client/src/containers/Authentication/AuthInsider.js rename to src/containers/Authentication/AuthInsider.js diff --git a/client/src/containers/Authentication/AuthenticationBoot.js b/src/containers/Authentication/AuthenticationBoot.js similarity index 100% rename from client/src/containers/Authentication/AuthenticationBoot.js rename to src/containers/Authentication/AuthenticationBoot.js diff --git a/client/src/containers/Authentication/InviteAccept.js b/src/containers/Authentication/InviteAccept.js similarity index 100% rename from client/src/containers/Authentication/InviteAccept.js rename to src/containers/Authentication/InviteAccept.js diff --git a/client/src/containers/Authentication/InviteAcceptForm.js b/src/containers/Authentication/InviteAcceptForm.js similarity index 100% rename from client/src/containers/Authentication/InviteAcceptForm.js rename to src/containers/Authentication/InviteAcceptForm.js diff --git a/client/src/containers/Authentication/InviteAcceptFormContent.js b/src/containers/Authentication/InviteAcceptFormContent.js similarity index 100% rename from client/src/containers/Authentication/InviteAcceptFormContent.js rename to src/containers/Authentication/InviteAcceptFormContent.js diff --git a/client/src/containers/Authentication/InviteAcceptProvider.js b/src/containers/Authentication/InviteAcceptProvider.js similarity index 100% rename from client/src/containers/Authentication/InviteAcceptProvider.js rename to src/containers/Authentication/InviteAcceptProvider.js diff --git a/client/src/containers/Authentication/Login.js b/src/containers/Authentication/Login.js similarity index 100% rename from client/src/containers/Authentication/Login.js rename to src/containers/Authentication/Login.js diff --git a/client/src/containers/Authentication/LoginForm.js b/src/containers/Authentication/LoginForm.js similarity index 100% rename from client/src/containers/Authentication/LoginForm.js rename to src/containers/Authentication/LoginForm.js diff --git a/client/src/containers/Authentication/Register.js b/src/containers/Authentication/Register.js similarity index 100% rename from client/src/containers/Authentication/Register.js rename to src/containers/Authentication/Register.js diff --git a/client/src/containers/Authentication/RegisterForm.js b/src/containers/Authentication/RegisterForm.js similarity index 100% rename from client/src/containers/Authentication/RegisterForm.js rename to src/containers/Authentication/RegisterForm.js diff --git a/client/src/containers/Authentication/ResetPassword.js b/src/containers/Authentication/ResetPassword.js similarity index 100% rename from client/src/containers/Authentication/ResetPassword.js rename to src/containers/Authentication/ResetPassword.js diff --git a/client/src/containers/Authentication/ResetPasswordForm.js b/src/containers/Authentication/ResetPasswordForm.js similarity index 100% rename from client/src/containers/Authentication/ResetPasswordForm.js rename to src/containers/Authentication/ResetPasswordForm.js diff --git a/client/src/containers/Authentication/SendResetPassword.js b/src/containers/Authentication/SendResetPassword.js similarity index 100% rename from client/src/containers/Authentication/SendResetPassword.js rename to src/containers/Authentication/SendResetPassword.js diff --git a/client/src/containers/Authentication/SendResetPasswordForm.js b/src/containers/Authentication/SendResetPasswordForm.js similarity index 100% rename from client/src/containers/Authentication/SendResetPasswordForm.js rename to src/containers/Authentication/SendResetPasswordForm.js diff --git a/client/src/containers/Authentication/components.js b/src/containers/Authentication/components.js similarity index 100% rename from client/src/containers/Authentication/components.js rename to src/containers/Authentication/components.js diff --git a/client/src/containers/Authentication/utils.js b/src/containers/Authentication/utils.js similarity index 100% rename from client/src/containers/Authentication/utils.js rename to src/containers/Authentication/utils.js diff --git a/client/src/containers/Authentication/withAuthentication.js b/src/containers/Authentication/withAuthentication.js similarity index 100% rename from client/src/containers/Authentication/withAuthentication.js rename to src/containers/Authentication/withAuthentication.js diff --git a/client/src/containers/Authentication/withAuthenticationActions.js b/src/containers/Authentication/withAuthenticationActions.js similarity index 100% rename from client/src/containers/Authentication/withAuthenticationActions.js rename to src/containers/Authentication/withAuthenticationActions.js diff --git a/client/src/containers/Currencies/withCurrencies.js b/src/containers/Currencies/withCurrencies.js similarity index 100% rename from client/src/containers/Currencies/withCurrencies.js rename to src/containers/Currencies/withCurrencies.js diff --git a/client/src/containers/Currencies/withCurrenciesActions.js b/src/containers/Currencies/withCurrenciesActions.js similarity index 100% rename from client/src/containers/Currencies/withCurrenciesActions.js rename to src/containers/Currencies/withCurrenciesActions.js diff --git a/client/src/containers/Currencies/withCurrencyDetail.js b/src/containers/Currencies/withCurrencyDetail.js similarity index 100% rename from client/src/containers/Currencies/withCurrencyDetail.js rename to src/containers/Currencies/withCurrencyDetail.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerAddressTabs.js b/src/containers/Customers/CustomerForm/CustomerAddressTabs.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerAddressTabs.js rename to src/containers/Customers/CustomerForm/CustomerAddressTabs.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerAttachmentTabs.js b/src/containers/Customers/CustomerForm/CustomerAttachmentTabs.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerAttachmentTabs.js rename to src/containers/Customers/CustomerForm/CustomerAttachmentTabs.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerFinancialPanel.js b/src/containers/Customers/CustomerForm/CustomerFinancialPanel.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerFinancialPanel.js rename to src/containers/Customers/CustomerForm/CustomerFinancialPanel.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerFloatingActions.js b/src/containers/Customers/CustomerForm/CustomerFloatingActions.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerFloatingActions.js rename to src/containers/Customers/CustomerForm/CustomerFloatingActions.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerForm.js b/src/containers/Customers/CustomerForm/CustomerForm.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerForm.js rename to src/containers/Customers/CustomerForm/CustomerForm.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerForm.schema.js b/src/containers/Customers/CustomerForm/CustomerForm.schema.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerForm.schema.js rename to src/containers/Customers/CustomerForm/CustomerForm.schema.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerFormAfterPrimarySection.js b/src/containers/Customers/CustomerForm/CustomerFormAfterPrimarySection.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerFormAfterPrimarySection.js rename to src/containers/Customers/CustomerForm/CustomerFormAfterPrimarySection.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerFormPage.js b/src/containers/Customers/CustomerForm/CustomerFormPage.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerFormPage.js rename to src/containers/Customers/CustomerForm/CustomerFormPage.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerFormPrimarySection.js b/src/containers/Customers/CustomerForm/CustomerFormPrimarySection.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerFormPrimarySection.js rename to src/containers/Customers/CustomerForm/CustomerFormPrimarySection.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerFormProvider.js b/src/containers/Customers/CustomerForm/CustomerFormProvider.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerFormProvider.js rename to src/containers/Customers/CustomerForm/CustomerFormProvider.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerNotePanel.js b/src/containers/Customers/CustomerForm/CustomerNotePanel.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerNotePanel.js rename to src/containers/Customers/CustomerForm/CustomerNotePanel.js diff --git a/client/src/containers/Customers/CustomerForm/CustomerTypeRadioField.js b/src/containers/Customers/CustomerForm/CustomerTypeRadioField.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomerTypeRadioField.js rename to src/containers/Customers/CustomerForm/CustomerTypeRadioField.js diff --git a/client/src/containers/Customers/CustomerForm/CustomersTabs.js b/src/containers/Customers/CustomerForm/CustomersTabs.js similarity index 100% rename from client/src/containers/Customers/CustomerForm/CustomersTabs.js rename to src/containers/Customers/CustomerForm/CustomersTabs.js diff --git a/client/src/containers/Customers/CustomersAlerts.js b/src/containers/Customers/CustomersAlerts.js similarity index 100% rename from client/src/containers/Customers/CustomersAlerts.js rename to src/containers/Customers/CustomersAlerts.js diff --git a/client/src/containers/Customers/CustomersLanding/CustomersActionsBar.js b/src/containers/Customers/CustomersLanding/CustomersActionsBar.js similarity index 100% rename from client/src/containers/Customers/CustomersLanding/CustomersActionsBar.js rename to src/containers/Customers/CustomersLanding/CustomersActionsBar.js diff --git a/client/src/containers/Customers/CustomersLanding/CustomersEmptyStatus.js b/src/containers/Customers/CustomersLanding/CustomersEmptyStatus.js similarity index 100% rename from client/src/containers/Customers/CustomersLanding/CustomersEmptyStatus.js rename to src/containers/Customers/CustomersLanding/CustomersEmptyStatus.js diff --git a/client/src/containers/Customers/CustomersLanding/CustomersList.js b/src/containers/Customers/CustomersLanding/CustomersList.js similarity index 100% rename from client/src/containers/Customers/CustomersLanding/CustomersList.js rename to src/containers/Customers/CustomersLanding/CustomersList.js diff --git a/client/src/containers/Customers/CustomersLanding/CustomersListProvider.js b/src/containers/Customers/CustomersLanding/CustomersListProvider.js similarity index 100% rename from client/src/containers/Customers/CustomersLanding/CustomersListProvider.js rename to src/containers/Customers/CustomersLanding/CustomersListProvider.js diff --git a/client/src/containers/Customers/CustomersLanding/CustomersTable.js b/src/containers/Customers/CustomersLanding/CustomersTable.js similarity index 100% rename from client/src/containers/Customers/CustomersLanding/CustomersTable.js rename to src/containers/Customers/CustomersLanding/CustomersTable.js diff --git a/client/src/containers/Customers/CustomersLanding/CustomersViewsTabs.js b/src/containers/Customers/CustomersLanding/CustomersViewsTabs.js similarity index 100% rename from client/src/containers/Customers/CustomersLanding/CustomersViewsTabs.js rename to src/containers/Customers/CustomersLanding/CustomersViewsTabs.js diff --git a/client/src/containers/Customers/CustomersLanding/components.js b/src/containers/Customers/CustomersLanding/components.js similarity index 100% rename from client/src/containers/Customers/CustomersLanding/components.js rename to src/containers/Customers/CustomersLanding/components.js diff --git a/client/src/containers/Customers/CustomersLanding/utils.js b/src/containers/Customers/CustomersLanding/utils.js similarity index 100% rename from client/src/containers/Customers/CustomersLanding/utils.js rename to src/containers/Customers/CustomersLanding/utils.js diff --git a/client/src/containers/Customers/CustomersLanding/withCustomers.js b/src/containers/Customers/CustomersLanding/withCustomers.js similarity index 100% rename from client/src/containers/Customers/CustomersLanding/withCustomers.js rename to src/containers/Customers/CustomersLanding/withCustomers.js diff --git a/client/src/containers/Customers/CustomersLanding/withCustomersActions.js b/src/containers/Customers/CustomersLanding/withCustomersActions.js similarity index 100% rename from client/src/containers/Customers/CustomersLanding/withCustomersActions.js rename to src/containers/Customers/CustomersLanding/withCustomersActions.js diff --git a/client/src/containers/Customers/CustomersUniversalSearch.js b/src/containers/Customers/CustomersUniversalSearch.js similarity index 100% rename from client/src/containers/Customers/CustomersUniversalSearch.js rename to src/containers/Customers/CustomersUniversalSearch.js diff --git a/client/src/containers/Customers/utils.js b/src/containers/Customers/utils.js similarity index 100% rename from client/src/containers/Customers/utils.js rename to src/containers/Customers/utils.js diff --git a/client/src/containers/Customers/withCustomerDetail.js b/src/containers/Customers/withCustomerDetail.js similarity index 100% rename from client/src/containers/Customers/withCustomerDetail.js rename to src/containers/Customers/withCustomerDetail.js diff --git a/client/src/containers/Dashboard/withDashboard.js b/src/containers/Dashboard/withDashboard.js similarity index 100% rename from client/src/containers/Dashboard/withDashboard.js rename to src/containers/Dashboard/withDashboard.js diff --git a/client/src/containers/Dashboard/withDashboardActions.js b/src/containers/Dashboard/withDashboardActions.js similarity index 100% rename from client/src/containers/Dashboard/withDashboardActions.js rename to src/containers/Dashboard/withDashboardActions.js diff --git a/client/src/containers/Dialog/withDialogActions.js b/src/containers/Dialog/withDialogActions.js similarity index 100% rename from client/src/containers/Dialog/withDialogActions.js rename to src/containers/Dialog/withDialogActions.js diff --git a/client/src/containers/Dialogs/AccountDialog/AccountDialogContent.js b/src/containers/Dialogs/AccountDialog/AccountDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/AccountDialog/AccountDialogContent.js rename to src/containers/Dialogs/AccountDialog/AccountDialogContent.js diff --git a/client/src/containers/Dialogs/AccountDialog/AccountDialogForm.js b/src/containers/Dialogs/AccountDialog/AccountDialogForm.js similarity index 100% rename from client/src/containers/Dialogs/AccountDialog/AccountDialogForm.js rename to src/containers/Dialogs/AccountDialog/AccountDialogForm.js diff --git a/client/src/containers/Dialogs/AccountDialog/AccountDialogFormContent.js b/src/containers/Dialogs/AccountDialog/AccountDialogFormContent.js similarity index 100% rename from client/src/containers/Dialogs/AccountDialog/AccountDialogFormContent.js rename to src/containers/Dialogs/AccountDialog/AccountDialogFormContent.js diff --git a/client/src/containers/Dialogs/AccountDialog/AccountDialogProvider.js b/src/containers/Dialogs/AccountDialog/AccountDialogProvider.js similarity index 100% rename from client/src/containers/Dialogs/AccountDialog/AccountDialogProvider.js rename to src/containers/Dialogs/AccountDialog/AccountDialogProvider.js diff --git a/client/src/containers/Dialogs/AccountDialog/AccountForm.schema.js b/src/containers/Dialogs/AccountDialog/AccountForm.schema.js similarity index 100% rename from client/src/containers/Dialogs/AccountDialog/AccountForm.schema.js rename to src/containers/Dialogs/AccountDialog/AccountForm.schema.js diff --git a/client/src/containers/Dialogs/AccountDialog/index.js b/src/containers/Dialogs/AccountDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/AccountDialog/index.js rename to src/containers/Dialogs/AccountDialog/index.js diff --git a/client/src/containers/Dialogs/AccountDialog/utils.js b/src/containers/Dialogs/AccountDialog/utils.js similarity index 100% rename from client/src/containers/Dialogs/AccountDialog/utils.js rename to src/containers/Dialogs/AccountDialog/utils.js diff --git a/client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostDialogContent.js b/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostDialogContent.js rename to src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostDialogContent.js diff --git a/client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostDialogProvider.js b/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostDialogProvider.js similarity index 100% rename from client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostDialogProvider.js rename to src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostDialogProvider.js diff --git a/client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostEntriesTable.js b/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostEntriesTable.js similarity index 100% rename from client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostEntriesTable.js rename to src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostEntriesTable.js diff --git a/client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFloatingActions.js b/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFloatingActions.js similarity index 100% rename from client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFloatingActions.js rename to src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFloatingActions.js diff --git a/client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostForm.js b/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostForm.js similarity index 100% rename from client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostForm.js rename to src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostForm.js diff --git a/client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostForm.schema.js b/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostForm.schema.js similarity index 100% rename from client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostForm.schema.js rename to src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostForm.schema.js diff --git a/client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormBody.js b/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormBody.js similarity index 100% rename from client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormBody.js rename to src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormBody.js diff --git a/client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormContent.js b/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormContent.js similarity index 100% rename from client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormContent.js rename to src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormContent.js diff --git a/client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormFields.js b/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormFields.js similarity index 100% rename from client/src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormFields.js rename to src/containers/Dialogs/AllocateLandedCostDialog/AllocateLandedCostFormFields.js diff --git a/client/src/containers/Dialogs/AllocateLandedCostDialog/index.js b/src/containers/Dialogs/AllocateLandedCostDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/AllocateLandedCostDialog/index.js rename to src/containers/Dialogs/AllocateLandedCostDialog/index.js diff --git a/client/src/containers/Dialogs/AllocateLandedCostDialog/utils.js b/src/containers/Dialogs/AllocateLandedCostDialog/utils.js similarity index 100% rename from client/src/containers/Dialogs/AllocateLandedCostDialog/utils.js rename to src/containers/Dialogs/AllocateLandedCostDialog/utils.js diff --git a/client/src/containers/Dialogs/BillNumberDialog/BillNumberDialogContent.js b/src/containers/Dialogs/BillNumberDialog/BillNumberDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/BillNumberDialog/BillNumberDialogContent.js rename to src/containers/Dialogs/BillNumberDialog/BillNumberDialogContent.js diff --git a/client/src/containers/Dialogs/BillNumberDialog/index.js b/src/containers/Dialogs/BillNumberDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/BillNumberDialog/index.js rename to src/containers/Dialogs/BillNumberDialog/index.js diff --git a/client/src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateDialogContent.js b/src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateDialogContent.js rename to src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateDialogContent.js diff --git a/client/src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateForm.js b/src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateForm.js similarity index 100% rename from client/src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateForm.js rename to src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateForm.js diff --git a/client/src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateProvider.js b/src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateProvider.js similarity index 100% rename from client/src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateProvider.js rename to src/containers/Dialogs/ContactDuplicateDialog/ContactDuplicateProvider.js diff --git a/client/src/containers/Dialogs/ContactDuplicateDialog/index.js b/src/containers/Dialogs/ContactDuplicateDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/ContactDuplicateDialog/index.js rename to src/containers/Dialogs/ContactDuplicateDialog/index.js diff --git a/client/src/containers/Dialogs/CurrencyFormDialog/CurrencyForm.js b/src/containers/Dialogs/CurrencyFormDialog/CurrencyForm.js similarity index 100% rename from client/src/containers/Dialogs/CurrencyFormDialog/CurrencyForm.js rename to src/containers/Dialogs/CurrencyFormDialog/CurrencyForm.js diff --git a/client/src/containers/Dialogs/CurrencyFormDialog/CurrencyForm.schema.js b/src/containers/Dialogs/CurrencyFormDialog/CurrencyForm.schema.js similarity index 100% rename from client/src/containers/Dialogs/CurrencyFormDialog/CurrencyForm.schema.js rename to src/containers/Dialogs/CurrencyFormDialog/CurrencyForm.schema.js diff --git a/client/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormContent.js b/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormContent.js similarity index 100% rename from client/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormContent.js rename to src/containers/Dialogs/CurrencyFormDialog/CurrencyFormContent.js diff --git a/client/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormDialogContent.js b/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormDialogContent.js rename to src/containers/Dialogs/CurrencyFormDialog/CurrencyFormDialogContent.js diff --git a/client/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormFields.js b/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormFields.js similarity index 100% rename from client/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormFields.js rename to src/containers/Dialogs/CurrencyFormDialog/CurrencyFormFields.js diff --git a/client/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormFooter.js b/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormFooter.js similarity index 100% rename from client/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormFooter.js rename to src/containers/Dialogs/CurrencyFormDialog/CurrencyFormFooter.js diff --git a/client/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormProvider.js b/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormProvider.js similarity index 100% rename from client/src/containers/Dialogs/CurrencyFormDialog/CurrencyFormProvider.js rename to src/containers/Dialogs/CurrencyFormDialog/CurrencyFormProvider.js diff --git a/client/src/containers/Dialogs/CurrencyFormDialog/index.js b/src/containers/Dialogs/CurrencyFormDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/CurrencyFormDialog/index.js rename to src/containers/Dialogs/CurrencyFormDialog/index.js diff --git a/client/src/containers/Dialogs/EstimateNumberDialog/EstimateNumberDialogContent.js b/src/containers/Dialogs/EstimateNumberDialog/EstimateNumberDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/EstimateNumberDialog/EstimateNumberDialogContent.js rename to src/containers/Dialogs/EstimateNumberDialog/EstimateNumberDialogContent.js diff --git a/client/src/containers/Dialogs/EstimateNumberDialog/index.js b/src/containers/Dialogs/EstimateNumberDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/EstimateNumberDialog/index.js rename to src/containers/Dialogs/EstimateNumberDialog/index.js diff --git a/client/src/containers/Dialogs/EstimatePdfPreviewDialog/EstimatePdfPreviewDialogContent.js b/src/containers/Dialogs/EstimatePdfPreviewDialog/EstimatePdfPreviewDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/EstimatePdfPreviewDialog/EstimatePdfPreviewDialogContent.js rename to src/containers/Dialogs/EstimatePdfPreviewDialog/EstimatePdfPreviewDialogContent.js diff --git a/client/src/containers/Dialogs/EstimatePdfPreviewDialog/index.js b/src/containers/Dialogs/EstimatePdfPreviewDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/EstimatePdfPreviewDialog/index.js rename to src/containers/Dialogs/EstimatePdfPreviewDialog/index.js diff --git a/client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateForm.js b/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateForm.js similarity index 100% rename from client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateForm.js rename to src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateForm.js diff --git a/client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateForm.schema.js b/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateForm.schema.js similarity index 100% rename from client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateForm.schema.js rename to src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateForm.schema.js diff --git a/client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormContent.js b/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormContent.js similarity index 100% rename from client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormContent.js rename to src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormContent.js diff --git a/client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormDialogContent.js b/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormDialogContent.js rename to src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormDialogContent.js diff --git a/client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormFields.js b/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormFields.js similarity index 100% rename from client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormFields.js rename to src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormFields.js diff --git a/client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormFooter.js b/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormFooter.js similarity index 100% rename from client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormFooter.js rename to src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormFooter.js diff --git a/client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormProvider.js b/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormProvider.js similarity index 100% rename from client/src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormProvider.js rename to src/containers/Dialogs/ExchangeRateFormDialog/ExchangeRateFormProvider.js diff --git a/client/src/containers/Dialogs/ExchangeRateFormDialog/index.js b/src/containers/Dialogs/ExchangeRateFormDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/ExchangeRateFormDialog/index.js rename to src/containers/Dialogs/ExchangeRateFormDialog/index.js diff --git a/client/src/containers/Dialogs/ExportDialog.js b/src/containers/Dialogs/ExportDialog.js similarity index 100% rename from client/src/containers/Dialogs/ExportDialog.js rename to src/containers/Dialogs/ExportDialog.js diff --git a/client/src/containers/Dialogs/ImportDialog.js b/src/containers/Dialogs/ImportDialog.js similarity index 100% rename from client/src/containers/Dialogs/ImportDialog.js rename to src/containers/Dialogs/ImportDialog.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/DecrementAdjustmentFields.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/DecrementAdjustmentFields.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/DecrementAdjustmentFields.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/DecrementAdjustmentFields.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/IncrementAdjustmentFields.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/IncrementAdjustmentFields.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/IncrementAdjustmentFields.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/IncrementAdjustmentFields.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFloatingActions.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFloatingActions.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFloatingActions.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFloatingActions.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentForm.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentForm.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentForm.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentForm.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentForm.schema.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentForm.schema.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentForm.schema.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentForm.schema.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormContent.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormContent.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormContent.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormContent.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormDialogContent.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormDialogContent.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormDialogContent.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormDialogFields.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormDialogFields.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormDialogFields.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormDialogFields.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormProvider.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormProvider.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormProvider.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentFormProvider.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentQuantityFields.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentQuantityFields.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentQuantityFields.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/InventoryAdjustmentQuantityFields.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/index.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/index.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/index.js diff --git a/client/src/containers/Dialogs/InventoryAdjustmentFormDialog/utils.js b/src/containers/Dialogs/InventoryAdjustmentFormDialog/utils.js similarity index 100% rename from client/src/containers/Dialogs/InventoryAdjustmentFormDialog/utils.js rename to src/containers/Dialogs/InventoryAdjustmentFormDialog/utils.js diff --git a/client/src/containers/Dialogs/InviteUserDialog/InviteUserDialog.schema.js b/src/containers/Dialogs/InviteUserDialog/InviteUserDialog.schema.js similarity index 100% rename from client/src/containers/Dialogs/InviteUserDialog/InviteUserDialog.schema.js rename to src/containers/Dialogs/InviteUserDialog/InviteUserDialog.schema.js diff --git a/client/src/containers/Dialogs/InviteUserDialog/InviteUserDialogContent.js b/src/containers/Dialogs/InviteUserDialog/InviteUserDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/InviteUserDialog/InviteUserDialogContent.js rename to src/containers/Dialogs/InviteUserDialog/InviteUserDialogContent.js diff --git a/client/src/containers/Dialogs/InviteUserDialog/InviteUserForm.js b/src/containers/Dialogs/InviteUserDialog/InviteUserForm.js similarity index 100% rename from client/src/containers/Dialogs/InviteUserDialog/InviteUserForm.js rename to src/containers/Dialogs/InviteUserDialog/InviteUserForm.js diff --git a/client/src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.js b/src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.js similarity index 100% rename from client/src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.js rename to src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.js diff --git a/client/src/containers/Dialogs/InviteUserDialog/InviteUserFormProvider.js b/src/containers/Dialogs/InviteUserDialog/InviteUserFormProvider.js similarity index 100% rename from client/src/containers/Dialogs/InviteUserDialog/InviteUserFormProvider.js rename to src/containers/Dialogs/InviteUserDialog/InviteUserFormProvider.js diff --git a/client/src/containers/Dialogs/InviteUserDialog/index.js b/src/containers/Dialogs/InviteUserDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/InviteUserDialog/index.js rename to src/containers/Dialogs/InviteUserDialog/index.js diff --git a/client/src/containers/Dialogs/InviteUserDialog/utils.js b/src/containers/Dialogs/InviteUserDialog/utils.js similarity index 100% rename from client/src/containers/Dialogs/InviteUserDialog/utils.js rename to src/containers/Dialogs/InviteUserDialog/utils.js diff --git a/client/src/containers/Dialogs/InvoiceNumberDialog/InvoiceNumberDialogContent.js b/src/containers/Dialogs/InvoiceNumberDialog/InvoiceNumberDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/InvoiceNumberDialog/InvoiceNumberDialogContent.js rename to src/containers/Dialogs/InvoiceNumberDialog/InvoiceNumberDialogContent.js diff --git a/client/src/containers/Dialogs/InvoiceNumberDialog/InvoiceNumberDialogProvider.js b/src/containers/Dialogs/InvoiceNumberDialog/InvoiceNumberDialogProvider.js similarity index 100% rename from client/src/containers/Dialogs/InvoiceNumberDialog/InvoiceNumberDialogProvider.js rename to src/containers/Dialogs/InvoiceNumberDialog/InvoiceNumberDialogProvider.js diff --git a/client/src/containers/Dialogs/InvoiceNumberDialog/index.js b/src/containers/Dialogs/InvoiceNumberDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/InvoiceNumberDialog/index.js rename to src/containers/Dialogs/InvoiceNumberDialog/index.js diff --git a/client/src/containers/Dialogs/InvoicePdfPreviewDialog/InvoicePdfPreviewDialogContent.js b/src/containers/Dialogs/InvoicePdfPreviewDialog/InvoicePdfPreviewDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/InvoicePdfPreviewDialog/InvoicePdfPreviewDialogContent.js rename to src/containers/Dialogs/InvoicePdfPreviewDialog/InvoicePdfPreviewDialogContent.js diff --git a/client/src/containers/Dialogs/InvoicePdfPreviewDialog/index.js b/src/containers/Dialogs/InvoicePdfPreviewDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/InvoicePdfPreviewDialog/index.js rename to src/containers/Dialogs/InvoicePdfPreviewDialog/index.js diff --git a/client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryForm.js b/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryForm.js similarity index 100% rename from client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryForm.js rename to src/containers/Dialogs/ItemCategoryDialog/ItemCategoryForm.js diff --git a/client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormContent.js b/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormContent.js similarity index 100% rename from client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormContent.js rename to src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormContent.js diff --git a/client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormDialogContent.js b/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormDialogContent.js rename to src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormDialogContent.js diff --git a/client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormFields.js b/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormFields.js similarity index 100% rename from client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormFields.js rename to src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormFields.js diff --git a/client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormFooter.js b/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormFooter.js similarity index 100% rename from client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormFooter.js rename to src/containers/Dialogs/ItemCategoryDialog/ItemCategoryFormFooter.js diff --git a/client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryProvider.js b/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryProvider.js similarity index 100% rename from client/src/containers/Dialogs/ItemCategoryDialog/ItemCategoryProvider.js rename to src/containers/Dialogs/ItemCategoryDialog/ItemCategoryProvider.js diff --git a/client/src/containers/Dialogs/ItemCategoryDialog/index.js b/src/containers/Dialogs/ItemCategoryDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/ItemCategoryDialog/index.js rename to src/containers/Dialogs/ItemCategoryDialog/index.js diff --git a/client/src/containers/Dialogs/ItemCategoryDialog/itemCategoryForm.schema.js b/src/containers/Dialogs/ItemCategoryDialog/itemCategoryForm.schema.js similarity index 100% rename from client/src/containers/Dialogs/ItemCategoryDialog/itemCategoryForm.schema.js rename to src/containers/Dialogs/ItemCategoryDialog/itemCategoryForm.schema.js diff --git a/client/src/containers/Dialogs/JournalNumberDialog/JournalNumberDialogContent.js b/src/containers/Dialogs/JournalNumberDialog/JournalNumberDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/JournalNumberDialog/JournalNumberDialogContent.js rename to src/containers/Dialogs/JournalNumberDialog/JournalNumberDialogContent.js diff --git a/client/src/containers/Dialogs/JournalNumberDialog/index.js b/src/containers/Dialogs/JournalNumberDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/JournalNumberDialog/index.js rename to src/containers/Dialogs/JournalNumberDialog/index.js diff --git a/client/src/containers/Dialogs/PaymentReceiveNumberDialog/PaymentReceiveNumberDialogContent.js b/src/containers/Dialogs/PaymentReceiveNumberDialog/PaymentReceiveNumberDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/PaymentReceiveNumberDialog/PaymentReceiveNumberDialogContent.js rename to src/containers/Dialogs/PaymentReceiveNumberDialog/PaymentReceiveNumberDialogContent.js diff --git a/client/src/containers/Dialogs/PaymentReceiveNumberDialog/index.js b/src/containers/Dialogs/PaymentReceiveNumberDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/PaymentReceiveNumberDialog/index.js rename to src/containers/Dialogs/PaymentReceiveNumberDialog/index.js diff --git a/client/src/containers/Dialogs/PaymentViaVoucherDialog/PaymentViaVoucherDialogContent.js b/src/containers/Dialogs/PaymentViaVoucherDialog/PaymentViaVoucherDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/PaymentViaVoucherDialog/PaymentViaVoucherDialogContent.js rename to src/containers/Dialogs/PaymentViaVoucherDialog/PaymentViaVoucherDialogContent.js diff --git a/client/src/containers/Dialogs/PaymentViaVoucherDialog/PaymentViaVoucherForm.js b/src/containers/Dialogs/PaymentViaVoucherDialog/PaymentViaVoucherForm.js similarity index 100% rename from client/src/containers/Dialogs/PaymentViaVoucherDialog/PaymentViaVoucherForm.js rename to src/containers/Dialogs/PaymentViaVoucherDialog/PaymentViaVoucherForm.js diff --git a/client/src/containers/Dialogs/PaymentViaVoucherDialog/index.js b/src/containers/Dialogs/PaymentViaVoucherDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/PaymentViaVoucherDialog/index.js rename to src/containers/Dialogs/PaymentViaVoucherDialog/index.js diff --git a/client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMade.schema.js b/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMade.schema.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMade.schema.js rename to src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMade.schema.js diff --git a/client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFloatingActions.js b/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFloatingActions.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFloatingActions.js rename to src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFloatingActions.js diff --git a/client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeForm.js b/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeForm.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeForm.js rename to src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeForm.js diff --git a/client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormContent.js b/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormContent.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormContent.js rename to src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormContent.js diff --git a/client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormDialogContent.js b/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormDialogContent.js rename to src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormDialogContent.js diff --git a/client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormFields.js b/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormFields.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormFields.js rename to src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormFields.js diff --git a/client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormProvider.js b/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormProvider.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormProvider.js rename to src/containers/Dialogs/QuickPaymentMadeFormDialog/QuickPaymentMadeFormProvider.js diff --git a/client/src/containers/Dialogs/QuickPaymentMadeFormDialog/index.js b/src/containers/Dialogs/QuickPaymentMadeFormDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentMadeFormDialog/index.js rename to src/containers/Dialogs/QuickPaymentMadeFormDialog/index.js diff --git a/client/src/containers/Dialogs/QuickPaymentMadeFormDialog/utils.js b/src/containers/Dialogs/QuickPaymentMadeFormDialog/utils.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentMadeFormDialog/utils.js rename to src/containers/Dialogs/QuickPaymentMadeFormDialog/utils.js diff --git a/client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceive.schema.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceive.schema.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceive.schema.js rename to src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceive.schema.js diff --git a/client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFloatingActions.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFloatingActions.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFloatingActions.js rename to src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFloatingActions.js diff --git a/client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveForm.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveForm.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveForm.js rename to src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveForm.js diff --git a/client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormContent.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormContent.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormContent.js rename to src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormContent.js diff --git a/client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormDialogContent.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormDialogContent.js rename to src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormDialogContent.js diff --git a/client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormFields.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormFields.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormFields.js rename to src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormFields.js diff --git a/client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormProvider.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormProvider.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormProvider.js rename to src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormProvider.js diff --git a/client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/index.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/index.js rename to src/containers/Dialogs/QuickPaymentReceiveFormDialog/index.js diff --git a/client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/utils.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/utils.js similarity index 100% rename from client/src/containers/Dialogs/QuickPaymentReceiveFormDialog/utils.js rename to src/containers/Dialogs/QuickPaymentReceiveFormDialog/utils.js diff --git a/client/src/containers/Dialogs/ReceiptNumberDialog/ReceiptNumberDialogContent.js b/src/containers/Dialogs/ReceiptNumberDialog/ReceiptNumberDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/ReceiptNumberDialog/ReceiptNumberDialogContent.js rename to src/containers/Dialogs/ReceiptNumberDialog/ReceiptNumberDialogContent.js diff --git a/client/src/containers/Dialogs/ReceiptNumberDialog/index.js b/src/containers/Dialogs/ReceiptNumberDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/ReceiptNumberDialog/index.js rename to src/containers/Dialogs/ReceiptNumberDialog/index.js diff --git a/client/src/containers/Dialogs/ReceiptPdfPreviewDialog/ReceiptPdfPreviewDialogContent.js b/src/containers/Dialogs/ReceiptPdfPreviewDialog/ReceiptPdfPreviewDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/ReceiptPdfPreviewDialog/ReceiptPdfPreviewDialogContent.js rename to src/containers/Dialogs/ReceiptPdfPreviewDialog/ReceiptPdfPreviewDialogContent.js diff --git a/client/src/containers/Dialogs/ReceiptPdfPreviewDialog/index.js b/src/containers/Dialogs/ReceiptPdfPreviewDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/ReceiptPdfPreviewDialog/index.js rename to src/containers/Dialogs/ReceiptPdfPreviewDialog/index.js diff --git a/client/src/containers/Dialogs/UserFormDialog.connector.js b/src/containers/Dialogs/UserFormDialog.connector.js similarity index 100% rename from client/src/containers/Dialogs/UserFormDialog.connector.js rename to src/containers/Dialogs/UserFormDialog.connector.js diff --git a/client/src/containers/Dialogs/UserFormDialog/UserForm.js b/src/containers/Dialogs/UserFormDialog/UserForm.js similarity index 100% rename from client/src/containers/Dialogs/UserFormDialog/UserForm.js rename to src/containers/Dialogs/UserFormDialog/UserForm.js diff --git a/client/src/containers/Dialogs/UserFormDialog/UserForm.schema.js b/src/containers/Dialogs/UserFormDialog/UserForm.schema.js similarity index 100% rename from client/src/containers/Dialogs/UserFormDialog/UserForm.schema.js rename to src/containers/Dialogs/UserFormDialog/UserForm.schema.js diff --git a/client/src/containers/Dialogs/UserFormDialog/UserFormContent.js b/src/containers/Dialogs/UserFormDialog/UserFormContent.js similarity index 100% rename from client/src/containers/Dialogs/UserFormDialog/UserFormContent.js rename to src/containers/Dialogs/UserFormDialog/UserFormContent.js diff --git a/client/src/containers/Dialogs/UserFormDialog/UserFormDialogContent.js b/src/containers/Dialogs/UserFormDialog/UserFormDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/UserFormDialog/UserFormDialogContent.js rename to src/containers/Dialogs/UserFormDialog/UserFormDialogContent.js diff --git a/client/src/containers/Dialogs/UserFormDialog/UserFormProvider.js b/src/containers/Dialogs/UserFormDialog/UserFormProvider.js similarity index 100% rename from client/src/containers/Dialogs/UserFormDialog/UserFormProvider.js rename to src/containers/Dialogs/UserFormDialog/UserFormProvider.js diff --git a/client/src/containers/Dialogs/UserFormDialog/index.js b/src/containers/Dialogs/UserFormDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/UserFormDialog/index.js rename to src/containers/Dialogs/UserFormDialog/index.js diff --git a/client/src/containers/Dialogs/UsersListDialog.connector.js b/src/containers/Dialogs/UsersListDialog.connector.js similarity index 100% rename from client/src/containers/Dialogs/UsersListDialog.connector.js rename to src/containers/Dialogs/UsersListDialog.connector.js diff --git a/client/src/containers/Dialogs/keyboardShortcutsDialog/KeyboardShortcutsDialogContent.js b/src/containers/Dialogs/keyboardShortcutsDialog/KeyboardShortcutsDialogContent.js similarity index 100% rename from client/src/containers/Dialogs/keyboardShortcutsDialog/KeyboardShortcutsDialogContent.js rename to src/containers/Dialogs/keyboardShortcutsDialog/KeyboardShortcutsDialogContent.js diff --git a/client/src/containers/Dialogs/keyboardShortcutsDialog/KeyboardShortcutsFooter.js b/src/containers/Dialogs/keyboardShortcutsDialog/KeyboardShortcutsFooter.js similarity index 100% rename from client/src/containers/Dialogs/keyboardShortcutsDialog/KeyboardShortcutsFooter.js rename to src/containers/Dialogs/keyboardShortcutsDialog/KeyboardShortcutsFooter.js diff --git a/client/src/containers/Dialogs/keyboardShortcutsDialog/index.js b/src/containers/Dialogs/keyboardShortcutsDialog/index.js similarity index 100% rename from client/src/containers/Dialogs/keyboardShortcutsDialog/index.js rename to src/containers/Dialogs/keyboardShortcutsDialog/index.js diff --git a/client/src/containers/Drawer/withDrawerActions.js b/src/containers/Drawer/withDrawerActions.js similarity index 100% rename from client/src/containers/Drawer/withDrawerActions.js rename to src/containers/Drawer/withDrawerActions.js diff --git a/client/src/containers/Drawer/withDrawers.js b/src/containers/Drawer/withDrawers.js similarity index 100% rename from client/src/containers/Drawer/withDrawers.js rename to src/containers/Drawer/withDrawers.js diff --git a/client/src/containers/Drawers/AccountDrawer/AccountDrawerActionBar.js b/src/containers/Drawers/AccountDrawer/AccountDrawerActionBar.js similarity index 100% rename from client/src/containers/Drawers/AccountDrawer/AccountDrawerActionBar.js rename to src/containers/Drawers/AccountDrawer/AccountDrawerActionBar.js diff --git a/client/src/containers/Drawers/AccountDrawer/AccountDrawerContent.js b/src/containers/Drawers/AccountDrawer/AccountDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/AccountDrawer/AccountDrawerContent.js rename to src/containers/Drawers/AccountDrawer/AccountDrawerContent.js diff --git a/client/src/containers/Drawers/AccountDrawer/AccountDrawerDetails.js b/src/containers/Drawers/AccountDrawer/AccountDrawerDetails.js similarity index 100% rename from client/src/containers/Drawers/AccountDrawer/AccountDrawerDetails.js rename to src/containers/Drawers/AccountDrawer/AccountDrawerDetails.js diff --git a/client/src/containers/Drawers/AccountDrawer/AccountDrawerHeader.js b/src/containers/Drawers/AccountDrawer/AccountDrawerHeader.js similarity index 100% rename from client/src/containers/Drawers/AccountDrawer/AccountDrawerHeader.js rename to src/containers/Drawers/AccountDrawer/AccountDrawerHeader.js diff --git a/client/src/containers/Drawers/AccountDrawer/AccountDrawerProvider.js b/src/containers/Drawers/AccountDrawer/AccountDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/AccountDrawer/AccountDrawerProvider.js rename to src/containers/Drawers/AccountDrawer/AccountDrawerProvider.js diff --git a/client/src/containers/Drawers/AccountDrawer/AccountDrawerTable.js b/src/containers/Drawers/AccountDrawer/AccountDrawerTable.js similarity index 100% rename from client/src/containers/Drawers/AccountDrawer/AccountDrawerTable.js rename to src/containers/Drawers/AccountDrawer/AccountDrawerTable.js diff --git a/client/src/containers/Drawers/AccountDrawer/index.js b/src/containers/Drawers/AccountDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/AccountDrawer/index.js rename to src/containers/Drawers/AccountDrawer/index.js diff --git a/client/src/containers/Drawers/AccountDrawer/utils.js b/src/containers/Drawers/AccountDrawer/utils.js similarity index 100% rename from client/src/containers/Drawers/AccountDrawer/utils.js rename to src/containers/Drawers/AccountDrawer/utils.js diff --git a/client/src/containers/Drawers/BillDrawer/BillDetailActionsBar.js b/src/containers/Drawers/BillDrawer/BillDetailActionsBar.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/BillDetailActionsBar.js rename to src/containers/Drawers/BillDrawer/BillDetailActionsBar.js diff --git a/client/src/containers/Drawers/BillDrawer/BillDetailFooter.js b/src/containers/Drawers/BillDrawer/BillDetailFooter.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/BillDetailFooter.js rename to src/containers/Drawers/BillDrawer/BillDetailFooter.js diff --git a/client/src/containers/Drawers/BillDrawer/BillDetailHeader.js b/src/containers/Drawers/BillDrawer/BillDetailHeader.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/BillDetailHeader.js rename to src/containers/Drawers/BillDrawer/BillDetailHeader.js diff --git a/client/src/containers/Drawers/BillDrawer/BillDetailTab.js b/src/containers/Drawers/BillDrawer/BillDetailTab.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/BillDetailTab.js rename to src/containers/Drawers/BillDrawer/BillDetailTab.js diff --git a/client/src/containers/Drawers/BillDrawer/BillDetailTable.js b/src/containers/Drawers/BillDrawer/BillDetailTable.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/BillDetailTable.js rename to src/containers/Drawers/BillDrawer/BillDetailTable.js diff --git a/client/src/containers/Drawers/BillDrawer/BillDrawerAlerts.js b/src/containers/Drawers/BillDrawer/BillDrawerAlerts.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/BillDrawerAlerts.js rename to src/containers/Drawers/BillDrawer/BillDrawerAlerts.js diff --git a/client/src/containers/Drawers/BillDrawer/BillDrawerContent.js b/src/containers/Drawers/BillDrawer/BillDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/BillDrawerContent.js rename to src/containers/Drawers/BillDrawer/BillDrawerContent.js diff --git a/client/src/containers/Drawers/BillDrawer/BillDrawerDetails.js b/src/containers/Drawers/BillDrawer/BillDrawerDetails.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/BillDrawerDetails.js rename to src/containers/Drawers/BillDrawer/BillDrawerDetails.js diff --git a/client/src/containers/Drawers/BillDrawer/BillDrawerProvider.js b/src/containers/Drawers/BillDrawer/BillDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/BillDrawerProvider.js rename to src/containers/Drawers/BillDrawer/BillDrawerProvider.js diff --git a/client/src/containers/Drawers/BillDrawer/LocatedLandedCostTable.js b/src/containers/Drawers/BillDrawer/LocatedLandedCostTable.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/LocatedLandedCostTable.js rename to src/containers/Drawers/BillDrawer/LocatedLandedCostTable.js diff --git a/client/src/containers/Drawers/BillDrawer/components.js b/src/containers/Drawers/BillDrawer/components.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/components.js rename to src/containers/Drawers/BillDrawer/components.js diff --git a/client/src/containers/Drawers/BillDrawer/index.js b/src/containers/Drawers/BillDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/index.js rename to src/containers/Drawers/BillDrawer/index.js diff --git a/client/src/containers/Drawers/BillDrawer/utils.js b/src/containers/Drawers/BillDrawer/utils.js similarity index 100% rename from client/src/containers/Drawers/BillDrawer/utils.js rename to src/containers/Drawers/BillDrawer/utils.js diff --git a/client/src/containers/Drawers/ContactDetailDrawer/ContactDetail.js b/src/containers/Drawers/ContactDetailDrawer/ContactDetail.js similarity index 100% rename from client/src/containers/Drawers/ContactDetailDrawer/ContactDetail.js rename to src/containers/Drawers/ContactDetailDrawer/ContactDetail.js diff --git a/client/src/containers/Drawers/ContactDetailDrawer/ContactDetailActionsBar.js b/src/containers/Drawers/ContactDetailDrawer/ContactDetailActionsBar.js similarity index 100% rename from client/src/containers/Drawers/ContactDetailDrawer/ContactDetailActionsBar.js rename to src/containers/Drawers/ContactDetailDrawer/ContactDetailActionsBar.js diff --git a/client/src/containers/Drawers/ContactDetailDrawer/ContactDetailDrawerContent.js b/src/containers/Drawers/ContactDetailDrawer/ContactDetailDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/ContactDetailDrawer/ContactDetailDrawerContent.js rename to src/containers/Drawers/ContactDetailDrawer/ContactDetailDrawerContent.js diff --git a/client/src/containers/Drawers/ContactDetailDrawer/ContactDetailDrawerProvider.js b/src/containers/Drawers/ContactDetailDrawer/ContactDetailDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/ContactDetailDrawer/ContactDetailDrawerProvider.js rename to src/containers/Drawers/ContactDetailDrawer/ContactDetailDrawerProvider.js diff --git a/client/src/containers/Drawers/ContactDetailDrawer/ContactDetailList.js b/src/containers/Drawers/ContactDetailDrawer/ContactDetailList.js similarity index 100% rename from client/src/containers/Drawers/ContactDetailDrawer/ContactDetailList.js rename to src/containers/Drawers/ContactDetailDrawer/ContactDetailList.js diff --git a/client/src/containers/Drawers/ContactDetailDrawer/index.js b/src/containers/Drawers/ContactDetailDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/ContactDetailDrawer/index.js rename to src/containers/Drawers/ContactDetailDrawer/index.js diff --git a/client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetails.js b/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetails.js similarity index 100% rename from client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetails.js rename to src/containers/Drawers/CustomerDetailsDrawer/CustomerDetails.js diff --git a/client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsActionsBar.js b/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsActionsBar.js similarity index 100% rename from client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsActionsBar.js rename to src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsActionsBar.js diff --git a/client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawer.module.scss b/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawer.module.scss similarity index 100% rename from client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawer.module.scss rename to src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawer.module.scss diff --git a/client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawerContent.js b/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawerContent.js rename to src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawerContent.js diff --git a/client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawerProvider.js b/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawerProvider.js rename to src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsDrawerProvider.js diff --git a/client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsHeader.js b/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsHeader.js similarity index 100% rename from client/src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsHeader.js rename to src/containers/Drawers/CustomerDetailsDrawer/CustomerDetailsHeader.js diff --git a/client/src/containers/Drawers/CustomerDetailsDrawer/index.js b/src/containers/Drawers/CustomerDetailsDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/CustomerDetailsDrawer/index.js rename to src/containers/Drawers/CustomerDetailsDrawer/index.js diff --git a/client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetail.js b/src/containers/Drawers/EstimateDetailDrawer/EstimateDetail.js similarity index 100% rename from client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetail.js rename to src/containers/Drawers/EstimateDetailDrawer/EstimateDetail.js diff --git a/client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailActionsBar.js b/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailActionsBar.js similarity index 100% rename from client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailActionsBar.js rename to src/containers/Drawers/EstimateDetailDrawer/EstimateDetailActionsBar.js diff --git a/client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailDrawerContent.js b/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailDrawerContent.js rename to src/containers/Drawers/EstimateDetailDrawer/EstimateDetailDrawerContent.js diff --git a/client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailDrawerProvider.js b/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailDrawerProvider.js rename to src/containers/Drawers/EstimateDetailDrawer/EstimateDetailDrawerProvider.js diff --git a/client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailFooter.js b/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailFooter.js similarity index 100% rename from client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailFooter.js rename to src/containers/Drawers/EstimateDetailDrawer/EstimateDetailFooter.js diff --git a/client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailHeader.js b/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailHeader.js similarity index 100% rename from client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailHeader.js rename to src/containers/Drawers/EstimateDetailDrawer/EstimateDetailHeader.js diff --git a/client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailPanel.js b/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailPanel.js similarity index 100% rename from client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailPanel.js rename to src/containers/Drawers/EstimateDetailDrawer/EstimateDetailPanel.js diff --git a/client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailTable.js b/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailTable.js similarity index 100% rename from client/src/containers/Drawers/EstimateDetailDrawer/EstimateDetailTable.js rename to src/containers/Drawers/EstimateDetailDrawer/EstimateDetailTable.js diff --git a/client/src/containers/Drawers/EstimateDetailDrawer/EstimateDrawerClasses.js b/src/containers/Drawers/EstimateDetailDrawer/EstimateDrawerClasses.js similarity index 100% rename from client/src/containers/Drawers/EstimateDetailDrawer/EstimateDrawerClasses.js rename to src/containers/Drawers/EstimateDetailDrawer/EstimateDrawerClasses.js diff --git a/client/src/containers/Drawers/EstimateDetailDrawer/index.js b/src/containers/Drawers/EstimateDetailDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/EstimateDetailDrawer/index.js rename to src/containers/Drawers/EstimateDetailDrawer/index.js diff --git a/client/src/containers/Drawers/EstimateDetailDrawer/utils.js b/src/containers/Drawers/EstimateDetailDrawer/utils.js similarity index 100% rename from client/src/containers/Drawers/EstimateDetailDrawer/utils.js rename to src/containers/Drawers/EstimateDetailDrawer/utils.js diff --git a/client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerActionBar.js b/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerActionBar.js similarity index 100% rename from client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerActionBar.js rename to src/containers/Drawers/ExpenseDrawer/ExpenseDrawerActionBar.js diff --git a/client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerContent.js b/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerContent.js rename to src/containers/Drawers/ExpenseDrawer/ExpenseDrawerContent.js diff --git a/client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerDetails.js b/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerDetails.js similarity index 100% rename from client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerDetails.js rename to src/containers/Drawers/ExpenseDrawer/ExpenseDrawerDetails.js diff --git a/client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerFooter.js b/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerFooter.js similarity index 100% rename from client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerFooter.js rename to src/containers/Drawers/ExpenseDrawer/ExpenseDrawerFooter.js diff --git a/client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerHeader.js b/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerHeader.js similarity index 100% rename from client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerHeader.js rename to src/containers/Drawers/ExpenseDrawer/ExpenseDrawerHeader.js diff --git a/client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerProvider.js b/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerProvider.js rename to src/containers/Drawers/ExpenseDrawer/ExpenseDrawerProvider.js diff --git a/client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerTable.js b/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerTable.js similarity index 100% rename from client/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerTable.js rename to src/containers/Drawers/ExpenseDrawer/ExpenseDrawerTable.js diff --git a/client/src/containers/Drawers/ExpenseDrawer/index.js b/src/containers/Drawers/ExpenseDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/ExpenseDrawer/index.js rename to src/containers/Drawers/ExpenseDrawer/index.js diff --git a/client/src/containers/Drawers/ExpenseDrawer/utils.js b/src/containers/Drawers/ExpenseDrawer/utils.js similarity index 100% rename from client/src/containers/Drawers/ExpenseDrawer/utils.js rename to src/containers/Drawers/ExpenseDrawer/utils.js diff --git a/client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetail.js b/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetail.js similarity index 100% rename from client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetail.js rename to src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetail.js diff --git a/client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailActionsBar.js b/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailActionsBar.js similarity index 100% rename from client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailActionsBar.js rename to src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailActionsBar.js diff --git a/client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailHeader.js b/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailHeader.js similarity index 100% rename from client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailHeader.js rename to src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailHeader.js diff --git a/client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailTable.js b/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailTable.js similarity index 100% rename from client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailTable.js rename to src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailTable.js diff --git a/client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDrawerContent.js b/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDrawerContent.js rename to src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDrawerContent.js diff --git a/client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDrawerProvider.js b/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDrawerProvider.js rename to src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDrawerProvider.js diff --git a/client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/index.js b/src/containers/Drawers/InventoryAdjustmentDetailDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/index.js rename to src/containers/Drawers/InventoryAdjustmentDetailDrawer/index.js diff --git a/client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/utils.js b/src/containers/Drawers/InventoryAdjustmentDetailDrawer/utils.js similarity index 100% rename from client/src/containers/Drawers/InventoryAdjustmentDetailDrawer/utils.js rename to src/containers/Drawers/InventoryAdjustmentDetailDrawer/utils.js diff --git a/client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetail.js b/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetail.js similarity index 100% rename from client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetail.js rename to src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetail.js diff --git a/client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailActionsBar.js b/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailActionsBar.js similarity index 100% rename from client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailActionsBar.js rename to src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailActionsBar.js diff --git a/client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailDrawerContent.js b/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailDrawerContent.js rename to src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailDrawerContent.js diff --git a/client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailDrawerProvider.js b/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailDrawerProvider.js rename to src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailDrawerProvider.js diff --git a/client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailFooter.js b/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailFooter.js similarity index 100% rename from client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailFooter.js rename to src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailFooter.js diff --git a/client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailHeader.js b/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailHeader.js similarity index 100% rename from client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailHeader.js rename to src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailHeader.js diff --git a/client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailTab.js b/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailTab.js similarity index 100% rename from client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailTab.js rename to src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailTab.js diff --git a/client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailTable.js b/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailTable.js similarity index 100% rename from client/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailTable.js rename to src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailTable.js diff --git a/client/src/containers/Drawers/InvoiceDetailDrawer/index.js b/src/containers/Drawers/InvoiceDetailDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/InvoiceDetailDrawer/index.js rename to src/containers/Drawers/InvoiceDetailDrawer/index.js diff --git a/client/src/containers/Drawers/InvoiceDetailDrawer/utils.js b/src/containers/Drawers/InvoiceDetailDrawer/utils.js similarity index 100% rename from client/src/containers/Drawers/InvoiceDetailDrawer/utils.js rename to src/containers/Drawers/InvoiceDetailDrawer/utils.js diff --git a/client/src/containers/Drawers/ItemDetailDrawer/ItemContentDetails.js b/src/containers/Drawers/ItemDetailDrawer/ItemContentDetails.js similarity index 100% rename from client/src/containers/Drawers/ItemDetailDrawer/ItemContentDetails.js rename to src/containers/Drawers/ItemDetailDrawer/ItemContentDetails.js diff --git a/client/src/containers/Drawers/ItemDetailDrawer/ItemDetailActionsBar.js b/src/containers/Drawers/ItemDetailDrawer/ItemDetailActionsBar.js similarity index 100% rename from client/src/containers/Drawers/ItemDetailDrawer/ItemDetailActionsBar.js rename to src/containers/Drawers/ItemDetailDrawer/ItemDetailActionsBar.js diff --git a/client/src/containers/Drawers/ItemDetailDrawer/ItemDetailDrawerContent.js b/src/containers/Drawers/ItemDetailDrawer/ItemDetailDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/ItemDetailDrawer/ItemDetailDrawerContent.js rename to src/containers/Drawers/ItemDetailDrawer/ItemDetailDrawerContent.js diff --git a/client/src/containers/Drawers/ItemDetailDrawer/ItemDetailDrawerProvider.js b/src/containers/Drawers/ItemDetailDrawer/ItemDetailDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/ItemDetailDrawer/ItemDetailDrawerProvider.js rename to src/containers/Drawers/ItemDetailDrawer/ItemDetailDrawerProvider.js diff --git a/client/src/containers/Drawers/ItemDetailDrawer/ItemDetailHeader.js b/src/containers/Drawers/ItemDetailDrawer/ItemDetailHeader.js similarity index 100% rename from client/src/containers/Drawers/ItemDetailDrawer/ItemDetailHeader.js rename to src/containers/Drawers/ItemDetailDrawer/ItemDetailHeader.js diff --git a/client/src/containers/Drawers/ItemDetailDrawer/index.js b/src/containers/Drawers/ItemDetailDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/ItemDetailDrawer/index.js rename to src/containers/Drawers/ItemDetailDrawer/index.js diff --git a/client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerActionBar.js b/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerActionBar.js similarity index 100% rename from client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerActionBar.js rename to src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerActionBar.js diff --git a/client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerContent.js b/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerContent.js rename to src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerContent.js diff --git a/client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerDetails.js b/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerDetails.js similarity index 100% rename from client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerDetails.js rename to src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerDetails.js diff --git a/client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerFooter.js b/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerFooter.js similarity index 100% rename from client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerFooter.js rename to src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerFooter.js diff --git a/client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerHeader.js b/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerHeader.js similarity index 100% rename from client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerHeader.js rename to src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerHeader.js diff --git a/client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerProvider.js b/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerProvider.js rename to src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerProvider.js diff --git a/client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerTable.js b/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerTable.js similarity index 100% rename from client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerTable.js rename to src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerTable.js diff --git a/client/src/containers/Drawers/ManualJournalDrawer/index.js b/src/containers/Drawers/ManualJournalDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/ManualJournalDrawer/index.js rename to src/containers/Drawers/ManualJournalDrawer/index.js diff --git a/client/src/containers/Drawers/ManualJournalDrawer/utils.js b/src/containers/Drawers/ManualJournalDrawer/utils.js similarity index 100% rename from client/src/containers/Drawers/ManualJournalDrawer/utils.js rename to src/containers/Drawers/ManualJournalDrawer/utils.js diff --git a/client/src/containers/Drawers/PaperTemplate/PaperTemplate.js b/src/containers/Drawers/PaperTemplate/PaperTemplate.js similarity index 100% rename from client/src/containers/Drawers/PaperTemplate/PaperTemplate.js rename to src/containers/Drawers/PaperTemplate/PaperTemplate.js diff --git a/client/src/containers/Drawers/PaperTemplate/PaperTemplateFooter.js b/src/containers/Drawers/PaperTemplate/PaperTemplateFooter.js similarity index 100% rename from client/src/containers/Drawers/PaperTemplate/PaperTemplateFooter.js rename to src/containers/Drawers/PaperTemplate/PaperTemplateFooter.js diff --git a/client/src/containers/Drawers/PaperTemplate/PaperTemplateHeader.js b/src/containers/Drawers/PaperTemplate/PaperTemplateHeader.js similarity index 100% rename from client/src/containers/Drawers/PaperTemplate/PaperTemplateHeader.js rename to src/containers/Drawers/PaperTemplate/PaperTemplateHeader.js diff --git a/client/src/containers/Drawers/PaperTemplate/PaperTemplateTable.js b/src/containers/Drawers/PaperTemplate/PaperTemplateTable.js similarity index 100% rename from client/src/containers/Drawers/PaperTemplate/PaperTemplateTable.js rename to src/containers/Drawers/PaperTemplate/PaperTemplateTable.js diff --git a/client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailActionsBar.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailActionsBar.js similarity index 100% rename from client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailActionsBar.js rename to src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailActionsBar.js diff --git a/client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailContent.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailContent.js similarity index 100% rename from client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailContent.js rename to src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailContent.js diff --git a/client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailFooter.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailFooter.js similarity index 100% rename from client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailFooter.js rename to src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailFooter.js diff --git a/client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.js similarity index 100% rename from client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.js rename to src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.js diff --git a/client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailProvider.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailProvider.js similarity index 100% rename from client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailProvider.js rename to src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailProvider.js diff --git a/client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTab.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTab.js similarity index 100% rename from client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTab.js rename to src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTab.js diff --git a/client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTable.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTable.js similarity index 100% rename from client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTable.js rename to src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTable.js diff --git a/client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetails.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetails.js similarity index 100% rename from client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetails.js rename to src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetails.js diff --git a/client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDrawer.module.scss b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDrawer.module.scss similarity index 100% rename from client/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDrawer.module.scss rename to src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDrawer.module.scss diff --git a/client/src/containers/Drawers/PaymentMadeDetailDrawer/index.js b/src/containers/Drawers/PaymentMadeDetailDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/PaymentMadeDetailDrawer/index.js rename to src/containers/Drawers/PaymentMadeDetailDrawer/index.js diff --git a/client/src/containers/Drawers/PaymentMadeDetailDrawer/utils.js b/src/containers/Drawers/PaymentMadeDetailDrawer/utils.js similarity index 100% rename from client/src/containers/Drawers/PaymentMadeDetailDrawer/utils.js rename to src/containers/Drawers/PaymentMadeDetailDrawer/utils.js diff --git a/client/src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplate.js b/src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplate.js similarity index 100% rename from client/src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplate.js rename to src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplate.js diff --git a/client/src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplateHeader.js b/src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplateHeader.js similarity index 100% rename from client/src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplateHeader.js rename to src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplateHeader.js diff --git a/client/src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplateTable.js b/src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplateTable.js similarity index 100% rename from client/src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplateTable.js rename to src/containers/Drawers/PaymentPaperTemplate/PaymentPaperTemplateTable.js diff --git a/client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveActionsBar.js b/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveActionsBar.js similarity index 100% rename from client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveActionsBar.js rename to src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveActionsBar.js diff --git a/client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetail.js b/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetail.js similarity index 100% rename from client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetail.js rename to src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetail.js diff --git a/client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailContent.js b/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailContent.js similarity index 100% rename from client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailContent.js rename to src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailContent.js diff --git a/client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailFooter.js b/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailFooter.js similarity index 100% rename from client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailFooter.js rename to src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailFooter.js diff --git a/client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailHeader.js b/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailHeader.js similarity index 100% rename from client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailHeader.js rename to src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailHeader.js diff --git a/client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailProvider.js b/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailProvider.js similarity index 100% rename from client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailProvider.js rename to src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailProvider.js diff --git a/client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailTab.js b/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailTab.js similarity index 100% rename from client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailTab.js rename to src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailTab.js diff --git a/client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailTable.js b/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailTable.js similarity index 100% rename from client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailTable.js rename to src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailTable.js diff --git a/client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDrawer.module.scss b/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDrawer.module.scss similarity index 100% rename from client/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDrawer.module.scss rename to src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDrawer.module.scss diff --git a/client/src/containers/Drawers/PaymentReceiveDetailDrawer/index.js b/src/containers/Drawers/PaymentReceiveDetailDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/PaymentReceiveDetailDrawer/index.js rename to src/containers/Drawers/PaymentReceiveDetailDrawer/index.js diff --git a/client/src/containers/Drawers/PaymentReceiveDetailDrawer/utils.js b/src/containers/Drawers/PaymentReceiveDetailDrawer/utils.js similarity index 100% rename from client/src/containers/Drawers/PaymentReceiveDetailDrawer/utils.js rename to src/containers/Drawers/PaymentReceiveDetailDrawer/utils.js diff --git a/client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetail.js b/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetail.js similarity index 100% rename from client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetail.js rename to src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetail.js diff --git a/client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailActionBar.js b/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailActionBar.js similarity index 100% rename from client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailActionBar.js rename to src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailActionBar.js diff --git a/client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailDrawerContent.js b/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailDrawerContent.js rename to src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailDrawerContent.js diff --git a/client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailDrawerProvider.js b/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailDrawerProvider.js rename to src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailDrawerProvider.js diff --git a/client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailFooter.js b/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailFooter.js similarity index 100% rename from client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailFooter.js rename to src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailFooter.js diff --git a/client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailHeader.js b/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailHeader.js similarity index 100% rename from client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailHeader.js rename to src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailHeader.js diff --git a/client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailTab.js b/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailTab.js similarity index 100% rename from client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailTab.js rename to src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailTab.js diff --git a/client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailTable.js b/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailTable.js similarity index 100% rename from client/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailTable.js rename to src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailTable.js diff --git a/client/src/containers/Drawers/ReceiptDetailDrawer/index.js b/src/containers/Drawers/ReceiptDetailDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/ReceiptDetailDrawer/index.js rename to src/containers/Drawers/ReceiptDetailDrawer/index.js diff --git a/client/src/containers/Drawers/ReceiptDetailDrawer/utils.js b/src/containers/Drawers/ReceiptDetailDrawer/utils.js similarity index 100% rename from client/src/containers/Drawers/ReceiptDetailDrawer/utils.js rename to src/containers/Drawers/ReceiptDetailDrawer/utils.js diff --git a/client/src/containers/Drawers/VendorDetailsDrawer/VendorDetails.js b/src/containers/Drawers/VendorDetailsDrawer/VendorDetails.js similarity index 100% rename from client/src/containers/Drawers/VendorDetailsDrawer/VendorDetails.js rename to src/containers/Drawers/VendorDetailsDrawer/VendorDetails.js diff --git a/client/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsActionsBar.js b/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsActionsBar.js similarity index 100% rename from client/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsActionsBar.js rename to src/containers/Drawers/VendorDetailsDrawer/VendorDetailsActionsBar.js diff --git a/client/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawer.module.scss b/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawer.module.scss similarity index 100% rename from client/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawer.module.scss rename to src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawer.module.scss diff --git a/client/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawerContent.js b/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawerContent.js similarity index 100% rename from client/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawerContent.js rename to src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawerContent.js diff --git a/client/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawerProvider.js b/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawerProvider.js similarity index 100% rename from client/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawerProvider.js rename to src/containers/Drawers/VendorDetailsDrawer/VendorDetailsDrawerProvider.js diff --git a/client/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsHeader.js b/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsHeader.js similarity index 100% rename from client/src/containers/Drawers/VendorDetailsDrawer/VendorDetailsHeader.js rename to src/containers/Drawers/VendorDetailsDrawer/VendorDetailsHeader.js diff --git a/client/src/containers/Drawers/VendorDetailsDrawer/index.js b/src/containers/Drawers/VendorDetailsDrawer/index.js similarity index 100% rename from client/src/containers/Drawers/VendorDetailsDrawer/index.js rename to src/containers/Drawers/VendorDetailsDrawer/index.js diff --git a/client/src/containers/Drawers/components.js b/src/containers/Drawers/components.js similarity index 100% rename from client/src/containers/Drawers/components.js rename to src/containers/Drawers/components.js diff --git a/client/src/containers/Entries/ItemsEntriesTable.js b/src/containers/Entries/ItemsEntriesTable.js similarity index 100% rename from client/src/containers/Entries/ItemsEntriesTable.js rename to src/containers/Entries/ItemsEntriesTable.js diff --git a/client/src/containers/Entries/components.js b/src/containers/Entries/components.js similarity index 100% rename from client/src/containers/Entries/components.js rename to src/containers/Entries/components.js diff --git a/client/src/containers/Entries/utils.js b/src/containers/Entries/utils.js similarity index 100% rename from client/src/containers/Entries/utils.js rename to src/containers/Entries/utils.js diff --git a/client/src/containers/ExchangeRates/ExchangeRateActionsBar.js b/src/containers/ExchangeRates/ExchangeRateActionsBar.js similarity index 100% rename from client/src/containers/ExchangeRates/ExchangeRateActionsBar.js rename to src/containers/ExchangeRates/ExchangeRateActionsBar.js diff --git a/client/src/containers/ExchangeRates/ExchangeRateTable.js b/src/containers/ExchangeRates/ExchangeRateTable.js similarity index 100% rename from client/src/containers/ExchangeRates/ExchangeRateTable.js rename to src/containers/ExchangeRates/ExchangeRateTable.js diff --git a/client/src/containers/ExchangeRates/ExchangeRatesAlerts.js b/src/containers/ExchangeRates/ExchangeRatesAlerts.js similarity index 100% rename from client/src/containers/ExchangeRates/ExchangeRatesAlerts.js rename to src/containers/ExchangeRates/ExchangeRatesAlerts.js diff --git a/client/src/containers/ExchangeRates/ExchangeRatesList.js b/src/containers/ExchangeRates/ExchangeRatesList.js similarity index 100% rename from client/src/containers/ExchangeRates/ExchangeRatesList.js rename to src/containers/ExchangeRates/ExchangeRatesList.js diff --git a/client/src/containers/ExchangeRates/ExchangeRatesProvider.js b/src/containers/ExchangeRates/ExchangeRatesProvider.js similarity index 100% rename from client/src/containers/ExchangeRates/ExchangeRatesProvider.js rename to src/containers/ExchangeRates/ExchangeRatesProvider.js diff --git a/client/src/containers/ExchangeRates/components.js b/src/containers/ExchangeRates/components.js similarity index 100% rename from client/src/containers/ExchangeRates/components.js rename to src/containers/ExchangeRates/components.js diff --git a/client/src/containers/ExchangeRates/withExchangeRateDetail.js b/src/containers/ExchangeRates/withExchangeRateDetail.js similarity index 100% rename from client/src/containers/ExchangeRates/withExchangeRateDetail.js rename to src/containers/ExchangeRates/withExchangeRateDetail.js diff --git a/client/src/containers/ExchangeRates/withExchangeRates.js b/src/containers/ExchangeRates/withExchangeRates.js similarity index 100% rename from client/src/containers/ExchangeRates/withExchangeRates.js rename to src/containers/ExchangeRates/withExchangeRates.js diff --git a/client/src/containers/ExchangeRates/withExchangeRatesActions.js b/src/containers/ExchangeRates/withExchangeRatesActions.js similarity index 100% rename from client/src/containers/ExchangeRates/withExchangeRatesActions.js rename to src/containers/ExchangeRates/withExchangeRatesActions.js diff --git a/client/src/containers/Expenses/ExpenseForm/ExpenseFloatingActions.js b/src/containers/Expenses/ExpenseForm/ExpenseFloatingActions.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/ExpenseFloatingActions.js rename to src/containers/Expenses/ExpenseForm/ExpenseFloatingActions.js diff --git a/client/src/containers/Expenses/ExpenseForm/ExpenseForm.js b/src/containers/Expenses/ExpenseForm/ExpenseForm.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/ExpenseForm.js rename to src/containers/Expenses/ExpenseForm/ExpenseForm.js diff --git a/client/src/containers/Expenses/ExpenseForm/ExpenseForm.schema.js b/src/containers/Expenses/ExpenseForm/ExpenseForm.schema.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/ExpenseForm.schema.js rename to src/containers/Expenses/ExpenseForm/ExpenseForm.schema.js diff --git a/client/src/containers/Expenses/ExpenseForm/ExpenseFormBody.js b/src/containers/Expenses/ExpenseForm/ExpenseFormBody.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/ExpenseFormBody.js rename to src/containers/Expenses/ExpenseForm/ExpenseFormBody.js diff --git a/client/src/containers/Expenses/ExpenseForm/ExpenseFormEntriesField.js b/src/containers/Expenses/ExpenseForm/ExpenseFormEntriesField.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/ExpenseFormEntriesField.js rename to src/containers/Expenses/ExpenseForm/ExpenseFormEntriesField.js diff --git a/client/src/containers/Expenses/ExpenseForm/ExpenseFormEntriesTable.js b/src/containers/Expenses/ExpenseForm/ExpenseFormEntriesTable.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/ExpenseFormEntriesTable.js rename to src/containers/Expenses/ExpenseForm/ExpenseFormEntriesTable.js diff --git a/client/src/containers/Expenses/ExpenseForm/ExpenseFormFooter.js b/src/containers/Expenses/ExpenseForm/ExpenseFormFooter.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/ExpenseFormFooter.js rename to src/containers/Expenses/ExpenseForm/ExpenseFormFooter.js diff --git a/client/src/containers/Expenses/ExpenseForm/ExpenseFormHeader.js b/src/containers/Expenses/ExpenseForm/ExpenseFormHeader.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/ExpenseFormHeader.js rename to src/containers/Expenses/ExpenseForm/ExpenseFormHeader.js diff --git a/client/src/containers/Expenses/ExpenseForm/ExpenseFormHeaderFields.js b/src/containers/Expenses/ExpenseForm/ExpenseFormHeaderFields.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/ExpenseFormHeaderFields.js rename to src/containers/Expenses/ExpenseForm/ExpenseFormHeaderFields.js diff --git a/client/src/containers/Expenses/ExpenseForm/ExpenseFormPage.js b/src/containers/Expenses/ExpenseForm/ExpenseFormPage.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/ExpenseFormPage.js rename to src/containers/Expenses/ExpenseForm/ExpenseFormPage.js diff --git a/client/src/containers/Expenses/ExpenseForm/ExpenseFormPageProvider.js b/src/containers/Expenses/ExpenseForm/ExpenseFormPageProvider.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/ExpenseFormPageProvider.js rename to src/containers/Expenses/ExpenseForm/ExpenseFormPageProvider.js diff --git a/client/src/containers/Expenses/ExpenseForm/components.js b/src/containers/Expenses/ExpenseForm/components.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/components.js rename to src/containers/Expenses/ExpenseForm/components.js diff --git a/client/src/containers/Expenses/ExpenseForm/utils.js b/src/containers/Expenses/ExpenseForm/utils.js similarity index 100% rename from client/src/containers/Expenses/ExpenseForm/utils.js rename to src/containers/Expenses/ExpenseForm/utils.js diff --git a/client/src/containers/Expenses/ExpenseUniversalSearch.js b/src/containers/Expenses/ExpenseUniversalSearch.js similarity index 100% rename from client/src/containers/Expenses/ExpenseUniversalSearch.js rename to src/containers/Expenses/ExpenseUniversalSearch.js diff --git a/client/src/containers/Expenses/ExpensesAlerts.js b/src/containers/Expenses/ExpensesAlerts.js similarity index 100% rename from client/src/containers/Expenses/ExpensesAlerts.js rename to src/containers/Expenses/ExpensesAlerts.js diff --git a/client/src/containers/Expenses/ExpensesLanding/ExpenseActionsBar.js b/src/containers/Expenses/ExpensesLanding/ExpenseActionsBar.js similarity index 100% rename from client/src/containers/Expenses/ExpensesLanding/ExpenseActionsBar.js rename to src/containers/Expenses/ExpensesLanding/ExpenseActionsBar.js diff --git a/client/src/containers/Expenses/ExpensesLanding/ExpenseDataTable.js b/src/containers/Expenses/ExpensesLanding/ExpenseDataTable.js similarity index 100% rename from client/src/containers/Expenses/ExpensesLanding/ExpenseDataTable.js rename to src/containers/Expenses/ExpensesLanding/ExpenseDataTable.js diff --git a/client/src/containers/Expenses/ExpensesLanding/ExpenseViewTabs.js b/src/containers/Expenses/ExpensesLanding/ExpenseViewTabs.js similarity index 100% rename from client/src/containers/Expenses/ExpensesLanding/ExpenseViewTabs.js rename to src/containers/Expenses/ExpensesLanding/ExpenseViewTabs.js diff --git a/client/src/containers/Expenses/ExpensesLanding/ExpensesEmptyStatus.js b/src/containers/Expenses/ExpensesLanding/ExpensesEmptyStatus.js similarity index 100% rename from client/src/containers/Expenses/ExpensesLanding/ExpensesEmptyStatus.js rename to src/containers/Expenses/ExpensesLanding/ExpensesEmptyStatus.js diff --git a/client/src/containers/Expenses/ExpensesLanding/ExpensesList.js b/src/containers/Expenses/ExpensesLanding/ExpensesList.js similarity index 100% rename from client/src/containers/Expenses/ExpensesLanding/ExpensesList.js rename to src/containers/Expenses/ExpensesLanding/ExpensesList.js diff --git a/client/src/containers/Expenses/ExpensesLanding/ExpensesListProvider.js b/src/containers/Expenses/ExpensesLanding/ExpensesListProvider.js similarity index 100% rename from client/src/containers/Expenses/ExpensesLanding/ExpensesListProvider.js rename to src/containers/Expenses/ExpensesLanding/ExpensesListProvider.js diff --git a/client/src/containers/Expenses/ExpensesLanding/components.js b/src/containers/Expenses/ExpensesLanding/components.js similarity index 100% rename from client/src/containers/Expenses/ExpensesLanding/components.js rename to src/containers/Expenses/ExpensesLanding/components.js diff --git a/client/src/containers/Expenses/ExpensesLanding/withExpenses.js b/src/containers/Expenses/ExpensesLanding/withExpenses.js similarity index 100% rename from client/src/containers/Expenses/ExpensesLanding/withExpenses.js rename to src/containers/Expenses/ExpensesLanding/withExpenses.js diff --git a/client/src/containers/Expenses/ExpensesLanding/withExpensesActions.js b/src/containers/Expenses/ExpensesLanding/withExpensesActions.js similarity index 100% rename from client/src/containers/Expenses/ExpensesLanding/withExpensesActions.js rename to src/containers/Expenses/ExpensesLanding/withExpensesActions.js diff --git a/client/src/containers/Expenses/withExpenseDetail.js b/src/containers/Expenses/withExpenseDetail.js similarity index 100% rename from client/src/containers/Expenses/withExpenseDetail.js rename to src/containers/Expenses/withExpenseDetail.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/APAgingSummary.js b/src/containers/FinancialStatements/APAgingSummary/APAgingSummary.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/APAgingSummary.js rename to src/containers/FinancialStatements/APAgingSummary/APAgingSummary.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryActionsBar.js b/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryActionsBar.js rename to src/containers/FinancialStatements/APAgingSummary/APAgingSummaryActionsBar.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryGeneralProvider.js b/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryGeneralProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryGeneralProvider.js rename to src/containers/FinancialStatements/APAgingSummary/APAgingSummaryGeneralProvider.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeader.js b/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeader.js rename to src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeader.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderGeneral.js b/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderGeneral.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderGeneral.js rename to src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderGeneral.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderGeneralContent.js b/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderGeneralContent.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderGeneralContent.js rename to src/containers/FinancialStatements/APAgingSummary/APAgingSummaryHeaderGeneralContent.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryProvider.js b/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryProvider.js rename to src/containers/FinancialStatements/APAgingSummary/APAgingSummaryProvider.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryTable.js b/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryTable.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/APAgingSummaryTable.js rename to src/containers/FinancialStatements/APAgingSummary/APAgingSummaryTable.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/common.js b/src/containers/FinancialStatements/APAgingSummary/common.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/common.js rename to src/containers/FinancialStatements/APAgingSummary/common.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/components.js b/src/containers/FinancialStatements/APAgingSummary/components.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/components.js rename to src/containers/FinancialStatements/APAgingSummary/components.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/withAPAgingSummary.js b/src/containers/FinancialStatements/APAgingSummary/withAPAgingSummary.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/withAPAgingSummary.js rename to src/containers/FinancialStatements/APAgingSummary/withAPAgingSummary.js diff --git a/client/src/containers/FinancialStatements/APAgingSummary/withAPAgingSummaryActions.js b/src/containers/FinancialStatements/APAgingSummary/withAPAgingSummaryActions.js similarity index 100% rename from client/src/containers/FinancialStatements/APAgingSummary/withAPAgingSummaryActions.js rename to src/containers/FinancialStatements/APAgingSummary/withAPAgingSummaryActions.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummary.js b/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummary.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummary.js rename to src/containers/FinancialStatements/ARAgingSummary/ARAgingSummary.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryActionsBar.js b/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryActionsBar.js rename to src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryActionsBar.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryGeneralProvider.js b/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryGeneralProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryGeneralProvider.js rename to src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryGeneralProvider.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeader.js b/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeader.js rename to src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeader.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderGeneral.js b/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderGeneral.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderGeneral.js rename to src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderGeneral.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderGeneralContent.js b/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderGeneralContent.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderGeneralContent.js rename to src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryHeaderGeneralContent.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryProvider.js b/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryProvider.js rename to src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryProvider.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryTable.js b/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryTable.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryTable.js rename to src/containers/FinancialStatements/ARAgingSummary/ARAgingSummaryTable.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/common.js b/src/containers/FinancialStatements/ARAgingSummary/common.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/common.js rename to src/containers/FinancialStatements/ARAgingSummary/common.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/components.js b/src/containers/FinancialStatements/ARAgingSummary/components.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/components.js rename to src/containers/FinancialStatements/ARAgingSummary/components.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/withARAgingSummary.js b/src/containers/FinancialStatements/ARAgingSummary/withARAgingSummary.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/withARAgingSummary.js rename to src/containers/FinancialStatements/ARAgingSummary/withARAgingSummary.js diff --git a/client/src/containers/FinancialStatements/ARAgingSummary/withARAgingSummaryActions.js b/src/containers/FinancialStatements/ARAgingSummary/withARAgingSummaryActions.js similarity index 100% rename from client/src/containers/FinancialStatements/ARAgingSummary/withARAgingSummaryActions.js rename to src/containers/FinancialStatements/ARAgingSummary/withARAgingSummaryActions.js diff --git a/client/src/containers/FinancialStatements/BalanceSheet/BalanceSheet.js b/src/containers/FinancialStatements/BalanceSheet/BalanceSheet.js similarity index 100% rename from client/src/containers/FinancialStatements/BalanceSheet/BalanceSheet.js rename to src/containers/FinancialStatements/BalanceSheet/BalanceSheet.js diff --git a/client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetActionsBar.js b/src/containers/FinancialStatements/BalanceSheet/BalanceSheetActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetActionsBar.js rename to src/containers/FinancialStatements/BalanceSheet/BalanceSheetActionsBar.js diff --git a/client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeader.js b/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeader.js rename to src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeader.js diff --git a/client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeaderGeneralPanal.js b/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeaderGeneralPanal.js similarity index 100% rename from client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeaderGeneralPanal.js rename to src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeaderGeneralPanal.js diff --git a/client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetProvider.js b/src/containers/FinancialStatements/BalanceSheet/BalanceSheetProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetProvider.js rename to src/containers/FinancialStatements/BalanceSheet/BalanceSheetProvider.js diff --git a/client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetTable.js b/src/containers/FinancialStatements/BalanceSheet/BalanceSheetTable.js similarity index 100% rename from client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetTable.js rename to src/containers/FinancialStatements/BalanceSheet/BalanceSheetTable.js diff --git a/client/src/containers/FinancialStatements/BalanceSheet/components.js b/src/containers/FinancialStatements/BalanceSheet/components.js similarity index 100% rename from client/src/containers/FinancialStatements/BalanceSheet/components.js rename to src/containers/FinancialStatements/BalanceSheet/components.js diff --git a/client/src/containers/FinancialStatements/BalanceSheet/utils.js b/src/containers/FinancialStatements/BalanceSheet/utils.js similarity index 100% rename from client/src/containers/FinancialStatements/BalanceSheet/utils.js rename to src/containers/FinancialStatements/BalanceSheet/utils.js diff --git a/client/src/containers/FinancialStatements/BalanceSheet/withBalanceSheet.js b/src/containers/FinancialStatements/BalanceSheet/withBalanceSheet.js similarity index 100% rename from client/src/containers/FinancialStatements/BalanceSheet/withBalanceSheet.js rename to src/containers/FinancialStatements/BalanceSheet/withBalanceSheet.js diff --git a/client/src/containers/FinancialStatements/BalanceSheet/withBalanceSheetActions.js b/src/containers/FinancialStatements/BalanceSheet/withBalanceSheetActions.js similarity index 100% rename from client/src/containers/FinancialStatements/BalanceSheet/withBalanceSheetActions.js rename to src/containers/FinancialStatements/BalanceSheet/withBalanceSheetActions.js diff --git a/client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatement.js b/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatement.js similarity index 100% rename from client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatement.js rename to src/containers/FinancialStatements/CashFlowStatement/CashFlowStatement.js diff --git a/client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementActionsBar.js b/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementActionsBar.js rename to src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementActionsBar.js diff --git a/client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementGeneralPanel.js b/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementGeneralPanel.js similarity index 100% rename from client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementGeneralPanel.js rename to src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementGeneralPanel.js diff --git a/client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementHeader.js b/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementHeader.js rename to src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementHeader.js diff --git a/client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementProvider.js b/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementProvider.js rename to src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementProvider.js diff --git a/client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementTable.js b/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementTable.js similarity index 100% rename from client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementTable.js rename to src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementTable.js diff --git a/client/src/containers/FinancialStatements/CashFlowStatement/components.js b/src/containers/FinancialStatements/CashFlowStatement/components.js similarity index 100% rename from client/src/containers/FinancialStatements/CashFlowStatement/components.js rename to src/containers/FinancialStatements/CashFlowStatement/components.js diff --git a/client/src/containers/FinancialStatements/CashFlowStatement/utils.js b/src/containers/FinancialStatements/CashFlowStatement/utils.js similarity index 100% rename from client/src/containers/FinancialStatements/CashFlowStatement/utils.js rename to src/containers/FinancialStatements/CashFlowStatement/utils.js diff --git a/client/src/containers/FinancialStatements/CashFlowStatement/withCashFlowStatement.js b/src/containers/FinancialStatements/CashFlowStatement/withCashFlowStatement.js similarity index 100% rename from client/src/containers/FinancialStatements/CashFlowStatement/withCashFlowStatement.js rename to src/containers/FinancialStatements/CashFlowStatement/withCashFlowStatement.js diff --git a/client/src/containers/FinancialStatements/CashFlowStatement/withCashFlowStatementActions.js b/src/containers/FinancialStatements/CashFlowStatement/withCashFlowStatementActions.js similarity index 100% rename from client/src/containers/FinancialStatements/CashFlowStatement/withCashFlowStatementActions.js rename to src/containers/FinancialStatements/CashFlowStatement/withCashFlowStatementActions.js diff --git a/client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummary.js b/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummary.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummary.js rename to src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummary.js diff --git a/client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryActionsBar.js b/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryActionsBar.js rename to src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryActionsBar.js diff --git a/client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralPanel.js b/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralPanel.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralPanel.js rename to src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralPanel.js diff --git a/client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralPanelContent.js b/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralPanelContent.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralPanelContent.js rename to src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralPanelContent.js diff --git a/client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralProvider.js b/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralProvider.js rename to src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryGeneralProvider.js diff --git a/client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryHeader.js b/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryHeader.js rename to src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryHeader.js diff --git a/client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryProvider.js b/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryProvider.js rename to src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryProvider.js diff --git a/client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryTable.js b/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryTable.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryTable.js rename to src/containers/FinancialStatements/CustomersBalanceSummary/CustomersBalanceSummaryTable.js diff --git a/client/src/containers/FinancialStatements/CustomersBalanceSummary/components.js b/src/containers/FinancialStatements/CustomersBalanceSummary/components.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersBalanceSummary/components.js rename to src/containers/FinancialStatements/CustomersBalanceSummary/components.js diff --git a/client/src/containers/FinancialStatements/CustomersBalanceSummary/withCustomersBalanceSummary.js b/src/containers/FinancialStatements/CustomersBalanceSummary/withCustomersBalanceSummary.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersBalanceSummary/withCustomersBalanceSummary.js rename to src/containers/FinancialStatements/CustomersBalanceSummary/withCustomersBalanceSummary.js diff --git a/client/src/containers/FinancialStatements/CustomersBalanceSummary/withCustomersBalanceSummaryActions.js b/src/containers/FinancialStatements/CustomersBalanceSummary/withCustomersBalanceSummaryActions.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersBalanceSummary/withCustomersBalanceSummaryActions.js rename to src/containers/FinancialStatements/CustomersBalanceSummary/withCustomersBalanceSummaryActions.js diff --git a/client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactions.js b/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactions.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactions.js rename to src/containers/FinancialStatements/CustomersTransactions/CustomersTransactions.js diff --git a/client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsActionsBar.js b/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsActionsBar.js rename to src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsActionsBar.js diff --git a/client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeader.js b/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeader.js rename to src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeader.js diff --git a/client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeaderGeneralPanel.js b/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeaderGeneralPanel.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeaderGeneralPanel.js rename to src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeaderGeneralPanel.js diff --git a/client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeaderGeneralPanelProvider.js b/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeaderGeneralPanelProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeaderGeneralPanelProvider.js rename to src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsHeaderGeneralPanelProvider.js diff --git a/client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsProvider.js b/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsProvider.js rename to src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsProvider.js diff --git a/client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsTable.js b/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsTable.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsTable.js rename to src/containers/FinancialStatements/CustomersTransactions/CustomersTransactionsTable.js diff --git a/client/src/containers/FinancialStatements/CustomersTransactions/components.js b/src/containers/FinancialStatements/CustomersTransactions/components.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersTransactions/components.js rename to src/containers/FinancialStatements/CustomersTransactions/components.js diff --git a/client/src/containers/FinancialStatements/CustomersTransactions/withCustomersTransactions.js b/src/containers/FinancialStatements/CustomersTransactions/withCustomersTransactions.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersTransactions/withCustomersTransactions.js rename to src/containers/FinancialStatements/CustomersTransactions/withCustomersTransactions.js diff --git a/client/src/containers/FinancialStatements/CustomersTransactions/withCustomersTransactionsActions.js b/src/containers/FinancialStatements/CustomersTransactions/withCustomersTransactionsActions.js similarity index 100% rename from client/src/containers/FinancialStatements/CustomersTransactions/withCustomersTransactionsActions.js rename to src/containers/FinancialStatements/CustomersTransactions/withCustomersTransactionsActions.js diff --git a/client/src/containers/FinancialStatements/FinancialAccountsFilter.js b/src/containers/FinancialStatements/FinancialAccountsFilter.js similarity index 100% rename from client/src/containers/FinancialStatements/FinancialAccountsFilter.js rename to src/containers/FinancialStatements/FinancialAccountsFilter.js diff --git a/client/src/containers/FinancialStatements/FinancialHeaderLoadingSkeleton.js b/src/containers/FinancialStatements/FinancialHeaderLoadingSkeleton.js similarity index 100% rename from client/src/containers/FinancialStatements/FinancialHeaderLoadingSkeleton.js rename to src/containers/FinancialStatements/FinancialHeaderLoadingSkeleton.js diff --git a/client/src/containers/FinancialStatements/FinancialHeaderLoadingSkeleton.module.scss b/src/containers/FinancialStatements/FinancialHeaderLoadingSkeleton.module.scss similarity index 100% rename from client/src/containers/FinancialStatements/FinancialHeaderLoadingSkeleton.module.scss rename to src/containers/FinancialStatements/FinancialHeaderLoadingSkeleton.module.scss diff --git a/client/src/containers/FinancialStatements/FinancialLoadingBar.js b/src/containers/FinancialStatements/FinancialLoadingBar.js similarity index 100% rename from client/src/containers/FinancialStatements/FinancialLoadingBar.js rename to src/containers/FinancialStatements/FinancialLoadingBar.js diff --git a/client/src/containers/FinancialStatements/FinancialReportPage.js b/src/containers/FinancialStatements/FinancialReportPage.js similarity index 100% rename from client/src/containers/FinancialStatements/FinancialReportPage.js rename to src/containers/FinancialStatements/FinancialReportPage.js diff --git a/client/src/containers/FinancialStatements/FinancialReports.js b/src/containers/FinancialStatements/FinancialReports.js similarity index 100% rename from client/src/containers/FinancialStatements/FinancialReports.js rename to src/containers/FinancialStatements/FinancialReports.js diff --git a/client/src/containers/FinancialStatements/FinancialStatementDateRange.js b/src/containers/FinancialStatements/FinancialStatementDateRange.js similarity index 100% rename from client/src/containers/FinancialStatements/FinancialStatementDateRange.js rename to src/containers/FinancialStatements/FinancialStatementDateRange.js diff --git a/client/src/containers/FinancialStatements/FinancialStatementHeader.js b/src/containers/FinancialStatements/FinancialStatementHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/FinancialStatementHeader.js rename to src/containers/FinancialStatements/FinancialStatementHeader.js diff --git a/client/src/containers/FinancialStatements/FinancialStatements.js b/src/containers/FinancialStatements/FinancialStatements.js similarity index 100% rename from client/src/containers/FinancialStatements/FinancialStatements.js rename to src/containers/FinancialStatements/FinancialStatements.js diff --git a/client/src/containers/FinancialStatements/GeneralLedger/GLHeaderGeneralPaneProvider.js b/src/containers/FinancialStatements/GeneralLedger/GLHeaderGeneralPaneProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/GeneralLedger/GLHeaderGeneralPaneProvider.js rename to src/containers/FinancialStatements/GeneralLedger/GLHeaderGeneralPaneProvider.js diff --git a/client/src/containers/FinancialStatements/GeneralLedger/GeneralLedger.js b/src/containers/FinancialStatements/GeneralLedger/GeneralLedger.js similarity index 100% rename from client/src/containers/FinancialStatements/GeneralLedger/GeneralLedger.js rename to src/containers/FinancialStatements/GeneralLedger/GeneralLedger.js diff --git a/client/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerActionsBar.js b/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerActionsBar.js rename to src/containers/FinancialStatements/GeneralLedger/GeneralLedgerActionsBar.js diff --git a/client/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeader.js b/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeader.js rename to src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeader.js diff --git a/client/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeaderGeneralPane.js b/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeaderGeneralPane.js similarity index 100% rename from client/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeaderGeneralPane.js rename to src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeaderGeneralPane.js diff --git a/client/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerProvider.js b/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerProvider.js rename to src/containers/FinancialStatements/GeneralLedger/GeneralLedgerProvider.js diff --git a/client/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerTable.js b/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerTable.js similarity index 100% rename from client/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerTable.js rename to src/containers/FinancialStatements/GeneralLedger/GeneralLedgerTable.js diff --git a/client/src/containers/FinancialStatements/GeneralLedger/common.js b/src/containers/FinancialStatements/GeneralLedger/common.js similarity index 100% rename from client/src/containers/FinancialStatements/GeneralLedger/common.js rename to src/containers/FinancialStatements/GeneralLedger/common.js diff --git a/client/src/containers/FinancialStatements/GeneralLedger/components.js b/src/containers/FinancialStatements/GeneralLedger/components.js similarity index 100% rename from client/src/containers/FinancialStatements/GeneralLedger/components.js rename to src/containers/FinancialStatements/GeneralLedger/components.js diff --git a/client/src/containers/FinancialStatements/GeneralLedger/withGeneralLedger.js b/src/containers/FinancialStatements/GeneralLedger/withGeneralLedger.js similarity index 100% rename from client/src/containers/FinancialStatements/GeneralLedger/withGeneralLedger.js rename to src/containers/FinancialStatements/GeneralLedger/withGeneralLedger.js diff --git a/client/src/containers/FinancialStatements/GeneralLedger/withGeneralLedgerActions.js b/src/containers/FinancialStatements/GeneralLedger/withGeneralLedgerActions.js similarity index 100% rename from client/src/containers/FinancialStatements/GeneralLedger/withGeneralLedgerActions.js rename to src/containers/FinancialStatements/GeneralLedger/withGeneralLedgerActions.js diff --git a/client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetails.js b/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetails.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetails.js rename to src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetails.js diff --git a/client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsActionsBar.js b/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsActionsBar.js rename to src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsActionsBar.js diff --git a/client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeader.js b/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeader.js rename to src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeader.js diff --git a/client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderGeneralPanel.js b/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderGeneralPanel.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderGeneralPanel.js rename to src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderGeneralPanel.js diff --git a/client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderGeneralProvider.js b/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderGeneralProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderGeneralProvider.js rename to src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsHeaderGeneralProvider.js diff --git a/client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsProvider.js b/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsProvider.js rename to src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsProvider.js diff --git a/client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsTable.js b/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsTable.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsTable.js rename to src/containers/FinancialStatements/InventoryItemDetails/InventoryItemDetailsTable.js diff --git a/client/src/containers/FinancialStatements/InventoryItemDetails/components.js b/src/containers/FinancialStatements/InventoryItemDetails/components.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryItemDetails/components.js rename to src/containers/FinancialStatements/InventoryItemDetails/components.js diff --git a/client/src/containers/FinancialStatements/InventoryItemDetails/utils.js b/src/containers/FinancialStatements/InventoryItemDetails/utils.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryItemDetails/utils.js rename to src/containers/FinancialStatements/InventoryItemDetails/utils.js diff --git a/client/src/containers/FinancialStatements/InventoryItemDetails/withInventoryItemDetails.js b/src/containers/FinancialStatements/InventoryItemDetails/withInventoryItemDetails.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryItemDetails/withInventoryItemDetails.js rename to src/containers/FinancialStatements/InventoryItemDetails/withInventoryItemDetails.js diff --git a/client/src/containers/FinancialStatements/InventoryItemDetails/withInventoryItemDetailsActions.js b/src/containers/FinancialStatements/InventoryItemDetails/withInventoryItemDetailsActions.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryItemDetails/withInventoryItemDetailsActions.js rename to src/containers/FinancialStatements/InventoryItemDetails/withInventoryItemDetailsActions.js diff --git a/client/src/containers/FinancialStatements/InventoryValuation/InventoryValuation.js b/src/containers/FinancialStatements/InventoryValuation/InventoryValuation.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryValuation/InventoryValuation.js rename to src/containers/FinancialStatements/InventoryValuation/InventoryValuation.js diff --git a/client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationActionsBar.js b/src/containers/FinancialStatements/InventoryValuation/InventoryValuationActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationActionsBar.js rename to src/containers/FinancialStatements/InventoryValuation/InventoryValuationActionsBar.js diff --git a/client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeader.js b/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeader.js rename to src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeader.js diff --git a/client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderGeneralPanel.js b/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderGeneralPanel.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderGeneralPanel.js rename to src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderGeneralPanel.js diff --git a/client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderGeneralPanelProvider.js b/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderGeneralPanelProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderGeneralPanelProvider.js rename to src/containers/FinancialStatements/InventoryValuation/InventoryValuationHeaderGeneralPanelProvider.js diff --git a/client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationProvider.js b/src/containers/FinancialStatements/InventoryValuation/InventoryValuationProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationProvider.js rename to src/containers/FinancialStatements/InventoryValuation/InventoryValuationProvider.js diff --git a/client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationTable.js b/src/containers/FinancialStatements/InventoryValuation/InventoryValuationTable.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryValuation/InventoryValuationTable.js rename to src/containers/FinancialStatements/InventoryValuation/InventoryValuationTable.js diff --git a/client/src/containers/FinancialStatements/InventoryValuation/components.js b/src/containers/FinancialStatements/InventoryValuation/components.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryValuation/components.js rename to src/containers/FinancialStatements/InventoryValuation/components.js diff --git a/client/src/containers/FinancialStatements/InventoryValuation/withInventoryValuation.js b/src/containers/FinancialStatements/InventoryValuation/withInventoryValuation.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryValuation/withInventoryValuation.js rename to src/containers/FinancialStatements/InventoryValuation/withInventoryValuation.js diff --git a/client/src/containers/FinancialStatements/InventoryValuation/withInventoryValuationActions.js b/src/containers/FinancialStatements/InventoryValuation/withInventoryValuationActions.js similarity index 100% rename from client/src/containers/FinancialStatements/InventoryValuation/withInventoryValuationActions.js rename to src/containers/FinancialStatements/InventoryValuation/withInventoryValuationActions.js diff --git a/client/src/containers/FinancialStatements/Journal/Journal.js b/src/containers/FinancialStatements/Journal/Journal.js similarity index 100% rename from client/src/containers/FinancialStatements/Journal/Journal.js rename to src/containers/FinancialStatements/Journal/Journal.js diff --git a/client/src/containers/FinancialStatements/Journal/JournalActionsBar.js b/src/containers/FinancialStatements/Journal/JournalActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/Journal/JournalActionsBar.js rename to src/containers/FinancialStatements/Journal/JournalActionsBar.js diff --git a/client/src/containers/FinancialStatements/Journal/JournalHeader.js b/src/containers/FinancialStatements/Journal/JournalHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/Journal/JournalHeader.js rename to src/containers/FinancialStatements/Journal/JournalHeader.js diff --git a/client/src/containers/FinancialStatements/Journal/JournalProvider.js b/src/containers/FinancialStatements/Journal/JournalProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/Journal/JournalProvider.js rename to src/containers/FinancialStatements/Journal/JournalProvider.js diff --git a/client/src/containers/FinancialStatements/Journal/JournalSheetHeaderGeneral.js b/src/containers/FinancialStatements/Journal/JournalSheetHeaderGeneral.js similarity index 100% rename from client/src/containers/FinancialStatements/Journal/JournalSheetHeaderGeneral.js rename to src/containers/FinancialStatements/Journal/JournalSheetHeaderGeneral.js diff --git a/client/src/containers/FinancialStatements/Journal/JournalTable.js b/src/containers/FinancialStatements/Journal/JournalTable.js similarity index 100% rename from client/src/containers/FinancialStatements/Journal/JournalTable.js rename to src/containers/FinancialStatements/Journal/JournalTable.js diff --git a/client/src/containers/FinancialStatements/Journal/components.js b/src/containers/FinancialStatements/Journal/components.js similarity index 100% rename from client/src/containers/FinancialStatements/Journal/components.js rename to src/containers/FinancialStatements/Journal/components.js diff --git a/client/src/containers/FinancialStatements/Journal/withJournal.js b/src/containers/FinancialStatements/Journal/withJournal.js similarity index 100% rename from client/src/containers/FinancialStatements/Journal/withJournal.js rename to src/containers/FinancialStatements/Journal/withJournal.js diff --git a/client/src/containers/FinancialStatements/Journal/withJournalActions.js b/src/containers/FinancialStatements/Journal/withJournalActions.js similarity index 100% rename from client/src/containers/FinancialStatements/Journal/withJournalActions.js rename to src/containers/FinancialStatements/Journal/withJournalActions.js diff --git a/client/src/containers/FinancialStatements/LedgerSheet.js b/src/containers/FinancialStatements/LedgerSheet.js similarity index 100% rename from client/src/containers/FinancialStatements/LedgerSheet.js rename to src/containers/FinancialStatements/LedgerSheet.js diff --git a/client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossActionsBar.js b/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossActionsBar.js rename to src/containers/FinancialStatements/ProfitLossSheet/ProfitLossActionsBar.js diff --git a/client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossProvider.js b/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossProvider.js rename to src/containers/FinancialStatements/ProfitLossSheet/ProfitLossProvider.js diff --git a/client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheet.js b/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheet.js similarity index 100% rename from client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheet.js rename to src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheet.js diff --git a/client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeader.js b/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeader.js rename to src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeader.js diff --git a/client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeaderGeneralPane.js b/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeaderGeneralPane.js similarity index 100% rename from client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeaderGeneralPane.js rename to src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetHeaderGeneralPane.js diff --git a/client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetTable.js b/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetTable.js similarity index 100% rename from client/src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetTable.js rename to src/containers/FinancialStatements/ProfitLossSheet/ProfitLossSheetTable.js diff --git a/client/src/containers/FinancialStatements/ProfitLossSheet/components.js b/src/containers/FinancialStatements/ProfitLossSheet/components.js similarity index 100% rename from client/src/containers/FinancialStatements/ProfitLossSheet/components.js rename to src/containers/FinancialStatements/ProfitLossSheet/components.js diff --git a/client/src/containers/FinancialStatements/ProfitLossSheet/withProfitLoss.js b/src/containers/FinancialStatements/ProfitLossSheet/withProfitLoss.js similarity index 100% rename from client/src/containers/FinancialStatements/ProfitLossSheet/withProfitLoss.js rename to src/containers/FinancialStatements/ProfitLossSheet/withProfitLoss.js diff --git a/client/src/containers/FinancialStatements/ProfitLossSheet/withProfitLossActions.js b/src/containers/FinancialStatements/ProfitLossSheet/withProfitLossActions.js similarity index 100% rename from client/src/containers/FinancialStatements/ProfitLossSheet/withProfitLossActions.js rename to src/containers/FinancialStatements/ProfitLossSheet/withProfitLossActions.js diff --git a/client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItems.js b/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItems.js similarity index 100% rename from client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItems.js rename to src/containers/FinancialStatements/PurchasesByItems/PurchasesByItems.js diff --git a/client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsActionsBar.js b/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsActionsBar.js rename to src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsActionsBar.js diff --git a/client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsGeneralPanel.js b/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsGeneralPanel.js similarity index 100% rename from client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsGeneralPanel.js rename to src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsGeneralPanel.js diff --git a/client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsGeneralPanelProvider.js b/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsGeneralPanelProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsGeneralPanelProvider.js rename to src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsGeneralPanelProvider.js diff --git a/client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsHeader.js b/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsHeader.js rename to src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsHeader.js diff --git a/client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsProvider.js b/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsProvider.js rename to src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsProvider.js diff --git a/client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsTable.js b/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsTable.js similarity index 100% rename from client/src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsTable.js rename to src/containers/FinancialStatements/PurchasesByItems/PurchasesByItemsTable.js diff --git a/client/src/containers/FinancialStatements/PurchasesByItems/components.js b/src/containers/FinancialStatements/PurchasesByItems/components.js similarity index 100% rename from client/src/containers/FinancialStatements/PurchasesByItems/components.js rename to src/containers/FinancialStatements/PurchasesByItems/components.js diff --git a/client/src/containers/FinancialStatements/PurchasesByItems/withPurchasesByItems.js b/src/containers/FinancialStatements/PurchasesByItems/withPurchasesByItems.js similarity index 100% rename from client/src/containers/FinancialStatements/PurchasesByItems/withPurchasesByItems.js rename to src/containers/FinancialStatements/PurchasesByItems/withPurchasesByItems.js diff --git a/client/src/containers/FinancialStatements/PurchasesByItems/withPurchasesByItemsActions.js b/src/containers/FinancialStatements/PurchasesByItems/withPurchasesByItemsActions.js similarity index 100% rename from client/src/containers/FinancialStatements/PurchasesByItems/withPurchasesByItemsActions.js rename to src/containers/FinancialStatements/PurchasesByItems/withPurchasesByItemsActions.js diff --git a/client/src/containers/FinancialStatements/RadiosAccountingBasis.js b/src/containers/FinancialStatements/RadiosAccountingBasis.js similarity index 100% rename from client/src/containers/FinancialStatements/RadiosAccountingBasis.js rename to src/containers/FinancialStatements/RadiosAccountingBasis.js diff --git a/client/src/containers/FinancialStatements/SalesByItems/SalesByItemProvider.js b/src/containers/FinancialStatements/SalesByItems/SalesByItemProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/SalesByItems/SalesByItemProvider.js rename to src/containers/FinancialStatements/SalesByItems/SalesByItemProvider.js diff --git a/client/src/containers/FinancialStatements/SalesByItems/SalesByItems.js b/src/containers/FinancialStatements/SalesByItems/SalesByItems.js similarity index 100% rename from client/src/containers/FinancialStatements/SalesByItems/SalesByItems.js rename to src/containers/FinancialStatements/SalesByItems/SalesByItems.js diff --git a/client/src/containers/FinancialStatements/SalesByItems/SalesByItemsActionsBar.js b/src/containers/FinancialStatements/SalesByItems/SalesByItemsActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/SalesByItems/SalesByItemsActionsBar.js rename to src/containers/FinancialStatements/SalesByItems/SalesByItemsActionsBar.js diff --git a/client/src/containers/FinancialStatements/SalesByItems/SalesByItemsHeader.js b/src/containers/FinancialStatements/SalesByItems/SalesByItemsHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/SalesByItems/SalesByItemsHeader.js rename to src/containers/FinancialStatements/SalesByItems/SalesByItemsHeader.js diff --git a/client/src/containers/FinancialStatements/SalesByItems/SalesByItemsHeaderGeneralPanel.js b/src/containers/FinancialStatements/SalesByItems/SalesByItemsHeaderGeneralPanel.js similarity index 100% rename from client/src/containers/FinancialStatements/SalesByItems/SalesByItemsHeaderGeneralPanel.js rename to src/containers/FinancialStatements/SalesByItems/SalesByItemsHeaderGeneralPanel.js diff --git a/client/src/containers/FinancialStatements/SalesByItems/SalesByItemsHeaderGeneralPanelProvider.js b/src/containers/FinancialStatements/SalesByItems/SalesByItemsHeaderGeneralPanelProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/SalesByItems/SalesByItemsHeaderGeneralPanelProvider.js rename to src/containers/FinancialStatements/SalesByItems/SalesByItemsHeaderGeneralPanelProvider.js diff --git a/client/src/containers/FinancialStatements/SalesByItems/SalesByItemsTable.js b/src/containers/FinancialStatements/SalesByItems/SalesByItemsTable.js similarity index 100% rename from client/src/containers/FinancialStatements/SalesByItems/SalesByItemsTable.js rename to src/containers/FinancialStatements/SalesByItems/SalesByItemsTable.js diff --git a/client/src/containers/FinancialStatements/SalesByItems/components.js b/src/containers/FinancialStatements/SalesByItems/components.js similarity index 100% rename from client/src/containers/FinancialStatements/SalesByItems/components.js rename to src/containers/FinancialStatements/SalesByItems/components.js diff --git a/client/src/containers/FinancialStatements/SalesByItems/withSalesByItems.js b/src/containers/FinancialStatements/SalesByItems/withSalesByItems.js similarity index 100% rename from client/src/containers/FinancialStatements/SalesByItems/withSalesByItems.js rename to src/containers/FinancialStatements/SalesByItems/withSalesByItems.js diff --git a/client/src/containers/FinancialStatements/SalesByItems/withSalesByItemsActions.js b/src/containers/FinancialStatements/SalesByItems/withSalesByItemsActions.js similarity index 100% rename from client/src/containers/FinancialStatements/SalesByItems/withSalesByItemsActions.js rename to src/containers/FinancialStatements/SalesByItems/withSalesByItemsActions.js diff --git a/client/src/containers/FinancialStatements/SelectDisplayColumnsBy.js b/src/containers/FinancialStatements/SelectDisplayColumnsBy.js similarity index 100% rename from client/src/containers/FinancialStatements/SelectDisplayColumnsBy.js rename to src/containers/FinancialStatements/SelectDisplayColumnsBy.js diff --git a/client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceActionsBar.js b/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceActionsBar.js rename to src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceActionsBar.js diff --git a/client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceProvider.js b/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceProvider.js rename to src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceProvider.js diff --git a/client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheet.js b/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheet.js similarity index 100% rename from client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheet.js rename to src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheet.js diff --git a/client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeader.js b/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeader.js rename to src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeader.js diff --git a/client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeaderGeneralPanel.js b/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeaderGeneralPanel.js similarity index 100% rename from client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeaderGeneralPanel.js rename to src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetHeaderGeneralPanel.js diff --git a/client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetTable.js b/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetTable.js similarity index 100% rename from client/src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetTable.js rename to src/containers/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetTable.js diff --git a/client/src/containers/FinancialStatements/TrialBalanceSheet/components.js b/src/containers/FinancialStatements/TrialBalanceSheet/components.js similarity index 100% rename from client/src/containers/FinancialStatements/TrialBalanceSheet/components.js rename to src/containers/FinancialStatements/TrialBalanceSheet/components.js diff --git a/client/src/containers/FinancialStatements/TrialBalanceSheet/withTrialBalance.js b/src/containers/FinancialStatements/TrialBalanceSheet/withTrialBalance.js similarity index 100% rename from client/src/containers/FinancialStatements/TrialBalanceSheet/withTrialBalance.js rename to src/containers/FinancialStatements/TrialBalanceSheet/withTrialBalance.js diff --git a/client/src/containers/FinancialStatements/TrialBalanceSheet/withTrialBalanceActions.js b/src/containers/FinancialStatements/TrialBalanceSheet/withTrialBalanceActions.js similarity index 100% rename from client/src/containers/FinancialStatements/TrialBalanceSheet/withTrialBalanceActions.js rename to src/containers/FinancialStatements/TrialBalanceSheet/withTrialBalanceActions.js diff --git a/client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummary.js b/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummary.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummary.js rename to src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummary.js diff --git a/client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryActionsBar.js b/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryActionsBar.js rename to src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryActionsBar.js diff --git a/client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeader.js b/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeader.js rename to src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeader.js diff --git a/client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneral.js b/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneral.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneral.js rename to src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneral.js diff --git a/client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneralContent.js b/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneralContent.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneralContent.js rename to src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneralContent.js diff --git a/client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneralProvider.js b/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneralProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneralProvider.js rename to src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryHeaderGeneralProvider.js diff --git a/client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryProvider.js b/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryProvider.js rename to src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryProvider.js diff --git a/client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryTable.js b/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryTable.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryTable.js rename to src/containers/FinancialStatements/VendorsBalanceSummary/VendorsBalanceSummaryTable.js diff --git a/client/src/containers/FinancialStatements/VendorsBalanceSummary/components.js b/src/containers/FinancialStatements/VendorsBalanceSummary/components.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsBalanceSummary/components.js rename to src/containers/FinancialStatements/VendorsBalanceSummary/components.js diff --git a/client/src/containers/FinancialStatements/VendorsBalanceSummary/withVendorsBalanceSummary.js b/src/containers/FinancialStatements/VendorsBalanceSummary/withVendorsBalanceSummary.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsBalanceSummary/withVendorsBalanceSummary.js rename to src/containers/FinancialStatements/VendorsBalanceSummary/withVendorsBalanceSummary.js diff --git a/client/src/containers/FinancialStatements/VendorsBalanceSummary/withVendorsBalanceSummaryActions.js b/src/containers/FinancialStatements/VendorsBalanceSummary/withVendorsBalanceSummaryActions.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsBalanceSummary/withVendorsBalanceSummaryActions.js rename to src/containers/FinancialStatements/VendorsBalanceSummary/withVendorsBalanceSummaryActions.js diff --git a/client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactions.js b/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactions.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactions.js rename to src/containers/FinancialStatements/VendorsTransactions/VendorsTransactions.js diff --git a/client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsActionsBar.js b/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsActionsBar.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsActionsBar.js rename to src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsActionsBar.js diff --git a/client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeader.js b/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeader.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeader.js rename to src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeader.js diff --git a/client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeaderGeneralPanel.js b/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeaderGeneralPanel.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeaderGeneralPanel.js rename to src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeaderGeneralPanel.js diff --git a/client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeaderGeneralPanelProvider.js b/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeaderGeneralPanelProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeaderGeneralPanelProvider.js rename to src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsHeaderGeneralPanelProvider.js diff --git a/client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsProvider.js b/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsProvider.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsProvider.js rename to src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsProvider.js diff --git a/client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsTable.js b/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsTable.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsTable.js rename to src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsTable.js diff --git a/client/src/containers/FinancialStatements/VendorsTransactions/components.js b/src/containers/FinancialStatements/VendorsTransactions/components.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsTransactions/components.js rename to src/containers/FinancialStatements/VendorsTransactions/components.js diff --git a/client/src/containers/FinancialStatements/VendorsTransactions/withVendorsTransaction.js b/src/containers/FinancialStatements/VendorsTransactions/withVendorsTransaction.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsTransactions/withVendorsTransaction.js rename to src/containers/FinancialStatements/VendorsTransactions/withVendorsTransaction.js diff --git a/client/src/containers/FinancialStatements/VendorsTransactions/withVendorsTransactionsActions.js b/src/containers/FinancialStatements/VendorsTransactions/withVendorsTransactionsActions.js similarity index 100% rename from client/src/containers/FinancialStatements/VendorsTransactions/withVendorsTransactionsActions.js rename to src/containers/FinancialStatements/VendorsTransactions/withVendorsTransactionsActions.js diff --git a/client/src/containers/FinancialStatements/common.js b/src/containers/FinancialStatements/common.js similarity index 100% rename from client/src/containers/FinancialStatements/common.js rename to src/containers/FinancialStatements/common.js diff --git a/client/src/containers/FinancialStatements/reducers.js b/src/containers/FinancialStatements/reducers.js similarity index 100% rename from client/src/containers/FinancialStatements/reducers.js rename to src/containers/FinancialStatements/reducers.js diff --git a/client/src/containers/GlobalErrors/GlobalErrors.js b/src/containers/GlobalErrors/GlobalErrors.js similarity index 100% rename from client/src/containers/GlobalErrors/GlobalErrors.js rename to src/containers/GlobalErrors/GlobalErrors.js diff --git a/client/src/containers/GlobalErrors/withGlobalErrors.js b/src/containers/GlobalErrors/withGlobalErrors.js similarity index 100% rename from client/src/containers/GlobalErrors/withGlobalErrors.js rename to src/containers/GlobalErrors/withGlobalErrors.js diff --git a/client/src/containers/GlobalErrors/withGlobalErrorsActions.js b/src/containers/GlobalErrors/withGlobalErrorsActions.js similarity index 100% rename from client/src/containers/GlobalErrors/withGlobalErrorsActions.js rename to src/containers/GlobalErrors/withGlobalErrorsActions.js diff --git a/client/src/containers/Homepage/AccountsPayableSection.js b/src/containers/Homepage/AccountsPayableSection.js similarity index 100% rename from client/src/containers/Homepage/AccountsPayableSection.js rename to src/containers/Homepage/AccountsPayableSection.js diff --git a/client/src/containers/Homepage/AccountsReceivableSection.js b/src/containers/Homepage/AccountsReceivableSection.js similarity index 100% rename from client/src/containers/Homepage/AccountsReceivableSection.js rename to src/containers/Homepage/AccountsReceivableSection.js diff --git a/client/src/containers/Homepage/AnnouncementList.js b/src/containers/Homepage/AnnouncementList.js similarity index 100% rename from client/src/containers/Homepage/AnnouncementList.js rename to src/containers/Homepage/AnnouncementList.js diff --git a/client/src/containers/Homepage/FinancialAccountingSection.js b/src/containers/Homepage/FinancialAccountingSection.js similarity index 100% rename from client/src/containers/Homepage/FinancialAccountingSection.js rename to src/containers/Homepage/FinancialAccountingSection.js diff --git a/client/src/containers/Homepage/Homepage.js b/src/containers/Homepage/Homepage.js similarity index 100% rename from client/src/containers/Homepage/Homepage.js rename to src/containers/Homepage/Homepage.js diff --git a/client/src/containers/Homepage/HomepageContent.js b/src/containers/Homepage/HomepageContent.js similarity index 100% rename from client/src/containers/Homepage/HomepageContent.js rename to src/containers/Homepage/HomepageContent.js diff --git a/client/src/containers/Homepage/ProductsServicesSection.js b/src/containers/Homepage/ProductsServicesSection.js similarity index 100% rename from client/src/containers/Homepage/ProductsServicesSection.js rename to src/containers/Homepage/ProductsServicesSection.js diff --git a/client/src/containers/Homepage/ShortcutBoxesSection.js b/src/containers/Homepage/ShortcutBoxesSection.js similarity index 100% rename from client/src/containers/Homepage/ShortcutBoxesSection.js rename to src/containers/Homepage/ShortcutBoxesSection.js diff --git a/client/src/containers/InventoryAdjustments/InventoryAdjustmentList.js b/src/containers/InventoryAdjustments/InventoryAdjustmentList.js similarity index 100% rename from client/src/containers/InventoryAdjustments/InventoryAdjustmentList.js rename to src/containers/InventoryAdjustments/InventoryAdjustmentList.js diff --git a/client/src/containers/InventoryAdjustments/InventoryAdjustmentTable.js b/src/containers/InventoryAdjustments/InventoryAdjustmentTable.js similarity index 100% rename from client/src/containers/InventoryAdjustments/InventoryAdjustmentTable.js rename to src/containers/InventoryAdjustments/InventoryAdjustmentTable.js diff --git a/client/src/containers/InventoryAdjustments/InventoryAdjustmentView.js b/src/containers/InventoryAdjustments/InventoryAdjustmentView.js similarity index 100% rename from client/src/containers/InventoryAdjustments/InventoryAdjustmentView.js rename to src/containers/InventoryAdjustments/InventoryAdjustmentView.js diff --git a/client/src/containers/InventoryAdjustments/InventoryAdjustmentsAlerts.js b/src/containers/InventoryAdjustments/InventoryAdjustmentsAlerts.js similarity index 100% rename from client/src/containers/InventoryAdjustments/InventoryAdjustmentsAlerts.js rename to src/containers/InventoryAdjustments/InventoryAdjustmentsAlerts.js diff --git a/client/src/containers/InventoryAdjustments/InventoryAdjustmentsProvider.js b/src/containers/InventoryAdjustments/InventoryAdjustmentsProvider.js similarity index 100% rename from client/src/containers/InventoryAdjustments/InventoryAdjustmentsProvider.js rename to src/containers/InventoryAdjustments/InventoryAdjustmentsProvider.js diff --git a/client/src/containers/InventoryAdjustments/components.js b/src/containers/InventoryAdjustments/components.js similarity index 100% rename from client/src/containers/InventoryAdjustments/components.js rename to src/containers/InventoryAdjustments/components.js diff --git a/client/src/containers/InventoryAdjustments/withInventoryAdjustmentActions.js b/src/containers/InventoryAdjustments/withInventoryAdjustmentActions.js similarity index 100% rename from client/src/containers/InventoryAdjustments/withInventoryAdjustmentActions.js rename to src/containers/InventoryAdjustments/withInventoryAdjustmentActions.js diff --git a/client/src/containers/InventoryAdjustments/withInventoryAdjustments.js b/src/containers/InventoryAdjustments/withInventoryAdjustments.js similarity index 100% rename from client/src/containers/InventoryAdjustments/withInventoryAdjustments.js rename to src/containers/InventoryAdjustments/withInventoryAdjustments.js diff --git a/client/src/containers/Items/ItemForm.js b/src/containers/Items/ItemForm.js similarity index 100% rename from client/src/containers/Items/ItemForm.js rename to src/containers/Items/ItemForm.js diff --git a/client/src/containers/Items/ItemForm.schema.js b/src/containers/Items/ItemForm.schema.js similarity index 100% rename from client/src/containers/Items/ItemForm.schema.js rename to src/containers/Items/ItemForm.schema.js diff --git a/client/src/containers/Items/ItemFormBody.js b/src/containers/Items/ItemFormBody.js similarity index 100% rename from client/src/containers/Items/ItemFormBody.js rename to src/containers/Items/ItemFormBody.js diff --git a/client/src/containers/Items/ItemFormFloatingActions.js b/src/containers/Items/ItemFormFloatingActions.js similarity index 100% rename from client/src/containers/Items/ItemFormFloatingActions.js rename to src/containers/Items/ItemFormFloatingActions.js diff --git a/client/src/containers/Items/ItemFormInventorySection.js b/src/containers/Items/ItemFormInventorySection.js similarity index 100% rename from client/src/containers/Items/ItemFormInventorySection.js rename to src/containers/Items/ItemFormInventorySection.js diff --git a/client/src/containers/Items/ItemFormPage.js b/src/containers/Items/ItemFormPage.js similarity index 100% rename from client/src/containers/Items/ItemFormPage.js rename to src/containers/Items/ItemFormPage.js diff --git a/client/src/containers/Items/ItemFormPrimarySection.js b/src/containers/Items/ItemFormPrimarySection.js similarity index 100% rename from client/src/containers/Items/ItemFormPrimarySection.js rename to src/containers/Items/ItemFormPrimarySection.js diff --git a/client/src/containers/Items/ItemFormProvider.js b/src/containers/Items/ItemFormProvider.js similarity index 100% rename from client/src/containers/Items/ItemFormProvider.js rename to src/containers/Items/ItemFormProvider.js diff --git a/client/src/containers/Items/ItemsActionsBar.js b/src/containers/Items/ItemsActionsBar.js similarity index 100% rename from client/src/containers/Items/ItemsActionsBar.js rename to src/containers/Items/ItemsActionsBar.js diff --git a/client/src/containers/Items/ItemsAlerts.js b/src/containers/Items/ItemsAlerts.js similarity index 100% rename from client/src/containers/Items/ItemsAlerts.js rename to src/containers/Items/ItemsAlerts.js diff --git a/client/src/containers/Items/ItemsDataTable.js b/src/containers/Items/ItemsDataTable.js similarity index 100% rename from client/src/containers/Items/ItemsDataTable.js rename to src/containers/Items/ItemsDataTable.js diff --git a/client/src/containers/Items/ItemsEmptyStatus.js b/src/containers/Items/ItemsEmptyStatus.js similarity index 100% rename from client/src/containers/Items/ItemsEmptyStatus.js rename to src/containers/Items/ItemsEmptyStatus.js diff --git a/client/src/containers/Items/ItemsFooter.js b/src/containers/Items/ItemsFooter.js similarity index 100% rename from client/src/containers/Items/ItemsFooter.js rename to src/containers/Items/ItemsFooter.js diff --git a/client/src/containers/Items/ItemsList.js b/src/containers/Items/ItemsList.js similarity index 100% rename from client/src/containers/Items/ItemsList.js rename to src/containers/Items/ItemsList.js diff --git a/client/src/containers/Items/ItemsListProvider.js b/src/containers/Items/ItemsListProvider.js similarity index 100% rename from client/src/containers/Items/ItemsListProvider.js rename to src/containers/Items/ItemsListProvider.js diff --git a/client/src/containers/Items/ItemsUniversalSearch.js b/src/containers/Items/ItemsUniversalSearch.js similarity index 100% rename from client/src/containers/Items/ItemsUniversalSearch.js rename to src/containers/Items/ItemsUniversalSearch.js diff --git a/client/src/containers/Items/ItemsViewsTabs.js b/src/containers/Items/ItemsViewsTabs.js similarity index 100% rename from client/src/containers/Items/ItemsViewsTabs.js rename to src/containers/Items/ItemsViewsTabs.js diff --git a/client/src/containers/Items/components.js b/src/containers/Items/components.js similarity index 100% rename from client/src/containers/Items/components.js rename to src/containers/Items/components.js diff --git a/client/src/containers/Items/utils.js b/src/containers/Items/utils.js similarity index 100% rename from client/src/containers/Items/utils.js rename to src/containers/Items/utils.js diff --git a/client/src/containers/Items/withItem.js b/src/containers/Items/withItem.js similarity index 100% rename from client/src/containers/Items/withItem.js rename to src/containers/Items/withItem.js diff --git a/client/src/containers/Items/withItems.js b/src/containers/Items/withItems.js similarity index 100% rename from client/src/containers/Items/withItems.js rename to src/containers/Items/withItems.js diff --git a/client/src/containers/Items/withItemsActions.js b/src/containers/Items/withItemsActions.js similarity index 100% rename from client/src/containers/Items/withItemsActions.js rename to src/containers/Items/withItemsActions.js diff --git a/client/src/containers/ItemsCategories/ItemCategoriesList.js b/src/containers/ItemsCategories/ItemCategoriesList.js similarity index 100% rename from client/src/containers/ItemsCategories/ItemCategoriesList.js rename to src/containers/ItemsCategories/ItemCategoriesList.js diff --git a/client/src/containers/ItemsCategories/ItemCategoriesTable.js b/src/containers/ItemsCategories/ItemCategoriesTable.js similarity index 100% rename from client/src/containers/ItemsCategories/ItemCategoriesTable.js rename to src/containers/ItemsCategories/ItemCategoriesTable.js diff --git a/client/src/containers/ItemsCategories/ItemsCategoriesAlerts.js b/src/containers/ItemsCategories/ItemsCategoriesAlerts.js similarity index 100% rename from client/src/containers/ItemsCategories/ItemsCategoriesAlerts.js rename to src/containers/ItemsCategories/ItemsCategoriesAlerts.js diff --git a/client/src/containers/ItemsCategories/ItemsCategoriesProvider.js b/src/containers/ItemsCategories/ItemsCategoriesProvider.js similarity index 100% rename from client/src/containers/ItemsCategories/ItemsCategoriesProvider.js rename to src/containers/ItemsCategories/ItemsCategoriesProvider.js diff --git a/client/src/containers/ItemsCategories/ItemsCategoryActionsBar.js b/src/containers/ItemsCategories/ItemsCategoryActionsBar.js similarity index 100% rename from client/src/containers/ItemsCategories/ItemsCategoryActionsBar.js rename to src/containers/ItemsCategories/ItemsCategoryActionsBar.js diff --git a/client/src/containers/ItemsCategories/components.js b/src/containers/ItemsCategories/components.js similarity index 100% rename from client/src/containers/ItemsCategories/components.js rename to src/containers/ItemsCategories/components.js diff --git a/client/src/containers/ItemsCategories/withItemCategories.js b/src/containers/ItemsCategories/withItemCategories.js similarity index 100% rename from client/src/containers/ItemsCategories/withItemCategories.js rename to src/containers/ItemsCategories/withItemCategories.js diff --git a/client/src/containers/ItemsCategories/withItemCategoriesActions.js b/src/containers/ItemsCategories/withItemCategoriesActions.js similarity index 100% rename from client/src/containers/ItemsCategories/withItemCategoriesActions.js rename to src/containers/ItemsCategories/withItemCategoriesActions.js diff --git a/client/src/containers/ItemsCategories/withItemCategoryDetail.js b/src/containers/ItemsCategories/withItemCategoryDetail.js similarity index 100% rename from client/src/containers/ItemsCategories/withItemCategoryDetail.js rename to src/containers/ItemsCategories/withItemCategoryDetail.js diff --git a/client/src/containers/JournalEntriesTable/JournalEntriesTable.js b/src/containers/JournalEntriesTable/JournalEntriesTable.js similarity index 100% rename from client/src/containers/JournalEntriesTable/JournalEntriesTable.js rename to src/containers/JournalEntriesTable/JournalEntriesTable.js diff --git a/client/src/containers/JournalNumber/ReferenceNumberForm.js b/src/containers/JournalNumber/ReferenceNumberForm.js similarity index 100% rename from client/src/containers/JournalNumber/ReferenceNumberForm.js rename to src/containers/JournalNumber/ReferenceNumberForm.js diff --git a/client/src/containers/JournalNumber/ReferenceNumberFormContent.js b/src/containers/JournalNumber/ReferenceNumberFormContent.js similarity index 100% rename from client/src/containers/JournalNumber/ReferenceNumberFormContent.js rename to src/containers/JournalNumber/ReferenceNumberFormContent.js diff --git a/client/src/containers/JournalNumber/utils.js b/src/containers/JournalNumber/utils.js similarity index 100% rename from client/src/containers/JournalNumber/utils.js rename to src/containers/JournalNumber/utils.js diff --git a/client/src/containers/KeyboardShortcuts/ShortcutsTable.js b/src/containers/KeyboardShortcuts/ShortcutsTable.js similarity index 100% rename from client/src/containers/KeyboardShortcuts/ShortcutsTable.js rename to src/containers/KeyboardShortcuts/ShortcutsTable.js diff --git a/client/src/containers/Media/withMediaActions.js b/src/containers/Media/withMediaActions.js similarity index 100% rename from client/src/containers/Media/withMediaActions.js rename to src/containers/Media/withMediaActions.js diff --git a/client/src/containers/Organization/withCurrentOrganization.js b/src/containers/Organization/withCurrentOrganization.js similarity index 100% rename from client/src/containers/Organization/withCurrentOrganization.js rename to src/containers/Organization/withCurrentOrganization.js diff --git a/client/src/containers/Organization/withOrganization.js b/src/containers/Organization/withOrganization.js similarity index 100% rename from client/src/containers/Organization/withOrganization.js rename to src/containers/Organization/withOrganization.js diff --git a/client/src/containers/Organization/withOrganizationActions.js b/src/containers/Organization/withOrganizationActions.js similarity index 100% rename from client/src/containers/Organization/withOrganizationActions.js rename to src/containers/Organization/withOrganizationActions.js diff --git a/client/src/containers/Preferences/Accountant/Accountant.js b/src/containers/Preferences/Accountant/Accountant.js similarity index 100% rename from client/src/containers/Preferences/Accountant/Accountant.js rename to src/containers/Preferences/Accountant/Accountant.js diff --git a/client/src/containers/Preferences/Accountant/Accountant.schema.js b/src/containers/Preferences/Accountant/Accountant.schema.js similarity index 100% rename from client/src/containers/Preferences/Accountant/Accountant.schema.js rename to src/containers/Preferences/Accountant/Accountant.schema.js diff --git a/client/src/containers/Preferences/Accountant/AccountantForm.js b/src/containers/Preferences/Accountant/AccountantForm.js similarity index 100% rename from client/src/containers/Preferences/Accountant/AccountantForm.js rename to src/containers/Preferences/Accountant/AccountantForm.js diff --git a/client/src/containers/Preferences/Accountant/AccountantFormPage.js b/src/containers/Preferences/Accountant/AccountantFormPage.js similarity index 100% rename from client/src/containers/Preferences/Accountant/AccountantFormPage.js rename to src/containers/Preferences/Accountant/AccountantFormPage.js diff --git a/client/src/containers/Preferences/Accountant/AccountantFormProvider.js b/src/containers/Preferences/Accountant/AccountantFormProvider.js similarity index 100% rename from client/src/containers/Preferences/Accountant/AccountantFormProvider.js rename to src/containers/Preferences/Accountant/AccountantFormProvider.js diff --git a/client/src/containers/Preferences/Accountant/utils.js b/src/containers/Preferences/Accountant/utils.js similarity index 100% rename from client/src/containers/Preferences/Accountant/utils.js rename to src/containers/Preferences/Accountant/utils.js diff --git a/client/src/containers/Preferences/Accounts/Accounts.js b/src/containers/Preferences/Accounts/Accounts.js similarity index 100% rename from client/src/containers/Preferences/Accounts/Accounts.js rename to src/containers/Preferences/Accounts/Accounts.js diff --git a/client/src/containers/Preferences/Accounts/AccountsCustomFields.js b/src/containers/Preferences/Accounts/AccountsCustomFields.js similarity index 100% rename from client/src/containers/Preferences/Accounts/AccountsCustomFields.js rename to src/containers/Preferences/Accounts/AccountsCustomFields.js diff --git a/client/src/containers/Preferences/Accounts/AccountsGeneral.js b/src/containers/Preferences/Accounts/AccountsGeneral.js similarity index 100% rename from client/src/containers/Preferences/Accounts/AccountsGeneral.js rename to src/containers/Preferences/Accounts/AccountsGeneral.js diff --git a/client/src/containers/Preferences/Currencies/Currencies.js b/src/containers/Preferences/Currencies/Currencies.js similarity index 100% rename from client/src/containers/Preferences/Currencies/Currencies.js rename to src/containers/Preferences/Currencies/Currencies.js diff --git a/client/src/containers/Preferences/Currencies/CurrenciesActions.js b/src/containers/Preferences/Currencies/CurrenciesActions.js similarity index 100% rename from client/src/containers/Preferences/Currencies/CurrenciesActions.js rename to src/containers/Preferences/Currencies/CurrenciesActions.js diff --git a/client/src/containers/Preferences/Currencies/CurrenciesAlerts.js b/src/containers/Preferences/Currencies/CurrenciesAlerts.js similarity index 100% rename from client/src/containers/Preferences/Currencies/CurrenciesAlerts.js rename to src/containers/Preferences/Currencies/CurrenciesAlerts.js diff --git a/client/src/containers/Preferences/Currencies/CurrenciesDataTable.js b/src/containers/Preferences/Currencies/CurrenciesDataTable.js similarity index 100% rename from client/src/containers/Preferences/Currencies/CurrenciesDataTable.js rename to src/containers/Preferences/Currencies/CurrenciesDataTable.js diff --git a/client/src/containers/Preferences/Currencies/CurrenciesList.js b/src/containers/Preferences/Currencies/CurrenciesList.js similarity index 100% rename from client/src/containers/Preferences/Currencies/CurrenciesList.js rename to src/containers/Preferences/Currencies/CurrenciesList.js diff --git a/client/src/containers/Preferences/Currencies/CurrenciesProvider.js b/src/containers/Preferences/Currencies/CurrenciesProvider.js similarity index 100% rename from client/src/containers/Preferences/Currencies/CurrenciesProvider.js rename to src/containers/Preferences/Currencies/CurrenciesProvider.js diff --git a/client/src/containers/Preferences/Currencies/components.js b/src/containers/Preferences/Currencies/components.js similarity index 100% rename from client/src/containers/Preferences/Currencies/components.js rename to src/containers/Preferences/Currencies/components.js diff --git a/client/src/containers/Preferences/DefaultRoute.js b/src/containers/Preferences/DefaultRoute.js similarity index 100% rename from client/src/containers/Preferences/DefaultRoute.js rename to src/containers/Preferences/DefaultRoute.js diff --git a/client/src/containers/Preferences/General/General.js b/src/containers/Preferences/General/General.js similarity index 100% rename from client/src/containers/Preferences/General/General.js rename to src/containers/Preferences/General/General.js diff --git a/client/src/containers/Preferences/General/General.schema.js b/src/containers/Preferences/General/General.schema.js similarity index 100% rename from client/src/containers/Preferences/General/General.schema.js rename to src/containers/Preferences/General/General.schema.js diff --git a/client/src/containers/Preferences/General/GeneralForm.js b/src/containers/Preferences/General/GeneralForm.js similarity index 100% rename from client/src/containers/Preferences/General/GeneralForm.js rename to src/containers/Preferences/General/GeneralForm.js diff --git a/client/src/containers/Preferences/General/GeneralFormPage.js b/src/containers/Preferences/General/GeneralFormPage.js similarity index 100% rename from client/src/containers/Preferences/General/GeneralFormPage.js rename to src/containers/Preferences/General/GeneralFormPage.js diff --git a/client/src/containers/Preferences/General/GeneralFormProvider.js b/src/containers/Preferences/General/GeneralFormProvider.js similarity index 100% rename from client/src/containers/Preferences/General/GeneralFormProvider.js rename to src/containers/Preferences/General/GeneralFormProvider.js diff --git a/client/src/containers/Preferences/General/utils.js b/src/containers/Preferences/General/utils.js similarity index 100% rename from client/src/containers/Preferences/General/utils.js rename to src/containers/Preferences/General/utils.js diff --git a/client/src/containers/Preferences/Item/ItemPreferences.schema.js b/src/containers/Preferences/Item/ItemPreferences.schema.js similarity index 100% rename from client/src/containers/Preferences/Item/ItemPreferences.schema.js rename to src/containers/Preferences/Item/ItemPreferences.schema.js diff --git a/client/src/containers/Preferences/Item/ItemPreferencesForm.js b/src/containers/Preferences/Item/ItemPreferencesForm.js similarity index 100% rename from client/src/containers/Preferences/Item/ItemPreferencesForm.js rename to src/containers/Preferences/Item/ItemPreferencesForm.js diff --git a/client/src/containers/Preferences/Item/ItemPreferencesFormPage.js b/src/containers/Preferences/Item/ItemPreferencesFormPage.js similarity index 100% rename from client/src/containers/Preferences/Item/ItemPreferencesFormPage.js rename to src/containers/Preferences/Item/ItemPreferencesFormPage.js diff --git a/client/src/containers/Preferences/Item/ItemPreferencesFormProvider.js b/src/containers/Preferences/Item/ItemPreferencesFormProvider.js similarity index 100% rename from client/src/containers/Preferences/Item/ItemPreferencesFormProvider.js rename to src/containers/Preferences/Item/ItemPreferencesFormProvider.js diff --git a/client/src/containers/Preferences/Item/index.js b/src/containers/Preferences/Item/index.js similarity index 100% rename from client/src/containers/Preferences/Item/index.js rename to src/containers/Preferences/Item/index.js diff --git a/client/src/containers/Preferences/PreferencesPageLoader.js b/src/containers/Preferences/PreferencesPageLoader.js similarity index 100% rename from client/src/containers/Preferences/PreferencesPageLoader.js rename to src/containers/Preferences/PreferencesPageLoader.js diff --git a/client/src/containers/Preferences/Users/RolesList.js b/src/containers/Preferences/Users/RolesList.js similarity index 100% rename from client/src/containers/Preferences/Users/RolesList.js rename to src/containers/Preferences/Users/RolesList.js diff --git a/client/src/containers/Preferences/Users/Users.js b/src/containers/Preferences/Users/Users.js similarity index 100% rename from client/src/containers/Preferences/Users/Users.js rename to src/containers/Preferences/Users/Users.js diff --git a/client/src/containers/Preferences/Users/UsersActions.js b/src/containers/Preferences/Users/UsersActions.js similarity index 100% rename from client/src/containers/Preferences/Users/UsersActions.js rename to src/containers/Preferences/Users/UsersActions.js diff --git a/client/src/containers/Preferences/Users/UsersAlerts.js b/src/containers/Preferences/Users/UsersAlerts.js similarity index 100% rename from client/src/containers/Preferences/Users/UsersAlerts.js rename to src/containers/Preferences/Users/UsersAlerts.js diff --git a/client/src/containers/Preferences/Users/UsersDataTable.js b/src/containers/Preferences/Users/UsersDataTable.js similarity index 100% rename from client/src/containers/Preferences/Users/UsersDataTable.js rename to src/containers/Preferences/Users/UsersDataTable.js diff --git a/client/src/containers/Preferences/Users/UsersList.js b/src/containers/Preferences/Users/UsersList.js similarity index 100% rename from client/src/containers/Preferences/Users/UsersList.js rename to src/containers/Preferences/Users/UsersList.js diff --git a/client/src/containers/Preferences/Users/UsersProvider.js b/src/containers/Preferences/Users/UsersProvider.js similarity index 100% rename from client/src/containers/Preferences/Users/UsersProvider.js rename to src/containers/Preferences/Users/UsersProvider.js diff --git a/client/src/containers/Preferences/Users/components.js b/src/containers/Preferences/Users/components.js similarity index 100% rename from client/src/containers/Preferences/Users/components.js rename to src/containers/Preferences/Users/components.js diff --git a/client/src/containers/Preferences/Users/withUserPreferences.js b/src/containers/Preferences/Users/withUserPreferences.js similarity index 100% rename from client/src/containers/Preferences/Users/withUserPreferences.js rename to src/containers/Preferences/Users/withUserPreferences.js diff --git a/client/src/containers/Purchases/Bills/BillForm/BillFloatingActions.js b/src/containers/Purchases/Bills/BillForm/BillFloatingActions.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillForm/BillFloatingActions.js rename to src/containers/Purchases/Bills/BillForm/BillFloatingActions.js diff --git a/client/src/containers/Purchases/Bills/BillForm/BillForm.js b/src/containers/Purchases/Bills/BillForm/BillForm.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillForm/BillForm.js rename to src/containers/Purchases/Bills/BillForm/BillForm.js diff --git a/client/src/containers/Purchases/Bills/BillForm/BillForm.schema.js b/src/containers/Purchases/Bills/BillForm/BillForm.schema.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillForm/BillForm.schema.js rename to src/containers/Purchases/Bills/BillForm/BillForm.schema.js diff --git a/client/src/containers/Purchases/Bills/BillForm/BillFormFooter.js b/src/containers/Purchases/Bills/BillForm/BillFormFooter.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillForm/BillFormFooter.js rename to src/containers/Purchases/Bills/BillForm/BillFormFooter.js diff --git a/client/src/containers/Purchases/Bills/BillForm/BillFormHeader.js b/src/containers/Purchases/Bills/BillForm/BillFormHeader.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillForm/BillFormHeader.js rename to src/containers/Purchases/Bills/BillForm/BillFormHeader.js diff --git a/client/src/containers/Purchases/Bills/BillForm/BillFormHeaderFields.js b/src/containers/Purchases/Bills/BillForm/BillFormHeaderFields.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillForm/BillFormHeaderFields.js rename to src/containers/Purchases/Bills/BillForm/BillFormHeaderFields.js diff --git a/client/src/containers/Purchases/Bills/BillForm/BillFormPage.js b/src/containers/Purchases/Bills/BillForm/BillFormPage.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillForm/BillFormPage.js rename to src/containers/Purchases/Bills/BillForm/BillFormPage.js diff --git a/client/src/containers/Purchases/Bills/BillForm/BillFormProvider.js b/src/containers/Purchases/Bills/BillForm/BillFormProvider.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillForm/BillFormProvider.js rename to src/containers/Purchases/Bills/BillForm/BillFormProvider.js diff --git a/client/src/containers/Purchases/Bills/BillForm/BillItemsEntriesEditor.js b/src/containers/Purchases/Bills/BillForm/BillItemsEntriesEditor.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillForm/BillItemsEntriesEditor.js rename to src/containers/Purchases/Bills/BillForm/BillItemsEntriesEditor.js diff --git a/client/src/containers/Purchases/Bills/BillForm/utils.js b/src/containers/Purchases/Bills/BillForm/utils.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillForm/utils.js rename to src/containers/Purchases/Bills/BillForm/utils.js diff --git a/client/src/containers/Purchases/Bills/BillUniversalSearch.js b/src/containers/Purchases/Bills/BillUniversalSearch.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillUniversalSearch.js rename to src/containers/Purchases/Bills/BillUniversalSearch.js diff --git a/client/src/containers/Purchases/Bills/BillsLanding/BillsActionsBar.js b/src/containers/Purchases/Bills/BillsLanding/BillsActionsBar.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillsLanding/BillsActionsBar.js rename to src/containers/Purchases/Bills/BillsLanding/BillsActionsBar.js diff --git a/client/src/containers/Purchases/Bills/BillsLanding/BillsAlerts.js b/src/containers/Purchases/Bills/BillsLanding/BillsAlerts.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillsLanding/BillsAlerts.js rename to src/containers/Purchases/Bills/BillsLanding/BillsAlerts.js diff --git a/client/src/containers/Purchases/Bills/BillsLanding/BillsEmptyStatus.js b/src/containers/Purchases/Bills/BillsLanding/BillsEmptyStatus.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillsLanding/BillsEmptyStatus.js rename to src/containers/Purchases/Bills/BillsLanding/BillsEmptyStatus.js diff --git a/client/src/containers/Purchases/Bills/BillsLanding/BillsList.js b/src/containers/Purchases/Bills/BillsLanding/BillsList.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillsLanding/BillsList.js rename to src/containers/Purchases/Bills/BillsLanding/BillsList.js diff --git a/client/src/containers/Purchases/Bills/BillsLanding/BillsListProvider.js b/src/containers/Purchases/Bills/BillsLanding/BillsListProvider.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillsLanding/BillsListProvider.js rename to src/containers/Purchases/Bills/BillsLanding/BillsListProvider.js diff --git a/client/src/containers/Purchases/Bills/BillsLanding/BillsTable.js b/src/containers/Purchases/Bills/BillsLanding/BillsTable.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillsLanding/BillsTable.js rename to src/containers/Purchases/Bills/BillsLanding/BillsTable.js diff --git a/client/src/containers/Purchases/Bills/BillsLanding/BillsViewsTabs.js b/src/containers/Purchases/Bills/BillsLanding/BillsViewsTabs.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillsLanding/BillsViewsTabs.js rename to src/containers/Purchases/Bills/BillsLanding/BillsViewsTabs.js diff --git a/client/src/containers/Purchases/Bills/BillsLanding/components.js b/src/containers/Purchases/Bills/BillsLanding/components.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillsLanding/components.js rename to src/containers/Purchases/Bills/BillsLanding/components.js diff --git a/client/src/containers/Purchases/Bills/BillsLanding/withBills.js b/src/containers/Purchases/Bills/BillsLanding/withBills.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillsLanding/withBills.js rename to src/containers/Purchases/Bills/BillsLanding/withBills.js diff --git a/client/src/containers/Purchases/Bills/BillsLanding/withBillsActions.js b/src/containers/Purchases/Bills/BillsLanding/withBillsActions.js similarity index 100% rename from client/src/containers/Purchases/Bills/BillsLanding/withBillsActions.js rename to src/containers/Purchases/Bills/BillsLanding/withBillsActions.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeEntriesTable.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeEntriesTable.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeEntriesTable.js rename to src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeEntriesTable.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFloatingActions.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFloatingActions.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFloatingActions.js rename to src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFloatingActions.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFooter.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFooter.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFooter.js rename to src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFooter.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeForm.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeForm.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeForm.js rename to src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeForm.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeForm.schema.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeForm.schema.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeForm.schema.js rename to src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeForm.schema.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormBody.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormBody.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormBody.js rename to src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormBody.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.js rename to src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.js rename to src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormPage.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormPage.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormPage.js rename to src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormPage.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormProvider.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormProvider.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormProvider.js rename to src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormProvider.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeInnerProvider.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeInnerProvider.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeInnerProvider.js rename to src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeInnerProvider.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/components.js b/src/containers/Purchases/PaymentMades/PaymentForm/components.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/components.js rename to src/containers/Purchases/PaymentMades/PaymentForm/components.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentForm/utils.js b/src/containers/Purchases/PaymentMades/PaymentForm/utils.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentForm/utils.js rename to src/containers/Purchases/PaymentMades/PaymentForm/utils.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentMadeUniversalSearch.js b/src/containers/Purchases/PaymentMades/PaymentMadeUniversalSearch.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentMadeUniversalSearch.js rename to src/containers/Purchases/PaymentMades/PaymentMadeUniversalSearch.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentMadesAlerts.js b/src/containers/Purchases/PaymentMades/PaymentMadesAlerts.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentMadesAlerts.js rename to src/containers/Purchases/PaymentMades/PaymentMadesAlerts.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeActionsBar.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeActionsBar.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeActionsBar.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeActionsBar.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeList.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeList.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeList.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeList.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeViewTabs.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeViewTabs.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeViewTabs.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadeViewTabs.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesEmptyStatus.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesEmptyStatus.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesEmptyStatus.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesEmptyStatus.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesListProvider.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesListProvider.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesListProvider.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesListProvider.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesTable.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesTable.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesTable.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesTable.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesView.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesView.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesView.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesView.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMdesListProvider.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMdesListProvider.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMdesListProvider.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMdesListProvider.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/components.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/components.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/components.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/components.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/utils.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/utils.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/utils.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/utils.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMade.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMade.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMade.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMade.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMadeActions.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMadeActions.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMadeActions.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMadeActions.js diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMadeDetail.js b/src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMadeDetail.js similarity index 100% rename from client/src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMadeDetail.js rename to src/containers/Purchases/PaymentMades/PaymentsLanding/withPaymentMadeDetail.js diff --git a/client/src/containers/QuickNewDropdown/QuickNewDropdown.js b/src/containers/QuickNewDropdown/QuickNewDropdown.js similarity index 100% rename from client/src/containers/QuickNewDropdown/QuickNewDropdown.js rename to src/containers/QuickNewDropdown/QuickNewDropdown.js diff --git a/client/src/containers/Resources/withResourceDetails.js b/src/containers/Resources/withResourceDetails.js similarity index 100% rename from client/src/containers/Resources/withResourceDetails.js rename to src/containers/Resources/withResourceDetails.js diff --git a/client/src/containers/Resources/withResourcesActions.js b/src/containers/Resources/withResourcesActions.js similarity index 100% rename from client/src/containers/Resources/withResourcesActions.js rename to src/containers/Resources/withResourcesActions.js diff --git a/client/src/containers/Router/withRoute.js b/src/containers/Router/withRoute.js similarity index 100% rename from client/src/containers/Router/withRoute.js rename to src/containers/Router/withRoute.js diff --git a/client/src/containers/Router/withRouteActions.js b/src/containers/Router/withRouteActions.js similarity index 100% rename from client/src/containers/Router/withRouteActions.js rename to src/containers/Router/withRouteActions.js diff --git a/client/src/containers/Sales/Estimate/EstimatesDataTable.js b/src/containers/Sales/Estimate/EstimatesDataTable.js similarity index 100% rename from client/src/containers/Sales/Estimate/EstimatesDataTable.js rename to src/containers/Sales/Estimate/EstimatesDataTable.js diff --git a/client/src/containers/Sales/Estimates/EstimateDetails/EstimateDrawer.js b/src/containers/Sales/Estimates/EstimateDetails/EstimateDrawer.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateDetails/EstimateDrawer.js rename to src/containers/Sales/Estimates/EstimateDetails/EstimateDrawer.js diff --git a/client/src/containers/Sales/Estimates/EstimateDetails/EstimateDrawerContent.js b/src/containers/Sales/Estimates/EstimateDetails/EstimateDrawerContent.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateDetails/EstimateDrawerContent.js rename to src/containers/Sales/Estimates/EstimateDetails/EstimateDrawerContent.js diff --git a/client/src/containers/Sales/Estimates/EstimateDetails/EstimateDrawerProvider.js b/src/containers/Sales/Estimates/EstimateDetails/EstimateDrawerProvider.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateDetails/EstimateDrawerProvider.js rename to src/containers/Sales/Estimates/EstimateDetails/EstimateDrawerProvider.js diff --git a/client/src/containers/Sales/Estimates/EstimateDetails/EstimatePaper.js b/src/containers/Sales/Estimates/EstimateDetails/EstimatePaper.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateDetails/EstimatePaper.js rename to src/containers/Sales/Estimates/EstimateDetails/EstimatePaper.js diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFloatingActions.js b/src/containers/Sales/Estimates/EstimateForm/EstimateFloatingActions.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateForm/EstimateFloatingActions.js rename to src/containers/Sales/Estimates/EstimateForm/EstimateFloatingActions.js diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateForm.js b/src/containers/Sales/Estimates/EstimateForm/EstimateForm.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateForm/EstimateForm.js rename to src/containers/Sales/Estimates/EstimateForm/EstimateForm.js diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateForm.schema.js b/src/containers/Sales/Estimates/EstimateForm/EstimateForm.schema.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateForm/EstimateForm.schema.js rename to src/containers/Sales/Estimates/EstimateForm/EstimateForm.schema.js diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormDialogs.js b/src/containers/Sales/Estimates/EstimateForm/EstimateFormDialogs.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateForm/EstimateFormDialogs.js rename to src/containers/Sales/Estimates/EstimateForm/EstimateFormDialogs.js diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooter.js b/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooter.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooter.js rename to src/containers/Sales/Estimates/EstimateForm/EstimateFormFooter.js diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js b/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js rename to src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js b/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js rename to src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormPage.js b/src/containers/Sales/Estimates/EstimateForm/EstimateFormPage.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateForm/EstimateFormPage.js rename to src/containers/Sales/Estimates/EstimateForm/EstimateFormPage.js diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormProvider.js b/src/containers/Sales/Estimates/EstimateForm/EstimateFormProvider.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateForm/EstimateFormProvider.js rename to src/containers/Sales/Estimates/EstimateForm/EstimateFormProvider.js diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateItemsEntriesField.js b/src/containers/Sales/Estimates/EstimateForm/EstimateItemsEntriesField.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateForm/EstimateItemsEntriesField.js rename to src/containers/Sales/Estimates/EstimateForm/EstimateItemsEntriesField.js diff --git a/client/src/containers/Sales/Estimates/EstimateForm/utils.js b/src/containers/Sales/Estimates/EstimateForm/utils.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimateForm/utils.js rename to src/containers/Sales/Estimates/EstimateForm/utils.js diff --git a/client/src/containers/Sales/Estimates/EstimatesAlerts.js b/src/containers/Sales/Estimates/EstimatesAlerts.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimatesAlerts.js rename to src/containers/Sales/Estimates/EstimatesAlerts.js diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/EstimateUniversalSearch.js b/src/containers/Sales/Estimates/EstimatesLanding/EstimateUniversalSearch.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimatesLanding/EstimateUniversalSearch.js rename to src/containers/Sales/Estimates/EstimatesLanding/EstimateUniversalSearch.js diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesActionsBar.js b/src/containers/Sales/Estimates/EstimatesLanding/EstimatesActionsBar.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesActionsBar.js rename to src/containers/Sales/Estimates/EstimatesLanding/EstimatesActionsBar.js diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesDataTable.js b/src/containers/Sales/Estimates/EstimatesLanding/EstimatesDataTable.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesDataTable.js rename to src/containers/Sales/Estimates/EstimatesLanding/EstimatesDataTable.js diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js b/src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js rename to src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesList.js b/src/containers/Sales/Estimates/EstimatesLanding/EstimatesList.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesList.js rename to src/containers/Sales/Estimates/EstimatesLanding/EstimatesList.js diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesListProvider.js b/src/containers/Sales/Estimates/EstimatesLanding/EstimatesListProvider.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesListProvider.js rename to src/containers/Sales/Estimates/EstimatesLanding/EstimatesListProvider.js diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesViewTabs.js b/src/containers/Sales/Estimates/EstimatesLanding/EstimatesViewTabs.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesViewTabs.js rename to src/containers/Sales/Estimates/EstimatesLanding/EstimatesViewTabs.js diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/components.js b/src/containers/Sales/Estimates/EstimatesLanding/components.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimatesLanding/components.js rename to src/containers/Sales/Estimates/EstimatesLanding/components.js diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/withEstimates.js b/src/containers/Sales/Estimates/EstimatesLanding/withEstimates.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimatesLanding/withEstimates.js rename to src/containers/Sales/Estimates/EstimatesLanding/withEstimates.js diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/withEstimatesActions.js b/src/containers/Sales/Estimates/EstimatesLanding/withEstimatesActions.js similarity index 100% rename from client/src/containers/Sales/Estimates/EstimatesLanding/withEstimatesActions.js rename to src/containers/Sales/Estimates/EstimatesLanding/withEstimatesActions.js diff --git a/client/src/containers/Sales/Estimates/withEstimateDetail.js b/src/containers/Sales/Estimates/withEstimateDetail.js similarity index 100% rename from client/src/containers/Sales/Estimates/withEstimateDetail.js rename to src/containers/Sales/Estimates/withEstimateDetail.js diff --git a/client/src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawer.js b/src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawer.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawer.js rename to src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawer.js diff --git a/client/src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawerContent.js b/src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawerContent.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawerContent.js rename to src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawerContent.js diff --git a/client/src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawerProvider.js b/src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawerProvider.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawerProvider.js rename to src/containers/Sales/Invoices/InvoiceDetails/InvoiceDrawerProvider.js diff --git a/client/src/containers/Sales/Invoices/InvoiceDetails/InvoicePaper.js b/src/containers/Sales/Invoices/InvoiceDetails/InvoicePaper.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceDetails/InvoicePaper.js rename to src/containers/Sales/Invoices/InvoiceDetails/InvoicePaper.js diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFloatingActions.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFloatingActions.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFloatingActions.js rename to src/containers/Sales/Invoices/InvoiceForm/InvoiceFloatingActions.js diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.js rename to src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.js diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.schema.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.schema.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.schema.js rename to src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.schema.js diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormDialogs.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormDialogs.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormDialogs.js rename to src/containers/Sales/Invoices/InvoiceForm/InvoiceFormDialogs.js diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormFooter.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormFooter.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormFooter.js rename to src/containers/Sales/Invoices/InvoiceForm/InvoiceFormFooter.js diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js rename to src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js rename to src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormPage.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormPage.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormPage.js rename to src/containers/Sales/Invoices/InvoiceForm/InvoiceFormPage.js diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js rename to src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceItemsEntriesEditorField.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceItemsEntriesEditorField.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceForm/InvoiceItemsEntriesEditorField.js rename to src/containers/Sales/Invoices/InvoiceForm/InvoiceItemsEntriesEditorField.js diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/utils.js b/src/containers/Sales/Invoices/InvoiceForm/utils.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceForm/utils.js rename to src/containers/Sales/Invoices/InvoiceForm/utils.js diff --git a/client/src/containers/Sales/Invoices/InvoiceUniversalSearch.js b/src/containers/Sales/Invoices/InvoiceUniversalSearch.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoiceUniversalSearch.js rename to src/containers/Sales/Invoices/InvoiceUniversalSearch.js diff --git a/client/src/containers/Sales/Invoices/InvoicesAlerts.js b/src/containers/Sales/Invoices/InvoicesAlerts.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoicesAlerts.js rename to src/containers/Sales/Invoices/InvoicesAlerts.js diff --git a/client/src/containers/Sales/Invoices/InvoicesLanding/InvoiceViewTabs.js b/src/containers/Sales/Invoices/InvoicesLanding/InvoiceViewTabs.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoicesLanding/InvoiceViewTabs.js rename to src/containers/Sales/Invoices/InvoicesLanding/InvoiceViewTabs.js diff --git a/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesActionsBar.js b/src/containers/Sales/Invoices/InvoicesLanding/InvoicesActionsBar.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesActionsBar.js rename to src/containers/Sales/Invoices/InvoicesLanding/InvoicesActionsBar.js diff --git a/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesDataTable.js b/src/containers/Sales/Invoices/InvoicesLanding/InvoicesDataTable.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesDataTable.js rename to src/containers/Sales/Invoices/InvoicesLanding/InvoicesDataTable.js diff --git a/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesEmptyStatus.js b/src/containers/Sales/Invoices/InvoicesLanding/InvoicesEmptyStatus.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesEmptyStatus.js rename to src/containers/Sales/Invoices/InvoicesLanding/InvoicesEmptyStatus.js diff --git a/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesList.js b/src/containers/Sales/Invoices/InvoicesLanding/InvoicesList.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesList.js rename to src/containers/Sales/Invoices/InvoicesLanding/InvoicesList.js diff --git a/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesListProvider.js b/src/containers/Sales/Invoices/InvoicesLanding/InvoicesListProvider.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesListProvider.js rename to src/containers/Sales/Invoices/InvoicesLanding/InvoicesListProvider.js diff --git a/client/src/containers/Sales/Invoices/InvoicesLanding/components.js b/src/containers/Sales/Invoices/InvoicesLanding/components.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoicesLanding/components.js rename to src/containers/Sales/Invoices/InvoicesLanding/components.js diff --git a/client/src/containers/Sales/Invoices/InvoicesLanding/withInvoiceActions.js b/src/containers/Sales/Invoices/InvoicesLanding/withInvoiceActions.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoicesLanding/withInvoiceActions.js rename to src/containers/Sales/Invoices/InvoicesLanding/withInvoiceActions.js diff --git a/client/src/containers/Sales/Invoices/InvoicesLanding/withInvoices.js b/src/containers/Sales/Invoices/InvoicesLanding/withInvoices.js similarity index 100% rename from client/src/containers/Sales/Invoices/InvoicesLanding/withInvoices.js rename to src/containers/Sales/Invoices/InvoicesLanding/withInvoices.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawer.js b/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawer.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawer.js rename to src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawer.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawerContent.js b/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawerContent.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawerContent.js rename to src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawerContent.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawerProvider.js b/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawerProvider.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawerProvider.js rename to src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceiveDrawerProvider.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceivePaper.js b/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceivePaper.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceivePaper.js rename to src/containers/Sales/PaymentReceives/PaymentDetails/PaymentReceivePaper.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveAlerts.js b/src/containers/Sales/PaymentReceives/PaymentReceiveAlerts.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveAlerts.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveAlerts.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFloatingActions.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFloatingActions.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFloatingActions.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFloatingActions.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.schema.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.schema.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.schema.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.schema.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormAlerts.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormAlerts.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormAlerts.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormAlerts.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormBody.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormBody.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormBody.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormBody.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormDialogs.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormDialogs.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormDialogs.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormDialogs.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormFooter.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormFooter.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormFooter.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormFooter.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormPage.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormPage.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormPage.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormPage.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormProvider.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormProvider.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormProvider.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormProvider.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveInnerProvider.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveInnerProvider.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveInnerProvider.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveInnerProvider.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveItemsTable.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveItemsTable.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveItemsTable.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveItemsTable.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/components.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/components.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/components.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/components.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/utils.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/utils.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/utils.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveForm/utils.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveUniversalSearch.js b/src/containers/Sales/PaymentReceives/PaymentReceiveUniversalSearch.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentReceiveUniversalSearch.js rename to src/containers/Sales/PaymentReceives/PaymentReceiveUniversalSearch.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiptsListProvider.js b/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiptsListProvider.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiptsListProvider.js rename to src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiptsListProvider.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiveActionsBar.js b/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiveActionsBar.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiveActionsBar.js rename to src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiveActionsBar.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiveViewTabs.js b/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiveViewTabs.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiveViewTabs.js rename to src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceiveViewTabs.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js b/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js rename to src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesList.js b/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesList.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesList.js rename to src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesList.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesListProvider.js b/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesListProvider.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesListProvider.js rename to src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesListProvider.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesTable.js b/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesTable.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesTable.js rename to src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesTable.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/components.js b/src/containers/Sales/PaymentReceives/PaymentsLanding/components.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentsLanding/components.js rename to src/containers/Sales/PaymentReceives/PaymentsLanding/components.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceiveDetail.js b/src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceiveDetail.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceiveDetail.js rename to src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceiveDetail.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceives.js b/src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceives.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceives.js rename to src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceives.js diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceivesActions.js b/src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceivesActions.js similarity index 100% rename from client/src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceivesActions.js rename to src/containers/Sales/PaymentReceives/PaymentsLanding/withPaymentReceivesActions.js diff --git a/client/src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawer.js b/src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawer.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawer.js rename to src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawer.js diff --git a/client/src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawerContent.js b/src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawerContent.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawerContent.js rename to src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawerContent.js diff --git a/client/src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawerProvider.js b/src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawerProvider.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawerProvider.js rename to src/containers/Sales/Receipts/ReceiptDetails/ReceiptDrawerProvider.js diff --git a/client/src/containers/Sales/Receipts/ReceiptDetails/ReceiptPaper.js b/src/containers/Sales/Receipts/ReceiptDetails/ReceiptPaper.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptDetails/ReceiptPaper.js rename to src/containers/Sales/Receipts/ReceiptDetails/ReceiptPaper.js diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptForm.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptForm.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptForm/ReceiptForm.js rename to src/containers/Sales/Receipts/ReceiptForm/ReceiptForm.js diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptForm.schema.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptForm.schema.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptForm/ReceiptForm.schema.js rename to src/containers/Sales/Receipts/ReceiptForm/ReceiptForm.schema.js diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormDialogs.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormDialogs.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormDialogs.js rename to src/containers/Sales/Receipts/ReceiptForm/ReceiptFormDialogs.js diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFloatingActions.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFloatingActions.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFloatingActions.js rename to src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFloatingActions.js diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFooter.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFooter.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFooter.js rename to src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFooter.js diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeader.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeader.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeader.js rename to src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeader.js diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js rename to src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormPage.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormPage.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormPage.js rename to src/containers/Sales/Receipts/ReceiptForm/ReceiptFormPage.js diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormProvider.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormProvider.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormProvider.js rename to src/containers/Sales/Receipts/ReceiptForm/ReceiptFormProvider.js diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptItemsEntriesEditor.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptItemsEntriesEditor.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptForm/ReceiptItemsEntriesEditor.js rename to src/containers/Sales/Receipts/ReceiptForm/ReceiptItemsEntriesEditor.js diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/utils.js b/src/containers/Sales/Receipts/ReceiptForm/utils.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptForm/utils.js rename to src/containers/Sales/Receipts/ReceiptForm/utils.js diff --git a/client/src/containers/Sales/Receipts/ReceiptUniversalSearch.js b/src/containers/Sales/Receipts/ReceiptUniversalSearch.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptUniversalSearch.js rename to src/containers/Sales/Receipts/ReceiptUniversalSearch.js diff --git a/client/src/containers/Sales/Receipts/ReceiptsAlerts.js b/src/containers/Sales/Receipts/ReceiptsAlerts.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptsAlerts.js rename to src/containers/Sales/Receipts/ReceiptsAlerts.js diff --git a/client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptActionsBar.js b/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptActionsBar.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptActionsBar.js rename to src/containers/Sales/Receipts/ReceiptsLanding/ReceiptActionsBar.js diff --git a/client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptViewTabs.js b/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptViewTabs.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptViewTabs.js rename to src/containers/Sales/Receipts/ReceiptsLanding/ReceiptViewTabs.js diff --git a/client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsEmptyStatus.js b/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsEmptyStatus.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsEmptyStatus.js rename to src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsEmptyStatus.js diff --git a/client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsList.js b/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsList.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsList.js rename to src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsList.js diff --git a/client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsListProvider.js b/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsListProvider.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsListProvider.js rename to src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsListProvider.js diff --git a/client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsTable.js b/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsTable.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsTable.js rename to src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsTable.js diff --git a/client/src/containers/Sales/Receipts/ReceiptsLanding/components.js b/src/containers/Sales/Receipts/ReceiptsLanding/components.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptsLanding/components.js rename to src/containers/Sales/Receipts/ReceiptsLanding/components.js diff --git a/client/src/containers/Sales/Receipts/ReceiptsLanding/withReceipts.js b/src/containers/Sales/Receipts/ReceiptsLanding/withReceipts.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptsLanding/withReceipts.js rename to src/containers/Sales/Receipts/ReceiptsLanding/withReceipts.js diff --git a/client/src/containers/Sales/Receipts/ReceiptsLanding/withReceiptsActions.js b/src/containers/Sales/Receipts/ReceiptsLanding/withReceiptsActions.js similarity index 100% rename from client/src/containers/Sales/Receipts/ReceiptsLanding/withReceiptsActions.js rename to src/containers/Sales/Receipts/ReceiptsLanding/withReceiptsActions.js diff --git a/client/src/containers/Settings/withSettings.js b/src/containers/Settings/withSettings.js similarity index 100% rename from client/src/containers/Settings/withSettings.js rename to src/containers/Settings/withSettings.js diff --git a/client/src/containers/Settings/withSettingsActions.js b/src/containers/Settings/withSettingsActions.js similarity index 100% rename from client/src/containers/Settings/withSettingsActions.js rename to src/containers/Settings/withSettingsActions.js diff --git a/client/src/containers/Setup/SetupCongratsPage.js b/src/containers/Setup/SetupCongratsPage.js similarity index 100% rename from client/src/containers/Setup/SetupCongratsPage.js rename to src/containers/Setup/SetupCongratsPage.js diff --git a/client/src/containers/Setup/SetupDialogs.js b/src/containers/Setup/SetupDialogs.js similarity index 100% rename from client/src/containers/Setup/SetupDialogs.js rename to src/containers/Setup/SetupDialogs.js diff --git a/client/src/containers/Setup/SetupInitializingForm.js b/src/containers/Setup/SetupInitializingForm.js similarity index 100% rename from client/src/containers/Setup/SetupInitializingForm.js rename to src/containers/Setup/SetupInitializingForm.js diff --git a/client/src/containers/Setup/SetupLeftSection.js b/src/containers/Setup/SetupLeftSection.js similarity index 100% rename from client/src/containers/Setup/SetupLeftSection.js rename to src/containers/Setup/SetupLeftSection.js diff --git a/client/src/containers/Setup/SetupOrganization.schema.js b/src/containers/Setup/SetupOrganization.schema.js similarity index 100% rename from client/src/containers/Setup/SetupOrganization.schema.js rename to src/containers/Setup/SetupOrganization.schema.js diff --git a/client/src/containers/Setup/SetupOrganizationForm.js b/src/containers/Setup/SetupOrganizationForm.js similarity index 100% rename from client/src/containers/Setup/SetupOrganizationForm.js rename to src/containers/Setup/SetupOrganizationForm.js diff --git a/client/src/containers/Setup/SetupOrganizationPage.js b/src/containers/Setup/SetupOrganizationPage.js similarity index 100% rename from client/src/containers/Setup/SetupOrganizationPage.js rename to src/containers/Setup/SetupOrganizationPage.js diff --git a/client/src/containers/Setup/SetupRightSection.js b/src/containers/Setup/SetupRightSection.js similarity index 100% rename from client/src/containers/Setup/SetupRightSection.js rename to src/containers/Setup/SetupRightSection.js diff --git a/client/src/containers/Setup/SetupSteps.js b/src/containers/Setup/SetupSteps.js similarity index 100% rename from client/src/containers/Setup/SetupSteps.js rename to src/containers/Setup/SetupSteps.js diff --git a/client/src/containers/Setup/SetupSubscription.js b/src/containers/Setup/SetupSubscription.js similarity index 100% rename from client/src/containers/Setup/SetupSubscription.js rename to src/containers/Setup/SetupSubscription.js diff --git a/client/src/containers/Setup/SetupSubscription/SetupSubscriptionForm.js b/src/containers/Setup/SetupSubscription/SetupSubscriptionForm.js similarity index 100% rename from client/src/containers/Setup/SetupSubscription/SetupSubscriptionForm.js rename to src/containers/Setup/SetupSubscription/SetupSubscriptionForm.js diff --git a/client/src/containers/Setup/SetupSubscription/SubscriptionPaymentsMethodsSection.js b/src/containers/Setup/SetupSubscription/SubscriptionPaymentsMethodsSection.js similarity index 100% rename from client/src/containers/Setup/SetupSubscription/SubscriptionPaymentsMethodsSection.js rename to src/containers/Setup/SetupSubscription/SubscriptionPaymentsMethodsSection.js diff --git a/client/src/containers/Setup/SetupSubscription/SubscriptionPeriodsSection.js b/src/containers/Setup/SetupSubscription/SubscriptionPeriodsSection.js similarity index 100% rename from client/src/containers/Setup/SetupSubscription/SubscriptionPeriodsSection.js rename to src/containers/Setup/SetupSubscription/SubscriptionPeriodsSection.js diff --git a/client/src/containers/Setup/SetupSubscription/SubscriptionPlansSection.js b/src/containers/Setup/SetupSubscription/SubscriptionPlansSection.js similarity index 100% rename from client/src/containers/Setup/SetupSubscription/SubscriptionPlansSection.js rename to src/containers/Setup/SetupSubscription/SubscriptionPlansSection.js diff --git a/client/src/containers/Setup/SetupWizardContent.js b/src/containers/Setup/SetupWizardContent.js similarity index 100% rename from client/src/containers/Setup/SetupWizardContent.js rename to src/containers/Setup/SetupWizardContent.js diff --git a/client/src/containers/Setup/SubscriptionForm.schema.js b/src/containers/Setup/SubscriptionForm.schema.js similarity index 100% rename from client/src/containers/Setup/SubscriptionForm.schema.js rename to src/containers/Setup/SubscriptionForm.schema.js diff --git a/client/src/containers/Setup/WizardSetupPage.js b/src/containers/Setup/WizardSetupPage.js similarity index 100% rename from client/src/containers/Setup/WizardSetupPage.js rename to src/containers/Setup/WizardSetupPage.js diff --git a/client/src/containers/Setup/WizardSetupSteps.js b/src/containers/Setup/WizardSetupSteps.js similarity index 100% rename from client/src/containers/Setup/WizardSetupSteps.js rename to src/containers/Setup/WizardSetupSteps.js diff --git a/client/src/containers/Setup/WorkflowIcon.js b/src/containers/Setup/WorkflowIcon.js similarity index 100% rename from client/src/containers/Setup/WorkflowIcon.js rename to src/containers/Setup/WorkflowIcon.js diff --git a/client/src/containers/Subscriptions/BillingForm.js b/src/containers/Subscriptions/BillingForm.js similarity index 100% rename from client/src/containers/Subscriptions/BillingForm.js rename to src/containers/Subscriptions/BillingForm.js diff --git a/client/src/containers/Subscriptions/BillingPeriod.js b/src/containers/Subscriptions/BillingPeriod.js similarity index 100% rename from client/src/containers/Subscriptions/BillingPeriod.js rename to src/containers/Subscriptions/BillingPeriod.js diff --git a/client/src/containers/Subscriptions/BillingPeriodsInput.js b/src/containers/Subscriptions/BillingPeriodsInput.js similarity index 100% rename from client/src/containers/Subscriptions/BillingPeriodsInput.js rename to src/containers/Subscriptions/BillingPeriodsInput.js diff --git a/client/src/containers/Subscriptions/BillingPlan.js b/src/containers/Subscriptions/BillingPlan.js similarity index 100% rename from client/src/containers/Subscriptions/BillingPlan.js rename to src/containers/Subscriptions/BillingPlan.js diff --git a/client/src/containers/Subscriptions/BillingPlansForm.js b/src/containers/Subscriptions/BillingPlansForm.js similarity index 100% rename from client/src/containers/Subscriptions/BillingPlansForm.js rename to src/containers/Subscriptions/BillingPlansForm.js diff --git a/client/src/containers/Subscriptions/BillingPlansInput.js b/src/containers/Subscriptions/BillingPlansInput.js similarity index 100% rename from client/src/containers/Subscriptions/BillingPlansInput.js rename to src/containers/Subscriptions/BillingPlansInput.js diff --git a/client/src/containers/Subscriptions/BillingTab.js b/src/containers/Subscriptions/BillingTab.js similarity index 100% rename from client/src/containers/Subscriptions/BillingTab.js rename to src/containers/Subscriptions/BillingTab.js diff --git a/client/src/containers/Subscriptions/LicenseTab.js b/src/containers/Subscriptions/LicenseTab.js similarity index 100% rename from client/src/containers/Subscriptions/LicenseTab.js rename to src/containers/Subscriptions/LicenseTab.js diff --git a/client/src/containers/Subscriptions/SubscriptionTabs.js b/src/containers/Subscriptions/SubscriptionTabs.js similarity index 100% rename from client/src/containers/Subscriptions/SubscriptionTabs.js rename to src/containers/Subscriptions/SubscriptionTabs.js diff --git a/client/src/containers/Subscriptions/billingPaymentmethod.js b/src/containers/Subscriptions/billingPaymentmethod.js similarity index 100% rename from client/src/containers/Subscriptions/billingPaymentmethod.js rename to src/containers/Subscriptions/billingPaymentmethod.js diff --git a/client/src/containers/Subscriptions/utils.js b/src/containers/Subscriptions/utils.js similarity index 100% rename from client/src/containers/Subscriptions/utils.js rename to src/containers/Subscriptions/utils.js diff --git a/client/src/containers/Subscriptions/withBillingActions.js b/src/containers/Subscriptions/withBillingActions.js similarity index 100% rename from client/src/containers/Subscriptions/withBillingActions.js rename to src/containers/Subscriptions/withBillingActions.js diff --git a/client/src/containers/Subscriptions/withPlan.js b/src/containers/Subscriptions/withPlan.js similarity index 100% rename from client/src/containers/Subscriptions/withPlan.js rename to src/containers/Subscriptions/withPlan.js diff --git a/client/src/containers/Subscriptions/withPlans.js b/src/containers/Subscriptions/withPlans.js similarity index 100% rename from client/src/containers/Subscriptions/withPlans.js rename to src/containers/Subscriptions/withPlans.js diff --git a/client/src/containers/Subscriptions/withSubscriptionPlansActions.js b/src/containers/Subscriptions/withSubscriptionPlansActions.js similarity index 100% rename from client/src/containers/Subscriptions/withSubscriptionPlansActions.js rename to src/containers/Subscriptions/withSubscriptionPlansActions.js diff --git a/client/src/containers/Subscriptions/withSubscriptions.js b/src/containers/Subscriptions/withSubscriptions.js similarity index 100% rename from client/src/containers/Subscriptions/withSubscriptions.js rename to src/containers/Subscriptions/withSubscriptions.js diff --git a/client/src/containers/Subscriptions/withSubscriptionsActions.js b/src/containers/Subscriptions/withSubscriptionsActions.js similarity index 100% rename from client/src/containers/Subscriptions/withSubscriptionsActions.js rename to src/containers/Subscriptions/withSubscriptionsActions.js diff --git a/client/src/containers/Subscriptions/withSubscriptionss.js b/src/containers/Subscriptions/withSubscriptionss.js similarity index 100% rename from client/src/containers/Subscriptions/withSubscriptionss.js rename to src/containers/Subscriptions/withSubscriptionss.js diff --git a/client/src/containers/UniversalSearch/DashboardUniversalSearch.js b/src/containers/UniversalSearch/DashboardUniversalSearch.js similarity index 100% rename from client/src/containers/UniversalSearch/DashboardUniversalSearch.js rename to src/containers/UniversalSearch/DashboardUniversalSearch.js diff --git a/client/src/containers/UniversalSearch/DashboardUniversalSearchBinds.js b/src/containers/UniversalSearch/DashboardUniversalSearchBinds.js similarity index 100% rename from client/src/containers/UniversalSearch/DashboardUniversalSearchBinds.js rename to src/containers/UniversalSearch/DashboardUniversalSearchBinds.js diff --git a/client/src/containers/UniversalSearch/DashboardUniversalSearchHotkeys.js b/src/containers/UniversalSearch/DashboardUniversalSearchHotkeys.js similarity index 100% rename from client/src/containers/UniversalSearch/DashboardUniversalSearchHotkeys.js rename to src/containers/UniversalSearch/DashboardUniversalSearchHotkeys.js diff --git a/client/src/containers/UniversalSearch/DashboardUniversalSearchItemActions.js b/src/containers/UniversalSearch/DashboardUniversalSearchItemActions.js similarity index 100% rename from client/src/containers/UniversalSearch/DashboardUniversalSearchItemActions.js rename to src/containers/UniversalSearch/DashboardUniversalSearchItemActions.js diff --git a/client/src/containers/UniversalSearch/components.js b/src/containers/UniversalSearch/components.js similarity index 100% rename from client/src/containers/UniversalSearch/components.js rename to src/containers/UniversalSearch/components.js diff --git a/client/src/containers/UniversalSearch/utils.js b/src/containers/UniversalSearch/utils.js similarity index 100% rename from client/src/containers/UniversalSearch/utils.js rename to src/containers/UniversalSearch/utils.js diff --git a/client/src/containers/UniversalSearch/withUniversalSearch.js b/src/containers/UniversalSearch/withUniversalSearch.js similarity index 100% rename from client/src/containers/UniversalSearch/withUniversalSearch.js rename to src/containers/UniversalSearch/withUniversalSearch.js diff --git a/client/src/containers/UniversalSearch/withUniversalSearchActions.js b/src/containers/UniversalSearch/withUniversalSearchActions.js similarity index 100% rename from client/src/containers/UniversalSearch/withUniversalSearchActions.js rename to src/containers/UniversalSearch/withUniversalSearchActions.js diff --git a/client/src/containers/Users/withUsers.js b/src/containers/Users/withUsers.js similarity index 100% rename from client/src/containers/Users/withUsers.js rename to src/containers/Users/withUsers.js diff --git a/client/src/containers/Users/withUsersActions.js b/src/containers/Users/withUsersActions.js similarity index 100% rename from client/src/containers/Users/withUsersActions.js rename to src/containers/Users/withUsersActions.js diff --git a/client/src/containers/Vendors/VendorForm/VendorAttahmentTab.js b/src/containers/Vendors/VendorForm/VendorAttahmentTab.js similarity index 100% rename from client/src/containers/Vendors/VendorForm/VendorAttahmentTab.js rename to src/containers/Vendors/VendorForm/VendorAttahmentTab.js diff --git a/client/src/containers/Vendors/VendorForm/VendorFinanicalPanelTab.js b/src/containers/Vendors/VendorForm/VendorFinanicalPanelTab.js similarity index 100% rename from client/src/containers/Vendors/VendorForm/VendorFinanicalPanelTab.js rename to src/containers/Vendors/VendorForm/VendorFinanicalPanelTab.js diff --git a/client/src/containers/Vendors/VendorForm/VendorFloatingActions.js b/src/containers/Vendors/VendorForm/VendorFloatingActions.js similarity index 100% rename from client/src/containers/Vendors/VendorForm/VendorFloatingActions.js rename to src/containers/Vendors/VendorForm/VendorFloatingActions.js diff --git a/client/src/containers/Vendors/VendorForm/VendorForm.js b/src/containers/Vendors/VendorForm/VendorForm.js similarity index 100% rename from client/src/containers/Vendors/VendorForm/VendorForm.js rename to src/containers/Vendors/VendorForm/VendorForm.js diff --git a/client/src/containers/Vendors/VendorForm/VendorForm.schema.js b/src/containers/Vendors/VendorForm/VendorForm.schema.js similarity index 100% rename from client/src/containers/Vendors/VendorForm/VendorForm.schema.js rename to src/containers/Vendors/VendorForm/VendorForm.schema.js diff --git a/client/src/containers/Vendors/VendorForm/VendorFormAfterPrimarySection.js b/src/containers/Vendors/VendorForm/VendorFormAfterPrimarySection.js similarity index 100% rename from client/src/containers/Vendors/VendorForm/VendorFormAfterPrimarySection.js rename to src/containers/Vendors/VendorForm/VendorFormAfterPrimarySection.js diff --git a/client/src/containers/Vendors/VendorForm/VendorFormPage.js b/src/containers/Vendors/VendorForm/VendorFormPage.js similarity index 100% rename from client/src/containers/Vendors/VendorForm/VendorFormPage.js rename to src/containers/Vendors/VendorForm/VendorFormPage.js diff --git a/client/src/containers/Vendors/VendorForm/VendorFormPrimarySection.js b/src/containers/Vendors/VendorForm/VendorFormPrimarySection.js similarity index 100% rename from client/src/containers/Vendors/VendorForm/VendorFormPrimarySection.js rename to src/containers/Vendors/VendorForm/VendorFormPrimarySection.js diff --git a/client/src/containers/Vendors/VendorForm/VendorFormProvider.js b/src/containers/Vendors/VendorForm/VendorFormProvider.js similarity index 100% rename from client/src/containers/Vendors/VendorForm/VendorFormProvider.js rename to src/containers/Vendors/VendorForm/VendorFormProvider.js diff --git a/client/src/containers/Vendors/VendorForm/VendorsTabs.js b/src/containers/Vendors/VendorForm/VendorsTabs.js similarity index 100% rename from client/src/containers/Vendors/VendorForm/VendorsTabs.js rename to src/containers/Vendors/VendorForm/VendorsTabs.js diff --git a/client/src/containers/Vendors/VendorsAlerts.js b/src/containers/Vendors/VendorsAlerts.js similarity index 100% rename from client/src/containers/Vendors/VendorsAlerts.js rename to src/containers/Vendors/VendorsAlerts.js diff --git a/client/src/containers/Vendors/VendorsLanding/VendorActionsBar.js b/src/containers/Vendors/VendorsLanding/VendorActionsBar.js similarity index 100% rename from client/src/containers/Vendors/VendorsLanding/VendorActionsBar.js rename to src/containers/Vendors/VendorsLanding/VendorActionsBar.js diff --git a/client/src/containers/Vendors/VendorsLanding/VendorViewsTabs.js b/src/containers/Vendors/VendorsLanding/VendorViewsTabs.js similarity index 100% rename from client/src/containers/Vendors/VendorsLanding/VendorViewsTabs.js rename to src/containers/Vendors/VendorsLanding/VendorViewsTabs.js diff --git a/client/src/containers/Vendors/VendorsLanding/VendorsEmptyStatus.js b/src/containers/Vendors/VendorsLanding/VendorsEmptyStatus.js similarity index 100% rename from client/src/containers/Vendors/VendorsLanding/VendorsEmptyStatus.js rename to src/containers/Vendors/VendorsLanding/VendorsEmptyStatus.js diff --git a/client/src/containers/Vendors/VendorsLanding/VendorsList.js b/src/containers/Vendors/VendorsLanding/VendorsList.js similarity index 100% rename from client/src/containers/Vendors/VendorsLanding/VendorsList.js rename to src/containers/Vendors/VendorsLanding/VendorsList.js diff --git a/client/src/containers/Vendors/VendorsLanding/VendorsListProvider.js b/src/containers/Vendors/VendorsLanding/VendorsListProvider.js similarity index 100% rename from client/src/containers/Vendors/VendorsLanding/VendorsListProvider.js rename to src/containers/Vendors/VendorsLanding/VendorsListProvider.js diff --git a/client/src/containers/Vendors/VendorsLanding/VendorsTable.js b/src/containers/Vendors/VendorsLanding/VendorsTable.js similarity index 100% rename from client/src/containers/Vendors/VendorsLanding/VendorsTable.js rename to src/containers/Vendors/VendorsLanding/VendorsTable.js diff --git a/client/src/containers/Vendors/VendorsLanding/components.js b/src/containers/Vendors/VendorsLanding/components.js similarity index 100% rename from client/src/containers/Vendors/VendorsLanding/components.js rename to src/containers/Vendors/VendorsLanding/components.js diff --git a/client/src/containers/Vendors/VendorsLanding/utils.js b/src/containers/Vendors/VendorsLanding/utils.js similarity index 100% rename from client/src/containers/Vendors/VendorsLanding/utils.js rename to src/containers/Vendors/VendorsLanding/utils.js diff --git a/client/src/containers/Vendors/VendorsLanding/withVendors.js b/src/containers/Vendors/VendorsLanding/withVendors.js similarity index 100% rename from client/src/containers/Vendors/VendorsLanding/withVendors.js rename to src/containers/Vendors/VendorsLanding/withVendors.js diff --git a/client/src/containers/Vendors/VendorsLanding/withVendorsActions.js b/src/containers/Vendors/VendorsLanding/withVendorsActions.js similarity index 100% rename from client/src/containers/Vendors/VendorsLanding/withVendorsActions.js rename to src/containers/Vendors/VendorsLanding/withVendorsActions.js diff --git a/client/src/containers/Vendors/VendorsUniversalSearch.js b/src/containers/Vendors/VendorsUniversalSearch.js similarity index 100% rename from client/src/containers/Vendors/VendorsUniversalSearch.js rename to src/containers/Vendors/VendorsUniversalSearch.js diff --git a/client/src/containers/Vendors/utils.js b/src/containers/Vendors/utils.js similarity index 100% rename from client/src/containers/Vendors/utils.js rename to src/containers/Vendors/utils.js diff --git a/client/src/containers/Vendors/withVendorDetail.js b/src/containers/Vendors/withVendorDetail.js similarity index 100% rename from client/src/containers/Vendors/withVendorDetail.js rename to src/containers/Vendors/withVendorDetail.js diff --git a/client/src/containers/Views/ViewForm.container.js b/src/containers/Views/ViewForm.container.js similarity index 100% rename from client/src/containers/Views/ViewForm.container.js rename to src/containers/Views/ViewForm.container.js diff --git a/client/src/containers/Views/ViewForm.js b/src/containers/Views/ViewForm.js similarity index 100% rename from client/src/containers/Views/ViewForm.js rename to src/containers/Views/ViewForm.js diff --git a/client/src/containers/Views/ViewFormPage.js b/src/containers/Views/ViewFormPage.js similarity index 100% rename from client/src/containers/Views/ViewFormPage.js rename to src/containers/Views/ViewFormPage.js diff --git a/client/src/containers/Views/withCurrentView.js b/src/containers/Views/withCurrentView.js similarity index 100% rename from client/src/containers/Views/withCurrentView.js rename to src/containers/Views/withCurrentView.js diff --git a/client/src/containers/Views/withViewDetails.js b/src/containers/Views/withViewDetails.js similarity index 100% rename from client/src/containers/Views/withViewDetails.js rename to src/containers/Views/withViewDetails.js diff --git a/client/src/containers/Views/withViews.js b/src/containers/Views/withViews.js similarity index 100% rename from client/src/containers/Views/withViews.js rename to src/containers/Views/withViews.js diff --git a/client/src/containers/Views/withViewsActions.js b/src/containers/Views/withViewsActions.js similarity index 100% rename from client/src/containers/Views/withViewsActions.js rename to src/containers/Views/withViewsActions.js diff --git a/client/src/hooks/async.js b/src/hooks/async.js similarity index 100% rename from client/src/hooks/async.js rename to src/hooks/async.js diff --git a/client/src/hooks/index.js b/src/hooks/index.js similarity index 100% rename from client/src/hooks/index.js rename to src/hooks/index.js diff --git a/client/src/hooks/query/GenericResource/index.js b/src/hooks/query/GenericResource/index.js similarity index 100% rename from client/src/hooks/query/GenericResource/index.js rename to src/hooks/query/GenericResource/index.js diff --git a/client/src/hooks/query/UniversalSearch/UniversalSearch.js b/src/hooks/query/UniversalSearch/UniversalSearch.js similarity index 100% rename from client/src/hooks/query/UniversalSearch/UniversalSearch.js rename to src/hooks/query/UniversalSearch/UniversalSearch.js diff --git a/client/src/hooks/query/accounts.js b/src/hooks/query/accounts.js similarity index 100% rename from client/src/hooks/query/accounts.js rename to src/hooks/query/accounts.js diff --git a/client/src/hooks/query/authentication.js b/src/hooks/query/authentication.js similarity index 100% rename from client/src/hooks/query/authentication.js rename to src/hooks/query/authentication.js diff --git a/client/src/hooks/query/base.js b/src/hooks/query/base.js similarity index 100% rename from client/src/hooks/query/base.js rename to src/hooks/query/base.js diff --git a/client/src/hooks/query/bills.js b/src/hooks/query/bills.js similarity index 100% rename from client/src/hooks/query/bills.js rename to src/hooks/query/bills.js diff --git a/client/src/hooks/query/contacts.js b/src/hooks/query/contacts.js similarity index 100% rename from client/src/hooks/query/contacts.js rename to src/hooks/query/contacts.js diff --git a/client/src/hooks/query/currencies.js b/src/hooks/query/currencies.js similarity index 100% rename from client/src/hooks/query/currencies.js rename to src/hooks/query/currencies.js diff --git a/client/src/hooks/query/customers.js b/src/hooks/query/customers.js similarity index 100% rename from client/src/hooks/query/customers.js rename to src/hooks/query/customers.js diff --git a/client/src/hooks/query/estimates.js b/src/hooks/query/estimates.js similarity index 100% rename from client/src/hooks/query/estimates.js rename to src/hooks/query/estimates.js diff --git a/client/src/hooks/query/exchangeRates.js b/src/hooks/query/exchangeRates.js similarity index 100% rename from client/src/hooks/query/exchangeRates.js rename to src/hooks/query/exchangeRates.js diff --git a/client/src/hooks/query/expenses.js b/src/hooks/query/expenses.js similarity index 100% rename from client/src/hooks/query/expenses.js rename to src/hooks/query/expenses.js diff --git a/client/src/hooks/query/financialReports.js b/src/hooks/query/financialReports.js similarity index 100% rename from client/src/hooks/query/financialReports.js rename to src/hooks/query/financialReports.js diff --git a/client/src/hooks/query/index.js b/src/hooks/query/index.js similarity index 100% rename from client/src/hooks/query/index.js rename to src/hooks/query/index.js diff --git a/client/src/hooks/query/inventoryAdjustments.js b/src/hooks/query/inventoryAdjustments.js similarity index 100% rename from client/src/hooks/query/inventoryAdjustments.js rename to src/hooks/query/inventoryAdjustments.js diff --git a/client/src/hooks/query/invite.js b/src/hooks/query/invite.js similarity index 100% rename from client/src/hooks/query/invite.js rename to src/hooks/query/invite.js diff --git a/client/src/hooks/query/invoices.js b/src/hooks/query/invoices.js similarity index 100% rename from client/src/hooks/query/invoices.js rename to src/hooks/query/invoices.js diff --git a/client/src/hooks/query/items.js b/src/hooks/query/items.js similarity index 100% rename from client/src/hooks/query/items.js rename to src/hooks/query/items.js diff --git a/client/src/hooks/query/itemsCategories.js b/src/hooks/query/itemsCategories.js similarity index 100% rename from client/src/hooks/query/itemsCategories.js rename to src/hooks/query/itemsCategories.js diff --git a/client/src/hooks/query/jobs.js b/src/hooks/query/jobs.js similarity index 100% rename from client/src/hooks/query/jobs.js rename to src/hooks/query/jobs.js diff --git a/client/src/hooks/query/landedCost.js b/src/hooks/query/landedCost.js similarity index 100% rename from client/src/hooks/query/landedCost.js rename to src/hooks/query/landedCost.js diff --git a/client/src/hooks/query/manualJournals.js b/src/hooks/query/manualJournals.js similarity index 100% rename from client/src/hooks/query/manualJournals.js rename to src/hooks/query/manualJournals.js diff --git a/client/src/hooks/query/misc.js b/src/hooks/query/misc.js similarity index 100% rename from client/src/hooks/query/misc.js rename to src/hooks/query/misc.js diff --git a/client/src/hooks/query/organization.js b/src/hooks/query/organization.js similarity index 100% rename from client/src/hooks/query/organization.js rename to src/hooks/query/organization.js diff --git a/client/src/hooks/query/paymentMades.js b/src/hooks/query/paymentMades.js similarity index 100% rename from client/src/hooks/query/paymentMades.js rename to src/hooks/query/paymentMades.js diff --git a/client/src/hooks/query/paymentReceives.js b/src/hooks/query/paymentReceives.js similarity index 100% rename from client/src/hooks/query/paymentReceives.js rename to src/hooks/query/paymentReceives.js diff --git a/client/src/hooks/query/receipts.js b/src/hooks/query/receipts.js similarity index 100% rename from client/src/hooks/query/receipts.js rename to src/hooks/query/receipts.js diff --git a/client/src/hooks/query/settings.js b/src/hooks/query/settings.js similarity index 100% rename from client/src/hooks/query/settings.js rename to src/hooks/query/settings.js diff --git a/client/src/hooks/query/subscriptions.js b/src/hooks/query/subscriptions.js similarity index 100% rename from client/src/hooks/query/subscriptions.js rename to src/hooks/query/subscriptions.js diff --git a/client/src/hooks/query/types.js b/src/hooks/query/types.js similarity index 100% rename from client/src/hooks/query/types.js rename to src/hooks/query/types.js diff --git a/client/src/hooks/query/users.js b/src/hooks/query/users.js similarity index 100% rename from client/src/hooks/query/users.js rename to src/hooks/query/users.js diff --git a/client/src/hooks/query/vendors.js b/src/hooks/query/vendors.js similarity index 100% rename from client/src/hooks/query/vendors.js rename to src/hooks/query/vendors.js diff --git a/client/src/hooks/query/views.js b/src/hooks/query/views.js similarity index 100% rename from client/src/hooks/query/views.js rename to src/hooks/query/views.js diff --git a/client/src/hooks/stackableState.js b/src/hooks/stackableState.js similarity index 100% rename from client/src/hooks/stackableState.js rename to src/hooks/stackableState.js diff --git a/client/src/hooks/state/authentication.js b/src/hooks/state/authentication.js similarity index 100% rename from client/src/hooks/state/authentication.js rename to src/hooks/state/authentication.js diff --git a/client/src/hooks/state/dashboard.js b/src/hooks/state/dashboard.js similarity index 100% rename from client/src/hooks/state/dashboard.js rename to src/hooks/state/dashboard.js diff --git a/client/src/hooks/state/globalErrors.js b/src/hooks/state/globalErrors.js similarity index 100% rename from client/src/hooks/state/globalErrors.js rename to src/hooks/state/globalErrors.js diff --git a/client/src/hooks/state/index.js b/src/hooks/state/index.js similarity index 100% rename from client/src/hooks/state/index.js rename to src/hooks/state/index.js diff --git a/client/src/hooks/state/organizations.js b/src/hooks/state/organizations.js similarity index 100% rename from client/src/hooks/state/organizations.js rename to src/hooks/state/organizations.js diff --git a/client/src/hooks/state/settings.js b/src/hooks/state/settings.js similarity index 100% rename from client/src/hooks/state/settings.js rename to src/hooks/state/settings.js diff --git a/client/src/hooks/state/subscriptions.js b/src/hooks/state/subscriptions.js similarity index 100% rename from client/src/hooks/state/subscriptions.js rename to src/hooks/state/subscriptions.js diff --git a/client/src/hooks/useAppRoutes.js b/src/hooks/useAppRoutes.js similarity index 100% rename from client/src/hooks/useAppRoutes.js rename to src/hooks/useAppRoutes.js diff --git a/client/src/hooks/useAutofocus.js b/src/hooks/useAutofocus.js similarity index 100% rename from client/src/hooks/useAutofocus.js rename to src/hooks/useAutofocus.js diff --git a/client/src/hooks/useMedia.js b/src/hooks/useMedia.js similarity index 100% rename from client/src/hooks/useMedia.js rename to src/hooks/useMedia.js diff --git a/client/src/hooks/useQueryRequest.js b/src/hooks/useQueryRequest.js similarity index 100% rename from client/src/hooks/useQueryRequest.js rename to src/hooks/useQueryRequest.js diff --git a/client/src/hooks/useRequest.js b/src/hooks/useRequest.js similarity index 100% rename from client/src/hooks/useRequest.js rename to src/hooks/useRequest.js diff --git a/client/src/hooks/useRequestPdf.js b/src/hooks/useRequestPdf.js similarity index 100% rename from client/src/hooks/useRequestPdf.js rename to src/hooks/useRequestPdf.js diff --git a/client/src/index.js b/src/index.js similarity index 100% rename from client/src/index.js rename to src/index.js diff --git a/client/src/lang/ar/index.json b/src/lang/ar/index.json similarity index 100% rename from client/src/lang/ar/index.json rename to src/lang/ar/index.json diff --git a/client/src/lang/ar/locale.js b/src/lang/ar/locale.js similarity index 100% rename from client/src/lang/ar/locale.js rename to src/lang/ar/locale.js diff --git a/client/src/lang/en/authentication.js b/src/lang/en/authentication.js similarity index 100% rename from client/src/lang/en/authentication.js rename to src/lang/en/authentication.js diff --git a/client/src/lang/en/index.json b/src/lang/en/index.json similarity index 100% rename from client/src/lang/en/index.json rename to src/lang/en/index.json diff --git a/client/src/lang/en/locale.js b/src/lang/en/locale.js similarity index 100% rename from client/src/lang/en/locale.js rename to src/lang/en/locale.js diff --git a/client/src/lang/printValue.js b/src/lang/printValue.js similarity index 100% rename from client/src/lang/printValue.js rename to src/lang/printValue.js diff --git a/client/src/logo.svg b/src/logo.svg similarity index 100% rename from client/src/logo.svg rename to src/logo.svg diff --git a/client/src/middleware/logger.js b/src/middleware/logger.js similarity index 100% rename from client/src/middleware/logger.js rename to src/middleware/logger.js diff --git a/client/src/routes/authentication.js b/src/routes/authentication.js similarity index 100% rename from client/src/routes/authentication.js rename to src/routes/authentication.js diff --git a/client/src/routes/dashboard.js b/src/routes/dashboard.js similarity index 100% rename from client/src/routes/dashboard.js rename to src/routes/dashboard.js diff --git a/client/src/routes/preferences.js b/src/routes/preferences.js similarity index 100% rename from client/src/routes/preferences.js rename to src/routes/preferences.js diff --git a/client/src/routes/preferencesTabs.js b/src/routes/preferencesTabs.js similarity index 100% rename from client/src/routes/preferencesTabs.js rename to src/routes/preferencesTabs.js diff --git a/client/src/routes/register.js b/src/routes/register.js similarity index 100% rename from client/src/routes/register.js rename to src/routes/register.js diff --git a/client/src/serviceWorker.js b/src/serviceWorker.js similarity index 100% rename from client/src/serviceWorker.js rename to src/serviceWorker.js diff --git a/client/src/services/ApiService.js b/src/services/ApiService.js similarity index 100% rename from client/src/services/ApiService.js rename to src/services/ApiService.js diff --git a/client/src/services/NamedRoutes.js b/src/services/NamedRoutes.js similarity index 100% rename from client/src/services/NamedRoutes.js rename to src/services/NamedRoutes.js diff --git a/client/src/services/RemoteDataBinding.js b/src/services/RemoteDataBinding.js similarity index 100% rename from client/src/services/RemoteDataBinding.js rename to src/services/RemoteDataBinding.js diff --git a/client/src/services/axios.js b/src/services/axios.js similarity index 100% rename from client/src/services/axios.js rename to src/services/axios.js diff --git a/client/src/services/yup.js b/src/services/yup.js similarity index 100% rename from client/src/services/yup.js rename to src/services/yup.js diff --git a/client/src/setupTests.js b/src/setupTests.js similarity index 100% rename from client/src/setupTests.js rename to src/setupTests.js diff --git a/client/src/static/icons/brands/500px.svg b/src/static/icons/brands/500px.svg similarity index 100% rename from client/src/static/icons/brands/500px.svg rename to src/static/icons/brands/500px.svg diff --git a/client/src/static/icons/brands/accessible-icon.svg b/src/static/icons/brands/accessible-icon.svg similarity index 100% rename from client/src/static/icons/brands/accessible-icon.svg rename to src/static/icons/brands/accessible-icon.svg diff --git a/client/src/static/icons/brands/accusoft.svg b/src/static/icons/brands/accusoft.svg similarity index 100% rename from client/src/static/icons/brands/accusoft.svg rename to src/static/icons/brands/accusoft.svg diff --git a/client/src/static/icons/brands/acquisitions-incorporated.svg b/src/static/icons/brands/acquisitions-incorporated.svg similarity index 100% rename from client/src/static/icons/brands/acquisitions-incorporated.svg rename to src/static/icons/brands/acquisitions-incorporated.svg diff --git a/client/src/static/icons/brands/adn.svg b/src/static/icons/brands/adn.svg similarity index 100% rename from client/src/static/icons/brands/adn.svg rename to src/static/icons/brands/adn.svg diff --git a/client/src/static/icons/brands/adobe.svg b/src/static/icons/brands/adobe.svg similarity index 100% rename from client/src/static/icons/brands/adobe.svg rename to src/static/icons/brands/adobe.svg diff --git a/client/src/static/icons/brands/adversal.svg b/src/static/icons/brands/adversal.svg similarity index 100% rename from client/src/static/icons/brands/adversal.svg rename to src/static/icons/brands/adversal.svg diff --git a/client/src/static/icons/brands/affiliatetheme.svg b/src/static/icons/brands/affiliatetheme.svg similarity index 100% rename from client/src/static/icons/brands/affiliatetheme.svg rename to src/static/icons/brands/affiliatetheme.svg diff --git a/client/src/static/icons/brands/airbnb.svg b/src/static/icons/brands/airbnb.svg similarity index 100% rename from client/src/static/icons/brands/airbnb.svg rename to src/static/icons/brands/airbnb.svg diff --git a/client/src/static/icons/brands/algolia.svg b/src/static/icons/brands/algolia.svg similarity index 100% rename from client/src/static/icons/brands/algolia.svg rename to src/static/icons/brands/algolia.svg diff --git a/client/src/static/icons/brands/alipay.svg b/src/static/icons/brands/alipay.svg similarity index 100% rename from client/src/static/icons/brands/alipay.svg rename to src/static/icons/brands/alipay.svg diff --git a/client/src/static/icons/brands/amazon-pay.svg b/src/static/icons/brands/amazon-pay.svg similarity index 100% rename from client/src/static/icons/brands/amazon-pay.svg rename to src/static/icons/brands/amazon-pay.svg diff --git a/client/src/static/icons/brands/amazon.svg b/src/static/icons/brands/amazon.svg similarity index 100% rename from client/src/static/icons/brands/amazon.svg rename to src/static/icons/brands/amazon.svg diff --git a/client/src/static/icons/brands/amilia.svg b/src/static/icons/brands/amilia.svg similarity index 100% rename from client/src/static/icons/brands/amilia.svg rename to src/static/icons/brands/amilia.svg diff --git a/client/src/static/icons/brands/android.svg b/src/static/icons/brands/android.svg similarity index 100% rename from client/src/static/icons/brands/android.svg rename to src/static/icons/brands/android.svg diff --git a/client/src/static/icons/brands/angellist.svg b/src/static/icons/brands/angellist.svg similarity index 100% rename from client/src/static/icons/brands/angellist.svg rename to src/static/icons/brands/angellist.svg diff --git a/client/src/static/icons/brands/angrycreative.svg b/src/static/icons/brands/angrycreative.svg similarity index 100% rename from client/src/static/icons/brands/angrycreative.svg rename to src/static/icons/brands/angrycreative.svg diff --git a/client/src/static/icons/brands/angular.svg b/src/static/icons/brands/angular.svg similarity index 100% rename from client/src/static/icons/brands/angular.svg rename to src/static/icons/brands/angular.svg diff --git a/client/src/static/icons/brands/app-store-ios.svg b/src/static/icons/brands/app-store-ios.svg similarity index 100% rename from client/src/static/icons/brands/app-store-ios.svg rename to src/static/icons/brands/app-store-ios.svg diff --git a/client/src/static/icons/brands/app-store.svg b/src/static/icons/brands/app-store.svg similarity index 100% rename from client/src/static/icons/brands/app-store.svg rename to src/static/icons/brands/app-store.svg diff --git a/client/src/static/icons/brands/apper.svg b/src/static/icons/brands/apper.svg similarity index 100% rename from client/src/static/icons/brands/apper.svg rename to src/static/icons/brands/apper.svg diff --git a/client/src/static/icons/brands/apple-pay.svg b/src/static/icons/brands/apple-pay.svg similarity index 100% rename from client/src/static/icons/brands/apple-pay.svg rename to src/static/icons/brands/apple-pay.svg diff --git a/client/src/static/icons/brands/apple.svg b/src/static/icons/brands/apple.svg similarity index 100% rename from client/src/static/icons/brands/apple.svg rename to src/static/icons/brands/apple.svg diff --git a/client/src/static/icons/brands/artstation.svg b/src/static/icons/brands/artstation.svg similarity index 100% rename from client/src/static/icons/brands/artstation.svg rename to src/static/icons/brands/artstation.svg diff --git a/client/src/static/icons/brands/asymmetrik.svg b/src/static/icons/brands/asymmetrik.svg similarity index 100% rename from client/src/static/icons/brands/asymmetrik.svg rename to src/static/icons/brands/asymmetrik.svg diff --git a/client/src/static/icons/brands/atlassian.svg b/src/static/icons/brands/atlassian.svg similarity index 100% rename from client/src/static/icons/brands/atlassian.svg rename to src/static/icons/brands/atlassian.svg diff --git a/client/src/static/icons/brands/audible.svg b/src/static/icons/brands/audible.svg similarity index 100% rename from client/src/static/icons/brands/audible.svg rename to src/static/icons/brands/audible.svg diff --git a/client/src/static/icons/brands/autoprefixer.svg b/src/static/icons/brands/autoprefixer.svg similarity index 100% rename from client/src/static/icons/brands/autoprefixer.svg rename to src/static/icons/brands/autoprefixer.svg diff --git a/client/src/static/icons/brands/avianex.svg b/src/static/icons/brands/avianex.svg similarity index 100% rename from client/src/static/icons/brands/avianex.svg rename to src/static/icons/brands/avianex.svg diff --git a/client/src/static/icons/brands/aviato.svg b/src/static/icons/brands/aviato.svg similarity index 100% rename from client/src/static/icons/brands/aviato.svg rename to src/static/icons/brands/aviato.svg diff --git a/client/src/static/icons/brands/aws.svg b/src/static/icons/brands/aws.svg similarity index 100% rename from client/src/static/icons/brands/aws.svg rename to src/static/icons/brands/aws.svg diff --git a/client/src/static/icons/brands/bandcamp.svg b/src/static/icons/brands/bandcamp.svg similarity index 100% rename from client/src/static/icons/brands/bandcamp.svg rename to src/static/icons/brands/bandcamp.svg diff --git a/client/src/static/icons/brands/battle-net.svg b/src/static/icons/brands/battle-net.svg similarity index 100% rename from client/src/static/icons/brands/battle-net.svg rename to src/static/icons/brands/battle-net.svg diff --git a/client/src/static/icons/brands/behance-square.svg b/src/static/icons/brands/behance-square.svg similarity index 100% rename from client/src/static/icons/brands/behance-square.svg rename to src/static/icons/brands/behance-square.svg diff --git a/client/src/static/icons/brands/behance.svg b/src/static/icons/brands/behance.svg similarity index 100% rename from client/src/static/icons/brands/behance.svg rename to src/static/icons/brands/behance.svg diff --git a/client/src/static/icons/brands/bimobject.svg b/src/static/icons/brands/bimobject.svg similarity index 100% rename from client/src/static/icons/brands/bimobject.svg rename to src/static/icons/brands/bimobject.svg diff --git a/client/src/static/icons/brands/bitbucket.svg b/src/static/icons/brands/bitbucket.svg similarity index 100% rename from client/src/static/icons/brands/bitbucket.svg rename to src/static/icons/brands/bitbucket.svg diff --git a/client/src/static/icons/brands/bitcoin.svg b/src/static/icons/brands/bitcoin.svg similarity index 100% rename from client/src/static/icons/brands/bitcoin.svg rename to src/static/icons/brands/bitcoin.svg diff --git a/client/src/static/icons/brands/bity.svg b/src/static/icons/brands/bity.svg similarity index 100% rename from client/src/static/icons/brands/bity.svg rename to src/static/icons/brands/bity.svg diff --git a/client/src/static/icons/brands/black-tie.svg b/src/static/icons/brands/black-tie.svg similarity index 100% rename from client/src/static/icons/brands/black-tie.svg rename to src/static/icons/brands/black-tie.svg diff --git a/client/src/static/icons/brands/blackberry.svg b/src/static/icons/brands/blackberry.svg similarity index 100% rename from client/src/static/icons/brands/blackberry.svg rename to src/static/icons/brands/blackberry.svg diff --git a/client/src/static/icons/brands/blogger-b.svg b/src/static/icons/brands/blogger-b.svg similarity index 100% rename from client/src/static/icons/brands/blogger-b.svg rename to src/static/icons/brands/blogger-b.svg diff --git a/client/src/static/icons/brands/blogger.svg b/src/static/icons/brands/blogger.svg similarity index 100% rename from client/src/static/icons/brands/blogger.svg rename to src/static/icons/brands/blogger.svg diff --git a/client/src/static/icons/brands/bluetooth-b.svg b/src/static/icons/brands/bluetooth-b.svg similarity index 100% rename from client/src/static/icons/brands/bluetooth-b.svg rename to src/static/icons/brands/bluetooth-b.svg diff --git a/client/src/static/icons/brands/bluetooth.svg b/src/static/icons/brands/bluetooth.svg similarity index 100% rename from client/src/static/icons/brands/bluetooth.svg rename to src/static/icons/brands/bluetooth.svg diff --git a/client/src/static/icons/brands/bootstrap.svg b/src/static/icons/brands/bootstrap.svg similarity index 100% rename from client/src/static/icons/brands/bootstrap.svg rename to src/static/icons/brands/bootstrap.svg diff --git a/client/src/static/icons/brands/btc.svg b/src/static/icons/brands/btc.svg similarity index 100% rename from client/src/static/icons/brands/btc.svg rename to src/static/icons/brands/btc.svg diff --git a/client/src/static/icons/brands/buffer.svg b/src/static/icons/brands/buffer.svg similarity index 100% rename from client/src/static/icons/brands/buffer.svg rename to src/static/icons/brands/buffer.svg diff --git a/client/src/static/icons/brands/buromobelexperte.svg b/src/static/icons/brands/buromobelexperte.svg similarity index 100% rename from client/src/static/icons/brands/buromobelexperte.svg rename to src/static/icons/brands/buromobelexperte.svg diff --git a/client/src/static/icons/brands/buy-n-large.svg b/src/static/icons/brands/buy-n-large.svg similarity index 100% rename from client/src/static/icons/brands/buy-n-large.svg rename to src/static/icons/brands/buy-n-large.svg diff --git a/client/src/static/icons/brands/buysellads.svg b/src/static/icons/brands/buysellads.svg similarity index 100% rename from client/src/static/icons/brands/buysellads.svg rename to src/static/icons/brands/buysellads.svg diff --git a/client/src/static/icons/brands/canadian-maple-leaf.svg b/src/static/icons/brands/canadian-maple-leaf.svg similarity index 100% rename from client/src/static/icons/brands/canadian-maple-leaf.svg rename to src/static/icons/brands/canadian-maple-leaf.svg diff --git a/client/src/static/icons/brands/cc-amazon-pay.svg b/src/static/icons/brands/cc-amazon-pay.svg similarity index 100% rename from client/src/static/icons/brands/cc-amazon-pay.svg rename to src/static/icons/brands/cc-amazon-pay.svg diff --git a/client/src/static/icons/brands/cc-amex.svg b/src/static/icons/brands/cc-amex.svg similarity index 100% rename from client/src/static/icons/brands/cc-amex.svg rename to src/static/icons/brands/cc-amex.svg diff --git a/client/src/static/icons/brands/cc-apple-pay.svg b/src/static/icons/brands/cc-apple-pay.svg similarity index 100% rename from client/src/static/icons/brands/cc-apple-pay.svg rename to src/static/icons/brands/cc-apple-pay.svg diff --git a/client/src/static/icons/brands/cc-diners-club.svg b/src/static/icons/brands/cc-diners-club.svg similarity index 100% rename from client/src/static/icons/brands/cc-diners-club.svg rename to src/static/icons/brands/cc-diners-club.svg diff --git a/client/src/static/icons/brands/cc-discover.svg b/src/static/icons/brands/cc-discover.svg similarity index 100% rename from client/src/static/icons/brands/cc-discover.svg rename to src/static/icons/brands/cc-discover.svg diff --git a/client/src/static/icons/brands/cc-jcb.svg b/src/static/icons/brands/cc-jcb.svg similarity index 100% rename from client/src/static/icons/brands/cc-jcb.svg rename to src/static/icons/brands/cc-jcb.svg diff --git a/client/src/static/icons/brands/cc-mastercard.svg b/src/static/icons/brands/cc-mastercard.svg similarity index 100% rename from client/src/static/icons/brands/cc-mastercard.svg rename to src/static/icons/brands/cc-mastercard.svg diff --git a/client/src/static/icons/brands/cc-paypal.svg b/src/static/icons/brands/cc-paypal.svg similarity index 100% rename from client/src/static/icons/brands/cc-paypal.svg rename to src/static/icons/brands/cc-paypal.svg diff --git a/client/src/static/icons/brands/cc-stripe.svg b/src/static/icons/brands/cc-stripe.svg similarity index 100% rename from client/src/static/icons/brands/cc-stripe.svg rename to src/static/icons/brands/cc-stripe.svg diff --git a/client/src/static/icons/brands/cc-visa.svg b/src/static/icons/brands/cc-visa.svg similarity index 100% rename from client/src/static/icons/brands/cc-visa.svg rename to src/static/icons/brands/cc-visa.svg diff --git a/client/src/static/icons/brands/centercode.svg b/src/static/icons/brands/centercode.svg similarity index 100% rename from client/src/static/icons/brands/centercode.svg rename to src/static/icons/brands/centercode.svg diff --git a/client/src/static/icons/brands/centos.svg b/src/static/icons/brands/centos.svg similarity index 100% rename from client/src/static/icons/brands/centos.svg rename to src/static/icons/brands/centos.svg diff --git a/client/src/static/icons/brands/chrome.svg b/src/static/icons/brands/chrome.svg similarity index 100% rename from client/src/static/icons/brands/chrome.svg rename to src/static/icons/brands/chrome.svg diff --git a/client/src/static/icons/brands/chromecast.svg b/src/static/icons/brands/chromecast.svg similarity index 100% rename from client/src/static/icons/brands/chromecast.svg rename to src/static/icons/brands/chromecast.svg diff --git a/client/src/static/icons/brands/cloudscale.svg b/src/static/icons/brands/cloudscale.svg similarity index 100% rename from client/src/static/icons/brands/cloudscale.svg rename to src/static/icons/brands/cloudscale.svg diff --git a/client/src/static/icons/brands/cloudsmith.svg b/src/static/icons/brands/cloudsmith.svg similarity index 100% rename from client/src/static/icons/brands/cloudsmith.svg rename to src/static/icons/brands/cloudsmith.svg diff --git a/client/src/static/icons/brands/cloudversify.svg b/src/static/icons/brands/cloudversify.svg similarity index 100% rename from client/src/static/icons/brands/cloudversify.svg rename to src/static/icons/brands/cloudversify.svg diff --git a/client/src/static/icons/brands/codepen.svg b/src/static/icons/brands/codepen.svg similarity index 100% rename from client/src/static/icons/brands/codepen.svg rename to src/static/icons/brands/codepen.svg diff --git a/client/src/static/icons/brands/codiepie.svg b/src/static/icons/brands/codiepie.svg similarity index 100% rename from client/src/static/icons/brands/codiepie.svg rename to src/static/icons/brands/codiepie.svg diff --git a/client/src/static/icons/brands/confluence.svg b/src/static/icons/brands/confluence.svg similarity index 100% rename from client/src/static/icons/brands/confluence.svg rename to src/static/icons/brands/confluence.svg diff --git a/client/src/static/icons/brands/connectdevelop.svg b/src/static/icons/brands/connectdevelop.svg similarity index 100% rename from client/src/static/icons/brands/connectdevelop.svg rename to src/static/icons/brands/connectdevelop.svg diff --git a/client/src/static/icons/brands/contao.svg b/src/static/icons/brands/contao.svg similarity index 100% rename from client/src/static/icons/brands/contao.svg rename to src/static/icons/brands/contao.svg diff --git a/client/src/static/icons/brands/cotton-bureau.svg b/src/static/icons/brands/cotton-bureau.svg similarity index 100% rename from client/src/static/icons/brands/cotton-bureau.svg rename to src/static/icons/brands/cotton-bureau.svg diff --git a/client/src/static/icons/brands/cpanel.svg b/src/static/icons/brands/cpanel.svg similarity index 100% rename from client/src/static/icons/brands/cpanel.svg rename to src/static/icons/brands/cpanel.svg diff --git a/client/src/static/icons/brands/creative-commons-by.svg b/src/static/icons/brands/creative-commons-by.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-by.svg rename to src/static/icons/brands/creative-commons-by.svg diff --git a/client/src/static/icons/brands/creative-commons-nc-eu.svg b/src/static/icons/brands/creative-commons-nc-eu.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-nc-eu.svg rename to src/static/icons/brands/creative-commons-nc-eu.svg diff --git a/client/src/static/icons/brands/creative-commons-nc-jp.svg b/src/static/icons/brands/creative-commons-nc-jp.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-nc-jp.svg rename to src/static/icons/brands/creative-commons-nc-jp.svg diff --git a/client/src/static/icons/brands/creative-commons-nc.svg b/src/static/icons/brands/creative-commons-nc.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-nc.svg rename to src/static/icons/brands/creative-commons-nc.svg diff --git a/client/src/static/icons/brands/creative-commons-nd.svg b/src/static/icons/brands/creative-commons-nd.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-nd.svg rename to src/static/icons/brands/creative-commons-nd.svg diff --git a/client/src/static/icons/brands/creative-commons-pd-alt.svg b/src/static/icons/brands/creative-commons-pd-alt.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-pd-alt.svg rename to src/static/icons/brands/creative-commons-pd-alt.svg diff --git a/client/src/static/icons/brands/creative-commons-pd.svg b/src/static/icons/brands/creative-commons-pd.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-pd.svg rename to src/static/icons/brands/creative-commons-pd.svg diff --git a/client/src/static/icons/brands/creative-commons-remix.svg b/src/static/icons/brands/creative-commons-remix.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-remix.svg rename to src/static/icons/brands/creative-commons-remix.svg diff --git a/client/src/static/icons/brands/creative-commons-sa.svg b/src/static/icons/brands/creative-commons-sa.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-sa.svg rename to src/static/icons/brands/creative-commons-sa.svg diff --git a/client/src/static/icons/brands/creative-commons-sampling-plus.svg b/src/static/icons/brands/creative-commons-sampling-plus.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-sampling-plus.svg rename to src/static/icons/brands/creative-commons-sampling-plus.svg diff --git a/client/src/static/icons/brands/creative-commons-sampling.svg b/src/static/icons/brands/creative-commons-sampling.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-sampling.svg rename to src/static/icons/brands/creative-commons-sampling.svg diff --git a/client/src/static/icons/brands/creative-commons-share.svg b/src/static/icons/brands/creative-commons-share.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-share.svg rename to src/static/icons/brands/creative-commons-share.svg diff --git a/client/src/static/icons/brands/creative-commons-zero.svg b/src/static/icons/brands/creative-commons-zero.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons-zero.svg rename to src/static/icons/brands/creative-commons-zero.svg diff --git a/client/src/static/icons/brands/creative-commons.svg b/src/static/icons/brands/creative-commons.svg similarity index 100% rename from client/src/static/icons/brands/creative-commons.svg rename to src/static/icons/brands/creative-commons.svg diff --git a/client/src/static/icons/brands/critical-role.svg b/src/static/icons/brands/critical-role.svg similarity index 100% rename from client/src/static/icons/brands/critical-role.svg rename to src/static/icons/brands/critical-role.svg diff --git a/client/src/static/icons/brands/css3-alt.svg b/src/static/icons/brands/css3-alt.svg similarity index 100% rename from client/src/static/icons/brands/css3-alt.svg rename to src/static/icons/brands/css3-alt.svg diff --git a/client/src/static/icons/brands/css3.svg b/src/static/icons/brands/css3.svg similarity index 100% rename from client/src/static/icons/brands/css3.svg rename to src/static/icons/brands/css3.svg diff --git a/client/src/static/icons/brands/cuttlefish.svg b/src/static/icons/brands/cuttlefish.svg similarity index 100% rename from client/src/static/icons/brands/cuttlefish.svg rename to src/static/icons/brands/cuttlefish.svg diff --git a/client/src/static/icons/brands/d-and-d-beyond.svg b/src/static/icons/brands/d-and-d-beyond.svg similarity index 100% rename from client/src/static/icons/brands/d-and-d-beyond.svg rename to src/static/icons/brands/d-and-d-beyond.svg diff --git a/client/src/static/icons/brands/d-and-d.svg b/src/static/icons/brands/d-and-d.svg similarity index 100% rename from client/src/static/icons/brands/d-and-d.svg rename to src/static/icons/brands/d-and-d.svg diff --git a/client/src/static/icons/brands/dashcube.svg b/src/static/icons/brands/dashcube.svg similarity index 100% rename from client/src/static/icons/brands/dashcube.svg rename to src/static/icons/brands/dashcube.svg diff --git a/client/src/static/icons/brands/delicious.svg b/src/static/icons/brands/delicious.svg similarity index 100% rename from client/src/static/icons/brands/delicious.svg rename to src/static/icons/brands/delicious.svg diff --git a/client/src/static/icons/brands/deploydog.svg b/src/static/icons/brands/deploydog.svg similarity index 100% rename from client/src/static/icons/brands/deploydog.svg rename to src/static/icons/brands/deploydog.svg diff --git a/client/src/static/icons/brands/deskpro.svg b/src/static/icons/brands/deskpro.svg similarity index 100% rename from client/src/static/icons/brands/deskpro.svg rename to src/static/icons/brands/deskpro.svg diff --git a/client/src/static/icons/brands/dev.svg b/src/static/icons/brands/dev.svg similarity index 100% rename from client/src/static/icons/brands/dev.svg rename to src/static/icons/brands/dev.svg diff --git a/client/src/static/icons/brands/deviantart.svg b/src/static/icons/brands/deviantart.svg similarity index 100% rename from client/src/static/icons/brands/deviantart.svg rename to src/static/icons/brands/deviantart.svg diff --git a/client/src/static/icons/brands/dhl.svg b/src/static/icons/brands/dhl.svg similarity index 100% rename from client/src/static/icons/brands/dhl.svg rename to src/static/icons/brands/dhl.svg diff --git a/client/src/static/icons/brands/diaspora.svg b/src/static/icons/brands/diaspora.svg similarity index 100% rename from client/src/static/icons/brands/diaspora.svg rename to src/static/icons/brands/diaspora.svg diff --git a/client/src/static/icons/brands/digg.svg b/src/static/icons/brands/digg.svg similarity index 100% rename from client/src/static/icons/brands/digg.svg rename to src/static/icons/brands/digg.svg diff --git a/client/src/static/icons/brands/digital-ocean.svg b/src/static/icons/brands/digital-ocean.svg similarity index 100% rename from client/src/static/icons/brands/digital-ocean.svg rename to src/static/icons/brands/digital-ocean.svg diff --git a/client/src/static/icons/brands/discord.svg b/src/static/icons/brands/discord.svg similarity index 100% rename from client/src/static/icons/brands/discord.svg rename to src/static/icons/brands/discord.svg diff --git a/client/src/static/icons/brands/discourse.svg b/src/static/icons/brands/discourse.svg similarity index 100% rename from client/src/static/icons/brands/discourse.svg rename to src/static/icons/brands/discourse.svg diff --git a/client/src/static/icons/brands/dochub.svg b/src/static/icons/brands/dochub.svg similarity index 100% rename from client/src/static/icons/brands/dochub.svg rename to src/static/icons/brands/dochub.svg diff --git a/client/src/static/icons/brands/docker.svg b/src/static/icons/brands/docker.svg similarity index 100% rename from client/src/static/icons/brands/docker.svg rename to src/static/icons/brands/docker.svg diff --git a/client/src/static/icons/brands/draft2digital.svg b/src/static/icons/brands/draft2digital.svg similarity index 100% rename from client/src/static/icons/brands/draft2digital.svg rename to src/static/icons/brands/draft2digital.svg diff --git a/client/src/static/icons/brands/dribbble-square.svg b/src/static/icons/brands/dribbble-square.svg similarity index 100% rename from client/src/static/icons/brands/dribbble-square.svg rename to src/static/icons/brands/dribbble-square.svg diff --git a/client/src/static/icons/brands/dribbble.svg b/src/static/icons/brands/dribbble.svg similarity index 100% rename from client/src/static/icons/brands/dribbble.svg rename to src/static/icons/brands/dribbble.svg diff --git a/client/src/static/icons/brands/dropbox.svg b/src/static/icons/brands/dropbox.svg similarity index 100% rename from client/src/static/icons/brands/dropbox.svg rename to src/static/icons/brands/dropbox.svg diff --git a/client/src/static/icons/brands/drupal.svg b/src/static/icons/brands/drupal.svg similarity index 100% rename from client/src/static/icons/brands/drupal.svg rename to src/static/icons/brands/drupal.svg diff --git a/client/src/static/icons/brands/dyalog.svg b/src/static/icons/brands/dyalog.svg similarity index 100% rename from client/src/static/icons/brands/dyalog.svg rename to src/static/icons/brands/dyalog.svg diff --git a/client/src/static/icons/brands/earlybirds.svg b/src/static/icons/brands/earlybirds.svg similarity index 100% rename from client/src/static/icons/brands/earlybirds.svg rename to src/static/icons/brands/earlybirds.svg diff --git a/client/src/static/icons/brands/ebay.svg b/src/static/icons/brands/ebay.svg similarity index 100% rename from client/src/static/icons/brands/ebay.svg rename to src/static/icons/brands/ebay.svg diff --git a/client/src/static/icons/brands/edge.svg b/src/static/icons/brands/edge.svg similarity index 100% rename from client/src/static/icons/brands/edge.svg rename to src/static/icons/brands/edge.svg diff --git a/client/src/static/icons/brands/elementor.svg b/src/static/icons/brands/elementor.svg similarity index 100% rename from client/src/static/icons/brands/elementor.svg rename to src/static/icons/brands/elementor.svg diff --git a/client/src/static/icons/brands/ello.svg b/src/static/icons/brands/ello.svg similarity index 100% rename from client/src/static/icons/brands/ello.svg rename to src/static/icons/brands/ello.svg diff --git a/client/src/static/icons/brands/ember.svg b/src/static/icons/brands/ember.svg similarity index 100% rename from client/src/static/icons/brands/ember.svg rename to src/static/icons/brands/ember.svg diff --git a/client/src/static/icons/brands/empire.svg b/src/static/icons/brands/empire.svg similarity index 100% rename from client/src/static/icons/brands/empire.svg rename to src/static/icons/brands/empire.svg diff --git a/client/src/static/icons/brands/envira.svg b/src/static/icons/brands/envira.svg similarity index 100% rename from client/src/static/icons/brands/envira.svg rename to src/static/icons/brands/envira.svg diff --git a/client/src/static/icons/brands/erlang.svg b/src/static/icons/brands/erlang.svg similarity index 100% rename from client/src/static/icons/brands/erlang.svg rename to src/static/icons/brands/erlang.svg diff --git a/client/src/static/icons/brands/ethereum.svg b/src/static/icons/brands/ethereum.svg similarity index 100% rename from client/src/static/icons/brands/ethereum.svg rename to src/static/icons/brands/ethereum.svg diff --git a/client/src/static/icons/brands/etsy.svg b/src/static/icons/brands/etsy.svg similarity index 100% rename from client/src/static/icons/brands/etsy.svg rename to src/static/icons/brands/etsy.svg diff --git a/client/src/static/icons/brands/evernote.svg b/src/static/icons/brands/evernote.svg similarity index 100% rename from client/src/static/icons/brands/evernote.svg rename to src/static/icons/brands/evernote.svg diff --git a/client/src/static/icons/brands/expeditedssl.svg b/src/static/icons/brands/expeditedssl.svg similarity index 100% rename from client/src/static/icons/brands/expeditedssl.svg rename to src/static/icons/brands/expeditedssl.svg diff --git a/client/src/static/icons/brands/facebook-f.svg b/src/static/icons/brands/facebook-f.svg similarity index 100% rename from client/src/static/icons/brands/facebook-f.svg rename to src/static/icons/brands/facebook-f.svg diff --git a/client/src/static/icons/brands/facebook-messenger.svg b/src/static/icons/brands/facebook-messenger.svg similarity index 100% rename from client/src/static/icons/brands/facebook-messenger.svg rename to src/static/icons/brands/facebook-messenger.svg diff --git a/client/src/static/icons/brands/facebook-square.svg b/src/static/icons/brands/facebook-square.svg similarity index 100% rename from client/src/static/icons/brands/facebook-square.svg rename to src/static/icons/brands/facebook-square.svg diff --git a/client/src/static/icons/brands/facebook.svg b/src/static/icons/brands/facebook.svg similarity index 100% rename from client/src/static/icons/brands/facebook.svg rename to src/static/icons/brands/facebook.svg diff --git a/client/src/static/icons/brands/fantasy-flight-games.svg b/src/static/icons/brands/fantasy-flight-games.svg similarity index 100% rename from client/src/static/icons/brands/fantasy-flight-games.svg rename to src/static/icons/brands/fantasy-flight-games.svg diff --git a/client/src/static/icons/brands/fedex.svg b/src/static/icons/brands/fedex.svg similarity index 100% rename from client/src/static/icons/brands/fedex.svg rename to src/static/icons/brands/fedex.svg diff --git a/client/src/static/icons/brands/fedora.svg b/src/static/icons/brands/fedora.svg similarity index 100% rename from client/src/static/icons/brands/fedora.svg rename to src/static/icons/brands/fedora.svg diff --git a/client/src/static/icons/brands/figma.svg b/src/static/icons/brands/figma.svg similarity index 100% rename from client/src/static/icons/brands/figma.svg rename to src/static/icons/brands/figma.svg diff --git a/client/src/static/icons/brands/firefox-browser.svg b/src/static/icons/brands/firefox-browser.svg similarity index 100% rename from client/src/static/icons/brands/firefox-browser.svg rename to src/static/icons/brands/firefox-browser.svg diff --git a/client/src/static/icons/brands/firefox.svg b/src/static/icons/brands/firefox.svg similarity index 100% rename from client/src/static/icons/brands/firefox.svg rename to src/static/icons/brands/firefox.svg diff --git a/client/src/static/icons/brands/first-order-alt.svg b/src/static/icons/brands/first-order-alt.svg similarity index 100% rename from client/src/static/icons/brands/first-order-alt.svg rename to src/static/icons/brands/first-order-alt.svg diff --git a/client/src/static/icons/brands/first-order.svg b/src/static/icons/brands/first-order.svg similarity index 100% rename from client/src/static/icons/brands/first-order.svg rename to src/static/icons/brands/first-order.svg diff --git a/client/src/static/icons/brands/firstdraft.svg b/src/static/icons/brands/firstdraft.svg similarity index 100% rename from client/src/static/icons/brands/firstdraft.svg rename to src/static/icons/brands/firstdraft.svg diff --git a/client/src/static/icons/brands/flickr.svg b/src/static/icons/brands/flickr.svg similarity index 100% rename from client/src/static/icons/brands/flickr.svg rename to src/static/icons/brands/flickr.svg diff --git a/client/src/static/icons/brands/flipboard.svg b/src/static/icons/brands/flipboard.svg similarity index 100% rename from client/src/static/icons/brands/flipboard.svg rename to src/static/icons/brands/flipboard.svg diff --git a/client/src/static/icons/brands/fly.svg b/src/static/icons/brands/fly.svg similarity index 100% rename from client/src/static/icons/brands/fly.svg rename to src/static/icons/brands/fly.svg diff --git a/client/src/static/icons/brands/font-awesome-alt.svg b/src/static/icons/brands/font-awesome-alt.svg similarity index 100% rename from client/src/static/icons/brands/font-awesome-alt.svg rename to src/static/icons/brands/font-awesome-alt.svg diff --git a/client/src/static/icons/brands/font-awesome-flag.svg b/src/static/icons/brands/font-awesome-flag.svg similarity index 100% rename from client/src/static/icons/brands/font-awesome-flag.svg rename to src/static/icons/brands/font-awesome-flag.svg diff --git a/client/src/static/icons/brands/font-awesome-logo-full.svg b/src/static/icons/brands/font-awesome-logo-full.svg similarity index 100% rename from client/src/static/icons/brands/font-awesome-logo-full.svg rename to src/static/icons/brands/font-awesome-logo-full.svg diff --git a/client/src/static/icons/brands/font-awesome.svg b/src/static/icons/brands/font-awesome.svg similarity index 100% rename from client/src/static/icons/brands/font-awesome.svg rename to src/static/icons/brands/font-awesome.svg diff --git a/client/src/static/icons/brands/fonticons-fi.svg b/src/static/icons/brands/fonticons-fi.svg similarity index 100% rename from client/src/static/icons/brands/fonticons-fi.svg rename to src/static/icons/brands/fonticons-fi.svg diff --git a/client/src/static/icons/brands/fonticons.svg b/src/static/icons/brands/fonticons.svg similarity index 100% rename from client/src/static/icons/brands/fonticons.svg rename to src/static/icons/brands/fonticons.svg diff --git a/client/src/static/icons/brands/fort-awesome-alt.svg b/src/static/icons/brands/fort-awesome-alt.svg similarity index 100% rename from client/src/static/icons/brands/fort-awesome-alt.svg rename to src/static/icons/brands/fort-awesome-alt.svg diff --git a/client/src/static/icons/brands/fort-awesome.svg b/src/static/icons/brands/fort-awesome.svg similarity index 100% rename from client/src/static/icons/brands/fort-awesome.svg rename to src/static/icons/brands/fort-awesome.svg diff --git a/client/src/static/icons/brands/forumbee.svg b/src/static/icons/brands/forumbee.svg similarity index 100% rename from client/src/static/icons/brands/forumbee.svg rename to src/static/icons/brands/forumbee.svg diff --git a/client/src/static/icons/brands/foursquare.svg b/src/static/icons/brands/foursquare.svg similarity index 100% rename from client/src/static/icons/brands/foursquare.svg rename to src/static/icons/brands/foursquare.svg diff --git a/client/src/static/icons/brands/free-code-camp.svg b/src/static/icons/brands/free-code-camp.svg similarity index 100% rename from client/src/static/icons/brands/free-code-camp.svg rename to src/static/icons/brands/free-code-camp.svg diff --git a/client/src/static/icons/brands/freebsd.svg b/src/static/icons/brands/freebsd.svg similarity index 100% rename from client/src/static/icons/brands/freebsd.svg rename to src/static/icons/brands/freebsd.svg diff --git a/client/src/static/icons/brands/fulcrum.svg b/src/static/icons/brands/fulcrum.svg similarity index 100% rename from client/src/static/icons/brands/fulcrum.svg rename to src/static/icons/brands/fulcrum.svg diff --git a/client/src/static/icons/brands/galactic-republic.svg b/src/static/icons/brands/galactic-republic.svg similarity index 100% rename from client/src/static/icons/brands/galactic-republic.svg rename to src/static/icons/brands/galactic-republic.svg diff --git a/client/src/static/icons/brands/galactic-senate.svg b/src/static/icons/brands/galactic-senate.svg similarity index 100% rename from client/src/static/icons/brands/galactic-senate.svg rename to src/static/icons/brands/galactic-senate.svg diff --git a/client/src/static/icons/brands/get-pocket.svg b/src/static/icons/brands/get-pocket.svg similarity index 100% rename from client/src/static/icons/brands/get-pocket.svg rename to src/static/icons/brands/get-pocket.svg diff --git a/client/src/static/icons/brands/gg-circle.svg b/src/static/icons/brands/gg-circle.svg similarity index 100% rename from client/src/static/icons/brands/gg-circle.svg rename to src/static/icons/brands/gg-circle.svg diff --git a/client/src/static/icons/brands/gg.svg b/src/static/icons/brands/gg.svg similarity index 100% rename from client/src/static/icons/brands/gg.svg rename to src/static/icons/brands/gg.svg diff --git a/client/src/static/icons/brands/git-alt.svg b/src/static/icons/brands/git-alt.svg similarity index 100% rename from client/src/static/icons/brands/git-alt.svg rename to src/static/icons/brands/git-alt.svg diff --git a/client/src/static/icons/brands/git-square.svg b/src/static/icons/brands/git-square.svg similarity index 100% rename from client/src/static/icons/brands/git-square.svg rename to src/static/icons/brands/git-square.svg diff --git a/client/src/static/icons/brands/git.svg b/src/static/icons/brands/git.svg similarity index 100% rename from client/src/static/icons/brands/git.svg rename to src/static/icons/brands/git.svg diff --git a/client/src/static/icons/brands/github-alt.svg b/src/static/icons/brands/github-alt.svg similarity index 100% rename from client/src/static/icons/brands/github-alt.svg rename to src/static/icons/brands/github-alt.svg diff --git a/client/src/static/icons/brands/github-square.svg b/src/static/icons/brands/github-square.svg similarity index 100% rename from client/src/static/icons/brands/github-square.svg rename to src/static/icons/brands/github-square.svg diff --git a/client/src/static/icons/brands/github.svg b/src/static/icons/brands/github.svg similarity index 100% rename from client/src/static/icons/brands/github.svg rename to src/static/icons/brands/github.svg diff --git a/client/src/static/icons/brands/gitkraken.svg b/src/static/icons/brands/gitkraken.svg similarity index 100% rename from client/src/static/icons/brands/gitkraken.svg rename to src/static/icons/brands/gitkraken.svg diff --git a/client/src/static/icons/brands/gitlab.svg b/src/static/icons/brands/gitlab.svg similarity index 100% rename from client/src/static/icons/brands/gitlab.svg rename to src/static/icons/brands/gitlab.svg diff --git a/client/src/static/icons/brands/gitter.svg b/src/static/icons/brands/gitter.svg similarity index 100% rename from client/src/static/icons/brands/gitter.svg rename to src/static/icons/brands/gitter.svg diff --git a/client/src/static/icons/brands/glide-g.svg b/src/static/icons/brands/glide-g.svg similarity index 100% rename from client/src/static/icons/brands/glide-g.svg rename to src/static/icons/brands/glide-g.svg diff --git a/client/src/static/icons/brands/glide.svg b/src/static/icons/brands/glide.svg similarity index 100% rename from client/src/static/icons/brands/glide.svg rename to src/static/icons/brands/glide.svg diff --git a/client/src/static/icons/brands/gofore.svg b/src/static/icons/brands/gofore.svg similarity index 100% rename from client/src/static/icons/brands/gofore.svg rename to src/static/icons/brands/gofore.svg diff --git a/client/src/static/icons/brands/goodreads-g.svg b/src/static/icons/brands/goodreads-g.svg similarity index 100% rename from client/src/static/icons/brands/goodreads-g.svg rename to src/static/icons/brands/goodreads-g.svg diff --git a/client/src/static/icons/brands/goodreads.svg b/src/static/icons/brands/goodreads.svg similarity index 100% rename from client/src/static/icons/brands/goodreads.svg rename to src/static/icons/brands/goodreads.svg diff --git a/client/src/static/icons/brands/google-drive.svg b/src/static/icons/brands/google-drive.svg similarity index 100% rename from client/src/static/icons/brands/google-drive.svg rename to src/static/icons/brands/google-drive.svg diff --git a/client/src/static/icons/brands/google-play.svg b/src/static/icons/brands/google-play.svg similarity index 100% rename from client/src/static/icons/brands/google-play.svg rename to src/static/icons/brands/google-play.svg diff --git a/client/src/static/icons/brands/google-plus-g.svg b/src/static/icons/brands/google-plus-g.svg similarity index 100% rename from client/src/static/icons/brands/google-plus-g.svg rename to src/static/icons/brands/google-plus-g.svg diff --git a/client/src/static/icons/brands/google-plus-square.svg b/src/static/icons/brands/google-plus-square.svg similarity index 100% rename from client/src/static/icons/brands/google-plus-square.svg rename to src/static/icons/brands/google-plus-square.svg diff --git a/client/src/static/icons/brands/google-plus.svg b/src/static/icons/brands/google-plus.svg similarity index 100% rename from client/src/static/icons/brands/google-plus.svg rename to src/static/icons/brands/google-plus.svg diff --git a/client/src/static/icons/brands/google-wallet.svg b/src/static/icons/brands/google-wallet.svg similarity index 100% rename from client/src/static/icons/brands/google-wallet.svg rename to src/static/icons/brands/google-wallet.svg diff --git a/client/src/static/icons/brands/google.svg b/src/static/icons/brands/google.svg similarity index 100% rename from client/src/static/icons/brands/google.svg rename to src/static/icons/brands/google.svg diff --git a/client/src/static/icons/brands/gratipay.svg b/src/static/icons/brands/gratipay.svg similarity index 100% rename from client/src/static/icons/brands/gratipay.svg rename to src/static/icons/brands/gratipay.svg diff --git a/client/src/static/icons/brands/grav.svg b/src/static/icons/brands/grav.svg similarity index 100% rename from client/src/static/icons/brands/grav.svg rename to src/static/icons/brands/grav.svg diff --git a/client/src/static/icons/brands/gripfire.svg b/src/static/icons/brands/gripfire.svg similarity index 100% rename from client/src/static/icons/brands/gripfire.svg rename to src/static/icons/brands/gripfire.svg diff --git a/client/src/static/icons/brands/grunt.svg b/src/static/icons/brands/grunt.svg similarity index 100% rename from client/src/static/icons/brands/grunt.svg rename to src/static/icons/brands/grunt.svg diff --git a/client/src/static/icons/brands/gulp.svg b/src/static/icons/brands/gulp.svg similarity index 100% rename from client/src/static/icons/brands/gulp.svg rename to src/static/icons/brands/gulp.svg diff --git a/client/src/static/icons/brands/hacker-news-square.svg b/src/static/icons/brands/hacker-news-square.svg similarity index 100% rename from client/src/static/icons/brands/hacker-news-square.svg rename to src/static/icons/brands/hacker-news-square.svg diff --git a/client/src/static/icons/brands/hacker-news.svg b/src/static/icons/brands/hacker-news.svg similarity index 100% rename from client/src/static/icons/brands/hacker-news.svg rename to src/static/icons/brands/hacker-news.svg diff --git a/client/src/static/icons/brands/hackerrank.svg b/src/static/icons/brands/hackerrank.svg similarity index 100% rename from client/src/static/icons/brands/hackerrank.svg rename to src/static/icons/brands/hackerrank.svg diff --git a/client/src/static/icons/brands/hips.svg b/src/static/icons/brands/hips.svg similarity index 100% rename from client/src/static/icons/brands/hips.svg rename to src/static/icons/brands/hips.svg diff --git a/client/src/static/icons/brands/hire-a-helper.svg b/src/static/icons/brands/hire-a-helper.svg similarity index 100% rename from client/src/static/icons/brands/hire-a-helper.svg rename to src/static/icons/brands/hire-a-helper.svg diff --git a/client/src/static/icons/brands/hooli.svg b/src/static/icons/brands/hooli.svg similarity index 100% rename from client/src/static/icons/brands/hooli.svg rename to src/static/icons/brands/hooli.svg diff --git a/client/src/static/icons/brands/hornbill.svg b/src/static/icons/brands/hornbill.svg similarity index 100% rename from client/src/static/icons/brands/hornbill.svg rename to src/static/icons/brands/hornbill.svg diff --git a/client/src/static/icons/brands/hotjar.svg b/src/static/icons/brands/hotjar.svg similarity index 100% rename from client/src/static/icons/brands/hotjar.svg rename to src/static/icons/brands/hotjar.svg diff --git a/client/src/static/icons/brands/houzz.svg b/src/static/icons/brands/houzz.svg similarity index 100% rename from client/src/static/icons/brands/houzz.svg rename to src/static/icons/brands/houzz.svg diff --git a/client/src/static/icons/brands/html5.svg b/src/static/icons/brands/html5.svg similarity index 100% rename from client/src/static/icons/brands/html5.svg rename to src/static/icons/brands/html5.svg diff --git a/client/src/static/icons/brands/hubspot.svg b/src/static/icons/brands/hubspot.svg similarity index 100% rename from client/src/static/icons/brands/hubspot.svg rename to src/static/icons/brands/hubspot.svg diff --git a/client/src/static/icons/brands/ideal.svg b/src/static/icons/brands/ideal.svg similarity index 100% rename from client/src/static/icons/brands/ideal.svg rename to src/static/icons/brands/ideal.svg diff --git a/client/src/static/icons/brands/imdb.svg b/src/static/icons/brands/imdb.svg similarity index 100% rename from client/src/static/icons/brands/imdb.svg rename to src/static/icons/brands/imdb.svg diff --git a/client/src/static/icons/brands/instagram.svg b/src/static/icons/brands/instagram.svg similarity index 100% rename from client/src/static/icons/brands/instagram.svg rename to src/static/icons/brands/instagram.svg diff --git a/client/src/static/icons/brands/intercom.svg b/src/static/icons/brands/intercom.svg similarity index 100% rename from client/src/static/icons/brands/intercom.svg rename to src/static/icons/brands/intercom.svg diff --git a/client/src/static/icons/brands/internet-explorer.svg b/src/static/icons/brands/internet-explorer.svg similarity index 100% rename from client/src/static/icons/brands/internet-explorer.svg rename to src/static/icons/brands/internet-explorer.svg diff --git a/client/src/static/icons/brands/invision.svg b/src/static/icons/brands/invision.svg similarity index 100% rename from client/src/static/icons/brands/invision.svg rename to src/static/icons/brands/invision.svg diff --git a/client/src/static/icons/brands/ioxhost.svg b/src/static/icons/brands/ioxhost.svg similarity index 100% rename from client/src/static/icons/brands/ioxhost.svg rename to src/static/icons/brands/ioxhost.svg diff --git a/client/src/static/icons/brands/itch-io.svg b/src/static/icons/brands/itch-io.svg similarity index 100% rename from client/src/static/icons/brands/itch-io.svg rename to src/static/icons/brands/itch-io.svg diff --git a/client/src/static/icons/brands/itunes-note.svg b/src/static/icons/brands/itunes-note.svg similarity index 100% rename from client/src/static/icons/brands/itunes-note.svg rename to src/static/icons/brands/itunes-note.svg diff --git a/client/src/static/icons/brands/itunes.svg b/src/static/icons/brands/itunes.svg similarity index 100% rename from client/src/static/icons/brands/itunes.svg rename to src/static/icons/brands/itunes.svg diff --git a/client/src/static/icons/brands/java.svg b/src/static/icons/brands/java.svg similarity index 100% rename from client/src/static/icons/brands/java.svg rename to src/static/icons/brands/java.svg diff --git a/client/src/static/icons/brands/jedi-order.svg b/src/static/icons/brands/jedi-order.svg similarity index 100% rename from client/src/static/icons/brands/jedi-order.svg rename to src/static/icons/brands/jedi-order.svg diff --git a/client/src/static/icons/brands/jenkins.svg b/src/static/icons/brands/jenkins.svg similarity index 100% rename from client/src/static/icons/brands/jenkins.svg rename to src/static/icons/brands/jenkins.svg diff --git a/client/src/static/icons/brands/jira.svg b/src/static/icons/brands/jira.svg similarity index 100% rename from client/src/static/icons/brands/jira.svg rename to src/static/icons/brands/jira.svg diff --git a/client/src/static/icons/brands/joget.svg b/src/static/icons/brands/joget.svg similarity index 100% rename from client/src/static/icons/brands/joget.svg rename to src/static/icons/brands/joget.svg diff --git a/client/src/static/icons/brands/joomla.svg b/src/static/icons/brands/joomla.svg similarity index 100% rename from client/src/static/icons/brands/joomla.svg rename to src/static/icons/brands/joomla.svg diff --git a/client/src/static/icons/brands/js-square.svg b/src/static/icons/brands/js-square.svg similarity index 100% rename from client/src/static/icons/brands/js-square.svg rename to src/static/icons/brands/js-square.svg diff --git a/client/src/static/icons/brands/js.svg b/src/static/icons/brands/js.svg similarity index 100% rename from client/src/static/icons/brands/js.svg rename to src/static/icons/brands/js.svg diff --git a/client/src/static/icons/brands/jsfiddle.svg b/src/static/icons/brands/jsfiddle.svg similarity index 100% rename from client/src/static/icons/brands/jsfiddle.svg rename to src/static/icons/brands/jsfiddle.svg diff --git a/client/src/static/icons/brands/kaggle.svg b/src/static/icons/brands/kaggle.svg similarity index 100% rename from client/src/static/icons/brands/kaggle.svg rename to src/static/icons/brands/kaggle.svg diff --git a/client/src/static/icons/brands/keybase.svg b/src/static/icons/brands/keybase.svg similarity index 100% rename from client/src/static/icons/brands/keybase.svg rename to src/static/icons/brands/keybase.svg diff --git a/client/src/static/icons/brands/keycdn.svg b/src/static/icons/brands/keycdn.svg similarity index 100% rename from client/src/static/icons/brands/keycdn.svg rename to src/static/icons/brands/keycdn.svg diff --git a/client/src/static/icons/brands/kickstarter-k.svg b/src/static/icons/brands/kickstarter-k.svg similarity index 100% rename from client/src/static/icons/brands/kickstarter-k.svg rename to src/static/icons/brands/kickstarter-k.svg diff --git a/client/src/static/icons/brands/kickstarter.svg b/src/static/icons/brands/kickstarter.svg similarity index 100% rename from client/src/static/icons/brands/kickstarter.svg rename to src/static/icons/brands/kickstarter.svg diff --git a/client/src/static/icons/brands/korvue.svg b/src/static/icons/brands/korvue.svg similarity index 100% rename from client/src/static/icons/brands/korvue.svg rename to src/static/icons/brands/korvue.svg diff --git a/client/src/static/icons/brands/laravel.svg b/src/static/icons/brands/laravel.svg similarity index 100% rename from client/src/static/icons/brands/laravel.svg rename to src/static/icons/brands/laravel.svg diff --git a/client/src/static/icons/brands/lastfm-square.svg b/src/static/icons/brands/lastfm-square.svg similarity index 100% rename from client/src/static/icons/brands/lastfm-square.svg rename to src/static/icons/brands/lastfm-square.svg diff --git a/client/src/static/icons/brands/lastfm.svg b/src/static/icons/brands/lastfm.svg similarity index 100% rename from client/src/static/icons/brands/lastfm.svg rename to src/static/icons/brands/lastfm.svg diff --git a/client/src/static/icons/brands/leanpub.svg b/src/static/icons/brands/leanpub.svg similarity index 100% rename from client/src/static/icons/brands/leanpub.svg rename to src/static/icons/brands/leanpub.svg diff --git a/client/src/static/icons/brands/less.svg b/src/static/icons/brands/less.svg similarity index 100% rename from client/src/static/icons/brands/less.svg rename to src/static/icons/brands/less.svg diff --git a/client/src/static/icons/brands/line.svg b/src/static/icons/brands/line.svg similarity index 100% rename from client/src/static/icons/brands/line.svg rename to src/static/icons/brands/line.svg diff --git a/client/src/static/icons/brands/linkedin-in.svg b/src/static/icons/brands/linkedin-in.svg similarity index 100% rename from client/src/static/icons/brands/linkedin-in.svg rename to src/static/icons/brands/linkedin-in.svg diff --git a/client/src/static/icons/brands/linkedin.svg b/src/static/icons/brands/linkedin.svg similarity index 100% rename from client/src/static/icons/brands/linkedin.svg rename to src/static/icons/brands/linkedin.svg diff --git a/client/src/static/icons/brands/linode.svg b/src/static/icons/brands/linode.svg similarity index 100% rename from client/src/static/icons/brands/linode.svg rename to src/static/icons/brands/linode.svg diff --git a/client/src/static/icons/brands/linux.svg b/src/static/icons/brands/linux.svg similarity index 100% rename from client/src/static/icons/brands/linux.svg rename to src/static/icons/brands/linux.svg diff --git a/client/src/static/icons/brands/lyft.svg b/src/static/icons/brands/lyft.svg similarity index 100% rename from client/src/static/icons/brands/lyft.svg rename to src/static/icons/brands/lyft.svg diff --git a/client/src/static/icons/brands/magento.svg b/src/static/icons/brands/magento.svg similarity index 100% rename from client/src/static/icons/brands/magento.svg rename to src/static/icons/brands/magento.svg diff --git a/client/src/static/icons/brands/mailchimp.svg b/src/static/icons/brands/mailchimp.svg similarity index 100% rename from client/src/static/icons/brands/mailchimp.svg rename to src/static/icons/brands/mailchimp.svg diff --git a/client/src/static/icons/brands/mandalorian.svg b/src/static/icons/brands/mandalorian.svg similarity index 100% rename from client/src/static/icons/brands/mandalorian.svg rename to src/static/icons/brands/mandalorian.svg diff --git a/client/src/static/icons/brands/markdown.svg b/src/static/icons/brands/markdown.svg similarity index 100% rename from client/src/static/icons/brands/markdown.svg rename to src/static/icons/brands/markdown.svg diff --git a/client/src/static/icons/brands/mastodon.svg b/src/static/icons/brands/mastodon.svg similarity index 100% rename from client/src/static/icons/brands/mastodon.svg rename to src/static/icons/brands/mastodon.svg diff --git a/client/src/static/icons/brands/maxcdn.svg b/src/static/icons/brands/maxcdn.svg similarity index 100% rename from client/src/static/icons/brands/maxcdn.svg rename to src/static/icons/brands/maxcdn.svg diff --git a/client/src/static/icons/brands/mdb.svg b/src/static/icons/brands/mdb.svg similarity index 100% rename from client/src/static/icons/brands/mdb.svg rename to src/static/icons/brands/mdb.svg diff --git a/client/src/static/icons/brands/medapps.svg b/src/static/icons/brands/medapps.svg similarity index 100% rename from client/src/static/icons/brands/medapps.svg rename to src/static/icons/brands/medapps.svg diff --git a/client/src/static/icons/brands/medium-m.svg b/src/static/icons/brands/medium-m.svg similarity index 100% rename from client/src/static/icons/brands/medium-m.svg rename to src/static/icons/brands/medium-m.svg diff --git a/client/src/static/icons/brands/medium.svg b/src/static/icons/brands/medium.svg similarity index 100% rename from client/src/static/icons/brands/medium.svg rename to src/static/icons/brands/medium.svg diff --git a/client/src/static/icons/brands/medrt.svg b/src/static/icons/brands/medrt.svg similarity index 100% rename from client/src/static/icons/brands/medrt.svg rename to src/static/icons/brands/medrt.svg diff --git a/client/src/static/icons/brands/meetup.svg b/src/static/icons/brands/meetup.svg similarity index 100% rename from client/src/static/icons/brands/meetup.svg rename to src/static/icons/brands/meetup.svg diff --git a/client/src/static/icons/brands/megaport.svg b/src/static/icons/brands/megaport.svg similarity index 100% rename from client/src/static/icons/brands/megaport.svg rename to src/static/icons/brands/megaport.svg diff --git a/client/src/static/icons/brands/mendeley.svg b/src/static/icons/brands/mendeley.svg similarity index 100% rename from client/src/static/icons/brands/mendeley.svg rename to src/static/icons/brands/mendeley.svg diff --git a/client/src/static/icons/brands/microblog.svg b/src/static/icons/brands/microblog.svg similarity index 100% rename from client/src/static/icons/brands/microblog.svg rename to src/static/icons/brands/microblog.svg diff --git a/client/src/static/icons/brands/microsoft.svg b/src/static/icons/brands/microsoft.svg similarity index 100% rename from client/src/static/icons/brands/microsoft.svg rename to src/static/icons/brands/microsoft.svg diff --git a/client/src/static/icons/brands/mix.svg b/src/static/icons/brands/mix.svg similarity index 100% rename from client/src/static/icons/brands/mix.svg rename to src/static/icons/brands/mix.svg diff --git a/client/src/static/icons/brands/mixcloud.svg b/src/static/icons/brands/mixcloud.svg similarity index 100% rename from client/src/static/icons/brands/mixcloud.svg rename to src/static/icons/brands/mixcloud.svg diff --git a/client/src/static/icons/brands/mizuni.svg b/src/static/icons/brands/mizuni.svg similarity index 100% rename from client/src/static/icons/brands/mizuni.svg rename to src/static/icons/brands/mizuni.svg diff --git a/client/src/static/icons/brands/modx.svg b/src/static/icons/brands/modx.svg similarity index 100% rename from client/src/static/icons/brands/modx.svg rename to src/static/icons/brands/modx.svg diff --git a/client/src/static/icons/brands/monero.svg b/src/static/icons/brands/monero.svg similarity index 100% rename from client/src/static/icons/brands/monero.svg rename to src/static/icons/brands/monero.svg diff --git a/client/src/static/icons/brands/napster.svg b/src/static/icons/brands/napster.svg similarity index 100% rename from client/src/static/icons/brands/napster.svg rename to src/static/icons/brands/napster.svg diff --git a/client/src/static/icons/brands/neos.svg b/src/static/icons/brands/neos.svg similarity index 100% rename from client/src/static/icons/brands/neos.svg rename to src/static/icons/brands/neos.svg diff --git a/client/src/static/icons/brands/nimblr.svg b/src/static/icons/brands/nimblr.svg similarity index 100% rename from client/src/static/icons/brands/nimblr.svg rename to src/static/icons/brands/nimblr.svg diff --git a/client/src/static/icons/brands/node-js.svg b/src/static/icons/brands/node-js.svg similarity index 100% rename from client/src/static/icons/brands/node-js.svg rename to src/static/icons/brands/node-js.svg diff --git a/client/src/static/icons/brands/node.svg b/src/static/icons/brands/node.svg similarity index 100% rename from client/src/static/icons/brands/node.svg rename to src/static/icons/brands/node.svg diff --git a/client/src/static/icons/brands/npm.svg b/src/static/icons/brands/npm.svg similarity index 100% rename from client/src/static/icons/brands/npm.svg rename to src/static/icons/brands/npm.svg diff --git a/client/src/static/icons/brands/ns8.svg b/src/static/icons/brands/ns8.svg similarity index 100% rename from client/src/static/icons/brands/ns8.svg rename to src/static/icons/brands/ns8.svg diff --git a/client/src/static/icons/brands/nutritionix.svg b/src/static/icons/brands/nutritionix.svg similarity index 100% rename from client/src/static/icons/brands/nutritionix.svg rename to src/static/icons/brands/nutritionix.svg diff --git a/client/src/static/icons/brands/odnoklassniki-square.svg b/src/static/icons/brands/odnoklassniki-square.svg similarity index 100% rename from client/src/static/icons/brands/odnoklassniki-square.svg rename to src/static/icons/brands/odnoklassniki-square.svg diff --git a/client/src/static/icons/brands/odnoklassniki.svg b/src/static/icons/brands/odnoklassniki.svg similarity index 100% rename from client/src/static/icons/brands/odnoklassniki.svg rename to src/static/icons/brands/odnoklassniki.svg diff --git a/client/src/static/icons/brands/old-republic.svg b/src/static/icons/brands/old-republic.svg similarity index 100% rename from client/src/static/icons/brands/old-republic.svg rename to src/static/icons/brands/old-republic.svg diff --git a/client/src/static/icons/brands/opencart.svg b/src/static/icons/brands/opencart.svg similarity index 100% rename from client/src/static/icons/brands/opencart.svg rename to src/static/icons/brands/opencart.svg diff --git a/client/src/static/icons/brands/openid.svg b/src/static/icons/brands/openid.svg similarity index 100% rename from client/src/static/icons/brands/openid.svg rename to src/static/icons/brands/openid.svg diff --git a/client/src/static/icons/brands/opera.svg b/src/static/icons/brands/opera.svg similarity index 100% rename from client/src/static/icons/brands/opera.svg rename to src/static/icons/brands/opera.svg diff --git a/client/src/static/icons/brands/optin-monster.svg b/src/static/icons/brands/optin-monster.svg similarity index 100% rename from client/src/static/icons/brands/optin-monster.svg rename to src/static/icons/brands/optin-monster.svg diff --git a/client/src/static/icons/brands/orcid.svg b/src/static/icons/brands/orcid.svg similarity index 100% rename from client/src/static/icons/brands/orcid.svg rename to src/static/icons/brands/orcid.svg diff --git a/client/src/static/icons/brands/osi.svg b/src/static/icons/brands/osi.svg similarity index 100% rename from client/src/static/icons/brands/osi.svg rename to src/static/icons/brands/osi.svg diff --git a/client/src/static/icons/brands/page4.svg b/src/static/icons/brands/page4.svg similarity index 100% rename from client/src/static/icons/brands/page4.svg rename to src/static/icons/brands/page4.svg diff --git a/client/src/static/icons/brands/pagelines.svg b/src/static/icons/brands/pagelines.svg similarity index 100% rename from client/src/static/icons/brands/pagelines.svg rename to src/static/icons/brands/pagelines.svg diff --git a/client/src/static/icons/brands/palfed.svg b/src/static/icons/brands/palfed.svg similarity index 100% rename from client/src/static/icons/brands/palfed.svg rename to src/static/icons/brands/palfed.svg diff --git a/client/src/static/icons/brands/patreon.svg b/src/static/icons/brands/patreon.svg similarity index 100% rename from client/src/static/icons/brands/patreon.svg rename to src/static/icons/brands/patreon.svg diff --git a/client/src/static/icons/brands/paypal.svg b/src/static/icons/brands/paypal.svg similarity index 100% rename from client/src/static/icons/brands/paypal.svg rename to src/static/icons/brands/paypal.svg diff --git a/client/src/static/icons/brands/penny-arcade.svg b/src/static/icons/brands/penny-arcade.svg similarity index 100% rename from client/src/static/icons/brands/penny-arcade.svg rename to src/static/icons/brands/penny-arcade.svg diff --git a/client/src/static/icons/brands/periscope.svg b/src/static/icons/brands/periscope.svg similarity index 100% rename from client/src/static/icons/brands/periscope.svg rename to src/static/icons/brands/periscope.svg diff --git a/client/src/static/icons/brands/phabricator.svg b/src/static/icons/brands/phabricator.svg similarity index 100% rename from client/src/static/icons/brands/phabricator.svg rename to src/static/icons/brands/phabricator.svg diff --git a/client/src/static/icons/brands/phoenix-framework.svg b/src/static/icons/brands/phoenix-framework.svg similarity index 100% rename from client/src/static/icons/brands/phoenix-framework.svg rename to src/static/icons/brands/phoenix-framework.svg diff --git a/client/src/static/icons/brands/phoenix-squadron.svg b/src/static/icons/brands/phoenix-squadron.svg similarity index 100% rename from client/src/static/icons/brands/phoenix-squadron.svg rename to src/static/icons/brands/phoenix-squadron.svg diff --git a/client/src/static/icons/brands/php.svg b/src/static/icons/brands/php.svg similarity index 100% rename from client/src/static/icons/brands/php.svg rename to src/static/icons/brands/php.svg diff --git a/client/src/static/icons/brands/pied-piper-alt.svg b/src/static/icons/brands/pied-piper-alt.svg similarity index 100% rename from client/src/static/icons/brands/pied-piper-alt.svg rename to src/static/icons/brands/pied-piper-alt.svg diff --git a/client/src/static/icons/brands/pied-piper-hat.svg b/src/static/icons/brands/pied-piper-hat.svg similarity index 100% rename from client/src/static/icons/brands/pied-piper-hat.svg rename to src/static/icons/brands/pied-piper-hat.svg diff --git a/client/src/static/icons/brands/pied-piper-pp.svg b/src/static/icons/brands/pied-piper-pp.svg similarity index 100% rename from client/src/static/icons/brands/pied-piper-pp.svg rename to src/static/icons/brands/pied-piper-pp.svg diff --git a/client/src/static/icons/brands/pied-piper-square.svg b/src/static/icons/brands/pied-piper-square.svg similarity index 100% rename from client/src/static/icons/brands/pied-piper-square.svg rename to src/static/icons/brands/pied-piper-square.svg diff --git a/client/src/static/icons/brands/pied-piper.svg b/src/static/icons/brands/pied-piper.svg similarity index 100% rename from client/src/static/icons/brands/pied-piper.svg rename to src/static/icons/brands/pied-piper.svg diff --git a/client/src/static/icons/brands/pinterest-p.svg b/src/static/icons/brands/pinterest-p.svg similarity index 100% rename from client/src/static/icons/brands/pinterest-p.svg rename to src/static/icons/brands/pinterest-p.svg diff --git a/client/src/static/icons/brands/pinterest-square.svg b/src/static/icons/brands/pinterest-square.svg similarity index 100% rename from client/src/static/icons/brands/pinterest-square.svg rename to src/static/icons/brands/pinterest-square.svg diff --git a/client/src/static/icons/brands/pinterest.svg b/src/static/icons/brands/pinterest.svg similarity index 100% rename from client/src/static/icons/brands/pinterest.svg rename to src/static/icons/brands/pinterest.svg diff --git a/client/src/static/icons/brands/playstation.svg b/src/static/icons/brands/playstation.svg similarity index 100% rename from client/src/static/icons/brands/playstation.svg rename to src/static/icons/brands/playstation.svg diff --git a/client/src/static/icons/brands/product-hunt.svg b/src/static/icons/brands/product-hunt.svg similarity index 100% rename from client/src/static/icons/brands/product-hunt.svg rename to src/static/icons/brands/product-hunt.svg diff --git a/client/src/static/icons/brands/pushed.svg b/src/static/icons/brands/pushed.svg similarity index 100% rename from client/src/static/icons/brands/pushed.svg rename to src/static/icons/brands/pushed.svg diff --git a/client/src/static/icons/brands/python.svg b/src/static/icons/brands/python.svg similarity index 100% rename from client/src/static/icons/brands/python.svg rename to src/static/icons/brands/python.svg diff --git a/client/src/static/icons/brands/qq.svg b/src/static/icons/brands/qq.svg similarity index 100% rename from client/src/static/icons/brands/qq.svg rename to src/static/icons/brands/qq.svg diff --git a/client/src/static/icons/brands/quinscape.svg b/src/static/icons/brands/quinscape.svg similarity index 100% rename from client/src/static/icons/brands/quinscape.svg rename to src/static/icons/brands/quinscape.svg diff --git a/client/src/static/icons/brands/quora.svg b/src/static/icons/brands/quora.svg similarity index 100% rename from client/src/static/icons/brands/quora.svg rename to src/static/icons/brands/quora.svg diff --git a/client/src/static/icons/brands/r-project.svg b/src/static/icons/brands/r-project.svg similarity index 100% rename from client/src/static/icons/brands/r-project.svg rename to src/static/icons/brands/r-project.svg diff --git a/client/src/static/icons/brands/raspberry-pi.svg b/src/static/icons/brands/raspberry-pi.svg similarity index 100% rename from client/src/static/icons/brands/raspberry-pi.svg rename to src/static/icons/brands/raspberry-pi.svg diff --git a/client/src/static/icons/brands/ravelry.svg b/src/static/icons/brands/ravelry.svg similarity index 100% rename from client/src/static/icons/brands/ravelry.svg rename to src/static/icons/brands/ravelry.svg diff --git a/client/src/static/icons/brands/react.svg b/src/static/icons/brands/react.svg similarity index 100% rename from client/src/static/icons/brands/react.svg rename to src/static/icons/brands/react.svg diff --git a/client/src/static/icons/brands/reacteurope.svg b/src/static/icons/brands/reacteurope.svg similarity index 100% rename from client/src/static/icons/brands/reacteurope.svg rename to src/static/icons/brands/reacteurope.svg diff --git a/client/src/static/icons/brands/readme.svg b/src/static/icons/brands/readme.svg similarity index 100% rename from client/src/static/icons/brands/readme.svg rename to src/static/icons/brands/readme.svg diff --git a/client/src/static/icons/brands/rebel.svg b/src/static/icons/brands/rebel.svg similarity index 100% rename from client/src/static/icons/brands/rebel.svg rename to src/static/icons/brands/rebel.svg diff --git a/client/src/static/icons/brands/red-river.svg b/src/static/icons/brands/red-river.svg similarity index 100% rename from client/src/static/icons/brands/red-river.svg rename to src/static/icons/brands/red-river.svg diff --git a/client/src/static/icons/brands/reddit-alien.svg b/src/static/icons/brands/reddit-alien.svg similarity index 100% rename from client/src/static/icons/brands/reddit-alien.svg rename to src/static/icons/brands/reddit-alien.svg diff --git a/client/src/static/icons/brands/reddit-square.svg b/src/static/icons/brands/reddit-square.svg similarity index 100% rename from client/src/static/icons/brands/reddit-square.svg rename to src/static/icons/brands/reddit-square.svg diff --git a/client/src/static/icons/brands/reddit.svg b/src/static/icons/brands/reddit.svg similarity index 100% rename from client/src/static/icons/brands/reddit.svg rename to src/static/icons/brands/reddit.svg diff --git a/client/src/static/icons/brands/redhat.svg b/src/static/icons/brands/redhat.svg similarity index 100% rename from client/src/static/icons/brands/redhat.svg rename to src/static/icons/brands/redhat.svg diff --git a/client/src/static/icons/brands/renren.svg b/src/static/icons/brands/renren.svg similarity index 100% rename from client/src/static/icons/brands/renren.svg rename to src/static/icons/brands/renren.svg diff --git a/client/src/static/icons/brands/replyd.svg b/src/static/icons/brands/replyd.svg similarity index 100% rename from client/src/static/icons/brands/replyd.svg rename to src/static/icons/brands/replyd.svg diff --git a/client/src/static/icons/brands/researchgate.svg b/src/static/icons/brands/researchgate.svg similarity index 100% rename from client/src/static/icons/brands/researchgate.svg rename to src/static/icons/brands/researchgate.svg diff --git a/client/src/static/icons/brands/resolving.svg b/src/static/icons/brands/resolving.svg similarity index 100% rename from client/src/static/icons/brands/resolving.svg rename to src/static/icons/brands/resolving.svg diff --git a/client/src/static/icons/brands/rev.svg b/src/static/icons/brands/rev.svg similarity index 100% rename from client/src/static/icons/brands/rev.svg rename to src/static/icons/brands/rev.svg diff --git a/client/src/static/icons/brands/rocketchat.svg b/src/static/icons/brands/rocketchat.svg similarity index 100% rename from client/src/static/icons/brands/rocketchat.svg rename to src/static/icons/brands/rocketchat.svg diff --git a/client/src/static/icons/brands/rockrms.svg b/src/static/icons/brands/rockrms.svg similarity index 100% rename from client/src/static/icons/brands/rockrms.svg rename to src/static/icons/brands/rockrms.svg diff --git a/client/src/static/icons/brands/safari.svg b/src/static/icons/brands/safari.svg similarity index 100% rename from client/src/static/icons/brands/safari.svg rename to src/static/icons/brands/safari.svg diff --git a/client/src/static/icons/brands/salesforce.svg b/src/static/icons/brands/salesforce.svg similarity index 100% rename from client/src/static/icons/brands/salesforce.svg rename to src/static/icons/brands/salesforce.svg diff --git a/client/src/static/icons/brands/sass.svg b/src/static/icons/brands/sass.svg similarity index 100% rename from client/src/static/icons/brands/sass.svg rename to src/static/icons/brands/sass.svg diff --git a/client/src/static/icons/brands/schlix.svg b/src/static/icons/brands/schlix.svg similarity index 100% rename from client/src/static/icons/brands/schlix.svg rename to src/static/icons/brands/schlix.svg diff --git a/client/src/static/icons/brands/scribd.svg b/src/static/icons/brands/scribd.svg similarity index 100% rename from client/src/static/icons/brands/scribd.svg rename to src/static/icons/brands/scribd.svg diff --git a/client/src/static/icons/brands/searchengin.svg b/src/static/icons/brands/searchengin.svg similarity index 100% rename from client/src/static/icons/brands/searchengin.svg rename to src/static/icons/brands/searchengin.svg diff --git a/client/src/static/icons/brands/sellcast.svg b/src/static/icons/brands/sellcast.svg similarity index 100% rename from client/src/static/icons/brands/sellcast.svg rename to src/static/icons/brands/sellcast.svg diff --git a/client/src/static/icons/brands/sellsy.svg b/src/static/icons/brands/sellsy.svg similarity index 100% rename from client/src/static/icons/brands/sellsy.svg rename to src/static/icons/brands/sellsy.svg diff --git a/client/src/static/icons/brands/servicestack.svg b/src/static/icons/brands/servicestack.svg similarity index 100% rename from client/src/static/icons/brands/servicestack.svg rename to src/static/icons/brands/servicestack.svg diff --git a/client/src/static/icons/brands/shirtsinbulk.svg b/src/static/icons/brands/shirtsinbulk.svg similarity index 100% rename from client/src/static/icons/brands/shirtsinbulk.svg rename to src/static/icons/brands/shirtsinbulk.svg diff --git a/client/src/static/icons/brands/shopware.svg b/src/static/icons/brands/shopware.svg similarity index 100% rename from client/src/static/icons/brands/shopware.svg rename to src/static/icons/brands/shopware.svg diff --git a/client/src/static/icons/brands/simplybuilt.svg b/src/static/icons/brands/simplybuilt.svg similarity index 100% rename from client/src/static/icons/brands/simplybuilt.svg rename to src/static/icons/brands/simplybuilt.svg diff --git a/client/src/static/icons/brands/sistrix.svg b/src/static/icons/brands/sistrix.svg similarity index 100% rename from client/src/static/icons/brands/sistrix.svg rename to src/static/icons/brands/sistrix.svg diff --git a/client/src/static/icons/brands/sith.svg b/src/static/icons/brands/sith.svg similarity index 100% rename from client/src/static/icons/brands/sith.svg rename to src/static/icons/brands/sith.svg diff --git a/client/src/static/icons/brands/sketch.svg b/src/static/icons/brands/sketch.svg similarity index 100% rename from client/src/static/icons/brands/sketch.svg rename to src/static/icons/brands/sketch.svg diff --git a/client/src/static/icons/brands/skyatlas.svg b/src/static/icons/brands/skyatlas.svg similarity index 100% rename from client/src/static/icons/brands/skyatlas.svg rename to src/static/icons/brands/skyatlas.svg diff --git a/client/src/static/icons/brands/skype.svg b/src/static/icons/brands/skype.svg similarity index 100% rename from client/src/static/icons/brands/skype.svg rename to src/static/icons/brands/skype.svg diff --git a/client/src/static/icons/brands/slack-hash.svg b/src/static/icons/brands/slack-hash.svg similarity index 100% rename from client/src/static/icons/brands/slack-hash.svg rename to src/static/icons/brands/slack-hash.svg diff --git a/client/src/static/icons/brands/slack.svg b/src/static/icons/brands/slack.svg similarity index 100% rename from client/src/static/icons/brands/slack.svg rename to src/static/icons/brands/slack.svg diff --git a/client/src/static/icons/brands/slideshare.svg b/src/static/icons/brands/slideshare.svg similarity index 100% rename from client/src/static/icons/brands/slideshare.svg rename to src/static/icons/brands/slideshare.svg diff --git a/client/src/static/icons/brands/snapchat-ghost.svg b/src/static/icons/brands/snapchat-ghost.svg similarity index 100% rename from client/src/static/icons/brands/snapchat-ghost.svg rename to src/static/icons/brands/snapchat-ghost.svg diff --git a/client/src/static/icons/brands/snapchat-square.svg b/src/static/icons/brands/snapchat-square.svg similarity index 100% rename from client/src/static/icons/brands/snapchat-square.svg rename to src/static/icons/brands/snapchat-square.svg diff --git a/client/src/static/icons/brands/snapchat.svg b/src/static/icons/brands/snapchat.svg similarity index 100% rename from client/src/static/icons/brands/snapchat.svg rename to src/static/icons/brands/snapchat.svg diff --git a/client/src/static/icons/brands/soundcloud.svg b/src/static/icons/brands/soundcloud.svg similarity index 100% rename from client/src/static/icons/brands/soundcloud.svg rename to src/static/icons/brands/soundcloud.svg diff --git a/client/src/static/icons/brands/sourcetree.svg b/src/static/icons/brands/sourcetree.svg similarity index 100% rename from client/src/static/icons/brands/sourcetree.svg rename to src/static/icons/brands/sourcetree.svg diff --git a/client/src/static/icons/brands/speakap.svg b/src/static/icons/brands/speakap.svg similarity index 100% rename from client/src/static/icons/brands/speakap.svg rename to src/static/icons/brands/speakap.svg diff --git a/client/src/static/icons/brands/speaker-deck.svg b/src/static/icons/brands/speaker-deck.svg similarity index 100% rename from client/src/static/icons/brands/speaker-deck.svg rename to src/static/icons/brands/speaker-deck.svg diff --git a/client/src/static/icons/brands/spotify.svg b/src/static/icons/brands/spotify.svg similarity index 100% rename from client/src/static/icons/brands/spotify.svg rename to src/static/icons/brands/spotify.svg diff --git a/client/src/static/icons/brands/squarespace.svg b/src/static/icons/brands/squarespace.svg similarity index 100% rename from client/src/static/icons/brands/squarespace.svg rename to src/static/icons/brands/squarespace.svg diff --git a/client/src/static/icons/brands/stack-exchange.svg b/src/static/icons/brands/stack-exchange.svg similarity index 100% rename from client/src/static/icons/brands/stack-exchange.svg rename to src/static/icons/brands/stack-exchange.svg diff --git a/client/src/static/icons/brands/stack-overflow.svg b/src/static/icons/brands/stack-overflow.svg similarity index 100% rename from client/src/static/icons/brands/stack-overflow.svg rename to src/static/icons/brands/stack-overflow.svg diff --git a/client/src/static/icons/brands/stackpath.svg b/src/static/icons/brands/stackpath.svg similarity index 100% rename from client/src/static/icons/brands/stackpath.svg rename to src/static/icons/brands/stackpath.svg diff --git a/client/src/static/icons/brands/staylinked.svg b/src/static/icons/brands/staylinked.svg similarity index 100% rename from client/src/static/icons/brands/staylinked.svg rename to src/static/icons/brands/staylinked.svg diff --git a/client/src/static/icons/brands/steam-square.svg b/src/static/icons/brands/steam-square.svg similarity index 100% rename from client/src/static/icons/brands/steam-square.svg rename to src/static/icons/brands/steam-square.svg diff --git a/client/src/static/icons/brands/steam-symbol.svg b/src/static/icons/brands/steam-symbol.svg similarity index 100% rename from client/src/static/icons/brands/steam-symbol.svg rename to src/static/icons/brands/steam-symbol.svg diff --git a/client/src/static/icons/brands/steam.svg b/src/static/icons/brands/steam.svg similarity index 100% rename from client/src/static/icons/brands/steam.svg rename to src/static/icons/brands/steam.svg diff --git a/client/src/static/icons/brands/sticker-mule.svg b/src/static/icons/brands/sticker-mule.svg similarity index 100% rename from client/src/static/icons/brands/sticker-mule.svg rename to src/static/icons/brands/sticker-mule.svg diff --git a/client/src/static/icons/brands/strava.svg b/src/static/icons/brands/strava.svg similarity index 100% rename from client/src/static/icons/brands/strava.svg rename to src/static/icons/brands/strava.svg diff --git a/client/src/static/icons/brands/stripe-s.svg b/src/static/icons/brands/stripe-s.svg similarity index 100% rename from client/src/static/icons/brands/stripe-s.svg rename to src/static/icons/brands/stripe-s.svg diff --git a/client/src/static/icons/brands/stripe.svg b/src/static/icons/brands/stripe.svg similarity index 100% rename from client/src/static/icons/brands/stripe.svg rename to src/static/icons/brands/stripe.svg diff --git a/client/src/static/icons/brands/studiovinari.svg b/src/static/icons/brands/studiovinari.svg similarity index 100% rename from client/src/static/icons/brands/studiovinari.svg rename to src/static/icons/brands/studiovinari.svg diff --git a/client/src/static/icons/brands/stumbleupon-circle.svg b/src/static/icons/brands/stumbleupon-circle.svg similarity index 100% rename from client/src/static/icons/brands/stumbleupon-circle.svg rename to src/static/icons/brands/stumbleupon-circle.svg diff --git a/client/src/static/icons/brands/stumbleupon.svg b/src/static/icons/brands/stumbleupon.svg similarity index 100% rename from client/src/static/icons/brands/stumbleupon.svg rename to src/static/icons/brands/stumbleupon.svg diff --git a/client/src/static/icons/brands/superpowers.svg b/src/static/icons/brands/superpowers.svg similarity index 100% rename from client/src/static/icons/brands/superpowers.svg rename to src/static/icons/brands/superpowers.svg diff --git a/client/src/static/icons/brands/supple.svg b/src/static/icons/brands/supple.svg similarity index 100% rename from client/src/static/icons/brands/supple.svg rename to src/static/icons/brands/supple.svg diff --git a/client/src/static/icons/brands/suse.svg b/src/static/icons/brands/suse.svg similarity index 100% rename from client/src/static/icons/brands/suse.svg rename to src/static/icons/brands/suse.svg diff --git a/client/src/static/icons/brands/swift.svg b/src/static/icons/brands/swift.svg similarity index 100% rename from client/src/static/icons/brands/swift.svg rename to src/static/icons/brands/swift.svg diff --git a/client/src/static/icons/brands/symfony.svg b/src/static/icons/brands/symfony.svg similarity index 100% rename from client/src/static/icons/brands/symfony.svg rename to src/static/icons/brands/symfony.svg diff --git a/client/src/static/icons/brands/teamspeak.svg b/src/static/icons/brands/teamspeak.svg similarity index 100% rename from client/src/static/icons/brands/teamspeak.svg rename to src/static/icons/brands/teamspeak.svg diff --git a/client/src/static/icons/brands/telegram-plane.svg b/src/static/icons/brands/telegram-plane.svg similarity index 100% rename from client/src/static/icons/brands/telegram-plane.svg rename to src/static/icons/brands/telegram-plane.svg diff --git a/client/src/static/icons/brands/telegram.svg b/src/static/icons/brands/telegram.svg similarity index 100% rename from client/src/static/icons/brands/telegram.svg rename to src/static/icons/brands/telegram.svg diff --git a/client/src/static/icons/brands/tencent-weibo.svg b/src/static/icons/brands/tencent-weibo.svg similarity index 100% rename from client/src/static/icons/brands/tencent-weibo.svg rename to src/static/icons/brands/tencent-weibo.svg diff --git a/client/src/static/icons/brands/the-red-yeti.svg b/src/static/icons/brands/the-red-yeti.svg similarity index 100% rename from client/src/static/icons/brands/the-red-yeti.svg rename to src/static/icons/brands/the-red-yeti.svg diff --git a/client/src/static/icons/brands/themeco.svg b/src/static/icons/brands/themeco.svg similarity index 100% rename from client/src/static/icons/brands/themeco.svg rename to src/static/icons/brands/themeco.svg diff --git a/client/src/static/icons/brands/themeisle.svg b/src/static/icons/brands/themeisle.svg similarity index 100% rename from client/src/static/icons/brands/themeisle.svg rename to src/static/icons/brands/themeisle.svg diff --git a/client/src/static/icons/brands/think-peaks.svg b/src/static/icons/brands/think-peaks.svg similarity index 100% rename from client/src/static/icons/brands/think-peaks.svg rename to src/static/icons/brands/think-peaks.svg diff --git a/client/src/static/icons/brands/trade-federation.svg b/src/static/icons/brands/trade-federation.svg similarity index 100% rename from client/src/static/icons/brands/trade-federation.svg rename to src/static/icons/brands/trade-federation.svg diff --git a/client/src/static/icons/brands/trello.svg b/src/static/icons/brands/trello.svg similarity index 100% rename from client/src/static/icons/brands/trello.svg rename to src/static/icons/brands/trello.svg diff --git a/client/src/static/icons/brands/tripadvisor.svg b/src/static/icons/brands/tripadvisor.svg similarity index 100% rename from client/src/static/icons/brands/tripadvisor.svg rename to src/static/icons/brands/tripadvisor.svg diff --git a/client/src/static/icons/brands/tumblr-square.svg b/src/static/icons/brands/tumblr-square.svg similarity index 100% rename from client/src/static/icons/brands/tumblr-square.svg rename to src/static/icons/brands/tumblr-square.svg diff --git a/client/src/static/icons/brands/tumblr.svg b/src/static/icons/brands/tumblr.svg similarity index 100% rename from client/src/static/icons/brands/tumblr.svg rename to src/static/icons/brands/tumblr.svg diff --git a/client/src/static/icons/brands/twitch.svg b/src/static/icons/brands/twitch.svg similarity index 100% rename from client/src/static/icons/brands/twitch.svg rename to src/static/icons/brands/twitch.svg diff --git a/client/src/static/icons/brands/twitter-square.svg b/src/static/icons/brands/twitter-square.svg similarity index 100% rename from client/src/static/icons/brands/twitter-square.svg rename to src/static/icons/brands/twitter-square.svg diff --git a/client/src/static/icons/brands/twitter.svg b/src/static/icons/brands/twitter.svg similarity index 100% rename from client/src/static/icons/brands/twitter.svg rename to src/static/icons/brands/twitter.svg diff --git a/client/src/static/icons/brands/typo3.svg b/src/static/icons/brands/typo3.svg similarity index 100% rename from client/src/static/icons/brands/typo3.svg rename to src/static/icons/brands/typo3.svg diff --git a/client/src/static/icons/brands/uber.svg b/src/static/icons/brands/uber.svg similarity index 100% rename from client/src/static/icons/brands/uber.svg rename to src/static/icons/brands/uber.svg diff --git a/client/src/static/icons/brands/ubuntu.svg b/src/static/icons/brands/ubuntu.svg similarity index 100% rename from client/src/static/icons/brands/ubuntu.svg rename to src/static/icons/brands/ubuntu.svg diff --git a/client/src/static/icons/brands/uikit.svg b/src/static/icons/brands/uikit.svg similarity index 100% rename from client/src/static/icons/brands/uikit.svg rename to src/static/icons/brands/uikit.svg diff --git a/client/src/static/icons/brands/umbraco.svg b/src/static/icons/brands/umbraco.svg similarity index 100% rename from client/src/static/icons/brands/umbraco.svg rename to src/static/icons/brands/umbraco.svg diff --git a/client/src/static/icons/brands/uniregistry.svg b/src/static/icons/brands/uniregistry.svg similarity index 100% rename from client/src/static/icons/brands/uniregistry.svg rename to src/static/icons/brands/uniregistry.svg diff --git a/client/src/static/icons/brands/unity.svg b/src/static/icons/brands/unity.svg similarity index 100% rename from client/src/static/icons/brands/unity.svg rename to src/static/icons/brands/unity.svg diff --git a/client/src/static/icons/brands/untappd.svg b/src/static/icons/brands/untappd.svg similarity index 100% rename from client/src/static/icons/brands/untappd.svg rename to src/static/icons/brands/untappd.svg diff --git a/client/src/static/icons/brands/ups.svg b/src/static/icons/brands/ups.svg similarity index 100% rename from client/src/static/icons/brands/ups.svg rename to src/static/icons/brands/ups.svg diff --git a/client/src/static/icons/brands/usb.svg b/src/static/icons/brands/usb.svg similarity index 100% rename from client/src/static/icons/brands/usb.svg rename to src/static/icons/brands/usb.svg diff --git a/client/src/static/icons/brands/usps.svg b/src/static/icons/brands/usps.svg similarity index 100% rename from client/src/static/icons/brands/usps.svg rename to src/static/icons/brands/usps.svg diff --git a/client/src/static/icons/brands/ussunnah.svg b/src/static/icons/brands/ussunnah.svg similarity index 100% rename from client/src/static/icons/brands/ussunnah.svg rename to src/static/icons/brands/ussunnah.svg diff --git a/client/src/static/icons/brands/vaadin.svg b/src/static/icons/brands/vaadin.svg similarity index 100% rename from client/src/static/icons/brands/vaadin.svg rename to src/static/icons/brands/vaadin.svg diff --git a/client/src/static/icons/brands/viacoin.svg b/src/static/icons/brands/viacoin.svg similarity index 100% rename from client/src/static/icons/brands/viacoin.svg rename to src/static/icons/brands/viacoin.svg diff --git a/client/src/static/icons/brands/viadeo-square.svg b/src/static/icons/brands/viadeo-square.svg similarity index 100% rename from client/src/static/icons/brands/viadeo-square.svg rename to src/static/icons/brands/viadeo-square.svg diff --git a/client/src/static/icons/brands/viadeo.svg b/src/static/icons/brands/viadeo.svg similarity index 100% rename from client/src/static/icons/brands/viadeo.svg rename to src/static/icons/brands/viadeo.svg diff --git a/client/src/static/icons/brands/viber.svg b/src/static/icons/brands/viber.svg similarity index 100% rename from client/src/static/icons/brands/viber.svg rename to src/static/icons/brands/viber.svg diff --git a/client/src/static/icons/brands/vimeo-square.svg b/src/static/icons/brands/vimeo-square.svg similarity index 100% rename from client/src/static/icons/brands/vimeo-square.svg rename to src/static/icons/brands/vimeo-square.svg diff --git a/client/src/static/icons/brands/vimeo-v.svg b/src/static/icons/brands/vimeo-v.svg similarity index 100% rename from client/src/static/icons/brands/vimeo-v.svg rename to src/static/icons/brands/vimeo-v.svg diff --git a/client/src/static/icons/brands/vimeo.svg b/src/static/icons/brands/vimeo.svg similarity index 100% rename from client/src/static/icons/brands/vimeo.svg rename to src/static/icons/brands/vimeo.svg diff --git a/client/src/static/icons/brands/vine.svg b/src/static/icons/brands/vine.svg similarity index 100% rename from client/src/static/icons/brands/vine.svg rename to src/static/icons/brands/vine.svg diff --git a/client/src/static/icons/brands/vk.svg b/src/static/icons/brands/vk.svg similarity index 100% rename from client/src/static/icons/brands/vk.svg rename to src/static/icons/brands/vk.svg diff --git a/client/src/static/icons/brands/vnv.svg b/src/static/icons/brands/vnv.svg similarity index 100% rename from client/src/static/icons/brands/vnv.svg rename to src/static/icons/brands/vnv.svg diff --git a/client/src/static/icons/brands/vuejs.svg b/src/static/icons/brands/vuejs.svg similarity index 100% rename from client/src/static/icons/brands/vuejs.svg rename to src/static/icons/brands/vuejs.svg diff --git a/client/src/static/icons/brands/waze.svg b/src/static/icons/brands/waze.svg similarity index 100% rename from client/src/static/icons/brands/waze.svg rename to src/static/icons/brands/waze.svg diff --git a/client/src/static/icons/brands/weebly.svg b/src/static/icons/brands/weebly.svg similarity index 100% rename from client/src/static/icons/brands/weebly.svg rename to src/static/icons/brands/weebly.svg diff --git a/client/src/static/icons/brands/weibo.svg b/src/static/icons/brands/weibo.svg similarity index 100% rename from client/src/static/icons/brands/weibo.svg rename to src/static/icons/brands/weibo.svg diff --git a/client/src/static/icons/brands/weixin.svg b/src/static/icons/brands/weixin.svg similarity index 100% rename from client/src/static/icons/brands/weixin.svg rename to src/static/icons/brands/weixin.svg diff --git a/client/src/static/icons/brands/whatsapp-square.svg b/src/static/icons/brands/whatsapp-square.svg similarity index 100% rename from client/src/static/icons/brands/whatsapp-square.svg rename to src/static/icons/brands/whatsapp-square.svg diff --git a/client/src/static/icons/brands/whatsapp.svg b/src/static/icons/brands/whatsapp.svg similarity index 100% rename from client/src/static/icons/brands/whatsapp.svg rename to src/static/icons/brands/whatsapp.svg diff --git a/client/src/static/icons/brands/whmcs.svg b/src/static/icons/brands/whmcs.svg similarity index 100% rename from client/src/static/icons/brands/whmcs.svg rename to src/static/icons/brands/whmcs.svg diff --git a/client/src/static/icons/brands/wikipedia-w.svg b/src/static/icons/brands/wikipedia-w.svg similarity index 100% rename from client/src/static/icons/brands/wikipedia-w.svg rename to src/static/icons/brands/wikipedia-w.svg diff --git a/client/src/static/icons/brands/windows.svg b/src/static/icons/brands/windows.svg similarity index 100% rename from client/src/static/icons/brands/windows.svg rename to src/static/icons/brands/windows.svg diff --git a/client/src/static/icons/brands/wix.svg b/src/static/icons/brands/wix.svg similarity index 100% rename from client/src/static/icons/brands/wix.svg rename to src/static/icons/brands/wix.svg diff --git a/client/src/static/icons/brands/wizards-of-the-coast.svg b/src/static/icons/brands/wizards-of-the-coast.svg similarity index 100% rename from client/src/static/icons/brands/wizards-of-the-coast.svg rename to src/static/icons/brands/wizards-of-the-coast.svg diff --git a/client/src/static/icons/brands/wolf-pack-battalion.svg b/src/static/icons/brands/wolf-pack-battalion.svg similarity index 100% rename from client/src/static/icons/brands/wolf-pack-battalion.svg rename to src/static/icons/brands/wolf-pack-battalion.svg diff --git a/client/src/static/icons/brands/wordpress-simple.svg b/src/static/icons/brands/wordpress-simple.svg similarity index 100% rename from client/src/static/icons/brands/wordpress-simple.svg rename to src/static/icons/brands/wordpress-simple.svg diff --git a/client/src/static/icons/brands/wordpress.svg b/src/static/icons/brands/wordpress.svg similarity index 100% rename from client/src/static/icons/brands/wordpress.svg rename to src/static/icons/brands/wordpress.svg diff --git a/client/src/static/icons/brands/wpbeginner.svg b/src/static/icons/brands/wpbeginner.svg similarity index 100% rename from client/src/static/icons/brands/wpbeginner.svg rename to src/static/icons/brands/wpbeginner.svg diff --git a/client/src/static/icons/brands/wpexplorer.svg b/src/static/icons/brands/wpexplorer.svg similarity index 100% rename from client/src/static/icons/brands/wpexplorer.svg rename to src/static/icons/brands/wpexplorer.svg diff --git a/client/src/static/icons/brands/wpforms.svg b/src/static/icons/brands/wpforms.svg similarity index 100% rename from client/src/static/icons/brands/wpforms.svg rename to src/static/icons/brands/wpforms.svg diff --git a/client/src/static/icons/brands/wpressr.svg b/src/static/icons/brands/wpressr.svg similarity index 100% rename from client/src/static/icons/brands/wpressr.svg rename to src/static/icons/brands/wpressr.svg diff --git a/client/src/static/icons/brands/xbox.svg b/src/static/icons/brands/xbox.svg similarity index 100% rename from client/src/static/icons/brands/xbox.svg rename to src/static/icons/brands/xbox.svg diff --git a/client/src/static/icons/brands/xing-square.svg b/src/static/icons/brands/xing-square.svg similarity index 100% rename from client/src/static/icons/brands/xing-square.svg rename to src/static/icons/brands/xing-square.svg diff --git a/client/src/static/icons/brands/xing.svg b/src/static/icons/brands/xing.svg similarity index 100% rename from client/src/static/icons/brands/xing.svg rename to src/static/icons/brands/xing.svg diff --git a/client/src/static/icons/brands/y-combinator.svg b/src/static/icons/brands/y-combinator.svg similarity index 100% rename from client/src/static/icons/brands/y-combinator.svg rename to src/static/icons/brands/y-combinator.svg diff --git a/client/src/static/icons/brands/yahoo.svg b/src/static/icons/brands/yahoo.svg similarity index 100% rename from client/src/static/icons/brands/yahoo.svg rename to src/static/icons/brands/yahoo.svg diff --git a/client/src/static/icons/brands/yammer.svg b/src/static/icons/brands/yammer.svg similarity index 100% rename from client/src/static/icons/brands/yammer.svg rename to src/static/icons/brands/yammer.svg diff --git a/client/src/static/icons/brands/yandex-international.svg b/src/static/icons/brands/yandex-international.svg similarity index 100% rename from client/src/static/icons/brands/yandex-international.svg rename to src/static/icons/brands/yandex-international.svg diff --git a/client/src/static/icons/brands/yandex.svg b/src/static/icons/brands/yandex.svg similarity index 100% rename from client/src/static/icons/brands/yandex.svg rename to src/static/icons/brands/yandex.svg diff --git a/client/src/static/icons/brands/yarn.svg b/src/static/icons/brands/yarn.svg similarity index 100% rename from client/src/static/icons/brands/yarn.svg rename to src/static/icons/brands/yarn.svg diff --git a/client/src/static/icons/brands/yelp.svg b/src/static/icons/brands/yelp.svg similarity index 100% rename from client/src/static/icons/brands/yelp.svg rename to src/static/icons/brands/yelp.svg diff --git a/client/src/static/icons/brands/yoast.svg b/src/static/icons/brands/yoast.svg similarity index 100% rename from client/src/static/icons/brands/yoast.svg rename to src/static/icons/brands/yoast.svg diff --git a/client/src/static/icons/brands/youtube-square.svg b/src/static/icons/brands/youtube-square.svg similarity index 100% rename from client/src/static/icons/brands/youtube-square.svg rename to src/static/icons/brands/youtube-square.svg diff --git a/client/src/static/icons/brands/youtube.svg b/src/static/icons/brands/youtube.svg similarity index 100% rename from client/src/static/icons/brands/youtube.svg rename to src/static/icons/brands/youtube.svg diff --git a/client/src/static/icons/brands/zhihu.svg b/src/static/icons/brands/zhihu.svg similarity index 100% rename from client/src/static/icons/brands/zhihu.svg rename to src/static/icons/brands/zhihu.svg diff --git a/client/src/static/icons/duotone/abacus.svg b/src/static/icons/duotone/abacus.svg similarity index 100% rename from client/src/static/icons/duotone/abacus.svg rename to src/static/icons/duotone/abacus.svg diff --git a/client/src/static/icons/duotone/acorn.svg b/src/static/icons/duotone/acorn.svg similarity index 100% rename from client/src/static/icons/duotone/acorn.svg rename to src/static/icons/duotone/acorn.svg diff --git a/client/src/static/icons/duotone/ad.svg b/src/static/icons/duotone/ad.svg similarity index 100% rename from client/src/static/icons/duotone/ad.svg rename to src/static/icons/duotone/ad.svg diff --git a/client/src/static/icons/duotone/address-book.svg b/src/static/icons/duotone/address-book.svg similarity index 100% rename from client/src/static/icons/duotone/address-book.svg rename to src/static/icons/duotone/address-book.svg diff --git a/client/src/static/icons/duotone/address-card.svg b/src/static/icons/duotone/address-card.svg similarity index 100% rename from client/src/static/icons/duotone/address-card.svg rename to src/static/icons/duotone/address-card.svg diff --git a/client/src/static/icons/duotone/adjust.svg b/src/static/icons/duotone/adjust.svg similarity index 100% rename from client/src/static/icons/duotone/adjust.svg rename to src/static/icons/duotone/adjust.svg diff --git a/client/src/static/icons/duotone/air-conditioner.svg b/src/static/icons/duotone/air-conditioner.svg similarity index 100% rename from client/src/static/icons/duotone/air-conditioner.svg rename to src/static/icons/duotone/air-conditioner.svg diff --git a/client/src/static/icons/duotone/air-freshener.svg b/src/static/icons/duotone/air-freshener.svg similarity index 100% rename from client/src/static/icons/duotone/air-freshener.svg rename to src/static/icons/duotone/air-freshener.svg diff --git a/client/src/static/icons/duotone/alarm-clock.svg b/src/static/icons/duotone/alarm-clock.svg similarity index 100% rename from client/src/static/icons/duotone/alarm-clock.svg rename to src/static/icons/duotone/alarm-clock.svg diff --git a/client/src/static/icons/duotone/alarm-exclamation.svg b/src/static/icons/duotone/alarm-exclamation.svg similarity index 100% rename from client/src/static/icons/duotone/alarm-exclamation.svg rename to src/static/icons/duotone/alarm-exclamation.svg diff --git a/client/src/static/icons/duotone/alarm-plus.svg b/src/static/icons/duotone/alarm-plus.svg similarity index 100% rename from client/src/static/icons/duotone/alarm-plus.svg rename to src/static/icons/duotone/alarm-plus.svg diff --git a/client/src/static/icons/duotone/alarm-snooze.svg b/src/static/icons/duotone/alarm-snooze.svg similarity index 100% rename from client/src/static/icons/duotone/alarm-snooze.svg rename to src/static/icons/duotone/alarm-snooze.svg diff --git a/client/src/static/icons/duotone/album-collection.svg b/src/static/icons/duotone/album-collection.svg similarity index 100% rename from client/src/static/icons/duotone/album-collection.svg rename to src/static/icons/duotone/album-collection.svg diff --git a/client/src/static/icons/duotone/album.svg b/src/static/icons/duotone/album.svg similarity index 100% rename from client/src/static/icons/duotone/album.svg rename to src/static/icons/duotone/album.svg diff --git a/client/src/static/icons/duotone/alicorn.svg b/src/static/icons/duotone/alicorn.svg similarity index 100% rename from client/src/static/icons/duotone/alicorn.svg rename to src/static/icons/duotone/alicorn.svg diff --git a/client/src/static/icons/duotone/alien-monster.svg b/src/static/icons/duotone/alien-monster.svg similarity index 100% rename from client/src/static/icons/duotone/alien-monster.svg rename to src/static/icons/duotone/alien-monster.svg diff --git a/client/src/static/icons/duotone/alien.svg b/src/static/icons/duotone/alien.svg similarity index 100% rename from client/src/static/icons/duotone/alien.svg rename to src/static/icons/duotone/alien.svg diff --git a/client/src/static/icons/duotone/align-center.svg b/src/static/icons/duotone/align-center.svg similarity index 100% rename from client/src/static/icons/duotone/align-center.svg rename to src/static/icons/duotone/align-center.svg diff --git a/client/src/static/icons/duotone/align-justify.svg b/src/static/icons/duotone/align-justify.svg similarity index 100% rename from client/src/static/icons/duotone/align-justify.svg rename to src/static/icons/duotone/align-justify.svg diff --git a/client/src/static/icons/duotone/align-left.svg b/src/static/icons/duotone/align-left.svg similarity index 100% rename from client/src/static/icons/duotone/align-left.svg rename to src/static/icons/duotone/align-left.svg diff --git a/client/src/static/icons/duotone/align-right.svg b/src/static/icons/duotone/align-right.svg similarity index 100% rename from client/src/static/icons/duotone/align-right.svg rename to src/static/icons/duotone/align-right.svg diff --git a/client/src/static/icons/duotone/align-slash.svg b/src/static/icons/duotone/align-slash.svg similarity index 100% rename from client/src/static/icons/duotone/align-slash.svg rename to src/static/icons/duotone/align-slash.svg diff --git a/client/src/static/icons/duotone/allergies.svg b/src/static/icons/duotone/allergies.svg similarity index 100% rename from client/src/static/icons/duotone/allergies.svg rename to src/static/icons/duotone/allergies.svg diff --git a/client/src/static/icons/duotone/ambulance.svg b/src/static/icons/duotone/ambulance.svg similarity index 100% rename from client/src/static/icons/duotone/ambulance.svg rename to src/static/icons/duotone/ambulance.svg diff --git a/client/src/static/icons/duotone/american-sign-language-interpreting.svg b/src/static/icons/duotone/american-sign-language-interpreting.svg similarity index 100% rename from client/src/static/icons/duotone/american-sign-language-interpreting.svg rename to src/static/icons/duotone/american-sign-language-interpreting.svg diff --git a/client/src/static/icons/duotone/amp-guitar.svg b/src/static/icons/duotone/amp-guitar.svg similarity index 100% rename from client/src/static/icons/duotone/amp-guitar.svg rename to src/static/icons/duotone/amp-guitar.svg diff --git a/client/src/static/icons/duotone/analytics.svg b/src/static/icons/duotone/analytics.svg similarity index 100% rename from client/src/static/icons/duotone/analytics.svg rename to src/static/icons/duotone/analytics.svg diff --git a/client/src/static/icons/duotone/anchor.svg b/src/static/icons/duotone/anchor.svg similarity index 100% rename from client/src/static/icons/duotone/anchor.svg rename to src/static/icons/duotone/anchor.svg diff --git a/client/src/static/icons/duotone/angel.svg b/src/static/icons/duotone/angel.svg similarity index 100% rename from client/src/static/icons/duotone/angel.svg rename to src/static/icons/duotone/angel.svg diff --git a/client/src/static/icons/duotone/angle-double-down.svg b/src/static/icons/duotone/angle-double-down.svg similarity index 100% rename from client/src/static/icons/duotone/angle-double-down.svg rename to src/static/icons/duotone/angle-double-down.svg diff --git a/client/src/static/icons/duotone/angle-double-left.svg b/src/static/icons/duotone/angle-double-left.svg similarity index 100% rename from client/src/static/icons/duotone/angle-double-left.svg rename to src/static/icons/duotone/angle-double-left.svg diff --git a/client/src/static/icons/duotone/angle-double-right.svg b/src/static/icons/duotone/angle-double-right.svg similarity index 100% rename from client/src/static/icons/duotone/angle-double-right.svg rename to src/static/icons/duotone/angle-double-right.svg diff --git a/client/src/static/icons/duotone/angle-double-up.svg b/src/static/icons/duotone/angle-double-up.svg similarity index 100% rename from client/src/static/icons/duotone/angle-double-up.svg rename to src/static/icons/duotone/angle-double-up.svg diff --git a/client/src/static/icons/duotone/angle-down.svg b/src/static/icons/duotone/angle-down.svg similarity index 100% rename from client/src/static/icons/duotone/angle-down.svg rename to src/static/icons/duotone/angle-down.svg diff --git a/client/src/static/icons/duotone/angle-left.svg b/src/static/icons/duotone/angle-left.svg similarity index 100% rename from client/src/static/icons/duotone/angle-left.svg rename to src/static/icons/duotone/angle-left.svg diff --git a/client/src/static/icons/duotone/angle-right.svg b/src/static/icons/duotone/angle-right.svg similarity index 100% rename from client/src/static/icons/duotone/angle-right.svg rename to src/static/icons/duotone/angle-right.svg diff --git a/client/src/static/icons/duotone/angle-up.svg b/src/static/icons/duotone/angle-up.svg similarity index 100% rename from client/src/static/icons/duotone/angle-up.svg rename to src/static/icons/duotone/angle-up.svg diff --git a/client/src/static/icons/duotone/angry.svg b/src/static/icons/duotone/angry.svg similarity index 100% rename from client/src/static/icons/duotone/angry.svg rename to src/static/icons/duotone/angry.svg diff --git a/client/src/static/icons/duotone/ankh.svg b/src/static/icons/duotone/ankh.svg similarity index 100% rename from client/src/static/icons/duotone/ankh.svg rename to src/static/icons/duotone/ankh.svg diff --git a/client/src/static/icons/duotone/apple-alt.svg b/src/static/icons/duotone/apple-alt.svg similarity index 100% rename from client/src/static/icons/duotone/apple-alt.svg rename to src/static/icons/duotone/apple-alt.svg diff --git a/client/src/static/icons/duotone/apple-crate.svg b/src/static/icons/duotone/apple-crate.svg similarity index 100% rename from client/src/static/icons/duotone/apple-crate.svg rename to src/static/icons/duotone/apple-crate.svg diff --git a/client/src/static/icons/duotone/archive.svg b/src/static/icons/duotone/archive.svg similarity index 100% rename from client/src/static/icons/duotone/archive.svg rename to src/static/icons/duotone/archive.svg diff --git a/client/src/static/icons/duotone/archway.svg b/src/static/icons/duotone/archway.svg similarity index 100% rename from client/src/static/icons/duotone/archway.svg rename to src/static/icons/duotone/archway.svg diff --git a/client/src/static/icons/duotone/arrow-alt-circle-down.svg b/src/static/icons/duotone/arrow-alt-circle-down.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-circle-down.svg rename to src/static/icons/duotone/arrow-alt-circle-down.svg diff --git a/client/src/static/icons/duotone/arrow-alt-circle-left.svg b/src/static/icons/duotone/arrow-alt-circle-left.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-circle-left.svg rename to src/static/icons/duotone/arrow-alt-circle-left.svg diff --git a/client/src/static/icons/duotone/arrow-alt-circle-right.svg b/src/static/icons/duotone/arrow-alt-circle-right.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-circle-right.svg rename to src/static/icons/duotone/arrow-alt-circle-right.svg diff --git a/client/src/static/icons/duotone/arrow-alt-circle-up.svg b/src/static/icons/duotone/arrow-alt-circle-up.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-circle-up.svg rename to src/static/icons/duotone/arrow-alt-circle-up.svg diff --git a/client/src/static/icons/duotone/arrow-alt-down.svg b/src/static/icons/duotone/arrow-alt-down.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-down.svg rename to src/static/icons/duotone/arrow-alt-down.svg diff --git a/client/src/static/icons/duotone/arrow-alt-from-bottom.svg b/src/static/icons/duotone/arrow-alt-from-bottom.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-from-bottom.svg rename to src/static/icons/duotone/arrow-alt-from-bottom.svg diff --git a/client/src/static/icons/duotone/arrow-alt-from-left.svg b/src/static/icons/duotone/arrow-alt-from-left.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-from-left.svg rename to src/static/icons/duotone/arrow-alt-from-left.svg diff --git a/client/src/static/icons/duotone/arrow-alt-from-right.svg b/src/static/icons/duotone/arrow-alt-from-right.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-from-right.svg rename to src/static/icons/duotone/arrow-alt-from-right.svg diff --git a/client/src/static/icons/duotone/arrow-alt-from-top.svg b/src/static/icons/duotone/arrow-alt-from-top.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-from-top.svg rename to src/static/icons/duotone/arrow-alt-from-top.svg diff --git a/client/src/static/icons/duotone/arrow-alt-left.svg b/src/static/icons/duotone/arrow-alt-left.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-left.svg rename to src/static/icons/duotone/arrow-alt-left.svg diff --git a/client/src/static/icons/duotone/arrow-alt-right.svg b/src/static/icons/duotone/arrow-alt-right.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-right.svg rename to src/static/icons/duotone/arrow-alt-right.svg diff --git a/client/src/static/icons/duotone/arrow-alt-square-down.svg b/src/static/icons/duotone/arrow-alt-square-down.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-square-down.svg rename to src/static/icons/duotone/arrow-alt-square-down.svg diff --git a/client/src/static/icons/duotone/arrow-alt-square-left.svg b/src/static/icons/duotone/arrow-alt-square-left.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-square-left.svg rename to src/static/icons/duotone/arrow-alt-square-left.svg diff --git a/client/src/static/icons/duotone/arrow-alt-square-right.svg b/src/static/icons/duotone/arrow-alt-square-right.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-square-right.svg rename to src/static/icons/duotone/arrow-alt-square-right.svg diff --git a/client/src/static/icons/duotone/arrow-alt-square-up.svg b/src/static/icons/duotone/arrow-alt-square-up.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-square-up.svg rename to src/static/icons/duotone/arrow-alt-square-up.svg diff --git a/client/src/static/icons/duotone/arrow-alt-to-bottom.svg b/src/static/icons/duotone/arrow-alt-to-bottom.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-to-bottom.svg rename to src/static/icons/duotone/arrow-alt-to-bottom.svg diff --git a/client/src/static/icons/duotone/arrow-alt-to-left.svg b/src/static/icons/duotone/arrow-alt-to-left.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-to-left.svg rename to src/static/icons/duotone/arrow-alt-to-left.svg diff --git a/client/src/static/icons/duotone/arrow-alt-to-right.svg b/src/static/icons/duotone/arrow-alt-to-right.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-to-right.svg rename to src/static/icons/duotone/arrow-alt-to-right.svg diff --git a/client/src/static/icons/duotone/arrow-alt-to-top.svg b/src/static/icons/duotone/arrow-alt-to-top.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-to-top.svg rename to src/static/icons/duotone/arrow-alt-to-top.svg diff --git a/client/src/static/icons/duotone/arrow-alt-up.svg b/src/static/icons/duotone/arrow-alt-up.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-alt-up.svg rename to src/static/icons/duotone/arrow-alt-up.svg diff --git a/client/src/static/icons/duotone/arrow-circle-down.svg b/src/static/icons/duotone/arrow-circle-down.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-circle-down.svg rename to src/static/icons/duotone/arrow-circle-down.svg diff --git a/client/src/static/icons/duotone/arrow-circle-left.svg b/src/static/icons/duotone/arrow-circle-left.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-circle-left.svg rename to src/static/icons/duotone/arrow-circle-left.svg diff --git a/client/src/static/icons/duotone/arrow-circle-right.svg b/src/static/icons/duotone/arrow-circle-right.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-circle-right.svg rename to src/static/icons/duotone/arrow-circle-right.svg diff --git a/client/src/static/icons/duotone/arrow-circle-up.svg b/src/static/icons/duotone/arrow-circle-up.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-circle-up.svg rename to src/static/icons/duotone/arrow-circle-up.svg diff --git a/client/src/static/icons/duotone/arrow-down.svg b/src/static/icons/duotone/arrow-down.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-down.svg rename to src/static/icons/duotone/arrow-down.svg diff --git a/client/src/static/icons/duotone/arrow-from-bottom.svg b/src/static/icons/duotone/arrow-from-bottom.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-from-bottom.svg rename to src/static/icons/duotone/arrow-from-bottom.svg diff --git a/client/src/static/icons/duotone/arrow-from-left.svg b/src/static/icons/duotone/arrow-from-left.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-from-left.svg rename to src/static/icons/duotone/arrow-from-left.svg diff --git a/client/src/static/icons/duotone/arrow-from-right.svg b/src/static/icons/duotone/arrow-from-right.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-from-right.svg rename to src/static/icons/duotone/arrow-from-right.svg diff --git a/client/src/static/icons/duotone/arrow-from-top.svg b/src/static/icons/duotone/arrow-from-top.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-from-top.svg rename to src/static/icons/duotone/arrow-from-top.svg diff --git a/client/src/static/icons/duotone/arrow-left.svg b/src/static/icons/duotone/arrow-left.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-left.svg rename to src/static/icons/duotone/arrow-left.svg diff --git a/client/src/static/icons/duotone/arrow-right.svg b/src/static/icons/duotone/arrow-right.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-right.svg rename to src/static/icons/duotone/arrow-right.svg diff --git a/client/src/static/icons/duotone/arrow-square-down.svg b/src/static/icons/duotone/arrow-square-down.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-square-down.svg rename to src/static/icons/duotone/arrow-square-down.svg diff --git a/client/src/static/icons/duotone/arrow-square-left.svg b/src/static/icons/duotone/arrow-square-left.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-square-left.svg rename to src/static/icons/duotone/arrow-square-left.svg diff --git a/client/src/static/icons/duotone/arrow-square-right.svg b/src/static/icons/duotone/arrow-square-right.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-square-right.svg rename to src/static/icons/duotone/arrow-square-right.svg diff --git a/client/src/static/icons/duotone/arrow-square-up.svg b/src/static/icons/duotone/arrow-square-up.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-square-up.svg rename to src/static/icons/duotone/arrow-square-up.svg diff --git a/client/src/static/icons/duotone/arrow-to-bottom.svg b/src/static/icons/duotone/arrow-to-bottom.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-to-bottom.svg rename to src/static/icons/duotone/arrow-to-bottom.svg diff --git a/client/src/static/icons/duotone/arrow-to-left.svg b/src/static/icons/duotone/arrow-to-left.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-to-left.svg rename to src/static/icons/duotone/arrow-to-left.svg diff --git a/client/src/static/icons/duotone/arrow-to-right.svg b/src/static/icons/duotone/arrow-to-right.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-to-right.svg rename to src/static/icons/duotone/arrow-to-right.svg diff --git a/client/src/static/icons/duotone/arrow-to-top.svg b/src/static/icons/duotone/arrow-to-top.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-to-top.svg rename to src/static/icons/duotone/arrow-to-top.svg diff --git a/client/src/static/icons/duotone/arrow-up.svg b/src/static/icons/duotone/arrow-up.svg similarity index 100% rename from client/src/static/icons/duotone/arrow-up.svg rename to src/static/icons/duotone/arrow-up.svg diff --git a/client/src/static/icons/duotone/arrows-alt-h.svg b/src/static/icons/duotone/arrows-alt-h.svg similarity index 100% rename from client/src/static/icons/duotone/arrows-alt-h.svg rename to src/static/icons/duotone/arrows-alt-h.svg diff --git a/client/src/static/icons/duotone/arrows-alt-v.svg b/src/static/icons/duotone/arrows-alt-v.svg similarity index 100% rename from client/src/static/icons/duotone/arrows-alt-v.svg rename to src/static/icons/duotone/arrows-alt-v.svg diff --git a/client/src/static/icons/duotone/arrows-alt.svg b/src/static/icons/duotone/arrows-alt.svg similarity index 100% rename from client/src/static/icons/duotone/arrows-alt.svg rename to src/static/icons/duotone/arrows-alt.svg diff --git a/client/src/static/icons/duotone/arrows-h.svg b/src/static/icons/duotone/arrows-h.svg similarity index 100% rename from client/src/static/icons/duotone/arrows-h.svg rename to src/static/icons/duotone/arrows-h.svg diff --git a/client/src/static/icons/duotone/arrows-v.svg b/src/static/icons/duotone/arrows-v.svg similarity index 100% rename from client/src/static/icons/duotone/arrows-v.svg rename to src/static/icons/duotone/arrows-v.svg diff --git a/client/src/static/icons/duotone/arrows.svg b/src/static/icons/duotone/arrows.svg similarity index 100% rename from client/src/static/icons/duotone/arrows.svg rename to src/static/icons/duotone/arrows.svg diff --git a/client/src/static/icons/duotone/assistive-listening-systems.svg b/src/static/icons/duotone/assistive-listening-systems.svg similarity index 100% rename from client/src/static/icons/duotone/assistive-listening-systems.svg rename to src/static/icons/duotone/assistive-listening-systems.svg diff --git a/client/src/static/icons/duotone/asterisk.svg b/src/static/icons/duotone/asterisk.svg similarity index 100% rename from client/src/static/icons/duotone/asterisk.svg rename to src/static/icons/duotone/asterisk.svg diff --git a/client/src/static/icons/duotone/at.svg b/src/static/icons/duotone/at.svg similarity index 100% rename from client/src/static/icons/duotone/at.svg rename to src/static/icons/duotone/at.svg diff --git a/client/src/static/icons/duotone/atlas.svg b/src/static/icons/duotone/atlas.svg similarity index 100% rename from client/src/static/icons/duotone/atlas.svg rename to src/static/icons/duotone/atlas.svg diff --git a/client/src/static/icons/duotone/atom-alt.svg b/src/static/icons/duotone/atom-alt.svg similarity index 100% rename from client/src/static/icons/duotone/atom-alt.svg rename to src/static/icons/duotone/atom-alt.svg diff --git a/client/src/static/icons/duotone/atom.svg b/src/static/icons/duotone/atom.svg similarity index 100% rename from client/src/static/icons/duotone/atom.svg rename to src/static/icons/duotone/atom.svg diff --git a/client/src/static/icons/duotone/audio-description.svg b/src/static/icons/duotone/audio-description.svg similarity index 100% rename from client/src/static/icons/duotone/audio-description.svg rename to src/static/icons/duotone/audio-description.svg diff --git a/client/src/static/icons/duotone/award.svg b/src/static/icons/duotone/award.svg similarity index 100% rename from client/src/static/icons/duotone/award.svg rename to src/static/icons/duotone/award.svg diff --git a/client/src/static/icons/duotone/axe-battle.svg b/src/static/icons/duotone/axe-battle.svg similarity index 100% rename from client/src/static/icons/duotone/axe-battle.svg rename to src/static/icons/duotone/axe-battle.svg diff --git a/client/src/static/icons/duotone/axe.svg b/src/static/icons/duotone/axe.svg similarity index 100% rename from client/src/static/icons/duotone/axe.svg rename to src/static/icons/duotone/axe.svg diff --git a/client/src/static/icons/duotone/baby-carriage.svg b/src/static/icons/duotone/baby-carriage.svg similarity index 100% rename from client/src/static/icons/duotone/baby-carriage.svg rename to src/static/icons/duotone/baby-carriage.svg diff --git a/client/src/static/icons/duotone/baby.svg b/src/static/icons/duotone/baby.svg similarity index 100% rename from client/src/static/icons/duotone/baby.svg rename to src/static/icons/duotone/baby.svg diff --git a/client/src/static/icons/duotone/backpack.svg b/src/static/icons/duotone/backpack.svg similarity index 100% rename from client/src/static/icons/duotone/backpack.svg rename to src/static/icons/duotone/backpack.svg diff --git a/client/src/static/icons/duotone/backspace.svg b/src/static/icons/duotone/backspace.svg similarity index 100% rename from client/src/static/icons/duotone/backspace.svg rename to src/static/icons/duotone/backspace.svg diff --git a/client/src/static/icons/duotone/backward.svg b/src/static/icons/duotone/backward.svg similarity index 100% rename from client/src/static/icons/duotone/backward.svg rename to src/static/icons/duotone/backward.svg diff --git a/client/src/static/icons/duotone/bacon.svg b/src/static/icons/duotone/bacon.svg similarity index 100% rename from client/src/static/icons/duotone/bacon.svg rename to src/static/icons/duotone/bacon.svg diff --git a/client/src/static/icons/duotone/badge-check.svg b/src/static/icons/duotone/badge-check.svg similarity index 100% rename from client/src/static/icons/duotone/badge-check.svg rename to src/static/icons/duotone/badge-check.svg diff --git a/client/src/static/icons/duotone/badge-dollar.svg b/src/static/icons/duotone/badge-dollar.svg similarity index 100% rename from client/src/static/icons/duotone/badge-dollar.svg rename to src/static/icons/duotone/badge-dollar.svg diff --git a/client/src/static/icons/duotone/badge-percent.svg b/src/static/icons/duotone/badge-percent.svg similarity index 100% rename from client/src/static/icons/duotone/badge-percent.svg rename to src/static/icons/duotone/badge-percent.svg diff --git a/client/src/static/icons/duotone/badge-sheriff.svg b/src/static/icons/duotone/badge-sheriff.svg similarity index 100% rename from client/src/static/icons/duotone/badge-sheriff.svg rename to src/static/icons/duotone/badge-sheriff.svg diff --git a/client/src/static/icons/duotone/badge.svg b/src/static/icons/duotone/badge.svg similarity index 100% rename from client/src/static/icons/duotone/badge.svg rename to src/static/icons/duotone/badge.svg diff --git a/client/src/static/icons/duotone/badger-honey.svg b/src/static/icons/duotone/badger-honey.svg similarity index 100% rename from client/src/static/icons/duotone/badger-honey.svg rename to src/static/icons/duotone/badger-honey.svg diff --git a/client/src/static/icons/duotone/bags-shopping.svg b/src/static/icons/duotone/bags-shopping.svg similarity index 100% rename from client/src/static/icons/duotone/bags-shopping.svg rename to src/static/icons/duotone/bags-shopping.svg diff --git a/client/src/static/icons/duotone/bahai.svg b/src/static/icons/duotone/bahai.svg similarity index 100% rename from client/src/static/icons/duotone/bahai.svg rename to src/static/icons/duotone/bahai.svg diff --git a/client/src/static/icons/duotone/balance-scale-left.svg b/src/static/icons/duotone/balance-scale-left.svg similarity index 100% rename from client/src/static/icons/duotone/balance-scale-left.svg rename to src/static/icons/duotone/balance-scale-left.svg diff --git a/client/src/static/icons/duotone/balance-scale-right.svg b/src/static/icons/duotone/balance-scale-right.svg similarity index 100% rename from client/src/static/icons/duotone/balance-scale-right.svg rename to src/static/icons/duotone/balance-scale-right.svg diff --git a/client/src/static/icons/duotone/balance-scale.svg b/src/static/icons/duotone/balance-scale.svg similarity index 100% rename from client/src/static/icons/duotone/balance-scale.svg rename to src/static/icons/duotone/balance-scale.svg diff --git a/client/src/static/icons/duotone/ball-pile.svg b/src/static/icons/duotone/ball-pile.svg similarity index 100% rename from client/src/static/icons/duotone/ball-pile.svg rename to src/static/icons/duotone/ball-pile.svg diff --git a/client/src/static/icons/duotone/ballot-check.svg b/src/static/icons/duotone/ballot-check.svg similarity index 100% rename from client/src/static/icons/duotone/ballot-check.svg rename to src/static/icons/duotone/ballot-check.svg diff --git a/client/src/static/icons/duotone/ballot.svg b/src/static/icons/duotone/ballot.svg similarity index 100% rename from client/src/static/icons/duotone/ballot.svg rename to src/static/icons/duotone/ballot.svg diff --git a/client/src/static/icons/duotone/ban.svg b/src/static/icons/duotone/ban.svg similarity index 100% rename from client/src/static/icons/duotone/ban.svg rename to src/static/icons/duotone/ban.svg diff --git a/client/src/static/icons/duotone/band-aid.svg b/src/static/icons/duotone/band-aid.svg similarity index 100% rename from client/src/static/icons/duotone/band-aid.svg rename to src/static/icons/duotone/band-aid.svg diff --git a/client/src/static/icons/duotone/banjo.svg b/src/static/icons/duotone/banjo.svg similarity index 100% rename from client/src/static/icons/duotone/banjo.svg rename to src/static/icons/duotone/banjo.svg diff --git a/client/src/static/icons/duotone/barcode-alt.svg b/src/static/icons/duotone/barcode-alt.svg similarity index 100% rename from client/src/static/icons/duotone/barcode-alt.svg rename to src/static/icons/duotone/barcode-alt.svg diff --git a/client/src/static/icons/duotone/barcode-read.svg b/src/static/icons/duotone/barcode-read.svg similarity index 100% rename from client/src/static/icons/duotone/barcode-read.svg rename to src/static/icons/duotone/barcode-read.svg diff --git a/client/src/static/icons/duotone/barcode-scan.svg b/src/static/icons/duotone/barcode-scan.svg similarity index 100% rename from client/src/static/icons/duotone/barcode-scan.svg rename to src/static/icons/duotone/barcode-scan.svg diff --git a/client/src/static/icons/duotone/barcode.svg b/src/static/icons/duotone/barcode.svg similarity index 100% rename from client/src/static/icons/duotone/barcode.svg rename to src/static/icons/duotone/barcode.svg diff --git a/client/src/static/icons/duotone/bars.svg b/src/static/icons/duotone/bars.svg similarity index 100% rename from client/src/static/icons/duotone/bars.svg rename to src/static/icons/duotone/bars.svg diff --git a/client/src/static/icons/duotone/baseball-ball.svg b/src/static/icons/duotone/baseball-ball.svg similarity index 100% rename from client/src/static/icons/duotone/baseball-ball.svg rename to src/static/icons/duotone/baseball-ball.svg diff --git a/client/src/static/icons/duotone/baseball.svg b/src/static/icons/duotone/baseball.svg similarity index 100% rename from client/src/static/icons/duotone/baseball.svg rename to src/static/icons/duotone/baseball.svg diff --git a/client/src/static/icons/duotone/basketball-ball.svg b/src/static/icons/duotone/basketball-ball.svg similarity index 100% rename from client/src/static/icons/duotone/basketball-ball.svg rename to src/static/icons/duotone/basketball-ball.svg diff --git a/client/src/static/icons/duotone/basketball-hoop.svg b/src/static/icons/duotone/basketball-hoop.svg similarity index 100% rename from client/src/static/icons/duotone/basketball-hoop.svg rename to src/static/icons/duotone/basketball-hoop.svg diff --git a/client/src/static/icons/duotone/bat.svg b/src/static/icons/duotone/bat.svg similarity index 100% rename from client/src/static/icons/duotone/bat.svg rename to src/static/icons/duotone/bat.svg diff --git a/client/src/static/icons/duotone/bath.svg b/src/static/icons/duotone/bath.svg similarity index 100% rename from client/src/static/icons/duotone/bath.svg rename to src/static/icons/duotone/bath.svg diff --git a/client/src/static/icons/duotone/battery-bolt.svg b/src/static/icons/duotone/battery-bolt.svg similarity index 100% rename from client/src/static/icons/duotone/battery-bolt.svg rename to src/static/icons/duotone/battery-bolt.svg diff --git a/client/src/static/icons/duotone/battery-empty.svg b/src/static/icons/duotone/battery-empty.svg similarity index 100% rename from client/src/static/icons/duotone/battery-empty.svg rename to src/static/icons/duotone/battery-empty.svg diff --git a/client/src/static/icons/duotone/battery-full.svg b/src/static/icons/duotone/battery-full.svg similarity index 100% rename from client/src/static/icons/duotone/battery-full.svg rename to src/static/icons/duotone/battery-full.svg diff --git a/client/src/static/icons/duotone/battery-half.svg b/src/static/icons/duotone/battery-half.svg similarity index 100% rename from client/src/static/icons/duotone/battery-half.svg rename to src/static/icons/duotone/battery-half.svg diff --git a/client/src/static/icons/duotone/battery-quarter.svg b/src/static/icons/duotone/battery-quarter.svg similarity index 100% rename from client/src/static/icons/duotone/battery-quarter.svg rename to src/static/icons/duotone/battery-quarter.svg diff --git a/client/src/static/icons/duotone/battery-slash.svg b/src/static/icons/duotone/battery-slash.svg similarity index 100% rename from client/src/static/icons/duotone/battery-slash.svg rename to src/static/icons/duotone/battery-slash.svg diff --git a/client/src/static/icons/duotone/battery-three-quarters.svg b/src/static/icons/duotone/battery-three-quarters.svg similarity index 100% rename from client/src/static/icons/duotone/battery-three-quarters.svg rename to src/static/icons/duotone/battery-three-quarters.svg diff --git a/client/src/static/icons/duotone/bed-alt.svg b/src/static/icons/duotone/bed-alt.svg similarity index 100% rename from client/src/static/icons/duotone/bed-alt.svg rename to src/static/icons/duotone/bed-alt.svg diff --git a/client/src/static/icons/duotone/bed-bunk.svg b/src/static/icons/duotone/bed-bunk.svg similarity index 100% rename from client/src/static/icons/duotone/bed-bunk.svg rename to src/static/icons/duotone/bed-bunk.svg diff --git a/client/src/static/icons/duotone/bed-empty.svg b/src/static/icons/duotone/bed-empty.svg similarity index 100% rename from client/src/static/icons/duotone/bed-empty.svg rename to src/static/icons/duotone/bed-empty.svg diff --git a/client/src/static/icons/duotone/bed.svg b/src/static/icons/duotone/bed.svg similarity index 100% rename from client/src/static/icons/duotone/bed.svg rename to src/static/icons/duotone/bed.svg diff --git a/client/src/static/icons/duotone/beer.svg b/src/static/icons/duotone/beer.svg similarity index 100% rename from client/src/static/icons/duotone/beer.svg rename to src/static/icons/duotone/beer.svg diff --git a/client/src/static/icons/duotone/bell-exclamation.svg b/src/static/icons/duotone/bell-exclamation.svg similarity index 100% rename from client/src/static/icons/duotone/bell-exclamation.svg rename to src/static/icons/duotone/bell-exclamation.svg diff --git a/client/src/static/icons/duotone/bell-on.svg b/src/static/icons/duotone/bell-on.svg similarity index 100% rename from client/src/static/icons/duotone/bell-on.svg rename to src/static/icons/duotone/bell-on.svg diff --git a/client/src/static/icons/duotone/bell-plus.svg b/src/static/icons/duotone/bell-plus.svg similarity index 100% rename from client/src/static/icons/duotone/bell-plus.svg rename to src/static/icons/duotone/bell-plus.svg diff --git a/client/src/static/icons/duotone/bell-school-slash.svg b/src/static/icons/duotone/bell-school-slash.svg similarity index 100% rename from client/src/static/icons/duotone/bell-school-slash.svg rename to src/static/icons/duotone/bell-school-slash.svg diff --git a/client/src/static/icons/duotone/bell-school.svg b/src/static/icons/duotone/bell-school.svg similarity index 100% rename from client/src/static/icons/duotone/bell-school.svg rename to src/static/icons/duotone/bell-school.svg diff --git a/client/src/static/icons/duotone/bell-slash.svg b/src/static/icons/duotone/bell-slash.svg similarity index 100% rename from client/src/static/icons/duotone/bell-slash.svg rename to src/static/icons/duotone/bell-slash.svg diff --git a/client/src/static/icons/duotone/bell.svg b/src/static/icons/duotone/bell.svg similarity index 100% rename from client/src/static/icons/duotone/bell.svg rename to src/static/icons/duotone/bell.svg diff --git a/client/src/static/icons/duotone/bells.svg b/src/static/icons/duotone/bells.svg similarity index 100% rename from client/src/static/icons/duotone/bells.svg rename to src/static/icons/duotone/bells.svg diff --git a/client/src/static/icons/duotone/betamax.svg b/src/static/icons/duotone/betamax.svg similarity index 100% rename from client/src/static/icons/duotone/betamax.svg rename to src/static/icons/duotone/betamax.svg diff --git a/client/src/static/icons/duotone/bezier-curve.svg b/src/static/icons/duotone/bezier-curve.svg similarity index 100% rename from client/src/static/icons/duotone/bezier-curve.svg rename to src/static/icons/duotone/bezier-curve.svg diff --git a/client/src/static/icons/duotone/bible.svg b/src/static/icons/duotone/bible.svg similarity index 100% rename from client/src/static/icons/duotone/bible.svg rename to src/static/icons/duotone/bible.svg diff --git a/client/src/static/icons/duotone/bicycle.svg b/src/static/icons/duotone/bicycle.svg similarity index 100% rename from client/src/static/icons/duotone/bicycle.svg rename to src/static/icons/duotone/bicycle.svg diff --git a/client/src/static/icons/duotone/biking-mountain.svg b/src/static/icons/duotone/biking-mountain.svg similarity index 100% rename from client/src/static/icons/duotone/biking-mountain.svg rename to src/static/icons/duotone/biking-mountain.svg diff --git a/client/src/static/icons/duotone/biking.svg b/src/static/icons/duotone/biking.svg similarity index 100% rename from client/src/static/icons/duotone/biking.svg rename to src/static/icons/duotone/biking.svg diff --git a/client/src/static/icons/duotone/binoculars.svg b/src/static/icons/duotone/binoculars.svg similarity index 100% rename from client/src/static/icons/duotone/binoculars.svg rename to src/static/icons/duotone/binoculars.svg diff --git a/client/src/static/icons/duotone/biohazard.svg b/src/static/icons/duotone/biohazard.svg similarity index 100% rename from client/src/static/icons/duotone/biohazard.svg rename to src/static/icons/duotone/biohazard.svg diff --git a/client/src/static/icons/duotone/birthday-cake.svg b/src/static/icons/duotone/birthday-cake.svg similarity index 100% rename from client/src/static/icons/duotone/birthday-cake.svg rename to src/static/icons/duotone/birthday-cake.svg diff --git a/client/src/static/icons/duotone/blanket.svg b/src/static/icons/duotone/blanket.svg similarity index 100% rename from client/src/static/icons/duotone/blanket.svg rename to src/static/icons/duotone/blanket.svg diff --git a/client/src/static/icons/duotone/blender-phone.svg b/src/static/icons/duotone/blender-phone.svg similarity index 100% rename from client/src/static/icons/duotone/blender-phone.svg rename to src/static/icons/duotone/blender-phone.svg diff --git a/client/src/static/icons/duotone/blender.svg b/src/static/icons/duotone/blender.svg similarity index 100% rename from client/src/static/icons/duotone/blender.svg rename to src/static/icons/duotone/blender.svg diff --git a/client/src/static/icons/duotone/blind.svg b/src/static/icons/duotone/blind.svg similarity index 100% rename from client/src/static/icons/duotone/blind.svg rename to src/static/icons/duotone/blind.svg diff --git a/client/src/static/icons/duotone/blinds-open.svg b/src/static/icons/duotone/blinds-open.svg similarity index 100% rename from client/src/static/icons/duotone/blinds-open.svg rename to src/static/icons/duotone/blinds-open.svg diff --git a/client/src/static/icons/duotone/blinds-raised.svg b/src/static/icons/duotone/blinds-raised.svg similarity index 100% rename from client/src/static/icons/duotone/blinds-raised.svg rename to src/static/icons/duotone/blinds-raised.svg diff --git a/client/src/static/icons/duotone/blinds.svg b/src/static/icons/duotone/blinds.svg similarity index 100% rename from client/src/static/icons/duotone/blinds.svg rename to src/static/icons/duotone/blinds.svg diff --git a/client/src/static/icons/duotone/blog.svg b/src/static/icons/duotone/blog.svg similarity index 100% rename from client/src/static/icons/duotone/blog.svg rename to src/static/icons/duotone/blog.svg diff --git a/client/src/static/icons/duotone/bold.svg b/src/static/icons/duotone/bold.svg similarity index 100% rename from client/src/static/icons/duotone/bold.svg rename to src/static/icons/duotone/bold.svg diff --git a/client/src/static/icons/duotone/bolt.svg b/src/static/icons/duotone/bolt.svg similarity index 100% rename from client/src/static/icons/duotone/bolt.svg rename to src/static/icons/duotone/bolt.svg diff --git a/client/src/static/icons/duotone/bomb.svg b/src/static/icons/duotone/bomb.svg similarity index 100% rename from client/src/static/icons/duotone/bomb.svg rename to src/static/icons/duotone/bomb.svg diff --git a/client/src/static/icons/duotone/bone-break.svg b/src/static/icons/duotone/bone-break.svg similarity index 100% rename from client/src/static/icons/duotone/bone-break.svg rename to src/static/icons/duotone/bone-break.svg diff --git a/client/src/static/icons/duotone/bone.svg b/src/static/icons/duotone/bone.svg similarity index 100% rename from client/src/static/icons/duotone/bone.svg rename to src/static/icons/duotone/bone.svg diff --git a/client/src/static/icons/duotone/bong.svg b/src/static/icons/duotone/bong.svg similarity index 100% rename from client/src/static/icons/duotone/bong.svg rename to src/static/icons/duotone/bong.svg diff --git a/client/src/static/icons/duotone/book-alt.svg b/src/static/icons/duotone/book-alt.svg similarity index 100% rename from client/src/static/icons/duotone/book-alt.svg rename to src/static/icons/duotone/book-alt.svg diff --git a/client/src/static/icons/duotone/book-dead.svg b/src/static/icons/duotone/book-dead.svg similarity index 100% rename from client/src/static/icons/duotone/book-dead.svg rename to src/static/icons/duotone/book-dead.svg diff --git a/client/src/static/icons/duotone/book-heart.svg b/src/static/icons/duotone/book-heart.svg similarity index 100% rename from client/src/static/icons/duotone/book-heart.svg rename to src/static/icons/duotone/book-heart.svg diff --git a/client/src/static/icons/duotone/book-medical.svg b/src/static/icons/duotone/book-medical.svg similarity index 100% rename from client/src/static/icons/duotone/book-medical.svg rename to src/static/icons/duotone/book-medical.svg diff --git a/client/src/static/icons/duotone/book-open.svg b/src/static/icons/duotone/book-open.svg similarity index 100% rename from client/src/static/icons/duotone/book-open.svg rename to src/static/icons/duotone/book-open.svg diff --git a/client/src/static/icons/duotone/book-reader.svg b/src/static/icons/duotone/book-reader.svg similarity index 100% rename from client/src/static/icons/duotone/book-reader.svg rename to src/static/icons/duotone/book-reader.svg diff --git a/client/src/static/icons/duotone/book-spells.svg b/src/static/icons/duotone/book-spells.svg similarity index 100% rename from client/src/static/icons/duotone/book-spells.svg rename to src/static/icons/duotone/book-spells.svg diff --git a/client/src/static/icons/duotone/book-user.svg b/src/static/icons/duotone/book-user.svg similarity index 100% rename from client/src/static/icons/duotone/book-user.svg rename to src/static/icons/duotone/book-user.svg diff --git a/client/src/static/icons/duotone/book.svg b/src/static/icons/duotone/book.svg similarity index 100% rename from client/src/static/icons/duotone/book.svg rename to src/static/icons/duotone/book.svg diff --git a/client/src/static/icons/duotone/bookmark.svg b/src/static/icons/duotone/bookmark.svg similarity index 100% rename from client/src/static/icons/duotone/bookmark.svg rename to src/static/icons/duotone/bookmark.svg diff --git a/client/src/static/icons/duotone/books-medical.svg b/src/static/icons/duotone/books-medical.svg similarity index 100% rename from client/src/static/icons/duotone/books-medical.svg rename to src/static/icons/duotone/books-medical.svg diff --git a/client/src/static/icons/duotone/books.svg b/src/static/icons/duotone/books.svg similarity index 100% rename from client/src/static/icons/duotone/books.svg rename to src/static/icons/duotone/books.svg diff --git a/client/src/static/icons/duotone/boombox.svg b/src/static/icons/duotone/boombox.svg similarity index 100% rename from client/src/static/icons/duotone/boombox.svg rename to src/static/icons/duotone/boombox.svg diff --git a/client/src/static/icons/duotone/boot.svg b/src/static/icons/duotone/boot.svg similarity index 100% rename from client/src/static/icons/duotone/boot.svg rename to src/static/icons/duotone/boot.svg diff --git a/client/src/static/icons/duotone/booth-curtain.svg b/src/static/icons/duotone/booth-curtain.svg similarity index 100% rename from client/src/static/icons/duotone/booth-curtain.svg rename to src/static/icons/duotone/booth-curtain.svg diff --git a/client/src/static/icons/duotone/border-all.svg b/src/static/icons/duotone/border-all.svg similarity index 100% rename from client/src/static/icons/duotone/border-all.svg rename to src/static/icons/duotone/border-all.svg diff --git a/client/src/static/icons/duotone/border-bottom.svg b/src/static/icons/duotone/border-bottom.svg similarity index 100% rename from client/src/static/icons/duotone/border-bottom.svg rename to src/static/icons/duotone/border-bottom.svg diff --git a/client/src/static/icons/duotone/border-center-h.svg b/src/static/icons/duotone/border-center-h.svg similarity index 100% rename from client/src/static/icons/duotone/border-center-h.svg rename to src/static/icons/duotone/border-center-h.svg diff --git a/client/src/static/icons/duotone/border-center-v.svg b/src/static/icons/duotone/border-center-v.svg similarity index 100% rename from client/src/static/icons/duotone/border-center-v.svg rename to src/static/icons/duotone/border-center-v.svg diff --git a/client/src/static/icons/duotone/border-inner.svg b/src/static/icons/duotone/border-inner.svg similarity index 100% rename from client/src/static/icons/duotone/border-inner.svg rename to src/static/icons/duotone/border-inner.svg diff --git a/client/src/static/icons/duotone/border-left.svg b/src/static/icons/duotone/border-left.svg similarity index 100% rename from client/src/static/icons/duotone/border-left.svg rename to src/static/icons/duotone/border-left.svg diff --git a/client/src/static/icons/duotone/border-none.svg b/src/static/icons/duotone/border-none.svg similarity index 100% rename from client/src/static/icons/duotone/border-none.svg rename to src/static/icons/duotone/border-none.svg diff --git a/client/src/static/icons/duotone/border-outer.svg b/src/static/icons/duotone/border-outer.svg similarity index 100% rename from client/src/static/icons/duotone/border-outer.svg rename to src/static/icons/duotone/border-outer.svg diff --git a/client/src/static/icons/duotone/border-right.svg b/src/static/icons/duotone/border-right.svg similarity index 100% rename from client/src/static/icons/duotone/border-right.svg rename to src/static/icons/duotone/border-right.svg diff --git a/client/src/static/icons/duotone/border-style-alt.svg b/src/static/icons/duotone/border-style-alt.svg similarity index 100% rename from client/src/static/icons/duotone/border-style-alt.svg rename to src/static/icons/duotone/border-style-alt.svg diff --git a/client/src/static/icons/duotone/border-style.svg b/src/static/icons/duotone/border-style.svg similarity index 100% rename from client/src/static/icons/duotone/border-style.svg rename to src/static/icons/duotone/border-style.svg diff --git a/client/src/static/icons/duotone/border-top.svg b/src/static/icons/duotone/border-top.svg similarity index 100% rename from client/src/static/icons/duotone/border-top.svg rename to src/static/icons/duotone/border-top.svg diff --git a/client/src/static/icons/duotone/bow-arrow.svg b/src/static/icons/duotone/bow-arrow.svg similarity index 100% rename from client/src/static/icons/duotone/bow-arrow.svg rename to src/static/icons/duotone/bow-arrow.svg diff --git a/client/src/static/icons/duotone/bowling-ball.svg b/src/static/icons/duotone/bowling-ball.svg similarity index 100% rename from client/src/static/icons/duotone/bowling-ball.svg rename to src/static/icons/duotone/bowling-ball.svg diff --git a/client/src/static/icons/duotone/bowling-pins.svg b/src/static/icons/duotone/bowling-pins.svg similarity index 100% rename from client/src/static/icons/duotone/bowling-pins.svg rename to src/static/icons/duotone/bowling-pins.svg diff --git a/client/src/static/icons/duotone/box-alt.svg b/src/static/icons/duotone/box-alt.svg similarity index 100% rename from client/src/static/icons/duotone/box-alt.svg rename to src/static/icons/duotone/box-alt.svg diff --git a/client/src/static/icons/duotone/box-ballot.svg b/src/static/icons/duotone/box-ballot.svg similarity index 100% rename from client/src/static/icons/duotone/box-ballot.svg rename to src/static/icons/duotone/box-ballot.svg diff --git a/client/src/static/icons/duotone/box-check.svg b/src/static/icons/duotone/box-check.svg similarity index 100% rename from client/src/static/icons/duotone/box-check.svg rename to src/static/icons/duotone/box-check.svg diff --git a/client/src/static/icons/duotone/box-fragile.svg b/src/static/icons/duotone/box-fragile.svg similarity index 100% rename from client/src/static/icons/duotone/box-fragile.svg rename to src/static/icons/duotone/box-fragile.svg diff --git a/client/src/static/icons/duotone/box-full.svg b/src/static/icons/duotone/box-full.svg similarity index 100% rename from client/src/static/icons/duotone/box-full.svg rename to src/static/icons/duotone/box-full.svg diff --git a/client/src/static/icons/duotone/box-heart.svg b/src/static/icons/duotone/box-heart.svg similarity index 100% rename from client/src/static/icons/duotone/box-heart.svg rename to src/static/icons/duotone/box-heart.svg diff --git a/client/src/static/icons/duotone/box-open.svg b/src/static/icons/duotone/box-open.svg similarity index 100% rename from client/src/static/icons/duotone/box-open.svg rename to src/static/icons/duotone/box-open.svg diff --git a/client/src/static/icons/duotone/box-up.svg b/src/static/icons/duotone/box-up.svg similarity index 100% rename from client/src/static/icons/duotone/box-up.svg rename to src/static/icons/duotone/box-up.svg diff --git a/client/src/static/icons/duotone/box-usd.svg b/src/static/icons/duotone/box-usd.svg similarity index 100% rename from client/src/static/icons/duotone/box-usd.svg rename to src/static/icons/duotone/box-usd.svg diff --git a/client/src/static/icons/duotone/box.svg b/src/static/icons/duotone/box.svg similarity index 100% rename from client/src/static/icons/duotone/box.svg rename to src/static/icons/duotone/box.svg diff --git a/client/src/static/icons/duotone/boxes-alt.svg b/src/static/icons/duotone/boxes-alt.svg similarity index 100% rename from client/src/static/icons/duotone/boxes-alt.svg rename to src/static/icons/duotone/boxes-alt.svg diff --git a/client/src/static/icons/duotone/boxes.svg b/src/static/icons/duotone/boxes.svg similarity index 100% rename from client/src/static/icons/duotone/boxes.svg rename to src/static/icons/duotone/boxes.svg diff --git a/client/src/static/icons/duotone/boxing-glove.svg b/src/static/icons/duotone/boxing-glove.svg similarity index 100% rename from client/src/static/icons/duotone/boxing-glove.svg rename to src/static/icons/duotone/boxing-glove.svg diff --git a/client/src/static/icons/duotone/brackets-curly.svg b/src/static/icons/duotone/brackets-curly.svg similarity index 100% rename from client/src/static/icons/duotone/brackets-curly.svg rename to src/static/icons/duotone/brackets-curly.svg diff --git a/client/src/static/icons/duotone/brackets.svg b/src/static/icons/duotone/brackets.svg similarity index 100% rename from client/src/static/icons/duotone/brackets.svg rename to src/static/icons/duotone/brackets.svg diff --git a/client/src/static/icons/duotone/braille.svg b/src/static/icons/duotone/braille.svg similarity index 100% rename from client/src/static/icons/duotone/braille.svg rename to src/static/icons/duotone/braille.svg diff --git a/client/src/static/icons/duotone/brain.svg b/src/static/icons/duotone/brain.svg similarity index 100% rename from client/src/static/icons/duotone/brain.svg rename to src/static/icons/duotone/brain.svg diff --git a/client/src/static/icons/duotone/bread-loaf.svg b/src/static/icons/duotone/bread-loaf.svg similarity index 100% rename from client/src/static/icons/duotone/bread-loaf.svg rename to src/static/icons/duotone/bread-loaf.svg diff --git a/client/src/static/icons/duotone/bread-slice.svg b/src/static/icons/duotone/bread-slice.svg similarity index 100% rename from client/src/static/icons/duotone/bread-slice.svg rename to src/static/icons/duotone/bread-slice.svg diff --git a/client/src/static/icons/duotone/briefcase-medical.svg b/src/static/icons/duotone/briefcase-medical.svg similarity index 100% rename from client/src/static/icons/duotone/briefcase-medical.svg rename to src/static/icons/duotone/briefcase-medical.svg diff --git a/client/src/static/icons/duotone/briefcase.svg b/src/static/icons/duotone/briefcase.svg similarity index 100% rename from client/src/static/icons/duotone/briefcase.svg rename to src/static/icons/duotone/briefcase.svg diff --git a/client/src/static/icons/duotone/bring-forward.svg b/src/static/icons/duotone/bring-forward.svg similarity index 100% rename from client/src/static/icons/duotone/bring-forward.svg rename to src/static/icons/duotone/bring-forward.svg diff --git a/client/src/static/icons/duotone/bring-front.svg b/src/static/icons/duotone/bring-front.svg similarity index 100% rename from client/src/static/icons/duotone/bring-front.svg rename to src/static/icons/duotone/bring-front.svg diff --git a/client/src/static/icons/duotone/broadcast-tower.svg b/src/static/icons/duotone/broadcast-tower.svg similarity index 100% rename from client/src/static/icons/duotone/broadcast-tower.svg rename to src/static/icons/duotone/broadcast-tower.svg diff --git a/client/src/static/icons/duotone/broom.svg b/src/static/icons/duotone/broom.svg similarity index 100% rename from client/src/static/icons/duotone/broom.svg rename to src/static/icons/duotone/broom.svg diff --git a/client/src/static/icons/duotone/browser.svg b/src/static/icons/duotone/browser.svg similarity index 100% rename from client/src/static/icons/duotone/browser.svg rename to src/static/icons/duotone/browser.svg diff --git a/client/src/static/icons/duotone/brush.svg b/src/static/icons/duotone/brush.svg similarity index 100% rename from client/src/static/icons/duotone/brush.svg rename to src/static/icons/duotone/brush.svg diff --git a/client/src/static/icons/duotone/bug.svg b/src/static/icons/duotone/bug.svg similarity index 100% rename from client/src/static/icons/duotone/bug.svg rename to src/static/icons/duotone/bug.svg diff --git a/client/src/static/icons/duotone/building.svg b/src/static/icons/duotone/building.svg similarity index 100% rename from client/src/static/icons/duotone/building.svg rename to src/static/icons/duotone/building.svg diff --git a/client/src/static/icons/duotone/bullhorn.svg b/src/static/icons/duotone/bullhorn.svg similarity index 100% rename from client/src/static/icons/duotone/bullhorn.svg rename to src/static/icons/duotone/bullhorn.svg diff --git a/client/src/static/icons/duotone/bullseye-arrow.svg b/src/static/icons/duotone/bullseye-arrow.svg similarity index 100% rename from client/src/static/icons/duotone/bullseye-arrow.svg rename to src/static/icons/duotone/bullseye-arrow.svg diff --git a/client/src/static/icons/duotone/bullseye-pointer.svg b/src/static/icons/duotone/bullseye-pointer.svg similarity index 100% rename from client/src/static/icons/duotone/bullseye-pointer.svg rename to src/static/icons/duotone/bullseye-pointer.svg diff --git a/client/src/static/icons/duotone/bullseye.svg b/src/static/icons/duotone/bullseye.svg similarity index 100% rename from client/src/static/icons/duotone/bullseye.svg rename to src/static/icons/duotone/bullseye.svg diff --git a/client/src/static/icons/duotone/burger-soda.svg b/src/static/icons/duotone/burger-soda.svg similarity index 100% rename from client/src/static/icons/duotone/burger-soda.svg rename to src/static/icons/duotone/burger-soda.svg diff --git a/client/src/static/icons/duotone/burn.svg b/src/static/icons/duotone/burn.svg similarity index 100% rename from client/src/static/icons/duotone/burn.svg rename to src/static/icons/duotone/burn.svg diff --git a/client/src/static/icons/duotone/burrito.svg b/src/static/icons/duotone/burrito.svg similarity index 100% rename from client/src/static/icons/duotone/burrito.svg rename to src/static/icons/duotone/burrito.svg diff --git a/client/src/static/icons/duotone/bus-alt.svg b/src/static/icons/duotone/bus-alt.svg similarity index 100% rename from client/src/static/icons/duotone/bus-alt.svg rename to src/static/icons/duotone/bus-alt.svg diff --git a/client/src/static/icons/duotone/bus-school.svg b/src/static/icons/duotone/bus-school.svg similarity index 100% rename from client/src/static/icons/duotone/bus-school.svg rename to src/static/icons/duotone/bus-school.svg diff --git a/client/src/static/icons/duotone/bus.svg b/src/static/icons/duotone/bus.svg similarity index 100% rename from client/src/static/icons/duotone/bus.svg rename to src/static/icons/duotone/bus.svg diff --git a/client/src/static/icons/duotone/business-time.svg b/src/static/icons/duotone/business-time.svg similarity index 100% rename from client/src/static/icons/duotone/business-time.svg rename to src/static/icons/duotone/business-time.svg diff --git a/client/src/static/icons/duotone/cabinet-filing.svg b/src/static/icons/duotone/cabinet-filing.svg similarity index 100% rename from client/src/static/icons/duotone/cabinet-filing.svg rename to src/static/icons/duotone/cabinet-filing.svg diff --git a/client/src/static/icons/duotone/cactus.svg b/src/static/icons/duotone/cactus.svg similarity index 100% rename from client/src/static/icons/duotone/cactus.svg rename to src/static/icons/duotone/cactus.svg diff --git a/client/src/static/icons/duotone/calculator-alt.svg b/src/static/icons/duotone/calculator-alt.svg similarity index 100% rename from client/src/static/icons/duotone/calculator-alt.svg rename to src/static/icons/duotone/calculator-alt.svg diff --git a/client/src/static/icons/duotone/calculator.svg b/src/static/icons/duotone/calculator.svg similarity index 100% rename from client/src/static/icons/duotone/calculator.svg rename to src/static/icons/duotone/calculator.svg diff --git a/client/src/static/icons/duotone/calendar-alt.svg b/src/static/icons/duotone/calendar-alt.svg similarity index 100% rename from client/src/static/icons/duotone/calendar-alt.svg rename to src/static/icons/duotone/calendar-alt.svg diff --git a/client/src/static/icons/duotone/calendar-check.svg b/src/static/icons/duotone/calendar-check.svg similarity index 100% rename from client/src/static/icons/duotone/calendar-check.svg rename to src/static/icons/duotone/calendar-check.svg diff --git a/client/src/static/icons/duotone/calendar-day.svg b/src/static/icons/duotone/calendar-day.svg similarity index 100% rename from client/src/static/icons/duotone/calendar-day.svg rename to src/static/icons/duotone/calendar-day.svg diff --git a/client/src/static/icons/duotone/calendar-edit.svg b/src/static/icons/duotone/calendar-edit.svg similarity index 100% rename from client/src/static/icons/duotone/calendar-edit.svg rename to src/static/icons/duotone/calendar-edit.svg diff --git a/client/src/static/icons/duotone/calendar-exclamation.svg b/src/static/icons/duotone/calendar-exclamation.svg similarity index 100% rename from client/src/static/icons/duotone/calendar-exclamation.svg rename to src/static/icons/duotone/calendar-exclamation.svg diff --git a/client/src/static/icons/duotone/calendar-minus.svg b/src/static/icons/duotone/calendar-minus.svg similarity index 100% rename from client/src/static/icons/duotone/calendar-minus.svg rename to src/static/icons/duotone/calendar-minus.svg diff --git a/client/src/static/icons/duotone/calendar-plus.svg b/src/static/icons/duotone/calendar-plus.svg similarity index 100% rename from client/src/static/icons/duotone/calendar-plus.svg rename to src/static/icons/duotone/calendar-plus.svg diff --git a/client/src/static/icons/duotone/calendar-star.svg b/src/static/icons/duotone/calendar-star.svg similarity index 100% rename from client/src/static/icons/duotone/calendar-star.svg rename to src/static/icons/duotone/calendar-star.svg diff --git a/client/src/static/icons/duotone/calendar-times.svg b/src/static/icons/duotone/calendar-times.svg similarity index 100% rename from client/src/static/icons/duotone/calendar-times.svg rename to src/static/icons/duotone/calendar-times.svg diff --git a/client/src/static/icons/duotone/calendar-week.svg b/src/static/icons/duotone/calendar-week.svg similarity index 100% rename from client/src/static/icons/duotone/calendar-week.svg rename to src/static/icons/duotone/calendar-week.svg diff --git a/client/src/static/icons/duotone/calendar.svg b/src/static/icons/duotone/calendar.svg similarity index 100% rename from client/src/static/icons/duotone/calendar.svg rename to src/static/icons/duotone/calendar.svg diff --git a/client/src/static/icons/duotone/camcorder.svg b/src/static/icons/duotone/camcorder.svg similarity index 100% rename from client/src/static/icons/duotone/camcorder.svg rename to src/static/icons/duotone/camcorder.svg diff --git a/client/src/static/icons/duotone/camera-alt.svg b/src/static/icons/duotone/camera-alt.svg similarity index 100% rename from client/src/static/icons/duotone/camera-alt.svg rename to src/static/icons/duotone/camera-alt.svg diff --git a/client/src/static/icons/duotone/camera-home.svg b/src/static/icons/duotone/camera-home.svg similarity index 100% rename from client/src/static/icons/duotone/camera-home.svg rename to src/static/icons/duotone/camera-home.svg diff --git a/client/src/static/icons/duotone/camera-movie.svg b/src/static/icons/duotone/camera-movie.svg similarity index 100% rename from client/src/static/icons/duotone/camera-movie.svg rename to src/static/icons/duotone/camera-movie.svg diff --git a/client/src/static/icons/duotone/camera-polaroid.svg b/src/static/icons/duotone/camera-polaroid.svg similarity index 100% rename from client/src/static/icons/duotone/camera-polaroid.svg rename to src/static/icons/duotone/camera-polaroid.svg diff --git a/client/src/static/icons/duotone/camera-retro.svg b/src/static/icons/duotone/camera-retro.svg similarity index 100% rename from client/src/static/icons/duotone/camera-retro.svg rename to src/static/icons/duotone/camera-retro.svg diff --git a/client/src/static/icons/duotone/camera.svg b/src/static/icons/duotone/camera.svg similarity index 100% rename from client/src/static/icons/duotone/camera.svg rename to src/static/icons/duotone/camera.svg diff --git a/client/src/static/icons/duotone/campfire.svg b/src/static/icons/duotone/campfire.svg similarity index 100% rename from client/src/static/icons/duotone/campfire.svg rename to src/static/icons/duotone/campfire.svg diff --git a/client/src/static/icons/duotone/campground.svg b/src/static/icons/duotone/campground.svg similarity index 100% rename from client/src/static/icons/duotone/campground.svg rename to src/static/icons/duotone/campground.svg diff --git a/client/src/static/icons/duotone/candle-holder.svg b/src/static/icons/duotone/candle-holder.svg similarity index 100% rename from client/src/static/icons/duotone/candle-holder.svg rename to src/static/icons/duotone/candle-holder.svg diff --git a/client/src/static/icons/duotone/candy-cane.svg b/src/static/icons/duotone/candy-cane.svg similarity index 100% rename from client/src/static/icons/duotone/candy-cane.svg rename to src/static/icons/duotone/candy-cane.svg diff --git a/client/src/static/icons/duotone/candy-corn.svg b/src/static/icons/duotone/candy-corn.svg similarity index 100% rename from client/src/static/icons/duotone/candy-corn.svg rename to src/static/icons/duotone/candy-corn.svg diff --git a/client/src/static/icons/duotone/cannabis.svg b/src/static/icons/duotone/cannabis.svg similarity index 100% rename from client/src/static/icons/duotone/cannabis.svg rename to src/static/icons/duotone/cannabis.svg diff --git a/client/src/static/icons/duotone/capsules.svg b/src/static/icons/duotone/capsules.svg similarity index 100% rename from client/src/static/icons/duotone/capsules.svg rename to src/static/icons/duotone/capsules.svg diff --git a/client/src/static/icons/duotone/car-alt.svg b/src/static/icons/duotone/car-alt.svg similarity index 100% rename from client/src/static/icons/duotone/car-alt.svg rename to src/static/icons/duotone/car-alt.svg diff --git a/client/src/static/icons/duotone/car-battery.svg b/src/static/icons/duotone/car-battery.svg similarity index 100% rename from client/src/static/icons/duotone/car-battery.svg rename to src/static/icons/duotone/car-battery.svg diff --git a/client/src/static/icons/duotone/car-building.svg b/src/static/icons/duotone/car-building.svg similarity index 100% rename from client/src/static/icons/duotone/car-building.svg rename to src/static/icons/duotone/car-building.svg diff --git a/client/src/static/icons/duotone/car-bump.svg b/src/static/icons/duotone/car-bump.svg similarity index 100% rename from client/src/static/icons/duotone/car-bump.svg rename to src/static/icons/duotone/car-bump.svg diff --git a/client/src/static/icons/duotone/car-bus.svg b/src/static/icons/duotone/car-bus.svg similarity index 100% rename from client/src/static/icons/duotone/car-bus.svg rename to src/static/icons/duotone/car-bus.svg diff --git a/client/src/static/icons/duotone/car-crash.svg b/src/static/icons/duotone/car-crash.svg similarity index 100% rename from client/src/static/icons/duotone/car-crash.svg rename to src/static/icons/duotone/car-crash.svg diff --git a/client/src/static/icons/duotone/car-garage.svg b/src/static/icons/duotone/car-garage.svg similarity index 100% rename from client/src/static/icons/duotone/car-garage.svg rename to src/static/icons/duotone/car-garage.svg diff --git a/client/src/static/icons/duotone/car-mechanic.svg b/src/static/icons/duotone/car-mechanic.svg similarity index 100% rename from client/src/static/icons/duotone/car-mechanic.svg rename to src/static/icons/duotone/car-mechanic.svg diff --git a/client/src/static/icons/duotone/car-side.svg b/src/static/icons/duotone/car-side.svg similarity index 100% rename from client/src/static/icons/duotone/car-side.svg rename to src/static/icons/duotone/car-side.svg diff --git a/client/src/static/icons/duotone/car-tilt.svg b/src/static/icons/duotone/car-tilt.svg similarity index 100% rename from client/src/static/icons/duotone/car-tilt.svg rename to src/static/icons/duotone/car-tilt.svg diff --git a/client/src/static/icons/duotone/car-wash.svg b/src/static/icons/duotone/car-wash.svg similarity index 100% rename from client/src/static/icons/duotone/car-wash.svg rename to src/static/icons/duotone/car-wash.svg diff --git a/client/src/static/icons/duotone/car.svg b/src/static/icons/duotone/car.svg similarity index 100% rename from client/src/static/icons/duotone/car.svg rename to src/static/icons/duotone/car.svg diff --git a/client/src/static/icons/duotone/caravan-alt.svg b/src/static/icons/duotone/caravan-alt.svg similarity index 100% rename from client/src/static/icons/duotone/caravan-alt.svg rename to src/static/icons/duotone/caravan-alt.svg diff --git a/client/src/static/icons/duotone/caravan.svg b/src/static/icons/duotone/caravan.svg similarity index 100% rename from client/src/static/icons/duotone/caravan.svg rename to src/static/icons/duotone/caravan.svg diff --git a/client/src/static/icons/duotone/caret-circle-down.svg b/src/static/icons/duotone/caret-circle-down.svg similarity index 100% rename from client/src/static/icons/duotone/caret-circle-down.svg rename to src/static/icons/duotone/caret-circle-down.svg diff --git a/client/src/static/icons/duotone/caret-circle-left.svg b/src/static/icons/duotone/caret-circle-left.svg similarity index 100% rename from client/src/static/icons/duotone/caret-circle-left.svg rename to src/static/icons/duotone/caret-circle-left.svg diff --git a/client/src/static/icons/duotone/caret-circle-right.svg b/src/static/icons/duotone/caret-circle-right.svg similarity index 100% rename from client/src/static/icons/duotone/caret-circle-right.svg rename to src/static/icons/duotone/caret-circle-right.svg diff --git a/client/src/static/icons/duotone/caret-circle-up.svg b/src/static/icons/duotone/caret-circle-up.svg similarity index 100% rename from client/src/static/icons/duotone/caret-circle-up.svg rename to src/static/icons/duotone/caret-circle-up.svg diff --git a/client/src/static/icons/duotone/caret-down.svg b/src/static/icons/duotone/caret-down.svg similarity index 100% rename from client/src/static/icons/duotone/caret-down.svg rename to src/static/icons/duotone/caret-down.svg diff --git a/client/src/static/icons/duotone/caret-left.svg b/src/static/icons/duotone/caret-left.svg similarity index 100% rename from client/src/static/icons/duotone/caret-left.svg rename to src/static/icons/duotone/caret-left.svg diff --git a/client/src/static/icons/duotone/caret-right.svg b/src/static/icons/duotone/caret-right.svg similarity index 100% rename from client/src/static/icons/duotone/caret-right.svg rename to src/static/icons/duotone/caret-right.svg diff --git a/client/src/static/icons/duotone/caret-square-down.svg b/src/static/icons/duotone/caret-square-down.svg similarity index 100% rename from client/src/static/icons/duotone/caret-square-down.svg rename to src/static/icons/duotone/caret-square-down.svg diff --git a/client/src/static/icons/duotone/caret-square-left.svg b/src/static/icons/duotone/caret-square-left.svg similarity index 100% rename from client/src/static/icons/duotone/caret-square-left.svg rename to src/static/icons/duotone/caret-square-left.svg diff --git a/client/src/static/icons/duotone/caret-square-right.svg b/src/static/icons/duotone/caret-square-right.svg similarity index 100% rename from client/src/static/icons/duotone/caret-square-right.svg rename to src/static/icons/duotone/caret-square-right.svg diff --git a/client/src/static/icons/duotone/caret-square-up.svg b/src/static/icons/duotone/caret-square-up.svg similarity index 100% rename from client/src/static/icons/duotone/caret-square-up.svg rename to src/static/icons/duotone/caret-square-up.svg diff --git a/client/src/static/icons/duotone/caret-up.svg b/src/static/icons/duotone/caret-up.svg similarity index 100% rename from client/src/static/icons/duotone/caret-up.svg rename to src/static/icons/duotone/caret-up.svg diff --git a/client/src/static/icons/duotone/carrot.svg b/src/static/icons/duotone/carrot.svg similarity index 100% rename from client/src/static/icons/duotone/carrot.svg rename to src/static/icons/duotone/carrot.svg diff --git a/client/src/static/icons/duotone/cars.svg b/src/static/icons/duotone/cars.svg similarity index 100% rename from client/src/static/icons/duotone/cars.svg rename to src/static/icons/duotone/cars.svg diff --git a/client/src/static/icons/duotone/cart-arrow-down.svg b/src/static/icons/duotone/cart-arrow-down.svg similarity index 100% rename from client/src/static/icons/duotone/cart-arrow-down.svg rename to src/static/icons/duotone/cart-arrow-down.svg diff --git a/client/src/static/icons/duotone/cart-plus.svg b/src/static/icons/duotone/cart-plus.svg similarity index 100% rename from client/src/static/icons/duotone/cart-plus.svg rename to src/static/icons/duotone/cart-plus.svg diff --git a/client/src/static/icons/duotone/cash-register.svg b/src/static/icons/duotone/cash-register.svg similarity index 100% rename from client/src/static/icons/duotone/cash-register.svg rename to src/static/icons/duotone/cash-register.svg diff --git a/client/src/static/icons/duotone/cassette-tape.svg b/src/static/icons/duotone/cassette-tape.svg similarity index 100% rename from client/src/static/icons/duotone/cassette-tape.svg rename to src/static/icons/duotone/cassette-tape.svg diff --git a/client/src/static/icons/duotone/cat-space.svg b/src/static/icons/duotone/cat-space.svg similarity index 100% rename from client/src/static/icons/duotone/cat-space.svg rename to src/static/icons/duotone/cat-space.svg diff --git a/client/src/static/icons/duotone/cat.svg b/src/static/icons/duotone/cat.svg similarity index 100% rename from client/src/static/icons/duotone/cat.svg rename to src/static/icons/duotone/cat.svg diff --git a/client/src/static/icons/duotone/cauldron.svg b/src/static/icons/duotone/cauldron.svg similarity index 100% rename from client/src/static/icons/duotone/cauldron.svg rename to src/static/icons/duotone/cauldron.svg diff --git a/client/src/static/icons/duotone/cctv.svg b/src/static/icons/duotone/cctv.svg similarity index 100% rename from client/src/static/icons/duotone/cctv.svg rename to src/static/icons/duotone/cctv.svg diff --git a/client/src/static/icons/duotone/certificate.svg b/src/static/icons/duotone/certificate.svg similarity index 100% rename from client/src/static/icons/duotone/certificate.svg rename to src/static/icons/duotone/certificate.svg diff --git a/client/src/static/icons/duotone/chair-office.svg b/src/static/icons/duotone/chair-office.svg similarity index 100% rename from client/src/static/icons/duotone/chair-office.svg rename to src/static/icons/duotone/chair-office.svg diff --git a/client/src/static/icons/duotone/chair.svg b/src/static/icons/duotone/chair.svg similarity index 100% rename from client/src/static/icons/duotone/chair.svg rename to src/static/icons/duotone/chair.svg diff --git a/client/src/static/icons/duotone/chalkboard-teacher.svg b/src/static/icons/duotone/chalkboard-teacher.svg similarity index 100% rename from client/src/static/icons/duotone/chalkboard-teacher.svg rename to src/static/icons/duotone/chalkboard-teacher.svg diff --git a/client/src/static/icons/duotone/chalkboard.svg b/src/static/icons/duotone/chalkboard.svg similarity index 100% rename from client/src/static/icons/duotone/chalkboard.svg rename to src/static/icons/duotone/chalkboard.svg diff --git a/client/src/static/icons/duotone/charging-station.svg b/src/static/icons/duotone/charging-station.svg similarity index 100% rename from client/src/static/icons/duotone/charging-station.svg rename to src/static/icons/duotone/charging-station.svg diff --git a/client/src/static/icons/duotone/chart-area.svg b/src/static/icons/duotone/chart-area.svg similarity index 100% rename from client/src/static/icons/duotone/chart-area.svg rename to src/static/icons/duotone/chart-area.svg diff --git a/client/src/static/icons/duotone/chart-bar.svg b/src/static/icons/duotone/chart-bar.svg similarity index 100% rename from client/src/static/icons/duotone/chart-bar.svg rename to src/static/icons/duotone/chart-bar.svg diff --git a/client/src/static/icons/duotone/chart-line-down.svg b/src/static/icons/duotone/chart-line-down.svg similarity index 100% rename from client/src/static/icons/duotone/chart-line-down.svg rename to src/static/icons/duotone/chart-line-down.svg diff --git a/client/src/static/icons/duotone/chart-line.svg b/src/static/icons/duotone/chart-line.svg similarity index 100% rename from client/src/static/icons/duotone/chart-line.svg rename to src/static/icons/duotone/chart-line.svg diff --git a/client/src/static/icons/duotone/chart-network.svg b/src/static/icons/duotone/chart-network.svg similarity index 100% rename from client/src/static/icons/duotone/chart-network.svg rename to src/static/icons/duotone/chart-network.svg diff --git a/client/src/static/icons/duotone/chart-pie-alt.svg b/src/static/icons/duotone/chart-pie-alt.svg similarity index 100% rename from client/src/static/icons/duotone/chart-pie-alt.svg rename to src/static/icons/duotone/chart-pie-alt.svg diff --git a/client/src/static/icons/duotone/chart-pie.svg b/src/static/icons/duotone/chart-pie.svg similarity index 100% rename from client/src/static/icons/duotone/chart-pie.svg rename to src/static/icons/duotone/chart-pie.svg diff --git a/client/src/static/icons/duotone/chart-scatter.svg b/src/static/icons/duotone/chart-scatter.svg similarity index 100% rename from client/src/static/icons/duotone/chart-scatter.svg rename to src/static/icons/duotone/chart-scatter.svg diff --git a/client/src/static/icons/duotone/check-circle.svg b/src/static/icons/duotone/check-circle.svg similarity index 100% rename from client/src/static/icons/duotone/check-circle.svg rename to src/static/icons/duotone/check-circle.svg diff --git a/client/src/static/icons/duotone/check-double.svg b/src/static/icons/duotone/check-double.svg similarity index 100% rename from client/src/static/icons/duotone/check-double.svg rename to src/static/icons/duotone/check-double.svg diff --git a/client/src/static/icons/duotone/check-square.svg b/src/static/icons/duotone/check-square.svg similarity index 100% rename from client/src/static/icons/duotone/check-square.svg rename to src/static/icons/duotone/check-square.svg diff --git a/client/src/static/icons/duotone/check.svg b/src/static/icons/duotone/check.svg similarity index 100% rename from client/src/static/icons/duotone/check.svg rename to src/static/icons/duotone/check.svg diff --git a/client/src/static/icons/duotone/cheese-swiss.svg b/src/static/icons/duotone/cheese-swiss.svg similarity index 100% rename from client/src/static/icons/duotone/cheese-swiss.svg rename to src/static/icons/duotone/cheese-swiss.svg diff --git a/client/src/static/icons/duotone/cheese.svg b/src/static/icons/duotone/cheese.svg similarity index 100% rename from client/src/static/icons/duotone/cheese.svg rename to src/static/icons/duotone/cheese.svg diff --git a/client/src/static/icons/duotone/cheeseburger.svg b/src/static/icons/duotone/cheeseburger.svg similarity index 100% rename from client/src/static/icons/duotone/cheeseburger.svg rename to src/static/icons/duotone/cheeseburger.svg diff --git a/client/src/static/icons/duotone/chess-bishop-alt.svg b/src/static/icons/duotone/chess-bishop-alt.svg similarity index 100% rename from client/src/static/icons/duotone/chess-bishop-alt.svg rename to src/static/icons/duotone/chess-bishop-alt.svg diff --git a/client/src/static/icons/duotone/chess-bishop.svg b/src/static/icons/duotone/chess-bishop.svg similarity index 100% rename from client/src/static/icons/duotone/chess-bishop.svg rename to src/static/icons/duotone/chess-bishop.svg diff --git a/client/src/static/icons/duotone/chess-board.svg b/src/static/icons/duotone/chess-board.svg similarity index 100% rename from client/src/static/icons/duotone/chess-board.svg rename to src/static/icons/duotone/chess-board.svg diff --git a/client/src/static/icons/duotone/chess-clock-alt.svg b/src/static/icons/duotone/chess-clock-alt.svg similarity index 100% rename from client/src/static/icons/duotone/chess-clock-alt.svg rename to src/static/icons/duotone/chess-clock-alt.svg diff --git a/client/src/static/icons/duotone/chess-clock.svg b/src/static/icons/duotone/chess-clock.svg similarity index 100% rename from client/src/static/icons/duotone/chess-clock.svg rename to src/static/icons/duotone/chess-clock.svg diff --git a/client/src/static/icons/duotone/chess-king-alt.svg b/src/static/icons/duotone/chess-king-alt.svg similarity index 100% rename from client/src/static/icons/duotone/chess-king-alt.svg rename to src/static/icons/duotone/chess-king-alt.svg diff --git a/client/src/static/icons/duotone/chess-king.svg b/src/static/icons/duotone/chess-king.svg similarity index 100% rename from client/src/static/icons/duotone/chess-king.svg rename to src/static/icons/duotone/chess-king.svg diff --git a/client/src/static/icons/duotone/chess-knight-alt.svg b/src/static/icons/duotone/chess-knight-alt.svg similarity index 100% rename from client/src/static/icons/duotone/chess-knight-alt.svg rename to src/static/icons/duotone/chess-knight-alt.svg diff --git a/client/src/static/icons/duotone/chess-knight.svg b/src/static/icons/duotone/chess-knight.svg similarity index 100% rename from client/src/static/icons/duotone/chess-knight.svg rename to src/static/icons/duotone/chess-knight.svg diff --git a/client/src/static/icons/duotone/chess-pawn-alt.svg b/src/static/icons/duotone/chess-pawn-alt.svg similarity index 100% rename from client/src/static/icons/duotone/chess-pawn-alt.svg rename to src/static/icons/duotone/chess-pawn-alt.svg diff --git a/client/src/static/icons/duotone/chess-pawn.svg b/src/static/icons/duotone/chess-pawn.svg similarity index 100% rename from client/src/static/icons/duotone/chess-pawn.svg rename to src/static/icons/duotone/chess-pawn.svg diff --git a/client/src/static/icons/duotone/chess-queen-alt.svg b/src/static/icons/duotone/chess-queen-alt.svg similarity index 100% rename from client/src/static/icons/duotone/chess-queen-alt.svg rename to src/static/icons/duotone/chess-queen-alt.svg diff --git a/client/src/static/icons/duotone/chess-queen.svg b/src/static/icons/duotone/chess-queen.svg similarity index 100% rename from client/src/static/icons/duotone/chess-queen.svg rename to src/static/icons/duotone/chess-queen.svg diff --git a/client/src/static/icons/duotone/chess-rook-alt.svg b/src/static/icons/duotone/chess-rook-alt.svg similarity index 100% rename from client/src/static/icons/duotone/chess-rook-alt.svg rename to src/static/icons/duotone/chess-rook-alt.svg diff --git a/client/src/static/icons/duotone/chess-rook.svg b/src/static/icons/duotone/chess-rook.svg similarity index 100% rename from client/src/static/icons/duotone/chess-rook.svg rename to src/static/icons/duotone/chess-rook.svg diff --git a/client/src/static/icons/duotone/chess.svg b/src/static/icons/duotone/chess.svg similarity index 100% rename from client/src/static/icons/duotone/chess.svg rename to src/static/icons/duotone/chess.svg diff --git a/client/src/static/icons/duotone/chevron-circle-down.svg b/src/static/icons/duotone/chevron-circle-down.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-circle-down.svg rename to src/static/icons/duotone/chevron-circle-down.svg diff --git a/client/src/static/icons/duotone/chevron-circle-left.svg b/src/static/icons/duotone/chevron-circle-left.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-circle-left.svg rename to src/static/icons/duotone/chevron-circle-left.svg diff --git a/client/src/static/icons/duotone/chevron-circle-right.svg b/src/static/icons/duotone/chevron-circle-right.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-circle-right.svg rename to src/static/icons/duotone/chevron-circle-right.svg diff --git a/client/src/static/icons/duotone/chevron-circle-up.svg b/src/static/icons/duotone/chevron-circle-up.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-circle-up.svg rename to src/static/icons/duotone/chevron-circle-up.svg diff --git a/client/src/static/icons/duotone/chevron-double-down.svg b/src/static/icons/duotone/chevron-double-down.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-double-down.svg rename to src/static/icons/duotone/chevron-double-down.svg diff --git a/client/src/static/icons/duotone/chevron-double-left.svg b/src/static/icons/duotone/chevron-double-left.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-double-left.svg rename to src/static/icons/duotone/chevron-double-left.svg diff --git a/client/src/static/icons/duotone/chevron-double-right.svg b/src/static/icons/duotone/chevron-double-right.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-double-right.svg rename to src/static/icons/duotone/chevron-double-right.svg diff --git a/client/src/static/icons/duotone/chevron-double-up.svg b/src/static/icons/duotone/chevron-double-up.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-double-up.svg rename to src/static/icons/duotone/chevron-double-up.svg diff --git a/client/src/static/icons/duotone/chevron-down.svg b/src/static/icons/duotone/chevron-down.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-down.svg rename to src/static/icons/duotone/chevron-down.svg diff --git a/client/src/static/icons/duotone/chevron-left.svg b/src/static/icons/duotone/chevron-left.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-left.svg rename to src/static/icons/duotone/chevron-left.svg diff --git a/client/src/static/icons/duotone/chevron-right.svg b/src/static/icons/duotone/chevron-right.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-right.svg rename to src/static/icons/duotone/chevron-right.svg diff --git a/client/src/static/icons/duotone/chevron-square-down.svg b/src/static/icons/duotone/chevron-square-down.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-square-down.svg rename to src/static/icons/duotone/chevron-square-down.svg diff --git a/client/src/static/icons/duotone/chevron-square-left.svg b/src/static/icons/duotone/chevron-square-left.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-square-left.svg rename to src/static/icons/duotone/chevron-square-left.svg diff --git a/client/src/static/icons/duotone/chevron-square-right.svg b/src/static/icons/duotone/chevron-square-right.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-square-right.svg rename to src/static/icons/duotone/chevron-square-right.svg diff --git a/client/src/static/icons/duotone/chevron-square-up.svg b/src/static/icons/duotone/chevron-square-up.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-square-up.svg rename to src/static/icons/duotone/chevron-square-up.svg diff --git a/client/src/static/icons/duotone/chevron-up.svg b/src/static/icons/duotone/chevron-up.svg similarity index 100% rename from client/src/static/icons/duotone/chevron-up.svg rename to src/static/icons/duotone/chevron-up.svg diff --git a/client/src/static/icons/duotone/child.svg b/src/static/icons/duotone/child.svg similarity index 100% rename from client/src/static/icons/duotone/child.svg rename to src/static/icons/duotone/child.svg diff --git a/client/src/static/icons/duotone/chimney.svg b/src/static/icons/duotone/chimney.svg similarity index 100% rename from client/src/static/icons/duotone/chimney.svg rename to src/static/icons/duotone/chimney.svg diff --git a/client/src/static/icons/duotone/church.svg b/src/static/icons/duotone/church.svg similarity index 100% rename from client/src/static/icons/duotone/church.svg rename to src/static/icons/duotone/church.svg diff --git a/client/src/static/icons/duotone/circle-notch.svg b/src/static/icons/duotone/circle-notch.svg similarity index 100% rename from client/src/static/icons/duotone/circle-notch.svg rename to src/static/icons/duotone/circle-notch.svg diff --git a/client/src/static/icons/duotone/circle.svg b/src/static/icons/duotone/circle.svg similarity index 100% rename from client/src/static/icons/duotone/circle.svg rename to src/static/icons/duotone/circle.svg diff --git a/client/src/static/icons/duotone/city.svg b/src/static/icons/duotone/city.svg similarity index 100% rename from client/src/static/icons/duotone/city.svg rename to src/static/icons/duotone/city.svg diff --git a/client/src/static/icons/duotone/clarinet.svg b/src/static/icons/duotone/clarinet.svg similarity index 100% rename from client/src/static/icons/duotone/clarinet.svg rename to src/static/icons/duotone/clarinet.svg diff --git a/client/src/static/icons/duotone/claw-marks.svg b/src/static/icons/duotone/claw-marks.svg similarity index 100% rename from client/src/static/icons/duotone/claw-marks.svg rename to src/static/icons/duotone/claw-marks.svg diff --git a/client/src/static/icons/duotone/clinic-medical.svg b/src/static/icons/duotone/clinic-medical.svg similarity index 100% rename from client/src/static/icons/duotone/clinic-medical.svg rename to src/static/icons/duotone/clinic-medical.svg diff --git a/client/src/static/icons/duotone/clipboard-check.svg b/src/static/icons/duotone/clipboard-check.svg similarity index 100% rename from client/src/static/icons/duotone/clipboard-check.svg rename to src/static/icons/duotone/clipboard-check.svg diff --git a/client/src/static/icons/duotone/clipboard-list-check.svg b/src/static/icons/duotone/clipboard-list-check.svg similarity index 100% rename from client/src/static/icons/duotone/clipboard-list-check.svg rename to src/static/icons/duotone/clipboard-list-check.svg diff --git a/client/src/static/icons/duotone/clipboard-list.svg b/src/static/icons/duotone/clipboard-list.svg similarity index 100% rename from client/src/static/icons/duotone/clipboard-list.svg rename to src/static/icons/duotone/clipboard-list.svg diff --git a/client/src/static/icons/duotone/clipboard-prescription.svg b/src/static/icons/duotone/clipboard-prescription.svg similarity index 100% rename from client/src/static/icons/duotone/clipboard-prescription.svg rename to src/static/icons/duotone/clipboard-prescription.svg diff --git a/client/src/static/icons/duotone/clipboard-user.svg b/src/static/icons/duotone/clipboard-user.svg similarity index 100% rename from client/src/static/icons/duotone/clipboard-user.svg rename to src/static/icons/duotone/clipboard-user.svg diff --git a/client/src/static/icons/duotone/clipboard.svg b/src/static/icons/duotone/clipboard.svg similarity index 100% rename from client/src/static/icons/duotone/clipboard.svg rename to src/static/icons/duotone/clipboard.svg diff --git a/client/src/static/icons/duotone/clock.svg b/src/static/icons/duotone/clock.svg similarity index 100% rename from client/src/static/icons/duotone/clock.svg rename to src/static/icons/duotone/clock.svg diff --git a/client/src/static/icons/duotone/clone.svg b/src/static/icons/duotone/clone.svg similarity index 100% rename from client/src/static/icons/duotone/clone.svg rename to src/static/icons/duotone/clone.svg diff --git a/client/src/static/icons/duotone/closed-captioning.svg b/src/static/icons/duotone/closed-captioning.svg similarity index 100% rename from client/src/static/icons/duotone/closed-captioning.svg rename to src/static/icons/duotone/closed-captioning.svg diff --git a/client/src/static/icons/duotone/cloud-download-alt.svg b/src/static/icons/duotone/cloud-download-alt.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-download-alt.svg rename to src/static/icons/duotone/cloud-download-alt.svg diff --git a/client/src/static/icons/duotone/cloud-download.svg b/src/static/icons/duotone/cloud-download.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-download.svg rename to src/static/icons/duotone/cloud-download.svg diff --git a/client/src/static/icons/duotone/cloud-drizzle.svg b/src/static/icons/duotone/cloud-drizzle.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-drizzle.svg rename to src/static/icons/duotone/cloud-drizzle.svg diff --git a/client/src/static/icons/duotone/cloud-hail-mixed.svg b/src/static/icons/duotone/cloud-hail-mixed.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-hail-mixed.svg rename to src/static/icons/duotone/cloud-hail-mixed.svg diff --git a/client/src/static/icons/duotone/cloud-hail.svg b/src/static/icons/duotone/cloud-hail.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-hail.svg rename to src/static/icons/duotone/cloud-hail.svg diff --git a/client/src/static/icons/duotone/cloud-meatball.svg b/src/static/icons/duotone/cloud-meatball.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-meatball.svg rename to src/static/icons/duotone/cloud-meatball.svg diff --git a/client/src/static/icons/duotone/cloud-moon-rain.svg b/src/static/icons/duotone/cloud-moon-rain.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-moon-rain.svg rename to src/static/icons/duotone/cloud-moon-rain.svg diff --git a/client/src/static/icons/duotone/cloud-moon.svg b/src/static/icons/duotone/cloud-moon.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-moon.svg rename to src/static/icons/duotone/cloud-moon.svg diff --git a/client/src/static/icons/duotone/cloud-music.svg b/src/static/icons/duotone/cloud-music.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-music.svg rename to src/static/icons/duotone/cloud-music.svg diff --git a/client/src/static/icons/duotone/cloud-rain.svg b/src/static/icons/duotone/cloud-rain.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-rain.svg rename to src/static/icons/duotone/cloud-rain.svg diff --git a/client/src/static/icons/duotone/cloud-rainbow.svg b/src/static/icons/duotone/cloud-rainbow.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-rainbow.svg rename to src/static/icons/duotone/cloud-rainbow.svg diff --git a/client/src/static/icons/duotone/cloud-showers-heavy.svg b/src/static/icons/duotone/cloud-showers-heavy.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-showers-heavy.svg rename to src/static/icons/duotone/cloud-showers-heavy.svg diff --git a/client/src/static/icons/duotone/cloud-showers.svg b/src/static/icons/duotone/cloud-showers.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-showers.svg rename to src/static/icons/duotone/cloud-showers.svg diff --git a/client/src/static/icons/duotone/cloud-sleet.svg b/src/static/icons/duotone/cloud-sleet.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-sleet.svg rename to src/static/icons/duotone/cloud-sleet.svg diff --git a/client/src/static/icons/duotone/cloud-snow.svg b/src/static/icons/duotone/cloud-snow.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-snow.svg rename to src/static/icons/duotone/cloud-snow.svg diff --git a/client/src/static/icons/duotone/cloud-sun-rain.svg b/src/static/icons/duotone/cloud-sun-rain.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-sun-rain.svg rename to src/static/icons/duotone/cloud-sun-rain.svg diff --git a/client/src/static/icons/duotone/cloud-sun.svg b/src/static/icons/duotone/cloud-sun.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-sun.svg rename to src/static/icons/duotone/cloud-sun.svg diff --git a/client/src/static/icons/duotone/cloud-upload-alt.svg b/src/static/icons/duotone/cloud-upload-alt.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-upload-alt.svg rename to src/static/icons/duotone/cloud-upload-alt.svg diff --git a/client/src/static/icons/duotone/cloud-upload.svg b/src/static/icons/duotone/cloud-upload.svg similarity index 100% rename from client/src/static/icons/duotone/cloud-upload.svg rename to src/static/icons/duotone/cloud-upload.svg diff --git a/client/src/static/icons/duotone/cloud.svg b/src/static/icons/duotone/cloud.svg similarity index 100% rename from client/src/static/icons/duotone/cloud.svg rename to src/static/icons/duotone/cloud.svg diff --git a/client/src/static/icons/duotone/clouds-moon.svg b/src/static/icons/duotone/clouds-moon.svg similarity index 100% rename from client/src/static/icons/duotone/clouds-moon.svg rename to src/static/icons/duotone/clouds-moon.svg diff --git a/client/src/static/icons/duotone/clouds-sun.svg b/src/static/icons/duotone/clouds-sun.svg similarity index 100% rename from client/src/static/icons/duotone/clouds-sun.svg rename to src/static/icons/duotone/clouds-sun.svg diff --git a/client/src/static/icons/duotone/clouds.svg b/src/static/icons/duotone/clouds.svg similarity index 100% rename from client/src/static/icons/duotone/clouds.svg rename to src/static/icons/duotone/clouds.svg diff --git a/client/src/static/icons/duotone/club.svg b/src/static/icons/duotone/club.svg similarity index 100% rename from client/src/static/icons/duotone/club.svg rename to src/static/icons/duotone/club.svg diff --git a/client/src/static/icons/duotone/cocktail.svg b/src/static/icons/duotone/cocktail.svg similarity index 100% rename from client/src/static/icons/duotone/cocktail.svg rename to src/static/icons/duotone/cocktail.svg diff --git a/client/src/static/icons/duotone/code-branch.svg b/src/static/icons/duotone/code-branch.svg similarity index 100% rename from client/src/static/icons/duotone/code-branch.svg rename to src/static/icons/duotone/code-branch.svg diff --git a/client/src/static/icons/duotone/code-commit.svg b/src/static/icons/duotone/code-commit.svg similarity index 100% rename from client/src/static/icons/duotone/code-commit.svg rename to src/static/icons/duotone/code-commit.svg diff --git a/client/src/static/icons/duotone/code-merge.svg b/src/static/icons/duotone/code-merge.svg similarity index 100% rename from client/src/static/icons/duotone/code-merge.svg rename to src/static/icons/duotone/code-merge.svg diff --git a/client/src/static/icons/duotone/code.svg b/src/static/icons/duotone/code.svg similarity index 100% rename from client/src/static/icons/duotone/code.svg rename to src/static/icons/duotone/code.svg diff --git a/client/src/static/icons/duotone/coffee-pot.svg b/src/static/icons/duotone/coffee-pot.svg similarity index 100% rename from client/src/static/icons/duotone/coffee-pot.svg rename to src/static/icons/duotone/coffee-pot.svg diff --git a/client/src/static/icons/duotone/coffee-togo.svg b/src/static/icons/duotone/coffee-togo.svg similarity index 100% rename from client/src/static/icons/duotone/coffee-togo.svg rename to src/static/icons/duotone/coffee-togo.svg diff --git a/client/src/static/icons/duotone/coffee.svg b/src/static/icons/duotone/coffee.svg similarity index 100% rename from client/src/static/icons/duotone/coffee.svg rename to src/static/icons/duotone/coffee.svg diff --git a/client/src/static/icons/duotone/coffin.svg b/src/static/icons/duotone/coffin.svg similarity index 100% rename from client/src/static/icons/duotone/coffin.svg rename to src/static/icons/duotone/coffin.svg diff --git a/client/src/static/icons/duotone/cog.svg b/src/static/icons/duotone/cog.svg similarity index 100% rename from client/src/static/icons/duotone/cog.svg rename to src/static/icons/duotone/cog.svg diff --git a/client/src/static/icons/duotone/cogs.svg b/src/static/icons/duotone/cogs.svg similarity index 100% rename from client/src/static/icons/duotone/cogs.svg rename to src/static/icons/duotone/cogs.svg diff --git a/client/src/static/icons/duotone/coin.svg b/src/static/icons/duotone/coin.svg similarity index 100% rename from client/src/static/icons/duotone/coin.svg rename to src/static/icons/duotone/coin.svg diff --git a/client/src/static/icons/duotone/coins.svg b/src/static/icons/duotone/coins.svg similarity index 100% rename from client/src/static/icons/duotone/coins.svg rename to src/static/icons/duotone/coins.svg diff --git a/client/src/static/icons/duotone/columns.svg b/src/static/icons/duotone/columns.svg similarity index 100% rename from client/src/static/icons/duotone/columns.svg rename to src/static/icons/duotone/columns.svg diff --git a/client/src/static/icons/duotone/comet.svg b/src/static/icons/duotone/comet.svg similarity index 100% rename from client/src/static/icons/duotone/comet.svg rename to src/static/icons/duotone/comet.svg diff --git a/client/src/static/icons/duotone/comment-alt-check.svg b/src/static/icons/duotone/comment-alt-check.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-check.svg rename to src/static/icons/duotone/comment-alt-check.svg diff --git a/client/src/static/icons/duotone/comment-alt-dollar.svg b/src/static/icons/duotone/comment-alt-dollar.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-dollar.svg rename to src/static/icons/duotone/comment-alt-dollar.svg diff --git a/client/src/static/icons/duotone/comment-alt-dots.svg b/src/static/icons/duotone/comment-alt-dots.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-dots.svg rename to src/static/icons/duotone/comment-alt-dots.svg diff --git a/client/src/static/icons/duotone/comment-alt-edit.svg b/src/static/icons/duotone/comment-alt-edit.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-edit.svg rename to src/static/icons/duotone/comment-alt-edit.svg diff --git a/client/src/static/icons/duotone/comment-alt-exclamation.svg b/src/static/icons/duotone/comment-alt-exclamation.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-exclamation.svg rename to src/static/icons/duotone/comment-alt-exclamation.svg diff --git a/client/src/static/icons/duotone/comment-alt-lines.svg b/src/static/icons/duotone/comment-alt-lines.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-lines.svg rename to src/static/icons/duotone/comment-alt-lines.svg diff --git a/client/src/static/icons/duotone/comment-alt-medical.svg b/src/static/icons/duotone/comment-alt-medical.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-medical.svg rename to src/static/icons/duotone/comment-alt-medical.svg diff --git a/client/src/static/icons/duotone/comment-alt-minus.svg b/src/static/icons/duotone/comment-alt-minus.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-minus.svg rename to src/static/icons/duotone/comment-alt-minus.svg diff --git a/client/src/static/icons/duotone/comment-alt-music.svg b/src/static/icons/duotone/comment-alt-music.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-music.svg rename to src/static/icons/duotone/comment-alt-music.svg diff --git a/client/src/static/icons/duotone/comment-alt-plus.svg b/src/static/icons/duotone/comment-alt-plus.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-plus.svg rename to src/static/icons/duotone/comment-alt-plus.svg diff --git a/client/src/static/icons/duotone/comment-alt-slash.svg b/src/static/icons/duotone/comment-alt-slash.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-slash.svg rename to src/static/icons/duotone/comment-alt-slash.svg diff --git a/client/src/static/icons/duotone/comment-alt-smile.svg b/src/static/icons/duotone/comment-alt-smile.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-smile.svg rename to src/static/icons/duotone/comment-alt-smile.svg diff --git a/client/src/static/icons/duotone/comment-alt-times.svg b/src/static/icons/duotone/comment-alt-times.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt-times.svg rename to src/static/icons/duotone/comment-alt-times.svg diff --git a/client/src/static/icons/duotone/comment-alt.svg b/src/static/icons/duotone/comment-alt.svg similarity index 100% rename from client/src/static/icons/duotone/comment-alt.svg rename to src/static/icons/duotone/comment-alt.svg diff --git a/client/src/static/icons/duotone/comment-check.svg b/src/static/icons/duotone/comment-check.svg similarity index 100% rename from client/src/static/icons/duotone/comment-check.svg rename to src/static/icons/duotone/comment-check.svg diff --git a/client/src/static/icons/duotone/comment-dollar.svg b/src/static/icons/duotone/comment-dollar.svg similarity index 100% rename from client/src/static/icons/duotone/comment-dollar.svg rename to src/static/icons/duotone/comment-dollar.svg diff --git a/client/src/static/icons/duotone/comment-dots.svg b/src/static/icons/duotone/comment-dots.svg similarity index 100% rename from client/src/static/icons/duotone/comment-dots.svg rename to src/static/icons/duotone/comment-dots.svg diff --git a/client/src/static/icons/duotone/comment-edit.svg b/src/static/icons/duotone/comment-edit.svg similarity index 100% rename from client/src/static/icons/duotone/comment-edit.svg rename to src/static/icons/duotone/comment-edit.svg diff --git a/client/src/static/icons/duotone/comment-exclamation.svg b/src/static/icons/duotone/comment-exclamation.svg similarity index 100% rename from client/src/static/icons/duotone/comment-exclamation.svg rename to src/static/icons/duotone/comment-exclamation.svg diff --git a/client/src/static/icons/duotone/comment-lines.svg b/src/static/icons/duotone/comment-lines.svg similarity index 100% rename from client/src/static/icons/duotone/comment-lines.svg rename to src/static/icons/duotone/comment-lines.svg diff --git a/client/src/static/icons/duotone/comment-medical.svg b/src/static/icons/duotone/comment-medical.svg similarity index 100% rename from client/src/static/icons/duotone/comment-medical.svg rename to src/static/icons/duotone/comment-medical.svg diff --git a/client/src/static/icons/duotone/comment-minus.svg b/src/static/icons/duotone/comment-minus.svg similarity index 100% rename from client/src/static/icons/duotone/comment-minus.svg rename to src/static/icons/duotone/comment-minus.svg diff --git a/client/src/static/icons/duotone/comment-music.svg b/src/static/icons/duotone/comment-music.svg similarity index 100% rename from client/src/static/icons/duotone/comment-music.svg rename to src/static/icons/duotone/comment-music.svg diff --git a/client/src/static/icons/duotone/comment-plus.svg b/src/static/icons/duotone/comment-plus.svg similarity index 100% rename from client/src/static/icons/duotone/comment-plus.svg rename to src/static/icons/duotone/comment-plus.svg diff --git a/client/src/static/icons/duotone/comment-slash.svg b/src/static/icons/duotone/comment-slash.svg similarity index 100% rename from client/src/static/icons/duotone/comment-slash.svg rename to src/static/icons/duotone/comment-slash.svg diff --git a/client/src/static/icons/duotone/comment-smile.svg b/src/static/icons/duotone/comment-smile.svg similarity index 100% rename from client/src/static/icons/duotone/comment-smile.svg rename to src/static/icons/duotone/comment-smile.svg diff --git a/client/src/static/icons/duotone/comment-times.svg b/src/static/icons/duotone/comment-times.svg similarity index 100% rename from client/src/static/icons/duotone/comment-times.svg rename to src/static/icons/duotone/comment-times.svg diff --git a/client/src/static/icons/duotone/comment.svg b/src/static/icons/duotone/comment.svg similarity index 100% rename from client/src/static/icons/duotone/comment.svg rename to src/static/icons/duotone/comment.svg diff --git a/client/src/static/icons/duotone/comments-alt-dollar.svg b/src/static/icons/duotone/comments-alt-dollar.svg similarity index 100% rename from client/src/static/icons/duotone/comments-alt-dollar.svg rename to src/static/icons/duotone/comments-alt-dollar.svg diff --git a/client/src/static/icons/duotone/comments-alt.svg b/src/static/icons/duotone/comments-alt.svg similarity index 100% rename from client/src/static/icons/duotone/comments-alt.svg rename to src/static/icons/duotone/comments-alt.svg diff --git a/client/src/static/icons/duotone/comments-dollar.svg b/src/static/icons/duotone/comments-dollar.svg similarity index 100% rename from client/src/static/icons/duotone/comments-dollar.svg rename to src/static/icons/duotone/comments-dollar.svg diff --git a/client/src/static/icons/duotone/comments.svg b/src/static/icons/duotone/comments.svg similarity index 100% rename from client/src/static/icons/duotone/comments.svg rename to src/static/icons/duotone/comments.svg diff --git a/client/src/static/icons/duotone/compact-disc.svg b/src/static/icons/duotone/compact-disc.svg similarity index 100% rename from client/src/static/icons/duotone/compact-disc.svg rename to src/static/icons/duotone/compact-disc.svg diff --git a/client/src/static/icons/duotone/compass-slash.svg b/src/static/icons/duotone/compass-slash.svg similarity index 100% rename from client/src/static/icons/duotone/compass-slash.svg rename to src/static/icons/duotone/compass-slash.svg diff --git a/client/src/static/icons/duotone/compass.svg b/src/static/icons/duotone/compass.svg similarity index 100% rename from client/src/static/icons/duotone/compass.svg rename to src/static/icons/duotone/compass.svg diff --git a/client/src/static/icons/duotone/compress-alt.svg b/src/static/icons/duotone/compress-alt.svg similarity index 100% rename from client/src/static/icons/duotone/compress-alt.svg rename to src/static/icons/duotone/compress-alt.svg diff --git a/client/src/static/icons/duotone/compress-arrows-alt.svg b/src/static/icons/duotone/compress-arrows-alt.svg similarity index 100% rename from client/src/static/icons/duotone/compress-arrows-alt.svg rename to src/static/icons/duotone/compress-arrows-alt.svg diff --git a/client/src/static/icons/duotone/compress-wide.svg b/src/static/icons/duotone/compress-wide.svg similarity index 100% rename from client/src/static/icons/duotone/compress-wide.svg rename to src/static/icons/duotone/compress-wide.svg diff --git a/client/src/static/icons/duotone/compress.svg b/src/static/icons/duotone/compress.svg similarity index 100% rename from client/src/static/icons/duotone/compress.svg rename to src/static/icons/duotone/compress.svg diff --git a/client/src/static/icons/duotone/computer-classic.svg b/src/static/icons/duotone/computer-classic.svg similarity index 100% rename from client/src/static/icons/duotone/computer-classic.svg rename to src/static/icons/duotone/computer-classic.svg diff --git a/client/src/static/icons/duotone/computer-speaker.svg b/src/static/icons/duotone/computer-speaker.svg similarity index 100% rename from client/src/static/icons/duotone/computer-speaker.svg rename to src/static/icons/duotone/computer-speaker.svg diff --git a/client/src/static/icons/duotone/concierge-bell.svg b/src/static/icons/duotone/concierge-bell.svg similarity index 100% rename from client/src/static/icons/duotone/concierge-bell.svg rename to src/static/icons/duotone/concierge-bell.svg diff --git a/client/src/static/icons/duotone/construction.svg b/src/static/icons/duotone/construction.svg similarity index 100% rename from client/src/static/icons/duotone/construction.svg rename to src/static/icons/duotone/construction.svg diff --git a/client/src/static/icons/duotone/container-storage.svg b/src/static/icons/duotone/container-storage.svg similarity index 100% rename from client/src/static/icons/duotone/container-storage.svg rename to src/static/icons/duotone/container-storage.svg diff --git a/client/src/static/icons/duotone/conveyor-belt-alt.svg b/src/static/icons/duotone/conveyor-belt-alt.svg similarity index 100% rename from client/src/static/icons/duotone/conveyor-belt-alt.svg rename to src/static/icons/duotone/conveyor-belt-alt.svg diff --git a/client/src/static/icons/duotone/conveyor-belt.svg b/src/static/icons/duotone/conveyor-belt.svg similarity index 100% rename from client/src/static/icons/duotone/conveyor-belt.svg rename to src/static/icons/duotone/conveyor-belt.svg diff --git a/client/src/static/icons/duotone/cookie-bite.svg b/src/static/icons/duotone/cookie-bite.svg similarity index 100% rename from client/src/static/icons/duotone/cookie-bite.svg rename to src/static/icons/duotone/cookie-bite.svg diff --git a/client/src/static/icons/duotone/cookie.svg b/src/static/icons/duotone/cookie.svg similarity index 100% rename from client/src/static/icons/duotone/cookie.svg rename to src/static/icons/duotone/cookie.svg diff --git a/client/src/static/icons/duotone/copy.svg b/src/static/icons/duotone/copy.svg similarity index 100% rename from client/src/static/icons/duotone/copy.svg rename to src/static/icons/duotone/copy.svg diff --git a/client/src/static/icons/duotone/copyright.svg b/src/static/icons/duotone/copyright.svg similarity index 100% rename from client/src/static/icons/duotone/copyright.svg rename to src/static/icons/duotone/copyright.svg diff --git a/client/src/static/icons/duotone/corn.svg b/src/static/icons/duotone/corn.svg similarity index 100% rename from client/src/static/icons/duotone/corn.svg rename to src/static/icons/duotone/corn.svg diff --git a/client/src/static/icons/duotone/couch.svg b/src/static/icons/duotone/couch.svg similarity index 100% rename from client/src/static/icons/duotone/couch.svg rename to src/static/icons/duotone/couch.svg diff --git a/client/src/static/icons/duotone/cow.svg b/src/static/icons/duotone/cow.svg similarity index 100% rename from client/src/static/icons/duotone/cow.svg rename to src/static/icons/duotone/cow.svg diff --git a/client/src/static/icons/duotone/cowbell-more.svg b/src/static/icons/duotone/cowbell-more.svg similarity index 100% rename from client/src/static/icons/duotone/cowbell-more.svg rename to src/static/icons/duotone/cowbell-more.svg diff --git a/client/src/static/icons/duotone/cowbell.svg b/src/static/icons/duotone/cowbell.svg similarity index 100% rename from client/src/static/icons/duotone/cowbell.svg rename to src/static/icons/duotone/cowbell.svg diff --git a/client/src/static/icons/duotone/credit-card-blank.svg b/src/static/icons/duotone/credit-card-blank.svg similarity index 100% rename from client/src/static/icons/duotone/credit-card-blank.svg rename to src/static/icons/duotone/credit-card-blank.svg diff --git a/client/src/static/icons/duotone/credit-card-front.svg b/src/static/icons/duotone/credit-card-front.svg similarity index 100% rename from client/src/static/icons/duotone/credit-card-front.svg rename to src/static/icons/duotone/credit-card-front.svg diff --git a/client/src/static/icons/duotone/credit-card.svg b/src/static/icons/duotone/credit-card.svg similarity index 100% rename from client/src/static/icons/duotone/credit-card.svg rename to src/static/icons/duotone/credit-card.svg diff --git a/client/src/static/icons/duotone/cricket.svg b/src/static/icons/duotone/cricket.svg similarity index 100% rename from client/src/static/icons/duotone/cricket.svg rename to src/static/icons/duotone/cricket.svg diff --git a/client/src/static/icons/duotone/croissant.svg b/src/static/icons/duotone/croissant.svg similarity index 100% rename from client/src/static/icons/duotone/croissant.svg rename to src/static/icons/duotone/croissant.svg diff --git a/client/src/static/icons/duotone/crop-alt.svg b/src/static/icons/duotone/crop-alt.svg similarity index 100% rename from client/src/static/icons/duotone/crop-alt.svg rename to src/static/icons/duotone/crop-alt.svg diff --git a/client/src/static/icons/duotone/crop.svg b/src/static/icons/duotone/crop.svg similarity index 100% rename from client/src/static/icons/duotone/crop.svg rename to src/static/icons/duotone/crop.svg diff --git a/client/src/static/icons/duotone/cross.svg b/src/static/icons/duotone/cross.svg similarity index 100% rename from client/src/static/icons/duotone/cross.svg rename to src/static/icons/duotone/cross.svg diff --git a/client/src/static/icons/duotone/crosshairs.svg b/src/static/icons/duotone/crosshairs.svg similarity index 100% rename from client/src/static/icons/duotone/crosshairs.svg rename to src/static/icons/duotone/crosshairs.svg diff --git a/client/src/static/icons/duotone/crow.svg b/src/static/icons/duotone/crow.svg similarity index 100% rename from client/src/static/icons/duotone/crow.svg rename to src/static/icons/duotone/crow.svg diff --git a/client/src/static/icons/duotone/crown.svg b/src/static/icons/duotone/crown.svg similarity index 100% rename from client/src/static/icons/duotone/crown.svg rename to src/static/icons/duotone/crown.svg diff --git a/client/src/static/icons/duotone/crutch.svg b/src/static/icons/duotone/crutch.svg similarity index 100% rename from client/src/static/icons/duotone/crutch.svg rename to src/static/icons/duotone/crutch.svg diff --git a/client/src/static/icons/duotone/crutches.svg b/src/static/icons/duotone/crutches.svg similarity index 100% rename from client/src/static/icons/duotone/crutches.svg rename to src/static/icons/duotone/crutches.svg diff --git a/client/src/static/icons/duotone/cube.svg b/src/static/icons/duotone/cube.svg similarity index 100% rename from client/src/static/icons/duotone/cube.svg rename to src/static/icons/duotone/cube.svg diff --git a/client/src/static/icons/duotone/cubes.svg b/src/static/icons/duotone/cubes.svg similarity index 100% rename from client/src/static/icons/duotone/cubes.svg rename to src/static/icons/duotone/cubes.svg diff --git a/client/src/static/icons/duotone/curling.svg b/src/static/icons/duotone/curling.svg similarity index 100% rename from client/src/static/icons/duotone/curling.svg rename to src/static/icons/duotone/curling.svg diff --git a/client/src/static/icons/duotone/cut.svg b/src/static/icons/duotone/cut.svg similarity index 100% rename from client/src/static/icons/duotone/cut.svg rename to src/static/icons/duotone/cut.svg diff --git a/client/src/static/icons/duotone/dagger.svg b/src/static/icons/duotone/dagger.svg similarity index 100% rename from client/src/static/icons/duotone/dagger.svg rename to src/static/icons/duotone/dagger.svg diff --git a/client/src/static/icons/duotone/database.svg b/src/static/icons/duotone/database.svg similarity index 100% rename from client/src/static/icons/duotone/database.svg rename to src/static/icons/duotone/database.svg diff --git a/client/src/static/icons/duotone/deaf.svg b/src/static/icons/duotone/deaf.svg similarity index 100% rename from client/src/static/icons/duotone/deaf.svg rename to src/static/icons/duotone/deaf.svg diff --git a/client/src/static/icons/duotone/debug.svg b/src/static/icons/duotone/debug.svg similarity index 100% rename from client/src/static/icons/duotone/debug.svg rename to src/static/icons/duotone/debug.svg diff --git a/client/src/static/icons/duotone/deer-rudolph.svg b/src/static/icons/duotone/deer-rudolph.svg similarity index 100% rename from client/src/static/icons/duotone/deer-rudolph.svg rename to src/static/icons/duotone/deer-rudolph.svg diff --git a/client/src/static/icons/duotone/deer.svg b/src/static/icons/duotone/deer.svg similarity index 100% rename from client/src/static/icons/duotone/deer.svg rename to src/static/icons/duotone/deer.svg diff --git a/client/src/static/icons/duotone/democrat.svg b/src/static/icons/duotone/democrat.svg similarity index 100% rename from client/src/static/icons/duotone/democrat.svg rename to src/static/icons/duotone/democrat.svg diff --git a/client/src/static/icons/duotone/desktop-alt.svg b/src/static/icons/duotone/desktop-alt.svg similarity index 100% rename from client/src/static/icons/duotone/desktop-alt.svg rename to src/static/icons/duotone/desktop-alt.svg diff --git a/client/src/static/icons/duotone/desktop.svg b/src/static/icons/duotone/desktop.svg similarity index 100% rename from client/src/static/icons/duotone/desktop.svg rename to src/static/icons/duotone/desktop.svg diff --git a/client/src/static/icons/duotone/dewpoint.svg b/src/static/icons/duotone/dewpoint.svg similarity index 100% rename from client/src/static/icons/duotone/dewpoint.svg rename to src/static/icons/duotone/dewpoint.svg diff --git a/client/src/static/icons/duotone/dharmachakra.svg b/src/static/icons/duotone/dharmachakra.svg similarity index 100% rename from client/src/static/icons/duotone/dharmachakra.svg rename to src/static/icons/duotone/dharmachakra.svg diff --git a/client/src/static/icons/duotone/diagnoses.svg b/src/static/icons/duotone/diagnoses.svg similarity index 100% rename from client/src/static/icons/duotone/diagnoses.svg rename to src/static/icons/duotone/diagnoses.svg diff --git a/client/src/static/icons/duotone/diamond.svg b/src/static/icons/duotone/diamond.svg similarity index 100% rename from client/src/static/icons/duotone/diamond.svg rename to src/static/icons/duotone/diamond.svg diff --git a/client/src/static/icons/duotone/dice-d10.svg b/src/static/icons/duotone/dice-d10.svg similarity index 100% rename from client/src/static/icons/duotone/dice-d10.svg rename to src/static/icons/duotone/dice-d10.svg diff --git a/client/src/static/icons/duotone/dice-d12.svg b/src/static/icons/duotone/dice-d12.svg similarity index 100% rename from client/src/static/icons/duotone/dice-d12.svg rename to src/static/icons/duotone/dice-d12.svg diff --git a/client/src/static/icons/duotone/dice-d20.svg b/src/static/icons/duotone/dice-d20.svg similarity index 100% rename from client/src/static/icons/duotone/dice-d20.svg rename to src/static/icons/duotone/dice-d20.svg diff --git a/client/src/static/icons/duotone/dice-d4.svg b/src/static/icons/duotone/dice-d4.svg similarity index 100% rename from client/src/static/icons/duotone/dice-d4.svg rename to src/static/icons/duotone/dice-d4.svg diff --git a/client/src/static/icons/duotone/dice-d6.svg b/src/static/icons/duotone/dice-d6.svg similarity index 100% rename from client/src/static/icons/duotone/dice-d6.svg rename to src/static/icons/duotone/dice-d6.svg diff --git a/client/src/static/icons/duotone/dice-d8.svg b/src/static/icons/duotone/dice-d8.svg similarity index 100% rename from client/src/static/icons/duotone/dice-d8.svg rename to src/static/icons/duotone/dice-d8.svg diff --git a/client/src/static/icons/duotone/dice-five.svg b/src/static/icons/duotone/dice-five.svg similarity index 100% rename from client/src/static/icons/duotone/dice-five.svg rename to src/static/icons/duotone/dice-five.svg diff --git a/client/src/static/icons/duotone/dice-four.svg b/src/static/icons/duotone/dice-four.svg similarity index 100% rename from client/src/static/icons/duotone/dice-four.svg rename to src/static/icons/duotone/dice-four.svg diff --git a/client/src/static/icons/duotone/dice-one.svg b/src/static/icons/duotone/dice-one.svg similarity index 100% rename from client/src/static/icons/duotone/dice-one.svg rename to src/static/icons/duotone/dice-one.svg diff --git a/client/src/static/icons/duotone/dice-six.svg b/src/static/icons/duotone/dice-six.svg similarity index 100% rename from client/src/static/icons/duotone/dice-six.svg rename to src/static/icons/duotone/dice-six.svg diff --git a/client/src/static/icons/duotone/dice-three.svg b/src/static/icons/duotone/dice-three.svg similarity index 100% rename from client/src/static/icons/duotone/dice-three.svg rename to src/static/icons/duotone/dice-three.svg diff --git a/client/src/static/icons/duotone/dice-two.svg b/src/static/icons/duotone/dice-two.svg similarity index 100% rename from client/src/static/icons/duotone/dice-two.svg rename to src/static/icons/duotone/dice-two.svg diff --git a/client/src/static/icons/duotone/dice.svg b/src/static/icons/duotone/dice.svg similarity index 100% rename from client/src/static/icons/duotone/dice.svg rename to src/static/icons/duotone/dice.svg diff --git a/client/src/static/icons/duotone/digging.svg b/src/static/icons/duotone/digging.svg similarity index 100% rename from client/src/static/icons/duotone/digging.svg rename to src/static/icons/duotone/digging.svg diff --git a/client/src/static/icons/duotone/digital-tachograph.svg b/src/static/icons/duotone/digital-tachograph.svg similarity index 100% rename from client/src/static/icons/duotone/digital-tachograph.svg rename to src/static/icons/duotone/digital-tachograph.svg diff --git a/client/src/static/icons/duotone/diploma.svg b/src/static/icons/duotone/diploma.svg similarity index 100% rename from client/src/static/icons/duotone/diploma.svg rename to src/static/icons/duotone/diploma.svg diff --git a/client/src/static/icons/duotone/directions.svg b/src/static/icons/duotone/directions.svg similarity index 100% rename from client/src/static/icons/duotone/directions.svg rename to src/static/icons/duotone/directions.svg diff --git a/client/src/static/icons/duotone/disc-drive.svg b/src/static/icons/duotone/disc-drive.svg similarity index 100% rename from client/src/static/icons/duotone/disc-drive.svg rename to src/static/icons/duotone/disc-drive.svg diff --git a/client/src/static/icons/duotone/disease.svg b/src/static/icons/duotone/disease.svg similarity index 100% rename from client/src/static/icons/duotone/disease.svg rename to src/static/icons/duotone/disease.svg diff --git a/client/src/static/icons/duotone/divide.svg b/src/static/icons/duotone/divide.svg similarity index 100% rename from client/src/static/icons/duotone/divide.svg rename to src/static/icons/duotone/divide.svg diff --git a/client/src/static/icons/duotone/dizzy.svg b/src/static/icons/duotone/dizzy.svg similarity index 100% rename from client/src/static/icons/duotone/dizzy.svg rename to src/static/icons/duotone/dizzy.svg diff --git a/client/src/static/icons/duotone/dna.svg b/src/static/icons/duotone/dna.svg similarity index 100% rename from client/src/static/icons/duotone/dna.svg rename to src/static/icons/duotone/dna.svg diff --git a/client/src/static/icons/duotone/do-not-enter.svg b/src/static/icons/duotone/do-not-enter.svg similarity index 100% rename from client/src/static/icons/duotone/do-not-enter.svg rename to src/static/icons/duotone/do-not-enter.svg diff --git a/client/src/static/icons/duotone/dog-leashed.svg b/src/static/icons/duotone/dog-leashed.svg similarity index 100% rename from client/src/static/icons/duotone/dog-leashed.svg rename to src/static/icons/duotone/dog-leashed.svg diff --git a/client/src/static/icons/duotone/dog.svg b/src/static/icons/duotone/dog.svg similarity index 100% rename from client/src/static/icons/duotone/dog.svg rename to src/static/icons/duotone/dog.svg diff --git a/client/src/static/icons/duotone/dollar-sign.svg b/src/static/icons/duotone/dollar-sign.svg similarity index 100% rename from client/src/static/icons/duotone/dollar-sign.svg rename to src/static/icons/duotone/dollar-sign.svg diff --git a/client/src/static/icons/duotone/dolly-empty.svg b/src/static/icons/duotone/dolly-empty.svg similarity index 100% rename from client/src/static/icons/duotone/dolly-empty.svg rename to src/static/icons/duotone/dolly-empty.svg diff --git a/client/src/static/icons/duotone/dolly-flatbed-alt.svg b/src/static/icons/duotone/dolly-flatbed-alt.svg similarity index 100% rename from client/src/static/icons/duotone/dolly-flatbed-alt.svg rename to src/static/icons/duotone/dolly-flatbed-alt.svg diff --git a/client/src/static/icons/duotone/dolly-flatbed-empty.svg b/src/static/icons/duotone/dolly-flatbed-empty.svg similarity index 100% rename from client/src/static/icons/duotone/dolly-flatbed-empty.svg rename to src/static/icons/duotone/dolly-flatbed-empty.svg diff --git a/client/src/static/icons/duotone/dolly-flatbed.svg b/src/static/icons/duotone/dolly-flatbed.svg similarity index 100% rename from client/src/static/icons/duotone/dolly-flatbed.svg rename to src/static/icons/duotone/dolly-flatbed.svg diff --git a/client/src/static/icons/duotone/dolly.svg b/src/static/icons/duotone/dolly.svg similarity index 100% rename from client/src/static/icons/duotone/dolly.svg rename to src/static/icons/duotone/dolly.svg diff --git a/client/src/static/icons/duotone/donate.svg b/src/static/icons/duotone/donate.svg similarity index 100% rename from client/src/static/icons/duotone/donate.svg rename to src/static/icons/duotone/donate.svg diff --git a/client/src/static/icons/duotone/door-closed.svg b/src/static/icons/duotone/door-closed.svg similarity index 100% rename from client/src/static/icons/duotone/door-closed.svg rename to src/static/icons/duotone/door-closed.svg diff --git a/client/src/static/icons/duotone/door-open.svg b/src/static/icons/duotone/door-open.svg similarity index 100% rename from client/src/static/icons/duotone/door-open.svg rename to src/static/icons/duotone/door-open.svg diff --git a/client/src/static/icons/duotone/dot-circle.svg b/src/static/icons/duotone/dot-circle.svg similarity index 100% rename from client/src/static/icons/duotone/dot-circle.svg rename to src/static/icons/duotone/dot-circle.svg diff --git a/client/src/static/icons/duotone/dove.svg b/src/static/icons/duotone/dove.svg similarity index 100% rename from client/src/static/icons/duotone/dove.svg rename to src/static/icons/duotone/dove.svg diff --git a/client/src/static/icons/duotone/download.svg b/src/static/icons/duotone/download.svg similarity index 100% rename from client/src/static/icons/duotone/download.svg rename to src/static/icons/duotone/download.svg diff --git a/client/src/static/icons/duotone/drafting-compass.svg b/src/static/icons/duotone/drafting-compass.svg similarity index 100% rename from client/src/static/icons/duotone/drafting-compass.svg rename to src/static/icons/duotone/drafting-compass.svg diff --git a/client/src/static/icons/duotone/dragon.svg b/src/static/icons/duotone/dragon.svg similarity index 100% rename from client/src/static/icons/duotone/dragon.svg rename to src/static/icons/duotone/dragon.svg diff --git a/client/src/static/icons/duotone/draw-circle.svg b/src/static/icons/duotone/draw-circle.svg similarity index 100% rename from client/src/static/icons/duotone/draw-circle.svg rename to src/static/icons/duotone/draw-circle.svg diff --git a/client/src/static/icons/duotone/draw-polygon.svg b/src/static/icons/duotone/draw-polygon.svg similarity index 100% rename from client/src/static/icons/duotone/draw-polygon.svg rename to src/static/icons/duotone/draw-polygon.svg diff --git a/client/src/static/icons/duotone/draw-square.svg b/src/static/icons/duotone/draw-square.svg similarity index 100% rename from client/src/static/icons/duotone/draw-square.svg rename to src/static/icons/duotone/draw-square.svg diff --git a/client/src/static/icons/duotone/dreidel.svg b/src/static/icons/duotone/dreidel.svg similarity index 100% rename from client/src/static/icons/duotone/dreidel.svg rename to src/static/icons/duotone/dreidel.svg diff --git a/client/src/static/icons/duotone/drone-alt.svg b/src/static/icons/duotone/drone-alt.svg similarity index 100% rename from client/src/static/icons/duotone/drone-alt.svg rename to src/static/icons/duotone/drone-alt.svg diff --git a/client/src/static/icons/duotone/drone.svg b/src/static/icons/duotone/drone.svg similarity index 100% rename from client/src/static/icons/duotone/drone.svg rename to src/static/icons/duotone/drone.svg diff --git a/client/src/static/icons/duotone/drum-steelpan.svg b/src/static/icons/duotone/drum-steelpan.svg similarity index 100% rename from client/src/static/icons/duotone/drum-steelpan.svg rename to src/static/icons/duotone/drum-steelpan.svg diff --git a/client/src/static/icons/duotone/drum.svg b/src/static/icons/duotone/drum.svg similarity index 100% rename from client/src/static/icons/duotone/drum.svg rename to src/static/icons/duotone/drum.svg diff --git a/client/src/static/icons/duotone/drumstick-bite.svg b/src/static/icons/duotone/drumstick-bite.svg similarity index 100% rename from client/src/static/icons/duotone/drumstick-bite.svg rename to src/static/icons/duotone/drumstick-bite.svg diff --git a/client/src/static/icons/duotone/drumstick.svg b/src/static/icons/duotone/drumstick.svg similarity index 100% rename from client/src/static/icons/duotone/drumstick.svg rename to src/static/icons/duotone/drumstick.svg diff --git a/client/src/static/icons/duotone/dryer-alt.svg b/src/static/icons/duotone/dryer-alt.svg similarity index 100% rename from client/src/static/icons/duotone/dryer-alt.svg rename to src/static/icons/duotone/dryer-alt.svg diff --git a/client/src/static/icons/duotone/dryer.svg b/src/static/icons/duotone/dryer.svg similarity index 100% rename from client/src/static/icons/duotone/dryer.svg rename to src/static/icons/duotone/dryer.svg diff --git a/client/src/static/icons/duotone/duck.svg b/src/static/icons/duotone/duck.svg similarity index 100% rename from client/src/static/icons/duotone/duck.svg rename to src/static/icons/duotone/duck.svg diff --git a/client/src/static/icons/duotone/dumbbell.svg b/src/static/icons/duotone/dumbbell.svg similarity index 100% rename from client/src/static/icons/duotone/dumbbell.svg rename to src/static/icons/duotone/dumbbell.svg diff --git a/client/src/static/icons/duotone/dumpster-fire.svg b/src/static/icons/duotone/dumpster-fire.svg similarity index 100% rename from client/src/static/icons/duotone/dumpster-fire.svg rename to src/static/icons/duotone/dumpster-fire.svg diff --git a/client/src/static/icons/duotone/dumpster.svg b/src/static/icons/duotone/dumpster.svg similarity index 100% rename from client/src/static/icons/duotone/dumpster.svg rename to src/static/icons/duotone/dumpster.svg diff --git a/client/src/static/icons/duotone/dungeon.svg b/src/static/icons/duotone/dungeon.svg similarity index 100% rename from client/src/static/icons/duotone/dungeon.svg rename to src/static/icons/duotone/dungeon.svg diff --git a/client/src/static/icons/duotone/ear-muffs.svg b/src/static/icons/duotone/ear-muffs.svg similarity index 100% rename from client/src/static/icons/duotone/ear-muffs.svg rename to src/static/icons/duotone/ear-muffs.svg diff --git a/client/src/static/icons/duotone/ear.svg b/src/static/icons/duotone/ear.svg similarity index 100% rename from client/src/static/icons/duotone/ear.svg rename to src/static/icons/duotone/ear.svg diff --git a/client/src/static/icons/duotone/eclipse-alt.svg b/src/static/icons/duotone/eclipse-alt.svg similarity index 100% rename from client/src/static/icons/duotone/eclipse-alt.svg rename to src/static/icons/duotone/eclipse-alt.svg diff --git a/client/src/static/icons/duotone/eclipse.svg b/src/static/icons/duotone/eclipse.svg similarity index 100% rename from client/src/static/icons/duotone/eclipse.svg rename to src/static/icons/duotone/eclipse.svg diff --git a/client/src/static/icons/duotone/edit.svg b/src/static/icons/duotone/edit.svg similarity index 100% rename from client/src/static/icons/duotone/edit.svg rename to src/static/icons/duotone/edit.svg diff --git a/client/src/static/icons/duotone/egg-fried.svg b/src/static/icons/duotone/egg-fried.svg similarity index 100% rename from client/src/static/icons/duotone/egg-fried.svg rename to src/static/icons/duotone/egg-fried.svg diff --git a/client/src/static/icons/duotone/egg.svg b/src/static/icons/duotone/egg.svg similarity index 100% rename from client/src/static/icons/duotone/egg.svg rename to src/static/icons/duotone/egg.svg diff --git a/client/src/static/icons/duotone/eject.svg b/src/static/icons/duotone/eject.svg similarity index 100% rename from client/src/static/icons/duotone/eject.svg rename to src/static/icons/duotone/eject.svg diff --git a/client/src/static/icons/duotone/elephant.svg b/src/static/icons/duotone/elephant.svg similarity index 100% rename from client/src/static/icons/duotone/elephant.svg rename to src/static/icons/duotone/elephant.svg diff --git a/client/src/static/icons/duotone/ellipsis-h-alt.svg b/src/static/icons/duotone/ellipsis-h-alt.svg similarity index 100% rename from client/src/static/icons/duotone/ellipsis-h-alt.svg rename to src/static/icons/duotone/ellipsis-h-alt.svg diff --git a/client/src/static/icons/duotone/ellipsis-h.svg b/src/static/icons/duotone/ellipsis-h.svg similarity index 100% rename from client/src/static/icons/duotone/ellipsis-h.svg rename to src/static/icons/duotone/ellipsis-h.svg diff --git a/client/src/static/icons/duotone/ellipsis-v-alt.svg b/src/static/icons/duotone/ellipsis-v-alt.svg similarity index 100% rename from client/src/static/icons/duotone/ellipsis-v-alt.svg rename to src/static/icons/duotone/ellipsis-v-alt.svg diff --git a/client/src/static/icons/duotone/ellipsis-v.svg b/src/static/icons/duotone/ellipsis-v.svg similarity index 100% rename from client/src/static/icons/duotone/ellipsis-v.svg rename to src/static/icons/duotone/ellipsis-v.svg diff --git a/client/src/static/icons/duotone/empty-set.svg b/src/static/icons/duotone/empty-set.svg similarity index 100% rename from client/src/static/icons/duotone/empty-set.svg rename to src/static/icons/duotone/empty-set.svg diff --git a/client/src/static/icons/duotone/engine-warning.svg b/src/static/icons/duotone/engine-warning.svg similarity index 100% rename from client/src/static/icons/duotone/engine-warning.svg rename to src/static/icons/duotone/engine-warning.svg diff --git a/client/src/static/icons/duotone/envelope-open-dollar.svg b/src/static/icons/duotone/envelope-open-dollar.svg similarity index 100% rename from client/src/static/icons/duotone/envelope-open-dollar.svg rename to src/static/icons/duotone/envelope-open-dollar.svg diff --git a/client/src/static/icons/duotone/envelope-open-text.svg b/src/static/icons/duotone/envelope-open-text.svg similarity index 100% rename from client/src/static/icons/duotone/envelope-open-text.svg rename to src/static/icons/duotone/envelope-open-text.svg diff --git a/client/src/static/icons/duotone/envelope-open.svg b/src/static/icons/duotone/envelope-open.svg similarity index 100% rename from client/src/static/icons/duotone/envelope-open.svg rename to src/static/icons/duotone/envelope-open.svg diff --git a/client/src/static/icons/duotone/envelope-square.svg b/src/static/icons/duotone/envelope-square.svg similarity index 100% rename from client/src/static/icons/duotone/envelope-square.svg rename to src/static/icons/duotone/envelope-square.svg diff --git a/client/src/static/icons/duotone/envelope.svg b/src/static/icons/duotone/envelope.svg similarity index 100% rename from client/src/static/icons/duotone/envelope.svg rename to src/static/icons/duotone/envelope.svg diff --git a/client/src/static/icons/duotone/equals.svg b/src/static/icons/duotone/equals.svg similarity index 100% rename from client/src/static/icons/duotone/equals.svg rename to src/static/icons/duotone/equals.svg diff --git a/client/src/static/icons/duotone/eraser.svg b/src/static/icons/duotone/eraser.svg similarity index 100% rename from client/src/static/icons/duotone/eraser.svg rename to src/static/icons/duotone/eraser.svg diff --git a/client/src/static/icons/duotone/ethernet.svg b/src/static/icons/duotone/ethernet.svg similarity index 100% rename from client/src/static/icons/duotone/ethernet.svg rename to src/static/icons/duotone/ethernet.svg diff --git a/client/src/static/icons/duotone/euro-sign.svg b/src/static/icons/duotone/euro-sign.svg similarity index 100% rename from client/src/static/icons/duotone/euro-sign.svg rename to src/static/icons/duotone/euro-sign.svg diff --git a/client/src/static/icons/duotone/exchange-alt.svg b/src/static/icons/duotone/exchange-alt.svg similarity index 100% rename from client/src/static/icons/duotone/exchange-alt.svg rename to src/static/icons/duotone/exchange-alt.svg diff --git a/client/src/static/icons/duotone/exchange.svg b/src/static/icons/duotone/exchange.svg similarity index 100% rename from client/src/static/icons/duotone/exchange.svg rename to src/static/icons/duotone/exchange.svg diff --git a/client/src/static/icons/duotone/exclamation-circle.svg b/src/static/icons/duotone/exclamation-circle.svg similarity index 100% rename from client/src/static/icons/duotone/exclamation-circle.svg rename to src/static/icons/duotone/exclamation-circle.svg diff --git a/client/src/static/icons/duotone/exclamation-square.svg b/src/static/icons/duotone/exclamation-square.svg similarity index 100% rename from client/src/static/icons/duotone/exclamation-square.svg rename to src/static/icons/duotone/exclamation-square.svg diff --git a/client/src/static/icons/duotone/exclamation-triangle.svg b/src/static/icons/duotone/exclamation-triangle.svg similarity index 100% rename from client/src/static/icons/duotone/exclamation-triangle.svg rename to src/static/icons/duotone/exclamation-triangle.svg diff --git a/client/src/static/icons/duotone/exclamation.svg b/src/static/icons/duotone/exclamation.svg similarity index 100% rename from client/src/static/icons/duotone/exclamation.svg rename to src/static/icons/duotone/exclamation.svg diff --git a/client/src/static/icons/duotone/expand-alt.svg b/src/static/icons/duotone/expand-alt.svg similarity index 100% rename from client/src/static/icons/duotone/expand-alt.svg rename to src/static/icons/duotone/expand-alt.svg diff --git a/client/src/static/icons/duotone/expand-arrows-alt.svg b/src/static/icons/duotone/expand-arrows-alt.svg similarity index 100% rename from client/src/static/icons/duotone/expand-arrows-alt.svg rename to src/static/icons/duotone/expand-arrows-alt.svg diff --git a/client/src/static/icons/duotone/expand-arrows.svg b/src/static/icons/duotone/expand-arrows.svg similarity index 100% rename from client/src/static/icons/duotone/expand-arrows.svg rename to src/static/icons/duotone/expand-arrows.svg diff --git a/client/src/static/icons/duotone/expand-wide.svg b/src/static/icons/duotone/expand-wide.svg similarity index 100% rename from client/src/static/icons/duotone/expand-wide.svg rename to src/static/icons/duotone/expand-wide.svg diff --git a/client/src/static/icons/duotone/expand.svg b/src/static/icons/duotone/expand.svg similarity index 100% rename from client/src/static/icons/duotone/expand.svg rename to src/static/icons/duotone/expand.svg diff --git a/client/src/static/icons/duotone/external-link-alt.svg b/src/static/icons/duotone/external-link-alt.svg similarity index 100% rename from client/src/static/icons/duotone/external-link-alt.svg rename to src/static/icons/duotone/external-link-alt.svg diff --git a/client/src/static/icons/duotone/external-link-square-alt.svg b/src/static/icons/duotone/external-link-square-alt.svg similarity index 100% rename from client/src/static/icons/duotone/external-link-square-alt.svg rename to src/static/icons/duotone/external-link-square-alt.svg diff --git a/client/src/static/icons/duotone/external-link-square.svg b/src/static/icons/duotone/external-link-square.svg similarity index 100% rename from client/src/static/icons/duotone/external-link-square.svg rename to src/static/icons/duotone/external-link-square.svg diff --git a/client/src/static/icons/duotone/external-link.svg b/src/static/icons/duotone/external-link.svg similarity index 100% rename from client/src/static/icons/duotone/external-link.svg rename to src/static/icons/duotone/external-link.svg diff --git a/client/src/static/icons/duotone/eye-dropper.svg b/src/static/icons/duotone/eye-dropper.svg similarity index 100% rename from client/src/static/icons/duotone/eye-dropper.svg rename to src/static/icons/duotone/eye-dropper.svg diff --git a/client/src/static/icons/duotone/eye-evil.svg b/src/static/icons/duotone/eye-evil.svg similarity index 100% rename from client/src/static/icons/duotone/eye-evil.svg rename to src/static/icons/duotone/eye-evil.svg diff --git a/client/src/static/icons/duotone/eye-slash.svg b/src/static/icons/duotone/eye-slash.svg similarity index 100% rename from client/src/static/icons/duotone/eye-slash.svg rename to src/static/icons/duotone/eye-slash.svg diff --git a/client/src/static/icons/duotone/eye.svg b/src/static/icons/duotone/eye.svg similarity index 100% rename from client/src/static/icons/duotone/eye.svg rename to src/static/icons/duotone/eye.svg diff --git a/client/src/static/icons/duotone/fan-table.svg b/src/static/icons/duotone/fan-table.svg similarity index 100% rename from client/src/static/icons/duotone/fan-table.svg rename to src/static/icons/duotone/fan-table.svg diff --git a/client/src/static/icons/duotone/fan.svg b/src/static/icons/duotone/fan.svg similarity index 100% rename from client/src/static/icons/duotone/fan.svg rename to src/static/icons/duotone/fan.svg diff --git a/client/src/static/icons/duotone/farm.svg b/src/static/icons/duotone/farm.svg similarity index 100% rename from client/src/static/icons/duotone/farm.svg rename to src/static/icons/duotone/farm.svg diff --git a/client/src/static/icons/duotone/fast-backward.svg b/src/static/icons/duotone/fast-backward.svg similarity index 100% rename from client/src/static/icons/duotone/fast-backward.svg rename to src/static/icons/duotone/fast-backward.svg diff --git a/client/src/static/icons/duotone/fast-forward.svg b/src/static/icons/duotone/fast-forward.svg similarity index 100% rename from client/src/static/icons/duotone/fast-forward.svg rename to src/static/icons/duotone/fast-forward.svg diff --git a/client/src/static/icons/duotone/faucet-drip.svg b/src/static/icons/duotone/faucet-drip.svg similarity index 100% rename from client/src/static/icons/duotone/faucet-drip.svg rename to src/static/icons/duotone/faucet-drip.svg diff --git a/client/src/static/icons/duotone/faucet.svg b/src/static/icons/duotone/faucet.svg similarity index 100% rename from client/src/static/icons/duotone/faucet.svg rename to src/static/icons/duotone/faucet.svg diff --git a/client/src/static/icons/duotone/fax.svg b/src/static/icons/duotone/fax.svg similarity index 100% rename from client/src/static/icons/duotone/fax.svg rename to src/static/icons/duotone/fax.svg diff --git a/client/src/static/icons/duotone/feather-alt.svg b/src/static/icons/duotone/feather-alt.svg similarity index 100% rename from client/src/static/icons/duotone/feather-alt.svg rename to src/static/icons/duotone/feather-alt.svg diff --git a/client/src/static/icons/duotone/feather.svg b/src/static/icons/duotone/feather.svg similarity index 100% rename from client/src/static/icons/duotone/feather.svg rename to src/static/icons/duotone/feather.svg diff --git a/client/src/static/icons/duotone/female.svg b/src/static/icons/duotone/female.svg similarity index 100% rename from client/src/static/icons/duotone/female.svg rename to src/static/icons/duotone/female.svg diff --git a/client/src/static/icons/duotone/field-hockey.svg b/src/static/icons/duotone/field-hockey.svg similarity index 100% rename from client/src/static/icons/duotone/field-hockey.svg rename to src/static/icons/duotone/field-hockey.svg diff --git a/client/src/static/icons/duotone/fighter-jet.svg b/src/static/icons/duotone/fighter-jet.svg similarity index 100% rename from client/src/static/icons/duotone/fighter-jet.svg rename to src/static/icons/duotone/fighter-jet.svg diff --git a/client/src/static/icons/duotone/file-alt.svg b/src/static/icons/duotone/file-alt.svg similarity index 100% rename from client/src/static/icons/duotone/file-alt.svg rename to src/static/icons/duotone/file-alt.svg diff --git a/client/src/static/icons/duotone/file-archive.svg b/src/static/icons/duotone/file-archive.svg similarity index 100% rename from client/src/static/icons/duotone/file-archive.svg rename to src/static/icons/duotone/file-archive.svg diff --git a/client/src/static/icons/duotone/file-audio.svg b/src/static/icons/duotone/file-audio.svg similarity index 100% rename from client/src/static/icons/duotone/file-audio.svg rename to src/static/icons/duotone/file-audio.svg diff --git a/client/src/static/icons/duotone/file-certificate.svg b/src/static/icons/duotone/file-certificate.svg similarity index 100% rename from client/src/static/icons/duotone/file-certificate.svg rename to src/static/icons/duotone/file-certificate.svg diff --git a/client/src/static/icons/duotone/file-chart-line.svg b/src/static/icons/duotone/file-chart-line.svg similarity index 100% rename from client/src/static/icons/duotone/file-chart-line.svg rename to src/static/icons/duotone/file-chart-line.svg diff --git a/client/src/static/icons/duotone/file-chart-pie.svg b/src/static/icons/duotone/file-chart-pie.svg similarity index 100% rename from client/src/static/icons/duotone/file-chart-pie.svg rename to src/static/icons/duotone/file-chart-pie.svg diff --git a/client/src/static/icons/duotone/file-check.svg b/src/static/icons/duotone/file-check.svg similarity index 100% rename from client/src/static/icons/duotone/file-check.svg rename to src/static/icons/duotone/file-check.svg diff --git a/client/src/static/icons/duotone/file-code.svg b/src/static/icons/duotone/file-code.svg similarity index 100% rename from client/src/static/icons/duotone/file-code.svg rename to src/static/icons/duotone/file-code.svg diff --git a/client/src/static/icons/duotone/file-contract.svg b/src/static/icons/duotone/file-contract.svg similarity index 100% rename from client/src/static/icons/duotone/file-contract.svg rename to src/static/icons/duotone/file-contract.svg diff --git a/client/src/static/icons/duotone/file-csv.svg b/src/static/icons/duotone/file-csv.svg similarity index 100% rename from client/src/static/icons/duotone/file-csv.svg rename to src/static/icons/duotone/file-csv.svg diff --git a/client/src/static/icons/duotone/file-download.svg b/src/static/icons/duotone/file-download.svg similarity index 100% rename from client/src/static/icons/duotone/file-download.svg rename to src/static/icons/duotone/file-download.svg diff --git a/client/src/static/icons/duotone/file-edit.svg b/src/static/icons/duotone/file-edit.svg similarity index 100% rename from client/src/static/icons/duotone/file-edit.svg rename to src/static/icons/duotone/file-edit.svg diff --git a/client/src/static/icons/duotone/file-excel.svg b/src/static/icons/duotone/file-excel.svg similarity index 100% rename from client/src/static/icons/duotone/file-excel.svg rename to src/static/icons/duotone/file-excel.svg diff --git a/client/src/static/icons/duotone/file-exclamation.svg b/src/static/icons/duotone/file-exclamation.svg similarity index 100% rename from client/src/static/icons/duotone/file-exclamation.svg rename to src/static/icons/duotone/file-exclamation.svg diff --git a/client/src/static/icons/duotone/file-export.svg b/src/static/icons/duotone/file-export.svg similarity index 100% rename from client/src/static/icons/duotone/file-export.svg rename to src/static/icons/duotone/file-export.svg diff --git a/client/src/static/icons/duotone/file-image.svg b/src/static/icons/duotone/file-image.svg similarity index 100% rename from client/src/static/icons/duotone/file-image.svg rename to src/static/icons/duotone/file-image.svg diff --git a/client/src/static/icons/duotone/file-import.svg b/src/static/icons/duotone/file-import.svg similarity index 100% rename from client/src/static/icons/duotone/file-import.svg rename to src/static/icons/duotone/file-import.svg diff --git a/client/src/static/icons/duotone/file-invoice-dollar.svg b/src/static/icons/duotone/file-invoice-dollar.svg similarity index 100% rename from client/src/static/icons/duotone/file-invoice-dollar.svg rename to src/static/icons/duotone/file-invoice-dollar.svg diff --git a/client/src/static/icons/duotone/file-invoice.svg b/src/static/icons/duotone/file-invoice.svg similarity index 100% rename from client/src/static/icons/duotone/file-invoice.svg rename to src/static/icons/duotone/file-invoice.svg diff --git a/client/src/static/icons/duotone/file-medical-alt.svg b/src/static/icons/duotone/file-medical-alt.svg similarity index 100% rename from client/src/static/icons/duotone/file-medical-alt.svg rename to src/static/icons/duotone/file-medical-alt.svg diff --git a/client/src/static/icons/duotone/file-medical.svg b/src/static/icons/duotone/file-medical.svg similarity index 100% rename from client/src/static/icons/duotone/file-medical.svg rename to src/static/icons/duotone/file-medical.svg diff --git a/client/src/static/icons/duotone/file-minus.svg b/src/static/icons/duotone/file-minus.svg similarity index 100% rename from client/src/static/icons/duotone/file-minus.svg rename to src/static/icons/duotone/file-minus.svg diff --git a/client/src/static/icons/duotone/file-music.svg b/src/static/icons/duotone/file-music.svg similarity index 100% rename from client/src/static/icons/duotone/file-music.svg rename to src/static/icons/duotone/file-music.svg diff --git a/client/src/static/icons/duotone/file-pdf.svg b/src/static/icons/duotone/file-pdf.svg similarity index 100% rename from client/src/static/icons/duotone/file-pdf.svg rename to src/static/icons/duotone/file-pdf.svg diff --git a/client/src/static/icons/duotone/file-plus.svg b/src/static/icons/duotone/file-plus.svg similarity index 100% rename from client/src/static/icons/duotone/file-plus.svg rename to src/static/icons/duotone/file-plus.svg diff --git a/client/src/static/icons/duotone/file-powerpoint.svg b/src/static/icons/duotone/file-powerpoint.svg similarity index 100% rename from client/src/static/icons/duotone/file-powerpoint.svg rename to src/static/icons/duotone/file-powerpoint.svg diff --git a/client/src/static/icons/duotone/file-prescription.svg b/src/static/icons/duotone/file-prescription.svg similarity index 100% rename from client/src/static/icons/duotone/file-prescription.svg rename to src/static/icons/duotone/file-prescription.svg diff --git a/client/src/static/icons/duotone/file-search.svg b/src/static/icons/duotone/file-search.svg similarity index 100% rename from client/src/static/icons/duotone/file-search.svg rename to src/static/icons/duotone/file-search.svg diff --git a/client/src/static/icons/duotone/file-signature.svg b/src/static/icons/duotone/file-signature.svg similarity index 100% rename from client/src/static/icons/duotone/file-signature.svg rename to src/static/icons/duotone/file-signature.svg diff --git a/client/src/static/icons/duotone/file-spreadsheet.svg b/src/static/icons/duotone/file-spreadsheet.svg similarity index 100% rename from client/src/static/icons/duotone/file-spreadsheet.svg rename to src/static/icons/duotone/file-spreadsheet.svg diff --git a/client/src/static/icons/duotone/file-times.svg b/src/static/icons/duotone/file-times.svg similarity index 100% rename from client/src/static/icons/duotone/file-times.svg rename to src/static/icons/duotone/file-times.svg diff --git a/client/src/static/icons/duotone/file-upload.svg b/src/static/icons/duotone/file-upload.svg similarity index 100% rename from client/src/static/icons/duotone/file-upload.svg rename to src/static/icons/duotone/file-upload.svg diff --git a/client/src/static/icons/duotone/file-user.svg b/src/static/icons/duotone/file-user.svg similarity index 100% rename from client/src/static/icons/duotone/file-user.svg rename to src/static/icons/duotone/file-user.svg diff --git a/client/src/static/icons/duotone/file-video.svg b/src/static/icons/duotone/file-video.svg similarity index 100% rename from client/src/static/icons/duotone/file-video.svg rename to src/static/icons/duotone/file-video.svg diff --git a/client/src/static/icons/duotone/file-word.svg b/src/static/icons/duotone/file-word.svg similarity index 100% rename from client/src/static/icons/duotone/file-word.svg rename to src/static/icons/duotone/file-word.svg diff --git a/client/src/static/icons/duotone/file.svg b/src/static/icons/duotone/file.svg similarity index 100% rename from client/src/static/icons/duotone/file.svg rename to src/static/icons/duotone/file.svg diff --git a/client/src/static/icons/duotone/files-medical.svg b/src/static/icons/duotone/files-medical.svg similarity index 100% rename from client/src/static/icons/duotone/files-medical.svg rename to src/static/icons/duotone/files-medical.svg diff --git a/client/src/static/icons/duotone/fill-drip.svg b/src/static/icons/duotone/fill-drip.svg similarity index 100% rename from client/src/static/icons/duotone/fill-drip.svg rename to src/static/icons/duotone/fill-drip.svg diff --git a/client/src/static/icons/duotone/fill.svg b/src/static/icons/duotone/fill.svg similarity index 100% rename from client/src/static/icons/duotone/fill.svg rename to src/static/icons/duotone/fill.svg diff --git a/client/src/static/icons/duotone/film-alt.svg b/src/static/icons/duotone/film-alt.svg similarity index 100% rename from client/src/static/icons/duotone/film-alt.svg rename to src/static/icons/duotone/film-alt.svg diff --git a/client/src/static/icons/duotone/film-canister.svg b/src/static/icons/duotone/film-canister.svg similarity index 100% rename from client/src/static/icons/duotone/film-canister.svg rename to src/static/icons/duotone/film-canister.svg diff --git a/client/src/static/icons/duotone/film.svg b/src/static/icons/duotone/film.svg similarity index 100% rename from client/src/static/icons/duotone/film.svg rename to src/static/icons/duotone/film.svg diff --git a/client/src/static/icons/duotone/filter.svg b/src/static/icons/duotone/filter.svg similarity index 100% rename from client/src/static/icons/duotone/filter.svg rename to src/static/icons/duotone/filter.svg diff --git a/client/src/static/icons/duotone/fingerprint.svg b/src/static/icons/duotone/fingerprint.svg similarity index 100% rename from client/src/static/icons/duotone/fingerprint.svg rename to src/static/icons/duotone/fingerprint.svg diff --git a/client/src/static/icons/duotone/fire-alt.svg b/src/static/icons/duotone/fire-alt.svg similarity index 100% rename from client/src/static/icons/duotone/fire-alt.svg rename to src/static/icons/duotone/fire-alt.svg diff --git a/client/src/static/icons/duotone/fire-extinguisher.svg b/src/static/icons/duotone/fire-extinguisher.svg similarity index 100% rename from client/src/static/icons/duotone/fire-extinguisher.svg rename to src/static/icons/duotone/fire-extinguisher.svg diff --git a/client/src/static/icons/duotone/fire-smoke.svg b/src/static/icons/duotone/fire-smoke.svg similarity index 100% rename from client/src/static/icons/duotone/fire-smoke.svg rename to src/static/icons/duotone/fire-smoke.svg diff --git a/client/src/static/icons/duotone/fire.svg b/src/static/icons/duotone/fire.svg similarity index 100% rename from client/src/static/icons/duotone/fire.svg rename to src/static/icons/duotone/fire.svg diff --git a/client/src/static/icons/duotone/fireplace.svg b/src/static/icons/duotone/fireplace.svg similarity index 100% rename from client/src/static/icons/duotone/fireplace.svg rename to src/static/icons/duotone/fireplace.svg diff --git a/client/src/static/icons/duotone/first-aid.svg b/src/static/icons/duotone/first-aid.svg similarity index 100% rename from client/src/static/icons/duotone/first-aid.svg rename to src/static/icons/duotone/first-aid.svg diff --git a/client/src/static/icons/duotone/fish-cooked.svg b/src/static/icons/duotone/fish-cooked.svg similarity index 100% rename from client/src/static/icons/duotone/fish-cooked.svg rename to src/static/icons/duotone/fish-cooked.svg diff --git a/client/src/static/icons/duotone/fish.svg b/src/static/icons/duotone/fish.svg similarity index 100% rename from client/src/static/icons/duotone/fish.svg rename to src/static/icons/duotone/fish.svg diff --git a/client/src/static/icons/duotone/fist-raised.svg b/src/static/icons/duotone/fist-raised.svg similarity index 100% rename from client/src/static/icons/duotone/fist-raised.svg rename to src/static/icons/duotone/fist-raised.svg diff --git a/client/src/static/icons/duotone/flag-alt.svg b/src/static/icons/duotone/flag-alt.svg similarity index 100% rename from client/src/static/icons/duotone/flag-alt.svg rename to src/static/icons/duotone/flag-alt.svg diff --git a/client/src/static/icons/duotone/flag-checkered.svg b/src/static/icons/duotone/flag-checkered.svg similarity index 100% rename from client/src/static/icons/duotone/flag-checkered.svg rename to src/static/icons/duotone/flag-checkered.svg diff --git a/client/src/static/icons/duotone/flag-usa.svg b/src/static/icons/duotone/flag-usa.svg similarity index 100% rename from client/src/static/icons/duotone/flag-usa.svg rename to src/static/icons/duotone/flag-usa.svg diff --git a/client/src/static/icons/duotone/flag.svg b/src/static/icons/duotone/flag.svg similarity index 100% rename from client/src/static/icons/duotone/flag.svg rename to src/static/icons/duotone/flag.svg diff --git a/client/src/static/icons/duotone/flame.svg b/src/static/icons/duotone/flame.svg similarity index 100% rename from client/src/static/icons/duotone/flame.svg rename to src/static/icons/duotone/flame.svg diff --git a/client/src/static/icons/duotone/flashlight.svg b/src/static/icons/duotone/flashlight.svg similarity index 100% rename from client/src/static/icons/duotone/flashlight.svg rename to src/static/icons/duotone/flashlight.svg diff --git a/client/src/static/icons/duotone/flask-poison.svg b/src/static/icons/duotone/flask-poison.svg similarity index 100% rename from client/src/static/icons/duotone/flask-poison.svg rename to src/static/icons/duotone/flask-poison.svg diff --git a/client/src/static/icons/duotone/flask-potion.svg b/src/static/icons/duotone/flask-potion.svg similarity index 100% rename from client/src/static/icons/duotone/flask-potion.svg rename to src/static/icons/duotone/flask-potion.svg diff --git a/client/src/static/icons/duotone/flask.svg b/src/static/icons/duotone/flask.svg similarity index 100% rename from client/src/static/icons/duotone/flask.svg rename to src/static/icons/duotone/flask.svg diff --git a/client/src/static/icons/duotone/flower-daffodil.svg b/src/static/icons/duotone/flower-daffodil.svg similarity index 100% rename from client/src/static/icons/duotone/flower-daffodil.svg rename to src/static/icons/duotone/flower-daffodil.svg diff --git a/client/src/static/icons/duotone/flower-tulip.svg b/src/static/icons/duotone/flower-tulip.svg similarity index 100% rename from client/src/static/icons/duotone/flower-tulip.svg rename to src/static/icons/duotone/flower-tulip.svg diff --git a/client/src/static/icons/duotone/flower.svg b/src/static/icons/duotone/flower.svg similarity index 100% rename from client/src/static/icons/duotone/flower.svg rename to src/static/icons/duotone/flower.svg diff --git a/client/src/static/icons/duotone/flushed.svg b/src/static/icons/duotone/flushed.svg similarity index 100% rename from client/src/static/icons/duotone/flushed.svg rename to src/static/icons/duotone/flushed.svg diff --git a/client/src/static/icons/duotone/flute.svg b/src/static/icons/duotone/flute.svg similarity index 100% rename from client/src/static/icons/duotone/flute.svg rename to src/static/icons/duotone/flute.svg diff --git a/client/src/static/icons/duotone/flux-capacitor.svg b/src/static/icons/duotone/flux-capacitor.svg similarity index 100% rename from client/src/static/icons/duotone/flux-capacitor.svg rename to src/static/icons/duotone/flux-capacitor.svg diff --git a/client/src/static/icons/duotone/fog.svg b/src/static/icons/duotone/fog.svg similarity index 100% rename from client/src/static/icons/duotone/fog.svg rename to src/static/icons/duotone/fog.svg diff --git a/client/src/static/icons/duotone/folder-minus.svg b/src/static/icons/duotone/folder-minus.svg similarity index 100% rename from client/src/static/icons/duotone/folder-minus.svg rename to src/static/icons/duotone/folder-minus.svg diff --git a/client/src/static/icons/duotone/folder-open.svg b/src/static/icons/duotone/folder-open.svg similarity index 100% rename from client/src/static/icons/duotone/folder-open.svg rename to src/static/icons/duotone/folder-open.svg diff --git a/client/src/static/icons/duotone/folder-plus.svg b/src/static/icons/duotone/folder-plus.svg similarity index 100% rename from client/src/static/icons/duotone/folder-plus.svg rename to src/static/icons/duotone/folder-plus.svg diff --git a/client/src/static/icons/duotone/folder-times.svg b/src/static/icons/duotone/folder-times.svg similarity index 100% rename from client/src/static/icons/duotone/folder-times.svg rename to src/static/icons/duotone/folder-times.svg diff --git a/client/src/static/icons/duotone/folder-tree.svg b/src/static/icons/duotone/folder-tree.svg similarity index 100% rename from client/src/static/icons/duotone/folder-tree.svg rename to src/static/icons/duotone/folder-tree.svg diff --git a/client/src/static/icons/duotone/folder.svg b/src/static/icons/duotone/folder.svg similarity index 100% rename from client/src/static/icons/duotone/folder.svg rename to src/static/icons/duotone/folder.svg diff --git a/client/src/static/icons/duotone/folders.svg b/src/static/icons/duotone/folders.svg similarity index 100% rename from client/src/static/icons/duotone/folders.svg rename to src/static/icons/duotone/folders.svg diff --git a/client/src/static/icons/duotone/font-awesome-logo-full.svg b/src/static/icons/duotone/font-awesome-logo-full.svg similarity index 100% rename from client/src/static/icons/duotone/font-awesome-logo-full.svg rename to src/static/icons/duotone/font-awesome-logo-full.svg diff --git a/client/src/static/icons/duotone/font-case.svg b/src/static/icons/duotone/font-case.svg similarity index 100% rename from client/src/static/icons/duotone/font-case.svg rename to src/static/icons/duotone/font-case.svg diff --git a/client/src/static/icons/duotone/font.svg b/src/static/icons/duotone/font.svg similarity index 100% rename from client/src/static/icons/duotone/font.svg rename to src/static/icons/duotone/font.svg diff --git a/client/src/static/icons/duotone/football-ball.svg b/src/static/icons/duotone/football-ball.svg similarity index 100% rename from client/src/static/icons/duotone/football-ball.svg rename to src/static/icons/duotone/football-ball.svg diff --git a/client/src/static/icons/duotone/football-helmet.svg b/src/static/icons/duotone/football-helmet.svg similarity index 100% rename from client/src/static/icons/duotone/football-helmet.svg rename to src/static/icons/duotone/football-helmet.svg diff --git a/client/src/static/icons/duotone/forklift.svg b/src/static/icons/duotone/forklift.svg similarity index 100% rename from client/src/static/icons/duotone/forklift.svg rename to src/static/icons/duotone/forklift.svg diff --git a/client/src/static/icons/duotone/forward.svg b/src/static/icons/duotone/forward.svg similarity index 100% rename from client/src/static/icons/duotone/forward.svg rename to src/static/icons/duotone/forward.svg diff --git a/client/src/static/icons/duotone/fragile.svg b/src/static/icons/duotone/fragile.svg similarity index 100% rename from client/src/static/icons/duotone/fragile.svg rename to src/static/icons/duotone/fragile.svg diff --git a/client/src/static/icons/duotone/french-fries.svg b/src/static/icons/duotone/french-fries.svg similarity index 100% rename from client/src/static/icons/duotone/french-fries.svg rename to src/static/icons/duotone/french-fries.svg diff --git a/client/src/static/icons/duotone/frog.svg b/src/static/icons/duotone/frog.svg similarity index 100% rename from client/src/static/icons/duotone/frog.svg rename to src/static/icons/duotone/frog.svg diff --git a/client/src/static/icons/duotone/frosty-head.svg b/src/static/icons/duotone/frosty-head.svg similarity index 100% rename from client/src/static/icons/duotone/frosty-head.svg rename to src/static/icons/duotone/frosty-head.svg diff --git a/client/src/static/icons/duotone/frown-open.svg b/src/static/icons/duotone/frown-open.svg similarity index 100% rename from client/src/static/icons/duotone/frown-open.svg rename to src/static/icons/duotone/frown-open.svg diff --git a/client/src/static/icons/duotone/frown.svg b/src/static/icons/duotone/frown.svg similarity index 100% rename from client/src/static/icons/duotone/frown.svg rename to src/static/icons/duotone/frown.svg diff --git a/client/src/static/icons/duotone/function.svg b/src/static/icons/duotone/function.svg similarity index 100% rename from client/src/static/icons/duotone/function.svg rename to src/static/icons/duotone/function.svg diff --git a/client/src/static/icons/duotone/funnel-dollar.svg b/src/static/icons/duotone/funnel-dollar.svg similarity index 100% rename from client/src/static/icons/duotone/funnel-dollar.svg rename to src/static/icons/duotone/funnel-dollar.svg diff --git a/client/src/static/icons/duotone/futbol.svg b/src/static/icons/duotone/futbol.svg similarity index 100% rename from client/src/static/icons/duotone/futbol.svg rename to src/static/icons/duotone/futbol.svg diff --git a/client/src/static/icons/duotone/galaxy.svg b/src/static/icons/duotone/galaxy.svg similarity index 100% rename from client/src/static/icons/duotone/galaxy.svg rename to src/static/icons/duotone/galaxy.svg diff --git a/client/src/static/icons/duotone/game-board-alt.svg b/src/static/icons/duotone/game-board-alt.svg similarity index 100% rename from client/src/static/icons/duotone/game-board-alt.svg rename to src/static/icons/duotone/game-board-alt.svg diff --git a/client/src/static/icons/duotone/game-board.svg b/src/static/icons/duotone/game-board.svg similarity index 100% rename from client/src/static/icons/duotone/game-board.svg rename to src/static/icons/duotone/game-board.svg diff --git a/client/src/static/icons/duotone/game-console-handheld.svg b/src/static/icons/duotone/game-console-handheld.svg similarity index 100% rename from client/src/static/icons/duotone/game-console-handheld.svg rename to src/static/icons/duotone/game-console-handheld.svg diff --git a/client/src/static/icons/duotone/gamepad-alt.svg b/src/static/icons/duotone/gamepad-alt.svg similarity index 100% rename from client/src/static/icons/duotone/gamepad-alt.svg rename to src/static/icons/duotone/gamepad-alt.svg diff --git a/client/src/static/icons/duotone/gamepad.svg b/src/static/icons/duotone/gamepad.svg similarity index 100% rename from client/src/static/icons/duotone/gamepad.svg rename to src/static/icons/duotone/gamepad.svg diff --git a/client/src/static/icons/duotone/garage-car.svg b/src/static/icons/duotone/garage-car.svg similarity index 100% rename from client/src/static/icons/duotone/garage-car.svg rename to src/static/icons/duotone/garage-car.svg diff --git a/client/src/static/icons/duotone/garage-open.svg b/src/static/icons/duotone/garage-open.svg similarity index 100% rename from client/src/static/icons/duotone/garage-open.svg rename to src/static/icons/duotone/garage-open.svg diff --git a/client/src/static/icons/duotone/garage.svg b/src/static/icons/duotone/garage.svg similarity index 100% rename from client/src/static/icons/duotone/garage.svg rename to src/static/icons/duotone/garage.svg diff --git a/client/src/static/icons/duotone/gas-pump-slash.svg b/src/static/icons/duotone/gas-pump-slash.svg similarity index 100% rename from client/src/static/icons/duotone/gas-pump-slash.svg rename to src/static/icons/duotone/gas-pump-slash.svg diff --git a/client/src/static/icons/duotone/gas-pump.svg b/src/static/icons/duotone/gas-pump.svg similarity index 100% rename from client/src/static/icons/duotone/gas-pump.svg rename to src/static/icons/duotone/gas-pump.svg diff --git a/client/src/static/icons/duotone/gavel.svg b/src/static/icons/duotone/gavel.svg similarity index 100% rename from client/src/static/icons/duotone/gavel.svg rename to src/static/icons/duotone/gavel.svg diff --git a/client/src/static/icons/duotone/gem.svg b/src/static/icons/duotone/gem.svg similarity index 100% rename from client/src/static/icons/duotone/gem.svg rename to src/static/icons/duotone/gem.svg diff --git a/client/src/static/icons/duotone/genderless.svg b/src/static/icons/duotone/genderless.svg similarity index 100% rename from client/src/static/icons/duotone/genderless.svg rename to src/static/icons/duotone/genderless.svg diff --git a/client/src/static/icons/duotone/ghost.svg b/src/static/icons/duotone/ghost.svg similarity index 100% rename from client/src/static/icons/duotone/ghost.svg rename to src/static/icons/duotone/ghost.svg diff --git a/client/src/static/icons/duotone/gift-card.svg b/src/static/icons/duotone/gift-card.svg similarity index 100% rename from client/src/static/icons/duotone/gift-card.svg rename to src/static/icons/duotone/gift-card.svg diff --git a/client/src/static/icons/duotone/gift.svg b/src/static/icons/duotone/gift.svg similarity index 100% rename from client/src/static/icons/duotone/gift.svg rename to src/static/icons/duotone/gift.svg diff --git a/client/src/static/icons/duotone/gifts.svg b/src/static/icons/duotone/gifts.svg similarity index 100% rename from client/src/static/icons/duotone/gifts.svg rename to src/static/icons/duotone/gifts.svg diff --git a/client/src/static/icons/duotone/gingerbread-man.svg b/src/static/icons/duotone/gingerbread-man.svg similarity index 100% rename from client/src/static/icons/duotone/gingerbread-man.svg rename to src/static/icons/duotone/gingerbread-man.svg diff --git a/client/src/static/icons/duotone/glass-champagne.svg b/src/static/icons/duotone/glass-champagne.svg similarity index 100% rename from client/src/static/icons/duotone/glass-champagne.svg rename to src/static/icons/duotone/glass-champagne.svg diff --git a/client/src/static/icons/duotone/glass-cheers.svg b/src/static/icons/duotone/glass-cheers.svg similarity index 100% rename from client/src/static/icons/duotone/glass-cheers.svg rename to src/static/icons/duotone/glass-cheers.svg diff --git a/client/src/static/icons/duotone/glass-citrus.svg b/src/static/icons/duotone/glass-citrus.svg similarity index 100% rename from client/src/static/icons/duotone/glass-citrus.svg rename to src/static/icons/duotone/glass-citrus.svg diff --git a/client/src/static/icons/duotone/glass-martini-alt.svg b/src/static/icons/duotone/glass-martini-alt.svg similarity index 100% rename from client/src/static/icons/duotone/glass-martini-alt.svg rename to src/static/icons/duotone/glass-martini-alt.svg diff --git a/client/src/static/icons/duotone/glass-martini.svg b/src/static/icons/duotone/glass-martini.svg similarity index 100% rename from client/src/static/icons/duotone/glass-martini.svg rename to src/static/icons/duotone/glass-martini.svg diff --git a/client/src/static/icons/duotone/glass-whiskey-rocks.svg b/src/static/icons/duotone/glass-whiskey-rocks.svg similarity index 100% rename from client/src/static/icons/duotone/glass-whiskey-rocks.svg rename to src/static/icons/duotone/glass-whiskey-rocks.svg diff --git a/client/src/static/icons/duotone/glass-whiskey.svg b/src/static/icons/duotone/glass-whiskey.svg similarity index 100% rename from client/src/static/icons/duotone/glass-whiskey.svg rename to src/static/icons/duotone/glass-whiskey.svg diff --git a/client/src/static/icons/duotone/glass.svg b/src/static/icons/duotone/glass.svg similarity index 100% rename from client/src/static/icons/duotone/glass.svg rename to src/static/icons/duotone/glass.svg diff --git a/client/src/static/icons/duotone/glasses-alt.svg b/src/static/icons/duotone/glasses-alt.svg similarity index 100% rename from client/src/static/icons/duotone/glasses-alt.svg rename to src/static/icons/duotone/glasses-alt.svg diff --git a/client/src/static/icons/duotone/glasses.svg b/src/static/icons/duotone/glasses.svg similarity index 100% rename from client/src/static/icons/duotone/glasses.svg rename to src/static/icons/duotone/glasses.svg diff --git a/client/src/static/icons/duotone/globe-africa.svg b/src/static/icons/duotone/globe-africa.svg similarity index 100% rename from client/src/static/icons/duotone/globe-africa.svg rename to src/static/icons/duotone/globe-africa.svg diff --git a/client/src/static/icons/duotone/globe-americas.svg b/src/static/icons/duotone/globe-americas.svg similarity index 100% rename from client/src/static/icons/duotone/globe-americas.svg rename to src/static/icons/duotone/globe-americas.svg diff --git a/client/src/static/icons/duotone/globe-asia.svg b/src/static/icons/duotone/globe-asia.svg similarity index 100% rename from client/src/static/icons/duotone/globe-asia.svg rename to src/static/icons/duotone/globe-asia.svg diff --git a/client/src/static/icons/duotone/globe-europe.svg b/src/static/icons/duotone/globe-europe.svg similarity index 100% rename from client/src/static/icons/duotone/globe-europe.svg rename to src/static/icons/duotone/globe-europe.svg diff --git a/client/src/static/icons/duotone/globe-snow.svg b/src/static/icons/duotone/globe-snow.svg similarity index 100% rename from client/src/static/icons/duotone/globe-snow.svg rename to src/static/icons/duotone/globe-snow.svg diff --git a/client/src/static/icons/duotone/globe-stand.svg b/src/static/icons/duotone/globe-stand.svg similarity index 100% rename from client/src/static/icons/duotone/globe-stand.svg rename to src/static/icons/duotone/globe-stand.svg diff --git a/client/src/static/icons/duotone/globe.svg b/src/static/icons/duotone/globe.svg similarity index 100% rename from client/src/static/icons/duotone/globe.svg rename to src/static/icons/duotone/globe.svg diff --git a/client/src/static/icons/duotone/golf-ball.svg b/src/static/icons/duotone/golf-ball.svg similarity index 100% rename from client/src/static/icons/duotone/golf-ball.svg rename to src/static/icons/duotone/golf-ball.svg diff --git a/client/src/static/icons/duotone/golf-club.svg b/src/static/icons/duotone/golf-club.svg similarity index 100% rename from client/src/static/icons/duotone/golf-club.svg rename to src/static/icons/duotone/golf-club.svg diff --git a/client/src/static/icons/duotone/gopuram.svg b/src/static/icons/duotone/gopuram.svg similarity index 100% rename from client/src/static/icons/duotone/gopuram.svg rename to src/static/icons/duotone/gopuram.svg diff --git a/client/src/static/icons/duotone/graduation-cap.svg b/src/static/icons/duotone/graduation-cap.svg similarity index 100% rename from client/src/static/icons/duotone/graduation-cap.svg rename to src/static/icons/duotone/graduation-cap.svg diff --git a/client/src/static/icons/duotone/gramophone.svg b/src/static/icons/duotone/gramophone.svg similarity index 100% rename from client/src/static/icons/duotone/gramophone.svg rename to src/static/icons/duotone/gramophone.svg diff --git a/client/src/static/icons/duotone/greater-than-equal.svg b/src/static/icons/duotone/greater-than-equal.svg similarity index 100% rename from client/src/static/icons/duotone/greater-than-equal.svg rename to src/static/icons/duotone/greater-than-equal.svg diff --git a/client/src/static/icons/duotone/greater-than.svg b/src/static/icons/duotone/greater-than.svg similarity index 100% rename from client/src/static/icons/duotone/greater-than.svg rename to src/static/icons/duotone/greater-than.svg diff --git a/client/src/static/icons/duotone/grimace.svg b/src/static/icons/duotone/grimace.svg similarity index 100% rename from client/src/static/icons/duotone/grimace.svg rename to src/static/icons/duotone/grimace.svg diff --git a/client/src/static/icons/duotone/grin-alt.svg b/src/static/icons/duotone/grin-alt.svg similarity index 100% rename from client/src/static/icons/duotone/grin-alt.svg rename to src/static/icons/duotone/grin-alt.svg diff --git a/client/src/static/icons/duotone/grin-beam-sweat.svg b/src/static/icons/duotone/grin-beam-sweat.svg similarity index 100% rename from client/src/static/icons/duotone/grin-beam-sweat.svg rename to src/static/icons/duotone/grin-beam-sweat.svg diff --git a/client/src/static/icons/duotone/grin-beam.svg b/src/static/icons/duotone/grin-beam.svg similarity index 100% rename from client/src/static/icons/duotone/grin-beam.svg rename to src/static/icons/duotone/grin-beam.svg diff --git a/client/src/static/icons/duotone/grin-hearts.svg b/src/static/icons/duotone/grin-hearts.svg similarity index 100% rename from client/src/static/icons/duotone/grin-hearts.svg rename to src/static/icons/duotone/grin-hearts.svg diff --git a/client/src/static/icons/duotone/grin-squint-tears.svg b/src/static/icons/duotone/grin-squint-tears.svg similarity index 100% rename from client/src/static/icons/duotone/grin-squint-tears.svg rename to src/static/icons/duotone/grin-squint-tears.svg diff --git a/client/src/static/icons/duotone/grin-squint.svg b/src/static/icons/duotone/grin-squint.svg similarity index 100% rename from client/src/static/icons/duotone/grin-squint.svg rename to src/static/icons/duotone/grin-squint.svg diff --git a/client/src/static/icons/duotone/grin-stars.svg b/src/static/icons/duotone/grin-stars.svg similarity index 100% rename from client/src/static/icons/duotone/grin-stars.svg rename to src/static/icons/duotone/grin-stars.svg diff --git a/client/src/static/icons/duotone/grin-tears.svg b/src/static/icons/duotone/grin-tears.svg similarity index 100% rename from client/src/static/icons/duotone/grin-tears.svg rename to src/static/icons/duotone/grin-tears.svg diff --git a/client/src/static/icons/duotone/grin-tongue-squint.svg b/src/static/icons/duotone/grin-tongue-squint.svg similarity index 100% rename from client/src/static/icons/duotone/grin-tongue-squint.svg rename to src/static/icons/duotone/grin-tongue-squint.svg diff --git a/client/src/static/icons/duotone/grin-tongue-wink.svg b/src/static/icons/duotone/grin-tongue-wink.svg similarity index 100% rename from client/src/static/icons/duotone/grin-tongue-wink.svg rename to src/static/icons/duotone/grin-tongue-wink.svg diff --git a/client/src/static/icons/duotone/grin-tongue.svg b/src/static/icons/duotone/grin-tongue.svg similarity index 100% rename from client/src/static/icons/duotone/grin-tongue.svg rename to src/static/icons/duotone/grin-tongue.svg diff --git a/client/src/static/icons/duotone/grin-wink.svg b/src/static/icons/duotone/grin-wink.svg similarity index 100% rename from client/src/static/icons/duotone/grin-wink.svg rename to src/static/icons/duotone/grin-wink.svg diff --git a/client/src/static/icons/duotone/grin.svg b/src/static/icons/duotone/grin.svg similarity index 100% rename from client/src/static/icons/duotone/grin.svg rename to src/static/icons/duotone/grin.svg diff --git a/client/src/static/icons/duotone/grip-horizontal.svg b/src/static/icons/duotone/grip-horizontal.svg similarity index 100% rename from client/src/static/icons/duotone/grip-horizontal.svg rename to src/static/icons/duotone/grip-horizontal.svg diff --git a/client/src/static/icons/duotone/grip-lines-vertical.svg b/src/static/icons/duotone/grip-lines-vertical.svg similarity index 100% rename from client/src/static/icons/duotone/grip-lines-vertical.svg rename to src/static/icons/duotone/grip-lines-vertical.svg diff --git a/client/src/static/icons/duotone/grip-lines.svg b/src/static/icons/duotone/grip-lines.svg similarity index 100% rename from client/src/static/icons/duotone/grip-lines.svg rename to src/static/icons/duotone/grip-lines.svg diff --git a/client/src/static/icons/duotone/grip-vertical.svg b/src/static/icons/duotone/grip-vertical.svg similarity index 100% rename from client/src/static/icons/duotone/grip-vertical.svg rename to src/static/icons/duotone/grip-vertical.svg diff --git a/client/src/static/icons/duotone/guitar-electric.svg b/src/static/icons/duotone/guitar-electric.svg similarity index 100% rename from client/src/static/icons/duotone/guitar-electric.svg rename to src/static/icons/duotone/guitar-electric.svg diff --git a/client/src/static/icons/duotone/guitar.svg b/src/static/icons/duotone/guitar.svg similarity index 100% rename from client/src/static/icons/duotone/guitar.svg rename to src/static/icons/duotone/guitar.svg diff --git a/client/src/static/icons/duotone/guitars.svg b/src/static/icons/duotone/guitars.svg similarity index 100% rename from client/src/static/icons/duotone/guitars.svg rename to src/static/icons/duotone/guitars.svg diff --git a/client/src/static/icons/duotone/h-square.svg b/src/static/icons/duotone/h-square.svg similarity index 100% rename from client/src/static/icons/duotone/h-square.svg rename to src/static/icons/duotone/h-square.svg diff --git a/client/src/static/icons/duotone/h1.svg b/src/static/icons/duotone/h1.svg similarity index 100% rename from client/src/static/icons/duotone/h1.svg rename to src/static/icons/duotone/h1.svg diff --git a/client/src/static/icons/duotone/h2.svg b/src/static/icons/duotone/h2.svg similarity index 100% rename from client/src/static/icons/duotone/h2.svg rename to src/static/icons/duotone/h2.svg diff --git a/client/src/static/icons/duotone/h3.svg b/src/static/icons/duotone/h3.svg similarity index 100% rename from client/src/static/icons/duotone/h3.svg rename to src/static/icons/duotone/h3.svg diff --git a/client/src/static/icons/duotone/h4.svg b/src/static/icons/duotone/h4.svg similarity index 100% rename from client/src/static/icons/duotone/h4.svg rename to src/static/icons/duotone/h4.svg diff --git a/client/src/static/icons/duotone/hamburger.svg b/src/static/icons/duotone/hamburger.svg similarity index 100% rename from client/src/static/icons/duotone/hamburger.svg rename to src/static/icons/duotone/hamburger.svg diff --git a/client/src/static/icons/duotone/hammer-war.svg b/src/static/icons/duotone/hammer-war.svg similarity index 100% rename from client/src/static/icons/duotone/hammer-war.svg rename to src/static/icons/duotone/hammer-war.svg diff --git a/client/src/static/icons/duotone/hammer.svg b/src/static/icons/duotone/hammer.svg similarity index 100% rename from client/src/static/icons/duotone/hammer.svg rename to src/static/icons/duotone/hammer.svg diff --git a/client/src/static/icons/duotone/hamsa.svg b/src/static/icons/duotone/hamsa.svg similarity index 100% rename from client/src/static/icons/duotone/hamsa.svg rename to src/static/icons/duotone/hamsa.svg diff --git a/client/src/static/icons/duotone/hand-heart.svg b/src/static/icons/duotone/hand-heart.svg similarity index 100% rename from client/src/static/icons/duotone/hand-heart.svg rename to src/static/icons/duotone/hand-heart.svg diff --git a/client/src/static/icons/duotone/hand-holding-box.svg b/src/static/icons/duotone/hand-holding-box.svg similarity index 100% rename from client/src/static/icons/duotone/hand-holding-box.svg rename to src/static/icons/duotone/hand-holding-box.svg diff --git a/client/src/static/icons/duotone/hand-holding-heart.svg b/src/static/icons/duotone/hand-holding-heart.svg similarity index 100% rename from client/src/static/icons/duotone/hand-holding-heart.svg rename to src/static/icons/duotone/hand-holding-heart.svg diff --git a/client/src/static/icons/duotone/hand-holding-magic.svg b/src/static/icons/duotone/hand-holding-magic.svg similarity index 100% rename from client/src/static/icons/duotone/hand-holding-magic.svg rename to src/static/icons/duotone/hand-holding-magic.svg diff --git a/client/src/static/icons/duotone/hand-holding-seedling.svg b/src/static/icons/duotone/hand-holding-seedling.svg similarity index 100% rename from client/src/static/icons/duotone/hand-holding-seedling.svg rename to src/static/icons/duotone/hand-holding-seedling.svg diff --git a/client/src/static/icons/duotone/hand-holding-usd.svg b/src/static/icons/duotone/hand-holding-usd.svg similarity index 100% rename from client/src/static/icons/duotone/hand-holding-usd.svg rename to src/static/icons/duotone/hand-holding-usd.svg diff --git a/client/src/static/icons/duotone/hand-holding-water.svg b/src/static/icons/duotone/hand-holding-water.svg similarity index 100% rename from client/src/static/icons/duotone/hand-holding-water.svg rename to src/static/icons/duotone/hand-holding-water.svg diff --git a/client/src/static/icons/duotone/hand-holding.svg b/src/static/icons/duotone/hand-holding.svg similarity index 100% rename from client/src/static/icons/duotone/hand-holding.svg rename to src/static/icons/duotone/hand-holding.svg diff --git a/client/src/static/icons/duotone/hand-lizard.svg b/src/static/icons/duotone/hand-lizard.svg similarity index 100% rename from client/src/static/icons/duotone/hand-lizard.svg rename to src/static/icons/duotone/hand-lizard.svg diff --git a/client/src/static/icons/duotone/hand-middle-finger.svg b/src/static/icons/duotone/hand-middle-finger.svg similarity index 100% rename from client/src/static/icons/duotone/hand-middle-finger.svg rename to src/static/icons/duotone/hand-middle-finger.svg diff --git a/client/src/static/icons/duotone/hand-paper.svg b/src/static/icons/duotone/hand-paper.svg similarity index 100% rename from client/src/static/icons/duotone/hand-paper.svg rename to src/static/icons/duotone/hand-paper.svg diff --git a/client/src/static/icons/duotone/hand-peace.svg b/src/static/icons/duotone/hand-peace.svg similarity index 100% rename from client/src/static/icons/duotone/hand-peace.svg rename to src/static/icons/duotone/hand-peace.svg diff --git a/client/src/static/icons/duotone/hand-point-down.svg b/src/static/icons/duotone/hand-point-down.svg similarity index 100% rename from client/src/static/icons/duotone/hand-point-down.svg rename to src/static/icons/duotone/hand-point-down.svg diff --git a/client/src/static/icons/duotone/hand-point-left.svg b/src/static/icons/duotone/hand-point-left.svg similarity index 100% rename from client/src/static/icons/duotone/hand-point-left.svg rename to src/static/icons/duotone/hand-point-left.svg diff --git a/client/src/static/icons/duotone/hand-point-right.svg b/src/static/icons/duotone/hand-point-right.svg similarity index 100% rename from client/src/static/icons/duotone/hand-point-right.svg rename to src/static/icons/duotone/hand-point-right.svg diff --git a/client/src/static/icons/duotone/hand-point-up.svg b/src/static/icons/duotone/hand-point-up.svg similarity index 100% rename from client/src/static/icons/duotone/hand-point-up.svg rename to src/static/icons/duotone/hand-point-up.svg diff --git a/client/src/static/icons/duotone/hand-pointer.svg b/src/static/icons/duotone/hand-pointer.svg similarity index 100% rename from client/src/static/icons/duotone/hand-pointer.svg rename to src/static/icons/duotone/hand-pointer.svg diff --git a/client/src/static/icons/duotone/hand-receiving.svg b/src/static/icons/duotone/hand-receiving.svg similarity index 100% rename from client/src/static/icons/duotone/hand-receiving.svg rename to src/static/icons/duotone/hand-receiving.svg diff --git a/client/src/static/icons/duotone/hand-rock.svg b/src/static/icons/duotone/hand-rock.svg similarity index 100% rename from client/src/static/icons/duotone/hand-rock.svg rename to src/static/icons/duotone/hand-rock.svg diff --git a/client/src/static/icons/duotone/hand-scissors.svg b/src/static/icons/duotone/hand-scissors.svg similarity index 100% rename from client/src/static/icons/duotone/hand-scissors.svg rename to src/static/icons/duotone/hand-scissors.svg diff --git a/client/src/static/icons/duotone/hand-spock.svg b/src/static/icons/duotone/hand-spock.svg similarity index 100% rename from client/src/static/icons/duotone/hand-spock.svg rename to src/static/icons/duotone/hand-spock.svg diff --git a/client/src/static/icons/duotone/hands-heart.svg b/src/static/icons/duotone/hands-heart.svg similarity index 100% rename from client/src/static/icons/duotone/hands-heart.svg rename to src/static/icons/duotone/hands-heart.svg diff --git a/client/src/static/icons/duotone/hands-helping.svg b/src/static/icons/duotone/hands-helping.svg similarity index 100% rename from client/src/static/icons/duotone/hands-helping.svg rename to src/static/icons/duotone/hands-helping.svg diff --git a/client/src/static/icons/duotone/hands-usd.svg b/src/static/icons/duotone/hands-usd.svg similarity index 100% rename from client/src/static/icons/duotone/hands-usd.svg rename to src/static/icons/duotone/hands-usd.svg diff --git a/client/src/static/icons/duotone/hands.svg b/src/static/icons/duotone/hands.svg similarity index 100% rename from client/src/static/icons/duotone/hands.svg rename to src/static/icons/duotone/hands.svg diff --git a/client/src/static/icons/duotone/handshake-alt.svg b/src/static/icons/duotone/handshake-alt.svg similarity index 100% rename from client/src/static/icons/duotone/handshake-alt.svg rename to src/static/icons/duotone/handshake-alt.svg diff --git a/client/src/static/icons/duotone/handshake.svg b/src/static/icons/duotone/handshake.svg similarity index 100% rename from client/src/static/icons/duotone/handshake.svg rename to src/static/icons/duotone/handshake.svg diff --git a/client/src/static/icons/duotone/hanukiah.svg b/src/static/icons/duotone/hanukiah.svg similarity index 100% rename from client/src/static/icons/duotone/hanukiah.svg rename to src/static/icons/duotone/hanukiah.svg diff --git a/client/src/static/icons/duotone/hard-hat.svg b/src/static/icons/duotone/hard-hat.svg similarity index 100% rename from client/src/static/icons/duotone/hard-hat.svg rename to src/static/icons/duotone/hard-hat.svg diff --git a/client/src/static/icons/duotone/hashtag.svg b/src/static/icons/duotone/hashtag.svg similarity index 100% rename from client/src/static/icons/duotone/hashtag.svg rename to src/static/icons/duotone/hashtag.svg diff --git a/client/src/static/icons/duotone/hat-chef.svg b/src/static/icons/duotone/hat-chef.svg similarity index 100% rename from client/src/static/icons/duotone/hat-chef.svg rename to src/static/icons/duotone/hat-chef.svg diff --git a/client/src/static/icons/duotone/hat-cowboy-side.svg b/src/static/icons/duotone/hat-cowboy-side.svg similarity index 100% rename from client/src/static/icons/duotone/hat-cowboy-side.svg rename to src/static/icons/duotone/hat-cowboy-side.svg diff --git a/client/src/static/icons/duotone/hat-cowboy.svg b/src/static/icons/duotone/hat-cowboy.svg similarity index 100% rename from client/src/static/icons/duotone/hat-cowboy.svg rename to src/static/icons/duotone/hat-cowboy.svg diff --git a/client/src/static/icons/duotone/hat-santa.svg b/src/static/icons/duotone/hat-santa.svg similarity index 100% rename from client/src/static/icons/duotone/hat-santa.svg rename to src/static/icons/duotone/hat-santa.svg diff --git a/client/src/static/icons/duotone/hat-winter.svg b/src/static/icons/duotone/hat-winter.svg similarity index 100% rename from client/src/static/icons/duotone/hat-winter.svg rename to src/static/icons/duotone/hat-winter.svg diff --git a/client/src/static/icons/duotone/hat-witch.svg b/src/static/icons/duotone/hat-witch.svg similarity index 100% rename from client/src/static/icons/duotone/hat-witch.svg rename to src/static/icons/duotone/hat-witch.svg diff --git a/client/src/static/icons/duotone/hat-wizard.svg b/src/static/icons/duotone/hat-wizard.svg similarity index 100% rename from client/src/static/icons/duotone/hat-wizard.svg rename to src/static/icons/duotone/hat-wizard.svg diff --git a/client/src/static/icons/duotone/hdd.svg b/src/static/icons/duotone/hdd.svg similarity index 100% rename from client/src/static/icons/duotone/hdd.svg rename to src/static/icons/duotone/hdd.svg diff --git a/client/src/static/icons/duotone/head-side-brain.svg b/src/static/icons/duotone/head-side-brain.svg similarity index 100% rename from client/src/static/icons/duotone/head-side-brain.svg rename to src/static/icons/duotone/head-side-brain.svg diff --git a/client/src/static/icons/duotone/head-side-headphones.svg b/src/static/icons/duotone/head-side-headphones.svg similarity index 100% rename from client/src/static/icons/duotone/head-side-headphones.svg rename to src/static/icons/duotone/head-side-headphones.svg diff --git a/client/src/static/icons/duotone/head-side-medical.svg b/src/static/icons/duotone/head-side-medical.svg similarity index 100% rename from client/src/static/icons/duotone/head-side-medical.svg rename to src/static/icons/duotone/head-side-medical.svg diff --git a/client/src/static/icons/duotone/head-side.svg b/src/static/icons/duotone/head-side.svg similarity index 100% rename from client/src/static/icons/duotone/head-side.svg rename to src/static/icons/duotone/head-side.svg diff --git a/client/src/static/icons/duotone/head-vr.svg b/src/static/icons/duotone/head-vr.svg similarity index 100% rename from client/src/static/icons/duotone/head-vr.svg rename to src/static/icons/duotone/head-vr.svg diff --git a/client/src/static/icons/duotone/heading.svg b/src/static/icons/duotone/heading.svg similarity index 100% rename from client/src/static/icons/duotone/heading.svg rename to src/static/icons/duotone/heading.svg diff --git a/client/src/static/icons/duotone/headphones-alt.svg b/src/static/icons/duotone/headphones-alt.svg similarity index 100% rename from client/src/static/icons/duotone/headphones-alt.svg rename to src/static/icons/duotone/headphones-alt.svg diff --git a/client/src/static/icons/duotone/headphones.svg b/src/static/icons/duotone/headphones.svg similarity index 100% rename from client/src/static/icons/duotone/headphones.svg rename to src/static/icons/duotone/headphones.svg diff --git a/client/src/static/icons/duotone/headset.svg b/src/static/icons/duotone/headset.svg similarity index 100% rename from client/src/static/icons/duotone/headset.svg rename to src/static/icons/duotone/headset.svg diff --git a/client/src/static/icons/duotone/heart-broken.svg b/src/static/icons/duotone/heart-broken.svg similarity index 100% rename from client/src/static/icons/duotone/heart-broken.svg rename to src/static/icons/duotone/heart-broken.svg diff --git a/client/src/static/icons/duotone/heart-circle.svg b/src/static/icons/duotone/heart-circle.svg similarity index 100% rename from client/src/static/icons/duotone/heart-circle.svg rename to src/static/icons/duotone/heart-circle.svg diff --git a/client/src/static/icons/duotone/heart-rate.svg b/src/static/icons/duotone/heart-rate.svg similarity index 100% rename from client/src/static/icons/duotone/heart-rate.svg rename to src/static/icons/duotone/heart-rate.svg diff --git a/client/src/static/icons/duotone/heart-square.svg b/src/static/icons/duotone/heart-square.svg similarity index 100% rename from client/src/static/icons/duotone/heart-square.svg rename to src/static/icons/duotone/heart-square.svg diff --git a/client/src/static/icons/duotone/heart.svg b/src/static/icons/duotone/heart.svg similarity index 100% rename from client/src/static/icons/duotone/heart.svg rename to src/static/icons/duotone/heart.svg diff --git a/client/src/static/icons/duotone/heartbeat.svg b/src/static/icons/duotone/heartbeat.svg similarity index 100% rename from client/src/static/icons/duotone/heartbeat.svg rename to src/static/icons/duotone/heartbeat.svg diff --git a/client/src/static/icons/duotone/heat.svg b/src/static/icons/duotone/heat.svg similarity index 100% rename from client/src/static/icons/duotone/heat.svg rename to src/static/icons/duotone/heat.svg diff --git a/client/src/static/icons/duotone/helicopter.svg b/src/static/icons/duotone/helicopter.svg similarity index 100% rename from client/src/static/icons/duotone/helicopter.svg rename to src/static/icons/duotone/helicopter.svg diff --git a/client/src/static/icons/duotone/helmet-battle.svg b/src/static/icons/duotone/helmet-battle.svg similarity index 100% rename from client/src/static/icons/duotone/helmet-battle.svg rename to src/static/icons/duotone/helmet-battle.svg diff --git a/client/src/static/icons/duotone/hexagon.svg b/src/static/icons/duotone/hexagon.svg similarity index 100% rename from client/src/static/icons/duotone/hexagon.svg rename to src/static/icons/duotone/hexagon.svg diff --git a/client/src/static/icons/duotone/highlighter.svg b/src/static/icons/duotone/highlighter.svg similarity index 100% rename from client/src/static/icons/duotone/highlighter.svg rename to src/static/icons/duotone/highlighter.svg diff --git a/client/src/static/icons/duotone/hiking.svg b/src/static/icons/duotone/hiking.svg similarity index 100% rename from client/src/static/icons/duotone/hiking.svg rename to src/static/icons/duotone/hiking.svg diff --git a/client/src/static/icons/duotone/hippo.svg b/src/static/icons/duotone/hippo.svg similarity index 100% rename from client/src/static/icons/duotone/hippo.svg rename to src/static/icons/duotone/hippo.svg diff --git a/client/src/static/icons/duotone/history.svg b/src/static/icons/duotone/history.svg similarity index 100% rename from client/src/static/icons/duotone/history.svg rename to src/static/icons/duotone/history.svg diff --git a/client/src/static/icons/duotone/hockey-mask.svg b/src/static/icons/duotone/hockey-mask.svg similarity index 100% rename from client/src/static/icons/duotone/hockey-mask.svg rename to src/static/icons/duotone/hockey-mask.svg diff --git a/client/src/static/icons/duotone/hockey-puck.svg b/src/static/icons/duotone/hockey-puck.svg similarity index 100% rename from client/src/static/icons/duotone/hockey-puck.svg rename to src/static/icons/duotone/hockey-puck.svg diff --git a/client/src/static/icons/duotone/hockey-sticks.svg b/src/static/icons/duotone/hockey-sticks.svg similarity index 100% rename from client/src/static/icons/duotone/hockey-sticks.svg rename to src/static/icons/duotone/hockey-sticks.svg diff --git a/client/src/static/icons/duotone/holly-berry.svg b/src/static/icons/duotone/holly-berry.svg similarity index 100% rename from client/src/static/icons/duotone/holly-berry.svg rename to src/static/icons/duotone/holly-berry.svg diff --git a/client/src/static/icons/duotone/home-alt.svg b/src/static/icons/duotone/home-alt.svg similarity index 100% rename from client/src/static/icons/duotone/home-alt.svg rename to src/static/icons/duotone/home-alt.svg diff --git a/client/src/static/icons/duotone/home-heart.svg b/src/static/icons/duotone/home-heart.svg similarity index 100% rename from client/src/static/icons/duotone/home-heart.svg rename to src/static/icons/duotone/home-heart.svg diff --git a/client/src/static/icons/duotone/home-lg-alt.svg b/src/static/icons/duotone/home-lg-alt.svg similarity index 100% rename from client/src/static/icons/duotone/home-lg-alt.svg rename to src/static/icons/duotone/home-lg-alt.svg diff --git a/client/src/static/icons/duotone/home-lg.svg b/src/static/icons/duotone/home-lg.svg similarity index 100% rename from client/src/static/icons/duotone/home-lg.svg rename to src/static/icons/duotone/home-lg.svg diff --git a/client/src/static/icons/duotone/home.svg b/src/static/icons/duotone/home.svg similarity index 100% rename from client/src/static/icons/duotone/home.svg rename to src/static/icons/duotone/home.svg diff --git a/client/src/static/icons/duotone/hood-cloak.svg b/src/static/icons/duotone/hood-cloak.svg similarity index 100% rename from client/src/static/icons/duotone/hood-cloak.svg rename to src/static/icons/duotone/hood-cloak.svg diff --git a/client/src/static/icons/duotone/horizontal-rule.svg b/src/static/icons/duotone/horizontal-rule.svg similarity index 100% rename from client/src/static/icons/duotone/horizontal-rule.svg rename to src/static/icons/duotone/horizontal-rule.svg diff --git a/client/src/static/icons/duotone/horse-head.svg b/src/static/icons/duotone/horse-head.svg similarity index 100% rename from client/src/static/icons/duotone/horse-head.svg rename to src/static/icons/duotone/horse-head.svg diff --git a/client/src/static/icons/duotone/horse-saddle.svg b/src/static/icons/duotone/horse-saddle.svg similarity index 100% rename from client/src/static/icons/duotone/horse-saddle.svg rename to src/static/icons/duotone/horse-saddle.svg diff --git a/client/src/static/icons/duotone/horse.svg b/src/static/icons/duotone/horse.svg similarity index 100% rename from client/src/static/icons/duotone/horse.svg rename to src/static/icons/duotone/horse.svg diff --git a/client/src/static/icons/duotone/hospital-alt.svg b/src/static/icons/duotone/hospital-alt.svg similarity index 100% rename from client/src/static/icons/duotone/hospital-alt.svg rename to src/static/icons/duotone/hospital-alt.svg diff --git a/client/src/static/icons/duotone/hospital-symbol.svg b/src/static/icons/duotone/hospital-symbol.svg similarity index 100% rename from client/src/static/icons/duotone/hospital-symbol.svg rename to src/static/icons/duotone/hospital-symbol.svg diff --git a/client/src/static/icons/duotone/hospital-user.svg b/src/static/icons/duotone/hospital-user.svg similarity index 100% rename from client/src/static/icons/duotone/hospital-user.svg rename to src/static/icons/duotone/hospital-user.svg diff --git a/client/src/static/icons/duotone/hospital.svg b/src/static/icons/duotone/hospital.svg similarity index 100% rename from client/src/static/icons/duotone/hospital.svg rename to src/static/icons/duotone/hospital.svg diff --git a/client/src/static/icons/duotone/hospitals.svg b/src/static/icons/duotone/hospitals.svg similarity index 100% rename from client/src/static/icons/duotone/hospitals.svg rename to src/static/icons/duotone/hospitals.svg diff --git a/client/src/static/icons/duotone/hot-tub.svg b/src/static/icons/duotone/hot-tub.svg similarity index 100% rename from client/src/static/icons/duotone/hot-tub.svg rename to src/static/icons/duotone/hot-tub.svg diff --git a/client/src/static/icons/duotone/hotdog.svg b/src/static/icons/duotone/hotdog.svg similarity index 100% rename from client/src/static/icons/duotone/hotdog.svg rename to src/static/icons/duotone/hotdog.svg diff --git a/client/src/static/icons/duotone/hotel.svg b/src/static/icons/duotone/hotel.svg similarity index 100% rename from client/src/static/icons/duotone/hotel.svg rename to src/static/icons/duotone/hotel.svg diff --git a/client/src/static/icons/duotone/hourglass-end.svg b/src/static/icons/duotone/hourglass-end.svg similarity index 100% rename from client/src/static/icons/duotone/hourglass-end.svg rename to src/static/icons/duotone/hourglass-end.svg diff --git a/client/src/static/icons/duotone/hourglass-half.svg b/src/static/icons/duotone/hourglass-half.svg similarity index 100% rename from client/src/static/icons/duotone/hourglass-half.svg rename to src/static/icons/duotone/hourglass-half.svg diff --git a/client/src/static/icons/duotone/hourglass-start.svg b/src/static/icons/duotone/hourglass-start.svg similarity index 100% rename from client/src/static/icons/duotone/hourglass-start.svg rename to src/static/icons/duotone/hourglass-start.svg diff --git a/client/src/static/icons/duotone/hourglass.svg b/src/static/icons/duotone/hourglass.svg similarity index 100% rename from client/src/static/icons/duotone/hourglass.svg rename to src/static/icons/duotone/hourglass.svg diff --git a/client/src/static/icons/duotone/house-damage.svg b/src/static/icons/duotone/house-damage.svg similarity index 100% rename from client/src/static/icons/duotone/house-damage.svg rename to src/static/icons/duotone/house-damage.svg diff --git a/client/src/static/icons/duotone/house-day.svg b/src/static/icons/duotone/house-day.svg similarity index 100% rename from client/src/static/icons/duotone/house-day.svg rename to src/static/icons/duotone/house-day.svg diff --git a/client/src/static/icons/duotone/house-flood.svg b/src/static/icons/duotone/house-flood.svg similarity index 100% rename from client/src/static/icons/duotone/house-flood.svg rename to src/static/icons/duotone/house-flood.svg diff --git a/client/src/static/icons/duotone/house-leave.svg b/src/static/icons/duotone/house-leave.svg similarity index 100% rename from client/src/static/icons/duotone/house-leave.svg rename to src/static/icons/duotone/house-leave.svg diff --git a/client/src/static/icons/duotone/house-night.svg b/src/static/icons/duotone/house-night.svg similarity index 100% rename from client/src/static/icons/duotone/house-night.svg rename to src/static/icons/duotone/house-night.svg diff --git a/client/src/static/icons/duotone/house-return.svg b/src/static/icons/duotone/house-return.svg similarity index 100% rename from client/src/static/icons/duotone/house-return.svg rename to src/static/icons/duotone/house-return.svg diff --git a/client/src/static/icons/duotone/house-signal.svg b/src/static/icons/duotone/house-signal.svg similarity index 100% rename from client/src/static/icons/duotone/house-signal.svg rename to src/static/icons/duotone/house-signal.svg diff --git a/client/src/static/icons/duotone/house.svg b/src/static/icons/duotone/house.svg similarity index 100% rename from client/src/static/icons/duotone/house.svg rename to src/static/icons/duotone/house.svg diff --git a/client/src/static/icons/duotone/hryvnia.svg b/src/static/icons/duotone/hryvnia.svg similarity index 100% rename from client/src/static/icons/duotone/hryvnia.svg rename to src/static/icons/duotone/hryvnia.svg diff --git a/client/src/static/icons/duotone/humidity.svg b/src/static/icons/duotone/humidity.svg similarity index 100% rename from client/src/static/icons/duotone/humidity.svg rename to src/static/icons/duotone/humidity.svg diff --git a/client/src/static/icons/duotone/hurricane.svg b/src/static/icons/duotone/hurricane.svg similarity index 100% rename from client/src/static/icons/duotone/hurricane.svg rename to src/static/icons/duotone/hurricane.svg diff --git a/client/src/static/icons/duotone/i-cursor.svg b/src/static/icons/duotone/i-cursor.svg similarity index 100% rename from client/src/static/icons/duotone/i-cursor.svg rename to src/static/icons/duotone/i-cursor.svg diff --git a/client/src/static/icons/duotone/ice-cream.svg b/src/static/icons/duotone/ice-cream.svg similarity index 100% rename from client/src/static/icons/duotone/ice-cream.svg rename to src/static/icons/duotone/ice-cream.svg diff --git a/client/src/static/icons/duotone/ice-skate.svg b/src/static/icons/duotone/ice-skate.svg similarity index 100% rename from client/src/static/icons/duotone/ice-skate.svg rename to src/static/icons/duotone/ice-skate.svg diff --git a/client/src/static/icons/duotone/icicles.svg b/src/static/icons/duotone/icicles.svg similarity index 100% rename from client/src/static/icons/duotone/icicles.svg rename to src/static/icons/duotone/icicles.svg diff --git a/client/src/static/icons/duotone/icons-alt.svg b/src/static/icons/duotone/icons-alt.svg similarity index 100% rename from client/src/static/icons/duotone/icons-alt.svg rename to src/static/icons/duotone/icons-alt.svg diff --git a/client/src/static/icons/duotone/icons.svg b/src/static/icons/duotone/icons.svg similarity index 100% rename from client/src/static/icons/duotone/icons.svg rename to src/static/icons/duotone/icons.svg diff --git a/client/src/static/icons/duotone/id-badge.svg b/src/static/icons/duotone/id-badge.svg similarity index 100% rename from client/src/static/icons/duotone/id-badge.svg rename to src/static/icons/duotone/id-badge.svg diff --git a/client/src/static/icons/duotone/id-card-alt.svg b/src/static/icons/duotone/id-card-alt.svg similarity index 100% rename from client/src/static/icons/duotone/id-card-alt.svg rename to src/static/icons/duotone/id-card-alt.svg diff --git a/client/src/static/icons/duotone/id-card.svg b/src/static/icons/duotone/id-card.svg similarity index 100% rename from client/src/static/icons/duotone/id-card.svg rename to src/static/icons/duotone/id-card.svg diff --git a/client/src/static/icons/duotone/igloo.svg b/src/static/icons/duotone/igloo.svg similarity index 100% rename from client/src/static/icons/duotone/igloo.svg rename to src/static/icons/duotone/igloo.svg diff --git a/client/src/static/icons/duotone/image-polaroid.svg b/src/static/icons/duotone/image-polaroid.svg similarity index 100% rename from client/src/static/icons/duotone/image-polaroid.svg rename to src/static/icons/duotone/image-polaroid.svg diff --git a/client/src/static/icons/duotone/image.svg b/src/static/icons/duotone/image.svg similarity index 100% rename from client/src/static/icons/duotone/image.svg rename to src/static/icons/duotone/image.svg diff --git a/client/src/static/icons/duotone/images.svg b/src/static/icons/duotone/images.svg similarity index 100% rename from client/src/static/icons/duotone/images.svg rename to src/static/icons/duotone/images.svg diff --git a/client/src/static/icons/duotone/inbox-in.svg b/src/static/icons/duotone/inbox-in.svg similarity index 100% rename from client/src/static/icons/duotone/inbox-in.svg rename to src/static/icons/duotone/inbox-in.svg diff --git a/client/src/static/icons/duotone/inbox-out.svg b/src/static/icons/duotone/inbox-out.svg similarity index 100% rename from client/src/static/icons/duotone/inbox-out.svg rename to src/static/icons/duotone/inbox-out.svg diff --git a/client/src/static/icons/duotone/inbox.svg b/src/static/icons/duotone/inbox.svg similarity index 100% rename from client/src/static/icons/duotone/inbox.svg rename to src/static/icons/duotone/inbox.svg diff --git a/client/src/static/icons/duotone/indent.svg b/src/static/icons/duotone/indent.svg similarity index 100% rename from client/src/static/icons/duotone/indent.svg rename to src/static/icons/duotone/indent.svg diff --git a/client/src/static/icons/duotone/industry-alt.svg b/src/static/icons/duotone/industry-alt.svg similarity index 100% rename from client/src/static/icons/duotone/industry-alt.svg rename to src/static/icons/duotone/industry-alt.svg diff --git a/client/src/static/icons/duotone/industry.svg b/src/static/icons/duotone/industry.svg similarity index 100% rename from client/src/static/icons/duotone/industry.svg rename to src/static/icons/duotone/industry.svg diff --git a/client/src/static/icons/duotone/infinity.svg b/src/static/icons/duotone/infinity.svg similarity index 100% rename from client/src/static/icons/duotone/infinity.svg rename to src/static/icons/duotone/infinity.svg diff --git a/client/src/static/icons/duotone/info-circle.svg b/src/static/icons/duotone/info-circle.svg similarity index 100% rename from client/src/static/icons/duotone/info-circle.svg rename to src/static/icons/duotone/info-circle.svg diff --git a/client/src/static/icons/duotone/info-square.svg b/src/static/icons/duotone/info-square.svg similarity index 100% rename from client/src/static/icons/duotone/info-square.svg rename to src/static/icons/duotone/info-square.svg diff --git a/client/src/static/icons/duotone/info.svg b/src/static/icons/duotone/info.svg similarity index 100% rename from client/src/static/icons/duotone/info.svg rename to src/static/icons/duotone/info.svg diff --git a/client/src/static/icons/duotone/inhaler.svg b/src/static/icons/duotone/inhaler.svg similarity index 100% rename from client/src/static/icons/duotone/inhaler.svg rename to src/static/icons/duotone/inhaler.svg diff --git a/client/src/static/icons/duotone/integral.svg b/src/static/icons/duotone/integral.svg similarity index 100% rename from client/src/static/icons/duotone/integral.svg rename to src/static/icons/duotone/integral.svg diff --git a/client/src/static/icons/duotone/intersection.svg b/src/static/icons/duotone/intersection.svg similarity index 100% rename from client/src/static/icons/duotone/intersection.svg rename to src/static/icons/duotone/intersection.svg diff --git a/client/src/static/icons/duotone/inventory.svg b/src/static/icons/duotone/inventory.svg similarity index 100% rename from client/src/static/icons/duotone/inventory.svg rename to src/static/icons/duotone/inventory.svg diff --git a/client/src/static/icons/duotone/island-tropical.svg b/src/static/icons/duotone/island-tropical.svg similarity index 100% rename from client/src/static/icons/duotone/island-tropical.svg rename to src/static/icons/duotone/island-tropical.svg diff --git a/client/src/static/icons/duotone/italic.svg b/src/static/icons/duotone/italic.svg similarity index 100% rename from client/src/static/icons/duotone/italic.svg rename to src/static/icons/duotone/italic.svg diff --git a/client/src/static/icons/duotone/jack-o-lantern.svg b/src/static/icons/duotone/jack-o-lantern.svg similarity index 100% rename from client/src/static/icons/duotone/jack-o-lantern.svg rename to src/static/icons/duotone/jack-o-lantern.svg diff --git a/client/src/static/icons/duotone/jedi.svg b/src/static/icons/duotone/jedi.svg similarity index 100% rename from client/src/static/icons/duotone/jedi.svg rename to src/static/icons/duotone/jedi.svg diff --git a/client/src/static/icons/duotone/joint.svg b/src/static/icons/duotone/joint.svg similarity index 100% rename from client/src/static/icons/duotone/joint.svg rename to src/static/icons/duotone/joint.svg diff --git a/client/src/static/icons/duotone/journal-whills.svg b/src/static/icons/duotone/journal-whills.svg similarity index 100% rename from client/src/static/icons/duotone/journal-whills.svg rename to src/static/icons/duotone/journal-whills.svg diff --git a/client/src/static/icons/duotone/joystick.svg b/src/static/icons/duotone/joystick.svg similarity index 100% rename from client/src/static/icons/duotone/joystick.svg rename to src/static/icons/duotone/joystick.svg diff --git a/client/src/static/icons/duotone/jug.svg b/src/static/icons/duotone/jug.svg similarity index 100% rename from client/src/static/icons/duotone/jug.svg rename to src/static/icons/duotone/jug.svg diff --git a/client/src/static/icons/duotone/kaaba.svg b/src/static/icons/duotone/kaaba.svg similarity index 100% rename from client/src/static/icons/duotone/kaaba.svg rename to src/static/icons/duotone/kaaba.svg diff --git a/client/src/static/icons/duotone/kazoo.svg b/src/static/icons/duotone/kazoo.svg similarity index 100% rename from client/src/static/icons/duotone/kazoo.svg rename to src/static/icons/duotone/kazoo.svg diff --git a/client/src/static/icons/duotone/kerning.svg b/src/static/icons/duotone/kerning.svg similarity index 100% rename from client/src/static/icons/duotone/kerning.svg rename to src/static/icons/duotone/kerning.svg diff --git a/client/src/static/icons/duotone/key-skeleton.svg b/src/static/icons/duotone/key-skeleton.svg similarity index 100% rename from client/src/static/icons/duotone/key-skeleton.svg rename to src/static/icons/duotone/key-skeleton.svg diff --git a/client/src/static/icons/duotone/key.svg b/src/static/icons/duotone/key.svg similarity index 100% rename from client/src/static/icons/duotone/key.svg rename to src/static/icons/duotone/key.svg diff --git a/client/src/static/icons/duotone/keyboard.svg b/src/static/icons/duotone/keyboard.svg similarity index 100% rename from client/src/static/icons/duotone/keyboard.svg rename to src/static/icons/duotone/keyboard.svg diff --git a/client/src/static/icons/duotone/keynote.svg b/src/static/icons/duotone/keynote.svg similarity index 100% rename from client/src/static/icons/duotone/keynote.svg rename to src/static/icons/duotone/keynote.svg diff --git a/client/src/static/icons/duotone/khanda.svg b/src/static/icons/duotone/khanda.svg similarity index 100% rename from client/src/static/icons/duotone/khanda.svg rename to src/static/icons/duotone/khanda.svg diff --git a/client/src/static/icons/duotone/kidneys.svg b/src/static/icons/duotone/kidneys.svg similarity index 100% rename from client/src/static/icons/duotone/kidneys.svg rename to src/static/icons/duotone/kidneys.svg diff --git a/client/src/static/icons/duotone/kiss-beam.svg b/src/static/icons/duotone/kiss-beam.svg similarity index 100% rename from client/src/static/icons/duotone/kiss-beam.svg rename to src/static/icons/duotone/kiss-beam.svg diff --git a/client/src/static/icons/duotone/kiss-wink-heart.svg b/src/static/icons/duotone/kiss-wink-heart.svg similarity index 100% rename from client/src/static/icons/duotone/kiss-wink-heart.svg rename to src/static/icons/duotone/kiss-wink-heart.svg diff --git a/client/src/static/icons/duotone/kiss.svg b/src/static/icons/duotone/kiss.svg similarity index 100% rename from client/src/static/icons/duotone/kiss.svg rename to src/static/icons/duotone/kiss.svg diff --git a/client/src/static/icons/duotone/kite.svg b/src/static/icons/duotone/kite.svg similarity index 100% rename from client/src/static/icons/duotone/kite.svg rename to src/static/icons/duotone/kite.svg diff --git a/client/src/static/icons/duotone/kiwi-bird.svg b/src/static/icons/duotone/kiwi-bird.svg similarity index 100% rename from client/src/static/icons/duotone/kiwi-bird.svg rename to src/static/icons/duotone/kiwi-bird.svg diff --git a/client/src/static/icons/duotone/knife-kitchen.svg b/src/static/icons/duotone/knife-kitchen.svg similarity index 100% rename from client/src/static/icons/duotone/knife-kitchen.svg rename to src/static/icons/duotone/knife-kitchen.svg diff --git a/client/src/static/icons/duotone/lambda.svg b/src/static/icons/duotone/lambda.svg similarity index 100% rename from client/src/static/icons/duotone/lambda.svg rename to src/static/icons/duotone/lambda.svg diff --git a/client/src/static/icons/duotone/lamp-desk.svg b/src/static/icons/duotone/lamp-desk.svg similarity index 100% rename from client/src/static/icons/duotone/lamp-desk.svg rename to src/static/icons/duotone/lamp-desk.svg diff --git a/client/src/static/icons/duotone/lamp-floor.svg b/src/static/icons/duotone/lamp-floor.svg similarity index 100% rename from client/src/static/icons/duotone/lamp-floor.svg rename to src/static/icons/duotone/lamp-floor.svg diff --git a/client/src/static/icons/duotone/lamp.svg b/src/static/icons/duotone/lamp.svg similarity index 100% rename from client/src/static/icons/duotone/lamp.svg rename to src/static/icons/duotone/lamp.svg diff --git a/client/src/static/icons/duotone/landmark-alt.svg b/src/static/icons/duotone/landmark-alt.svg similarity index 100% rename from client/src/static/icons/duotone/landmark-alt.svg rename to src/static/icons/duotone/landmark-alt.svg diff --git a/client/src/static/icons/duotone/landmark.svg b/src/static/icons/duotone/landmark.svg similarity index 100% rename from client/src/static/icons/duotone/landmark.svg rename to src/static/icons/duotone/landmark.svg diff --git a/client/src/static/icons/duotone/language.svg b/src/static/icons/duotone/language.svg similarity index 100% rename from client/src/static/icons/duotone/language.svg rename to src/static/icons/duotone/language.svg diff --git a/client/src/static/icons/duotone/laptop-code.svg b/src/static/icons/duotone/laptop-code.svg similarity index 100% rename from client/src/static/icons/duotone/laptop-code.svg rename to src/static/icons/duotone/laptop-code.svg diff --git a/client/src/static/icons/duotone/laptop-medical.svg b/src/static/icons/duotone/laptop-medical.svg similarity index 100% rename from client/src/static/icons/duotone/laptop-medical.svg rename to src/static/icons/duotone/laptop-medical.svg diff --git a/client/src/static/icons/duotone/laptop.svg b/src/static/icons/duotone/laptop.svg similarity index 100% rename from client/src/static/icons/duotone/laptop.svg rename to src/static/icons/duotone/laptop.svg diff --git a/client/src/static/icons/duotone/lasso.svg b/src/static/icons/duotone/lasso.svg similarity index 100% rename from client/src/static/icons/duotone/lasso.svg rename to src/static/icons/duotone/lasso.svg diff --git a/client/src/static/icons/duotone/laugh-beam.svg b/src/static/icons/duotone/laugh-beam.svg similarity index 100% rename from client/src/static/icons/duotone/laugh-beam.svg rename to src/static/icons/duotone/laugh-beam.svg diff --git a/client/src/static/icons/duotone/laugh-squint.svg b/src/static/icons/duotone/laugh-squint.svg similarity index 100% rename from client/src/static/icons/duotone/laugh-squint.svg rename to src/static/icons/duotone/laugh-squint.svg diff --git a/client/src/static/icons/duotone/laugh-wink.svg b/src/static/icons/duotone/laugh-wink.svg similarity index 100% rename from client/src/static/icons/duotone/laugh-wink.svg rename to src/static/icons/duotone/laugh-wink.svg diff --git a/client/src/static/icons/duotone/laugh.svg b/src/static/icons/duotone/laugh.svg similarity index 100% rename from client/src/static/icons/duotone/laugh.svg rename to src/static/icons/duotone/laugh.svg diff --git a/client/src/static/icons/duotone/layer-group.svg b/src/static/icons/duotone/layer-group.svg similarity index 100% rename from client/src/static/icons/duotone/layer-group.svg rename to src/static/icons/duotone/layer-group.svg diff --git a/client/src/static/icons/duotone/layer-minus.svg b/src/static/icons/duotone/layer-minus.svg similarity index 100% rename from client/src/static/icons/duotone/layer-minus.svg rename to src/static/icons/duotone/layer-minus.svg diff --git a/client/src/static/icons/duotone/layer-plus.svg b/src/static/icons/duotone/layer-plus.svg similarity index 100% rename from client/src/static/icons/duotone/layer-plus.svg rename to src/static/icons/duotone/layer-plus.svg diff --git a/client/src/static/icons/duotone/leaf-heart.svg b/src/static/icons/duotone/leaf-heart.svg similarity index 100% rename from client/src/static/icons/duotone/leaf-heart.svg rename to src/static/icons/duotone/leaf-heart.svg diff --git a/client/src/static/icons/duotone/leaf-maple.svg b/src/static/icons/duotone/leaf-maple.svg similarity index 100% rename from client/src/static/icons/duotone/leaf-maple.svg rename to src/static/icons/duotone/leaf-maple.svg diff --git a/client/src/static/icons/duotone/leaf-oak.svg b/src/static/icons/duotone/leaf-oak.svg similarity index 100% rename from client/src/static/icons/duotone/leaf-oak.svg rename to src/static/icons/duotone/leaf-oak.svg diff --git a/client/src/static/icons/duotone/leaf.svg b/src/static/icons/duotone/leaf.svg similarity index 100% rename from client/src/static/icons/duotone/leaf.svg rename to src/static/icons/duotone/leaf.svg diff --git a/client/src/static/icons/duotone/lemon.svg b/src/static/icons/duotone/lemon.svg similarity index 100% rename from client/src/static/icons/duotone/lemon.svg rename to src/static/icons/duotone/lemon.svg diff --git a/client/src/static/icons/duotone/less-than-equal.svg b/src/static/icons/duotone/less-than-equal.svg similarity index 100% rename from client/src/static/icons/duotone/less-than-equal.svg rename to src/static/icons/duotone/less-than-equal.svg diff --git a/client/src/static/icons/duotone/less-than.svg b/src/static/icons/duotone/less-than.svg similarity index 100% rename from client/src/static/icons/duotone/less-than.svg rename to src/static/icons/duotone/less-than.svg diff --git a/client/src/static/icons/duotone/level-down-alt.svg b/src/static/icons/duotone/level-down-alt.svg similarity index 100% rename from client/src/static/icons/duotone/level-down-alt.svg rename to src/static/icons/duotone/level-down-alt.svg diff --git a/client/src/static/icons/duotone/level-down.svg b/src/static/icons/duotone/level-down.svg similarity index 100% rename from client/src/static/icons/duotone/level-down.svg rename to src/static/icons/duotone/level-down.svg diff --git a/client/src/static/icons/duotone/level-up-alt.svg b/src/static/icons/duotone/level-up-alt.svg similarity index 100% rename from client/src/static/icons/duotone/level-up-alt.svg rename to src/static/icons/duotone/level-up-alt.svg diff --git a/client/src/static/icons/duotone/level-up.svg b/src/static/icons/duotone/level-up.svg similarity index 100% rename from client/src/static/icons/duotone/level-up.svg rename to src/static/icons/duotone/level-up.svg diff --git a/client/src/static/icons/duotone/life-ring.svg b/src/static/icons/duotone/life-ring.svg similarity index 100% rename from client/src/static/icons/duotone/life-ring.svg rename to src/static/icons/duotone/life-ring.svg diff --git a/client/src/static/icons/duotone/light-ceiling.svg b/src/static/icons/duotone/light-ceiling.svg similarity index 100% rename from client/src/static/icons/duotone/light-ceiling.svg rename to src/static/icons/duotone/light-ceiling.svg diff --git a/client/src/static/icons/duotone/light-switch-off.svg b/src/static/icons/duotone/light-switch-off.svg similarity index 100% rename from client/src/static/icons/duotone/light-switch-off.svg rename to src/static/icons/duotone/light-switch-off.svg diff --git a/client/src/static/icons/duotone/light-switch-on.svg b/src/static/icons/duotone/light-switch-on.svg similarity index 100% rename from client/src/static/icons/duotone/light-switch-on.svg rename to src/static/icons/duotone/light-switch-on.svg diff --git a/client/src/static/icons/duotone/light-switch.svg b/src/static/icons/duotone/light-switch.svg similarity index 100% rename from client/src/static/icons/duotone/light-switch.svg rename to src/static/icons/duotone/light-switch.svg diff --git a/client/src/static/icons/duotone/lightbulb-dollar.svg b/src/static/icons/duotone/lightbulb-dollar.svg similarity index 100% rename from client/src/static/icons/duotone/lightbulb-dollar.svg rename to src/static/icons/duotone/lightbulb-dollar.svg diff --git a/client/src/static/icons/duotone/lightbulb-exclamation.svg b/src/static/icons/duotone/lightbulb-exclamation.svg similarity index 100% rename from client/src/static/icons/duotone/lightbulb-exclamation.svg rename to src/static/icons/duotone/lightbulb-exclamation.svg diff --git a/client/src/static/icons/duotone/lightbulb-on.svg b/src/static/icons/duotone/lightbulb-on.svg similarity index 100% rename from client/src/static/icons/duotone/lightbulb-on.svg rename to src/static/icons/duotone/lightbulb-on.svg diff --git a/client/src/static/icons/duotone/lightbulb-slash.svg b/src/static/icons/duotone/lightbulb-slash.svg similarity index 100% rename from client/src/static/icons/duotone/lightbulb-slash.svg rename to src/static/icons/duotone/lightbulb-slash.svg diff --git a/client/src/static/icons/duotone/lightbulb.svg b/src/static/icons/duotone/lightbulb.svg similarity index 100% rename from client/src/static/icons/duotone/lightbulb.svg rename to src/static/icons/duotone/lightbulb.svg diff --git a/client/src/static/icons/duotone/lights-holiday.svg b/src/static/icons/duotone/lights-holiday.svg similarity index 100% rename from client/src/static/icons/duotone/lights-holiday.svg rename to src/static/icons/duotone/lights-holiday.svg diff --git a/client/src/static/icons/duotone/line-columns.svg b/src/static/icons/duotone/line-columns.svg similarity index 100% rename from client/src/static/icons/duotone/line-columns.svg rename to src/static/icons/duotone/line-columns.svg diff --git a/client/src/static/icons/duotone/line-height.svg b/src/static/icons/duotone/line-height.svg similarity index 100% rename from client/src/static/icons/duotone/line-height.svg rename to src/static/icons/duotone/line-height.svg diff --git a/client/src/static/icons/duotone/link.svg b/src/static/icons/duotone/link.svg similarity index 100% rename from client/src/static/icons/duotone/link.svg rename to src/static/icons/duotone/link.svg diff --git a/client/src/static/icons/duotone/lips.svg b/src/static/icons/duotone/lips.svg similarity index 100% rename from client/src/static/icons/duotone/lips.svg rename to src/static/icons/duotone/lips.svg diff --git a/client/src/static/icons/duotone/lira-sign.svg b/src/static/icons/duotone/lira-sign.svg similarity index 100% rename from client/src/static/icons/duotone/lira-sign.svg rename to src/static/icons/duotone/lira-sign.svg diff --git a/client/src/static/icons/duotone/list-alt.svg b/src/static/icons/duotone/list-alt.svg similarity index 100% rename from client/src/static/icons/duotone/list-alt.svg rename to src/static/icons/duotone/list-alt.svg diff --git a/client/src/static/icons/duotone/list-music.svg b/src/static/icons/duotone/list-music.svg similarity index 100% rename from client/src/static/icons/duotone/list-music.svg rename to src/static/icons/duotone/list-music.svg diff --git a/client/src/static/icons/duotone/list-ol.svg b/src/static/icons/duotone/list-ol.svg similarity index 100% rename from client/src/static/icons/duotone/list-ol.svg rename to src/static/icons/duotone/list-ol.svg diff --git a/client/src/static/icons/duotone/list-ul.svg b/src/static/icons/duotone/list-ul.svg similarity index 100% rename from client/src/static/icons/duotone/list-ul.svg rename to src/static/icons/duotone/list-ul.svg diff --git a/client/src/static/icons/duotone/list.svg b/src/static/icons/duotone/list.svg similarity index 100% rename from client/src/static/icons/duotone/list.svg rename to src/static/icons/duotone/list.svg diff --git a/client/src/static/icons/duotone/location-arrow.svg b/src/static/icons/duotone/location-arrow.svg similarity index 100% rename from client/src/static/icons/duotone/location-arrow.svg rename to src/static/icons/duotone/location-arrow.svg diff --git a/client/src/static/icons/duotone/location-circle.svg b/src/static/icons/duotone/location-circle.svg similarity index 100% rename from client/src/static/icons/duotone/location-circle.svg rename to src/static/icons/duotone/location-circle.svg diff --git a/client/src/static/icons/duotone/location-slash.svg b/src/static/icons/duotone/location-slash.svg similarity index 100% rename from client/src/static/icons/duotone/location-slash.svg rename to src/static/icons/duotone/location-slash.svg diff --git a/client/src/static/icons/duotone/location.svg b/src/static/icons/duotone/location.svg similarity index 100% rename from client/src/static/icons/duotone/location.svg rename to src/static/icons/duotone/location.svg diff --git a/client/src/static/icons/duotone/lock-alt.svg b/src/static/icons/duotone/lock-alt.svg similarity index 100% rename from client/src/static/icons/duotone/lock-alt.svg rename to src/static/icons/duotone/lock-alt.svg diff --git a/client/src/static/icons/duotone/lock-open-alt.svg b/src/static/icons/duotone/lock-open-alt.svg similarity index 100% rename from client/src/static/icons/duotone/lock-open-alt.svg rename to src/static/icons/duotone/lock-open-alt.svg diff --git a/client/src/static/icons/duotone/lock-open.svg b/src/static/icons/duotone/lock-open.svg similarity index 100% rename from client/src/static/icons/duotone/lock-open.svg rename to src/static/icons/duotone/lock-open.svg diff --git a/client/src/static/icons/duotone/lock.svg b/src/static/icons/duotone/lock.svg similarity index 100% rename from client/src/static/icons/duotone/lock.svg rename to src/static/icons/duotone/lock.svg diff --git a/client/src/static/icons/duotone/long-arrow-alt-down.svg b/src/static/icons/duotone/long-arrow-alt-down.svg similarity index 100% rename from client/src/static/icons/duotone/long-arrow-alt-down.svg rename to src/static/icons/duotone/long-arrow-alt-down.svg diff --git a/client/src/static/icons/duotone/long-arrow-alt-left.svg b/src/static/icons/duotone/long-arrow-alt-left.svg similarity index 100% rename from client/src/static/icons/duotone/long-arrow-alt-left.svg rename to src/static/icons/duotone/long-arrow-alt-left.svg diff --git a/client/src/static/icons/duotone/long-arrow-alt-right.svg b/src/static/icons/duotone/long-arrow-alt-right.svg similarity index 100% rename from client/src/static/icons/duotone/long-arrow-alt-right.svg rename to src/static/icons/duotone/long-arrow-alt-right.svg diff --git a/client/src/static/icons/duotone/long-arrow-alt-up.svg b/src/static/icons/duotone/long-arrow-alt-up.svg similarity index 100% rename from client/src/static/icons/duotone/long-arrow-alt-up.svg rename to src/static/icons/duotone/long-arrow-alt-up.svg diff --git a/client/src/static/icons/duotone/long-arrow-down.svg b/src/static/icons/duotone/long-arrow-down.svg similarity index 100% rename from client/src/static/icons/duotone/long-arrow-down.svg rename to src/static/icons/duotone/long-arrow-down.svg diff --git a/client/src/static/icons/duotone/long-arrow-left.svg b/src/static/icons/duotone/long-arrow-left.svg similarity index 100% rename from client/src/static/icons/duotone/long-arrow-left.svg rename to src/static/icons/duotone/long-arrow-left.svg diff --git a/client/src/static/icons/duotone/long-arrow-right.svg b/src/static/icons/duotone/long-arrow-right.svg similarity index 100% rename from client/src/static/icons/duotone/long-arrow-right.svg rename to src/static/icons/duotone/long-arrow-right.svg diff --git a/client/src/static/icons/duotone/long-arrow-up.svg b/src/static/icons/duotone/long-arrow-up.svg similarity index 100% rename from client/src/static/icons/duotone/long-arrow-up.svg rename to src/static/icons/duotone/long-arrow-up.svg diff --git a/client/src/static/icons/duotone/loveseat.svg b/src/static/icons/duotone/loveseat.svg similarity index 100% rename from client/src/static/icons/duotone/loveseat.svg rename to src/static/icons/duotone/loveseat.svg diff --git a/client/src/static/icons/duotone/low-vision.svg b/src/static/icons/duotone/low-vision.svg similarity index 100% rename from client/src/static/icons/duotone/low-vision.svg rename to src/static/icons/duotone/low-vision.svg diff --git a/client/src/static/icons/duotone/luchador.svg b/src/static/icons/duotone/luchador.svg similarity index 100% rename from client/src/static/icons/duotone/luchador.svg rename to src/static/icons/duotone/luchador.svg diff --git a/client/src/static/icons/duotone/luggage-cart.svg b/src/static/icons/duotone/luggage-cart.svg similarity index 100% rename from client/src/static/icons/duotone/luggage-cart.svg rename to src/static/icons/duotone/luggage-cart.svg diff --git a/client/src/static/icons/duotone/lungs.svg b/src/static/icons/duotone/lungs.svg similarity index 100% rename from client/src/static/icons/duotone/lungs.svg rename to src/static/icons/duotone/lungs.svg diff --git a/client/src/static/icons/duotone/mace.svg b/src/static/icons/duotone/mace.svg similarity index 100% rename from client/src/static/icons/duotone/mace.svg rename to src/static/icons/duotone/mace.svg diff --git a/client/src/static/icons/duotone/magic.svg b/src/static/icons/duotone/magic.svg similarity index 100% rename from client/src/static/icons/duotone/magic.svg rename to src/static/icons/duotone/magic.svg diff --git a/client/src/static/icons/duotone/magnet.svg b/src/static/icons/duotone/magnet.svg similarity index 100% rename from client/src/static/icons/duotone/magnet.svg rename to src/static/icons/duotone/magnet.svg diff --git a/client/src/static/icons/duotone/mail-bulk.svg b/src/static/icons/duotone/mail-bulk.svg similarity index 100% rename from client/src/static/icons/duotone/mail-bulk.svg rename to src/static/icons/duotone/mail-bulk.svg diff --git a/client/src/static/icons/duotone/mailbox.svg b/src/static/icons/duotone/mailbox.svg similarity index 100% rename from client/src/static/icons/duotone/mailbox.svg rename to src/static/icons/duotone/mailbox.svg diff --git a/client/src/static/icons/duotone/male.svg b/src/static/icons/duotone/male.svg similarity index 100% rename from client/src/static/icons/duotone/male.svg rename to src/static/icons/duotone/male.svg diff --git a/client/src/static/icons/duotone/mandolin.svg b/src/static/icons/duotone/mandolin.svg similarity index 100% rename from client/src/static/icons/duotone/mandolin.svg rename to src/static/icons/duotone/mandolin.svg diff --git a/client/src/static/icons/duotone/map-marked-alt.svg b/src/static/icons/duotone/map-marked-alt.svg similarity index 100% rename from client/src/static/icons/duotone/map-marked-alt.svg rename to src/static/icons/duotone/map-marked-alt.svg diff --git a/client/src/static/icons/duotone/map-marked.svg b/src/static/icons/duotone/map-marked.svg similarity index 100% rename from client/src/static/icons/duotone/map-marked.svg rename to src/static/icons/duotone/map-marked.svg diff --git a/client/src/static/icons/duotone/map-marker-alt-slash.svg b/src/static/icons/duotone/map-marker-alt-slash.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker-alt-slash.svg rename to src/static/icons/duotone/map-marker-alt-slash.svg diff --git a/client/src/static/icons/duotone/map-marker-alt.svg b/src/static/icons/duotone/map-marker-alt.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker-alt.svg rename to src/static/icons/duotone/map-marker-alt.svg diff --git a/client/src/static/icons/duotone/map-marker-check.svg b/src/static/icons/duotone/map-marker-check.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker-check.svg rename to src/static/icons/duotone/map-marker-check.svg diff --git a/client/src/static/icons/duotone/map-marker-edit.svg b/src/static/icons/duotone/map-marker-edit.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker-edit.svg rename to src/static/icons/duotone/map-marker-edit.svg diff --git a/client/src/static/icons/duotone/map-marker-exclamation.svg b/src/static/icons/duotone/map-marker-exclamation.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker-exclamation.svg rename to src/static/icons/duotone/map-marker-exclamation.svg diff --git a/client/src/static/icons/duotone/map-marker-minus.svg b/src/static/icons/duotone/map-marker-minus.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker-minus.svg rename to src/static/icons/duotone/map-marker-minus.svg diff --git a/client/src/static/icons/duotone/map-marker-plus.svg b/src/static/icons/duotone/map-marker-plus.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker-plus.svg rename to src/static/icons/duotone/map-marker-plus.svg diff --git a/client/src/static/icons/duotone/map-marker-question.svg b/src/static/icons/duotone/map-marker-question.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker-question.svg rename to src/static/icons/duotone/map-marker-question.svg diff --git a/client/src/static/icons/duotone/map-marker-slash.svg b/src/static/icons/duotone/map-marker-slash.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker-slash.svg rename to src/static/icons/duotone/map-marker-slash.svg diff --git a/client/src/static/icons/duotone/map-marker-smile.svg b/src/static/icons/duotone/map-marker-smile.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker-smile.svg rename to src/static/icons/duotone/map-marker-smile.svg diff --git a/client/src/static/icons/duotone/map-marker-times.svg b/src/static/icons/duotone/map-marker-times.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker-times.svg rename to src/static/icons/duotone/map-marker-times.svg diff --git a/client/src/static/icons/duotone/map-marker.svg b/src/static/icons/duotone/map-marker.svg similarity index 100% rename from client/src/static/icons/duotone/map-marker.svg rename to src/static/icons/duotone/map-marker.svg diff --git a/client/src/static/icons/duotone/map-pin.svg b/src/static/icons/duotone/map-pin.svg similarity index 100% rename from client/src/static/icons/duotone/map-pin.svg rename to src/static/icons/duotone/map-pin.svg diff --git a/client/src/static/icons/duotone/map-signs.svg b/src/static/icons/duotone/map-signs.svg similarity index 100% rename from client/src/static/icons/duotone/map-signs.svg rename to src/static/icons/duotone/map-signs.svg diff --git a/client/src/static/icons/duotone/map.svg b/src/static/icons/duotone/map.svg similarity index 100% rename from client/src/static/icons/duotone/map.svg rename to src/static/icons/duotone/map.svg diff --git a/client/src/static/icons/duotone/marker.svg b/src/static/icons/duotone/marker.svg similarity index 100% rename from client/src/static/icons/duotone/marker.svg rename to src/static/icons/duotone/marker.svg diff --git a/client/src/static/icons/duotone/mars-double.svg b/src/static/icons/duotone/mars-double.svg similarity index 100% rename from client/src/static/icons/duotone/mars-double.svg rename to src/static/icons/duotone/mars-double.svg diff --git a/client/src/static/icons/duotone/mars-stroke-h.svg b/src/static/icons/duotone/mars-stroke-h.svg similarity index 100% rename from client/src/static/icons/duotone/mars-stroke-h.svg rename to src/static/icons/duotone/mars-stroke-h.svg diff --git a/client/src/static/icons/duotone/mars-stroke-v.svg b/src/static/icons/duotone/mars-stroke-v.svg similarity index 100% rename from client/src/static/icons/duotone/mars-stroke-v.svg rename to src/static/icons/duotone/mars-stroke-v.svg diff --git a/client/src/static/icons/duotone/mars-stroke.svg b/src/static/icons/duotone/mars-stroke.svg similarity index 100% rename from client/src/static/icons/duotone/mars-stroke.svg rename to src/static/icons/duotone/mars-stroke.svg diff --git a/client/src/static/icons/duotone/mars.svg b/src/static/icons/duotone/mars.svg similarity index 100% rename from client/src/static/icons/duotone/mars.svg rename to src/static/icons/duotone/mars.svg diff --git a/client/src/static/icons/duotone/mask.svg b/src/static/icons/duotone/mask.svg similarity index 100% rename from client/src/static/icons/duotone/mask.svg rename to src/static/icons/duotone/mask.svg diff --git a/client/src/static/icons/duotone/meat.svg b/src/static/icons/duotone/meat.svg similarity index 100% rename from client/src/static/icons/duotone/meat.svg rename to src/static/icons/duotone/meat.svg diff --git a/client/src/static/icons/duotone/medal.svg b/src/static/icons/duotone/medal.svg similarity index 100% rename from client/src/static/icons/duotone/medal.svg rename to src/static/icons/duotone/medal.svg diff --git a/client/src/static/icons/duotone/medkit.svg b/src/static/icons/duotone/medkit.svg similarity index 100% rename from client/src/static/icons/duotone/medkit.svg rename to src/static/icons/duotone/medkit.svg diff --git a/client/src/static/icons/duotone/megaphone.svg b/src/static/icons/duotone/megaphone.svg similarity index 100% rename from client/src/static/icons/duotone/megaphone.svg rename to src/static/icons/duotone/megaphone.svg diff --git a/client/src/static/icons/duotone/meh-blank.svg b/src/static/icons/duotone/meh-blank.svg similarity index 100% rename from client/src/static/icons/duotone/meh-blank.svg rename to src/static/icons/duotone/meh-blank.svg diff --git a/client/src/static/icons/duotone/meh-rolling-eyes.svg b/src/static/icons/duotone/meh-rolling-eyes.svg similarity index 100% rename from client/src/static/icons/duotone/meh-rolling-eyes.svg rename to src/static/icons/duotone/meh-rolling-eyes.svg diff --git a/client/src/static/icons/duotone/meh.svg b/src/static/icons/duotone/meh.svg similarity index 100% rename from client/src/static/icons/duotone/meh.svg rename to src/static/icons/duotone/meh.svg diff --git a/client/src/static/icons/duotone/memory.svg b/src/static/icons/duotone/memory.svg similarity index 100% rename from client/src/static/icons/duotone/memory.svg rename to src/static/icons/duotone/memory.svg diff --git a/client/src/static/icons/duotone/menorah.svg b/src/static/icons/duotone/menorah.svg similarity index 100% rename from client/src/static/icons/duotone/menorah.svg rename to src/static/icons/duotone/menorah.svg diff --git a/client/src/static/icons/duotone/mercury.svg b/src/static/icons/duotone/mercury.svg similarity index 100% rename from client/src/static/icons/duotone/mercury.svg rename to src/static/icons/duotone/mercury.svg diff --git a/client/src/static/icons/duotone/meteor.svg b/src/static/icons/duotone/meteor.svg similarity index 100% rename from client/src/static/icons/duotone/meteor.svg rename to src/static/icons/duotone/meteor.svg diff --git a/client/src/static/icons/duotone/microchip.svg b/src/static/icons/duotone/microchip.svg similarity index 100% rename from client/src/static/icons/duotone/microchip.svg rename to src/static/icons/duotone/microchip.svg diff --git a/client/src/static/icons/duotone/microphone-alt-slash.svg b/src/static/icons/duotone/microphone-alt-slash.svg similarity index 100% rename from client/src/static/icons/duotone/microphone-alt-slash.svg rename to src/static/icons/duotone/microphone-alt-slash.svg diff --git a/client/src/static/icons/duotone/microphone-alt.svg b/src/static/icons/duotone/microphone-alt.svg similarity index 100% rename from client/src/static/icons/duotone/microphone-alt.svg rename to src/static/icons/duotone/microphone-alt.svg diff --git a/client/src/static/icons/duotone/microphone-slash.svg b/src/static/icons/duotone/microphone-slash.svg similarity index 100% rename from client/src/static/icons/duotone/microphone-slash.svg rename to src/static/icons/duotone/microphone-slash.svg diff --git a/client/src/static/icons/duotone/microphone-stand.svg b/src/static/icons/duotone/microphone-stand.svg similarity index 100% rename from client/src/static/icons/duotone/microphone-stand.svg rename to src/static/icons/duotone/microphone-stand.svg diff --git a/client/src/static/icons/duotone/microphone.svg b/src/static/icons/duotone/microphone.svg similarity index 100% rename from client/src/static/icons/duotone/microphone.svg rename to src/static/icons/duotone/microphone.svg diff --git a/client/src/static/icons/duotone/microscope.svg b/src/static/icons/duotone/microscope.svg similarity index 100% rename from client/src/static/icons/duotone/microscope.svg rename to src/static/icons/duotone/microscope.svg diff --git a/client/src/static/icons/duotone/microwave.svg b/src/static/icons/duotone/microwave.svg similarity index 100% rename from client/src/static/icons/duotone/microwave.svg rename to src/static/icons/duotone/microwave.svg diff --git a/client/src/static/icons/duotone/mind-share.svg b/src/static/icons/duotone/mind-share.svg similarity index 100% rename from client/src/static/icons/duotone/mind-share.svg rename to src/static/icons/duotone/mind-share.svg diff --git a/client/src/static/icons/duotone/minus-circle.svg b/src/static/icons/duotone/minus-circle.svg similarity index 100% rename from client/src/static/icons/duotone/minus-circle.svg rename to src/static/icons/duotone/minus-circle.svg diff --git a/client/src/static/icons/duotone/minus-hexagon.svg b/src/static/icons/duotone/minus-hexagon.svg similarity index 100% rename from client/src/static/icons/duotone/minus-hexagon.svg rename to src/static/icons/duotone/minus-hexagon.svg diff --git a/client/src/static/icons/duotone/minus-octagon.svg b/src/static/icons/duotone/minus-octagon.svg similarity index 100% rename from client/src/static/icons/duotone/minus-octagon.svg rename to src/static/icons/duotone/minus-octagon.svg diff --git a/client/src/static/icons/duotone/minus-square.svg b/src/static/icons/duotone/minus-square.svg similarity index 100% rename from client/src/static/icons/duotone/minus-square.svg rename to src/static/icons/duotone/minus-square.svg diff --git a/client/src/static/icons/duotone/minus.svg b/src/static/icons/duotone/minus.svg similarity index 100% rename from client/src/static/icons/duotone/minus.svg rename to src/static/icons/duotone/minus.svg diff --git a/client/src/static/icons/duotone/mistletoe.svg b/src/static/icons/duotone/mistletoe.svg similarity index 100% rename from client/src/static/icons/duotone/mistletoe.svg rename to src/static/icons/duotone/mistletoe.svg diff --git a/client/src/static/icons/duotone/mitten.svg b/src/static/icons/duotone/mitten.svg similarity index 100% rename from client/src/static/icons/duotone/mitten.svg rename to src/static/icons/duotone/mitten.svg diff --git a/client/src/static/icons/duotone/mobile-alt.svg b/src/static/icons/duotone/mobile-alt.svg similarity index 100% rename from client/src/static/icons/duotone/mobile-alt.svg rename to src/static/icons/duotone/mobile-alt.svg diff --git a/client/src/static/icons/duotone/mobile-android-alt.svg b/src/static/icons/duotone/mobile-android-alt.svg similarity index 100% rename from client/src/static/icons/duotone/mobile-android-alt.svg rename to src/static/icons/duotone/mobile-android-alt.svg diff --git a/client/src/static/icons/duotone/mobile-android.svg b/src/static/icons/duotone/mobile-android.svg similarity index 100% rename from client/src/static/icons/duotone/mobile-android.svg rename to src/static/icons/duotone/mobile-android.svg diff --git a/client/src/static/icons/duotone/mobile.svg b/src/static/icons/duotone/mobile.svg similarity index 100% rename from client/src/static/icons/duotone/mobile.svg rename to src/static/icons/duotone/mobile.svg diff --git a/client/src/static/icons/duotone/money-bill-alt.svg b/src/static/icons/duotone/money-bill-alt.svg similarity index 100% rename from client/src/static/icons/duotone/money-bill-alt.svg rename to src/static/icons/duotone/money-bill-alt.svg diff --git a/client/src/static/icons/duotone/money-bill-wave-alt.svg b/src/static/icons/duotone/money-bill-wave-alt.svg similarity index 100% rename from client/src/static/icons/duotone/money-bill-wave-alt.svg rename to src/static/icons/duotone/money-bill-wave-alt.svg diff --git a/client/src/static/icons/duotone/money-bill-wave.svg b/src/static/icons/duotone/money-bill-wave.svg similarity index 100% rename from client/src/static/icons/duotone/money-bill-wave.svg rename to src/static/icons/duotone/money-bill-wave.svg diff --git a/client/src/static/icons/duotone/money-bill.svg b/src/static/icons/duotone/money-bill.svg similarity index 100% rename from client/src/static/icons/duotone/money-bill.svg rename to src/static/icons/duotone/money-bill.svg diff --git a/client/src/static/icons/duotone/money-check-alt.svg b/src/static/icons/duotone/money-check-alt.svg similarity index 100% rename from client/src/static/icons/duotone/money-check-alt.svg rename to src/static/icons/duotone/money-check-alt.svg diff --git a/client/src/static/icons/duotone/money-check-edit-alt.svg b/src/static/icons/duotone/money-check-edit-alt.svg similarity index 100% rename from client/src/static/icons/duotone/money-check-edit-alt.svg rename to src/static/icons/duotone/money-check-edit-alt.svg diff --git a/client/src/static/icons/duotone/money-check-edit.svg b/src/static/icons/duotone/money-check-edit.svg similarity index 100% rename from client/src/static/icons/duotone/money-check-edit.svg rename to src/static/icons/duotone/money-check-edit.svg diff --git a/client/src/static/icons/duotone/money-check.svg b/src/static/icons/duotone/money-check.svg similarity index 100% rename from client/src/static/icons/duotone/money-check.svg rename to src/static/icons/duotone/money-check.svg diff --git a/client/src/static/icons/duotone/monitor-heart-rate.svg b/src/static/icons/duotone/monitor-heart-rate.svg similarity index 100% rename from client/src/static/icons/duotone/monitor-heart-rate.svg rename to src/static/icons/duotone/monitor-heart-rate.svg diff --git a/client/src/static/icons/duotone/monkey.svg b/src/static/icons/duotone/monkey.svg similarity index 100% rename from client/src/static/icons/duotone/monkey.svg rename to src/static/icons/duotone/monkey.svg diff --git a/client/src/static/icons/duotone/monument.svg b/src/static/icons/duotone/monument.svg similarity index 100% rename from client/src/static/icons/duotone/monument.svg rename to src/static/icons/duotone/monument.svg diff --git a/client/src/static/icons/duotone/moon-cloud.svg b/src/static/icons/duotone/moon-cloud.svg similarity index 100% rename from client/src/static/icons/duotone/moon-cloud.svg rename to src/static/icons/duotone/moon-cloud.svg diff --git a/client/src/static/icons/duotone/moon-stars.svg b/src/static/icons/duotone/moon-stars.svg similarity index 100% rename from client/src/static/icons/duotone/moon-stars.svg rename to src/static/icons/duotone/moon-stars.svg diff --git a/client/src/static/icons/duotone/moon.svg b/src/static/icons/duotone/moon.svg similarity index 100% rename from client/src/static/icons/duotone/moon.svg rename to src/static/icons/duotone/moon.svg diff --git a/client/src/static/icons/duotone/mortar-pestle.svg b/src/static/icons/duotone/mortar-pestle.svg similarity index 100% rename from client/src/static/icons/duotone/mortar-pestle.svg rename to src/static/icons/duotone/mortar-pestle.svg diff --git a/client/src/static/icons/duotone/mosque.svg b/src/static/icons/duotone/mosque.svg similarity index 100% rename from client/src/static/icons/duotone/mosque.svg rename to src/static/icons/duotone/mosque.svg diff --git a/client/src/static/icons/duotone/motorcycle.svg b/src/static/icons/duotone/motorcycle.svg similarity index 100% rename from client/src/static/icons/duotone/motorcycle.svg rename to src/static/icons/duotone/motorcycle.svg diff --git a/client/src/static/icons/duotone/mountain.svg b/src/static/icons/duotone/mountain.svg similarity index 100% rename from client/src/static/icons/duotone/mountain.svg rename to src/static/icons/duotone/mountain.svg diff --git a/client/src/static/icons/duotone/mountains.svg b/src/static/icons/duotone/mountains.svg similarity index 100% rename from client/src/static/icons/duotone/mountains.svg rename to src/static/icons/duotone/mountains.svg diff --git a/client/src/static/icons/duotone/mouse-alt.svg b/src/static/icons/duotone/mouse-alt.svg similarity index 100% rename from client/src/static/icons/duotone/mouse-alt.svg rename to src/static/icons/duotone/mouse-alt.svg diff --git a/client/src/static/icons/duotone/mouse-pointer.svg b/src/static/icons/duotone/mouse-pointer.svg similarity index 100% rename from client/src/static/icons/duotone/mouse-pointer.svg rename to src/static/icons/duotone/mouse-pointer.svg diff --git a/client/src/static/icons/duotone/mouse.svg b/src/static/icons/duotone/mouse.svg similarity index 100% rename from client/src/static/icons/duotone/mouse.svg rename to src/static/icons/duotone/mouse.svg diff --git a/client/src/static/icons/duotone/mp3-player.svg b/src/static/icons/duotone/mp3-player.svg similarity index 100% rename from client/src/static/icons/duotone/mp3-player.svg rename to src/static/icons/duotone/mp3-player.svg diff --git a/client/src/static/icons/duotone/mug-hot.svg b/src/static/icons/duotone/mug-hot.svg similarity index 100% rename from client/src/static/icons/duotone/mug-hot.svg rename to src/static/icons/duotone/mug-hot.svg diff --git a/client/src/static/icons/duotone/mug-marshmallows.svg b/src/static/icons/duotone/mug-marshmallows.svg similarity index 100% rename from client/src/static/icons/duotone/mug-marshmallows.svg rename to src/static/icons/duotone/mug-marshmallows.svg diff --git a/client/src/static/icons/duotone/mug-tea.svg b/src/static/icons/duotone/mug-tea.svg similarity index 100% rename from client/src/static/icons/duotone/mug-tea.svg rename to src/static/icons/duotone/mug-tea.svg diff --git a/client/src/static/icons/duotone/mug.svg b/src/static/icons/duotone/mug.svg similarity index 100% rename from client/src/static/icons/duotone/mug.svg rename to src/static/icons/duotone/mug.svg diff --git a/client/src/static/icons/duotone/music-alt-slash.svg b/src/static/icons/duotone/music-alt-slash.svg similarity index 100% rename from client/src/static/icons/duotone/music-alt-slash.svg rename to src/static/icons/duotone/music-alt-slash.svg diff --git a/client/src/static/icons/duotone/music-alt.svg b/src/static/icons/duotone/music-alt.svg similarity index 100% rename from client/src/static/icons/duotone/music-alt.svg rename to src/static/icons/duotone/music-alt.svg diff --git a/client/src/static/icons/duotone/music-slash.svg b/src/static/icons/duotone/music-slash.svg similarity index 100% rename from client/src/static/icons/duotone/music-slash.svg rename to src/static/icons/duotone/music-slash.svg diff --git a/client/src/static/icons/duotone/music.svg b/src/static/icons/duotone/music.svg similarity index 100% rename from client/src/static/icons/duotone/music.svg rename to src/static/icons/duotone/music.svg diff --git a/client/src/static/icons/duotone/narwhal.svg b/src/static/icons/duotone/narwhal.svg similarity index 100% rename from client/src/static/icons/duotone/narwhal.svg rename to src/static/icons/duotone/narwhal.svg diff --git a/client/src/static/icons/duotone/network-wired.svg b/src/static/icons/duotone/network-wired.svg similarity index 100% rename from client/src/static/icons/duotone/network-wired.svg rename to src/static/icons/duotone/network-wired.svg diff --git a/client/src/static/icons/duotone/neuter.svg b/src/static/icons/duotone/neuter.svg similarity index 100% rename from client/src/static/icons/duotone/neuter.svg rename to src/static/icons/duotone/neuter.svg diff --git a/client/src/static/icons/duotone/newspaper.svg b/src/static/icons/duotone/newspaper.svg similarity index 100% rename from client/src/static/icons/duotone/newspaper.svg rename to src/static/icons/duotone/newspaper.svg diff --git a/client/src/static/icons/duotone/not-equal.svg b/src/static/icons/duotone/not-equal.svg similarity index 100% rename from client/src/static/icons/duotone/not-equal.svg rename to src/static/icons/duotone/not-equal.svg diff --git a/client/src/static/icons/duotone/notes-medical.svg b/src/static/icons/duotone/notes-medical.svg similarity index 100% rename from client/src/static/icons/duotone/notes-medical.svg rename to src/static/icons/duotone/notes-medical.svg diff --git a/client/src/static/icons/duotone/object-group.svg b/src/static/icons/duotone/object-group.svg similarity index 100% rename from client/src/static/icons/duotone/object-group.svg rename to src/static/icons/duotone/object-group.svg diff --git a/client/src/static/icons/duotone/object-ungroup.svg b/src/static/icons/duotone/object-ungroup.svg similarity index 100% rename from client/src/static/icons/duotone/object-ungroup.svg rename to src/static/icons/duotone/object-ungroup.svg diff --git a/client/src/static/icons/duotone/octagon.svg b/src/static/icons/duotone/octagon.svg similarity index 100% rename from client/src/static/icons/duotone/octagon.svg rename to src/static/icons/duotone/octagon.svg diff --git a/client/src/static/icons/duotone/oil-can.svg b/src/static/icons/duotone/oil-can.svg similarity index 100% rename from client/src/static/icons/duotone/oil-can.svg rename to src/static/icons/duotone/oil-can.svg diff --git a/client/src/static/icons/duotone/oil-temp.svg b/src/static/icons/duotone/oil-temp.svg similarity index 100% rename from client/src/static/icons/duotone/oil-temp.svg rename to src/static/icons/duotone/oil-temp.svg diff --git a/client/src/static/icons/duotone/om.svg b/src/static/icons/duotone/om.svg similarity index 100% rename from client/src/static/icons/duotone/om.svg rename to src/static/icons/duotone/om.svg diff --git a/client/src/static/icons/duotone/omega.svg b/src/static/icons/duotone/omega.svg similarity index 100% rename from client/src/static/icons/duotone/omega.svg rename to src/static/icons/duotone/omega.svg diff --git a/client/src/static/icons/duotone/ornament.svg b/src/static/icons/duotone/ornament.svg similarity index 100% rename from client/src/static/icons/duotone/ornament.svg rename to src/static/icons/duotone/ornament.svg diff --git a/client/src/static/icons/duotone/otter.svg b/src/static/icons/duotone/otter.svg similarity index 100% rename from client/src/static/icons/duotone/otter.svg rename to src/static/icons/duotone/otter.svg diff --git a/client/src/static/icons/duotone/outdent.svg b/src/static/icons/duotone/outdent.svg similarity index 100% rename from client/src/static/icons/duotone/outdent.svg rename to src/static/icons/duotone/outdent.svg diff --git a/client/src/static/icons/duotone/outlet.svg b/src/static/icons/duotone/outlet.svg similarity index 100% rename from client/src/static/icons/duotone/outlet.svg rename to src/static/icons/duotone/outlet.svg diff --git a/client/src/static/icons/duotone/oven.svg b/src/static/icons/duotone/oven.svg similarity index 100% rename from client/src/static/icons/duotone/oven.svg rename to src/static/icons/duotone/oven.svg diff --git a/client/src/static/icons/duotone/overline.svg b/src/static/icons/duotone/overline.svg similarity index 100% rename from client/src/static/icons/duotone/overline.svg rename to src/static/icons/duotone/overline.svg diff --git a/client/src/static/icons/duotone/page-break.svg b/src/static/icons/duotone/page-break.svg similarity index 100% rename from client/src/static/icons/duotone/page-break.svg rename to src/static/icons/duotone/page-break.svg diff --git a/client/src/static/icons/duotone/pager.svg b/src/static/icons/duotone/pager.svg similarity index 100% rename from client/src/static/icons/duotone/pager.svg rename to src/static/icons/duotone/pager.svg diff --git a/client/src/static/icons/duotone/paint-brush-alt.svg b/src/static/icons/duotone/paint-brush-alt.svg similarity index 100% rename from client/src/static/icons/duotone/paint-brush-alt.svg rename to src/static/icons/duotone/paint-brush-alt.svg diff --git a/client/src/static/icons/duotone/paint-brush.svg b/src/static/icons/duotone/paint-brush.svg similarity index 100% rename from client/src/static/icons/duotone/paint-brush.svg rename to src/static/icons/duotone/paint-brush.svg diff --git a/client/src/static/icons/duotone/paint-roller.svg b/src/static/icons/duotone/paint-roller.svg similarity index 100% rename from client/src/static/icons/duotone/paint-roller.svg rename to src/static/icons/duotone/paint-roller.svg diff --git a/client/src/static/icons/duotone/palette.svg b/src/static/icons/duotone/palette.svg similarity index 100% rename from client/src/static/icons/duotone/palette.svg rename to src/static/icons/duotone/palette.svg diff --git a/client/src/static/icons/duotone/pallet-alt.svg b/src/static/icons/duotone/pallet-alt.svg similarity index 100% rename from client/src/static/icons/duotone/pallet-alt.svg rename to src/static/icons/duotone/pallet-alt.svg diff --git a/client/src/static/icons/duotone/pallet.svg b/src/static/icons/duotone/pallet.svg similarity index 100% rename from client/src/static/icons/duotone/pallet.svg rename to src/static/icons/duotone/pallet.svg diff --git a/client/src/static/icons/duotone/paper-plane.svg b/src/static/icons/duotone/paper-plane.svg similarity index 100% rename from client/src/static/icons/duotone/paper-plane.svg rename to src/static/icons/duotone/paper-plane.svg diff --git a/client/src/static/icons/duotone/paperclip.svg b/src/static/icons/duotone/paperclip.svg similarity index 100% rename from client/src/static/icons/duotone/paperclip.svg rename to src/static/icons/duotone/paperclip.svg diff --git a/client/src/static/icons/duotone/parachute-box.svg b/src/static/icons/duotone/parachute-box.svg similarity index 100% rename from client/src/static/icons/duotone/parachute-box.svg rename to src/static/icons/duotone/parachute-box.svg diff --git a/client/src/static/icons/duotone/paragraph-rtl.svg b/src/static/icons/duotone/paragraph-rtl.svg similarity index 100% rename from client/src/static/icons/duotone/paragraph-rtl.svg rename to src/static/icons/duotone/paragraph-rtl.svg diff --git a/client/src/static/icons/duotone/paragraph.svg b/src/static/icons/duotone/paragraph.svg similarity index 100% rename from client/src/static/icons/duotone/paragraph.svg rename to src/static/icons/duotone/paragraph.svg diff --git a/client/src/static/icons/duotone/parking-circle-slash.svg b/src/static/icons/duotone/parking-circle-slash.svg similarity index 100% rename from client/src/static/icons/duotone/parking-circle-slash.svg rename to src/static/icons/duotone/parking-circle-slash.svg diff --git a/client/src/static/icons/duotone/parking-circle.svg b/src/static/icons/duotone/parking-circle.svg similarity index 100% rename from client/src/static/icons/duotone/parking-circle.svg rename to src/static/icons/duotone/parking-circle.svg diff --git a/client/src/static/icons/duotone/parking-slash.svg b/src/static/icons/duotone/parking-slash.svg similarity index 100% rename from client/src/static/icons/duotone/parking-slash.svg rename to src/static/icons/duotone/parking-slash.svg diff --git a/client/src/static/icons/duotone/parking.svg b/src/static/icons/duotone/parking.svg similarity index 100% rename from client/src/static/icons/duotone/parking.svg rename to src/static/icons/duotone/parking.svg diff --git a/client/src/static/icons/duotone/passport.svg b/src/static/icons/duotone/passport.svg similarity index 100% rename from client/src/static/icons/duotone/passport.svg rename to src/static/icons/duotone/passport.svg diff --git a/client/src/static/icons/duotone/pastafarianism.svg b/src/static/icons/duotone/pastafarianism.svg similarity index 100% rename from client/src/static/icons/duotone/pastafarianism.svg rename to src/static/icons/duotone/pastafarianism.svg diff --git a/client/src/static/icons/duotone/paste.svg b/src/static/icons/duotone/paste.svg similarity index 100% rename from client/src/static/icons/duotone/paste.svg rename to src/static/icons/duotone/paste.svg diff --git a/client/src/static/icons/duotone/pause-circle.svg b/src/static/icons/duotone/pause-circle.svg similarity index 100% rename from client/src/static/icons/duotone/pause-circle.svg rename to src/static/icons/duotone/pause-circle.svg diff --git a/client/src/static/icons/duotone/pause.svg b/src/static/icons/duotone/pause.svg similarity index 100% rename from client/src/static/icons/duotone/pause.svg rename to src/static/icons/duotone/pause.svg diff --git a/client/src/static/icons/duotone/paw-alt.svg b/src/static/icons/duotone/paw-alt.svg similarity index 100% rename from client/src/static/icons/duotone/paw-alt.svg rename to src/static/icons/duotone/paw-alt.svg diff --git a/client/src/static/icons/duotone/paw-claws.svg b/src/static/icons/duotone/paw-claws.svg similarity index 100% rename from client/src/static/icons/duotone/paw-claws.svg rename to src/static/icons/duotone/paw-claws.svg diff --git a/client/src/static/icons/duotone/paw.svg b/src/static/icons/duotone/paw.svg similarity index 100% rename from client/src/static/icons/duotone/paw.svg rename to src/static/icons/duotone/paw.svg diff --git a/client/src/static/icons/duotone/peace.svg b/src/static/icons/duotone/peace.svg similarity index 100% rename from client/src/static/icons/duotone/peace.svg rename to src/static/icons/duotone/peace.svg diff --git a/client/src/static/icons/duotone/pegasus.svg b/src/static/icons/duotone/pegasus.svg similarity index 100% rename from client/src/static/icons/duotone/pegasus.svg rename to src/static/icons/duotone/pegasus.svg diff --git a/client/src/static/icons/duotone/pen-alt.svg b/src/static/icons/duotone/pen-alt.svg similarity index 100% rename from client/src/static/icons/duotone/pen-alt.svg rename to src/static/icons/duotone/pen-alt.svg diff --git a/client/src/static/icons/duotone/pen-fancy.svg b/src/static/icons/duotone/pen-fancy.svg similarity index 100% rename from client/src/static/icons/duotone/pen-fancy.svg rename to src/static/icons/duotone/pen-fancy.svg diff --git a/client/src/static/icons/duotone/pen-nib.svg b/src/static/icons/duotone/pen-nib.svg similarity index 100% rename from client/src/static/icons/duotone/pen-nib.svg rename to src/static/icons/duotone/pen-nib.svg diff --git a/client/src/static/icons/duotone/pen-square.svg b/src/static/icons/duotone/pen-square.svg similarity index 100% rename from client/src/static/icons/duotone/pen-square.svg rename to src/static/icons/duotone/pen-square.svg diff --git a/client/src/static/icons/duotone/pen.svg b/src/static/icons/duotone/pen.svg similarity index 100% rename from client/src/static/icons/duotone/pen.svg rename to src/static/icons/duotone/pen.svg diff --git a/client/src/static/icons/duotone/pencil-alt.svg b/src/static/icons/duotone/pencil-alt.svg similarity index 100% rename from client/src/static/icons/duotone/pencil-alt.svg rename to src/static/icons/duotone/pencil-alt.svg diff --git a/client/src/static/icons/duotone/pencil-paintbrush.svg b/src/static/icons/duotone/pencil-paintbrush.svg similarity index 100% rename from client/src/static/icons/duotone/pencil-paintbrush.svg rename to src/static/icons/duotone/pencil-paintbrush.svg diff --git a/client/src/static/icons/duotone/pencil-ruler.svg b/src/static/icons/duotone/pencil-ruler.svg similarity index 100% rename from client/src/static/icons/duotone/pencil-ruler.svg rename to src/static/icons/duotone/pencil-ruler.svg diff --git a/client/src/static/icons/duotone/pencil.svg b/src/static/icons/duotone/pencil.svg similarity index 100% rename from client/src/static/icons/duotone/pencil.svg rename to src/static/icons/duotone/pencil.svg diff --git a/client/src/static/icons/duotone/pennant.svg b/src/static/icons/duotone/pennant.svg similarity index 100% rename from client/src/static/icons/duotone/pennant.svg rename to src/static/icons/duotone/pennant.svg diff --git a/client/src/static/icons/duotone/people-carry.svg b/src/static/icons/duotone/people-carry.svg similarity index 100% rename from client/src/static/icons/duotone/people-carry.svg rename to src/static/icons/duotone/people-carry.svg diff --git a/client/src/static/icons/duotone/pepper-hot.svg b/src/static/icons/duotone/pepper-hot.svg similarity index 100% rename from client/src/static/icons/duotone/pepper-hot.svg rename to src/static/icons/duotone/pepper-hot.svg diff --git a/client/src/static/icons/duotone/percent.svg b/src/static/icons/duotone/percent.svg similarity index 100% rename from client/src/static/icons/duotone/percent.svg rename to src/static/icons/duotone/percent.svg diff --git a/client/src/static/icons/duotone/percentage.svg b/src/static/icons/duotone/percentage.svg similarity index 100% rename from client/src/static/icons/duotone/percentage.svg rename to src/static/icons/duotone/percentage.svg diff --git a/client/src/static/icons/duotone/person-booth.svg b/src/static/icons/duotone/person-booth.svg similarity index 100% rename from client/src/static/icons/duotone/person-booth.svg rename to src/static/icons/duotone/person-booth.svg diff --git a/client/src/static/icons/duotone/person-carry.svg b/src/static/icons/duotone/person-carry.svg similarity index 100% rename from client/src/static/icons/duotone/person-carry.svg rename to src/static/icons/duotone/person-carry.svg diff --git a/client/src/static/icons/duotone/person-dolly-empty.svg b/src/static/icons/duotone/person-dolly-empty.svg similarity index 100% rename from client/src/static/icons/duotone/person-dolly-empty.svg rename to src/static/icons/duotone/person-dolly-empty.svg diff --git a/client/src/static/icons/duotone/person-dolly.svg b/src/static/icons/duotone/person-dolly.svg similarity index 100% rename from client/src/static/icons/duotone/person-dolly.svg rename to src/static/icons/duotone/person-dolly.svg diff --git a/client/src/static/icons/duotone/person-sign.svg b/src/static/icons/duotone/person-sign.svg similarity index 100% rename from client/src/static/icons/duotone/person-sign.svg rename to src/static/icons/duotone/person-sign.svg diff --git a/client/src/static/icons/duotone/phone-alt.svg b/src/static/icons/duotone/phone-alt.svg similarity index 100% rename from client/src/static/icons/duotone/phone-alt.svg rename to src/static/icons/duotone/phone-alt.svg diff --git a/client/src/static/icons/duotone/phone-laptop.svg b/src/static/icons/duotone/phone-laptop.svg similarity index 100% rename from client/src/static/icons/duotone/phone-laptop.svg rename to src/static/icons/duotone/phone-laptop.svg diff --git a/client/src/static/icons/duotone/phone-office.svg b/src/static/icons/duotone/phone-office.svg similarity index 100% rename from client/src/static/icons/duotone/phone-office.svg rename to src/static/icons/duotone/phone-office.svg diff --git a/client/src/static/icons/duotone/phone-plus.svg b/src/static/icons/duotone/phone-plus.svg similarity index 100% rename from client/src/static/icons/duotone/phone-plus.svg rename to src/static/icons/duotone/phone-plus.svg diff --git a/client/src/static/icons/duotone/phone-rotary.svg b/src/static/icons/duotone/phone-rotary.svg similarity index 100% rename from client/src/static/icons/duotone/phone-rotary.svg rename to src/static/icons/duotone/phone-rotary.svg diff --git a/client/src/static/icons/duotone/phone-slash.svg b/src/static/icons/duotone/phone-slash.svg similarity index 100% rename from client/src/static/icons/duotone/phone-slash.svg rename to src/static/icons/duotone/phone-slash.svg diff --git a/client/src/static/icons/duotone/phone-square-alt.svg b/src/static/icons/duotone/phone-square-alt.svg similarity index 100% rename from client/src/static/icons/duotone/phone-square-alt.svg rename to src/static/icons/duotone/phone-square-alt.svg diff --git a/client/src/static/icons/duotone/phone-square.svg b/src/static/icons/duotone/phone-square.svg similarity index 100% rename from client/src/static/icons/duotone/phone-square.svg rename to src/static/icons/duotone/phone-square.svg diff --git a/client/src/static/icons/duotone/phone-volume.svg b/src/static/icons/duotone/phone-volume.svg similarity index 100% rename from client/src/static/icons/duotone/phone-volume.svg rename to src/static/icons/duotone/phone-volume.svg diff --git a/client/src/static/icons/duotone/phone.svg b/src/static/icons/duotone/phone.svg similarity index 100% rename from client/src/static/icons/duotone/phone.svg rename to src/static/icons/duotone/phone.svg diff --git a/client/src/static/icons/duotone/photo-video.svg b/src/static/icons/duotone/photo-video.svg similarity index 100% rename from client/src/static/icons/duotone/photo-video.svg rename to src/static/icons/duotone/photo-video.svg diff --git a/client/src/static/icons/duotone/pi.svg b/src/static/icons/duotone/pi.svg similarity index 100% rename from client/src/static/icons/duotone/pi.svg rename to src/static/icons/duotone/pi.svg diff --git a/client/src/static/icons/duotone/piano-keyboard.svg b/src/static/icons/duotone/piano-keyboard.svg similarity index 100% rename from client/src/static/icons/duotone/piano-keyboard.svg rename to src/static/icons/duotone/piano-keyboard.svg diff --git a/client/src/static/icons/duotone/piano.svg b/src/static/icons/duotone/piano.svg similarity index 100% rename from client/src/static/icons/duotone/piano.svg rename to src/static/icons/duotone/piano.svg diff --git a/client/src/static/icons/duotone/pie.svg b/src/static/icons/duotone/pie.svg similarity index 100% rename from client/src/static/icons/duotone/pie.svg rename to src/static/icons/duotone/pie.svg diff --git a/client/src/static/icons/duotone/pig.svg b/src/static/icons/duotone/pig.svg similarity index 100% rename from client/src/static/icons/duotone/pig.svg rename to src/static/icons/duotone/pig.svg diff --git a/client/src/static/icons/duotone/piggy-bank.svg b/src/static/icons/duotone/piggy-bank.svg similarity index 100% rename from client/src/static/icons/duotone/piggy-bank.svg rename to src/static/icons/duotone/piggy-bank.svg diff --git a/client/src/static/icons/duotone/pills.svg b/src/static/icons/duotone/pills.svg similarity index 100% rename from client/src/static/icons/duotone/pills.svg rename to src/static/icons/duotone/pills.svg diff --git a/client/src/static/icons/duotone/pizza-slice.svg b/src/static/icons/duotone/pizza-slice.svg similarity index 100% rename from client/src/static/icons/duotone/pizza-slice.svg rename to src/static/icons/duotone/pizza-slice.svg diff --git a/client/src/static/icons/duotone/pizza.svg b/src/static/icons/duotone/pizza.svg similarity index 100% rename from client/src/static/icons/duotone/pizza.svg rename to src/static/icons/duotone/pizza.svg diff --git a/client/src/static/icons/duotone/place-of-worship.svg b/src/static/icons/duotone/place-of-worship.svg similarity index 100% rename from client/src/static/icons/duotone/place-of-worship.svg rename to src/static/icons/duotone/place-of-worship.svg diff --git a/client/src/static/icons/duotone/plane-alt.svg b/src/static/icons/duotone/plane-alt.svg similarity index 100% rename from client/src/static/icons/duotone/plane-alt.svg rename to src/static/icons/duotone/plane-alt.svg diff --git a/client/src/static/icons/duotone/plane-arrival.svg b/src/static/icons/duotone/plane-arrival.svg similarity index 100% rename from client/src/static/icons/duotone/plane-arrival.svg rename to src/static/icons/duotone/plane-arrival.svg diff --git a/client/src/static/icons/duotone/plane-departure.svg b/src/static/icons/duotone/plane-departure.svg similarity index 100% rename from client/src/static/icons/duotone/plane-departure.svg rename to src/static/icons/duotone/plane-departure.svg diff --git a/client/src/static/icons/duotone/plane.svg b/src/static/icons/duotone/plane.svg similarity index 100% rename from client/src/static/icons/duotone/plane.svg rename to src/static/icons/duotone/plane.svg diff --git a/client/src/static/icons/duotone/planet-moon.svg b/src/static/icons/duotone/planet-moon.svg similarity index 100% rename from client/src/static/icons/duotone/planet-moon.svg rename to src/static/icons/duotone/planet-moon.svg diff --git a/client/src/static/icons/duotone/planet-ringed.svg b/src/static/icons/duotone/planet-ringed.svg similarity index 100% rename from client/src/static/icons/duotone/planet-ringed.svg rename to src/static/icons/duotone/planet-ringed.svg diff --git a/client/src/static/icons/duotone/play-circle.svg b/src/static/icons/duotone/play-circle.svg similarity index 100% rename from client/src/static/icons/duotone/play-circle.svg rename to src/static/icons/duotone/play-circle.svg diff --git a/client/src/static/icons/duotone/play.svg b/src/static/icons/duotone/play.svg similarity index 100% rename from client/src/static/icons/duotone/play.svg rename to src/static/icons/duotone/play.svg diff --git a/client/src/static/icons/duotone/plug.svg b/src/static/icons/duotone/plug.svg similarity index 100% rename from client/src/static/icons/duotone/plug.svg rename to src/static/icons/duotone/plug.svg diff --git a/client/src/static/icons/duotone/plus-circle.svg b/src/static/icons/duotone/plus-circle.svg similarity index 100% rename from client/src/static/icons/duotone/plus-circle.svg rename to src/static/icons/duotone/plus-circle.svg diff --git a/client/src/static/icons/duotone/plus-hexagon.svg b/src/static/icons/duotone/plus-hexagon.svg similarity index 100% rename from client/src/static/icons/duotone/plus-hexagon.svg rename to src/static/icons/duotone/plus-hexagon.svg diff --git a/client/src/static/icons/duotone/plus-octagon.svg b/src/static/icons/duotone/plus-octagon.svg similarity index 100% rename from client/src/static/icons/duotone/plus-octagon.svg rename to src/static/icons/duotone/plus-octagon.svg diff --git a/client/src/static/icons/duotone/plus-square.svg b/src/static/icons/duotone/plus-square.svg similarity index 100% rename from client/src/static/icons/duotone/plus-square.svg rename to src/static/icons/duotone/plus-square.svg diff --git a/client/src/static/icons/duotone/plus.svg b/src/static/icons/duotone/plus.svg similarity index 100% rename from client/src/static/icons/duotone/plus.svg rename to src/static/icons/duotone/plus.svg diff --git a/client/src/static/icons/duotone/podcast.svg b/src/static/icons/duotone/podcast.svg similarity index 100% rename from client/src/static/icons/duotone/podcast.svg rename to src/static/icons/duotone/podcast.svg diff --git a/client/src/static/icons/duotone/podium-star.svg b/src/static/icons/duotone/podium-star.svg similarity index 100% rename from client/src/static/icons/duotone/podium-star.svg rename to src/static/icons/duotone/podium-star.svg diff --git a/client/src/static/icons/duotone/podium.svg b/src/static/icons/duotone/podium.svg similarity index 100% rename from client/src/static/icons/duotone/podium.svg rename to src/static/icons/duotone/podium.svg diff --git a/client/src/static/icons/duotone/police-box.svg b/src/static/icons/duotone/police-box.svg similarity index 100% rename from client/src/static/icons/duotone/police-box.svg rename to src/static/icons/duotone/police-box.svg diff --git a/client/src/static/icons/duotone/poll-h.svg b/src/static/icons/duotone/poll-h.svg similarity index 100% rename from client/src/static/icons/duotone/poll-h.svg rename to src/static/icons/duotone/poll-h.svg diff --git a/client/src/static/icons/duotone/poll-people.svg b/src/static/icons/duotone/poll-people.svg similarity index 100% rename from client/src/static/icons/duotone/poll-people.svg rename to src/static/icons/duotone/poll-people.svg diff --git a/client/src/static/icons/duotone/poll.svg b/src/static/icons/duotone/poll.svg similarity index 100% rename from client/src/static/icons/duotone/poll.svg rename to src/static/icons/duotone/poll.svg diff --git a/client/src/static/icons/duotone/poo-storm.svg b/src/static/icons/duotone/poo-storm.svg similarity index 100% rename from client/src/static/icons/duotone/poo-storm.svg rename to src/static/icons/duotone/poo-storm.svg diff --git a/client/src/static/icons/duotone/poo.svg b/src/static/icons/duotone/poo.svg similarity index 100% rename from client/src/static/icons/duotone/poo.svg rename to src/static/icons/duotone/poo.svg diff --git a/client/src/static/icons/duotone/poop.svg b/src/static/icons/duotone/poop.svg similarity index 100% rename from client/src/static/icons/duotone/poop.svg rename to src/static/icons/duotone/poop.svg diff --git a/client/src/static/icons/duotone/popcorn.svg b/src/static/icons/duotone/popcorn.svg similarity index 100% rename from client/src/static/icons/duotone/popcorn.svg rename to src/static/icons/duotone/popcorn.svg diff --git a/client/src/static/icons/duotone/portal-enter.svg b/src/static/icons/duotone/portal-enter.svg similarity index 100% rename from client/src/static/icons/duotone/portal-enter.svg rename to src/static/icons/duotone/portal-enter.svg diff --git a/client/src/static/icons/duotone/portal-exit.svg b/src/static/icons/duotone/portal-exit.svg similarity index 100% rename from client/src/static/icons/duotone/portal-exit.svg rename to src/static/icons/duotone/portal-exit.svg diff --git a/client/src/static/icons/duotone/portrait.svg b/src/static/icons/duotone/portrait.svg similarity index 100% rename from client/src/static/icons/duotone/portrait.svg rename to src/static/icons/duotone/portrait.svg diff --git a/client/src/static/icons/duotone/pound-sign.svg b/src/static/icons/duotone/pound-sign.svg similarity index 100% rename from client/src/static/icons/duotone/pound-sign.svg rename to src/static/icons/duotone/pound-sign.svg diff --git a/client/src/static/icons/duotone/power-off.svg b/src/static/icons/duotone/power-off.svg similarity index 100% rename from client/src/static/icons/duotone/power-off.svg rename to src/static/icons/duotone/power-off.svg diff --git a/client/src/static/icons/duotone/pray.svg b/src/static/icons/duotone/pray.svg similarity index 100% rename from client/src/static/icons/duotone/pray.svg rename to src/static/icons/duotone/pray.svg diff --git a/client/src/static/icons/duotone/praying-hands.svg b/src/static/icons/duotone/praying-hands.svg similarity index 100% rename from client/src/static/icons/duotone/praying-hands.svg rename to src/static/icons/duotone/praying-hands.svg diff --git a/client/src/static/icons/duotone/prescription-bottle-alt.svg b/src/static/icons/duotone/prescription-bottle-alt.svg similarity index 100% rename from client/src/static/icons/duotone/prescription-bottle-alt.svg rename to src/static/icons/duotone/prescription-bottle-alt.svg diff --git a/client/src/static/icons/duotone/prescription-bottle.svg b/src/static/icons/duotone/prescription-bottle.svg similarity index 100% rename from client/src/static/icons/duotone/prescription-bottle.svg rename to src/static/icons/duotone/prescription-bottle.svg diff --git a/client/src/static/icons/duotone/prescription.svg b/src/static/icons/duotone/prescription.svg similarity index 100% rename from client/src/static/icons/duotone/prescription.svg rename to src/static/icons/duotone/prescription.svg diff --git a/client/src/static/icons/duotone/presentation.svg b/src/static/icons/duotone/presentation.svg similarity index 100% rename from client/src/static/icons/duotone/presentation.svg rename to src/static/icons/duotone/presentation.svg diff --git a/client/src/static/icons/duotone/print-search.svg b/src/static/icons/duotone/print-search.svg similarity index 100% rename from client/src/static/icons/duotone/print-search.svg rename to src/static/icons/duotone/print-search.svg diff --git a/client/src/static/icons/duotone/print-slash.svg b/src/static/icons/duotone/print-slash.svg similarity index 100% rename from client/src/static/icons/duotone/print-slash.svg rename to src/static/icons/duotone/print-slash.svg diff --git a/client/src/static/icons/duotone/print.svg b/src/static/icons/duotone/print.svg similarity index 100% rename from client/src/static/icons/duotone/print.svg rename to src/static/icons/duotone/print.svg diff --git a/client/src/static/icons/duotone/procedures.svg b/src/static/icons/duotone/procedures.svg similarity index 100% rename from client/src/static/icons/duotone/procedures.svg rename to src/static/icons/duotone/procedures.svg diff --git a/client/src/static/icons/duotone/project-diagram.svg b/src/static/icons/duotone/project-diagram.svg similarity index 100% rename from client/src/static/icons/duotone/project-diagram.svg rename to src/static/icons/duotone/project-diagram.svg diff --git a/client/src/static/icons/duotone/projector.svg b/src/static/icons/duotone/projector.svg similarity index 100% rename from client/src/static/icons/duotone/projector.svg rename to src/static/icons/duotone/projector.svg diff --git a/client/src/static/icons/duotone/pumpkin.svg b/src/static/icons/duotone/pumpkin.svg similarity index 100% rename from client/src/static/icons/duotone/pumpkin.svg rename to src/static/icons/duotone/pumpkin.svg diff --git a/client/src/static/icons/duotone/puzzle-piece.svg b/src/static/icons/duotone/puzzle-piece.svg similarity index 100% rename from client/src/static/icons/duotone/puzzle-piece.svg rename to src/static/icons/duotone/puzzle-piece.svg diff --git a/client/src/static/icons/duotone/qrcode.svg b/src/static/icons/duotone/qrcode.svg similarity index 100% rename from client/src/static/icons/duotone/qrcode.svg rename to src/static/icons/duotone/qrcode.svg diff --git a/client/src/static/icons/duotone/question-circle.svg b/src/static/icons/duotone/question-circle.svg similarity index 100% rename from client/src/static/icons/duotone/question-circle.svg rename to src/static/icons/duotone/question-circle.svg diff --git a/client/src/static/icons/duotone/question-square.svg b/src/static/icons/duotone/question-square.svg similarity index 100% rename from client/src/static/icons/duotone/question-square.svg rename to src/static/icons/duotone/question-square.svg diff --git a/client/src/static/icons/duotone/question.svg b/src/static/icons/duotone/question.svg similarity index 100% rename from client/src/static/icons/duotone/question.svg rename to src/static/icons/duotone/question.svg diff --git a/client/src/static/icons/duotone/quidditch.svg b/src/static/icons/duotone/quidditch.svg similarity index 100% rename from client/src/static/icons/duotone/quidditch.svg rename to src/static/icons/duotone/quidditch.svg diff --git a/client/src/static/icons/duotone/quote-left.svg b/src/static/icons/duotone/quote-left.svg similarity index 100% rename from client/src/static/icons/duotone/quote-left.svg rename to src/static/icons/duotone/quote-left.svg diff --git a/client/src/static/icons/duotone/quote-right.svg b/src/static/icons/duotone/quote-right.svg similarity index 100% rename from client/src/static/icons/duotone/quote-right.svg rename to src/static/icons/duotone/quote-right.svg diff --git a/client/src/static/icons/duotone/quran.svg b/src/static/icons/duotone/quran.svg similarity index 100% rename from client/src/static/icons/duotone/quran.svg rename to src/static/icons/duotone/quran.svg diff --git a/client/src/static/icons/duotone/rabbit-fast.svg b/src/static/icons/duotone/rabbit-fast.svg similarity index 100% rename from client/src/static/icons/duotone/rabbit-fast.svg rename to src/static/icons/duotone/rabbit-fast.svg diff --git a/client/src/static/icons/duotone/rabbit.svg b/src/static/icons/duotone/rabbit.svg similarity index 100% rename from client/src/static/icons/duotone/rabbit.svg rename to src/static/icons/duotone/rabbit.svg diff --git a/client/src/static/icons/duotone/racquet.svg b/src/static/icons/duotone/racquet.svg similarity index 100% rename from client/src/static/icons/duotone/racquet.svg rename to src/static/icons/duotone/racquet.svg diff --git a/client/src/static/icons/duotone/radar.svg b/src/static/icons/duotone/radar.svg similarity index 100% rename from client/src/static/icons/duotone/radar.svg rename to src/static/icons/duotone/radar.svg diff --git a/client/src/static/icons/duotone/radiation-alt.svg b/src/static/icons/duotone/radiation-alt.svg similarity index 100% rename from client/src/static/icons/duotone/radiation-alt.svg rename to src/static/icons/duotone/radiation-alt.svg diff --git a/client/src/static/icons/duotone/radiation.svg b/src/static/icons/duotone/radiation.svg similarity index 100% rename from client/src/static/icons/duotone/radiation.svg rename to src/static/icons/duotone/radiation.svg diff --git a/client/src/static/icons/duotone/radio-alt.svg b/src/static/icons/duotone/radio-alt.svg similarity index 100% rename from client/src/static/icons/duotone/radio-alt.svg rename to src/static/icons/duotone/radio-alt.svg diff --git a/client/src/static/icons/duotone/radio.svg b/src/static/icons/duotone/radio.svg similarity index 100% rename from client/src/static/icons/duotone/radio.svg rename to src/static/icons/duotone/radio.svg diff --git a/client/src/static/icons/duotone/rainbow.svg b/src/static/icons/duotone/rainbow.svg similarity index 100% rename from client/src/static/icons/duotone/rainbow.svg rename to src/static/icons/duotone/rainbow.svg diff --git a/client/src/static/icons/duotone/raindrops.svg b/src/static/icons/duotone/raindrops.svg similarity index 100% rename from client/src/static/icons/duotone/raindrops.svg rename to src/static/icons/duotone/raindrops.svg diff --git a/client/src/static/icons/duotone/ram.svg b/src/static/icons/duotone/ram.svg similarity index 100% rename from client/src/static/icons/duotone/ram.svg rename to src/static/icons/duotone/ram.svg diff --git a/client/src/static/icons/duotone/ramp-loading.svg b/src/static/icons/duotone/ramp-loading.svg similarity index 100% rename from client/src/static/icons/duotone/ramp-loading.svg rename to src/static/icons/duotone/ramp-loading.svg diff --git a/client/src/static/icons/duotone/random.svg b/src/static/icons/duotone/random.svg similarity index 100% rename from client/src/static/icons/duotone/random.svg rename to src/static/icons/duotone/random.svg diff --git a/client/src/static/icons/duotone/raygun.svg b/src/static/icons/duotone/raygun.svg similarity index 100% rename from client/src/static/icons/duotone/raygun.svg rename to src/static/icons/duotone/raygun.svg diff --git a/client/src/static/icons/duotone/receipt.svg b/src/static/icons/duotone/receipt.svg similarity index 100% rename from client/src/static/icons/duotone/receipt.svg rename to src/static/icons/duotone/receipt.svg diff --git a/client/src/static/icons/duotone/record-vinyl.svg b/src/static/icons/duotone/record-vinyl.svg similarity index 100% rename from client/src/static/icons/duotone/record-vinyl.svg rename to src/static/icons/duotone/record-vinyl.svg diff --git a/client/src/static/icons/duotone/rectangle-landscape.svg b/src/static/icons/duotone/rectangle-landscape.svg similarity index 100% rename from client/src/static/icons/duotone/rectangle-landscape.svg rename to src/static/icons/duotone/rectangle-landscape.svg diff --git a/client/src/static/icons/duotone/rectangle-portrait.svg b/src/static/icons/duotone/rectangle-portrait.svg similarity index 100% rename from client/src/static/icons/duotone/rectangle-portrait.svg rename to src/static/icons/duotone/rectangle-portrait.svg diff --git a/client/src/static/icons/duotone/rectangle-wide.svg b/src/static/icons/duotone/rectangle-wide.svg similarity index 100% rename from client/src/static/icons/duotone/rectangle-wide.svg rename to src/static/icons/duotone/rectangle-wide.svg diff --git a/client/src/static/icons/duotone/recycle.svg b/src/static/icons/duotone/recycle.svg similarity index 100% rename from client/src/static/icons/duotone/recycle.svg rename to src/static/icons/duotone/recycle.svg diff --git a/client/src/static/icons/duotone/redo-alt.svg b/src/static/icons/duotone/redo-alt.svg similarity index 100% rename from client/src/static/icons/duotone/redo-alt.svg rename to src/static/icons/duotone/redo-alt.svg diff --git a/client/src/static/icons/duotone/redo.svg b/src/static/icons/duotone/redo.svg similarity index 100% rename from client/src/static/icons/duotone/redo.svg rename to src/static/icons/duotone/redo.svg diff --git a/client/src/static/icons/duotone/refrigerator.svg b/src/static/icons/duotone/refrigerator.svg similarity index 100% rename from client/src/static/icons/duotone/refrigerator.svg rename to src/static/icons/duotone/refrigerator.svg diff --git a/client/src/static/icons/duotone/registered.svg b/src/static/icons/duotone/registered.svg similarity index 100% rename from client/src/static/icons/duotone/registered.svg rename to src/static/icons/duotone/registered.svg diff --git a/client/src/static/icons/duotone/remove-format.svg b/src/static/icons/duotone/remove-format.svg similarity index 100% rename from client/src/static/icons/duotone/remove-format.svg rename to src/static/icons/duotone/remove-format.svg diff --git a/client/src/static/icons/duotone/repeat-1-alt.svg b/src/static/icons/duotone/repeat-1-alt.svg similarity index 100% rename from client/src/static/icons/duotone/repeat-1-alt.svg rename to src/static/icons/duotone/repeat-1-alt.svg diff --git a/client/src/static/icons/duotone/repeat-1.svg b/src/static/icons/duotone/repeat-1.svg similarity index 100% rename from client/src/static/icons/duotone/repeat-1.svg rename to src/static/icons/duotone/repeat-1.svg diff --git a/client/src/static/icons/duotone/repeat-alt.svg b/src/static/icons/duotone/repeat-alt.svg similarity index 100% rename from client/src/static/icons/duotone/repeat-alt.svg rename to src/static/icons/duotone/repeat-alt.svg diff --git a/client/src/static/icons/duotone/repeat.svg b/src/static/icons/duotone/repeat.svg similarity index 100% rename from client/src/static/icons/duotone/repeat.svg rename to src/static/icons/duotone/repeat.svg diff --git a/client/src/static/icons/duotone/reply-all.svg b/src/static/icons/duotone/reply-all.svg similarity index 100% rename from client/src/static/icons/duotone/reply-all.svg rename to src/static/icons/duotone/reply-all.svg diff --git a/client/src/static/icons/duotone/reply.svg b/src/static/icons/duotone/reply.svg similarity index 100% rename from client/src/static/icons/duotone/reply.svg rename to src/static/icons/duotone/reply.svg diff --git a/client/src/static/icons/duotone/republican.svg b/src/static/icons/duotone/republican.svg similarity index 100% rename from client/src/static/icons/duotone/republican.svg rename to src/static/icons/duotone/republican.svg diff --git a/client/src/static/icons/duotone/restroom.svg b/src/static/icons/duotone/restroom.svg similarity index 100% rename from client/src/static/icons/duotone/restroom.svg rename to src/static/icons/duotone/restroom.svg diff --git a/client/src/static/icons/duotone/retweet-alt.svg b/src/static/icons/duotone/retweet-alt.svg similarity index 100% rename from client/src/static/icons/duotone/retweet-alt.svg rename to src/static/icons/duotone/retweet-alt.svg diff --git a/client/src/static/icons/duotone/retweet.svg b/src/static/icons/duotone/retweet.svg similarity index 100% rename from client/src/static/icons/duotone/retweet.svg rename to src/static/icons/duotone/retweet.svg diff --git a/client/src/static/icons/duotone/ribbon.svg b/src/static/icons/duotone/ribbon.svg similarity index 100% rename from client/src/static/icons/duotone/ribbon.svg rename to src/static/icons/duotone/ribbon.svg diff --git a/client/src/static/icons/duotone/ring.svg b/src/static/icons/duotone/ring.svg similarity index 100% rename from client/src/static/icons/duotone/ring.svg rename to src/static/icons/duotone/ring.svg diff --git a/client/src/static/icons/duotone/rings-wedding.svg b/src/static/icons/duotone/rings-wedding.svg similarity index 100% rename from client/src/static/icons/duotone/rings-wedding.svg rename to src/static/icons/duotone/rings-wedding.svg diff --git a/client/src/static/icons/duotone/road.svg b/src/static/icons/duotone/road.svg similarity index 100% rename from client/src/static/icons/duotone/road.svg rename to src/static/icons/duotone/road.svg diff --git a/client/src/static/icons/duotone/robot.svg b/src/static/icons/duotone/robot.svg similarity index 100% rename from client/src/static/icons/duotone/robot.svg rename to src/static/icons/duotone/robot.svg diff --git a/client/src/static/icons/duotone/rocket-launch.svg b/src/static/icons/duotone/rocket-launch.svg similarity index 100% rename from client/src/static/icons/duotone/rocket-launch.svg rename to src/static/icons/duotone/rocket-launch.svg diff --git a/client/src/static/icons/duotone/rocket.svg b/src/static/icons/duotone/rocket.svg similarity index 100% rename from client/src/static/icons/duotone/rocket.svg rename to src/static/icons/duotone/rocket.svg diff --git a/client/src/static/icons/duotone/route-highway.svg b/src/static/icons/duotone/route-highway.svg similarity index 100% rename from client/src/static/icons/duotone/route-highway.svg rename to src/static/icons/duotone/route-highway.svg diff --git a/client/src/static/icons/duotone/route-interstate.svg b/src/static/icons/duotone/route-interstate.svg similarity index 100% rename from client/src/static/icons/duotone/route-interstate.svg rename to src/static/icons/duotone/route-interstate.svg diff --git a/client/src/static/icons/duotone/route.svg b/src/static/icons/duotone/route.svg similarity index 100% rename from client/src/static/icons/duotone/route.svg rename to src/static/icons/duotone/route.svg diff --git a/client/src/static/icons/duotone/router.svg b/src/static/icons/duotone/router.svg similarity index 100% rename from client/src/static/icons/duotone/router.svg rename to src/static/icons/duotone/router.svg diff --git a/client/src/static/icons/duotone/rss-square.svg b/src/static/icons/duotone/rss-square.svg similarity index 100% rename from client/src/static/icons/duotone/rss-square.svg rename to src/static/icons/duotone/rss-square.svg diff --git a/client/src/static/icons/duotone/rss.svg b/src/static/icons/duotone/rss.svg similarity index 100% rename from client/src/static/icons/duotone/rss.svg rename to src/static/icons/duotone/rss.svg diff --git a/client/src/static/icons/duotone/ruble-sign.svg b/src/static/icons/duotone/ruble-sign.svg similarity index 100% rename from client/src/static/icons/duotone/ruble-sign.svg rename to src/static/icons/duotone/ruble-sign.svg diff --git a/client/src/static/icons/duotone/ruler-combined.svg b/src/static/icons/duotone/ruler-combined.svg similarity index 100% rename from client/src/static/icons/duotone/ruler-combined.svg rename to src/static/icons/duotone/ruler-combined.svg diff --git a/client/src/static/icons/duotone/ruler-horizontal.svg b/src/static/icons/duotone/ruler-horizontal.svg similarity index 100% rename from client/src/static/icons/duotone/ruler-horizontal.svg rename to src/static/icons/duotone/ruler-horizontal.svg diff --git a/client/src/static/icons/duotone/ruler-triangle.svg b/src/static/icons/duotone/ruler-triangle.svg similarity index 100% rename from client/src/static/icons/duotone/ruler-triangle.svg rename to src/static/icons/duotone/ruler-triangle.svg diff --git a/client/src/static/icons/duotone/ruler-vertical.svg b/src/static/icons/duotone/ruler-vertical.svg similarity index 100% rename from client/src/static/icons/duotone/ruler-vertical.svg rename to src/static/icons/duotone/ruler-vertical.svg diff --git a/client/src/static/icons/duotone/ruler.svg b/src/static/icons/duotone/ruler.svg similarity index 100% rename from client/src/static/icons/duotone/ruler.svg rename to src/static/icons/duotone/ruler.svg diff --git a/client/src/static/icons/duotone/running.svg b/src/static/icons/duotone/running.svg similarity index 100% rename from client/src/static/icons/duotone/running.svg rename to src/static/icons/duotone/running.svg diff --git a/client/src/static/icons/duotone/rupee-sign.svg b/src/static/icons/duotone/rupee-sign.svg similarity index 100% rename from client/src/static/icons/duotone/rupee-sign.svg rename to src/static/icons/duotone/rupee-sign.svg diff --git a/client/src/static/icons/duotone/rv.svg b/src/static/icons/duotone/rv.svg similarity index 100% rename from client/src/static/icons/duotone/rv.svg rename to src/static/icons/duotone/rv.svg diff --git a/client/src/static/icons/duotone/sack-dollar.svg b/src/static/icons/duotone/sack-dollar.svg similarity index 100% rename from client/src/static/icons/duotone/sack-dollar.svg rename to src/static/icons/duotone/sack-dollar.svg diff --git a/client/src/static/icons/duotone/sack.svg b/src/static/icons/duotone/sack.svg similarity index 100% rename from client/src/static/icons/duotone/sack.svg rename to src/static/icons/duotone/sack.svg diff --git a/client/src/static/icons/duotone/sad-cry.svg b/src/static/icons/duotone/sad-cry.svg similarity index 100% rename from client/src/static/icons/duotone/sad-cry.svg rename to src/static/icons/duotone/sad-cry.svg diff --git a/client/src/static/icons/duotone/sad-tear.svg b/src/static/icons/duotone/sad-tear.svg similarity index 100% rename from client/src/static/icons/duotone/sad-tear.svg rename to src/static/icons/duotone/sad-tear.svg diff --git a/client/src/static/icons/duotone/salad.svg b/src/static/icons/duotone/salad.svg similarity index 100% rename from client/src/static/icons/duotone/salad.svg rename to src/static/icons/duotone/salad.svg diff --git a/client/src/static/icons/duotone/sandwich.svg b/src/static/icons/duotone/sandwich.svg similarity index 100% rename from client/src/static/icons/duotone/sandwich.svg rename to src/static/icons/duotone/sandwich.svg diff --git a/client/src/static/icons/duotone/satellite-dish.svg b/src/static/icons/duotone/satellite-dish.svg similarity index 100% rename from client/src/static/icons/duotone/satellite-dish.svg rename to src/static/icons/duotone/satellite-dish.svg diff --git a/client/src/static/icons/duotone/satellite.svg b/src/static/icons/duotone/satellite.svg similarity index 100% rename from client/src/static/icons/duotone/satellite.svg rename to src/static/icons/duotone/satellite.svg diff --git a/client/src/static/icons/duotone/sausage.svg b/src/static/icons/duotone/sausage.svg similarity index 100% rename from client/src/static/icons/duotone/sausage.svg rename to src/static/icons/duotone/sausage.svg diff --git a/client/src/static/icons/duotone/save.svg b/src/static/icons/duotone/save.svg similarity index 100% rename from client/src/static/icons/duotone/save.svg rename to src/static/icons/duotone/save.svg diff --git a/client/src/static/icons/duotone/sax-hot.svg b/src/static/icons/duotone/sax-hot.svg similarity index 100% rename from client/src/static/icons/duotone/sax-hot.svg rename to src/static/icons/duotone/sax-hot.svg diff --git a/client/src/static/icons/duotone/saxophone.svg b/src/static/icons/duotone/saxophone.svg similarity index 100% rename from client/src/static/icons/duotone/saxophone.svg rename to src/static/icons/duotone/saxophone.svg diff --git a/client/src/static/icons/duotone/scalpel-path.svg b/src/static/icons/duotone/scalpel-path.svg similarity index 100% rename from client/src/static/icons/duotone/scalpel-path.svg rename to src/static/icons/duotone/scalpel-path.svg diff --git a/client/src/static/icons/duotone/scalpel.svg b/src/static/icons/duotone/scalpel.svg similarity index 100% rename from client/src/static/icons/duotone/scalpel.svg rename to src/static/icons/duotone/scalpel.svg diff --git a/client/src/static/icons/duotone/scanner-image.svg b/src/static/icons/duotone/scanner-image.svg similarity index 100% rename from client/src/static/icons/duotone/scanner-image.svg rename to src/static/icons/duotone/scanner-image.svg diff --git a/client/src/static/icons/duotone/scanner-keyboard.svg b/src/static/icons/duotone/scanner-keyboard.svg similarity index 100% rename from client/src/static/icons/duotone/scanner-keyboard.svg rename to src/static/icons/duotone/scanner-keyboard.svg diff --git a/client/src/static/icons/duotone/scanner-touchscreen.svg b/src/static/icons/duotone/scanner-touchscreen.svg similarity index 100% rename from client/src/static/icons/duotone/scanner-touchscreen.svg rename to src/static/icons/duotone/scanner-touchscreen.svg diff --git a/client/src/static/icons/duotone/scanner.svg b/src/static/icons/duotone/scanner.svg similarity index 100% rename from client/src/static/icons/duotone/scanner.svg rename to src/static/icons/duotone/scanner.svg diff --git a/client/src/static/icons/duotone/scarecrow.svg b/src/static/icons/duotone/scarecrow.svg similarity index 100% rename from client/src/static/icons/duotone/scarecrow.svg rename to src/static/icons/duotone/scarecrow.svg diff --git a/client/src/static/icons/duotone/scarf.svg b/src/static/icons/duotone/scarf.svg similarity index 100% rename from client/src/static/icons/duotone/scarf.svg rename to src/static/icons/duotone/scarf.svg diff --git a/client/src/static/icons/duotone/school.svg b/src/static/icons/duotone/school.svg similarity index 100% rename from client/src/static/icons/duotone/school.svg rename to src/static/icons/duotone/school.svg diff --git a/client/src/static/icons/duotone/screwdriver.svg b/src/static/icons/duotone/screwdriver.svg similarity index 100% rename from client/src/static/icons/duotone/screwdriver.svg rename to src/static/icons/duotone/screwdriver.svg diff --git a/client/src/static/icons/duotone/scroll-old.svg b/src/static/icons/duotone/scroll-old.svg similarity index 100% rename from client/src/static/icons/duotone/scroll-old.svg rename to src/static/icons/duotone/scroll-old.svg diff --git a/client/src/static/icons/duotone/scroll.svg b/src/static/icons/duotone/scroll.svg similarity index 100% rename from client/src/static/icons/duotone/scroll.svg rename to src/static/icons/duotone/scroll.svg diff --git a/client/src/static/icons/duotone/scrubber.svg b/src/static/icons/duotone/scrubber.svg similarity index 100% rename from client/src/static/icons/duotone/scrubber.svg rename to src/static/icons/duotone/scrubber.svg diff --git a/client/src/static/icons/duotone/scythe.svg b/src/static/icons/duotone/scythe.svg similarity index 100% rename from client/src/static/icons/duotone/scythe.svg rename to src/static/icons/duotone/scythe.svg diff --git a/client/src/static/icons/duotone/sd-card.svg b/src/static/icons/duotone/sd-card.svg similarity index 100% rename from client/src/static/icons/duotone/sd-card.svg rename to src/static/icons/duotone/sd-card.svg diff --git a/client/src/static/icons/duotone/search-dollar.svg b/src/static/icons/duotone/search-dollar.svg similarity index 100% rename from client/src/static/icons/duotone/search-dollar.svg rename to src/static/icons/duotone/search-dollar.svg diff --git a/client/src/static/icons/duotone/search-location.svg b/src/static/icons/duotone/search-location.svg similarity index 100% rename from client/src/static/icons/duotone/search-location.svg rename to src/static/icons/duotone/search-location.svg diff --git a/client/src/static/icons/duotone/search-minus.svg b/src/static/icons/duotone/search-minus.svg similarity index 100% rename from client/src/static/icons/duotone/search-minus.svg rename to src/static/icons/duotone/search-minus.svg diff --git a/client/src/static/icons/duotone/search-plus.svg b/src/static/icons/duotone/search-plus.svg similarity index 100% rename from client/src/static/icons/duotone/search-plus.svg rename to src/static/icons/duotone/search-plus.svg diff --git a/client/src/static/icons/duotone/search.svg b/src/static/icons/duotone/search.svg similarity index 100% rename from client/src/static/icons/duotone/search.svg rename to src/static/icons/duotone/search.svg diff --git a/client/src/static/icons/duotone/seedling.svg b/src/static/icons/duotone/seedling.svg similarity index 100% rename from client/src/static/icons/duotone/seedling.svg rename to src/static/icons/duotone/seedling.svg diff --git a/client/src/static/icons/duotone/send-back.svg b/src/static/icons/duotone/send-back.svg similarity index 100% rename from client/src/static/icons/duotone/send-back.svg rename to src/static/icons/duotone/send-back.svg diff --git a/client/src/static/icons/duotone/send-backward.svg b/src/static/icons/duotone/send-backward.svg similarity index 100% rename from client/src/static/icons/duotone/send-backward.svg rename to src/static/icons/duotone/send-backward.svg diff --git a/client/src/static/icons/duotone/sensor-alert.svg b/src/static/icons/duotone/sensor-alert.svg similarity index 100% rename from client/src/static/icons/duotone/sensor-alert.svg rename to src/static/icons/duotone/sensor-alert.svg diff --git a/client/src/static/icons/duotone/sensor-fire.svg b/src/static/icons/duotone/sensor-fire.svg similarity index 100% rename from client/src/static/icons/duotone/sensor-fire.svg rename to src/static/icons/duotone/sensor-fire.svg diff --git a/client/src/static/icons/duotone/sensor-on.svg b/src/static/icons/duotone/sensor-on.svg similarity index 100% rename from client/src/static/icons/duotone/sensor-on.svg rename to src/static/icons/duotone/sensor-on.svg diff --git a/client/src/static/icons/duotone/sensor-smoke.svg b/src/static/icons/duotone/sensor-smoke.svg similarity index 100% rename from client/src/static/icons/duotone/sensor-smoke.svg rename to src/static/icons/duotone/sensor-smoke.svg diff --git a/client/src/static/icons/duotone/sensor.svg b/src/static/icons/duotone/sensor.svg similarity index 100% rename from client/src/static/icons/duotone/sensor.svg rename to src/static/icons/duotone/sensor.svg diff --git a/client/src/static/icons/duotone/server.svg b/src/static/icons/duotone/server.svg similarity index 100% rename from client/src/static/icons/duotone/server.svg rename to src/static/icons/duotone/server.svg diff --git a/client/src/static/icons/duotone/shapes.svg b/src/static/icons/duotone/shapes.svg similarity index 100% rename from client/src/static/icons/duotone/shapes.svg rename to src/static/icons/duotone/shapes.svg diff --git a/client/src/static/icons/duotone/share-all.svg b/src/static/icons/duotone/share-all.svg similarity index 100% rename from client/src/static/icons/duotone/share-all.svg rename to src/static/icons/duotone/share-all.svg diff --git a/client/src/static/icons/duotone/share-alt-square.svg b/src/static/icons/duotone/share-alt-square.svg similarity index 100% rename from client/src/static/icons/duotone/share-alt-square.svg rename to src/static/icons/duotone/share-alt-square.svg diff --git a/client/src/static/icons/duotone/share-alt.svg b/src/static/icons/duotone/share-alt.svg similarity index 100% rename from client/src/static/icons/duotone/share-alt.svg rename to src/static/icons/duotone/share-alt.svg diff --git a/client/src/static/icons/duotone/share-square.svg b/src/static/icons/duotone/share-square.svg similarity index 100% rename from client/src/static/icons/duotone/share-square.svg rename to src/static/icons/duotone/share-square.svg diff --git a/client/src/static/icons/duotone/share.svg b/src/static/icons/duotone/share.svg similarity index 100% rename from client/src/static/icons/duotone/share.svg rename to src/static/icons/duotone/share.svg diff --git a/client/src/static/icons/duotone/sheep.svg b/src/static/icons/duotone/sheep.svg similarity index 100% rename from client/src/static/icons/duotone/sheep.svg rename to src/static/icons/duotone/sheep.svg diff --git a/client/src/static/icons/duotone/shekel-sign.svg b/src/static/icons/duotone/shekel-sign.svg similarity index 100% rename from client/src/static/icons/duotone/shekel-sign.svg rename to src/static/icons/duotone/shekel-sign.svg diff --git a/client/src/static/icons/duotone/shield-alt.svg b/src/static/icons/duotone/shield-alt.svg similarity index 100% rename from client/src/static/icons/duotone/shield-alt.svg rename to src/static/icons/duotone/shield-alt.svg diff --git a/client/src/static/icons/duotone/shield-check.svg b/src/static/icons/duotone/shield-check.svg similarity index 100% rename from client/src/static/icons/duotone/shield-check.svg rename to src/static/icons/duotone/shield-check.svg diff --git a/client/src/static/icons/duotone/shield-cross.svg b/src/static/icons/duotone/shield-cross.svg similarity index 100% rename from client/src/static/icons/duotone/shield-cross.svg rename to src/static/icons/duotone/shield-cross.svg diff --git a/client/src/static/icons/duotone/shield.svg b/src/static/icons/duotone/shield.svg similarity index 100% rename from client/src/static/icons/duotone/shield.svg rename to src/static/icons/duotone/shield.svg diff --git a/client/src/static/icons/duotone/ship.svg b/src/static/icons/duotone/ship.svg similarity index 100% rename from client/src/static/icons/duotone/ship.svg rename to src/static/icons/duotone/ship.svg diff --git a/client/src/static/icons/duotone/shipping-fast.svg b/src/static/icons/duotone/shipping-fast.svg similarity index 100% rename from client/src/static/icons/duotone/shipping-fast.svg rename to src/static/icons/duotone/shipping-fast.svg diff --git a/client/src/static/icons/duotone/shipping-timed.svg b/src/static/icons/duotone/shipping-timed.svg similarity index 100% rename from client/src/static/icons/duotone/shipping-timed.svg rename to src/static/icons/duotone/shipping-timed.svg diff --git a/client/src/static/icons/duotone/shish-kebab.svg b/src/static/icons/duotone/shish-kebab.svg similarity index 100% rename from client/src/static/icons/duotone/shish-kebab.svg rename to src/static/icons/duotone/shish-kebab.svg diff --git a/client/src/static/icons/duotone/shoe-prints.svg b/src/static/icons/duotone/shoe-prints.svg similarity index 100% rename from client/src/static/icons/duotone/shoe-prints.svg rename to src/static/icons/duotone/shoe-prints.svg diff --git a/client/src/static/icons/duotone/shopping-bag.svg b/src/static/icons/duotone/shopping-bag.svg similarity index 100% rename from client/src/static/icons/duotone/shopping-bag.svg rename to src/static/icons/duotone/shopping-bag.svg diff --git a/client/src/static/icons/duotone/shopping-basket.svg b/src/static/icons/duotone/shopping-basket.svg similarity index 100% rename from client/src/static/icons/duotone/shopping-basket.svg rename to src/static/icons/duotone/shopping-basket.svg diff --git a/client/src/static/icons/duotone/shopping-cart.svg b/src/static/icons/duotone/shopping-cart.svg similarity index 100% rename from client/src/static/icons/duotone/shopping-cart.svg rename to src/static/icons/duotone/shopping-cart.svg diff --git a/client/src/static/icons/duotone/shovel-snow.svg b/src/static/icons/duotone/shovel-snow.svg similarity index 100% rename from client/src/static/icons/duotone/shovel-snow.svg rename to src/static/icons/duotone/shovel-snow.svg diff --git a/client/src/static/icons/duotone/shovel.svg b/src/static/icons/duotone/shovel.svg similarity index 100% rename from client/src/static/icons/duotone/shovel.svg rename to src/static/icons/duotone/shovel.svg diff --git a/client/src/static/icons/duotone/shower.svg b/src/static/icons/duotone/shower.svg similarity index 100% rename from client/src/static/icons/duotone/shower.svg rename to src/static/icons/duotone/shower.svg diff --git a/client/src/static/icons/duotone/shredder.svg b/src/static/icons/duotone/shredder.svg similarity index 100% rename from client/src/static/icons/duotone/shredder.svg rename to src/static/icons/duotone/shredder.svg diff --git a/client/src/static/icons/duotone/shuttle-van.svg b/src/static/icons/duotone/shuttle-van.svg similarity index 100% rename from client/src/static/icons/duotone/shuttle-van.svg rename to src/static/icons/duotone/shuttle-van.svg diff --git a/client/src/static/icons/duotone/shuttlecock.svg b/src/static/icons/duotone/shuttlecock.svg similarity index 100% rename from client/src/static/icons/duotone/shuttlecock.svg rename to src/static/icons/duotone/shuttlecock.svg diff --git a/client/src/static/icons/duotone/sickle.svg b/src/static/icons/duotone/sickle.svg similarity index 100% rename from client/src/static/icons/duotone/sickle.svg rename to src/static/icons/duotone/sickle.svg diff --git a/client/src/static/icons/duotone/sigma.svg b/src/static/icons/duotone/sigma.svg similarity index 100% rename from client/src/static/icons/duotone/sigma.svg rename to src/static/icons/duotone/sigma.svg diff --git a/client/src/static/icons/duotone/sign-in-alt.svg b/src/static/icons/duotone/sign-in-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sign-in-alt.svg rename to src/static/icons/duotone/sign-in-alt.svg diff --git a/client/src/static/icons/duotone/sign-in.svg b/src/static/icons/duotone/sign-in.svg similarity index 100% rename from client/src/static/icons/duotone/sign-in.svg rename to src/static/icons/duotone/sign-in.svg diff --git a/client/src/static/icons/duotone/sign-language.svg b/src/static/icons/duotone/sign-language.svg similarity index 100% rename from client/src/static/icons/duotone/sign-language.svg rename to src/static/icons/duotone/sign-language.svg diff --git a/client/src/static/icons/duotone/sign-out-alt.svg b/src/static/icons/duotone/sign-out-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sign-out-alt.svg rename to src/static/icons/duotone/sign-out-alt.svg diff --git a/client/src/static/icons/duotone/sign-out.svg b/src/static/icons/duotone/sign-out.svg similarity index 100% rename from client/src/static/icons/duotone/sign-out.svg rename to src/static/icons/duotone/sign-out.svg diff --git a/client/src/static/icons/duotone/sign.svg b/src/static/icons/duotone/sign.svg similarity index 100% rename from client/src/static/icons/duotone/sign.svg rename to src/static/icons/duotone/sign.svg diff --git a/client/src/static/icons/duotone/signal-1.svg b/src/static/icons/duotone/signal-1.svg similarity index 100% rename from client/src/static/icons/duotone/signal-1.svg rename to src/static/icons/duotone/signal-1.svg diff --git a/client/src/static/icons/duotone/signal-2.svg b/src/static/icons/duotone/signal-2.svg similarity index 100% rename from client/src/static/icons/duotone/signal-2.svg rename to src/static/icons/duotone/signal-2.svg diff --git a/client/src/static/icons/duotone/signal-3.svg b/src/static/icons/duotone/signal-3.svg similarity index 100% rename from client/src/static/icons/duotone/signal-3.svg rename to src/static/icons/duotone/signal-3.svg diff --git a/client/src/static/icons/duotone/signal-4.svg b/src/static/icons/duotone/signal-4.svg similarity index 100% rename from client/src/static/icons/duotone/signal-4.svg rename to src/static/icons/duotone/signal-4.svg diff --git a/client/src/static/icons/duotone/signal-alt-1.svg b/src/static/icons/duotone/signal-alt-1.svg similarity index 100% rename from client/src/static/icons/duotone/signal-alt-1.svg rename to src/static/icons/duotone/signal-alt-1.svg diff --git a/client/src/static/icons/duotone/signal-alt-2.svg b/src/static/icons/duotone/signal-alt-2.svg similarity index 100% rename from client/src/static/icons/duotone/signal-alt-2.svg rename to src/static/icons/duotone/signal-alt-2.svg diff --git a/client/src/static/icons/duotone/signal-alt-3.svg b/src/static/icons/duotone/signal-alt-3.svg similarity index 100% rename from client/src/static/icons/duotone/signal-alt-3.svg rename to src/static/icons/duotone/signal-alt-3.svg diff --git a/client/src/static/icons/duotone/signal-alt-slash.svg b/src/static/icons/duotone/signal-alt-slash.svg similarity index 100% rename from client/src/static/icons/duotone/signal-alt-slash.svg rename to src/static/icons/duotone/signal-alt-slash.svg diff --git a/client/src/static/icons/duotone/signal-alt.svg b/src/static/icons/duotone/signal-alt.svg similarity index 100% rename from client/src/static/icons/duotone/signal-alt.svg rename to src/static/icons/duotone/signal-alt.svg diff --git a/client/src/static/icons/duotone/signal-slash.svg b/src/static/icons/duotone/signal-slash.svg similarity index 100% rename from client/src/static/icons/duotone/signal-slash.svg rename to src/static/icons/duotone/signal-slash.svg diff --git a/client/src/static/icons/duotone/signal-stream.svg b/src/static/icons/duotone/signal-stream.svg similarity index 100% rename from client/src/static/icons/duotone/signal-stream.svg rename to src/static/icons/duotone/signal-stream.svg diff --git a/client/src/static/icons/duotone/signal.svg b/src/static/icons/duotone/signal.svg similarity index 100% rename from client/src/static/icons/duotone/signal.svg rename to src/static/icons/duotone/signal.svg diff --git a/client/src/static/icons/duotone/signature.svg b/src/static/icons/duotone/signature.svg similarity index 100% rename from client/src/static/icons/duotone/signature.svg rename to src/static/icons/duotone/signature.svg diff --git a/client/src/static/icons/duotone/sim-card.svg b/src/static/icons/duotone/sim-card.svg similarity index 100% rename from client/src/static/icons/duotone/sim-card.svg rename to src/static/icons/duotone/sim-card.svg diff --git a/client/src/static/icons/duotone/siren-on.svg b/src/static/icons/duotone/siren-on.svg similarity index 100% rename from client/src/static/icons/duotone/siren-on.svg rename to src/static/icons/duotone/siren-on.svg diff --git a/client/src/static/icons/duotone/siren.svg b/src/static/icons/duotone/siren.svg similarity index 100% rename from client/src/static/icons/duotone/siren.svg rename to src/static/icons/duotone/siren.svg diff --git a/client/src/static/icons/duotone/sitemap.svg b/src/static/icons/duotone/sitemap.svg similarity index 100% rename from client/src/static/icons/duotone/sitemap.svg rename to src/static/icons/duotone/sitemap.svg diff --git a/client/src/static/icons/duotone/skating.svg b/src/static/icons/duotone/skating.svg similarity index 100% rename from client/src/static/icons/duotone/skating.svg rename to src/static/icons/duotone/skating.svg diff --git a/client/src/static/icons/duotone/skeleton.svg b/src/static/icons/duotone/skeleton.svg similarity index 100% rename from client/src/static/icons/duotone/skeleton.svg rename to src/static/icons/duotone/skeleton.svg diff --git a/client/src/static/icons/duotone/ski-jump.svg b/src/static/icons/duotone/ski-jump.svg similarity index 100% rename from client/src/static/icons/duotone/ski-jump.svg rename to src/static/icons/duotone/ski-jump.svg diff --git a/client/src/static/icons/duotone/ski-lift.svg b/src/static/icons/duotone/ski-lift.svg similarity index 100% rename from client/src/static/icons/duotone/ski-lift.svg rename to src/static/icons/duotone/ski-lift.svg diff --git a/client/src/static/icons/duotone/skiing-nordic.svg b/src/static/icons/duotone/skiing-nordic.svg similarity index 100% rename from client/src/static/icons/duotone/skiing-nordic.svg rename to src/static/icons/duotone/skiing-nordic.svg diff --git a/client/src/static/icons/duotone/skiing.svg b/src/static/icons/duotone/skiing.svg similarity index 100% rename from client/src/static/icons/duotone/skiing.svg rename to src/static/icons/duotone/skiing.svg diff --git a/client/src/static/icons/duotone/skull-cow.svg b/src/static/icons/duotone/skull-cow.svg similarity index 100% rename from client/src/static/icons/duotone/skull-cow.svg rename to src/static/icons/duotone/skull-cow.svg diff --git a/client/src/static/icons/duotone/skull-crossbones.svg b/src/static/icons/duotone/skull-crossbones.svg similarity index 100% rename from client/src/static/icons/duotone/skull-crossbones.svg rename to src/static/icons/duotone/skull-crossbones.svg diff --git a/client/src/static/icons/duotone/skull.svg b/src/static/icons/duotone/skull.svg similarity index 100% rename from client/src/static/icons/duotone/skull.svg rename to src/static/icons/duotone/skull.svg diff --git a/client/src/static/icons/duotone/slash.svg b/src/static/icons/duotone/slash.svg similarity index 100% rename from client/src/static/icons/duotone/slash.svg rename to src/static/icons/duotone/slash.svg diff --git a/client/src/static/icons/duotone/sledding.svg b/src/static/icons/duotone/sledding.svg similarity index 100% rename from client/src/static/icons/duotone/sledding.svg rename to src/static/icons/duotone/sledding.svg diff --git a/client/src/static/icons/duotone/sleigh.svg b/src/static/icons/duotone/sleigh.svg similarity index 100% rename from client/src/static/icons/duotone/sleigh.svg rename to src/static/icons/duotone/sleigh.svg diff --git a/client/src/static/icons/duotone/sliders-h-square.svg b/src/static/icons/duotone/sliders-h-square.svg similarity index 100% rename from client/src/static/icons/duotone/sliders-h-square.svg rename to src/static/icons/duotone/sliders-h-square.svg diff --git a/client/src/static/icons/duotone/sliders-h.svg b/src/static/icons/duotone/sliders-h.svg similarity index 100% rename from client/src/static/icons/duotone/sliders-h.svg rename to src/static/icons/duotone/sliders-h.svg diff --git a/client/src/static/icons/duotone/sliders-v-square.svg b/src/static/icons/duotone/sliders-v-square.svg similarity index 100% rename from client/src/static/icons/duotone/sliders-v-square.svg rename to src/static/icons/duotone/sliders-v-square.svg diff --git a/client/src/static/icons/duotone/sliders-v.svg b/src/static/icons/duotone/sliders-v.svg similarity index 100% rename from client/src/static/icons/duotone/sliders-v.svg rename to src/static/icons/duotone/sliders-v.svg diff --git a/client/src/static/icons/duotone/smile-beam.svg b/src/static/icons/duotone/smile-beam.svg similarity index 100% rename from client/src/static/icons/duotone/smile-beam.svg rename to src/static/icons/duotone/smile-beam.svg diff --git a/client/src/static/icons/duotone/smile-plus.svg b/src/static/icons/duotone/smile-plus.svg similarity index 100% rename from client/src/static/icons/duotone/smile-plus.svg rename to src/static/icons/duotone/smile-plus.svg diff --git a/client/src/static/icons/duotone/smile-wink.svg b/src/static/icons/duotone/smile-wink.svg similarity index 100% rename from client/src/static/icons/duotone/smile-wink.svg rename to src/static/icons/duotone/smile-wink.svg diff --git a/client/src/static/icons/duotone/smile.svg b/src/static/icons/duotone/smile.svg similarity index 100% rename from client/src/static/icons/duotone/smile.svg rename to src/static/icons/duotone/smile.svg diff --git a/client/src/static/icons/duotone/smog.svg b/src/static/icons/duotone/smog.svg similarity index 100% rename from client/src/static/icons/duotone/smog.svg rename to src/static/icons/duotone/smog.svg diff --git a/client/src/static/icons/duotone/smoke.svg b/src/static/icons/duotone/smoke.svg similarity index 100% rename from client/src/static/icons/duotone/smoke.svg rename to src/static/icons/duotone/smoke.svg diff --git a/client/src/static/icons/duotone/smoking-ban.svg b/src/static/icons/duotone/smoking-ban.svg similarity index 100% rename from client/src/static/icons/duotone/smoking-ban.svg rename to src/static/icons/duotone/smoking-ban.svg diff --git a/client/src/static/icons/duotone/smoking.svg b/src/static/icons/duotone/smoking.svg similarity index 100% rename from client/src/static/icons/duotone/smoking.svg rename to src/static/icons/duotone/smoking.svg diff --git a/client/src/static/icons/duotone/sms.svg b/src/static/icons/duotone/sms.svg similarity index 100% rename from client/src/static/icons/duotone/sms.svg rename to src/static/icons/duotone/sms.svg diff --git a/client/src/static/icons/duotone/snake.svg b/src/static/icons/duotone/snake.svg similarity index 100% rename from client/src/static/icons/duotone/snake.svg rename to src/static/icons/duotone/snake.svg diff --git a/client/src/static/icons/duotone/snooze.svg b/src/static/icons/duotone/snooze.svg similarity index 100% rename from client/src/static/icons/duotone/snooze.svg rename to src/static/icons/duotone/snooze.svg diff --git a/client/src/static/icons/duotone/snow-blowing.svg b/src/static/icons/duotone/snow-blowing.svg similarity index 100% rename from client/src/static/icons/duotone/snow-blowing.svg rename to src/static/icons/duotone/snow-blowing.svg diff --git a/client/src/static/icons/duotone/snowboarding.svg b/src/static/icons/duotone/snowboarding.svg similarity index 100% rename from client/src/static/icons/duotone/snowboarding.svg rename to src/static/icons/duotone/snowboarding.svg diff --git a/client/src/static/icons/duotone/snowflake.svg b/src/static/icons/duotone/snowflake.svg similarity index 100% rename from client/src/static/icons/duotone/snowflake.svg rename to src/static/icons/duotone/snowflake.svg diff --git a/client/src/static/icons/duotone/snowflakes.svg b/src/static/icons/duotone/snowflakes.svg similarity index 100% rename from client/src/static/icons/duotone/snowflakes.svg rename to src/static/icons/duotone/snowflakes.svg diff --git a/client/src/static/icons/duotone/snowman.svg b/src/static/icons/duotone/snowman.svg similarity index 100% rename from client/src/static/icons/duotone/snowman.svg rename to src/static/icons/duotone/snowman.svg diff --git a/client/src/static/icons/duotone/snowmobile.svg b/src/static/icons/duotone/snowmobile.svg similarity index 100% rename from client/src/static/icons/duotone/snowmobile.svg rename to src/static/icons/duotone/snowmobile.svg diff --git a/client/src/static/icons/duotone/snowplow.svg b/src/static/icons/duotone/snowplow.svg similarity index 100% rename from client/src/static/icons/duotone/snowplow.svg rename to src/static/icons/duotone/snowplow.svg diff --git a/client/src/static/icons/duotone/socks.svg b/src/static/icons/duotone/socks.svg similarity index 100% rename from client/src/static/icons/duotone/socks.svg rename to src/static/icons/duotone/socks.svg diff --git a/client/src/static/icons/duotone/solar-panel.svg b/src/static/icons/duotone/solar-panel.svg similarity index 100% rename from client/src/static/icons/duotone/solar-panel.svg rename to src/static/icons/duotone/solar-panel.svg diff --git a/client/src/static/icons/duotone/solar-system.svg b/src/static/icons/duotone/solar-system.svg similarity index 100% rename from client/src/static/icons/duotone/solar-system.svg rename to src/static/icons/duotone/solar-system.svg diff --git a/client/src/static/icons/duotone/sort-alpha-down-alt.svg b/src/static/icons/duotone/sort-alpha-down-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sort-alpha-down-alt.svg rename to src/static/icons/duotone/sort-alpha-down-alt.svg diff --git a/client/src/static/icons/duotone/sort-alpha-down.svg b/src/static/icons/duotone/sort-alpha-down.svg similarity index 100% rename from client/src/static/icons/duotone/sort-alpha-down.svg rename to src/static/icons/duotone/sort-alpha-down.svg diff --git a/client/src/static/icons/duotone/sort-alpha-up-alt.svg b/src/static/icons/duotone/sort-alpha-up-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sort-alpha-up-alt.svg rename to src/static/icons/duotone/sort-alpha-up-alt.svg diff --git a/client/src/static/icons/duotone/sort-alpha-up.svg b/src/static/icons/duotone/sort-alpha-up.svg similarity index 100% rename from client/src/static/icons/duotone/sort-alpha-up.svg rename to src/static/icons/duotone/sort-alpha-up.svg diff --git a/client/src/static/icons/duotone/sort-alt.svg b/src/static/icons/duotone/sort-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sort-alt.svg rename to src/static/icons/duotone/sort-alt.svg diff --git a/client/src/static/icons/duotone/sort-amount-down-alt.svg b/src/static/icons/duotone/sort-amount-down-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sort-amount-down-alt.svg rename to src/static/icons/duotone/sort-amount-down-alt.svg diff --git a/client/src/static/icons/duotone/sort-amount-down.svg b/src/static/icons/duotone/sort-amount-down.svg similarity index 100% rename from client/src/static/icons/duotone/sort-amount-down.svg rename to src/static/icons/duotone/sort-amount-down.svg diff --git a/client/src/static/icons/duotone/sort-amount-up-alt.svg b/src/static/icons/duotone/sort-amount-up-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sort-amount-up-alt.svg rename to src/static/icons/duotone/sort-amount-up-alt.svg diff --git a/client/src/static/icons/duotone/sort-amount-up.svg b/src/static/icons/duotone/sort-amount-up.svg similarity index 100% rename from client/src/static/icons/duotone/sort-amount-up.svg rename to src/static/icons/duotone/sort-amount-up.svg diff --git a/client/src/static/icons/duotone/sort-circle-down.svg b/src/static/icons/duotone/sort-circle-down.svg similarity index 100% rename from client/src/static/icons/duotone/sort-circle-down.svg rename to src/static/icons/duotone/sort-circle-down.svg diff --git a/client/src/static/icons/duotone/sort-circle-up.svg b/src/static/icons/duotone/sort-circle-up.svg similarity index 100% rename from client/src/static/icons/duotone/sort-circle-up.svg rename to src/static/icons/duotone/sort-circle-up.svg diff --git a/client/src/static/icons/duotone/sort-circle.svg b/src/static/icons/duotone/sort-circle.svg similarity index 100% rename from client/src/static/icons/duotone/sort-circle.svg rename to src/static/icons/duotone/sort-circle.svg diff --git a/client/src/static/icons/duotone/sort-down.svg b/src/static/icons/duotone/sort-down.svg similarity index 100% rename from client/src/static/icons/duotone/sort-down.svg rename to src/static/icons/duotone/sort-down.svg diff --git a/client/src/static/icons/duotone/sort-numeric-down-alt.svg b/src/static/icons/duotone/sort-numeric-down-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sort-numeric-down-alt.svg rename to src/static/icons/duotone/sort-numeric-down-alt.svg diff --git a/client/src/static/icons/duotone/sort-numeric-down.svg b/src/static/icons/duotone/sort-numeric-down.svg similarity index 100% rename from client/src/static/icons/duotone/sort-numeric-down.svg rename to src/static/icons/duotone/sort-numeric-down.svg diff --git a/client/src/static/icons/duotone/sort-numeric-up-alt.svg b/src/static/icons/duotone/sort-numeric-up-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sort-numeric-up-alt.svg rename to src/static/icons/duotone/sort-numeric-up-alt.svg diff --git a/client/src/static/icons/duotone/sort-numeric-up.svg b/src/static/icons/duotone/sort-numeric-up.svg similarity index 100% rename from client/src/static/icons/duotone/sort-numeric-up.svg rename to src/static/icons/duotone/sort-numeric-up.svg diff --git a/client/src/static/icons/duotone/sort-shapes-down-alt.svg b/src/static/icons/duotone/sort-shapes-down-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sort-shapes-down-alt.svg rename to src/static/icons/duotone/sort-shapes-down-alt.svg diff --git a/client/src/static/icons/duotone/sort-shapes-down.svg b/src/static/icons/duotone/sort-shapes-down.svg similarity index 100% rename from client/src/static/icons/duotone/sort-shapes-down.svg rename to src/static/icons/duotone/sort-shapes-down.svg diff --git a/client/src/static/icons/duotone/sort-shapes-up-alt.svg b/src/static/icons/duotone/sort-shapes-up-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sort-shapes-up-alt.svg rename to src/static/icons/duotone/sort-shapes-up-alt.svg diff --git a/client/src/static/icons/duotone/sort-shapes-up.svg b/src/static/icons/duotone/sort-shapes-up.svg similarity index 100% rename from client/src/static/icons/duotone/sort-shapes-up.svg rename to src/static/icons/duotone/sort-shapes-up.svg diff --git a/client/src/static/icons/duotone/sort-size-down-alt.svg b/src/static/icons/duotone/sort-size-down-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sort-size-down-alt.svg rename to src/static/icons/duotone/sort-size-down-alt.svg diff --git a/client/src/static/icons/duotone/sort-size-down.svg b/src/static/icons/duotone/sort-size-down.svg similarity index 100% rename from client/src/static/icons/duotone/sort-size-down.svg rename to src/static/icons/duotone/sort-size-down.svg diff --git a/client/src/static/icons/duotone/sort-size-up-alt.svg b/src/static/icons/duotone/sort-size-up-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sort-size-up-alt.svg rename to src/static/icons/duotone/sort-size-up-alt.svg diff --git a/client/src/static/icons/duotone/sort-size-up.svg b/src/static/icons/duotone/sort-size-up.svg similarity index 100% rename from client/src/static/icons/duotone/sort-size-up.svg rename to src/static/icons/duotone/sort-size-up.svg diff --git a/client/src/static/icons/duotone/sort-up.svg b/src/static/icons/duotone/sort-up.svg similarity index 100% rename from client/src/static/icons/duotone/sort-up.svg rename to src/static/icons/duotone/sort-up.svg diff --git a/client/src/static/icons/duotone/sort.svg b/src/static/icons/duotone/sort.svg similarity index 100% rename from client/src/static/icons/duotone/sort.svg rename to src/static/icons/duotone/sort.svg diff --git a/client/src/static/icons/duotone/soup.svg b/src/static/icons/duotone/soup.svg similarity index 100% rename from client/src/static/icons/duotone/soup.svg rename to src/static/icons/duotone/soup.svg diff --git a/client/src/static/icons/duotone/spa.svg b/src/static/icons/duotone/spa.svg similarity index 100% rename from client/src/static/icons/duotone/spa.svg rename to src/static/icons/duotone/spa.svg diff --git a/client/src/static/icons/duotone/space-shuttle.svg b/src/static/icons/duotone/space-shuttle.svg similarity index 100% rename from client/src/static/icons/duotone/space-shuttle.svg rename to src/static/icons/duotone/space-shuttle.svg diff --git a/client/src/static/icons/duotone/space-station-moon-alt.svg b/src/static/icons/duotone/space-station-moon-alt.svg similarity index 100% rename from client/src/static/icons/duotone/space-station-moon-alt.svg rename to src/static/icons/duotone/space-station-moon-alt.svg diff --git a/client/src/static/icons/duotone/space-station-moon.svg b/src/static/icons/duotone/space-station-moon.svg similarity index 100% rename from client/src/static/icons/duotone/space-station-moon.svg rename to src/static/icons/duotone/space-station-moon.svg diff --git a/client/src/static/icons/duotone/spade.svg b/src/static/icons/duotone/spade.svg similarity index 100% rename from client/src/static/icons/duotone/spade.svg rename to src/static/icons/duotone/spade.svg diff --git a/client/src/static/icons/duotone/sparkles.svg b/src/static/icons/duotone/sparkles.svg similarity index 100% rename from client/src/static/icons/duotone/sparkles.svg rename to src/static/icons/duotone/sparkles.svg diff --git a/client/src/static/icons/duotone/speaker.svg b/src/static/icons/duotone/speaker.svg similarity index 100% rename from client/src/static/icons/duotone/speaker.svg rename to src/static/icons/duotone/speaker.svg diff --git a/client/src/static/icons/duotone/speakers.svg b/src/static/icons/duotone/speakers.svg similarity index 100% rename from client/src/static/icons/duotone/speakers.svg rename to src/static/icons/duotone/speakers.svg diff --git a/client/src/static/icons/duotone/spell-check.svg b/src/static/icons/duotone/spell-check.svg similarity index 100% rename from client/src/static/icons/duotone/spell-check.svg rename to src/static/icons/duotone/spell-check.svg diff --git a/client/src/static/icons/duotone/spider-black-widow.svg b/src/static/icons/duotone/spider-black-widow.svg similarity index 100% rename from client/src/static/icons/duotone/spider-black-widow.svg rename to src/static/icons/duotone/spider-black-widow.svg diff --git a/client/src/static/icons/duotone/spider-web.svg b/src/static/icons/duotone/spider-web.svg similarity index 100% rename from client/src/static/icons/duotone/spider-web.svg rename to src/static/icons/duotone/spider-web.svg diff --git a/client/src/static/icons/duotone/spider.svg b/src/static/icons/duotone/spider.svg similarity index 100% rename from client/src/static/icons/duotone/spider.svg rename to src/static/icons/duotone/spider.svg diff --git a/client/src/static/icons/duotone/spinner-third.svg b/src/static/icons/duotone/spinner-third.svg similarity index 100% rename from client/src/static/icons/duotone/spinner-third.svg rename to src/static/icons/duotone/spinner-third.svg diff --git a/client/src/static/icons/duotone/spinner.svg b/src/static/icons/duotone/spinner.svg similarity index 100% rename from client/src/static/icons/duotone/spinner.svg rename to src/static/icons/duotone/spinner.svg diff --git a/client/src/static/icons/duotone/splotch.svg b/src/static/icons/duotone/splotch.svg similarity index 100% rename from client/src/static/icons/duotone/splotch.svg rename to src/static/icons/duotone/splotch.svg diff --git a/client/src/static/icons/duotone/spray-can.svg b/src/static/icons/duotone/spray-can.svg similarity index 100% rename from client/src/static/icons/duotone/spray-can.svg rename to src/static/icons/duotone/spray-can.svg diff --git a/client/src/static/icons/duotone/sprinkler.svg b/src/static/icons/duotone/sprinkler.svg similarity index 100% rename from client/src/static/icons/duotone/sprinkler.svg rename to src/static/icons/duotone/sprinkler.svg diff --git a/client/src/static/icons/duotone/square-full.svg b/src/static/icons/duotone/square-full.svg similarity index 100% rename from client/src/static/icons/duotone/square-full.svg rename to src/static/icons/duotone/square-full.svg diff --git a/client/src/static/icons/duotone/square-root-alt.svg b/src/static/icons/duotone/square-root-alt.svg similarity index 100% rename from client/src/static/icons/duotone/square-root-alt.svg rename to src/static/icons/duotone/square-root-alt.svg diff --git a/client/src/static/icons/duotone/square-root.svg b/src/static/icons/duotone/square-root.svg similarity index 100% rename from client/src/static/icons/duotone/square-root.svg rename to src/static/icons/duotone/square-root.svg diff --git a/client/src/static/icons/duotone/square.svg b/src/static/icons/duotone/square.svg similarity index 100% rename from client/src/static/icons/duotone/square.svg rename to src/static/icons/duotone/square.svg diff --git a/client/src/static/icons/duotone/squirrel.svg b/src/static/icons/duotone/squirrel.svg similarity index 100% rename from client/src/static/icons/duotone/squirrel.svg rename to src/static/icons/duotone/squirrel.svg diff --git a/client/src/static/icons/duotone/staff.svg b/src/static/icons/duotone/staff.svg similarity index 100% rename from client/src/static/icons/duotone/staff.svg rename to src/static/icons/duotone/staff.svg diff --git a/client/src/static/icons/duotone/stamp.svg b/src/static/icons/duotone/stamp.svg similarity index 100% rename from client/src/static/icons/duotone/stamp.svg rename to src/static/icons/duotone/stamp.svg diff --git a/client/src/static/icons/duotone/star-and-crescent.svg b/src/static/icons/duotone/star-and-crescent.svg similarity index 100% rename from client/src/static/icons/duotone/star-and-crescent.svg rename to src/static/icons/duotone/star-and-crescent.svg diff --git a/client/src/static/icons/duotone/star-christmas.svg b/src/static/icons/duotone/star-christmas.svg similarity index 100% rename from client/src/static/icons/duotone/star-christmas.svg rename to src/static/icons/duotone/star-christmas.svg diff --git a/client/src/static/icons/duotone/star-exclamation.svg b/src/static/icons/duotone/star-exclamation.svg similarity index 100% rename from client/src/static/icons/duotone/star-exclamation.svg rename to src/static/icons/duotone/star-exclamation.svg diff --git a/client/src/static/icons/duotone/star-half-alt.svg b/src/static/icons/duotone/star-half-alt.svg similarity index 100% rename from client/src/static/icons/duotone/star-half-alt.svg rename to src/static/icons/duotone/star-half-alt.svg diff --git a/client/src/static/icons/duotone/star-half.svg b/src/static/icons/duotone/star-half.svg similarity index 100% rename from client/src/static/icons/duotone/star-half.svg rename to src/static/icons/duotone/star-half.svg diff --git a/client/src/static/icons/duotone/star-of-david.svg b/src/static/icons/duotone/star-of-david.svg similarity index 100% rename from client/src/static/icons/duotone/star-of-david.svg rename to src/static/icons/duotone/star-of-david.svg diff --git a/client/src/static/icons/duotone/star-of-life.svg b/src/static/icons/duotone/star-of-life.svg similarity index 100% rename from client/src/static/icons/duotone/star-of-life.svg rename to src/static/icons/duotone/star-of-life.svg diff --git a/client/src/static/icons/duotone/star-shooting.svg b/src/static/icons/duotone/star-shooting.svg similarity index 100% rename from client/src/static/icons/duotone/star-shooting.svg rename to src/static/icons/duotone/star-shooting.svg diff --git a/client/src/static/icons/duotone/star.svg b/src/static/icons/duotone/star.svg similarity index 100% rename from client/src/static/icons/duotone/star.svg rename to src/static/icons/duotone/star.svg diff --git a/client/src/static/icons/duotone/starfighter-alt.svg b/src/static/icons/duotone/starfighter-alt.svg similarity index 100% rename from client/src/static/icons/duotone/starfighter-alt.svg rename to src/static/icons/duotone/starfighter-alt.svg diff --git a/client/src/static/icons/duotone/starfighter.svg b/src/static/icons/duotone/starfighter.svg similarity index 100% rename from client/src/static/icons/duotone/starfighter.svg rename to src/static/icons/duotone/starfighter.svg diff --git a/client/src/static/icons/duotone/stars.svg b/src/static/icons/duotone/stars.svg similarity index 100% rename from client/src/static/icons/duotone/stars.svg rename to src/static/icons/duotone/stars.svg diff --git a/client/src/static/icons/duotone/starship-freighter.svg b/src/static/icons/duotone/starship-freighter.svg similarity index 100% rename from client/src/static/icons/duotone/starship-freighter.svg rename to src/static/icons/duotone/starship-freighter.svg diff --git a/client/src/static/icons/duotone/starship.svg b/src/static/icons/duotone/starship.svg similarity index 100% rename from client/src/static/icons/duotone/starship.svg rename to src/static/icons/duotone/starship.svg diff --git a/client/src/static/icons/duotone/steak.svg b/src/static/icons/duotone/steak.svg similarity index 100% rename from client/src/static/icons/duotone/steak.svg rename to src/static/icons/duotone/steak.svg diff --git a/client/src/static/icons/duotone/steering-wheel.svg b/src/static/icons/duotone/steering-wheel.svg similarity index 100% rename from client/src/static/icons/duotone/steering-wheel.svg rename to src/static/icons/duotone/steering-wheel.svg diff --git a/client/src/static/icons/duotone/step-backward.svg b/src/static/icons/duotone/step-backward.svg similarity index 100% rename from client/src/static/icons/duotone/step-backward.svg rename to src/static/icons/duotone/step-backward.svg diff --git a/client/src/static/icons/duotone/step-forward.svg b/src/static/icons/duotone/step-forward.svg similarity index 100% rename from client/src/static/icons/duotone/step-forward.svg rename to src/static/icons/duotone/step-forward.svg diff --git a/client/src/static/icons/duotone/stethoscope.svg b/src/static/icons/duotone/stethoscope.svg similarity index 100% rename from client/src/static/icons/duotone/stethoscope.svg rename to src/static/icons/duotone/stethoscope.svg diff --git a/client/src/static/icons/duotone/sticky-note.svg b/src/static/icons/duotone/sticky-note.svg similarity index 100% rename from client/src/static/icons/duotone/sticky-note.svg rename to src/static/icons/duotone/sticky-note.svg diff --git a/client/src/static/icons/duotone/stocking.svg b/src/static/icons/duotone/stocking.svg similarity index 100% rename from client/src/static/icons/duotone/stocking.svg rename to src/static/icons/duotone/stocking.svg diff --git a/client/src/static/icons/duotone/stomach.svg b/src/static/icons/duotone/stomach.svg similarity index 100% rename from client/src/static/icons/duotone/stomach.svg rename to src/static/icons/duotone/stomach.svg diff --git a/client/src/static/icons/duotone/stop-circle.svg b/src/static/icons/duotone/stop-circle.svg similarity index 100% rename from client/src/static/icons/duotone/stop-circle.svg rename to src/static/icons/duotone/stop-circle.svg diff --git a/client/src/static/icons/duotone/stop.svg b/src/static/icons/duotone/stop.svg similarity index 100% rename from client/src/static/icons/duotone/stop.svg rename to src/static/icons/duotone/stop.svg diff --git a/client/src/static/icons/duotone/stopwatch.svg b/src/static/icons/duotone/stopwatch.svg similarity index 100% rename from client/src/static/icons/duotone/stopwatch.svg rename to src/static/icons/duotone/stopwatch.svg diff --git a/client/src/static/icons/duotone/store-alt.svg b/src/static/icons/duotone/store-alt.svg similarity index 100% rename from client/src/static/icons/duotone/store-alt.svg rename to src/static/icons/duotone/store-alt.svg diff --git a/client/src/static/icons/duotone/store.svg b/src/static/icons/duotone/store.svg similarity index 100% rename from client/src/static/icons/duotone/store.svg rename to src/static/icons/duotone/store.svg diff --git a/client/src/static/icons/duotone/stream.svg b/src/static/icons/duotone/stream.svg similarity index 100% rename from client/src/static/icons/duotone/stream.svg rename to src/static/icons/duotone/stream.svg diff --git a/client/src/static/icons/duotone/street-view.svg b/src/static/icons/duotone/street-view.svg similarity index 100% rename from client/src/static/icons/duotone/street-view.svg rename to src/static/icons/duotone/street-view.svg diff --git a/client/src/static/icons/duotone/stretcher.svg b/src/static/icons/duotone/stretcher.svg similarity index 100% rename from client/src/static/icons/duotone/stretcher.svg rename to src/static/icons/duotone/stretcher.svg diff --git a/client/src/static/icons/duotone/strikethrough.svg b/src/static/icons/duotone/strikethrough.svg similarity index 100% rename from client/src/static/icons/duotone/strikethrough.svg rename to src/static/icons/duotone/strikethrough.svg diff --git a/client/src/static/icons/duotone/stroopwafel.svg b/src/static/icons/duotone/stroopwafel.svg similarity index 100% rename from client/src/static/icons/duotone/stroopwafel.svg rename to src/static/icons/duotone/stroopwafel.svg diff --git a/client/src/static/icons/duotone/subscript.svg b/src/static/icons/duotone/subscript.svg similarity index 100% rename from client/src/static/icons/duotone/subscript.svg rename to src/static/icons/duotone/subscript.svg diff --git a/client/src/static/icons/duotone/subway.svg b/src/static/icons/duotone/subway.svg similarity index 100% rename from client/src/static/icons/duotone/subway.svg rename to src/static/icons/duotone/subway.svg diff --git a/client/src/static/icons/duotone/suitcase-rolling.svg b/src/static/icons/duotone/suitcase-rolling.svg similarity index 100% rename from client/src/static/icons/duotone/suitcase-rolling.svg rename to src/static/icons/duotone/suitcase-rolling.svg diff --git a/client/src/static/icons/duotone/suitcase.svg b/src/static/icons/duotone/suitcase.svg similarity index 100% rename from client/src/static/icons/duotone/suitcase.svg rename to src/static/icons/duotone/suitcase.svg diff --git a/client/src/static/icons/duotone/sun-cloud.svg b/src/static/icons/duotone/sun-cloud.svg similarity index 100% rename from client/src/static/icons/duotone/sun-cloud.svg rename to src/static/icons/duotone/sun-cloud.svg diff --git a/client/src/static/icons/duotone/sun-dust.svg b/src/static/icons/duotone/sun-dust.svg similarity index 100% rename from client/src/static/icons/duotone/sun-dust.svg rename to src/static/icons/duotone/sun-dust.svg diff --git a/client/src/static/icons/duotone/sun-haze.svg b/src/static/icons/duotone/sun-haze.svg similarity index 100% rename from client/src/static/icons/duotone/sun-haze.svg rename to src/static/icons/duotone/sun-haze.svg diff --git a/client/src/static/icons/duotone/sun.svg b/src/static/icons/duotone/sun.svg similarity index 100% rename from client/src/static/icons/duotone/sun.svg rename to src/static/icons/duotone/sun.svg diff --git a/client/src/static/icons/duotone/sunglasses.svg b/src/static/icons/duotone/sunglasses.svg similarity index 100% rename from client/src/static/icons/duotone/sunglasses.svg rename to src/static/icons/duotone/sunglasses.svg diff --git a/client/src/static/icons/duotone/sunrise.svg b/src/static/icons/duotone/sunrise.svg similarity index 100% rename from client/src/static/icons/duotone/sunrise.svg rename to src/static/icons/duotone/sunrise.svg diff --git a/client/src/static/icons/duotone/sunset.svg b/src/static/icons/duotone/sunset.svg similarity index 100% rename from client/src/static/icons/duotone/sunset.svg rename to src/static/icons/duotone/sunset.svg diff --git a/client/src/static/icons/duotone/superscript.svg b/src/static/icons/duotone/superscript.svg similarity index 100% rename from client/src/static/icons/duotone/superscript.svg rename to src/static/icons/duotone/superscript.svg diff --git a/client/src/static/icons/duotone/surprise.svg b/src/static/icons/duotone/surprise.svg similarity index 100% rename from client/src/static/icons/duotone/surprise.svg rename to src/static/icons/duotone/surprise.svg diff --git a/client/src/static/icons/duotone/swatchbook.svg b/src/static/icons/duotone/swatchbook.svg similarity index 100% rename from client/src/static/icons/duotone/swatchbook.svg rename to src/static/icons/duotone/swatchbook.svg diff --git a/client/src/static/icons/duotone/swimmer.svg b/src/static/icons/duotone/swimmer.svg similarity index 100% rename from client/src/static/icons/duotone/swimmer.svg rename to src/static/icons/duotone/swimmer.svg diff --git a/client/src/static/icons/duotone/swimming-pool.svg b/src/static/icons/duotone/swimming-pool.svg similarity index 100% rename from client/src/static/icons/duotone/swimming-pool.svg rename to src/static/icons/duotone/swimming-pool.svg diff --git a/client/src/static/icons/duotone/sword-laser-alt.svg b/src/static/icons/duotone/sword-laser-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sword-laser-alt.svg rename to src/static/icons/duotone/sword-laser-alt.svg diff --git a/client/src/static/icons/duotone/sword-laser.svg b/src/static/icons/duotone/sword-laser.svg similarity index 100% rename from client/src/static/icons/duotone/sword-laser.svg rename to src/static/icons/duotone/sword-laser.svg diff --git a/client/src/static/icons/duotone/sword.svg b/src/static/icons/duotone/sword.svg similarity index 100% rename from client/src/static/icons/duotone/sword.svg rename to src/static/icons/duotone/sword.svg diff --git a/client/src/static/icons/duotone/swords-laser.svg b/src/static/icons/duotone/swords-laser.svg similarity index 100% rename from client/src/static/icons/duotone/swords-laser.svg rename to src/static/icons/duotone/swords-laser.svg diff --git a/client/src/static/icons/duotone/swords.svg b/src/static/icons/duotone/swords.svg similarity index 100% rename from client/src/static/icons/duotone/swords.svg rename to src/static/icons/duotone/swords.svg diff --git a/client/src/static/icons/duotone/synagogue.svg b/src/static/icons/duotone/synagogue.svg similarity index 100% rename from client/src/static/icons/duotone/synagogue.svg rename to src/static/icons/duotone/synagogue.svg diff --git a/client/src/static/icons/duotone/sync-alt.svg b/src/static/icons/duotone/sync-alt.svg similarity index 100% rename from client/src/static/icons/duotone/sync-alt.svg rename to src/static/icons/duotone/sync-alt.svg diff --git a/client/src/static/icons/duotone/sync.svg b/src/static/icons/duotone/sync.svg similarity index 100% rename from client/src/static/icons/duotone/sync.svg rename to src/static/icons/duotone/sync.svg diff --git a/client/src/static/icons/duotone/syringe.svg b/src/static/icons/duotone/syringe.svg similarity index 100% rename from client/src/static/icons/duotone/syringe.svg rename to src/static/icons/duotone/syringe.svg diff --git a/client/src/static/icons/duotone/table-tennis.svg b/src/static/icons/duotone/table-tennis.svg similarity index 100% rename from client/src/static/icons/duotone/table-tennis.svg rename to src/static/icons/duotone/table-tennis.svg diff --git a/client/src/static/icons/duotone/table.svg b/src/static/icons/duotone/table.svg similarity index 100% rename from client/src/static/icons/duotone/table.svg rename to src/static/icons/duotone/table.svg diff --git a/client/src/static/icons/duotone/tablet-alt.svg b/src/static/icons/duotone/tablet-alt.svg similarity index 100% rename from client/src/static/icons/duotone/tablet-alt.svg rename to src/static/icons/duotone/tablet-alt.svg diff --git a/client/src/static/icons/duotone/tablet-android-alt.svg b/src/static/icons/duotone/tablet-android-alt.svg similarity index 100% rename from client/src/static/icons/duotone/tablet-android-alt.svg rename to src/static/icons/duotone/tablet-android-alt.svg diff --git a/client/src/static/icons/duotone/tablet-android.svg b/src/static/icons/duotone/tablet-android.svg similarity index 100% rename from client/src/static/icons/duotone/tablet-android.svg rename to src/static/icons/duotone/tablet-android.svg diff --git a/client/src/static/icons/duotone/tablet-rugged.svg b/src/static/icons/duotone/tablet-rugged.svg similarity index 100% rename from client/src/static/icons/duotone/tablet-rugged.svg rename to src/static/icons/duotone/tablet-rugged.svg diff --git a/client/src/static/icons/duotone/tablet.svg b/src/static/icons/duotone/tablet.svg similarity index 100% rename from client/src/static/icons/duotone/tablet.svg rename to src/static/icons/duotone/tablet.svg diff --git a/client/src/static/icons/duotone/tablets.svg b/src/static/icons/duotone/tablets.svg similarity index 100% rename from client/src/static/icons/duotone/tablets.svg rename to src/static/icons/duotone/tablets.svg diff --git a/client/src/static/icons/duotone/tachometer-alt-average.svg b/src/static/icons/duotone/tachometer-alt-average.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer-alt-average.svg rename to src/static/icons/duotone/tachometer-alt-average.svg diff --git a/client/src/static/icons/duotone/tachometer-alt-fast.svg b/src/static/icons/duotone/tachometer-alt-fast.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer-alt-fast.svg rename to src/static/icons/duotone/tachometer-alt-fast.svg diff --git a/client/src/static/icons/duotone/tachometer-alt-fastest.svg b/src/static/icons/duotone/tachometer-alt-fastest.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer-alt-fastest.svg rename to src/static/icons/duotone/tachometer-alt-fastest.svg diff --git a/client/src/static/icons/duotone/tachometer-alt-slow.svg b/src/static/icons/duotone/tachometer-alt-slow.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer-alt-slow.svg rename to src/static/icons/duotone/tachometer-alt-slow.svg diff --git a/client/src/static/icons/duotone/tachometer-alt-slowest.svg b/src/static/icons/duotone/tachometer-alt-slowest.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer-alt-slowest.svg rename to src/static/icons/duotone/tachometer-alt-slowest.svg diff --git a/client/src/static/icons/duotone/tachometer-alt.svg b/src/static/icons/duotone/tachometer-alt.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer-alt.svg rename to src/static/icons/duotone/tachometer-alt.svg diff --git a/client/src/static/icons/duotone/tachometer-average.svg b/src/static/icons/duotone/tachometer-average.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer-average.svg rename to src/static/icons/duotone/tachometer-average.svg diff --git a/client/src/static/icons/duotone/tachometer-fast.svg b/src/static/icons/duotone/tachometer-fast.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer-fast.svg rename to src/static/icons/duotone/tachometer-fast.svg diff --git a/client/src/static/icons/duotone/tachometer-fastest.svg b/src/static/icons/duotone/tachometer-fastest.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer-fastest.svg rename to src/static/icons/duotone/tachometer-fastest.svg diff --git a/client/src/static/icons/duotone/tachometer-slow.svg b/src/static/icons/duotone/tachometer-slow.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer-slow.svg rename to src/static/icons/duotone/tachometer-slow.svg diff --git a/client/src/static/icons/duotone/tachometer-slowest.svg b/src/static/icons/duotone/tachometer-slowest.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer-slowest.svg rename to src/static/icons/duotone/tachometer-slowest.svg diff --git a/client/src/static/icons/duotone/tachometer.svg b/src/static/icons/duotone/tachometer.svg similarity index 100% rename from client/src/static/icons/duotone/tachometer.svg rename to src/static/icons/duotone/tachometer.svg diff --git a/client/src/static/icons/duotone/taco.svg b/src/static/icons/duotone/taco.svg similarity index 100% rename from client/src/static/icons/duotone/taco.svg rename to src/static/icons/duotone/taco.svg diff --git a/client/src/static/icons/duotone/tag.svg b/src/static/icons/duotone/tag.svg similarity index 100% rename from client/src/static/icons/duotone/tag.svg rename to src/static/icons/duotone/tag.svg diff --git a/client/src/static/icons/duotone/tags.svg b/src/static/icons/duotone/tags.svg similarity index 100% rename from client/src/static/icons/duotone/tags.svg rename to src/static/icons/duotone/tags.svg diff --git a/client/src/static/icons/duotone/tally.svg b/src/static/icons/duotone/tally.svg similarity index 100% rename from client/src/static/icons/duotone/tally.svg rename to src/static/icons/duotone/tally.svg diff --git a/client/src/static/icons/duotone/tanakh.svg b/src/static/icons/duotone/tanakh.svg similarity index 100% rename from client/src/static/icons/duotone/tanakh.svg rename to src/static/icons/duotone/tanakh.svg diff --git a/client/src/static/icons/duotone/tape.svg b/src/static/icons/duotone/tape.svg similarity index 100% rename from client/src/static/icons/duotone/tape.svg rename to src/static/icons/duotone/tape.svg diff --git a/client/src/static/icons/duotone/tasks-alt.svg b/src/static/icons/duotone/tasks-alt.svg similarity index 100% rename from client/src/static/icons/duotone/tasks-alt.svg rename to src/static/icons/duotone/tasks-alt.svg diff --git a/client/src/static/icons/duotone/tasks.svg b/src/static/icons/duotone/tasks.svg similarity index 100% rename from client/src/static/icons/duotone/tasks.svg rename to src/static/icons/duotone/tasks.svg diff --git a/client/src/static/icons/duotone/taxi.svg b/src/static/icons/duotone/taxi.svg similarity index 100% rename from client/src/static/icons/duotone/taxi.svg rename to src/static/icons/duotone/taxi.svg diff --git a/client/src/static/icons/duotone/teeth-open.svg b/src/static/icons/duotone/teeth-open.svg similarity index 100% rename from client/src/static/icons/duotone/teeth-open.svg rename to src/static/icons/duotone/teeth-open.svg diff --git a/client/src/static/icons/duotone/teeth.svg b/src/static/icons/duotone/teeth.svg similarity index 100% rename from client/src/static/icons/duotone/teeth.svg rename to src/static/icons/duotone/teeth.svg diff --git a/client/src/static/icons/duotone/telescope.svg b/src/static/icons/duotone/telescope.svg similarity index 100% rename from client/src/static/icons/duotone/telescope.svg rename to src/static/icons/duotone/telescope.svg diff --git a/client/src/static/icons/duotone/temperature-down.svg b/src/static/icons/duotone/temperature-down.svg similarity index 100% rename from client/src/static/icons/duotone/temperature-down.svg rename to src/static/icons/duotone/temperature-down.svg diff --git a/client/src/static/icons/duotone/temperature-frigid.svg b/src/static/icons/duotone/temperature-frigid.svg similarity index 100% rename from client/src/static/icons/duotone/temperature-frigid.svg rename to src/static/icons/duotone/temperature-frigid.svg diff --git a/client/src/static/icons/duotone/temperature-high.svg b/src/static/icons/duotone/temperature-high.svg similarity index 100% rename from client/src/static/icons/duotone/temperature-high.svg rename to src/static/icons/duotone/temperature-high.svg diff --git a/client/src/static/icons/duotone/temperature-hot.svg b/src/static/icons/duotone/temperature-hot.svg similarity index 100% rename from client/src/static/icons/duotone/temperature-hot.svg rename to src/static/icons/duotone/temperature-hot.svg diff --git a/client/src/static/icons/duotone/temperature-low.svg b/src/static/icons/duotone/temperature-low.svg similarity index 100% rename from client/src/static/icons/duotone/temperature-low.svg rename to src/static/icons/duotone/temperature-low.svg diff --git a/client/src/static/icons/duotone/temperature-up.svg b/src/static/icons/duotone/temperature-up.svg similarity index 100% rename from client/src/static/icons/duotone/temperature-up.svg rename to src/static/icons/duotone/temperature-up.svg diff --git a/client/src/static/icons/duotone/tenge.svg b/src/static/icons/duotone/tenge.svg similarity index 100% rename from client/src/static/icons/duotone/tenge.svg rename to src/static/icons/duotone/tenge.svg diff --git a/client/src/static/icons/duotone/tennis-ball.svg b/src/static/icons/duotone/tennis-ball.svg similarity index 100% rename from client/src/static/icons/duotone/tennis-ball.svg rename to src/static/icons/duotone/tennis-ball.svg diff --git a/client/src/static/icons/duotone/terminal.svg b/src/static/icons/duotone/terminal.svg similarity index 100% rename from client/src/static/icons/duotone/terminal.svg rename to src/static/icons/duotone/terminal.svg diff --git a/client/src/static/icons/duotone/text-height.svg b/src/static/icons/duotone/text-height.svg similarity index 100% rename from client/src/static/icons/duotone/text-height.svg rename to src/static/icons/duotone/text-height.svg diff --git a/client/src/static/icons/duotone/text-size.svg b/src/static/icons/duotone/text-size.svg similarity index 100% rename from client/src/static/icons/duotone/text-size.svg rename to src/static/icons/duotone/text-size.svg diff --git a/client/src/static/icons/duotone/text-width.svg b/src/static/icons/duotone/text-width.svg similarity index 100% rename from client/src/static/icons/duotone/text-width.svg rename to src/static/icons/duotone/text-width.svg diff --git a/client/src/static/icons/duotone/text.svg b/src/static/icons/duotone/text.svg similarity index 100% rename from client/src/static/icons/duotone/text.svg rename to src/static/icons/duotone/text.svg diff --git a/client/src/static/icons/duotone/th-large.svg b/src/static/icons/duotone/th-large.svg similarity index 100% rename from client/src/static/icons/duotone/th-large.svg rename to src/static/icons/duotone/th-large.svg diff --git a/client/src/static/icons/duotone/th-list.svg b/src/static/icons/duotone/th-list.svg similarity index 100% rename from client/src/static/icons/duotone/th-list.svg rename to src/static/icons/duotone/th-list.svg diff --git a/client/src/static/icons/duotone/th.svg b/src/static/icons/duotone/th.svg similarity index 100% rename from client/src/static/icons/duotone/th.svg rename to src/static/icons/duotone/th.svg diff --git a/client/src/static/icons/duotone/theater-masks.svg b/src/static/icons/duotone/theater-masks.svg similarity index 100% rename from client/src/static/icons/duotone/theater-masks.svg rename to src/static/icons/duotone/theater-masks.svg diff --git a/client/src/static/icons/duotone/thermometer-empty.svg b/src/static/icons/duotone/thermometer-empty.svg similarity index 100% rename from client/src/static/icons/duotone/thermometer-empty.svg rename to src/static/icons/duotone/thermometer-empty.svg diff --git a/client/src/static/icons/duotone/thermometer-full.svg b/src/static/icons/duotone/thermometer-full.svg similarity index 100% rename from client/src/static/icons/duotone/thermometer-full.svg rename to src/static/icons/duotone/thermometer-full.svg diff --git a/client/src/static/icons/duotone/thermometer-half.svg b/src/static/icons/duotone/thermometer-half.svg similarity index 100% rename from client/src/static/icons/duotone/thermometer-half.svg rename to src/static/icons/duotone/thermometer-half.svg diff --git a/client/src/static/icons/duotone/thermometer-quarter.svg b/src/static/icons/duotone/thermometer-quarter.svg similarity index 100% rename from client/src/static/icons/duotone/thermometer-quarter.svg rename to src/static/icons/duotone/thermometer-quarter.svg diff --git a/client/src/static/icons/duotone/thermometer-three-quarters.svg b/src/static/icons/duotone/thermometer-three-quarters.svg similarity index 100% rename from client/src/static/icons/duotone/thermometer-three-quarters.svg rename to src/static/icons/duotone/thermometer-three-quarters.svg diff --git a/client/src/static/icons/duotone/thermometer.svg b/src/static/icons/duotone/thermometer.svg similarity index 100% rename from client/src/static/icons/duotone/thermometer.svg rename to src/static/icons/duotone/thermometer.svg diff --git a/client/src/static/icons/duotone/theta.svg b/src/static/icons/duotone/theta.svg similarity index 100% rename from client/src/static/icons/duotone/theta.svg rename to src/static/icons/duotone/theta.svg diff --git a/client/src/static/icons/duotone/thumbs-down.svg b/src/static/icons/duotone/thumbs-down.svg similarity index 100% rename from client/src/static/icons/duotone/thumbs-down.svg rename to src/static/icons/duotone/thumbs-down.svg diff --git a/client/src/static/icons/duotone/thumbs-up.svg b/src/static/icons/duotone/thumbs-up.svg similarity index 100% rename from client/src/static/icons/duotone/thumbs-up.svg rename to src/static/icons/duotone/thumbs-up.svg diff --git a/client/src/static/icons/duotone/thumbtack.svg b/src/static/icons/duotone/thumbtack.svg similarity index 100% rename from client/src/static/icons/duotone/thumbtack.svg rename to src/static/icons/duotone/thumbtack.svg diff --git a/client/src/static/icons/duotone/thunderstorm-moon.svg b/src/static/icons/duotone/thunderstorm-moon.svg similarity index 100% rename from client/src/static/icons/duotone/thunderstorm-moon.svg rename to src/static/icons/duotone/thunderstorm-moon.svg diff --git a/client/src/static/icons/duotone/thunderstorm-sun.svg b/src/static/icons/duotone/thunderstorm-sun.svg similarity index 100% rename from client/src/static/icons/duotone/thunderstorm-sun.svg rename to src/static/icons/duotone/thunderstorm-sun.svg diff --git a/client/src/static/icons/duotone/thunderstorm.svg b/src/static/icons/duotone/thunderstorm.svg similarity index 100% rename from client/src/static/icons/duotone/thunderstorm.svg rename to src/static/icons/duotone/thunderstorm.svg diff --git a/client/src/static/icons/duotone/ticket-alt.svg b/src/static/icons/duotone/ticket-alt.svg similarity index 100% rename from client/src/static/icons/duotone/ticket-alt.svg rename to src/static/icons/duotone/ticket-alt.svg diff --git a/client/src/static/icons/duotone/ticket.svg b/src/static/icons/duotone/ticket.svg similarity index 100% rename from client/src/static/icons/duotone/ticket.svg rename to src/static/icons/duotone/ticket.svg diff --git a/client/src/static/icons/duotone/tilde.svg b/src/static/icons/duotone/tilde.svg similarity index 100% rename from client/src/static/icons/duotone/tilde.svg rename to src/static/icons/duotone/tilde.svg diff --git a/client/src/static/icons/duotone/times-circle.svg b/src/static/icons/duotone/times-circle.svg similarity index 100% rename from client/src/static/icons/duotone/times-circle.svg rename to src/static/icons/duotone/times-circle.svg diff --git a/client/src/static/icons/duotone/times-hexagon.svg b/src/static/icons/duotone/times-hexagon.svg similarity index 100% rename from client/src/static/icons/duotone/times-hexagon.svg rename to src/static/icons/duotone/times-hexagon.svg diff --git a/client/src/static/icons/duotone/times-octagon.svg b/src/static/icons/duotone/times-octagon.svg similarity index 100% rename from client/src/static/icons/duotone/times-octagon.svg rename to src/static/icons/duotone/times-octagon.svg diff --git a/client/src/static/icons/duotone/times-square.svg b/src/static/icons/duotone/times-square.svg similarity index 100% rename from client/src/static/icons/duotone/times-square.svg rename to src/static/icons/duotone/times-square.svg diff --git a/client/src/static/icons/duotone/times.svg b/src/static/icons/duotone/times.svg similarity index 100% rename from client/src/static/icons/duotone/times.svg rename to src/static/icons/duotone/times.svg diff --git a/client/src/static/icons/duotone/tint-slash.svg b/src/static/icons/duotone/tint-slash.svg similarity index 100% rename from client/src/static/icons/duotone/tint-slash.svg rename to src/static/icons/duotone/tint-slash.svg diff --git a/client/src/static/icons/duotone/tint.svg b/src/static/icons/duotone/tint.svg similarity index 100% rename from client/src/static/icons/duotone/tint.svg rename to src/static/icons/duotone/tint.svg diff --git a/client/src/static/icons/duotone/tire-flat.svg b/src/static/icons/duotone/tire-flat.svg similarity index 100% rename from client/src/static/icons/duotone/tire-flat.svg rename to src/static/icons/duotone/tire-flat.svg diff --git a/client/src/static/icons/duotone/tire-pressure-warning.svg b/src/static/icons/duotone/tire-pressure-warning.svg similarity index 100% rename from client/src/static/icons/duotone/tire-pressure-warning.svg rename to src/static/icons/duotone/tire-pressure-warning.svg diff --git a/client/src/static/icons/duotone/tire-rugged.svg b/src/static/icons/duotone/tire-rugged.svg similarity index 100% rename from client/src/static/icons/duotone/tire-rugged.svg rename to src/static/icons/duotone/tire-rugged.svg diff --git a/client/src/static/icons/duotone/tire.svg b/src/static/icons/duotone/tire.svg similarity index 100% rename from client/src/static/icons/duotone/tire.svg rename to src/static/icons/duotone/tire.svg diff --git a/client/src/static/icons/duotone/tired.svg b/src/static/icons/duotone/tired.svg similarity index 100% rename from client/src/static/icons/duotone/tired.svg rename to src/static/icons/duotone/tired.svg diff --git a/client/src/static/icons/duotone/toggle-off.svg b/src/static/icons/duotone/toggle-off.svg similarity index 100% rename from client/src/static/icons/duotone/toggle-off.svg rename to src/static/icons/duotone/toggle-off.svg diff --git a/client/src/static/icons/duotone/toggle-on.svg b/src/static/icons/duotone/toggle-on.svg similarity index 100% rename from client/src/static/icons/duotone/toggle-on.svg rename to src/static/icons/duotone/toggle-on.svg diff --git a/client/src/static/icons/duotone/toilet-paper-alt.svg b/src/static/icons/duotone/toilet-paper-alt.svg similarity index 100% rename from client/src/static/icons/duotone/toilet-paper-alt.svg rename to src/static/icons/duotone/toilet-paper-alt.svg diff --git a/client/src/static/icons/duotone/toilet-paper.svg b/src/static/icons/duotone/toilet-paper.svg similarity index 100% rename from client/src/static/icons/duotone/toilet-paper.svg rename to src/static/icons/duotone/toilet-paper.svg diff --git a/client/src/static/icons/duotone/toilet.svg b/src/static/icons/duotone/toilet.svg similarity index 100% rename from client/src/static/icons/duotone/toilet.svg rename to src/static/icons/duotone/toilet.svg diff --git a/client/src/static/icons/duotone/tombstone-alt.svg b/src/static/icons/duotone/tombstone-alt.svg similarity index 100% rename from client/src/static/icons/duotone/tombstone-alt.svg rename to src/static/icons/duotone/tombstone-alt.svg diff --git a/client/src/static/icons/duotone/tombstone.svg b/src/static/icons/duotone/tombstone.svg similarity index 100% rename from client/src/static/icons/duotone/tombstone.svg rename to src/static/icons/duotone/tombstone.svg diff --git a/client/src/static/icons/duotone/toolbox.svg b/src/static/icons/duotone/toolbox.svg similarity index 100% rename from client/src/static/icons/duotone/toolbox.svg rename to src/static/icons/duotone/toolbox.svg diff --git a/client/src/static/icons/duotone/tools.svg b/src/static/icons/duotone/tools.svg similarity index 100% rename from client/src/static/icons/duotone/tools.svg rename to src/static/icons/duotone/tools.svg diff --git a/client/src/static/icons/duotone/tooth.svg b/src/static/icons/duotone/tooth.svg similarity index 100% rename from client/src/static/icons/duotone/tooth.svg rename to src/static/icons/duotone/tooth.svg diff --git a/client/src/static/icons/duotone/toothbrush.svg b/src/static/icons/duotone/toothbrush.svg similarity index 100% rename from client/src/static/icons/duotone/toothbrush.svg rename to src/static/icons/duotone/toothbrush.svg diff --git a/client/src/static/icons/duotone/torah.svg b/src/static/icons/duotone/torah.svg similarity index 100% rename from client/src/static/icons/duotone/torah.svg rename to src/static/icons/duotone/torah.svg diff --git a/client/src/static/icons/duotone/torii-gate.svg b/src/static/icons/duotone/torii-gate.svg similarity index 100% rename from client/src/static/icons/duotone/torii-gate.svg rename to src/static/icons/duotone/torii-gate.svg diff --git a/client/src/static/icons/duotone/tornado.svg b/src/static/icons/duotone/tornado.svg similarity index 100% rename from client/src/static/icons/duotone/tornado.svg rename to src/static/icons/duotone/tornado.svg diff --git a/client/src/static/icons/duotone/tractor.svg b/src/static/icons/duotone/tractor.svg similarity index 100% rename from client/src/static/icons/duotone/tractor.svg rename to src/static/icons/duotone/tractor.svg diff --git a/client/src/static/icons/duotone/trademark.svg b/src/static/icons/duotone/trademark.svg similarity index 100% rename from client/src/static/icons/duotone/trademark.svg rename to src/static/icons/duotone/trademark.svg diff --git a/client/src/static/icons/duotone/traffic-cone.svg b/src/static/icons/duotone/traffic-cone.svg similarity index 100% rename from client/src/static/icons/duotone/traffic-cone.svg rename to src/static/icons/duotone/traffic-cone.svg diff --git a/client/src/static/icons/duotone/traffic-light-go.svg b/src/static/icons/duotone/traffic-light-go.svg similarity index 100% rename from client/src/static/icons/duotone/traffic-light-go.svg rename to src/static/icons/duotone/traffic-light-go.svg diff --git a/client/src/static/icons/duotone/traffic-light-slow.svg b/src/static/icons/duotone/traffic-light-slow.svg similarity index 100% rename from client/src/static/icons/duotone/traffic-light-slow.svg rename to src/static/icons/duotone/traffic-light-slow.svg diff --git a/client/src/static/icons/duotone/traffic-light-stop.svg b/src/static/icons/duotone/traffic-light-stop.svg similarity index 100% rename from client/src/static/icons/duotone/traffic-light-stop.svg rename to src/static/icons/duotone/traffic-light-stop.svg diff --git a/client/src/static/icons/duotone/traffic-light.svg b/src/static/icons/duotone/traffic-light.svg similarity index 100% rename from client/src/static/icons/duotone/traffic-light.svg rename to src/static/icons/duotone/traffic-light.svg diff --git a/client/src/static/icons/duotone/trailer.svg b/src/static/icons/duotone/trailer.svg similarity index 100% rename from client/src/static/icons/duotone/trailer.svg rename to src/static/icons/duotone/trailer.svg diff --git a/client/src/static/icons/duotone/train.svg b/src/static/icons/duotone/train.svg similarity index 100% rename from client/src/static/icons/duotone/train.svg rename to src/static/icons/duotone/train.svg diff --git a/client/src/static/icons/duotone/tram.svg b/src/static/icons/duotone/tram.svg similarity index 100% rename from client/src/static/icons/duotone/tram.svg rename to src/static/icons/duotone/tram.svg diff --git a/client/src/static/icons/duotone/transgender-alt.svg b/src/static/icons/duotone/transgender-alt.svg similarity index 100% rename from client/src/static/icons/duotone/transgender-alt.svg rename to src/static/icons/duotone/transgender-alt.svg diff --git a/client/src/static/icons/duotone/transgender.svg b/src/static/icons/duotone/transgender.svg similarity index 100% rename from client/src/static/icons/duotone/transgender.svg rename to src/static/icons/duotone/transgender.svg diff --git a/client/src/static/icons/duotone/transporter-1.svg b/src/static/icons/duotone/transporter-1.svg similarity index 100% rename from client/src/static/icons/duotone/transporter-1.svg rename to src/static/icons/duotone/transporter-1.svg diff --git a/client/src/static/icons/duotone/transporter-2.svg b/src/static/icons/duotone/transporter-2.svg similarity index 100% rename from client/src/static/icons/duotone/transporter-2.svg rename to src/static/icons/duotone/transporter-2.svg diff --git a/client/src/static/icons/duotone/transporter-3.svg b/src/static/icons/duotone/transporter-3.svg similarity index 100% rename from client/src/static/icons/duotone/transporter-3.svg rename to src/static/icons/duotone/transporter-3.svg diff --git a/client/src/static/icons/duotone/transporter-empty.svg b/src/static/icons/duotone/transporter-empty.svg similarity index 100% rename from client/src/static/icons/duotone/transporter-empty.svg rename to src/static/icons/duotone/transporter-empty.svg diff --git a/client/src/static/icons/duotone/transporter.svg b/src/static/icons/duotone/transporter.svg similarity index 100% rename from client/src/static/icons/duotone/transporter.svg rename to src/static/icons/duotone/transporter.svg diff --git a/client/src/static/icons/duotone/trash-alt.svg b/src/static/icons/duotone/trash-alt.svg similarity index 100% rename from client/src/static/icons/duotone/trash-alt.svg rename to src/static/icons/duotone/trash-alt.svg diff --git a/client/src/static/icons/duotone/trash-restore-alt.svg b/src/static/icons/duotone/trash-restore-alt.svg similarity index 100% rename from client/src/static/icons/duotone/trash-restore-alt.svg rename to src/static/icons/duotone/trash-restore-alt.svg diff --git a/client/src/static/icons/duotone/trash-restore.svg b/src/static/icons/duotone/trash-restore.svg similarity index 100% rename from client/src/static/icons/duotone/trash-restore.svg rename to src/static/icons/duotone/trash-restore.svg diff --git a/client/src/static/icons/duotone/trash-undo-alt.svg b/src/static/icons/duotone/trash-undo-alt.svg similarity index 100% rename from client/src/static/icons/duotone/trash-undo-alt.svg rename to src/static/icons/duotone/trash-undo-alt.svg diff --git a/client/src/static/icons/duotone/trash-undo.svg b/src/static/icons/duotone/trash-undo.svg similarity index 100% rename from client/src/static/icons/duotone/trash-undo.svg rename to src/static/icons/duotone/trash-undo.svg diff --git a/client/src/static/icons/duotone/trash.svg b/src/static/icons/duotone/trash.svg similarity index 100% rename from client/src/static/icons/duotone/trash.svg rename to src/static/icons/duotone/trash.svg diff --git a/client/src/static/icons/duotone/treasure-chest.svg b/src/static/icons/duotone/treasure-chest.svg similarity index 100% rename from client/src/static/icons/duotone/treasure-chest.svg rename to src/static/icons/duotone/treasure-chest.svg diff --git a/client/src/static/icons/duotone/tree-alt.svg b/src/static/icons/duotone/tree-alt.svg similarity index 100% rename from client/src/static/icons/duotone/tree-alt.svg rename to src/static/icons/duotone/tree-alt.svg diff --git a/client/src/static/icons/duotone/tree-christmas.svg b/src/static/icons/duotone/tree-christmas.svg similarity index 100% rename from client/src/static/icons/duotone/tree-christmas.svg rename to src/static/icons/duotone/tree-christmas.svg diff --git a/client/src/static/icons/duotone/tree-decorated.svg b/src/static/icons/duotone/tree-decorated.svg similarity index 100% rename from client/src/static/icons/duotone/tree-decorated.svg rename to src/static/icons/duotone/tree-decorated.svg diff --git a/client/src/static/icons/duotone/tree-large.svg b/src/static/icons/duotone/tree-large.svg similarity index 100% rename from client/src/static/icons/duotone/tree-large.svg rename to src/static/icons/duotone/tree-large.svg diff --git a/client/src/static/icons/duotone/tree-palm.svg b/src/static/icons/duotone/tree-palm.svg similarity index 100% rename from client/src/static/icons/duotone/tree-palm.svg rename to src/static/icons/duotone/tree-palm.svg diff --git a/client/src/static/icons/duotone/tree.svg b/src/static/icons/duotone/tree.svg similarity index 100% rename from client/src/static/icons/duotone/tree.svg rename to src/static/icons/duotone/tree.svg diff --git a/client/src/static/icons/duotone/trees.svg b/src/static/icons/duotone/trees.svg similarity index 100% rename from client/src/static/icons/duotone/trees.svg rename to src/static/icons/duotone/trees.svg diff --git a/client/src/static/icons/duotone/triangle-music.svg b/src/static/icons/duotone/triangle-music.svg similarity index 100% rename from client/src/static/icons/duotone/triangle-music.svg rename to src/static/icons/duotone/triangle-music.svg diff --git a/client/src/static/icons/duotone/triangle.svg b/src/static/icons/duotone/triangle.svg similarity index 100% rename from client/src/static/icons/duotone/triangle.svg rename to src/static/icons/duotone/triangle.svg diff --git a/client/src/static/icons/duotone/trophy-alt.svg b/src/static/icons/duotone/trophy-alt.svg similarity index 100% rename from client/src/static/icons/duotone/trophy-alt.svg rename to src/static/icons/duotone/trophy-alt.svg diff --git a/client/src/static/icons/duotone/trophy.svg b/src/static/icons/duotone/trophy.svg similarity index 100% rename from client/src/static/icons/duotone/trophy.svg rename to src/static/icons/duotone/trophy.svg diff --git a/client/src/static/icons/duotone/truck-container.svg b/src/static/icons/duotone/truck-container.svg similarity index 100% rename from client/src/static/icons/duotone/truck-container.svg rename to src/static/icons/duotone/truck-container.svg diff --git a/client/src/static/icons/duotone/truck-couch.svg b/src/static/icons/duotone/truck-couch.svg similarity index 100% rename from client/src/static/icons/duotone/truck-couch.svg rename to src/static/icons/duotone/truck-couch.svg diff --git a/client/src/static/icons/duotone/truck-loading.svg b/src/static/icons/duotone/truck-loading.svg similarity index 100% rename from client/src/static/icons/duotone/truck-loading.svg rename to src/static/icons/duotone/truck-loading.svg diff --git a/client/src/static/icons/duotone/truck-monster.svg b/src/static/icons/duotone/truck-monster.svg similarity index 100% rename from client/src/static/icons/duotone/truck-monster.svg rename to src/static/icons/duotone/truck-monster.svg diff --git a/client/src/static/icons/duotone/truck-moving.svg b/src/static/icons/duotone/truck-moving.svg similarity index 100% rename from client/src/static/icons/duotone/truck-moving.svg rename to src/static/icons/duotone/truck-moving.svg diff --git a/client/src/static/icons/duotone/truck-pickup.svg b/src/static/icons/duotone/truck-pickup.svg similarity index 100% rename from client/src/static/icons/duotone/truck-pickup.svg rename to src/static/icons/duotone/truck-pickup.svg diff --git a/client/src/static/icons/duotone/truck-plow.svg b/src/static/icons/duotone/truck-plow.svg similarity index 100% rename from client/src/static/icons/duotone/truck-plow.svg rename to src/static/icons/duotone/truck-plow.svg diff --git a/client/src/static/icons/duotone/truck-ramp.svg b/src/static/icons/duotone/truck-ramp.svg similarity index 100% rename from client/src/static/icons/duotone/truck-ramp.svg rename to src/static/icons/duotone/truck-ramp.svg diff --git a/client/src/static/icons/duotone/truck.svg b/src/static/icons/duotone/truck.svg similarity index 100% rename from client/src/static/icons/duotone/truck.svg rename to src/static/icons/duotone/truck.svg diff --git a/client/src/static/icons/duotone/trumpet.svg b/src/static/icons/duotone/trumpet.svg similarity index 100% rename from client/src/static/icons/duotone/trumpet.svg rename to src/static/icons/duotone/trumpet.svg diff --git a/client/src/static/icons/duotone/tshirt.svg b/src/static/icons/duotone/tshirt.svg similarity index 100% rename from client/src/static/icons/duotone/tshirt.svg rename to src/static/icons/duotone/tshirt.svg diff --git a/client/src/static/icons/duotone/tty.svg b/src/static/icons/duotone/tty.svg similarity index 100% rename from client/src/static/icons/duotone/tty.svg rename to src/static/icons/duotone/tty.svg diff --git a/client/src/static/icons/duotone/turkey.svg b/src/static/icons/duotone/turkey.svg similarity index 100% rename from client/src/static/icons/duotone/turkey.svg rename to src/static/icons/duotone/turkey.svg diff --git a/client/src/static/icons/duotone/turntable.svg b/src/static/icons/duotone/turntable.svg similarity index 100% rename from client/src/static/icons/duotone/turntable.svg rename to src/static/icons/duotone/turntable.svg diff --git a/client/src/static/icons/duotone/turtle.svg b/src/static/icons/duotone/turtle.svg similarity index 100% rename from client/src/static/icons/duotone/turtle.svg rename to src/static/icons/duotone/turtle.svg diff --git a/client/src/static/icons/duotone/tv-alt.svg b/src/static/icons/duotone/tv-alt.svg similarity index 100% rename from client/src/static/icons/duotone/tv-alt.svg rename to src/static/icons/duotone/tv-alt.svg diff --git a/client/src/static/icons/duotone/tv-music.svg b/src/static/icons/duotone/tv-music.svg similarity index 100% rename from client/src/static/icons/duotone/tv-music.svg rename to src/static/icons/duotone/tv-music.svg diff --git a/client/src/static/icons/duotone/tv-retro.svg b/src/static/icons/duotone/tv-retro.svg similarity index 100% rename from client/src/static/icons/duotone/tv-retro.svg rename to src/static/icons/duotone/tv-retro.svg diff --git a/client/src/static/icons/duotone/tv.svg b/src/static/icons/duotone/tv.svg similarity index 100% rename from client/src/static/icons/duotone/tv.svg rename to src/static/icons/duotone/tv.svg diff --git a/client/src/static/icons/duotone/typewriter.svg b/src/static/icons/duotone/typewriter.svg similarity index 100% rename from client/src/static/icons/duotone/typewriter.svg rename to src/static/icons/duotone/typewriter.svg diff --git a/client/src/static/icons/duotone/ufo-beam.svg b/src/static/icons/duotone/ufo-beam.svg similarity index 100% rename from client/src/static/icons/duotone/ufo-beam.svg rename to src/static/icons/duotone/ufo-beam.svg diff --git a/client/src/static/icons/duotone/ufo.svg b/src/static/icons/duotone/ufo.svg similarity index 100% rename from client/src/static/icons/duotone/ufo.svg rename to src/static/icons/duotone/ufo.svg diff --git a/client/src/static/icons/duotone/umbrella-beach.svg b/src/static/icons/duotone/umbrella-beach.svg similarity index 100% rename from client/src/static/icons/duotone/umbrella-beach.svg rename to src/static/icons/duotone/umbrella-beach.svg diff --git a/client/src/static/icons/duotone/umbrella.svg b/src/static/icons/duotone/umbrella.svg similarity index 100% rename from client/src/static/icons/duotone/umbrella.svg rename to src/static/icons/duotone/umbrella.svg diff --git a/client/src/static/icons/duotone/underline.svg b/src/static/icons/duotone/underline.svg similarity index 100% rename from client/src/static/icons/duotone/underline.svg rename to src/static/icons/duotone/underline.svg diff --git a/client/src/static/icons/duotone/undo-alt.svg b/src/static/icons/duotone/undo-alt.svg similarity index 100% rename from client/src/static/icons/duotone/undo-alt.svg rename to src/static/icons/duotone/undo-alt.svg diff --git a/client/src/static/icons/duotone/undo.svg b/src/static/icons/duotone/undo.svg similarity index 100% rename from client/src/static/icons/duotone/undo.svg rename to src/static/icons/duotone/undo.svg diff --git a/client/src/static/icons/duotone/unicorn.svg b/src/static/icons/duotone/unicorn.svg similarity index 100% rename from client/src/static/icons/duotone/unicorn.svg rename to src/static/icons/duotone/unicorn.svg diff --git a/client/src/static/icons/duotone/union.svg b/src/static/icons/duotone/union.svg similarity index 100% rename from client/src/static/icons/duotone/union.svg rename to src/static/icons/duotone/union.svg diff --git a/client/src/static/icons/duotone/universal-access.svg b/src/static/icons/duotone/universal-access.svg similarity index 100% rename from client/src/static/icons/duotone/universal-access.svg rename to src/static/icons/duotone/universal-access.svg diff --git a/client/src/static/icons/duotone/university.svg b/src/static/icons/duotone/university.svg similarity index 100% rename from client/src/static/icons/duotone/university.svg rename to src/static/icons/duotone/university.svg diff --git a/client/src/static/icons/duotone/unlink.svg b/src/static/icons/duotone/unlink.svg similarity index 100% rename from client/src/static/icons/duotone/unlink.svg rename to src/static/icons/duotone/unlink.svg diff --git a/client/src/static/icons/duotone/unlock-alt.svg b/src/static/icons/duotone/unlock-alt.svg similarity index 100% rename from client/src/static/icons/duotone/unlock-alt.svg rename to src/static/icons/duotone/unlock-alt.svg diff --git a/client/src/static/icons/duotone/unlock.svg b/src/static/icons/duotone/unlock.svg similarity index 100% rename from client/src/static/icons/duotone/unlock.svg rename to src/static/icons/duotone/unlock.svg diff --git a/client/src/static/icons/duotone/upload.svg b/src/static/icons/duotone/upload.svg similarity index 100% rename from client/src/static/icons/duotone/upload.svg rename to src/static/icons/duotone/upload.svg diff --git a/client/src/static/icons/duotone/usb-drive.svg b/src/static/icons/duotone/usb-drive.svg similarity index 100% rename from client/src/static/icons/duotone/usb-drive.svg rename to src/static/icons/duotone/usb-drive.svg diff --git a/client/src/static/icons/duotone/usd-circle.svg b/src/static/icons/duotone/usd-circle.svg similarity index 100% rename from client/src/static/icons/duotone/usd-circle.svg rename to src/static/icons/duotone/usd-circle.svg diff --git a/client/src/static/icons/duotone/usd-square.svg b/src/static/icons/duotone/usd-square.svg similarity index 100% rename from client/src/static/icons/duotone/usd-square.svg rename to src/static/icons/duotone/usd-square.svg diff --git a/client/src/static/icons/duotone/user-alien.svg b/src/static/icons/duotone/user-alien.svg similarity index 100% rename from client/src/static/icons/duotone/user-alien.svg rename to src/static/icons/duotone/user-alien.svg diff --git a/client/src/static/icons/duotone/user-alt-slash.svg b/src/static/icons/duotone/user-alt-slash.svg similarity index 100% rename from client/src/static/icons/duotone/user-alt-slash.svg rename to src/static/icons/duotone/user-alt-slash.svg diff --git a/client/src/static/icons/duotone/user-alt.svg b/src/static/icons/duotone/user-alt.svg similarity index 100% rename from client/src/static/icons/duotone/user-alt.svg rename to src/static/icons/duotone/user-alt.svg diff --git a/client/src/static/icons/duotone/user-astronaut.svg b/src/static/icons/duotone/user-astronaut.svg similarity index 100% rename from client/src/static/icons/duotone/user-astronaut.svg rename to src/static/icons/duotone/user-astronaut.svg diff --git a/client/src/static/icons/duotone/user-chart.svg b/src/static/icons/duotone/user-chart.svg similarity index 100% rename from client/src/static/icons/duotone/user-chart.svg rename to src/static/icons/duotone/user-chart.svg diff --git a/client/src/static/icons/duotone/user-check.svg b/src/static/icons/duotone/user-check.svg similarity index 100% rename from client/src/static/icons/duotone/user-check.svg rename to src/static/icons/duotone/user-check.svg diff --git a/client/src/static/icons/duotone/user-circle.svg b/src/static/icons/duotone/user-circle.svg similarity index 100% rename from client/src/static/icons/duotone/user-circle.svg rename to src/static/icons/duotone/user-circle.svg diff --git a/client/src/static/icons/duotone/user-clock.svg b/src/static/icons/duotone/user-clock.svg similarity index 100% rename from client/src/static/icons/duotone/user-clock.svg rename to src/static/icons/duotone/user-clock.svg diff --git a/client/src/static/icons/duotone/user-cog.svg b/src/static/icons/duotone/user-cog.svg similarity index 100% rename from client/src/static/icons/duotone/user-cog.svg rename to src/static/icons/duotone/user-cog.svg diff --git a/client/src/static/icons/duotone/user-cowboy.svg b/src/static/icons/duotone/user-cowboy.svg similarity index 100% rename from client/src/static/icons/duotone/user-cowboy.svg rename to src/static/icons/duotone/user-cowboy.svg diff --git a/client/src/static/icons/duotone/user-crown.svg b/src/static/icons/duotone/user-crown.svg similarity index 100% rename from client/src/static/icons/duotone/user-crown.svg rename to src/static/icons/duotone/user-crown.svg diff --git a/client/src/static/icons/duotone/user-edit.svg b/src/static/icons/duotone/user-edit.svg similarity index 100% rename from client/src/static/icons/duotone/user-edit.svg rename to src/static/icons/duotone/user-edit.svg diff --git a/client/src/static/icons/duotone/user-friends.svg b/src/static/icons/duotone/user-friends.svg similarity index 100% rename from client/src/static/icons/duotone/user-friends.svg rename to src/static/icons/duotone/user-friends.svg diff --git a/client/src/static/icons/duotone/user-graduate.svg b/src/static/icons/duotone/user-graduate.svg similarity index 100% rename from client/src/static/icons/duotone/user-graduate.svg rename to src/static/icons/duotone/user-graduate.svg diff --git a/client/src/static/icons/duotone/user-hard-hat.svg b/src/static/icons/duotone/user-hard-hat.svg similarity index 100% rename from client/src/static/icons/duotone/user-hard-hat.svg rename to src/static/icons/duotone/user-hard-hat.svg diff --git a/client/src/static/icons/duotone/user-headset.svg b/src/static/icons/duotone/user-headset.svg similarity index 100% rename from client/src/static/icons/duotone/user-headset.svg rename to src/static/icons/duotone/user-headset.svg diff --git a/client/src/static/icons/duotone/user-injured.svg b/src/static/icons/duotone/user-injured.svg similarity index 100% rename from client/src/static/icons/duotone/user-injured.svg rename to src/static/icons/duotone/user-injured.svg diff --git a/client/src/static/icons/duotone/user-lock.svg b/src/static/icons/duotone/user-lock.svg similarity index 100% rename from client/src/static/icons/duotone/user-lock.svg rename to src/static/icons/duotone/user-lock.svg diff --git a/client/src/static/icons/duotone/user-md-chat.svg b/src/static/icons/duotone/user-md-chat.svg similarity index 100% rename from client/src/static/icons/duotone/user-md-chat.svg rename to src/static/icons/duotone/user-md-chat.svg diff --git a/client/src/static/icons/duotone/user-md.svg b/src/static/icons/duotone/user-md.svg similarity index 100% rename from client/src/static/icons/duotone/user-md.svg rename to src/static/icons/duotone/user-md.svg diff --git a/client/src/static/icons/duotone/user-minus.svg b/src/static/icons/duotone/user-minus.svg similarity index 100% rename from client/src/static/icons/duotone/user-minus.svg rename to src/static/icons/duotone/user-minus.svg diff --git a/client/src/static/icons/duotone/user-music.svg b/src/static/icons/duotone/user-music.svg similarity index 100% rename from client/src/static/icons/duotone/user-music.svg rename to src/static/icons/duotone/user-music.svg diff --git a/client/src/static/icons/duotone/user-ninja.svg b/src/static/icons/duotone/user-ninja.svg similarity index 100% rename from client/src/static/icons/duotone/user-ninja.svg rename to src/static/icons/duotone/user-ninja.svg diff --git a/client/src/static/icons/duotone/user-nurse.svg b/src/static/icons/duotone/user-nurse.svg similarity index 100% rename from client/src/static/icons/duotone/user-nurse.svg rename to src/static/icons/duotone/user-nurse.svg diff --git a/client/src/static/icons/duotone/user-plus.svg b/src/static/icons/duotone/user-plus.svg similarity index 100% rename from client/src/static/icons/duotone/user-plus.svg rename to src/static/icons/duotone/user-plus.svg diff --git a/client/src/static/icons/duotone/user-robot.svg b/src/static/icons/duotone/user-robot.svg similarity index 100% rename from client/src/static/icons/duotone/user-robot.svg rename to src/static/icons/duotone/user-robot.svg diff --git a/client/src/static/icons/duotone/user-secret.svg b/src/static/icons/duotone/user-secret.svg similarity index 100% rename from client/src/static/icons/duotone/user-secret.svg rename to src/static/icons/duotone/user-secret.svg diff --git a/client/src/static/icons/duotone/user-shield.svg b/src/static/icons/duotone/user-shield.svg similarity index 100% rename from client/src/static/icons/duotone/user-shield.svg rename to src/static/icons/duotone/user-shield.svg diff --git a/client/src/static/icons/duotone/user-slash.svg b/src/static/icons/duotone/user-slash.svg similarity index 100% rename from client/src/static/icons/duotone/user-slash.svg rename to src/static/icons/duotone/user-slash.svg diff --git a/client/src/static/icons/duotone/user-tag.svg b/src/static/icons/duotone/user-tag.svg similarity index 100% rename from client/src/static/icons/duotone/user-tag.svg rename to src/static/icons/duotone/user-tag.svg diff --git a/client/src/static/icons/duotone/user-tie.svg b/src/static/icons/duotone/user-tie.svg similarity index 100% rename from client/src/static/icons/duotone/user-tie.svg rename to src/static/icons/duotone/user-tie.svg diff --git a/client/src/static/icons/duotone/user-times.svg b/src/static/icons/duotone/user-times.svg similarity index 100% rename from client/src/static/icons/duotone/user-times.svg rename to src/static/icons/duotone/user-times.svg diff --git a/client/src/static/icons/duotone/user-visor.svg b/src/static/icons/duotone/user-visor.svg similarity index 100% rename from client/src/static/icons/duotone/user-visor.svg rename to src/static/icons/duotone/user-visor.svg diff --git a/client/src/static/icons/duotone/user.svg b/src/static/icons/duotone/user.svg similarity index 100% rename from client/src/static/icons/duotone/user.svg rename to src/static/icons/duotone/user.svg diff --git a/client/src/static/icons/duotone/users-class.svg b/src/static/icons/duotone/users-class.svg similarity index 100% rename from client/src/static/icons/duotone/users-class.svg rename to src/static/icons/duotone/users-class.svg diff --git a/client/src/static/icons/duotone/users-cog.svg b/src/static/icons/duotone/users-cog.svg similarity index 100% rename from client/src/static/icons/duotone/users-cog.svg rename to src/static/icons/duotone/users-cog.svg diff --git a/client/src/static/icons/duotone/users-crown.svg b/src/static/icons/duotone/users-crown.svg similarity index 100% rename from client/src/static/icons/duotone/users-crown.svg rename to src/static/icons/duotone/users-crown.svg diff --git a/client/src/static/icons/duotone/users-medical.svg b/src/static/icons/duotone/users-medical.svg similarity index 100% rename from client/src/static/icons/duotone/users-medical.svg rename to src/static/icons/duotone/users-medical.svg diff --git a/client/src/static/icons/duotone/users.svg b/src/static/icons/duotone/users.svg similarity index 100% rename from client/src/static/icons/duotone/users.svg rename to src/static/icons/duotone/users.svg diff --git a/client/src/static/icons/duotone/utensil-fork.svg b/src/static/icons/duotone/utensil-fork.svg similarity index 100% rename from client/src/static/icons/duotone/utensil-fork.svg rename to src/static/icons/duotone/utensil-fork.svg diff --git a/client/src/static/icons/duotone/utensil-knife.svg b/src/static/icons/duotone/utensil-knife.svg similarity index 100% rename from client/src/static/icons/duotone/utensil-knife.svg rename to src/static/icons/duotone/utensil-knife.svg diff --git a/client/src/static/icons/duotone/utensil-spoon.svg b/src/static/icons/duotone/utensil-spoon.svg similarity index 100% rename from client/src/static/icons/duotone/utensil-spoon.svg rename to src/static/icons/duotone/utensil-spoon.svg diff --git a/client/src/static/icons/duotone/utensils-alt.svg b/src/static/icons/duotone/utensils-alt.svg similarity index 100% rename from client/src/static/icons/duotone/utensils-alt.svg rename to src/static/icons/duotone/utensils-alt.svg diff --git a/client/src/static/icons/duotone/utensils.svg b/src/static/icons/duotone/utensils.svg similarity index 100% rename from client/src/static/icons/duotone/utensils.svg rename to src/static/icons/duotone/utensils.svg diff --git a/client/src/static/icons/duotone/vacuum-robot.svg b/src/static/icons/duotone/vacuum-robot.svg similarity index 100% rename from client/src/static/icons/duotone/vacuum-robot.svg rename to src/static/icons/duotone/vacuum-robot.svg diff --git a/client/src/static/icons/duotone/vacuum.svg b/src/static/icons/duotone/vacuum.svg similarity index 100% rename from client/src/static/icons/duotone/vacuum.svg rename to src/static/icons/duotone/vacuum.svg diff --git a/client/src/static/icons/duotone/value-absolute.svg b/src/static/icons/duotone/value-absolute.svg similarity index 100% rename from client/src/static/icons/duotone/value-absolute.svg rename to src/static/icons/duotone/value-absolute.svg diff --git a/client/src/static/icons/duotone/vector-square.svg b/src/static/icons/duotone/vector-square.svg similarity index 100% rename from client/src/static/icons/duotone/vector-square.svg rename to src/static/icons/duotone/vector-square.svg diff --git a/client/src/static/icons/duotone/venus-double.svg b/src/static/icons/duotone/venus-double.svg similarity index 100% rename from client/src/static/icons/duotone/venus-double.svg rename to src/static/icons/duotone/venus-double.svg diff --git a/client/src/static/icons/duotone/venus-mars.svg b/src/static/icons/duotone/venus-mars.svg similarity index 100% rename from client/src/static/icons/duotone/venus-mars.svg rename to src/static/icons/duotone/venus-mars.svg diff --git a/client/src/static/icons/duotone/venus.svg b/src/static/icons/duotone/venus.svg similarity index 100% rename from client/src/static/icons/duotone/venus.svg rename to src/static/icons/duotone/venus.svg diff --git a/client/src/static/icons/duotone/vhs.svg b/src/static/icons/duotone/vhs.svg similarity index 100% rename from client/src/static/icons/duotone/vhs.svg rename to src/static/icons/duotone/vhs.svg diff --git a/client/src/static/icons/duotone/vial.svg b/src/static/icons/duotone/vial.svg similarity index 100% rename from client/src/static/icons/duotone/vial.svg rename to src/static/icons/duotone/vial.svg diff --git a/client/src/static/icons/duotone/vials.svg b/src/static/icons/duotone/vials.svg similarity index 100% rename from client/src/static/icons/duotone/vials.svg rename to src/static/icons/duotone/vials.svg diff --git a/client/src/static/icons/duotone/video-plus.svg b/src/static/icons/duotone/video-plus.svg similarity index 100% rename from client/src/static/icons/duotone/video-plus.svg rename to src/static/icons/duotone/video-plus.svg diff --git a/client/src/static/icons/duotone/video-slash.svg b/src/static/icons/duotone/video-slash.svg similarity index 100% rename from client/src/static/icons/duotone/video-slash.svg rename to src/static/icons/duotone/video-slash.svg diff --git a/client/src/static/icons/duotone/video.svg b/src/static/icons/duotone/video.svg similarity index 100% rename from client/src/static/icons/duotone/video.svg rename to src/static/icons/duotone/video.svg diff --git a/client/src/static/icons/duotone/vihara.svg b/src/static/icons/duotone/vihara.svg similarity index 100% rename from client/src/static/icons/duotone/vihara.svg rename to src/static/icons/duotone/vihara.svg diff --git a/client/src/static/icons/duotone/violin.svg b/src/static/icons/duotone/violin.svg similarity index 100% rename from client/src/static/icons/duotone/violin.svg rename to src/static/icons/duotone/violin.svg diff --git a/client/src/static/icons/duotone/voicemail.svg b/src/static/icons/duotone/voicemail.svg similarity index 100% rename from client/src/static/icons/duotone/voicemail.svg rename to src/static/icons/duotone/voicemail.svg diff --git a/client/src/static/icons/duotone/volcano.svg b/src/static/icons/duotone/volcano.svg similarity index 100% rename from client/src/static/icons/duotone/volcano.svg rename to src/static/icons/duotone/volcano.svg diff --git a/client/src/static/icons/duotone/volleyball-ball.svg b/src/static/icons/duotone/volleyball-ball.svg similarity index 100% rename from client/src/static/icons/duotone/volleyball-ball.svg rename to src/static/icons/duotone/volleyball-ball.svg diff --git a/client/src/static/icons/duotone/volume-down.svg b/src/static/icons/duotone/volume-down.svg similarity index 100% rename from client/src/static/icons/duotone/volume-down.svg rename to src/static/icons/duotone/volume-down.svg diff --git a/client/src/static/icons/duotone/volume-mute.svg b/src/static/icons/duotone/volume-mute.svg similarity index 100% rename from client/src/static/icons/duotone/volume-mute.svg rename to src/static/icons/duotone/volume-mute.svg diff --git a/client/src/static/icons/duotone/volume-off.svg b/src/static/icons/duotone/volume-off.svg similarity index 100% rename from client/src/static/icons/duotone/volume-off.svg rename to src/static/icons/duotone/volume-off.svg diff --git a/client/src/static/icons/duotone/volume-slash.svg b/src/static/icons/duotone/volume-slash.svg similarity index 100% rename from client/src/static/icons/duotone/volume-slash.svg rename to src/static/icons/duotone/volume-slash.svg diff --git a/client/src/static/icons/duotone/volume-up.svg b/src/static/icons/duotone/volume-up.svg similarity index 100% rename from client/src/static/icons/duotone/volume-up.svg rename to src/static/icons/duotone/volume-up.svg diff --git a/client/src/static/icons/duotone/volume.svg b/src/static/icons/duotone/volume.svg similarity index 100% rename from client/src/static/icons/duotone/volume.svg rename to src/static/icons/duotone/volume.svg diff --git a/client/src/static/icons/duotone/vote-nay.svg b/src/static/icons/duotone/vote-nay.svg similarity index 100% rename from client/src/static/icons/duotone/vote-nay.svg rename to src/static/icons/duotone/vote-nay.svg diff --git a/client/src/static/icons/duotone/vote-yea.svg b/src/static/icons/duotone/vote-yea.svg similarity index 100% rename from client/src/static/icons/duotone/vote-yea.svg rename to src/static/icons/duotone/vote-yea.svg diff --git a/client/src/static/icons/duotone/vr-cardboard.svg b/src/static/icons/duotone/vr-cardboard.svg similarity index 100% rename from client/src/static/icons/duotone/vr-cardboard.svg rename to src/static/icons/duotone/vr-cardboard.svg diff --git a/client/src/static/icons/duotone/wagon-covered.svg b/src/static/icons/duotone/wagon-covered.svg similarity index 100% rename from client/src/static/icons/duotone/wagon-covered.svg rename to src/static/icons/duotone/wagon-covered.svg diff --git a/client/src/static/icons/duotone/walker.svg b/src/static/icons/duotone/walker.svg similarity index 100% rename from client/src/static/icons/duotone/walker.svg rename to src/static/icons/duotone/walker.svg diff --git a/client/src/static/icons/duotone/walkie-talkie.svg b/src/static/icons/duotone/walkie-talkie.svg similarity index 100% rename from client/src/static/icons/duotone/walkie-talkie.svg rename to src/static/icons/duotone/walkie-talkie.svg diff --git a/client/src/static/icons/duotone/walking.svg b/src/static/icons/duotone/walking.svg similarity index 100% rename from client/src/static/icons/duotone/walking.svg rename to src/static/icons/duotone/walking.svg diff --git a/client/src/static/icons/duotone/wallet.svg b/src/static/icons/duotone/wallet.svg similarity index 100% rename from client/src/static/icons/duotone/wallet.svg rename to src/static/icons/duotone/wallet.svg diff --git a/client/src/static/icons/duotone/wand-magic.svg b/src/static/icons/duotone/wand-magic.svg similarity index 100% rename from client/src/static/icons/duotone/wand-magic.svg rename to src/static/icons/duotone/wand-magic.svg diff --git a/client/src/static/icons/duotone/wand.svg b/src/static/icons/duotone/wand.svg similarity index 100% rename from client/src/static/icons/duotone/wand.svg rename to src/static/icons/duotone/wand.svg diff --git a/client/src/static/icons/duotone/warehouse-alt.svg b/src/static/icons/duotone/warehouse-alt.svg similarity index 100% rename from client/src/static/icons/duotone/warehouse-alt.svg rename to src/static/icons/duotone/warehouse-alt.svg diff --git a/client/src/static/icons/duotone/warehouse.svg b/src/static/icons/duotone/warehouse.svg similarity index 100% rename from client/src/static/icons/duotone/warehouse.svg rename to src/static/icons/duotone/warehouse.svg diff --git a/client/src/static/icons/duotone/washer.svg b/src/static/icons/duotone/washer.svg similarity index 100% rename from client/src/static/icons/duotone/washer.svg rename to src/static/icons/duotone/washer.svg diff --git a/client/src/static/icons/duotone/watch-calculator.svg b/src/static/icons/duotone/watch-calculator.svg similarity index 100% rename from client/src/static/icons/duotone/watch-calculator.svg rename to src/static/icons/duotone/watch-calculator.svg diff --git a/client/src/static/icons/duotone/watch-fitness.svg b/src/static/icons/duotone/watch-fitness.svg similarity index 100% rename from client/src/static/icons/duotone/watch-fitness.svg rename to src/static/icons/duotone/watch-fitness.svg diff --git a/client/src/static/icons/duotone/watch.svg b/src/static/icons/duotone/watch.svg similarity index 100% rename from client/src/static/icons/duotone/watch.svg rename to src/static/icons/duotone/watch.svg diff --git a/client/src/static/icons/duotone/water-lower.svg b/src/static/icons/duotone/water-lower.svg similarity index 100% rename from client/src/static/icons/duotone/water-lower.svg rename to src/static/icons/duotone/water-lower.svg diff --git a/client/src/static/icons/duotone/water-rise.svg b/src/static/icons/duotone/water-rise.svg similarity index 100% rename from client/src/static/icons/duotone/water-rise.svg rename to src/static/icons/duotone/water-rise.svg diff --git a/client/src/static/icons/duotone/water.svg b/src/static/icons/duotone/water.svg similarity index 100% rename from client/src/static/icons/duotone/water.svg rename to src/static/icons/duotone/water.svg diff --git a/client/src/static/icons/duotone/wave-sine.svg b/src/static/icons/duotone/wave-sine.svg similarity index 100% rename from client/src/static/icons/duotone/wave-sine.svg rename to src/static/icons/duotone/wave-sine.svg diff --git a/client/src/static/icons/duotone/wave-square.svg b/src/static/icons/duotone/wave-square.svg similarity index 100% rename from client/src/static/icons/duotone/wave-square.svg rename to src/static/icons/duotone/wave-square.svg diff --git a/client/src/static/icons/duotone/wave-triangle.svg b/src/static/icons/duotone/wave-triangle.svg similarity index 100% rename from client/src/static/icons/duotone/wave-triangle.svg rename to src/static/icons/duotone/wave-triangle.svg diff --git a/client/src/static/icons/duotone/waveform-path.svg b/src/static/icons/duotone/waveform-path.svg similarity index 100% rename from client/src/static/icons/duotone/waveform-path.svg rename to src/static/icons/duotone/waveform-path.svg diff --git a/client/src/static/icons/duotone/waveform.svg b/src/static/icons/duotone/waveform.svg similarity index 100% rename from client/src/static/icons/duotone/waveform.svg rename to src/static/icons/duotone/waveform.svg diff --git a/client/src/static/icons/duotone/webcam-slash.svg b/src/static/icons/duotone/webcam-slash.svg similarity index 100% rename from client/src/static/icons/duotone/webcam-slash.svg rename to src/static/icons/duotone/webcam-slash.svg diff --git a/client/src/static/icons/duotone/webcam.svg b/src/static/icons/duotone/webcam.svg similarity index 100% rename from client/src/static/icons/duotone/webcam.svg rename to src/static/icons/duotone/webcam.svg diff --git a/client/src/static/icons/duotone/weight-hanging.svg b/src/static/icons/duotone/weight-hanging.svg similarity index 100% rename from client/src/static/icons/duotone/weight-hanging.svg rename to src/static/icons/duotone/weight-hanging.svg diff --git a/client/src/static/icons/duotone/weight.svg b/src/static/icons/duotone/weight.svg similarity index 100% rename from client/src/static/icons/duotone/weight.svg rename to src/static/icons/duotone/weight.svg diff --git a/client/src/static/icons/duotone/whale.svg b/src/static/icons/duotone/whale.svg similarity index 100% rename from client/src/static/icons/duotone/whale.svg rename to src/static/icons/duotone/whale.svg diff --git a/client/src/static/icons/duotone/wheat.svg b/src/static/icons/duotone/wheat.svg similarity index 100% rename from client/src/static/icons/duotone/wheat.svg rename to src/static/icons/duotone/wheat.svg diff --git a/client/src/static/icons/duotone/wheelchair.svg b/src/static/icons/duotone/wheelchair.svg similarity index 100% rename from client/src/static/icons/duotone/wheelchair.svg rename to src/static/icons/duotone/wheelchair.svg diff --git a/client/src/static/icons/duotone/whistle.svg b/src/static/icons/duotone/whistle.svg similarity index 100% rename from client/src/static/icons/duotone/whistle.svg rename to src/static/icons/duotone/whistle.svg diff --git a/client/src/static/icons/duotone/wifi-1.svg b/src/static/icons/duotone/wifi-1.svg similarity index 100% rename from client/src/static/icons/duotone/wifi-1.svg rename to src/static/icons/duotone/wifi-1.svg diff --git a/client/src/static/icons/duotone/wifi-2.svg b/src/static/icons/duotone/wifi-2.svg similarity index 100% rename from client/src/static/icons/duotone/wifi-2.svg rename to src/static/icons/duotone/wifi-2.svg diff --git a/client/src/static/icons/duotone/wifi-slash.svg b/src/static/icons/duotone/wifi-slash.svg similarity index 100% rename from client/src/static/icons/duotone/wifi-slash.svg rename to src/static/icons/duotone/wifi-slash.svg diff --git a/client/src/static/icons/duotone/wifi.svg b/src/static/icons/duotone/wifi.svg similarity index 100% rename from client/src/static/icons/duotone/wifi.svg rename to src/static/icons/duotone/wifi.svg diff --git a/client/src/static/icons/duotone/wind-turbine.svg b/src/static/icons/duotone/wind-turbine.svg similarity index 100% rename from client/src/static/icons/duotone/wind-turbine.svg rename to src/static/icons/duotone/wind-turbine.svg diff --git a/client/src/static/icons/duotone/wind-warning.svg b/src/static/icons/duotone/wind-warning.svg similarity index 100% rename from client/src/static/icons/duotone/wind-warning.svg rename to src/static/icons/duotone/wind-warning.svg diff --git a/client/src/static/icons/duotone/wind.svg b/src/static/icons/duotone/wind.svg similarity index 100% rename from client/src/static/icons/duotone/wind.svg rename to src/static/icons/duotone/wind.svg diff --git a/client/src/static/icons/duotone/window-alt.svg b/src/static/icons/duotone/window-alt.svg similarity index 100% rename from client/src/static/icons/duotone/window-alt.svg rename to src/static/icons/duotone/window-alt.svg diff --git a/client/src/static/icons/duotone/window-close.svg b/src/static/icons/duotone/window-close.svg similarity index 100% rename from client/src/static/icons/duotone/window-close.svg rename to src/static/icons/duotone/window-close.svg diff --git a/client/src/static/icons/duotone/window-frame-open.svg b/src/static/icons/duotone/window-frame-open.svg similarity index 100% rename from client/src/static/icons/duotone/window-frame-open.svg rename to src/static/icons/duotone/window-frame-open.svg diff --git a/client/src/static/icons/duotone/window-frame.svg b/src/static/icons/duotone/window-frame.svg similarity index 100% rename from client/src/static/icons/duotone/window-frame.svg rename to src/static/icons/duotone/window-frame.svg diff --git a/client/src/static/icons/duotone/window-maximize.svg b/src/static/icons/duotone/window-maximize.svg similarity index 100% rename from client/src/static/icons/duotone/window-maximize.svg rename to src/static/icons/duotone/window-maximize.svg diff --git a/client/src/static/icons/duotone/window-minimize.svg b/src/static/icons/duotone/window-minimize.svg similarity index 100% rename from client/src/static/icons/duotone/window-minimize.svg rename to src/static/icons/duotone/window-minimize.svg diff --git a/client/src/static/icons/duotone/window-restore.svg b/src/static/icons/duotone/window-restore.svg similarity index 100% rename from client/src/static/icons/duotone/window-restore.svg rename to src/static/icons/duotone/window-restore.svg diff --git a/client/src/static/icons/duotone/window.svg b/src/static/icons/duotone/window.svg similarity index 100% rename from client/src/static/icons/duotone/window.svg rename to src/static/icons/duotone/window.svg diff --git a/client/src/static/icons/duotone/windsock.svg b/src/static/icons/duotone/windsock.svg similarity index 100% rename from client/src/static/icons/duotone/windsock.svg rename to src/static/icons/duotone/windsock.svg diff --git a/client/src/static/icons/duotone/wine-bottle.svg b/src/static/icons/duotone/wine-bottle.svg similarity index 100% rename from client/src/static/icons/duotone/wine-bottle.svg rename to src/static/icons/duotone/wine-bottle.svg diff --git a/client/src/static/icons/duotone/wine-glass-alt.svg b/src/static/icons/duotone/wine-glass-alt.svg similarity index 100% rename from client/src/static/icons/duotone/wine-glass-alt.svg rename to src/static/icons/duotone/wine-glass-alt.svg diff --git a/client/src/static/icons/duotone/wine-glass.svg b/src/static/icons/duotone/wine-glass.svg similarity index 100% rename from client/src/static/icons/duotone/wine-glass.svg rename to src/static/icons/duotone/wine-glass.svg diff --git a/client/src/static/icons/duotone/won-sign.svg b/src/static/icons/duotone/won-sign.svg similarity index 100% rename from client/src/static/icons/duotone/won-sign.svg rename to src/static/icons/duotone/won-sign.svg diff --git a/client/src/static/icons/duotone/wreath.svg b/src/static/icons/duotone/wreath.svg similarity index 100% rename from client/src/static/icons/duotone/wreath.svg rename to src/static/icons/duotone/wreath.svg diff --git a/client/src/static/icons/duotone/wrench.svg b/src/static/icons/duotone/wrench.svg similarity index 100% rename from client/src/static/icons/duotone/wrench.svg rename to src/static/icons/duotone/wrench.svg diff --git a/client/src/static/icons/duotone/x-ray.svg b/src/static/icons/duotone/x-ray.svg similarity index 100% rename from client/src/static/icons/duotone/x-ray.svg rename to src/static/icons/duotone/x-ray.svg diff --git a/client/src/static/icons/duotone/yen-sign.svg b/src/static/icons/duotone/yen-sign.svg similarity index 100% rename from client/src/static/icons/duotone/yen-sign.svg rename to src/static/icons/duotone/yen-sign.svg diff --git a/client/src/static/icons/duotone/yin-yang.svg b/src/static/icons/duotone/yin-yang.svg similarity index 100% rename from client/src/static/icons/duotone/yin-yang.svg rename to src/static/icons/duotone/yin-yang.svg diff --git a/client/src/static/icons/light/abacus.svg b/src/static/icons/light/abacus.svg similarity index 100% rename from client/src/static/icons/light/abacus.svg rename to src/static/icons/light/abacus.svg diff --git a/client/src/static/icons/light/acorn.svg b/src/static/icons/light/acorn.svg similarity index 100% rename from client/src/static/icons/light/acorn.svg rename to src/static/icons/light/acorn.svg diff --git a/client/src/static/icons/light/ad.svg b/src/static/icons/light/ad.svg similarity index 100% rename from client/src/static/icons/light/ad.svg rename to src/static/icons/light/ad.svg diff --git a/client/src/static/icons/light/address-book.svg b/src/static/icons/light/address-book.svg similarity index 100% rename from client/src/static/icons/light/address-book.svg rename to src/static/icons/light/address-book.svg diff --git a/client/src/static/icons/light/address-card.svg b/src/static/icons/light/address-card.svg similarity index 100% rename from client/src/static/icons/light/address-card.svg rename to src/static/icons/light/address-card.svg diff --git a/client/src/static/icons/light/adjust.svg b/src/static/icons/light/adjust.svg similarity index 100% rename from client/src/static/icons/light/adjust.svg rename to src/static/icons/light/adjust.svg diff --git a/client/src/static/icons/light/air-conditioner.svg b/src/static/icons/light/air-conditioner.svg similarity index 100% rename from client/src/static/icons/light/air-conditioner.svg rename to src/static/icons/light/air-conditioner.svg diff --git a/client/src/static/icons/light/air-freshener.svg b/src/static/icons/light/air-freshener.svg similarity index 100% rename from client/src/static/icons/light/air-freshener.svg rename to src/static/icons/light/air-freshener.svg diff --git a/client/src/static/icons/light/alarm-clock.svg b/src/static/icons/light/alarm-clock.svg similarity index 100% rename from client/src/static/icons/light/alarm-clock.svg rename to src/static/icons/light/alarm-clock.svg diff --git a/client/src/static/icons/light/alarm-exclamation.svg b/src/static/icons/light/alarm-exclamation.svg similarity index 100% rename from client/src/static/icons/light/alarm-exclamation.svg rename to src/static/icons/light/alarm-exclamation.svg diff --git a/client/src/static/icons/light/alarm-plus.svg b/src/static/icons/light/alarm-plus.svg similarity index 100% rename from client/src/static/icons/light/alarm-plus.svg rename to src/static/icons/light/alarm-plus.svg diff --git a/client/src/static/icons/light/alarm-snooze.svg b/src/static/icons/light/alarm-snooze.svg similarity index 100% rename from client/src/static/icons/light/alarm-snooze.svg rename to src/static/icons/light/alarm-snooze.svg diff --git a/client/src/static/icons/light/album-collection.svg b/src/static/icons/light/album-collection.svg similarity index 100% rename from client/src/static/icons/light/album-collection.svg rename to src/static/icons/light/album-collection.svg diff --git a/client/src/static/icons/light/album.svg b/src/static/icons/light/album.svg similarity index 100% rename from client/src/static/icons/light/album.svg rename to src/static/icons/light/album.svg diff --git a/client/src/static/icons/light/alicorn.svg b/src/static/icons/light/alicorn.svg similarity index 100% rename from client/src/static/icons/light/alicorn.svg rename to src/static/icons/light/alicorn.svg diff --git a/client/src/static/icons/light/alien-monster.svg b/src/static/icons/light/alien-monster.svg similarity index 100% rename from client/src/static/icons/light/alien-monster.svg rename to src/static/icons/light/alien-monster.svg diff --git a/client/src/static/icons/light/alien.svg b/src/static/icons/light/alien.svg similarity index 100% rename from client/src/static/icons/light/alien.svg rename to src/static/icons/light/alien.svg diff --git a/client/src/static/icons/light/align-center.svg b/src/static/icons/light/align-center.svg similarity index 100% rename from client/src/static/icons/light/align-center.svg rename to src/static/icons/light/align-center.svg diff --git a/client/src/static/icons/light/align-justify.svg b/src/static/icons/light/align-justify.svg similarity index 100% rename from client/src/static/icons/light/align-justify.svg rename to src/static/icons/light/align-justify.svg diff --git a/client/src/static/icons/light/align-left.svg b/src/static/icons/light/align-left.svg similarity index 100% rename from client/src/static/icons/light/align-left.svg rename to src/static/icons/light/align-left.svg diff --git a/client/src/static/icons/light/align-right.svg b/src/static/icons/light/align-right.svg similarity index 100% rename from client/src/static/icons/light/align-right.svg rename to src/static/icons/light/align-right.svg diff --git a/client/src/static/icons/light/align-slash.svg b/src/static/icons/light/align-slash.svg similarity index 100% rename from client/src/static/icons/light/align-slash.svg rename to src/static/icons/light/align-slash.svg diff --git a/client/src/static/icons/light/allergies.svg b/src/static/icons/light/allergies.svg similarity index 100% rename from client/src/static/icons/light/allergies.svg rename to src/static/icons/light/allergies.svg diff --git a/client/src/static/icons/light/ambulance.svg b/src/static/icons/light/ambulance.svg similarity index 100% rename from client/src/static/icons/light/ambulance.svg rename to src/static/icons/light/ambulance.svg diff --git a/client/src/static/icons/light/american-sign-language-interpreting.svg b/src/static/icons/light/american-sign-language-interpreting.svg similarity index 100% rename from client/src/static/icons/light/american-sign-language-interpreting.svg rename to src/static/icons/light/american-sign-language-interpreting.svg diff --git a/client/src/static/icons/light/amp-guitar.svg b/src/static/icons/light/amp-guitar.svg similarity index 100% rename from client/src/static/icons/light/amp-guitar.svg rename to src/static/icons/light/amp-guitar.svg diff --git a/client/src/static/icons/light/analytics.svg b/src/static/icons/light/analytics.svg similarity index 100% rename from client/src/static/icons/light/analytics.svg rename to src/static/icons/light/analytics.svg diff --git a/client/src/static/icons/light/anchor.svg b/src/static/icons/light/anchor.svg similarity index 100% rename from client/src/static/icons/light/anchor.svg rename to src/static/icons/light/anchor.svg diff --git a/client/src/static/icons/light/angel.svg b/src/static/icons/light/angel.svg similarity index 100% rename from client/src/static/icons/light/angel.svg rename to src/static/icons/light/angel.svg diff --git a/client/src/static/icons/light/angle-double-down.svg b/src/static/icons/light/angle-double-down.svg similarity index 100% rename from client/src/static/icons/light/angle-double-down.svg rename to src/static/icons/light/angle-double-down.svg diff --git a/client/src/static/icons/light/angle-double-left.svg b/src/static/icons/light/angle-double-left.svg similarity index 100% rename from client/src/static/icons/light/angle-double-left.svg rename to src/static/icons/light/angle-double-left.svg diff --git a/client/src/static/icons/light/angle-double-right.svg b/src/static/icons/light/angle-double-right.svg similarity index 100% rename from client/src/static/icons/light/angle-double-right.svg rename to src/static/icons/light/angle-double-right.svg diff --git a/client/src/static/icons/light/angle-double-up.svg b/src/static/icons/light/angle-double-up.svg similarity index 100% rename from client/src/static/icons/light/angle-double-up.svg rename to src/static/icons/light/angle-double-up.svg diff --git a/client/src/static/icons/light/angle-down.svg b/src/static/icons/light/angle-down.svg similarity index 100% rename from client/src/static/icons/light/angle-down.svg rename to src/static/icons/light/angle-down.svg diff --git a/client/src/static/icons/light/angle-left.svg b/src/static/icons/light/angle-left.svg similarity index 100% rename from client/src/static/icons/light/angle-left.svg rename to src/static/icons/light/angle-left.svg diff --git a/client/src/static/icons/light/angle-right.svg b/src/static/icons/light/angle-right.svg similarity index 100% rename from client/src/static/icons/light/angle-right.svg rename to src/static/icons/light/angle-right.svg diff --git a/client/src/static/icons/light/angle-up.svg b/src/static/icons/light/angle-up.svg similarity index 100% rename from client/src/static/icons/light/angle-up.svg rename to src/static/icons/light/angle-up.svg diff --git a/client/src/static/icons/light/angry.svg b/src/static/icons/light/angry.svg similarity index 100% rename from client/src/static/icons/light/angry.svg rename to src/static/icons/light/angry.svg diff --git a/client/src/static/icons/light/ankh.svg b/src/static/icons/light/ankh.svg similarity index 100% rename from client/src/static/icons/light/ankh.svg rename to src/static/icons/light/ankh.svg diff --git a/client/src/static/icons/light/apple-alt.svg b/src/static/icons/light/apple-alt.svg similarity index 100% rename from client/src/static/icons/light/apple-alt.svg rename to src/static/icons/light/apple-alt.svg diff --git a/client/src/static/icons/light/apple-crate.svg b/src/static/icons/light/apple-crate.svg similarity index 100% rename from client/src/static/icons/light/apple-crate.svg rename to src/static/icons/light/apple-crate.svg diff --git a/client/src/static/icons/light/archive.svg b/src/static/icons/light/archive.svg similarity index 100% rename from client/src/static/icons/light/archive.svg rename to src/static/icons/light/archive.svg diff --git a/client/src/static/icons/light/archway.svg b/src/static/icons/light/archway.svg similarity index 100% rename from client/src/static/icons/light/archway.svg rename to src/static/icons/light/archway.svg diff --git a/client/src/static/icons/light/arrow-alt-circle-down.svg b/src/static/icons/light/arrow-alt-circle-down.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-circle-down.svg rename to src/static/icons/light/arrow-alt-circle-down.svg diff --git a/client/src/static/icons/light/arrow-alt-circle-left.svg b/src/static/icons/light/arrow-alt-circle-left.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-circle-left.svg rename to src/static/icons/light/arrow-alt-circle-left.svg diff --git a/client/src/static/icons/light/arrow-alt-circle-right.svg b/src/static/icons/light/arrow-alt-circle-right.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-circle-right.svg rename to src/static/icons/light/arrow-alt-circle-right.svg diff --git a/client/src/static/icons/light/arrow-alt-circle-up.svg b/src/static/icons/light/arrow-alt-circle-up.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-circle-up.svg rename to src/static/icons/light/arrow-alt-circle-up.svg diff --git a/client/src/static/icons/light/arrow-alt-down.svg b/src/static/icons/light/arrow-alt-down.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-down.svg rename to src/static/icons/light/arrow-alt-down.svg diff --git a/client/src/static/icons/light/arrow-alt-from-bottom.svg b/src/static/icons/light/arrow-alt-from-bottom.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-from-bottom.svg rename to src/static/icons/light/arrow-alt-from-bottom.svg diff --git a/client/src/static/icons/light/arrow-alt-from-left.svg b/src/static/icons/light/arrow-alt-from-left.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-from-left.svg rename to src/static/icons/light/arrow-alt-from-left.svg diff --git a/client/src/static/icons/light/arrow-alt-from-right.svg b/src/static/icons/light/arrow-alt-from-right.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-from-right.svg rename to src/static/icons/light/arrow-alt-from-right.svg diff --git a/client/src/static/icons/light/arrow-alt-from-top.svg b/src/static/icons/light/arrow-alt-from-top.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-from-top.svg rename to src/static/icons/light/arrow-alt-from-top.svg diff --git a/client/src/static/icons/light/arrow-alt-left.svg b/src/static/icons/light/arrow-alt-left.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-left.svg rename to src/static/icons/light/arrow-alt-left.svg diff --git a/client/src/static/icons/light/arrow-alt-right.svg b/src/static/icons/light/arrow-alt-right.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-right.svg rename to src/static/icons/light/arrow-alt-right.svg diff --git a/client/src/static/icons/light/arrow-alt-square-down.svg b/src/static/icons/light/arrow-alt-square-down.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-square-down.svg rename to src/static/icons/light/arrow-alt-square-down.svg diff --git a/client/src/static/icons/light/arrow-alt-square-left.svg b/src/static/icons/light/arrow-alt-square-left.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-square-left.svg rename to src/static/icons/light/arrow-alt-square-left.svg diff --git a/client/src/static/icons/light/arrow-alt-square-right.svg b/src/static/icons/light/arrow-alt-square-right.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-square-right.svg rename to src/static/icons/light/arrow-alt-square-right.svg diff --git a/client/src/static/icons/light/arrow-alt-square-up.svg b/src/static/icons/light/arrow-alt-square-up.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-square-up.svg rename to src/static/icons/light/arrow-alt-square-up.svg diff --git a/client/src/static/icons/light/arrow-alt-to-bottom.svg b/src/static/icons/light/arrow-alt-to-bottom.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-to-bottom.svg rename to src/static/icons/light/arrow-alt-to-bottom.svg diff --git a/client/src/static/icons/light/arrow-alt-to-left.svg b/src/static/icons/light/arrow-alt-to-left.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-to-left.svg rename to src/static/icons/light/arrow-alt-to-left.svg diff --git a/client/src/static/icons/light/arrow-alt-to-right.svg b/src/static/icons/light/arrow-alt-to-right.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-to-right.svg rename to src/static/icons/light/arrow-alt-to-right.svg diff --git a/client/src/static/icons/light/arrow-alt-to-top.svg b/src/static/icons/light/arrow-alt-to-top.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-to-top.svg rename to src/static/icons/light/arrow-alt-to-top.svg diff --git a/client/src/static/icons/light/arrow-alt-up.svg b/src/static/icons/light/arrow-alt-up.svg similarity index 100% rename from client/src/static/icons/light/arrow-alt-up.svg rename to src/static/icons/light/arrow-alt-up.svg diff --git a/client/src/static/icons/light/arrow-circle-down.svg b/src/static/icons/light/arrow-circle-down.svg similarity index 100% rename from client/src/static/icons/light/arrow-circle-down.svg rename to src/static/icons/light/arrow-circle-down.svg diff --git a/client/src/static/icons/light/arrow-circle-left.svg b/src/static/icons/light/arrow-circle-left.svg similarity index 100% rename from client/src/static/icons/light/arrow-circle-left.svg rename to src/static/icons/light/arrow-circle-left.svg diff --git a/client/src/static/icons/light/arrow-circle-right.svg b/src/static/icons/light/arrow-circle-right.svg similarity index 100% rename from client/src/static/icons/light/arrow-circle-right.svg rename to src/static/icons/light/arrow-circle-right.svg diff --git a/client/src/static/icons/light/arrow-circle-up.svg b/src/static/icons/light/arrow-circle-up.svg similarity index 100% rename from client/src/static/icons/light/arrow-circle-up.svg rename to src/static/icons/light/arrow-circle-up.svg diff --git a/client/src/static/icons/light/arrow-down.svg b/src/static/icons/light/arrow-down.svg similarity index 100% rename from client/src/static/icons/light/arrow-down.svg rename to src/static/icons/light/arrow-down.svg diff --git a/client/src/static/icons/light/arrow-from-bottom.svg b/src/static/icons/light/arrow-from-bottom.svg similarity index 100% rename from client/src/static/icons/light/arrow-from-bottom.svg rename to src/static/icons/light/arrow-from-bottom.svg diff --git a/client/src/static/icons/light/arrow-from-left.svg b/src/static/icons/light/arrow-from-left.svg similarity index 100% rename from client/src/static/icons/light/arrow-from-left.svg rename to src/static/icons/light/arrow-from-left.svg diff --git a/client/src/static/icons/light/arrow-from-right.svg b/src/static/icons/light/arrow-from-right.svg similarity index 100% rename from client/src/static/icons/light/arrow-from-right.svg rename to src/static/icons/light/arrow-from-right.svg diff --git a/client/src/static/icons/light/arrow-from-top.svg b/src/static/icons/light/arrow-from-top.svg similarity index 100% rename from client/src/static/icons/light/arrow-from-top.svg rename to src/static/icons/light/arrow-from-top.svg diff --git a/client/src/static/icons/light/arrow-left.svg b/src/static/icons/light/arrow-left.svg similarity index 100% rename from client/src/static/icons/light/arrow-left.svg rename to src/static/icons/light/arrow-left.svg diff --git a/client/src/static/icons/light/arrow-right.svg b/src/static/icons/light/arrow-right.svg similarity index 100% rename from client/src/static/icons/light/arrow-right.svg rename to src/static/icons/light/arrow-right.svg diff --git a/client/src/static/icons/light/arrow-square-down.svg b/src/static/icons/light/arrow-square-down.svg similarity index 100% rename from client/src/static/icons/light/arrow-square-down.svg rename to src/static/icons/light/arrow-square-down.svg diff --git a/client/src/static/icons/light/arrow-square-left.svg b/src/static/icons/light/arrow-square-left.svg similarity index 100% rename from client/src/static/icons/light/arrow-square-left.svg rename to src/static/icons/light/arrow-square-left.svg diff --git a/client/src/static/icons/light/arrow-square-right.svg b/src/static/icons/light/arrow-square-right.svg similarity index 100% rename from client/src/static/icons/light/arrow-square-right.svg rename to src/static/icons/light/arrow-square-right.svg diff --git a/client/src/static/icons/light/arrow-square-up.svg b/src/static/icons/light/arrow-square-up.svg similarity index 100% rename from client/src/static/icons/light/arrow-square-up.svg rename to src/static/icons/light/arrow-square-up.svg diff --git a/client/src/static/icons/light/arrow-to-bottom.svg b/src/static/icons/light/arrow-to-bottom.svg similarity index 100% rename from client/src/static/icons/light/arrow-to-bottom.svg rename to src/static/icons/light/arrow-to-bottom.svg diff --git a/client/src/static/icons/light/arrow-to-left.svg b/src/static/icons/light/arrow-to-left.svg similarity index 100% rename from client/src/static/icons/light/arrow-to-left.svg rename to src/static/icons/light/arrow-to-left.svg diff --git a/client/src/static/icons/light/arrow-to-right.svg b/src/static/icons/light/arrow-to-right.svg similarity index 100% rename from client/src/static/icons/light/arrow-to-right.svg rename to src/static/icons/light/arrow-to-right.svg diff --git a/client/src/static/icons/light/arrow-to-top.svg b/src/static/icons/light/arrow-to-top.svg similarity index 100% rename from client/src/static/icons/light/arrow-to-top.svg rename to src/static/icons/light/arrow-to-top.svg diff --git a/client/src/static/icons/light/arrow-up.svg b/src/static/icons/light/arrow-up.svg similarity index 100% rename from client/src/static/icons/light/arrow-up.svg rename to src/static/icons/light/arrow-up.svg diff --git a/client/src/static/icons/light/arrows-alt-h.svg b/src/static/icons/light/arrows-alt-h.svg similarity index 100% rename from client/src/static/icons/light/arrows-alt-h.svg rename to src/static/icons/light/arrows-alt-h.svg diff --git a/client/src/static/icons/light/arrows-alt-v.svg b/src/static/icons/light/arrows-alt-v.svg similarity index 100% rename from client/src/static/icons/light/arrows-alt-v.svg rename to src/static/icons/light/arrows-alt-v.svg diff --git a/client/src/static/icons/light/arrows-alt.svg b/src/static/icons/light/arrows-alt.svg similarity index 100% rename from client/src/static/icons/light/arrows-alt.svg rename to src/static/icons/light/arrows-alt.svg diff --git a/client/src/static/icons/light/arrows-h.svg b/src/static/icons/light/arrows-h.svg similarity index 100% rename from client/src/static/icons/light/arrows-h.svg rename to src/static/icons/light/arrows-h.svg diff --git a/client/src/static/icons/light/arrows-v.svg b/src/static/icons/light/arrows-v.svg similarity index 100% rename from client/src/static/icons/light/arrows-v.svg rename to src/static/icons/light/arrows-v.svg diff --git a/client/src/static/icons/light/arrows.svg b/src/static/icons/light/arrows.svg similarity index 100% rename from client/src/static/icons/light/arrows.svg rename to src/static/icons/light/arrows.svg diff --git a/client/src/static/icons/light/assistive-listening-systems.svg b/src/static/icons/light/assistive-listening-systems.svg similarity index 100% rename from client/src/static/icons/light/assistive-listening-systems.svg rename to src/static/icons/light/assistive-listening-systems.svg diff --git a/client/src/static/icons/light/asterisk.svg b/src/static/icons/light/asterisk.svg similarity index 100% rename from client/src/static/icons/light/asterisk.svg rename to src/static/icons/light/asterisk.svg diff --git a/client/src/static/icons/light/at.svg b/src/static/icons/light/at.svg similarity index 100% rename from client/src/static/icons/light/at.svg rename to src/static/icons/light/at.svg diff --git a/client/src/static/icons/light/atlas.svg b/src/static/icons/light/atlas.svg similarity index 100% rename from client/src/static/icons/light/atlas.svg rename to src/static/icons/light/atlas.svg diff --git a/client/src/static/icons/light/atom-alt.svg b/src/static/icons/light/atom-alt.svg similarity index 100% rename from client/src/static/icons/light/atom-alt.svg rename to src/static/icons/light/atom-alt.svg diff --git a/client/src/static/icons/light/atom.svg b/src/static/icons/light/atom.svg similarity index 100% rename from client/src/static/icons/light/atom.svg rename to src/static/icons/light/atom.svg diff --git a/client/src/static/icons/light/audio-description.svg b/src/static/icons/light/audio-description.svg similarity index 100% rename from client/src/static/icons/light/audio-description.svg rename to src/static/icons/light/audio-description.svg diff --git a/client/src/static/icons/light/award.svg b/src/static/icons/light/award.svg similarity index 100% rename from client/src/static/icons/light/award.svg rename to src/static/icons/light/award.svg diff --git a/client/src/static/icons/light/axe-battle.svg b/src/static/icons/light/axe-battle.svg similarity index 100% rename from client/src/static/icons/light/axe-battle.svg rename to src/static/icons/light/axe-battle.svg diff --git a/client/src/static/icons/light/axe.svg b/src/static/icons/light/axe.svg similarity index 100% rename from client/src/static/icons/light/axe.svg rename to src/static/icons/light/axe.svg diff --git a/client/src/static/icons/light/baby-carriage.svg b/src/static/icons/light/baby-carriage.svg similarity index 100% rename from client/src/static/icons/light/baby-carriage.svg rename to src/static/icons/light/baby-carriage.svg diff --git a/client/src/static/icons/light/baby.svg b/src/static/icons/light/baby.svg similarity index 100% rename from client/src/static/icons/light/baby.svg rename to src/static/icons/light/baby.svg diff --git a/client/src/static/icons/light/backpack.svg b/src/static/icons/light/backpack.svg similarity index 100% rename from client/src/static/icons/light/backpack.svg rename to src/static/icons/light/backpack.svg diff --git a/client/src/static/icons/light/backspace.svg b/src/static/icons/light/backspace.svg similarity index 100% rename from client/src/static/icons/light/backspace.svg rename to src/static/icons/light/backspace.svg diff --git a/client/src/static/icons/light/backward.svg b/src/static/icons/light/backward.svg similarity index 100% rename from client/src/static/icons/light/backward.svg rename to src/static/icons/light/backward.svg diff --git a/client/src/static/icons/light/bacon.svg b/src/static/icons/light/bacon.svg similarity index 100% rename from client/src/static/icons/light/bacon.svg rename to src/static/icons/light/bacon.svg diff --git a/client/src/static/icons/light/badge-check.svg b/src/static/icons/light/badge-check.svg similarity index 100% rename from client/src/static/icons/light/badge-check.svg rename to src/static/icons/light/badge-check.svg diff --git a/client/src/static/icons/light/badge-dollar.svg b/src/static/icons/light/badge-dollar.svg similarity index 100% rename from client/src/static/icons/light/badge-dollar.svg rename to src/static/icons/light/badge-dollar.svg diff --git a/client/src/static/icons/light/badge-percent.svg b/src/static/icons/light/badge-percent.svg similarity index 100% rename from client/src/static/icons/light/badge-percent.svg rename to src/static/icons/light/badge-percent.svg diff --git a/client/src/static/icons/light/badge-sheriff.svg b/src/static/icons/light/badge-sheriff.svg similarity index 100% rename from client/src/static/icons/light/badge-sheriff.svg rename to src/static/icons/light/badge-sheriff.svg diff --git a/client/src/static/icons/light/badge.svg b/src/static/icons/light/badge.svg similarity index 100% rename from client/src/static/icons/light/badge.svg rename to src/static/icons/light/badge.svg diff --git a/client/src/static/icons/light/badger-honey.svg b/src/static/icons/light/badger-honey.svg similarity index 100% rename from client/src/static/icons/light/badger-honey.svg rename to src/static/icons/light/badger-honey.svg diff --git a/client/src/static/icons/light/bags-shopping.svg b/src/static/icons/light/bags-shopping.svg similarity index 100% rename from client/src/static/icons/light/bags-shopping.svg rename to src/static/icons/light/bags-shopping.svg diff --git a/client/src/static/icons/light/bahai.svg b/src/static/icons/light/bahai.svg similarity index 100% rename from client/src/static/icons/light/bahai.svg rename to src/static/icons/light/bahai.svg diff --git a/client/src/static/icons/light/balance-scale-left.svg b/src/static/icons/light/balance-scale-left.svg similarity index 100% rename from client/src/static/icons/light/balance-scale-left.svg rename to src/static/icons/light/balance-scale-left.svg diff --git a/client/src/static/icons/light/balance-scale-right.svg b/src/static/icons/light/balance-scale-right.svg similarity index 100% rename from client/src/static/icons/light/balance-scale-right.svg rename to src/static/icons/light/balance-scale-right.svg diff --git a/client/src/static/icons/light/balance-scale.svg b/src/static/icons/light/balance-scale.svg similarity index 100% rename from client/src/static/icons/light/balance-scale.svg rename to src/static/icons/light/balance-scale.svg diff --git a/client/src/static/icons/light/ball-pile.svg b/src/static/icons/light/ball-pile.svg similarity index 100% rename from client/src/static/icons/light/ball-pile.svg rename to src/static/icons/light/ball-pile.svg diff --git a/client/src/static/icons/light/ballot-check.svg b/src/static/icons/light/ballot-check.svg similarity index 100% rename from client/src/static/icons/light/ballot-check.svg rename to src/static/icons/light/ballot-check.svg diff --git a/client/src/static/icons/light/ballot.svg b/src/static/icons/light/ballot.svg similarity index 100% rename from client/src/static/icons/light/ballot.svg rename to src/static/icons/light/ballot.svg diff --git a/client/src/static/icons/light/ban.svg b/src/static/icons/light/ban.svg similarity index 100% rename from client/src/static/icons/light/ban.svg rename to src/static/icons/light/ban.svg diff --git a/client/src/static/icons/light/band-aid.svg b/src/static/icons/light/band-aid.svg similarity index 100% rename from client/src/static/icons/light/band-aid.svg rename to src/static/icons/light/band-aid.svg diff --git a/client/src/static/icons/light/banjo.svg b/src/static/icons/light/banjo.svg similarity index 100% rename from client/src/static/icons/light/banjo.svg rename to src/static/icons/light/banjo.svg diff --git a/client/src/static/icons/light/barcode-alt.svg b/src/static/icons/light/barcode-alt.svg similarity index 100% rename from client/src/static/icons/light/barcode-alt.svg rename to src/static/icons/light/barcode-alt.svg diff --git a/client/src/static/icons/light/barcode-read.svg b/src/static/icons/light/barcode-read.svg similarity index 100% rename from client/src/static/icons/light/barcode-read.svg rename to src/static/icons/light/barcode-read.svg diff --git a/client/src/static/icons/light/barcode-scan.svg b/src/static/icons/light/barcode-scan.svg similarity index 100% rename from client/src/static/icons/light/barcode-scan.svg rename to src/static/icons/light/barcode-scan.svg diff --git a/client/src/static/icons/light/barcode.svg b/src/static/icons/light/barcode.svg similarity index 100% rename from client/src/static/icons/light/barcode.svg rename to src/static/icons/light/barcode.svg diff --git a/client/src/static/icons/light/bars.svg b/src/static/icons/light/bars.svg similarity index 100% rename from client/src/static/icons/light/bars.svg rename to src/static/icons/light/bars.svg diff --git a/client/src/static/icons/light/baseball-ball.svg b/src/static/icons/light/baseball-ball.svg similarity index 100% rename from client/src/static/icons/light/baseball-ball.svg rename to src/static/icons/light/baseball-ball.svg diff --git a/client/src/static/icons/light/baseball.svg b/src/static/icons/light/baseball.svg similarity index 100% rename from client/src/static/icons/light/baseball.svg rename to src/static/icons/light/baseball.svg diff --git a/client/src/static/icons/light/basketball-ball.svg b/src/static/icons/light/basketball-ball.svg similarity index 100% rename from client/src/static/icons/light/basketball-ball.svg rename to src/static/icons/light/basketball-ball.svg diff --git a/client/src/static/icons/light/basketball-hoop.svg b/src/static/icons/light/basketball-hoop.svg similarity index 100% rename from client/src/static/icons/light/basketball-hoop.svg rename to src/static/icons/light/basketball-hoop.svg diff --git a/client/src/static/icons/light/bat.svg b/src/static/icons/light/bat.svg similarity index 100% rename from client/src/static/icons/light/bat.svg rename to src/static/icons/light/bat.svg diff --git a/client/src/static/icons/light/bath.svg b/src/static/icons/light/bath.svg similarity index 100% rename from client/src/static/icons/light/bath.svg rename to src/static/icons/light/bath.svg diff --git a/client/src/static/icons/light/battery-bolt.svg b/src/static/icons/light/battery-bolt.svg similarity index 100% rename from client/src/static/icons/light/battery-bolt.svg rename to src/static/icons/light/battery-bolt.svg diff --git a/client/src/static/icons/light/battery-empty.svg b/src/static/icons/light/battery-empty.svg similarity index 100% rename from client/src/static/icons/light/battery-empty.svg rename to src/static/icons/light/battery-empty.svg diff --git a/client/src/static/icons/light/battery-full.svg b/src/static/icons/light/battery-full.svg similarity index 100% rename from client/src/static/icons/light/battery-full.svg rename to src/static/icons/light/battery-full.svg diff --git a/client/src/static/icons/light/battery-half.svg b/src/static/icons/light/battery-half.svg similarity index 100% rename from client/src/static/icons/light/battery-half.svg rename to src/static/icons/light/battery-half.svg diff --git a/client/src/static/icons/light/battery-quarter.svg b/src/static/icons/light/battery-quarter.svg similarity index 100% rename from client/src/static/icons/light/battery-quarter.svg rename to src/static/icons/light/battery-quarter.svg diff --git a/client/src/static/icons/light/battery-slash.svg b/src/static/icons/light/battery-slash.svg similarity index 100% rename from client/src/static/icons/light/battery-slash.svg rename to src/static/icons/light/battery-slash.svg diff --git a/client/src/static/icons/light/battery-three-quarters.svg b/src/static/icons/light/battery-three-quarters.svg similarity index 100% rename from client/src/static/icons/light/battery-three-quarters.svg rename to src/static/icons/light/battery-three-quarters.svg diff --git a/client/src/static/icons/light/bed-alt.svg b/src/static/icons/light/bed-alt.svg similarity index 100% rename from client/src/static/icons/light/bed-alt.svg rename to src/static/icons/light/bed-alt.svg diff --git a/client/src/static/icons/light/bed-bunk.svg b/src/static/icons/light/bed-bunk.svg similarity index 100% rename from client/src/static/icons/light/bed-bunk.svg rename to src/static/icons/light/bed-bunk.svg diff --git a/client/src/static/icons/light/bed-empty.svg b/src/static/icons/light/bed-empty.svg similarity index 100% rename from client/src/static/icons/light/bed-empty.svg rename to src/static/icons/light/bed-empty.svg diff --git a/client/src/static/icons/light/bed.svg b/src/static/icons/light/bed.svg similarity index 100% rename from client/src/static/icons/light/bed.svg rename to src/static/icons/light/bed.svg diff --git a/client/src/static/icons/light/beer.svg b/src/static/icons/light/beer.svg similarity index 100% rename from client/src/static/icons/light/beer.svg rename to src/static/icons/light/beer.svg diff --git a/client/src/static/icons/light/bell-exclamation.svg b/src/static/icons/light/bell-exclamation.svg similarity index 100% rename from client/src/static/icons/light/bell-exclamation.svg rename to src/static/icons/light/bell-exclamation.svg diff --git a/client/src/static/icons/light/bell-on.svg b/src/static/icons/light/bell-on.svg similarity index 100% rename from client/src/static/icons/light/bell-on.svg rename to src/static/icons/light/bell-on.svg diff --git a/client/src/static/icons/light/bell-plus.svg b/src/static/icons/light/bell-plus.svg similarity index 100% rename from client/src/static/icons/light/bell-plus.svg rename to src/static/icons/light/bell-plus.svg diff --git a/client/src/static/icons/light/bell-school-slash.svg b/src/static/icons/light/bell-school-slash.svg similarity index 100% rename from client/src/static/icons/light/bell-school-slash.svg rename to src/static/icons/light/bell-school-slash.svg diff --git a/client/src/static/icons/light/bell-school.svg b/src/static/icons/light/bell-school.svg similarity index 100% rename from client/src/static/icons/light/bell-school.svg rename to src/static/icons/light/bell-school.svg diff --git a/client/src/static/icons/light/bell-slash.svg b/src/static/icons/light/bell-slash.svg similarity index 100% rename from client/src/static/icons/light/bell-slash.svg rename to src/static/icons/light/bell-slash.svg diff --git a/client/src/static/icons/light/bell.svg b/src/static/icons/light/bell.svg similarity index 100% rename from client/src/static/icons/light/bell.svg rename to src/static/icons/light/bell.svg diff --git a/client/src/static/icons/light/bells.svg b/src/static/icons/light/bells.svg similarity index 100% rename from client/src/static/icons/light/bells.svg rename to src/static/icons/light/bells.svg diff --git a/client/src/static/icons/light/betamax.svg b/src/static/icons/light/betamax.svg similarity index 100% rename from client/src/static/icons/light/betamax.svg rename to src/static/icons/light/betamax.svg diff --git a/client/src/static/icons/light/bezier-curve.svg b/src/static/icons/light/bezier-curve.svg similarity index 100% rename from client/src/static/icons/light/bezier-curve.svg rename to src/static/icons/light/bezier-curve.svg diff --git a/client/src/static/icons/light/bible.svg b/src/static/icons/light/bible.svg similarity index 100% rename from client/src/static/icons/light/bible.svg rename to src/static/icons/light/bible.svg diff --git a/client/src/static/icons/light/bicycle.svg b/src/static/icons/light/bicycle.svg similarity index 100% rename from client/src/static/icons/light/bicycle.svg rename to src/static/icons/light/bicycle.svg diff --git a/client/src/static/icons/light/biking-mountain.svg b/src/static/icons/light/biking-mountain.svg similarity index 100% rename from client/src/static/icons/light/biking-mountain.svg rename to src/static/icons/light/biking-mountain.svg diff --git a/client/src/static/icons/light/biking.svg b/src/static/icons/light/biking.svg similarity index 100% rename from client/src/static/icons/light/biking.svg rename to src/static/icons/light/biking.svg diff --git a/client/src/static/icons/light/binoculars.svg b/src/static/icons/light/binoculars.svg similarity index 100% rename from client/src/static/icons/light/binoculars.svg rename to src/static/icons/light/binoculars.svg diff --git a/client/src/static/icons/light/biohazard.svg b/src/static/icons/light/biohazard.svg similarity index 100% rename from client/src/static/icons/light/biohazard.svg rename to src/static/icons/light/biohazard.svg diff --git a/client/src/static/icons/light/birthday-cake.svg b/src/static/icons/light/birthday-cake.svg similarity index 100% rename from client/src/static/icons/light/birthday-cake.svg rename to src/static/icons/light/birthday-cake.svg diff --git a/client/src/static/icons/light/blanket.svg b/src/static/icons/light/blanket.svg similarity index 100% rename from client/src/static/icons/light/blanket.svg rename to src/static/icons/light/blanket.svg diff --git a/client/src/static/icons/light/blender-phone.svg b/src/static/icons/light/blender-phone.svg similarity index 100% rename from client/src/static/icons/light/blender-phone.svg rename to src/static/icons/light/blender-phone.svg diff --git a/client/src/static/icons/light/blender.svg b/src/static/icons/light/blender.svg similarity index 100% rename from client/src/static/icons/light/blender.svg rename to src/static/icons/light/blender.svg diff --git a/client/src/static/icons/light/blind.svg b/src/static/icons/light/blind.svg similarity index 100% rename from client/src/static/icons/light/blind.svg rename to src/static/icons/light/blind.svg diff --git a/client/src/static/icons/light/blinds-open.svg b/src/static/icons/light/blinds-open.svg similarity index 100% rename from client/src/static/icons/light/blinds-open.svg rename to src/static/icons/light/blinds-open.svg diff --git a/client/src/static/icons/light/blinds-raised.svg b/src/static/icons/light/blinds-raised.svg similarity index 100% rename from client/src/static/icons/light/blinds-raised.svg rename to src/static/icons/light/blinds-raised.svg diff --git a/client/src/static/icons/light/blinds.svg b/src/static/icons/light/blinds.svg similarity index 100% rename from client/src/static/icons/light/blinds.svg rename to src/static/icons/light/blinds.svg diff --git a/client/src/static/icons/light/blog.svg b/src/static/icons/light/blog.svg similarity index 100% rename from client/src/static/icons/light/blog.svg rename to src/static/icons/light/blog.svg diff --git a/client/src/static/icons/light/bold.svg b/src/static/icons/light/bold.svg similarity index 100% rename from client/src/static/icons/light/bold.svg rename to src/static/icons/light/bold.svg diff --git a/client/src/static/icons/light/bolt.svg b/src/static/icons/light/bolt.svg similarity index 100% rename from client/src/static/icons/light/bolt.svg rename to src/static/icons/light/bolt.svg diff --git a/client/src/static/icons/light/bomb.svg b/src/static/icons/light/bomb.svg similarity index 100% rename from client/src/static/icons/light/bomb.svg rename to src/static/icons/light/bomb.svg diff --git a/client/src/static/icons/light/bone-break.svg b/src/static/icons/light/bone-break.svg similarity index 100% rename from client/src/static/icons/light/bone-break.svg rename to src/static/icons/light/bone-break.svg diff --git a/client/src/static/icons/light/bone.svg b/src/static/icons/light/bone.svg similarity index 100% rename from client/src/static/icons/light/bone.svg rename to src/static/icons/light/bone.svg diff --git a/client/src/static/icons/light/bong.svg b/src/static/icons/light/bong.svg similarity index 100% rename from client/src/static/icons/light/bong.svg rename to src/static/icons/light/bong.svg diff --git a/client/src/static/icons/light/book-alt.svg b/src/static/icons/light/book-alt.svg similarity index 100% rename from client/src/static/icons/light/book-alt.svg rename to src/static/icons/light/book-alt.svg diff --git a/client/src/static/icons/light/book-dead.svg b/src/static/icons/light/book-dead.svg similarity index 100% rename from client/src/static/icons/light/book-dead.svg rename to src/static/icons/light/book-dead.svg diff --git a/client/src/static/icons/light/book-heart.svg b/src/static/icons/light/book-heart.svg similarity index 100% rename from client/src/static/icons/light/book-heart.svg rename to src/static/icons/light/book-heart.svg diff --git a/client/src/static/icons/light/book-medical.svg b/src/static/icons/light/book-medical.svg similarity index 100% rename from client/src/static/icons/light/book-medical.svg rename to src/static/icons/light/book-medical.svg diff --git a/client/src/static/icons/light/book-open.svg b/src/static/icons/light/book-open.svg similarity index 100% rename from client/src/static/icons/light/book-open.svg rename to src/static/icons/light/book-open.svg diff --git a/client/src/static/icons/light/book-reader.svg b/src/static/icons/light/book-reader.svg similarity index 100% rename from client/src/static/icons/light/book-reader.svg rename to src/static/icons/light/book-reader.svg diff --git a/client/src/static/icons/light/book-spells.svg b/src/static/icons/light/book-spells.svg similarity index 100% rename from client/src/static/icons/light/book-spells.svg rename to src/static/icons/light/book-spells.svg diff --git a/client/src/static/icons/light/book-user.svg b/src/static/icons/light/book-user.svg similarity index 100% rename from client/src/static/icons/light/book-user.svg rename to src/static/icons/light/book-user.svg diff --git a/client/src/static/icons/light/book.svg b/src/static/icons/light/book.svg similarity index 100% rename from client/src/static/icons/light/book.svg rename to src/static/icons/light/book.svg diff --git a/client/src/static/icons/light/bookmark.svg b/src/static/icons/light/bookmark.svg similarity index 100% rename from client/src/static/icons/light/bookmark.svg rename to src/static/icons/light/bookmark.svg diff --git a/client/src/static/icons/light/books-medical.svg b/src/static/icons/light/books-medical.svg similarity index 100% rename from client/src/static/icons/light/books-medical.svg rename to src/static/icons/light/books-medical.svg diff --git a/client/src/static/icons/light/books.svg b/src/static/icons/light/books.svg similarity index 100% rename from client/src/static/icons/light/books.svg rename to src/static/icons/light/books.svg diff --git a/client/src/static/icons/light/boombox.svg b/src/static/icons/light/boombox.svg similarity index 100% rename from client/src/static/icons/light/boombox.svg rename to src/static/icons/light/boombox.svg diff --git a/client/src/static/icons/light/boot.svg b/src/static/icons/light/boot.svg similarity index 100% rename from client/src/static/icons/light/boot.svg rename to src/static/icons/light/boot.svg diff --git a/client/src/static/icons/light/booth-curtain.svg b/src/static/icons/light/booth-curtain.svg similarity index 100% rename from client/src/static/icons/light/booth-curtain.svg rename to src/static/icons/light/booth-curtain.svg diff --git a/client/src/static/icons/light/border-all.svg b/src/static/icons/light/border-all.svg similarity index 100% rename from client/src/static/icons/light/border-all.svg rename to src/static/icons/light/border-all.svg diff --git a/client/src/static/icons/light/border-bottom.svg b/src/static/icons/light/border-bottom.svg similarity index 100% rename from client/src/static/icons/light/border-bottom.svg rename to src/static/icons/light/border-bottom.svg diff --git a/client/src/static/icons/light/border-center-h.svg b/src/static/icons/light/border-center-h.svg similarity index 100% rename from client/src/static/icons/light/border-center-h.svg rename to src/static/icons/light/border-center-h.svg diff --git a/client/src/static/icons/light/border-center-v.svg b/src/static/icons/light/border-center-v.svg similarity index 100% rename from client/src/static/icons/light/border-center-v.svg rename to src/static/icons/light/border-center-v.svg diff --git a/client/src/static/icons/light/border-inner.svg b/src/static/icons/light/border-inner.svg similarity index 100% rename from client/src/static/icons/light/border-inner.svg rename to src/static/icons/light/border-inner.svg diff --git a/client/src/static/icons/light/border-left.svg b/src/static/icons/light/border-left.svg similarity index 100% rename from client/src/static/icons/light/border-left.svg rename to src/static/icons/light/border-left.svg diff --git a/client/src/static/icons/light/border-none.svg b/src/static/icons/light/border-none.svg similarity index 100% rename from client/src/static/icons/light/border-none.svg rename to src/static/icons/light/border-none.svg diff --git a/client/src/static/icons/light/border-outer.svg b/src/static/icons/light/border-outer.svg similarity index 100% rename from client/src/static/icons/light/border-outer.svg rename to src/static/icons/light/border-outer.svg diff --git a/client/src/static/icons/light/border-right.svg b/src/static/icons/light/border-right.svg similarity index 100% rename from client/src/static/icons/light/border-right.svg rename to src/static/icons/light/border-right.svg diff --git a/client/src/static/icons/light/border-style-alt.svg b/src/static/icons/light/border-style-alt.svg similarity index 100% rename from client/src/static/icons/light/border-style-alt.svg rename to src/static/icons/light/border-style-alt.svg diff --git a/client/src/static/icons/light/border-style.svg b/src/static/icons/light/border-style.svg similarity index 100% rename from client/src/static/icons/light/border-style.svg rename to src/static/icons/light/border-style.svg diff --git a/client/src/static/icons/light/border-top.svg b/src/static/icons/light/border-top.svg similarity index 100% rename from client/src/static/icons/light/border-top.svg rename to src/static/icons/light/border-top.svg diff --git a/client/src/static/icons/light/bow-arrow.svg b/src/static/icons/light/bow-arrow.svg similarity index 100% rename from client/src/static/icons/light/bow-arrow.svg rename to src/static/icons/light/bow-arrow.svg diff --git a/client/src/static/icons/light/bowling-ball.svg b/src/static/icons/light/bowling-ball.svg similarity index 100% rename from client/src/static/icons/light/bowling-ball.svg rename to src/static/icons/light/bowling-ball.svg diff --git a/client/src/static/icons/light/bowling-pins.svg b/src/static/icons/light/bowling-pins.svg similarity index 100% rename from client/src/static/icons/light/bowling-pins.svg rename to src/static/icons/light/bowling-pins.svg diff --git a/client/src/static/icons/light/box-alt.svg b/src/static/icons/light/box-alt.svg similarity index 100% rename from client/src/static/icons/light/box-alt.svg rename to src/static/icons/light/box-alt.svg diff --git a/client/src/static/icons/light/box-ballot.svg b/src/static/icons/light/box-ballot.svg similarity index 100% rename from client/src/static/icons/light/box-ballot.svg rename to src/static/icons/light/box-ballot.svg diff --git a/client/src/static/icons/light/box-check.svg b/src/static/icons/light/box-check.svg similarity index 100% rename from client/src/static/icons/light/box-check.svg rename to src/static/icons/light/box-check.svg diff --git a/client/src/static/icons/light/box-fragile.svg b/src/static/icons/light/box-fragile.svg similarity index 100% rename from client/src/static/icons/light/box-fragile.svg rename to src/static/icons/light/box-fragile.svg diff --git a/client/src/static/icons/light/box-full.svg b/src/static/icons/light/box-full.svg similarity index 100% rename from client/src/static/icons/light/box-full.svg rename to src/static/icons/light/box-full.svg diff --git a/client/src/static/icons/light/box-heart.svg b/src/static/icons/light/box-heart.svg similarity index 100% rename from client/src/static/icons/light/box-heart.svg rename to src/static/icons/light/box-heart.svg diff --git a/client/src/static/icons/light/box-open.svg b/src/static/icons/light/box-open.svg similarity index 100% rename from client/src/static/icons/light/box-open.svg rename to src/static/icons/light/box-open.svg diff --git a/client/src/static/icons/light/box-up.svg b/src/static/icons/light/box-up.svg similarity index 100% rename from client/src/static/icons/light/box-up.svg rename to src/static/icons/light/box-up.svg diff --git a/client/src/static/icons/light/box-usd.svg b/src/static/icons/light/box-usd.svg similarity index 100% rename from client/src/static/icons/light/box-usd.svg rename to src/static/icons/light/box-usd.svg diff --git a/client/src/static/icons/light/box.svg b/src/static/icons/light/box.svg similarity index 100% rename from client/src/static/icons/light/box.svg rename to src/static/icons/light/box.svg diff --git a/client/src/static/icons/light/boxes-alt.svg b/src/static/icons/light/boxes-alt.svg similarity index 100% rename from client/src/static/icons/light/boxes-alt.svg rename to src/static/icons/light/boxes-alt.svg diff --git a/client/src/static/icons/light/boxes.svg b/src/static/icons/light/boxes.svg similarity index 100% rename from client/src/static/icons/light/boxes.svg rename to src/static/icons/light/boxes.svg diff --git a/client/src/static/icons/light/boxing-glove.svg b/src/static/icons/light/boxing-glove.svg similarity index 100% rename from client/src/static/icons/light/boxing-glove.svg rename to src/static/icons/light/boxing-glove.svg diff --git a/client/src/static/icons/light/brackets-curly.svg b/src/static/icons/light/brackets-curly.svg similarity index 100% rename from client/src/static/icons/light/brackets-curly.svg rename to src/static/icons/light/brackets-curly.svg diff --git a/client/src/static/icons/light/brackets.svg b/src/static/icons/light/brackets.svg similarity index 100% rename from client/src/static/icons/light/brackets.svg rename to src/static/icons/light/brackets.svg diff --git a/client/src/static/icons/light/braille.svg b/src/static/icons/light/braille.svg similarity index 100% rename from client/src/static/icons/light/braille.svg rename to src/static/icons/light/braille.svg diff --git a/client/src/static/icons/light/brain.svg b/src/static/icons/light/brain.svg similarity index 100% rename from client/src/static/icons/light/brain.svg rename to src/static/icons/light/brain.svg diff --git a/client/src/static/icons/light/bread-loaf.svg b/src/static/icons/light/bread-loaf.svg similarity index 100% rename from client/src/static/icons/light/bread-loaf.svg rename to src/static/icons/light/bread-loaf.svg diff --git a/client/src/static/icons/light/bread-slice.svg b/src/static/icons/light/bread-slice.svg similarity index 100% rename from client/src/static/icons/light/bread-slice.svg rename to src/static/icons/light/bread-slice.svg diff --git a/client/src/static/icons/light/briefcase-medical.svg b/src/static/icons/light/briefcase-medical.svg similarity index 100% rename from client/src/static/icons/light/briefcase-medical.svg rename to src/static/icons/light/briefcase-medical.svg diff --git a/client/src/static/icons/light/briefcase.svg b/src/static/icons/light/briefcase.svg similarity index 100% rename from client/src/static/icons/light/briefcase.svg rename to src/static/icons/light/briefcase.svg diff --git a/client/src/static/icons/light/bring-forward.svg b/src/static/icons/light/bring-forward.svg similarity index 100% rename from client/src/static/icons/light/bring-forward.svg rename to src/static/icons/light/bring-forward.svg diff --git a/client/src/static/icons/light/bring-front.svg b/src/static/icons/light/bring-front.svg similarity index 100% rename from client/src/static/icons/light/bring-front.svg rename to src/static/icons/light/bring-front.svg diff --git a/client/src/static/icons/light/broadcast-tower.svg b/src/static/icons/light/broadcast-tower.svg similarity index 100% rename from client/src/static/icons/light/broadcast-tower.svg rename to src/static/icons/light/broadcast-tower.svg diff --git a/client/src/static/icons/light/broom.svg b/src/static/icons/light/broom.svg similarity index 100% rename from client/src/static/icons/light/broom.svg rename to src/static/icons/light/broom.svg diff --git a/client/src/static/icons/light/browser.svg b/src/static/icons/light/browser.svg similarity index 100% rename from client/src/static/icons/light/browser.svg rename to src/static/icons/light/browser.svg diff --git a/client/src/static/icons/light/brush.svg b/src/static/icons/light/brush.svg similarity index 100% rename from client/src/static/icons/light/brush.svg rename to src/static/icons/light/brush.svg diff --git a/client/src/static/icons/light/bug.svg b/src/static/icons/light/bug.svg similarity index 100% rename from client/src/static/icons/light/bug.svg rename to src/static/icons/light/bug.svg diff --git a/client/src/static/icons/light/building.svg b/src/static/icons/light/building.svg similarity index 100% rename from client/src/static/icons/light/building.svg rename to src/static/icons/light/building.svg diff --git a/client/src/static/icons/light/bullhorn.svg b/src/static/icons/light/bullhorn.svg similarity index 100% rename from client/src/static/icons/light/bullhorn.svg rename to src/static/icons/light/bullhorn.svg diff --git a/client/src/static/icons/light/bullseye-arrow.svg b/src/static/icons/light/bullseye-arrow.svg similarity index 100% rename from client/src/static/icons/light/bullseye-arrow.svg rename to src/static/icons/light/bullseye-arrow.svg diff --git a/client/src/static/icons/light/bullseye-pointer.svg b/src/static/icons/light/bullseye-pointer.svg similarity index 100% rename from client/src/static/icons/light/bullseye-pointer.svg rename to src/static/icons/light/bullseye-pointer.svg diff --git a/client/src/static/icons/light/bullseye.svg b/src/static/icons/light/bullseye.svg similarity index 100% rename from client/src/static/icons/light/bullseye.svg rename to src/static/icons/light/bullseye.svg diff --git a/client/src/static/icons/light/burger-soda.svg b/src/static/icons/light/burger-soda.svg similarity index 100% rename from client/src/static/icons/light/burger-soda.svg rename to src/static/icons/light/burger-soda.svg diff --git a/client/src/static/icons/light/burn.svg b/src/static/icons/light/burn.svg similarity index 100% rename from client/src/static/icons/light/burn.svg rename to src/static/icons/light/burn.svg diff --git a/client/src/static/icons/light/burrito.svg b/src/static/icons/light/burrito.svg similarity index 100% rename from client/src/static/icons/light/burrito.svg rename to src/static/icons/light/burrito.svg diff --git a/client/src/static/icons/light/bus-alt.svg b/src/static/icons/light/bus-alt.svg similarity index 100% rename from client/src/static/icons/light/bus-alt.svg rename to src/static/icons/light/bus-alt.svg diff --git a/client/src/static/icons/light/bus-school.svg b/src/static/icons/light/bus-school.svg similarity index 100% rename from client/src/static/icons/light/bus-school.svg rename to src/static/icons/light/bus-school.svg diff --git a/client/src/static/icons/light/bus.svg b/src/static/icons/light/bus.svg similarity index 100% rename from client/src/static/icons/light/bus.svg rename to src/static/icons/light/bus.svg diff --git a/client/src/static/icons/light/business-time.svg b/src/static/icons/light/business-time.svg similarity index 100% rename from client/src/static/icons/light/business-time.svg rename to src/static/icons/light/business-time.svg diff --git a/client/src/static/icons/light/cabinet-filing.svg b/src/static/icons/light/cabinet-filing.svg similarity index 100% rename from client/src/static/icons/light/cabinet-filing.svg rename to src/static/icons/light/cabinet-filing.svg diff --git a/client/src/static/icons/light/cactus.svg b/src/static/icons/light/cactus.svg similarity index 100% rename from client/src/static/icons/light/cactus.svg rename to src/static/icons/light/cactus.svg diff --git a/client/src/static/icons/light/calculator-alt.svg b/src/static/icons/light/calculator-alt.svg similarity index 100% rename from client/src/static/icons/light/calculator-alt.svg rename to src/static/icons/light/calculator-alt.svg diff --git a/client/src/static/icons/light/calculator.svg b/src/static/icons/light/calculator.svg similarity index 100% rename from client/src/static/icons/light/calculator.svg rename to src/static/icons/light/calculator.svg diff --git a/client/src/static/icons/light/calendar-alt.svg b/src/static/icons/light/calendar-alt.svg similarity index 100% rename from client/src/static/icons/light/calendar-alt.svg rename to src/static/icons/light/calendar-alt.svg diff --git a/client/src/static/icons/light/calendar-check.svg b/src/static/icons/light/calendar-check.svg similarity index 100% rename from client/src/static/icons/light/calendar-check.svg rename to src/static/icons/light/calendar-check.svg diff --git a/client/src/static/icons/light/calendar-day.svg b/src/static/icons/light/calendar-day.svg similarity index 100% rename from client/src/static/icons/light/calendar-day.svg rename to src/static/icons/light/calendar-day.svg diff --git a/client/src/static/icons/light/calendar-edit.svg b/src/static/icons/light/calendar-edit.svg similarity index 100% rename from client/src/static/icons/light/calendar-edit.svg rename to src/static/icons/light/calendar-edit.svg diff --git a/client/src/static/icons/light/calendar-exclamation.svg b/src/static/icons/light/calendar-exclamation.svg similarity index 100% rename from client/src/static/icons/light/calendar-exclamation.svg rename to src/static/icons/light/calendar-exclamation.svg diff --git a/client/src/static/icons/light/calendar-minus.svg b/src/static/icons/light/calendar-minus.svg similarity index 100% rename from client/src/static/icons/light/calendar-minus.svg rename to src/static/icons/light/calendar-minus.svg diff --git a/client/src/static/icons/light/calendar-plus.svg b/src/static/icons/light/calendar-plus.svg similarity index 100% rename from client/src/static/icons/light/calendar-plus.svg rename to src/static/icons/light/calendar-plus.svg diff --git a/client/src/static/icons/light/calendar-star.svg b/src/static/icons/light/calendar-star.svg similarity index 100% rename from client/src/static/icons/light/calendar-star.svg rename to src/static/icons/light/calendar-star.svg diff --git a/client/src/static/icons/light/calendar-times.svg b/src/static/icons/light/calendar-times.svg similarity index 100% rename from client/src/static/icons/light/calendar-times.svg rename to src/static/icons/light/calendar-times.svg diff --git a/client/src/static/icons/light/calendar-week.svg b/src/static/icons/light/calendar-week.svg similarity index 100% rename from client/src/static/icons/light/calendar-week.svg rename to src/static/icons/light/calendar-week.svg diff --git a/client/src/static/icons/light/calendar.svg b/src/static/icons/light/calendar.svg similarity index 100% rename from client/src/static/icons/light/calendar.svg rename to src/static/icons/light/calendar.svg diff --git a/client/src/static/icons/light/camcorder.svg b/src/static/icons/light/camcorder.svg similarity index 100% rename from client/src/static/icons/light/camcorder.svg rename to src/static/icons/light/camcorder.svg diff --git a/client/src/static/icons/light/camera-alt.svg b/src/static/icons/light/camera-alt.svg similarity index 100% rename from client/src/static/icons/light/camera-alt.svg rename to src/static/icons/light/camera-alt.svg diff --git a/client/src/static/icons/light/camera-home.svg b/src/static/icons/light/camera-home.svg similarity index 100% rename from client/src/static/icons/light/camera-home.svg rename to src/static/icons/light/camera-home.svg diff --git a/client/src/static/icons/light/camera-movie.svg b/src/static/icons/light/camera-movie.svg similarity index 100% rename from client/src/static/icons/light/camera-movie.svg rename to src/static/icons/light/camera-movie.svg diff --git a/client/src/static/icons/light/camera-polaroid.svg b/src/static/icons/light/camera-polaroid.svg similarity index 100% rename from client/src/static/icons/light/camera-polaroid.svg rename to src/static/icons/light/camera-polaroid.svg diff --git a/client/src/static/icons/light/camera-retro.svg b/src/static/icons/light/camera-retro.svg similarity index 100% rename from client/src/static/icons/light/camera-retro.svg rename to src/static/icons/light/camera-retro.svg diff --git a/client/src/static/icons/light/camera.svg b/src/static/icons/light/camera.svg similarity index 100% rename from client/src/static/icons/light/camera.svg rename to src/static/icons/light/camera.svg diff --git a/client/src/static/icons/light/campfire.svg b/src/static/icons/light/campfire.svg similarity index 100% rename from client/src/static/icons/light/campfire.svg rename to src/static/icons/light/campfire.svg diff --git a/client/src/static/icons/light/campground.svg b/src/static/icons/light/campground.svg similarity index 100% rename from client/src/static/icons/light/campground.svg rename to src/static/icons/light/campground.svg diff --git a/client/src/static/icons/light/candle-holder.svg b/src/static/icons/light/candle-holder.svg similarity index 100% rename from client/src/static/icons/light/candle-holder.svg rename to src/static/icons/light/candle-holder.svg diff --git a/client/src/static/icons/light/candy-cane.svg b/src/static/icons/light/candy-cane.svg similarity index 100% rename from client/src/static/icons/light/candy-cane.svg rename to src/static/icons/light/candy-cane.svg diff --git a/client/src/static/icons/light/candy-corn.svg b/src/static/icons/light/candy-corn.svg similarity index 100% rename from client/src/static/icons/light/candy-corn.svg rename to src/static/icons/light/candy-corn.svg diff --git a/client/src/static/icons/light/cannabis.svg b/src/static/icons/light/cannabis.svg similarity index 100% rename from client/src/static/icons/light/cannabis.svg rename to src/static/icons/light/cannabis.svg diff --git a/client/src/static/icons/light/capsules.svg b/src/static/icons/light/capsules.svg similarity index 100% rename from client/src/static/icons/light/capsules.svg rename to src/static/icons/light/capsules.svg diff --git a/client/src/static/icons/light/car-alt.svg b/src/static/icons/light/car-alt.svg similarity index 100% rename from client/src/static/icons/light/car-alt.svg rename to src/static/icons/light/car-alt.svg diff --git a/client/src/static/icons/light/car-battery.svg b/src/static/icons/light/car-battery.svg similarity index 100% rename from client/src/static/icons/light/car-battery.svg rename to src/static/icons/light/car-battery.svg diff --git a/client/src/static/icons/light/car-building.svg b/src/static/icons/light/car-building.svg similarity index 100% rename from client/src/static/icons/light/car-building.svg rename to src/static/icons/light/car-building.svg diff --git a/client/src/static/icons/light/car-bump.svg b/src/static/icons/light/car-bump.svg similarity index 100% rename from client/src/static/icons/light/car-bump.svg rename to src/static/icons/light/car-bump.svg diff --git a/client/src/static/icons/light/car-bus.svg b/src/static/icons/light/car-bus.svg similarity index 100% rename from client/src/static/icons/light/car-bus.svg rename to src/static/icons/light/car-bus.svg diff --git a/client/src/static/icons/light/car-crash.svg b/src/static/icons/light/car-crash.svg similarity index 100% rename from client/src/static/icons/light/car-crash.svg rename to src/static/icons/light/car-crash.svg diff --git a/client/src/static/icons/light/car-garage.svg b/src/static/icons/light/car-garage.svg similarity index 100% rename from client/src/static/icons/light/car-garage.svg rename to src/static/icons/light/car-garage.svg diff --git a/client/src/static/icons/light/car-mechanic.svg b/src/static/icons/light/car-mechanic.svg similarity index 100% rename from client/src/static/icons/light/car-mechanic.svg rename to src/static/icons/light/car-mechanic.svg diff --git a/client/src/static/icons/light/car-side.svg b/src/static/icons/light/car-side.svg similarity index 100% rename from client/src/static/icons/light/car-side.svg rename to src/static/icons/light/car-side.svg diff --git a/client/src/static/icons/light/car-tilt.svg b/src/static/icons/light/car-tilt.svg similarity index 100% rename from client/src/static/icons/light/car-tilt.svg rename to src/static/icons/light/car-tilt.svg diff --git a/client/src/static/icons/light/car-wash.svg b/src/static/icons/light/car-wash.svg similarity index 100% rename from client/src/static/icons/light/car-wash.svg rename to src/static/icons/light/car-wash.svg diff --git a/client/src/static/icons/light/car.svg b/src/static/icons/light/car.svg similarity index 100% rename from client/src/static/icons/light/car.svg rename to src/static/icons/light/car.svg diff --git a/client/src/static/icons/light/caravan-alt.svg b/src/static/icons/light/caravan-alt.svg similarity index 100% rename from client/src/static/icons/light/caravan-alt.svg rename to src/static/icons/light/caravan-alt.svg diff --git a/client/src/static/icons/light/caravan.svg b/src/static/icons/light/caravan.svg similarity index 100% rename from client/src/static/icons/light/caravan.svg rename to src/static/icons/light/caravan.svg diff --git a/client/src/static/icons/light/caret-circle-down.svg b/src/static/icons/light/caret-circle-down.svg similarity index 100% rename from client/src/static/icons/light/caret-circle-down.svg rename to src/static/icons/light/caret-circle-down.svg diff --git a/client/src/static/icons/light/caret-circle-left.svg b/src/static/icons/light/caret-circle-left.svg similarity index 100% rename from client/src/static/icons/light/caret-circle-left.svg rename to src/static/icons/light/caret-circle-left.svg diff --git a/client/src/static/icons/light/caret-circle-right.svg b/src/static/icons/light/caret-circle-right.svg similarity index 100% rename from client/src/static/icons/light/caret-circle-right.svg rename to src/static/icons/light/caret-circle-right.svg diff --git a/client/src/static/icons/light/caret-circle-up.svg b/src/static/icons/light/caret-circle-up.svg similarity index 100% rename from client/src/static/icons/light/caret-circle-up.svg rename to src/static/icons/light/caret-circle-up.svg diff --git a/client/src/static/icons/light/caret-down.svg b/src/static/icons/light/caret-down.svg similarity index 100% rename from client/src/static/icons/light/caret-down.svg rename to src/static/icons/light/caret-down.svg diff --git a/client/src/static/icons/light/caret-left.svg b/src/static/icons/light/caret-left.svg similarity index 100% rename from client/src/static/icons/light/caret-left.svg rename to src/static/icons/light/caret-left.svg diff --git a/client/src/static/icons/light/caret-right.svg b/src/static/icons/light/caret-right.svg similarity index 100% rename from client/src/static/icons/light/caret-right.svg rename to src/static/icons/light/caret-right.svg diff --git a/client/src/static/icons/light/caret-square-down.svg b/src/static/icons/light/caret-square-down.svg similarity index 100% rename from client/src/static/icons/light/caret-square-down.svg rename to src/static/icons/light/caret-square-down.svg diff --git a/client/src/static/icons/light/caret-square-left.svg b/src/static/icons/light/caret-square-left.svg similarity index 100% rename from client/src/static/icons/light/caret-square-left.svg rename to src/static/icons/light/caret-square-left.svg diff --git a/client/src/static/icons/light/caret-square-right.svg b/src/static/icons/light/caret-square-right.svg similarity index 100% rename from client/src/static/icons/light/caret-square-right.svg rename to src/static/icons/light/caret-square-right.svg diff --git a/client/src/static/icons/light/caret-square-up.svg b/src/static/icons/light/caret-square-up.svg similarity index 100% rename from client/src/static/icons/light/caret-square-up.svg rename to src/static/icons/light/caret-square-up.svg diff --git a/client/src/static/icons/light/caret-up.svg b/src/static/icons/light/caret-up.svg similarity index 100% rename from client/src/static/icons/light/caret-up.svg rename to src/static/icons/light/caret-up.svg diff --git a/client/src/static/icons/light/carrot.svg b/src/static/icons/light/carrot.svg similarity index 100% rename from client/src/static/icons/light/carrot.svg rename to src/static/icons/light/carrot.svg diff --git a/client/src/static/icons/light/cars.svg b/src/static/icons/light/cars.svg similarity index 100% rename from client/src/static/icons/light/cars.svg rename to src/static/icons/light/cars.svg diff --git a/client/src/static/icons/light/cart-arrow-down.svg b/src/static/icons/light/cart-arrow-down.svg similarity index 100% rename from client/src/static/icons/light/cart-arrow-down.svg rename to src/static/icons/light/cart-arrow-down.svg diff --git a/client/src/static/icons/light/cart-plus.svg b/src/static/icons/light/cart-plus.svg similarity index 100% rename from client/src/static/icons/light/cart-plus.svg rename to src/static/icons/light/cart-plus.svg diff --git a/client/src/static/icons/light/cash-register.svg b/src/static/icons/light/cash-register.svg similarity index 100% rename from client/src/static/icons/light/cash-register.svg rename to src/static/icons/light/cash-register.svg diff --git a/client/src/static/icons/light/cassette-tape.svg b/src/static/icons/light/cassette-tape.svg similarity index 100% rename from client/src/static/icons/light/cassette-tape.svg rename to src/static/icons/light/cassette-tape.svg diff --git a/client/src/static/icons/light/cat-space.svg b/src/static/icons/light/cat-space.svg similarity index 100% rename from client/src/static/icons/light/cat-space.svg rename to src/static/icons/light/cat-space.svg diff --git a/client/src/static/icons/light/cat.svg b/src/static/icons/light/cat.svg similarity index 100% rename from client/src/static/icons/light/cat.svg rename to src/static/icons/light/cat.svg diff --git a/client/src/static/icons/light/cauldron.svg b/src/static/icons/light/cauldron.svg similarity index 100% rename from client/src/static/icons/light/cauldron.svg rename to src/static/icons/light/cauldron.svg diff --git a/client/src/static/icons/light/cctv.svg b/src/static/icons/light/cctv.svg similarity index 100% rename from client/src/static/icons/light/cctv.svg rename to src/static/icons/light/cctv.svg diff --git a/client/src/static/icons/light/certificate.svg b/src/static/icons/light/certificate.svg similarity index 100% rename from client/src/static/icons/light/certificate.svg rename to src/static/icons/light/certificate.svg diff --git a/client/src/static/icons/light/chair-office.svg b/src/static/icons/light/chair-office.svg similarity index 100% rename from client/src/static/icons/light/chair-office.svg rename to src/static/icons/light/chair-office.svg diff --git a/client/src/static/icons/light/chair.svg b/src/static/icons/light/chair.svg similarity index 100% rename from client/src/static/icons/light/chair.svg rename to src/static/icons/light/chair.svg diff --git a/client/src/static/icons/light/chalkboard-teacher.svg b/src/static/icons/light/chalkboard-teacher.svg similarity index 100% rename from client/src/static/icons/light/chalkboard-teacher.svg rename to src/static/icons/light/chalkboard-teacher.svg diff --git a/client/src/static/icons/light/chalkboard.svg b/src/static/icons/light/chalkboard.svg similarity index 100% rename from client/src/static/icons/light/chalkboard.svg rename to src/static/icons/light/chalkboard.svg diff --git a/client/src/static/icons/light/charging-station.svg b/src/static/icons/light/charging-station.svg similarity index 100% rename from client/src/static/icons/light/charging-station.svg rename to src/static/icons/light/charging-station.svg diff --git a/client/src/static/icons/light/chart-area.svg b/src/static/icons/light/chart-area.svg similarity index 100% rename from client/src/static/icons/light/chart-area.svg rename to src/static/icons/light/chart-area.svg diff --git a/client/src/static/icons/light/chart-bar.svg b/src/static/icons/light/chart-bar.svg similarity index 100% rename from client/src/static/icons/light/chart-bar.svg rename to src/static/icons/light/chart-bar.svg diff --git a/client/src/static/icons/light/chart-line-down.svg b/src/static/icons/light/chart-line-down.svg similarity index 100% rename from client/src/static/icons/light/chart-line-down.svg rename to src/static/icons/light/chart-line-down.svg diff --git a/client/src/static/icons/light/chart-line.svg b/src/static/icons/light/chart-line.svg similarity index 100% rename from client/src/static/icons/light/chart-line.svg rename to src/static/icons/light/chart-line.svg diff --git a/client/src/static/icons/light/chart-network.svg b/src/static/icons/light/chart-network.svg similarity index 100% rename from client/src/static/icons/light/chart-network.svg rename to src/static/icons/light/chart-network.svg diff --git a/client/src/static/icons/light/chart-pie-alt.svg b/src/static/icons/light/chart-pie-alt.svg similarity index 100% rename from client/src/static/icons/light/chart-pie-alt.svg rename to src/static/icons/light/chart-pie-alt.svg diff --git a/client/src/static/icons/light/chart-pie.svg b/src/static/icons/light/chart-pie.svg similarity index 100% rename from client/src/static/icons/light/chart-pie.svg rename to src/static/icons/light/chart-pie.svg diff --git a/client/src/static/icons/light/chart-scatter.svg b/src/static/icons/light/chart-scatter.svg similarity index 100% rename from client/src/static/icons/light/chart-scatter.svg rename to src/static/icons/light/chart-scatter.svg diff --git a/client/src/static/icons/light/check-circle.svg b/src/static/icons/light/check-circle.svg similarity index 100% rename from client/src/static/icons/light/check-circle.svg rename to src/static/icons/light/check-circle.svg diff --git a/client/src/static/icons/light/check-double.svg b/src/static/icons/light/check-double.svg similarity index 100% rename from client/src/static/icons/light/check-double.svg rename to src/static/icons/light/check-double.svg diff --git a/client/src/static/icons/light/check-square.svg b/src/static/icons/light/check-square.svg similarity index 100% rename from client/src/static/icons/light/check-square.svg rename to src/static/icons/light/check-square.svg diff --git a/client/src/static/icons/light/check.svg b/src/static/icons/light/check.svg similarity index 100% rename from client/src/static/icons/light/check.svg rename to src/static/icons/light/check.svg diff --git a/client/src/static/icons/light/cheese-swiss.svg b/src/static/icons/light/cheese-swiss.svg similarity index 100% rename from client/src/static/icons/light/cheese-swiss.svg rename to src/static/icons/light/cheese-swiss.svg diff --git a/client/src/static/icons/light/cheese.svg b/src/static/icons/light/cheese.svg similarity index 100% rename from client/src/static/icons/light/cheese.svg rename to src/static/icons/light/cheese.svg diff --git a/client/src/static/icons/light/cheeseburger.svg b/src/static/icons/light/cheeseburger.svg similarity index 100% rename from client/src/static/icons/light/cheeseburger.svg rename to src/static/icons/light/cheeseburger.svg diff --git a/client/src/static/icons/light/chess-bishop-alt.svg b/src/static/icons/light/chess-bishop-alt.svg similarity index 100% rename from client/src/static/icons/light/chess-bishop-alt.svg rename to src/static/icons/light/chess-bishop-alt.svg diff --git a/client/src/static/icons/light/chess-bishop.svg b/src/static/icons/light/chess-bishop.svg similarity index 100% rename from client/src/static/icons/light/chess-bishop.svg rename to src/static/icons/light/chess-bishop.svg diff --git a/client/src/static/icons/light/chess-board.svg b/src/static/icons/light/chess-board.svg similarity index 100% rename from client/src/static/icons/light/chess-board.svg rename to src/static/icons/light/chess-board.svg diff --git a/client/src/static/icons/light/chess-clock-alt.svg b/src/static/icons/light/chess-clock-alt.svg similarity index 100% rename from client/src/static/icons/light/chess-clock-alt.svg rename to src/static/icons/light/chess-clock-alt.svg diff --git a/client/src/static/icons/light/chess-clock.svg b/src/static/icons/light/chess-clock.svg similarity index 100% rename from client/src/static/icons/light/chess-clock.svg rename to src/static/icons/light/chess-clock.svg diff --git a/client/src/static/icons/light/chess-king-alt.svg b/src/static/icons/light/chess-king-alt.svg similarity index 100% rename from client/src/static/icons/light/chess-king-alt.svg rename to src/static/icons/light/chess-king-alt.svg diff --git a/client/src/static/icons/light/chess-king.svg b/src/static/icons/light/chess-king.svg similarity index 100% rename from client/src/static/icons/light/chess-king.svg rename to src/static/icons/light/chess-king.svg diff --git a/client/src/static/icons/light/chess-knight-alt.svg b/src/static/icons/light/chess-knight-alt.svg similarity index 100% rename from client/src/static/icons/light/chess-knight-alt.svg rename to src/static/icons/light/chess-knight-alt.svg diff --git a/client/src/static/icons/light/chess-knight.svg b/src/static/icons/light/chess-knight.svg similarity index 100% rename from client/src/static/icons/light/chess-knight.svg rename to src/static/icons/light/chess-knight.svg diff --git a/client/src/static/icons/light/chess-pawn-alt.svg b/src/static/icons/light/chess-pawn-alt.svg similarity index 100% rename from client/src/static/icons/light/chess-pawn-alt.svg rename to src/static/icons/light/chess-pawn-alt.svg diff --git a/client/src/static/icons/light/chess-pawn.svg b/src/static/icons/light/chess-pawn.svg similarity index 100% rename from client/src/static/icons/light/chess-pawn.svg rename to src/static/icons/light/chess-pawn.svg diff --git a/client/src/static/icons/light/chess-queen-alt.svg b/src/static/icons/light/chess-queen-alt.svg similarity index 100% rename from client/src/static/icons/light/chess-queen-alt.svg rename to src/static/icons/light/chess-queen-alt.svg diff --git a/client/src/static/icons/light/chess-queen.svg b/src/static/icons/light/chess-queen.svg similarity index 100% rename from client/src/static/icons/light/chess-queen.svg rename to src/static/icons/light/chess-queen.svg diff --git a/client/src/static/icons/light/chess-rook-alt.svg b/src/static/icons/light/chess-rook-alt.svg similarity index 100% rename from client/src/static/icons/light/chess-rook-alt.svg rename to src/static/icons/light/chess-rook-alt.svg diff --git a/client/src/static/icons/light/chess-rook.svg b/src/static/icons/light/chess-rook.svg similarity index 100% rename from client/src/static/icons/light/chess-rook.svg rename to src/static/icons/light/chess-rook.svg diff --git a/client/src/static/icons/light/chess.svg b/src/static/icons/light/chess.svg similarity index 100% rename from client/src/static/icons/light/chess.svg rename to src/static/icons/light/chess.svg diff --git a/client/src/static/icons/light/chevron-circle-down.svg b/src/static/icons/light/chevron-circle-down.svg similarity index 100% rename from client/src/static/icons/light/chevron-circle-down.svg rename to src/static/icons/light/chevron-circle-down.svg diff --git a/client/src/static/icons/light/chevron-circle-left.svg b/src/static/icons/light/chevron-circle-left.svg similarity index 100% rename from client/src/static/icons/light/chevron-circle-left.svg rename to src/static/icons/light/chevron-circle-left.svg diff --git a/client/src/static/icons/light/chevron-circle-right.svg b/src/static/icons/light/chevron-circle-right.svg similarity index 100% rename from client/src/static/icons/light/chevron-circle-right.svg rename to src/static/icons/light/chevron-circle-right.svg diff --git a/client/src/static/icons/light/chevron-circle-up.svg b/src/static/icons/light/chevron-circle-up.svg similarity index 100% rename from client/src/static/icons/light/chevron-circle-up.svg rename to src/static/icons/light/chevron-circle-up.svg diff --git a/client/src/static/icons/light/chevron-double-down.svg b/src/static/icons/light/chevron-double-down.svg similarity index 100% rename from client/src/static/icons/light/chevron-double-down.svg rename to src/static/icons/light/chevron-double-down.svg diff --git a/client/src/static/icons/light/chevron-double-left.svg b/src/static/icons/light/chevron-double-left.svg similarity index 100% rename from client/src/static/icons/light/chevron-double-left.svg rename to src/static/icons/light/chevron-double-left.svg diff --git a/client/src/static/icons/light/chevron-double-right.svg b/src/static/icons/light/chevron-double-right.svg similarity index 100% rename from client/src/static/icons/light/chevron-double-right.svg rename to src/static/icons/light/chevron-double-right.svg diff --git a/client/src/static/icons/light/chevron-double-up.svg b/src/static/icons/light/chevron-double-up.svg similarity index 100% rename from client/src/static/icons/light/chevron-double-up.svg rename to src/static/icons/light/chevron-double-up.svg diff --git a/client/src/static/icons/light/chevron-down.svg b/src/static/icons/light/chevron-down.svg similarity index 100% rename from client/src/static/icons/light/chevron-down.svg rename to src/static/icons/light/chevron-down.svg diff --git a/client/src/static/icons/light/chevron-left.svg b/src/static/icons/light/chevron-left.svg similarity index 100% rename from client/src/static/icons/light/chevron-left.svg rename to src/static/icons/light/chevron-left.svg diff --git a/client/src/static/icons/light/chevron-right.svg b/src/static/icons/light/chevron-right.svg similarity index 100% rename from client/src/static/icons/light/chevron-right.svg rename to src/static/icons/light/chevron-right.svg diff --git a/client/src/static/icons/light/chevron-square-down.svg b/src/static/icons/light/chevron-square-down.svg similarity index 100% rename from client/src/static/icons/light/chevron-square-down.svg rename to src/static/icons/light/chevron-square-down.svg diff --git a/client/src/static/icons/light/chevron-square-left.svg b/src/static/icons/light/chevron-square-left.svg similarity index 100% rename from client/src/static/icons/light/chevron-square-left.svg rename to src/static/icons/light/chevron-square-left.svg diff --git a/client/src/static/icons/light/chevron-square-right.svg b/src/static/icons/light/chevron-square-right.svg similarity index 100% rename from client/src/static/icons/light/chevron-square-right.svg rename to src/static/icons/light/chevron-square-right.svg diff --git a/client/src/static/icons/light/chevron-square-up.svg b/src/static/icons/light/chevron-square-up.svg similarity index 100% rename from client/src/static/icons/light/chevron-square-up.svg rename to src/static/icons/light/chevron-square-up.svg diff --git a/client/src/static/icons/light/chevron-up.svg b/src/static/icons/light/chevron-up.svg similarity index 100% rename from client/src/static/icons/light/chevron-up.svg rename to src/static/icons/light/chevron-up.svg diff --git a/client/src/static/icons/light/child.svg b/src/static/icons/light/child.svg similarity index 100% rename from client/src/static/icons/light/child.svg rename to src/static/icons/light/child.svg diff --git a/client/src/static/icons/light/chimney.svg b/src/static/icons/light/chimney.svg similarity index 100% rename from client/src/static/icons/light/chimney.svg rename to src/static/icons/light/chimney.svg diff --git a/client/src/static/icons/light/church.svg b/src/static/icons/light/church.svg similarity index 100% rename from client/src/static/icons/light/church.svg rename to src/static/icons/light/church.svg diff --git a/client/src/static/icons/light/circle-notch.svg b/src/static/icons/light/circle-notch.svg similarity index 100% rename from client/src/static/icons/light/circle-notch.svg rename to src/static/icons/light/circle-notch.svg diff --git a/client/src/static/icons/light/circle.svg b/src/static/icons/light/circle.svg similarity index 100% rename from client/src/static/icons/light/circle.svg rename to src/static/icons/light/circle.svg diff --git a/client/src/static/icons/light/city.svg b/src/static/icons/light/city.svg similarity index 100% rename from client/src/static/icons/light/city.svg rename to src/static/icons/light/city.svg diff --git a/client/src/static/icons/light/clarinet.svg b/src/static/icons/light/clarinet.svg similarity index 100% rename from client/src/static/icons/light/clarinet.svg rename to src/static/icons/light/clarinet.svg diff --git a/client/src/static/icons/light/claw-marks.svg b/src/static/icons/light/claw-marks.svg similarity index 100% rename from client/src/static/icons/light/claw-marks.svg rename to src/static/icons/light/claw-marks.svg diff --git a/client/src/static/icons/light/clinic-medical.svg b/src/static/icons/light/clinic-medical.svg similarity index 100% rename from client/src/static/icons/light/clinic-medical.svg rename to src/static/icons/light/clinic-medical.svg diff --git a/client/src/static/icons/light/clipboard-check.svg b/src/static/icons/light/clipboard-check.svg similarity index 100% rename from client/src/static/icons/light/clipboard-check.svg rename to src/static/icons/light/clipboard-check.svg diff --git a/client/src/static/icons/light/clipboard-list-check.svg b/src/static/icons/light/clipboard-list-check.svg similarity index 100% rename from client/src/static/icons/light/clipboard-list-check.svg rename to src/static/icons/light/clipboard-list-check.svg diff --git a/client/src/static/icons/light/clipboard-list.svg b/src/static/icons/light/clipboard-list.svg similarity index 100% rename from client/src/static/icons/light/clipboard-list.svg rename to src/static/icons/light/clipboard-list.svg diff --git a/client/src/static/icons/light/clipboard-prescription.svg b/src/static/icons/light/clipboard-prescription.svg similarity index 100% rename from client/src/static/icons/light/clipboard-prescription.svg rename to src/static/icons/light/clipboard-prescription.svg diff --git a/client/src/static/icons/light/clipboard-user.svg b/src/static/icons/light/clipboard-user.svg similarity index 100% rename from client/src/static/icons/light/clipboard-user.svg rename to src/static/icons/light/clipboard-user.svg diff --git a/client/src/static/icons/light/clipboard.svg b/src/static/icons/light/clipboard.svg similarity index 100% rename from client/src/static/icons/light/clipboard.svg rename to src/static/icons/light/clipboard.svg diff --git a/client/src/static/icons/light/clock.svg b/src/static/icons/light/clock.svg similarity index 100% rename from client/src/static/icons/light/clock.svg rename to src/static/icons/light/clock.svg diff --git a/client/src/static/icons/light/clone.svg b/src/static/icons/light/clone.svg similarity index 100% rename from client/src/static/icons/light/clone.svg rename to src/static/icons/light/clone.svg diff --git a/client/src/static/icons/light/closed-captioning.svg b/src/static/icons/light/closed-captioning.svg similarity index 100% rename from client/src/static/icons/light/closed-captioning.svg rename to src/static/icons/light/closed-captioning.svg diff --git a/client/src/static/icons/light/cloud-download-alt.svg b/src/static/icons/light/cloud-download-alt.svg similarity index 100% rename from client/src/static/icons/light/cloud-download-alt.svg rename to src/static/icons/light/cloud-download-alt.svg diff --git a/client/src/static/icons/light/cloud-download.svg b/src/static/icons/light/cloud-download.svg similarity index 100% rename from client/src/static/icons/light/cloud-download.svg rename to src/static/icons/light/cloud-download.svg diff --git a/client/src/static/icons/light/cloud-drizzle.svg b/src/static/icons/light/cloud-drizzle.svg similarity index 100% rename from client/src/static/icons/light/cloud-drizzle.svg rename to src/static/icons/light/cloud-drizzle.svg diff --git a/client/src/static/icons/light/cloud-hail-mixed.svg b/src/static/icons/light/cloud-hail-mixed.svg similarity index 100% rename from client/src/static/icons/light/cloud-hail-mixed.svg rename to src/static/icons/light/cloud-hail-mixed.svg diff --git a/client/src/static/icons/light/cloud-hail.svg b/src/static/icons/light/cloud-hail.svg similarity index 100% rename from client/src/static/icons/light/cloud-hail.svg rename to src/static/icons/light/cloud-hail.svg diff --git a/client/src/static/icons/light/cloud-meatball.svg b/src/static/icons/light/cloud-meatball.svg similarity index 100% rename from client/src/static/icons/light/cloud-meatball.svg rename to src/static/icons/light/cloud-meatball.svg diff --git a/client/src/static/icons/light/cloud-moon-rain.svg b/src/static/icons/light/cloud-moon-rain.svg similarity index 100% rename from client/src/static/icons/light/cloud-moon-rain.svg rename to src/static/icons/light/cloud-moon-rain.svg diff --git a/client/src/static/icons/light/cloud-moon.svg b/src/static/icons/light/cloud-moon.svg similarity index 100% rename from client/src/static/icons/light/cloud-moon.svg rename to src/static/icons/light/cloud-moon.svg diff --git a/client/src/static/icons/light/cloud-music.svg b/src/static/icons/light/cloud-music.svg similarity index 100% rename from client/src/static/icons/light/cloud-music.svg rename to src/static/icons/light/cloud-music.svg diff --git a/client/src/static/icons/light/cloud-rain.svg b/src/static/icons/light/cloud-rain.svg similarity index 100% rename from client/src/static/icons/light/cloud-rain.svg rename to src/static/icons/light/cloud-rain.svg diff --git a/client/src/static/icons/light/cloud-rainbow.svg b/src/static/icons/light/cloud-rainbow.svg similarity index 100% rename from client/src/static/icons/light/cloud-rainbow.svg rename to src/static/icons/light/cloud-rainbow.svg diff --git a/client/src/static/icons/light/cloud-showers-heavy.svg b/src/static/icons/light/cloud-showers-heavy.svg similarity index 100% rename from client/src/static/icons/light/cloud-showers-heavy.svg rename to src/static/icons/light/cloud-showers-heavy.svg diff --git a/client/src/static/icons/light/cloud-showers.svg b/src/static/icons/light/cloud-showers.svg similarity index 100% rename from client/src/static/icons/light/cloud-showers.svg rename to src/static/icons/light/cloud-showers.svg diff --git a/client/src/static/icons/light/cloud-sleet.svg b/src/static/icons/light/cloud-sleet.svg similarity index 100% rename from client/src/static/icons/light/cloud-sleet.svg rename to src/static/icons/light/cloud-sleet.svg diff --git a/client/src/static/icons/light/cloud-snow.svg b/src/static/icons/light/cloud-snow.svg similarity index 100% rename from client/src/static/icons/light/cloud-snow.svg rename to src/static/icons/light/cloud-snow.svg diff --git a/client/src/static/icons/light/cloud-sun-rain.svg b/src/static/icons/light/cloud-sun-rain.svg similarity index 100% rename from client/src/static/icons/light/cloud-sun-rain.svg rename to src/static/icons/light/cloud-sun-rain.svg diff --git a/client/src/static/icons/light/cloud-sun.svg b/src/static/icons/light/cloud-sun.svg similarity index 100% rename from client/src/static/icons/light/cloud-sun.svg rename to src/static/icons/light/cloud-sun.svg diff --git a/client/src/static/icons/light/cloud-upload-alt.svg b/src/static/icons/light/cloud-upload-alt.svg similarity index 100% rename from client/src/static/icons/light/cloud-upload-alt.svg rename to src/static/icons/light/cloud-upload-alt.svg diff --git a/client/src/static/icons/light/cloud-upload.svg b/src/static/icons/light/cloud-upload.svg similarity index 100% rename from client/src/static/icons/light/cloud-upload.svg rename to src/static/icons/light/cloud-upload.svg diff --git a/client/src/static/icons/light/cloud.svg b/src/static/icons/light/cloud.svg similarity index 100% rename from client/src/static/icons/light/cloud.svg rename to src/static/icons/light/cloud.svg diff --git a/client/src/static/icons/light/clouds-moon.svg b/src/static/icons/light/clouds-moon.svg similarity index 100% rename from client/src/static/icons/light/clouds-moon.svg rename to src/static/icons/light/clouds-moon.svg diff --git a/client/src/static/icons/light/clouds-sun.svg b/src/static/icons/light/clouds-sun.svg similarity index 100% rename from client/src/static/icons/light/clouds-sun.svg rename to src/static/icons/light/clouds-sun.svg diff --git a/client/src/static/icons/light/clouds.svg b/src/static/icons/light/clouds.svg similarity index 100% rename from client/src/static/icons/light/clouds.svg rename to src/static/icons/light/clouds.svg diff --git a/client/src/static/icons/light/club.svg b/src/static/icons/light/club.svg similarity index 100% rename from client/src/static/icons/light/club.svg rename to src/static/icons/light/club.svg diff --git a/client/src/static/icons/light/cocktail.svg b/src/static/icons/light/cocktail.svg similarity index 100% rename from client/src/static/icons/light/cocktail.svg rename to src/static/icons/light/cocktail.svg diff --git a/client/src/static/icons/light/code-branch.svg b/src/static/icons/light/code-branch.svg similarity index 100% rename from client/src/static/icons/light/code-branch.svg rename to src/static/icons/light/code-branch.svg diff --git a/client/src/static/icons/light/code-commit.svg b/src/static/icons/light/code-commit.svg similarity index 100% rename from client/src/static/icons/light/code-commit.svg rename to src/static/icons/light/code-commit.svg diff --git a/client/src/static/icons/light/code-merge.svg b/src/static/icons/light/code-merge.svg similarity index 100% rename from client/src/static/icons/light/code-merge.svg rename to src/static/icons/light/code-merge.svg diff --git a/client/src/static/icons/light/code.svg b/src/static/icons/light/code.svg similarity index 100% rename from client/src/static/icons/light/code.svg rename to src/static/icons/light/code.svg diff --git a/client/src/static/icons/light/coffee-pot.svg b/src/static/icons/light/coffee-pot.svg similarity index 100% rename from client/src/static/icons/light/coffee-pot.svg rename to src/static/icons/light/coffee-pot.svg diff --git a/client/src/static/icons/light/coffee-togo.svg b/src/static/icons/light/coffee-togo.svg similarity index 100% rename from client/src/static/icons/light/coffee-togo.svg rename to src/static/icons/light/coffee-togo.svg diff --git a/client/src/static/icons/light/coffee.svg b/src/static/icons/light/coffee.svg similarity index 100% rename from client/src/static/icons/light/coffee.svg rename to src/static/icons/light/coffee.svg diff --git a/client/src/static/icons/light/coffin.svg b/src/static/icons/light/coffin.svg similarity index 100% rename from client/src/static/icons/light/coffin.svg rename to src/static/icons/light/coffin.svg diff --git a/client/src/static/icons/light/cog.svg b/src/static/icons/light/cog.svg similarity index 100% rename from client/src/static/icons/light/cog.svg rename to src/static/icons/light/cog.svg diff --git a/client/src/static/icons/light/cogs.svg b/src/static/icons/light/cogs.svg similarity index 100% rename from client/src/static/icons/light/cogs.svg rename to src/static/icons/light/cogs.svg diff --git a/client/src/static/icons/light/coin.svg b/src/static/icons/light/coin.svg similarity index 100% rename from client/src/static/icons/light/coin.svg rename to src/static/icons/light/coin.svg diff --git a/client/src/static/icons/light/coins.svg b/src/static/icons/light/coins.svg similarity index 100% rename from client/src/static/icons/light/coins.svg rename to src/static/icons/light/coins.svg diff --git a/client/src/static/icons/light/columns.svg b/src/static/icons/light/columns.svg similarity index 100% rename from client/src/static/icons/light/columns.svg rename to src/static/icons/light/columns.svg diff --git a/client/src/static/icons/light/comet.svg b/src/static/icons/light/comet.svg similarity index 100% rename from client/src/static/icons/light/comet.svg rename to src/static/icons/light/comet.svg diff --git a/client/src/static/icons/light/comment-alt-check.svg b/src/static/icons/light/comment-alt-check.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-check.svg rename to src/static/icons/light/comment-alt-check.svg diff --git a/client/src/static/icons/light/comment-alt-dollar.svg b/src/static/icons/light/comment-alt-dollar.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-dollar.svg rename to src/static/icons/light/comment-alt-dollar.svg diff --git a/client/src/static/icons/light/comment-alt-dots.svg b/src/static/icons/light/comment-alt-dots.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-dots.svg rename to src/static/icons/light/comment-alt-dots.svg diff --git a/client/src/static/icons/light/comment-alt-edit.svg b/src/static/icons/light/comment-alt-edit.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-edit.svg rename to src/static/icons/light/comment-alt-edit.svg diff --git a/client/src/static/icons/light/comment-alt-exclamation.svg b/src/static/icons/light/comment-alt-exclamation.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-exclamation.svg rename to src/static/icons/light/comment-alt-exclamation.svg diff --git a/client/src/static/icons/light/comment-alt-lines.svg b/src/static/icons/light/comment-alt-lines.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-lines.svg rename to src/static/icons/light/comment-alt-lines.svg diff --git a/client/src/static/icons/light/comment-alt-medical.svg b/src/static/icons/light/comment-alt-medical.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-medical.svg rename to src/static/icons/light/comment-alt-medical.svg diff --git a/client/src/static/icons/light/comment-alt-minus.svg b/src/static/icons/light/comment-alt-minus.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-minus.svg rename to src/static/icons/light/comment-alt-minus.svg diff --git a/client/src/static/icons/light/comment-alt-music.svg b/src/static/icons/light/comment-alt-music.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-music.svg rename to src/static/icons/light/comment-alt-music.svg diff --git a/client/src/static/icons/light/comment-alt-plus.svg b/src/static/icons/light/comment-alt-plus.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-plus.svg rename to src/static/icons/light/comment-alt-plus.svg diff --git a/client/src/static/icons/light/comment-alt-slash.svg b/src/static/icons/light/comment-alt-slash.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-slash.svg rename to src/static/icons/light/comment-alt-slash.svg diff --git a/client/src/static/icons/light/comment-alt-smile.svg b/src/static/icons/light/comment-alt-smile.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-smile.svg rename to src/static/icons/light/comment-alt-smile.svg diff --git a/client/src/static/icons/light/comment-alt-times.svg b/src/static/icons/light/comment-alt-times.svg similarity index 100% rename from client/src/static/icons/light/comment-alt-times.svg rename to src/static/icons/light/comment-alt-times.svg diff --git a/client/src/static/icons/light/comment-alt.svg b/src/static/icons/light/comment-alt.svg similarity index 100% rename from client/src/static/icons/light/comment-alt.svg rename to src/static/icons/light/comment-alt.svg diff --git a/client/src/static/icons/light/comment-check.svg b/src/static/icons/light/comment-check.svg similarity index 100% rename from client/src/static/icons/light/comment-check.svg rename to src/static/icons/light/comment-check.svg diff --git a/client/src/static/icons/light/comment-dollar.svg b/src/static/icons/light/comment-dollar.svg similarity index 100% rename from client/src/static/icons/light/comment-dollar.svg rename to src/static/icons/light/comment-dollar.svg diff --git a/client/src/static/icons/light/comment-dots.svg b/src/static/icons/light/comment-dots.svg similarity index 100% rename from client/src/static/icons/light/comment-dots.svg rename to src/static/icons/light/comment-dots.svg diff --git a/client/src/static/icons/light/comment-edit.svg b/src/static/icons/light/comment-edit.svg similarity index 100% rename from client/src/static/icons/light/comment-edit.svg rename to src/static/icons/light/comment-edit.svg diff --git a/client/src/static/icons/light/comment-exclamation.svg b/src/static/icons/light/comment-exclamation.svg similarity index 100% rename from client/src/static/icons/light/comment-exclamation.svg rename to src/static/icons/light/comment-exclamation.svg diff --git a/client/src/static/icons/light/comment-lines.svg b/src/static/icons/light/comment-lines.svg similarity index 100% rename from client/src/static/icons/light/comment-lines.svg rename to src/static/icons/light/comment-lines.svg diff --git a/client/src/static/icons/light/comment-medical.svg b/src/static/icons/light/comment-medical.svg similarity index 100% rename from client/src/static/icons/light/comment-medical.svg rename to src/static/icons/light/comment-medical.svg diff --git a/client/src/static/icons/light/comment-minus.svg b/src/static/icons/light/comment-minus.svg similarity index 100% rename from client/src/static/icons/light/comment-minus.svg rename to src/static/icons/light/comment-minus.svg diff --git a/client/src/static/icons/light/comment-music.svg b/src/static/icons/light/comment-music.svg similarity index 100% rename from client/src/static/icons/light/comment-music.svg rename to src/static/icons/light/comment-music.svg diff --git a/client/src/static/icons/light/comment-plus.svg b/src/static/icons/light/comment-plus.svg similarity index 100% rename from client/src/static/icons/light/comment-plus.svg rename to src/static/icons/light/comment-plus.svg diff --git a/client/src/static/icons/light/comment-slash.svg b/src/static/icons/light/comment-slash.svg similarity index 100% rename from client/src/static/icons/light/comment-slash.svg rename to src/static/icons/light/comment-slash.svg diff --git a/client/src/static/icons/light/comment-smile.svg b/src/static/icons/light/comment-smile.svg similarity index 100% rename from client/src/static/icons/light/comment-smile.svg rename to src/static/icons/light/comment-smile.svg diff --git a/client/src/static/icons/light/comment-times.svg b/src/static/icons/light/comment-times.svg similarity index 100% rename from client/src/static/icons/light/comment-times.svg rename to src/static/icons/light/comment-times.svg diff --git a/client/src/static/icons/light/comment.svg b/src/static/icons/light/comment.svg similarity index 100% rename from client/src/static/icons/light/comment.svg rename to src/static/icons/light/comment.svg diff --git a/client/src/static/icons/light/comments-alt-dollar.svg b/src/static/icons/light/comments-alt-dollar.svg similarity index 100% rename from client/src/static/icons/light/comments-alt-dollar.svg rename to src/static/icons/light/comments-alt-dollar.svg diff --git a/client/src/static/icons/light/comments-alt.svg b/src/static/icons/light/comments-alt.svg similarity index 100% rename from client/src/static/icons/light/comments-alt.svg rename to src/static/icons/light/comments-alt.svg diff --git a/client/src/static/icons/light/comments-dollar.svg b/src/static/icons/light/comments-dollar.svg similarity index 100% rename from client/src/static/icons/light/comments-dollar.svg rename to src/static/icons/light/comments-dollar.svg diff --git a/client/src/static/icons/light/comments.svg b/src/static/icons/light/comments.svg similarity index 100% rename from client/src/static/icons/light/comments.svg rename to src/static/icons/light/comments.svg diff --git a/client/src/static/icons/light/compact-disc.svg b/src/static/icons/light/compact-disc.svg similarity index 100% rename from client/src/static/icons/light/compact-disc.svg rename to src/static/icons/light/compact-disc.svg diff --git a/client/src/static/icons/light/compass-slash.svg b/src/static/icons/light/compass-slash.svg similarity index 100% rename from client/src/static/icons/light/compass-slash.svg rename to src/static/icons/light/compass-slash.svg diff --git a/client/src/static/icons/light/compass.svg b/src/static/icons/light/compass.svg similarity index 100% rename from client/src/static/icons/light/compass.svg rename to src/static/icons/light/compass.svg diff --git a/client/src/static/icons/light/compress-alt.svg b/src/static/icons/light/compress-alt.svg similarity index 100% rename from client/src/static/icons/light/compress-alt.svg rename to src/static/icons/light/compress-alt.svg diff --git a/client/src/static/icons/light/compress-arrows-alt.svg b/src/static/icons/light/compress-arrows-alt.svg similarity index 100% rename from client/src/static/icons/light/compress-arrows-alt.svg rename to src/static/icons/light/compress-arrows-alt.svg diff --git a/client/src/static/icons/light/compress-wide.svg b/src/static/icons/light/compress-wide.svg similarity index 100% rename from client/src/static/icons/light/compress-wide.svg rename to src/static/icons/light/compress-wide.svg diff --git a/client/src/static/icons/light/compress.svg b/src/static/icons/light/compress.svg similarity index 100% rename from client/src/static/icons/light/compress.svg rename to src/static/icons/light/compress.svg diff --git a/client/src/static/icons/light/computer-classic.svg b/src/static/icons/light/computer-classic.svg similarity index 100% rename from client/src/static/icons/light/computer-classic.svg rename to src/static/icons/light/computer-classic.svg diff --git a/client/src/static/icons/light/computer-speaker.svg b/src/static/icons/light/computer-speaker.svg similarity index 100% rename from client/src/static/icons/light/computer-speaker.svg rename to src/static/icons/light/computer-speaker.svg diff --git a/client/src/static/icons/light/concierge-bell.svg b/src/static/icons/light/concierge-bell.svg similarity index 100% rename from client/src/static/icons/light/concierge-bell.svg rename to src/static/icons/light/concierge-bell.svg diff --git a/client/src/static/icons/light/construction.svg b/src/static/icons/light/construction.svg similarity index 100% rename from client/src/static/icons/light/construction.svg rename to src/static/icons/light/construction.svg diff --git a/client/src/static/icons/light/container-storage.svg b/src/static/icons/light/container-storage.svg similarity index 100% rename from client/src/static/icons/light/container-storage.svg rename to src/static/icons/light/container-storage.svg diff --git a/client/src/static/icons/light/conveyor-belt-alt.svg b/src/static/icons/light/conveyor-belt-alt.svg similarity index 100% rename from client/src/static/icons/light/conveyor-belt-alt.svg rename to src/static/icons/light/conveyor-belt-alt.svg diff --git a/client/src/static/icons/light/conveyor-belt.svg b/src/static/icons/light/conveyor-belt.svg similarity index 100% rename from client/src/static/icons/light/conveyor-belt.svg rename to src/static/icons/light/conveyor-belt.svg diff --git a/client/src/static/icons/light/cookie-bite.svg b/src/static/icons/light/cookie-bite.svg similarity index 100% rename from client/src/static/icons/light/cookie-bite.svg rename to src/static/icons/light/cookie-bite.svg diff --git a/client/src/static/icons/light/cookie.svg b/src/static/icons/light/cookie.svg similarity index 100% rename from client/src/static/icons/light/cookie.svg rename to src/static/icons/light/cookie.svg diff --git a/client/src/static/icons/light/copy.svg b/src/static/icons/light/copy.svg similarity index 100% rename from client/src/static/icons/light/copy.svg rename to src/static/icons/light/copy.svg diff --git a/client/src/static/icons/light/copyright.svg b/src/static/icons/light/copyright.svg similarity index 100% rename from client/src/static/icons/light/copyright.svg rename to src/static/icons/light/copyright.svg diff --git a/client/src/static/icons/light/corn.svg b/src/static/icons/light/corn.svg similarity index 100% rename from client/src/static/icons/light/corn.svg rename to src/static/icons/light/corn.svg diff --git a/client/src/static/icons/light/couch.svg b/src/static/icons/light/couch.svg similarity index 100% rename from client/src/static/icons/light/couch.svg rename to src/static/icons/light/couch.svg diff --git a/client/src/static/icons/light/cow.svg b/src/static/icons/light/cow.svg similarity index 100% rename from client/src/static/icons/light/cow.svg rename to src/static/icons/light/cow.svg diff --git a/client/src/static/icons/light/cowbell-more.svg b/src/static/icons/light/cowbell-more.svg similarity index 100% rename from client/src/static/icons/light/cowbell-more.svg rename to src/static/icons/light/cowbell-more.svg diff --git a/client/src/static/icons/light/cowbell.svg b/src/static/icons/light/cowbell.svg similarity index 100% rename from client/src/static/icons/light/cowbell.svg rename to src/static/icons/light/cowbell.svg diff --git a/client/src/static/icons/light/credit-card-blank.svg b/src/static/icons/light/credit-card-blank.svg similarity index 100% rename from client/src/static/icons/light/credit-card-blank.svg rename to src/static/icons/light/credit-card-blank.svg diff --git a/client/src/static/icons/light/credit-card-front.svg b/src/static/icons/light/credit-card-front.svg similarity index 100% rename from client/src/static/icons/light/credit-card-front.svg rename to src/static/icons/light/credit-card-front.svg diff --git a/client/src/static/icons/light/credit-card.svg b/src/static/icons/light/credit-card.svg similarity index 100% rename from client/src/static/icons/light/credit-card.svg rename to src/static/icons/light/credit-card.svg diff --git a/client/src/static/icons/light/cricket.svg b/src/static/icons/light/cricket.svg similarity index 100% rename from client/src/static/icons/light/cricket.svg rename to src/static/icons/light/cricket.svg diff --git a/client/src/static/icons/light/croissant.svg b/src/static/icons/light/croissant.svg similarity index 100% rename from client/src/static/icons/light/croissant.svg rename to src/static/icons/light/croissant.svg diff --git a/client/src/static/icons/light/crop-alt.svg b/src/static/icons/light/crop-alt.svg similarity index 100% rename from client/src/static/icons/light/crop-alt.svg rename to src/static/icons/light/crop-alt.svg diff --git a/client/src/static/icons/light/crop.svg b/src/static/icons/light/crop.svg similarity index 100% rename from client/src/static/icons/light/crop.svg rename to src/static/icons/light/crop.svg diff --git a/client/src/static/icons/light/cross.svg b/src/static/icons/light/cross.svg similarity index 100% rename from client/src/static/icons/light/cross.svg rename to src/static/icons/light/cross.svg diff --git a/client/src/static/icons/light/crosshairs.svg b/src/static/icons/light/crosshairs.svg similarity index 100% rename from client/src/static/icons/light/crosshairs.svg rename to src/static/icons/light/crosshairs.svg diff --git a/client/src/static/icons/light/crow.svg b/src/static/icons/light/crow.svg similarity index 100% rename from client/src/static/icons/light/crow.svg rename to src/static/icons/light/crow.svg diff --git a/client/src/static/icons/light/crown.svg b/src/static/icons/light/crown.svg similarity index 100% rename from client/src/static/icons/light/crown.svg rename to src/static/icons/light/crown.svg diff --git a/client/src/static/icons/light/crutch.svg b/src/static/icons/light/crutch.svg similarity index 100% rename from client/src/static/icons/light/crutch.svg rename to src/static/icons/light/crutch.svg diff --git a/client/src/static/icons/light/crutches.svg b/src/static/icons/light/crutches.svg similarity index 100% rename from client/src/static/icons/light/crutches.svg rename to src/static/icons/light/crutches.svg diff --git a/client/src/static/icons/light/cube.svg b/src/static/icons/light/cube.svg similarity index 100% rename from client/src/static/icons/light/cube.svg rename to src/static/icons/light/cube.svg diff --git a/client/src/static/icons/light/cubes.svg b/src/static/icons/light/cubes.svg similarity index 100% rename from client/src/static/icons/light/cubes.svg rename to src/static/icons/light/cubes.svg diff --git a/client/src/static/icons/light/curling.svg b/src/static/icons/light/curling.svg similarity index 100% rename from client/src/static/icons/light/curling.svg rename to src/static/icons/light/curling.svg diff --git a/client/src/static/icons/light/cut.svg b/src/static/icons/light/cut.svg similarity index 100% rename from client/src/static/icons/light/cut.svg rename to src/static/icons/light/cut.svg diff --git a/client/src/static/icons/light/dagger.svg b/src/static/icons/light/dagger.svg similarity index 100% rename from client/src/static/icons/light/dagger.svg rename to src/static/icons/light/dagger.svg diff --git a/client/src/static/icons/light/database.svg b/src/static/icons/light/database.svg similarity index 100% rename from client/src/static/icons/light/database.svg rename to src/static/icons/light/database.svg diff --git a/client/src/static/icons/light/deaf.svg b/src/static/icons/light/deaf.svg similarity index 100% rename from client/src/static/icons/light/deaf.svg rename to src/static/icons/light/deaf.svg diff --git a/client/src/static/icons/light/debug.svg b/src/static/icons/light/debug.svg similarity index 100% rename from client/src/static/icons/light/debug.svg rename to src/static/icons/light/debug.svg diff --git a/client/src/static/icons/light/deer-rudolph.svg b/src/static/icons/light/deer-rudolph.svg similarity index 100% rename from client/src/static/icons/light/deer-rudolph.svg rename to src/static/icons/light/deer-rudolph.svg diff --git a/client/src/static/icons/light/deer.svg b/src/static/icons/light/deer.svg similarity index 100% rename from client/src/static/icons/light/deer.svg rename to src/static/icons/light/deer.svg diff --git a/client/src/static/icons/light/democrat.svg b/src/static/icons/light/democrat.svg similarity index 100% rename from client/src/static/icons/light/democrat.svg rename to src/static/icons/light/democrat.svg diff --git a/client/src/static/icons/light/desktop-alt.svg b/src/static/icons/light/desktop-alt.svg similarity index 100% rename from client/src/static/icons/light/desktop-alt.svg rename to src/static/icons/light/desktop-alt.svg diff --git a/client/src/static/icons/light/desktop.svg b/src/static/icons/light/desktop.svg similarity index 100% rename from client/src/static/icons/light/desktop.svg rename to src/static/icons/light/desktop.svg diff --git a/client/src/static/icons/light/dewpoint.svg b/src/static/icons/light/dewpoint.svg similarity index 100% rename from client/src/static/icons/light/dewpoint.svg rename to src/static/icons/light/dewpoint.svg diff --git a/client/src/static/icons/light/dharmachakra.svg b/src/static/icons/light/dharmachakra.svg similarity index 100% rename from client/src/static/icons/light/dharmachakra.svg rename to src/static/icons/light/dharmachakra.svg diff --git a/client/src/static/icons/light/diagnoses.svg b/src/static/icons/light/diagnoses.svg similarity index 100% rename from client/src/static/icons/light/diagnoses.svg rename to src/static/icons/light/diagnoses.svg diff --git a/client/src/static/icons/light/diamond.svg b/src/static/icons/light/diamond.svg similarity index 100% rename from client/src/static/icons/light/diamond.svg rename to src/static/icons/light/diamond.svg diff --git a/client/src/static/icons/light/dice-d10.svg b/src/static/icons/light/dice-d10.svg similarity index 100% rename from client/src/static/icons/light/dice-d10.svg rename to src/static/icons/light/dice-d10.svg diff --git a/client/src/static/icons/light/dice-d12.svg b/src/static/icons/light/dice-d12.svg similarity index 100% rename from client/src/static/icons/light/dice-d12.svg rename to src/static/icons/light/dice-d12.svg diff --git a/client/src/static/icons/light/dice-d20.svg b/src/static/icons/light/dice-d20.svg similarity index 100% rename from client/src/static/icons/light/dice-d20.svg rename to src/static/icons/light/dice-d20.svg diff --git a/client/src/static/icons/light/dice-d4.svg b/src/static/icons/light/dice-d4.svg similarity index 100% rename from client/src/static/icons/light/dice-d4.svg rename to src/static/icons/light/dice-d4.svg diff --git a/client/src/static/icons/light/dice-d6.svg b/src/static/icons/light/dice-d6.svg similarity index 100% rename from client/src/static/icons/light/dice-d6.svg rename to src/static/icons/light/dice-d6.svg diff --git a/client/src/static/icons/light/dice-d8.svg b/src/static/icons/light/dice-d8.svg similarity index 100% rename from client/src/static/icons/light/dice-d8.svg rename to src/static/icons/light/dice-d8.svg diff --git a/client/src/static/icons/light/dice-five.svg b/src/static/icons/light/dice-five.svg similarity index 100% rename from client/src/static/icons/light/dice-five.svg rename to src/static/icons/light/dice-five.svg diff --git a/client/src/static/icons/light/dice-four.svg b/src/static/icons/light/dice-four.svg similarity index 100% rename from client/src/static/icons/light/dice-four.svg rename to src/static/icons/light/dice-four.svg diff --git a/client/src/static/icons/light/dice-one.svg b/src/static/icons/light/dice-one.svg similarity index 100% rename from client/src/static/icons/light/dice-one.svg rename to src/static/icons/light/dice-one.svg diff --git a/client/src/static/icons/light/dice-six.svg b/src/static/icons/light/dice-six.svg similarity index 100% rename from client/src/static/icons/light/dice-six.svg rename to src/static/icons/light/dice-six.svg diff --git a/client/src/static/icons/light/dice-three.svg b/src/static/icons/light/dice-three.svg similarity index 100% rename from client/src/static/icons/light/dice-three.svg rename to src/static/icons/light/dice-three.svg diff --git a/client/src/static/icons/light/dice-two.svg b/src/static/icons/light/dice-two.svg similarity index 100% rename from client/src/static/icons/light/dice-two.svg rename to src/static/icons/light/dice-two.svg diff --git a/client/src/static/icons/light/dice.svg b/src/static/icons/light/dice.svg similarity index 100% rename from client/src/static/icons/light/dice.svg rename to src/static/icons/light/dice.svg diff --git a/client/src/static/icons/light/digging.svg b/src/static/icons/light/digging.svg similarity index 100% rename from client/src/static/icons/light/digging.svg rename to src/static/icons/light/digging.svg diff --git a/client/src/static/icons/light/digital-tachograph.svg b/src/static/icons/light/digital-tachograph.svg similarity index 100% rename from client/src/static/icons/light/digital-tachograph.svg rename to src/static/icons/light/digital-tachograph.svg diff --git a/client/src/static/icons/light/diploma.svg b/src/static/icons/light/diploma.svg similarity index 100% rename from client/src/static/icons/light/diploma.svg rename to src/static/icons/light/diploma.svg diff --git a/client/src/static/icons/light/directions.svg b/src/static/icons/light/directions.svg similarity index 100% rename from client/src/static/icons/light/directions.svg rename to src/static/icons/light/directions.svg diff --git a/client/src/static/icons/light/disc-drive.svg b/src/static/icons/light/disc-drive.svg similarity index 100% rename from client/src/static/icons/light/disc-drive.svg rename to src/static/icons/light/disc-drive.svg diff --git a/client/src/static/icons/light/disease.svg b/src/static/icons/light/disease.svg similarity index 100% rename from client/src/static/icons/light/disease.svg rename to src/static/icons/light/disease.svg diff --git a/client/src/static/icons/light/divide.svg b/src/static/icons/light/divide.svg similarity index 100% rename from client/src/static/icons/light/divide.svg rename to src/static/icons/light/divide.svg diff --git a/client/src/static/icons/light/dizzy.svg b/src/static/icons/light/dizzy.svg similarity index 100% rename from client/src/static/icons/light/dizzy.svg rename to src/static/icons/light/dizzy.svg diff --git a/client/src/static/icons/light/dna.svg b/src/static/icons/light/dna.svg similarity index 100% rename from client/src/static/icons/light/dna.svg rename to src/static/icons/light/dna.svg diff --git a/client/src/static/icons/light/do-not-enter.svg b/src/static/icons/light/do-not-enter.svg similarity index 100% rename from client/src/static/icons/light/do-not-enter.svg rename to src/static/icons/light/do-not-enter.svg diff --git a/client/src/static/icons/light/dog-leashed.svg b/src/static/icons/light/dog-leashed.svg similarity index 100% rename from client/src/static/icons/light/dog-leashed.svg rename to src/static/icons/light/dog-leashed.svg diff --git a/client/src/static/icons/light/dog.svg b/src/static/icons/light/dog.svg similarity index 100% rename from client/src/static/icons/light/dog.svg rename to src/static/icons/light/dog.svg diff --git a/client/src/static/icons/light/dollar-sign.svg b/src/static/icons/light/dollar-sign.svg similarity index 100% rename from client/src/static/icons/light/dollar-sign.svg rename to src/static/icons/light/dollar-sign.svg diff --git a/client/src/static/icons/light/dolly-empty.svg b/src/static/icons/light/dolly-empty.svg similarity index 100% rename from client/src/static/icons/light/dolly-empty.svg rename to src/static/icons/light/dolly-empty.svg diff --git a/client/src/static/icons/light/dolly-flatbed-alt.svg b/src/static/icons/light/dolly-flatbed-alt.svg similarity index 100% rename from client/src/static/icons/light/dolly-flatbed-alt.svg rename to src/static/icons/light/dolly-flatbed-alt.svg diff --git a/client/src/static/icons/light/dolly-flatbed-empty.svg b/src/static/icons/light/dolly-flatbed-empty.svg similarity index 100% rename from client/src/static/icons/light/dolly-flatbed-empty.svg rename to src/static/icons/light/dolly-flatbed-empty.svg diff --git a/client/src/static/icons/light/dolly-flatbed.svg b/src/static/icons/light/dolly-flatbed.svg similarity index 100% rename from client/src/static/icons/light/dolly-flatbed.svg rename to src/static/icons/light/dolly-flatbed.svg diff --git a/client/src/static/icons/light/dolly.svg b/src/static/icons/light/dolly.svg similarity index 100% rename from client/src/static/icons/light/dolly.svg rename to src/static/icons/light/dolly.svg diff --git a/client/src/static/icons/light/donate.svg b/src/static/icons/light/donate.svg similarity index 100% rename from client/src/static/icons/light/donate.svg rename to src/static/icons/light/donate.svg diff --git a/client/src/static/icons/light/door-closed.svg b/src/static/icons/light/door-closed.svg similarity index 100% rename from client/src/static/icons/light/door-closed.svg rename to src/static/icons/light/door-closed.svg diff --git a/client/src/static/icons/light/door-open.svg b/src/static/icons/light/door-open.svg similarity index 100% rename from client/src/static/icons/light/door-open.svg rename to src/static/icons/light/door-open.svg diff --git a/client/src/static/icons/light/dot-circle.svg b/src/static/icons/light/dot-circle.svg similarity index 100% rename from client/src/static/icons/light/dot-circle.svg rename to src/static/icons/light/dot-circle.svg diff --git a/client/src/static/icons/light/dove.svg b/src/static/icons/light/dove.svg similarity index 100% rename from client/src/static/icons/light/dove.svg rename to src/static/icons/light/dove.svg diff --git a/client/src/static/icons/light/download.svg b/src/static/icons/light/download.svg similarity index 100% rename from client/src/static/icons/light/download.svg rename to src/static/icons/light/download.svg diff --git a/client/src/static/icons/light/drafting-compass.svg b/src/static/icons/light/drafting-compass.svg similarity index 100% rename from client/src/static/icons/light/drafting-compass.svg rename to src/static/icons/light/drafting-compass.svg diff --git a/client/src/static/icons/light/dragon.svg b/src/static/icons/light/dragon.svg similarity index 100% rename from client/src/static/icons/light/dragon.svg rename to src/static/icons/light/dragon.svg diff --git a/client/src/static/icons/light/draw-circle.svg b/src/static/icons/light/draw-circle.svg similarity index 100% rename from client/src/static/icons/light/draw-circle.svg rename to src/static/icons/light/draw-circle.svg diff --git a/client/src/static/icons/light/draw-polygon.svg b/src/static/icons/light/draw-polygon.svg similarity index 100% rename from client/src/static/icons/light/draw-polygon.svg rename to src/static/icons/light/draw-polygon.svg diff --git a/client/src/static/icons/light/draw-square.svg b/src/static/icons/light/draw-square.svg similarity index 100% rename from client/src/static/icons/light/draw-square.svg rename to src/static/icons/light/draw-square.svg diff --git a/client/src/static/icons/light/dreidel.svg b/src/static/icons/light/dreidel.svg similarity index 100% rename from client/src/static/icons/light/dreidel.svg rename to src/static/icons/light/dreidel.svg diff --git a/client/src/static/icons/light/drone-alt.svg b/src/static/icons/light/drone-alt.svg similarity index 100% rename from client/src/static/icons/light/drone-alt.svg rename to src/static/icons/light/drone-alt.svg diff --git a/client/src/static/icons/light/drone.svg b/src/static/icons/light/drone.svg similarity index 100% rename from client/src/static/icons/light/drone.svg rename to src/static/icons/light/drone.svg diff --git a/client/src/static/icons/light/drum-steelpan.svg b/src/static/icons/light/drum-steelpan.svg similarity index 100% rename from client/src/static/icons/light/drum-steelpan.svg rename to src/static/icons/light/drum-steelpan.svg diff --git a/client/src/static/icons/light/drum.svg b/src/static/icons/light/drum.svg similarity index 100% rename from client/src/static/icons/light/drum.svg rename to src/static/icons/light/drum.svg diff --git a/client/src/static/icons/light/drumstick-bite.svg b/src/static/icons/light/drumstick-bite.svg similarity index 100% rename from client/src/static/icons/light/drumstick-bite.svg rename to src/static/icons/light/drumstick-bite.svg diff --git a/client/src/static/icons/light/drumstick.svg b/src/static/icons/light/drumstick.svg similarity index 100% rename from client/src/static/icons/light/drumstick.svg rename to src/static/icons/light/drumstick.svg diff --git a/client/src/static/icons/light/dryer-alt.svg b/src/static/icons/light/dryer-alt.svg similarity index 100% rename from client/src/static/icons/light/dryer-alt.svg rename to src/static/icons/light/dryer-alt.svg diff --git a/client/src/static/icons/light/dryer.svg b/src/static/icons/light/dryer.svg similarity index 100% rename from client/src/static/icons/light/dryer.svg rename to src/static/icons/light/dryer.svg diff --git a/client/src/static/icons/light/duck.svg b/src/static/icons/light/duck.svg similarity index 100% rename from client/src/static/icons/light/duck.svg rename to src/static/icons/light/duck.svg diff --git a/client/src/static/icons/light/dumbbell.svg b/src/static/icons/light/dumbbell.svg similarity index 100% rename from client/src/static/icons/light/dumbbell.svg rename to src/static/icons/light/dumbbell.svg diff --git a/client/src/static/icons/light/dumpster-fire.svg b/src/static/icons/light/dumpster-fire.svg similarity index 100% rename from client/src/static/icons/light/dumpster-fire.svg rename to src/static/icons/light/dumpster-fire.svg diff --git a/client/src/static/icons/light/dumpster.svg b/src/static/icons/light/dumpster.svg similarity index 100% rename from client/src/static/icons/light/dumpster.svg rename to src/static/icons/light/dumpster.svg diff --git a/client/src/static/icons/light/dungeon.svg b/src/static/icons/light/dungeon.svg similarity index 100% rename from client/src/static/icons/light/dungeon.svg rename to src/static/icons/light/dungeon.svg diff --git a/client/src/static/icons/light/ear-muffs.svg b/src/static/icons/light/ear-muffs.svg similarity index 100% rename from client/src/static/icons/light/ear-muffs.svg rename to src/static/icons/light/ear-muffs.svg diff --git a/client/src/static/icons/light/ear.svg b/src/static/icons/light/ear.svg similarity index 100% rename from client/src/static/icons/light/ear.svg rename to src/static/icons/light/ear.svg diff --git a/client/src/static/icons/light/eclipse-alt.svg b/src/static/icons/light/eclipse-alt.svg similarity index 100% rename from client/src/static/icons/light/eclipse-alt.svg rename to src/static/icons/light/eclipse-alt.svg diff --git a/client/src/static/icons/light/eclipse.svg b/src/static/icons/light/eclipse.svg similarity index 100% rename from client/src/static/icons/light/eclipse.svg rename to src/static/icons/light/eclipse.svg diff --git a/client/src/static/icons/light/edit.svg b/src/static/icons/light/edit.svg similarity index 100% rename from client/src/static/icons/light/edit.svg rename to src/static/icons/light/edit.svg diff --git a/client/src/static/icons/light/egg-fried.svg b/src/static/icons/light/egg-fried.svg similarity index 100% rename from client/src/static/icons/light/egg-fried.svg rename to src/static/icons/light/egg-fried.svg diff --git a/client/src/static/icons/light/egg.svg b/src/static/icons/light/egg.svg similarity index 100% rename from client/src/static/icons/light/egg.svg rename to src/static/icons/light/egg.svg diff --git a/client/src/static/icons/light/eject.svg b/src/static/icons/light/eject.svg similarity index 100% rename from client/src/static/icons/light/eject.svg rename to src/static/icons/light/eject.svg diff --git a/client/src/static/icons/light/elephant.svg b/src/static/icons/light/elephant.svg similarity index 100% rename from client/src/static/icons/light/elephant.svg rename to src/static/icons/light/elephant.svg diff --git a/client/src/static/icons/light/ellipsis-h-alt.svg b/src/static/icons/light/ellipsis-h-alt.svg similarity index 100% rename from client/src/static/icons/light/ellipsis-h-alt.svg rename to src/static/icons/light/ellipsis-h-alt.svg diff --git a/client/src/static/icons/light/ellipsis-h.svg b/src/static/icons/light/ellipsis-h.svg similarity index 100% rename from client/src/static/icons/light/ellipsis-h.svg rename to src/static/icons/light/ellipsis-h.svg diff --git a/client/src/static/icons/light/ellipsis-v-alt.svg b/src/static/icons/light/ellipsis-v-alt.svg similarity index 100% rename from client/src/static/icons/light/ellipsis-v-alt.svg rename to src/static/icons/light/ellipsis-v-alt.svg diff --git a/client/src/static/icons/light/ellipsis-v.svg b/src/static/icons/light/ellipsis-v.svg similarity index 100% rename from client/src/static/icons/light/ellipsis-v.svg rename to src/static/icons/light/ellipsis-v.svg diff --git a/client/src/static/icons/light/empty-set.svg b/src/static/icons/light/empty-set.svg similarity index 100% rename from client/src/static/icons/light/empty-set.svg rename to src/static/icons/light/empty-set.svg diff --git a/client/src/static/icons/light/engine-warning.svg b/src/static/icons/light/engine-warning.svg similarity index 100% rename from client/src/static/icons/light/engine-warning.svg rename to src/static/icons/light/engine-warning.svg diff --git a/client/src/static/icons/light/envelope-open-dollar.svg b/src/static/icons/light/envelope-open-dollar.svg similarity index 100% rename from client/src/static/icons/light/envelope-open-dollar.svg rename to src/static/icons/light/envelope-open-dollar.svg diff --git a/client/src/static/icons/light/envelope-open-text.svg b/src/static/icons/light/envelope-open-text.svg similarity index 100% rename from client/src/static/icons/light/envelope-open-text.svg rename to src/static/icons/light/envelope-open-text.svg diff --git a/client/src/static/icons/light/envelope-open.svg b/src/static/icons/light/envelope-open.svg similarity index 100% rename from client/src/static/icons/light/envelope-open.svg rename to src/static/icons/light/envelope-open.svg diff --git a/client/src/static/icons/light/envelope-square.svg b/src/static/icons/light/envelope-square.svg similarity index 100% rename from client/src/static/icons/light/envelope-square.svg rename to src/static/icons/light/envelope-square.svg diff --git a/client/src/static/icons/light/envelope.svg b/src/static/icons/light/envelope.svg similarity index 100% rename from client/src/static/icons/light/envelope.svg rename to src/static/icons/light/envelope.svg diff --git a/client/src/static/icons/light/equals.svg b/src/static/icons/light/equals.svg similarity index 100% rename from client/src/static/icons/light/equals.svg rename to src/static/icons/light/equals.svg diff --git a/client/src/static/icons/light/eraser.svg b/src/static/icons/light/eraser.svg similarity index 100% rename from client/src/static/icons/light/eraser.svg rename to src/static/icons/light/eraser.svg diff --git a/client/src/static/icons/light/ethernet.svg b/src/static/icons/light/ethernet.svg similarity index 100% rename from client/src/static/icons/light/ethernet.svg rename to src/static/icons/light/ethernet.svg diff --git a/client/src/static/icons/light/euro-sign.svg b/src/static/icons/light/euro-sign.svg similarity index 100% rename from client/src/static/icons/light/euro-sign.svg rename to src/static/icons/light/euro-sign.svg diff --git a/client/src/static/icons/light/exchange-alt.svg b/src/static/icons/light/exchange-alt.svg similarity index 100% rename from client/src/static/icons/light/exchange-alt.svg rename to src/static/icons/light/exchange-alt.svg diff --git a/client/src/static/icons/light/exchange.svg b/src/static/icons/light/exchange.svg similarity index 100% rename from client/src/static/icons/light/exchange.svg rename to src/static/icons/light/exchange.svg diff --git a/client/src/static/icons/light/exclamation-circle.svg b/src/static/icons/light/exclamation-circle.svg similarity index 100% rename from client/src/static/icons/light/exclamation-circle.svg rename to src/static/icons/light/exclamation-circle.svg diff --git a/client/src/static/icons/light/exclamation-square.svg b/src/static/icons/light/exclamation-square.svg similarity index 100% rename from client/src/static/icons/light/exclamation-square.svg rename to src/static/icons/light/exclamation-square.svg diff --git a/client/src/static/icons/light/exclamation-triangle.svg b/src/static/icons/light/exclamation-triangle.svg similarity index 100% rename from client/src/static/icons/light/exclamation-triangle.svg rename to src/static/icons/light/exclamation-triangle.svg diff --git a/client/src/static/icons/light/exclamation.svg b/src/static/icons/light/exclamation.svg similarity index 100% rename from client/src/static/icons/light/exclamation.svg rename to src/static/icons/light/exclamation.svg diff --git a/client/src/static/icons/light/expand-alt.svg b/src/static/icons/light/expand-alt.svg similarity index 100% rename from client/src/static/icons/light/expand-alt.svg rename to src/static/icons/light/expand-alt.svg diff --git a/client/src/static/icons/light/expand-arrows-alt.svg b/src/static/icons/light/expand-arrows-alt.svg similarity index 100% rename from client/src/static/icons/light/expand-arrows-alt.svg rename to src/static/icons/light/expand-arrows-alt.svg diff --git a/client/src/static/icons/light/expand-arrows.svg b/src/static/icons/light/expand-arrows.svg similarity index 100% rename from client/src/static/icons/light/expand-arrows.svg rename to src/static/icons/light/expand-arrows.svg diff --git a/client/src/static/icons/light/expand-wide.svg b/src/static/icons/light/expand-wide.svg similarity index 100% rename from client/src/static/icons/light/expand-wide.svg rename to src/static/icons/light/expand-wide.svg diff --git a/client/src/static/icons/light/expand.svg b/src/static/icons/light/expand.svg similarity index 100% rename from client/src/static/icons/light/expand.svg rename to src/static/icons/light/expand.svg diff --git a/client/src/static/icons/light/external-link-alt.svg b/src/static/icons/light/external-link-alt.svg similarity index 100% rename from client/src/static/icons/light/external-link-alt.svg rename to src/static/icons/light/external-link-alt.svg diff --git a/client/src/static/icons/light/external-link-square-alt.svg b/src/static/icons/light/external-link-square-alt.svg similarity index 100% rename from client/src/static/icons/light/external-link-square-alt.svg rename to src/static/icons/light/external-link-square-alt.svg diff --git a/client/src/static/icons/light/external-link-square.svg b/src/static/icons/light/external-link-square.svg similarity index 100% rename from client/src/static/icons/light/external-link-square.svg rename to src/static/icons/light/external-link-square.svg diff --git a/client/src/static/icons/light/external-link.svg b/src/static/icons/light/external-link.svg similarity index 100% rename from client/src/static/icons/light/external-link.svg rename to src/static/icons/light/external-link.svg diff --git a/client/src/static/icons/light/eye-dropper.svg b/src/static/icons/light/eye-dropper.svg similarity index 100% rename from client/src/static/icons/light/eye-dropper.svg rename to src/static/icons/light/eye-dropper.svg diff --git a/client/src/static/icons/light/eye-evil.svg b/src/static/icons/light/eye-evil.svg similarity index 100% rename from client/src/static/icons/light/eye-evil.svg rename to src/static/icons/light/eye-evil.svg diff --git a/client/src/static/icons/light/eye-slash.svg b/src/static/icons/light/eye-slash.svg similarity index 100% rename from client/src/static/icons/light/eye-slash.svg rename to src/static/icons/light/eye-slash.svg diff --git a/client/src/static/icons/light/eye.svg b/src/static/icons/light/eye.svg similarity index 100% rename from client/src/static/icons/light/eye.svg rename to src/static/icons/light/eye.svg diff --git a/client/src/static/icons/light/fan-table.svg b/src/static/icons/light/fan-table.svg similarity index 100% rename from client/src/static/icons/light/fan-table.svg rename to src/static/icons/light/fan-table.svg diff --git a/client/src/static/icons/light/fan.svg b/src/static/icons/light/fan.svg similarity index 100% rename from client/src/static/icons/light/fan.svg rename to src/static/icons/light/fan.svg diff --git a/client/src/static/icons/light/farm.svg b/src/static/icons/light/farm.svg similarity index 100% rename from client/src/static/icons/light/farm.svg rename to src/static/icons/light/farm.svg diff --git a/client/src/static/icons/light/fast-backward.svg b/src/static/icons/light/fast-backward.svg similarity index 100% rename from client/src/static/icons/light/fast-backward.svg rename to src/static/icons/light/fast-backward.svg diff --git a/client/src/static/icons/light/fast-forward.svg b/src/static/icons/light/fast-forward.svg similarity index 100% rename from client/src/static/icons/light/fast-forward.svg rename to src/static/icons/light/fast-forward.svg diff --git a/client/src/static/icons/light/faucet-drip.svg b/src/static/icons/light/faucet-drip.svg similarity index 100% rename from client/src/static/icons/light/faucet-drip.svg rename to src/static/icons/light/faucet-drip.svg diff --git a/client/src/static/icons/light/faucet.svg b/src/static/icons/light/faucet.svg similarity index 100% rename from client/src/static/icons/light/faucet.svg rename to src/static/icons/light/faucet.svg diff --git a/client/src/static/icons/light/fax.svg b/src/static/icons/light/fax.svg similarity index 100% rename from client/src/static/icons/light/fax.svg rename to src/static/icons/light/fax.svg diff --git a/client/src/static/icons/light/feather-alt.svg b/src/static/icons/light/feather-alt.svg similarity index 100% rename from client/src/static/icons/light/feather-alt.svg rename to src/static/icons/light/feather-alt.svg diff --git a/client/src/static/icons/light/feather.svg b/src/static/icons/light/feather.svg similarity index 100% rename from client/src/static/icons/light/feather.svg rename to src/static/icons/light/feather.svg diff --git a/client/src/static/icons/light/female.svg b/src/static/icons/light/female.svg similarity index 100% rename from client/src/static/icons/light/female.svg rename to src/static/icons/light/female.svg diff --git a/client/src/static/icons/light/field-hockey.svg b/src/static/icons/light/field-hockey.svg similarity index 100% rename from client/src/static/icons/light/field-hockey.svg rename to src/static/icons/light/field-hockey.svg diff --git a/client/src/static/icons/light/fighter-jet.svg b/src/static/icons/light/fighter-jet.svg similarity index 100% rename from client/src/static/icons/light/fighter-jet.svg rename to src/static/icons/light/fighter-jet.svg diff --git a/client/src/static/icons/light/file-alt.svg b/src/static/icons/light/file-alt.svg similarity index 100% rename from client/src/static/icons/light/file-alt.svg rename to src/static/icons/light/file-alt.svg diff --git a/client/src/static/icons/light/file-archive.svg b/src/static/icons/light/file-archive.svg similarity index 100% rename from client/src/static/icons/light/file-archive.svg rename to src/static/icons/light/file-archive.svg diff --git a/client/src/static/icons/light/file-audio.svg b/src/static/icons/light/file-audio.svg similarity index 100% rename from client/src/static/icons/light/file-audio.svg rename to src/static/icons/light/file-audio.svg diff --git a/client/src/static/icons/light/file-certificate.svg b/src/static/icons/light/file-certificate.svg similarity index 100% rename from client/src/static/icons/light/file-certificate.svg rename to src/static/icons/light/file-certificate.svg diff --git a/client/src/static/icons/light/file-chart-line.svg b/src/static/icons/light/file-chart-line.svg similarity index 100% rename from client/src/static/icons/light/file-chart-line.svg rename to src/static/icons/light/file-chart-line.svg diff --git a/client/src/static/icons/light/file-chart-pie.svg b/src/static/icons/light/file-chart-pie.svg similarity index 100% rename from client/src/static/icons/light/file-chart-pie.svg rename to src/static/icons/light/file-chart-pie.svg diff --git a/client/src/static/icons/light/file-check.svg b/src/static/icons/light/file-check.svg similarity index 100% rename from client/src/static/icons/light/file-check.svg rename to src/static/icons/light/file-check.svg diff --git a/client/src/static/icons/light/file-code.svg b/src/static/icons/light/file-code.svg similarity index 100% rename from client/src/static/icons/light/file-code.svg rename to src/static/icons/light/file-code.svg diff --git a/client/src/static/icons/light/file-contract.svg b/src/static/icons/light/file-contract.svg similarity index 100% rename from client/src/static/icons/light/file-contract.svg rename to src/static/icons/light/file-contract.svg diff --git a/client/src/static/icons/light/file-csv.svg b/src/static/icons/light/file-csv.svg similarity index 100% rename from client/src/static/icons/light/file-csv.svg rename to src/static/icons/light/file-csv.svg diff --git a/client/src/static/icons/light/file-download.svg b/src/static/icons/light/file-download.svg similarity index 100% rename from client/src/static/icons/light/file-download.svg rename to src/static/icons/light/file-download.svg diff --git a/client/src/static/icons/light/file-edit.svg b/src/static/icons/light/file-edit.svg similarity index 100% rename from client/src/static/icons/light/file-edit.svg rename to src/static/icons/light/file-edit.svg diff --git a/client/src/static/icons/light/file-excel.svg b/src/static/icons/light/file-excel.svg similarity index 100% rename from client/src/static/icons/light/file-excel.svg rename to src/static/icons/light/file-excel.svg diff --git a/client/src/static/icons/light/file-exclamation.svg b/src/static/icons/light/file-exclamation.svg similarity index 100% rename from client/src/static/icons/light/file-exclamation.svg rename to src/static/icons/light/file-exclamation.svg diff --git a/client/src/static/icons/light/file-export.svg b/src/static/icons/light/file-export.svg similarity index 100% rename from client/src/static/icons/light/file-export.svg rename to src/static/icons/light/file-export.svg diff --git a/client/src/static/icons/light/file-image.svg b/src/static/icons/light/file-image.svg similarity index 100% rename from client/src/static/icons/light/file-image.svg rename to src/static/icons/light/file-image.svg diff --git a/client/src/static/icons/light/file-import.svg b/src/static/icons/light/file-import.svg similarity index 100% rename from client/src/static/icons/light/file-import.svg rename to src/static/icons/light/file-import.svg diff --git a/client/src/static/icons/light/file-invoice-dollar.svg b/src/static/icons/light/file-invoice-dollar.svg similarity index 100% rename from client/src/static/icons/light/file-invoice-dollar.svg rename to src/static/icons/light/file-invoice-dollar.svg diff --git a/client/src/static/icons/light/file-invoice.svg b/src/static/icons/light/file-invoice.svg similarity index 100% rename from client/src/static/icons/light/file-invoice.svg rename to src/static/icons/light/file-invoice.svg diff --git a/client/src/static/icons/light/file-medical-alt.svg b/src/static/icons/light/file-medical-alt.svg similarity index 100% rename from client/src/static/icons/light/file-medical-alt.svg rename to src/static/icons/light/file-medical-alt.svg diff --git a/client/src/static/icons/light/file-medical.svg b/src/static/icons/light/file-medical.svg similarity index 100% rename from client/src/static/icons/light/file-medical.svg rename to src/static/icons/light/file-medical.svg diff --git a/client/src/static/icons/light/file-minus.svg b/src/static/icons/light/file-minus.svg similarity index 100% rename from client/src/static/icons/light/file-minus.svg rename to src/static/icons/light/file-minus.svg diff --git a/client/src/static/icons/light/file-music.svg b/src/static/icons/light/file-music.svg similarity index 100% rename from client/src/static/icons/light/file-music.svg rename to src/static/icons/light/file-music.svg diff --git a/client/src/static/icons/light/file-pdf.svg b/src/static/icons/light/file-pdf.svg similarity index 100% rename from client/src/static/icons/light/file-pdf.svg rename to src/static/icons/light/file-pdf.svg diff --git a/client/src/static/icons/light/file-plus.svg b/src/static/icons/light/file-plus.svg similarity index 100% rename from client/src/static/icons/light/file-plus.svg rename to src/static/icons/light/file-plus.svg diff --git a/client/src/static/icons/light/file-powerpoint.svg b/src/static/icons/light/file-powerpoint.svg similarity index 100% rename from client/src/static/icons/light/file-powerpoint.svg rename to src/static/icons/light/file-powerpoint.svg diff --git a/client/src/static/icons/light/file-prescription.svg b/src/static/icons/light/file-prescription.svg similarity index 100% rename from client/src/static/icons/light/file-prescription.svg rename to src/static/icons/light/file-prescription.svg diff --git a/client/src/static/icons/light/file-search.svg b/src/static/icons/light/file-search.svg similarity index 100% rename from client/src/static/icons/light/file-search.svg rename to src/static/icons/light/file-search.svg diff --git a/client/src/static/icons/light/file-signature.svg b/src/static/icons/light/file-signature.svg similarity index 100% rename from client/src/static/icons/light/file-signature.svg rename to src/static/icons/light/file-signature.svg diff --git a/client/src/static/icons/light/file-spreadsheet.svg b/src/static/icons/light/file-spreadsheet.svg similarity index 100% rename from client/src/static/icons/light/file-spreadsheet.svg rename to src/static/icons/light/file-spreadsheet.svg diff --git a/client/src/static/icons/light/file-times.svg b/src/static/icons/light/file-times.svg similarity index 100% rename from client/src/static/icons/light/file-times.svg rename to src/static/icons/light/file-times.svg diff --git a/client/src/static/icons/light/file-upload.svg b/src/static/icons/light/file-upload.svg similarity index 100% rename from client/src/static/icons/light/file-upload.svg rename to src/static/icons/light/file-upload.svg diff --git a/client/src/static/icons/light/file-user.svg b/src/static/icons/light/file-user.svg similarity index 100% rename from client/src/static/icons/light/file-user.svg rename to src/static/icons/light/file-user.svg diff --git a/client/src/static/icons/light/file-video.svg b/src/static/icons/light/file-video.svg similarity index 100% rename from client/src/static/icons/light/file-video.svg rename to src/static/icons/light/file-video.svg diff --git a/client/src/static/icons/light/file-word.svg b/src/static/icons/light/file-word.svg similarity index 100% rename from client/src/static/icons/light/file-word.svg rename to src/static/icons/light/file-word.svg diff --git a/client/src/static/icons/light/file.svg b/src/static/icons/light/file.svg similarity index 100% rename from client/src/static/icons/light/file.svg rename to src/static/icons/light/file.svg diff --git a/client/src/static/icons/light/files-medical.svg b/src/static/icons/light/files-medical.svg similarity index 100% rename from client/src/static/icons/light/files-medical.svg rename to src/static/icons/light/files-medical.svg diff --git a/client/src/static/icons/light/fill-drip.svg b/src/static/icons/light/fill-drip.svg similarity index 100% rename from client/src/static/icons/light/fill-drip.svg rename to src/static/icons/light/fill-drip.svg diff --git a/client/src/static/icons/light/fill.svg b/src/static/icons/light/fill.svg similarity index 100% rename from client/src/static/icons/light/fill.svg rename to src/static/icons/light/fill.svg diff --git a/client/src/static/icons/light/film-alt.svg b/src/static/icons/light/film-alt.svg similarity index 100% rename from client/src/static/icons/light/film-alt.svg rename to src/static/icons/light/film-alt.svg diff --git a/client/src/static/icons/light/film-canister.svg b/src/static/icons/light/film-canister.svg similarity index 100% rename from client/src/static/icons/light/film-canister.svg rename to src/static/icons/light/film-canister.svg diff --git a/client/src/static/icons/light/film.svg b/src/static/icons/light/film.svg similarity index 100% rename from client/src/static/icons/light/film.svg rename to src/static/icons/light/film.svg diff --git a/client/src/static/icons/light/filter.svg b/src/static/icons/light/filter.svg similarity index 100% rename from client/src/static/icons/light/filter.svg rename to src/static/icons/light/filter.svg diff --git a/client/src/static/icons/light/fingerprint.svg b/src/static/icons/light/fingerprint.svg similarity index 100% rename from client/src/static/icons/light/fingerprint.svg rename to src/static/icons/light/fingerprint.svg diff --git a/client/src/static/icons/light/fire-alt.svg b/src/static/icons/light/fire-alt.svg similarity index 100% rename from client/src/static/icons/light/fire-alt.svg rename to src/static/icons/light/fire-alt.svg diff --git a/client/src/static/icons/light/fire-extinguisher.svg b/src/static/icons/light/fire-extinguisher.svg similarity index 100% rename from client/src/static/icons/light/fire-extinguisher.svg rename to src/static/icons/light/fire-extinguisher.svg diff --git a/client/src/static/icons/light/fire-smoke.svg b/src/static/icons/light/fire-smoke.svg similarity index 100% rename from client/src/static/icons/light/fire-smoke.svg rename to src/static/icons/light/fire-smoke.svg diff --git a/client/src/static/icons/light/fire.svg b/src/static/icons/light/fire.svg similarity index 100% rename from client/src/static/icons/light/fire.svg rename to src/static/icons/light/fire.svg diff --git a/client/src/static/icons/light/fireplace.svg b/src/static/icons/light/fireplace.svg similarity index 100% rename from client/src/static/icons/light/fireplace.svg rename to src/static/icons/light/fireplace.svg diff --git a/client/src/static/icons/light/first-aid.svg b/src/static/icons/light/first-aid.svg similarity index 100% rename from client/src/static/icons/light/first-aid.svg rename to src/static/icons/light/first-aid.svg diff --git a/client/src/static/icons/light/fish-cooked.svg b/src/static/icons/light/fish-cooked.svg similarity index 100% rename from client/src/static/icons/light/fish-cooked.svg rename to src/static/icons/light/fish-cooked.svg diff --git a/client/src/static/icons/light/fish.svg b/src/static/icons/light/fish.svg similarity index 100% rename from client/src/static/icons/light/fish.svg rename to src/static/icons/light/fish.svg diff --git a/client/src/static/icons/light/fist-raised.svg b/src/static/icons/light/fist-raised.svg similarity index 100% rename from client/src/static/icons/light/fist-raised.svg rename to src/static/icons/light/fist-raised.svg diff --git a/client/src/static/icons/light/flag-alt.svg b/src/static/icons/light/flag-alt.svg similarity index 100% rename from client/src/static/icons/light/flag-alt.svg rename to src/static/icons/light/flag-alt.svg diff --git a/client/src/static/icons/light/flag-checkered.svg b/src/static/icons/light/flag-checkered.svg similarity index 100% rename from client/src/static/icons/light/flag-checkered.svg rename to src/static/icons/light/flag-checkered.svg diff --git a/client/src/static/icons/light/flag-usa.svg b/src/static/icons/light/flag-usa.svg similarity index 100% rename from client/src/static/icons/light/flag-usa.svg rename to src/static/icons/light/flag-usa.svg diff --git a/client/src/static/icons/light/flag.svg b/src/static/icons/light/flag.svg similarity index 100% rename from client/src/static/icons/light/flag.svg rename to src/static/icons/light/flag.svg diff --git a/client/src/static/icons/light/flame.svg b/src/static/icons/light/flame.svg similarity index 100% rename from client/src/static/icons/light/flame.svg rename to src/static/icons/light/flame.svg diff --git a/client/src/static/icons/light/flashlight.svg b/src/static/icons/light/flashlight.svg similarity index 100% rename from client/src/static/icons/light/flashlight.svg rename to src/static/icons/light/flashlight.svg diff --git a/client/src/static/icons/light/flask-poison.svg b/src/static/icons/light/flask-poison.svg similarity index 100% rename from client/src/static/icons/light/flask-poison.svg rename to src/static/icons/light/flask-poison.svg diff --git a/client/src/static/icons/light/flask-potion.svg b/src/static/icons/light/flask-potion.svg similarity index 100% rename from client/src/static/icons/light/flask-potion.svg rename to src/static/icons/light/flask-potion.svg diff --git a/client/src/static/icons/light/flask.svg b/src/static/icons/light/flask.svg similarity index 100% rename from client/src/static/icons/light/flask.svg rename to src/static/icons/light/flask.svg diff --git a/client/src/static/icons/light/flower-daffodil.svg b/src/static/icons/light/flower-daffodil.svg similarity index 100% rename from client/src/static/icons/light/flower-daffodil.svg rename to src/static/icons/light/flower-daffodil.svg diff --git a/client/src/static/icons/light/flower-tulip.svg b/src/static/icons/light/flower-tulip.svg similarity index 100% rename from client/src/static/icons/light/flower-tulip.svg rename to src/static/icons/light/flower-tulip.svg diff --git a/client/src/static/icons/light/flower.svg b/src/static/icons/light/flower.svg similarity index 100% rename from client/src/static/icons/light/flower.svg rename to src/static/icons/light/flower.svg diff --git a/client/src/static/icons/light/flushed.svg b/src/static/icons/light/flushed.svg similarity index 100% rename from client/src/static/icons/light/flushed.svg rename to src/static/icons/light/flushed.svg diff --git a/client/src/static/icons/light/flute.svg b/src/static/icons/light/flute.svg similarity index 100% rename from client/src/static/icons/light/flute.svg rename to src/static/icons/light/flute.svg diff --git a/client/src/static/icons/light/flux-capacitor.svg b/src/static/icons/light/flux-capacitor.svg similarity index 100% rename from client/src/static/icons/light/flux-capacitor.svg rename to src/static/icons/light/flux-capacitor.svg diff --git a/client/src/static/icons/light/fog.svg b/src/static/icons/light/fog.svg similarity index 100% rename from client/src/static/icons/light/fog.svg rename to src/static/icons/light/fog.svg diff --git a/client/src/static/icons/light/folder-minus.svg b/src/static/icons/light/folder-minus.svg similarity index 100% rename from client/src/static/icons/light/folder-minus.svg rename to src/static/icons/light/folder-minus.svg diff --git a/client/src/static/icons/light/folder-open.svg b/src/static/icons/light/folder-open.svg similarity index 100% rename from client/src/static/icons/light/folder-open.svg rename to src/static/icons/light/folder-open.svg diff --git a/client/src/static/icons/light/folder-plus.svg b/src/static/icons/light/folder-plus.svg similarity index 100% rename from client/src/static/icons/light/folder-plus.svg rename to src/static/icons/light/folder-plus.svg diff --git a/client/src/static/icons/light/folder-times.svg b/src/static/icons/light/folder-times.svg similarity index 100% rename from client/src/static/icons/light/folder-times.svg rename to src/static/icons/light/folder-times.svg diff --git a/client/src/static/icons/light/folder-tree.svg b/src/static/icons/light/folder-tree.svg similarity index 100% rename from client/src/static/icons/light/folder-tree.svg rename to src/static/icons/light/folder-tree.svg diff --git a/client/src/static/icons/light/folder.svg b/src/static/icons/light/folder.svg similarity index 100% rename from client/src/static/icons/light/folder.svg rename to src/static/icons/light/folder.svg diff --git a/client/src/static/icons/light/folders.svg b/src/static/icons/light/folders.svg similarity index 100% rename from client/src/static/icons/light/folders.svg rename to src/static/icons/light/folders.svg diff --git a/client/src/static/icons/light/font-awesome-logo-full.svg b/src/static/icons/light/font-awesome-logo-full.svg similarity index 100% rename from client/src/static/icons/light/font-awesome-logo-full.svg rename to src/static/icons/light/font-awesome-logo-full.svg diff --git a/client/src/static/icons/light/font-case.svg b/src/static/icons/light/font-case.svg similarity index 100% rename from client/src/static/icons/light/font-case.svg rename to src/static/icons/light/font-case.svg diff --git a/client/src/static/icons/light/font.svg b/src/static/icons/light/font.svg similarity index 100% rename from client/src/static/icons/light/font.svg rename to src/static/icons/light/font.svg diff --git a/client/src/static/icons/light/football-ball.svg b/src/static/icons/light/football-ball.svg similarity index 100% rename from client/src/static/icons/light/football-ball.svg rename to src/static/icons/light/football-ball.svg diff --git a/client/src/static/icons/light/football-helmet.svg b/src/static/icons/light/football-helmet.svg similarity index 100% rename from client/src/static/icons/light/football-helmet.svg rename to src/static/icons/light/football-helmet.svg diff --git a/client/src/static/icons/light/forklift.svg b/src/static/icons/light/forklift.svg similarity index 100% rename from client/src/static/icons/light/forklift.svg rename to src/static/icons/light/forklift.svg diff --git a/client/src/static/icons/light/forward.svg b/src/static/icons/light/forward.svg similarity index 100% rename from client/src/static/icons/light/forward.svg rename to src/static/icons/light/forward.svg diff --git a/client/src/static/icons/light/fragile.svg b/src/static/icons/light/fragile.svg similarity index 100% rename from client/src/static/icons/light/fragile.svg rename to src/static/icons/light/fragile.svg diff --git a/client/src/static/icons/light/french-fries.svg b/src/static/icons/light/french-fries.svg similarity index 100% rename from client/src/static/icons/light/french-fries.svg rename to src/static/icons/light/french-fries.svg diff --git a/client/src/static/icons/light/frog.svg b/src/static/icons/light/frog.svg similarity index 100% rename from client/src/static/icons/light/frog.svg rename to src/static/icons/light/frog.svg diff --git a/client/src/static/icons/light/frosty-head.svg b/src/static/icons/light/frosty-head.svg similarity index 100% rename from client/src/static/icons/light/frosty-head.svg rename to src/static/icons/light/frosty-head.svg diff --git a/client/src/static/icons/light/frown-open.svg b/src/static/icons/light/frown-open.svg similarity index 100% rename from client/src/static/icons/light/frown-open.svg rename to src/static/icons/light/frown-open.svg diff --git a/client/src/static/icons/light/frown.svg b/src/static/icons/light/frown.svg similarity index 100% rename from client/src/static/icons/light/frown.svg rename to src/static/icons/light/frown.svg diff --git a/client/src/static/icons/light/function.svg b/src/static/icons/light/function.svg similarity index 100% rename from client/src/static/icons/light/function.svg rename to src/static/icons/light/function.svg diff --git a/client/src/static/icons/light/funnel-dollar.svg b/src/static/icons/light/funnel-dollar.svg similarity index 100% rename from client/src/static/icons/light/funnel-dollar.svg rename to src/static/icons/light/funnel-dollar.svg diff --git a/client/src/static/icons/light/futbol.svg b/src/static/icons/light/futbol.svg similarity index 100% rename from client/src/static/icons/light/futbol.svg rename to src/static/icons/light/futbol.svg diff --git a/client/src/static/icons/light/galaxy.svg b/src/static/icons/light/galaxy.svg similarity index 100% rename from client/src/static/icons/light/galaxy.svg rename to src/static/icons/light/galaxy.svg diff --git a/client/src/static/icons/light/game-board-alt.svg b/src/static/icons/light/game-board-alt.svg similarity index 100% rename from client/src/static/icons/light/game-board-alt.svg rename to src/static/icons/light/game-board-alt.svg diff --git a/client/src/static/icons/light/game-board.svg b/src/static/icons/light/game-board.svg similarity index 100% rename from client/src/static/icons/light/game-board.svg rename to src/static/icons/light/game-board.svg diff --git a/client/src/static/icons/light/game-console-handheld.svg b/src/static/icons/light/game-console-handheld.svg similarity index 100% rename from client/src/static/icons/light/game-console-handheld.svg rename to src/static/icons/light/game-console-handheld.svg diff --git a/client/src/static/icons/light/gamepad-alt.svg b/src/static/icons/light/gamepad-alt.svg similarity index 100% rename from client/src/static/icons/light/gamepad-alt.svg rename to src/static/icons/light/gamepad-alt.svg diff --git a/client/src/static/icons/light/gamepad.svg b/src/static/icons/light/gamepad.svg similarity index 100% rename from client/src/static/icons/light/gamepad.svg rename to src/static/icons/light/gamepad.svg diff --git a/client/src/static/icons/light/garage-car.svg b/src/static/icons/light/garage-car.svg similarity index 100% rename from client/src/static/icons/light/garage-car.svg rename to src/static/icons/light/garage-car.svg diff --git a/client/src/static/icons/light/garage-open.svg b/src/static/icons/light/garage-open.svg similarity index 100% rename from client/src/static/icons/light/garage-open.svg rename to src/static/icons/light/garage-open.svg diff --git a/client/src/static/icons/light/garage.svg b/src/static/icons/light/garage.svg similarity index 100% rename from client/src/static/icons/light/garage.svg rename to src/static/icons/light/garage.svg diff --git a/client/src/static/icons/light/gas-pump-slash.svg b/src/static/icons/light/gas-pump-slash.svg similarity index 100% rename from client/src/static/icons/light/gas-pump-slash.svg rename to src/static/icons/light/gas-pump-slash.svg diff --git a/client/src/static/icons/light/gas-pump.svg b/src/static/icons/light/gas-pump.svg similarity index 100% rename from client/src/static/icons/light/gas-pump.svg rename to src/static/icons/light/gas-pump.svg diff --git a/client/src/static/icons/light/gavel.svg b/src/static/icons/light/gavel.svg similarity index 100% rename from client/src/static/icons/light/gavel.svg rename to src/static/icons/light/gavel.svg diff --git a/client/src/static/icons/light/gem.svg b/src/static/icons/light/gem.svg similarity index 100% rename from client/src/static/icons/light/gem.svg rename to src/static/icons/light/gem.svg diff --git a/client/src/static/icons/light/genderless.svg b/src/static/icons/light/genderless.svg similarity index 100% rename from client/src/static/icons/light/genderless.svg rename to src/static/icons/light/genderless.svg diff --git a/client/src/static/icons/light/ghost.svg b/src/static/icons/light/ghost.svg similarity index 100% rename from client/src/static/icons/light/ghost.svg rename to src/static/icons/light/ghost.svg diff --git a/client/src/static/icons/light/gift-card.svg b/src/static/icons/light/gift-card.svg similarity index 100% rename from client/src/static/icons/light/gift-card.svg rename to src/static/icons/light/gift-card.svg diff --git a/client/src/static/icons/light/gift.svg b/src/static/icons/light/gift.svg similarity index 100% rename from client/src/static/icons/light/gift.svg rename to src/static/icons/light/gift.svg diff --git a/client/src/static/icons/light/gifts.svg b/src/static/icons/light/gifts.svg similarity index 100% rename from client/src/static/icons/light/gifts.svg rename to src/static/icons/light/gifts.svg diff --git a/client/src/static/icons/light/gingerbread-man.svg b/src/static/icons/light/gingerbread-man.svg similarity index 100% rename from client/src/static/icons/light/gingerbread-man.svg rename to src/static/icons/light/gingerbread-man.svg diff --git a/client/src/static/icons/light/glass-champagne.svg b/src/static/icons/light/glass-champagne.svg similarity index 100% rename from client/src/static/icons/light/glass-champagne.svg rename to src/static/icons/light/glass-champagne.svg diff --git a/client/src/static/icons/light/glass-cheers.svg b/src/static/icons/light/glass-cheers.svg similarity index 100% rename from client/src/static/icons/light/glass-cheers.svg rename to src/static/icons/light/glass-cheers.svg diff --git a/client/src/static/icons/light/glass-citrus.svg b/src/static/icons/light/glass-citrus.svg similarity index 100% rename from client/src/static/icons/light/glass-citrus.svg rename to src/static/icons/light/glass-citrus.svg diff --git a/client/src/static/icons/light/glass-martini-alt.svg b/src/static/icons/light/glass-martini-alt.svg similarity index 100% rename from client/src/static/icons/light/glass-martini-alt.svg rename to src/static/icons/light/glass-martini-alt.svg diff --git a/client/src/static/icons/light/glass-martini.svg b/src/static/icons/light/glass-martini.svg similarity index 100% rename from client/src/static/icons/light/glass-martini.svg rename to src/static/icons/light/glass-martini.svg diff --git a/client/src/static/icons/light/glass-whiskey-rocks.svg b/src/static/icons/light/glass-whiskey-rocks.svg similarity index 100% rename from client/src/static/icons/light/glass-whiskey-rocks.svg rename to src/static/icons/light/glass-whiskey-rocks.svg diff --git a/client/src/static/icons/light/glass-whiskey.svg b/src/static/icons/light/glass-whiskey.svg similarity index 100% rename from client/src/static/icons/light/glass-whiskey.svg rename to src/static/icons/light/glass-whiskey.svg diff --git a/client/src/static/icons/light/glass.svg b/src/static/icons/light/glass.svg similarity index 100% rename from client/src/static/icons/light/glass.svg rename to src/static/icons/light/glass.svg diff --git a/client/src/static/icons/light/glasses-alt.svg b/src/static/icons/light/glasses-alt.svg similarity index 100% rename from client/src/static/icons/light/glasses-alt.svg rename to src/static/icons/light/glasses-alt.svg diff --git a/client/src/static/icons/light/glasses.svg b/src/static/icons/light/glasses.svg similarity index 100% rename from client/src/static/icons/light/glasses.svg rename to src/static/icons/light/glasses.svg diff --git a/client/src/static/icons/light/globe-africa.svg b/src/static/icons/light/globe-africa.svg similarity index 100% rename from client/src/static/icons/light/globe-africa.svg rename to src/static/icons/light/globe-africa.svg diff --git a/client/src/static/icons/light/globe-americas.svg b/src/static/icons/light/globe-americas.svg similarity index 100% rename from client/src/static/icons/light/globe-americas.svg rename to src/static/icons/light/globe-americas.svg diff --git a/client/src/static/icons/light/globe-asia.svg b/src/static/icons/light/globe-asia.svg similarity index 100% rename from client/src/static/icons/light/globe-asia.svg rename to src/static/icons/light/globe-asia.svg diff --git a/client/src/static/icons/light/globe-europe.svg b/src/static/icons/light/globe-europe.svg similarity index 100% rename from client/src/static/icons/light/globe-europe.svg rename to src/static/icons/light/globe-europe.svg diff --git a/client/src/static/icons/light/globe-snow.svg b/src/static/icons/light/globe-snow.svg similarity index 100% rename from client/src/static/icons/light/globe-snow.svg rename to src/static/icons/light/globe-snow.svg diff --git a/client/src/static/icons/light/globe-stand.svg b/src/static/icons/light/globe-stand.svg similarity index 100% rename from client/src/static/icons/light/globe-stand.svg rename to src/static/icons/light/globe-stand.svg diff --git a/client/src/static/icons/light/globe.svg b/src/static/icons/light/globe.svg similarity index 100% rename from client/src/static/icons/light/globe.svg rename to src/static/icons/light/globe.svg diff --git a/client/src/static/icons/light/golf-ball.svg b/src/static/icons/light/golf-ball.svg similarity index 100% rename from client/src/static/icons/light/golf-ball.svg rename to src/static/icons/light/golf-ball.svg diff --git a/client/src/static/icons/light/golf-club.svg b/src/static/icons/light/golf-club.svg similarity index 100% rename from client/src/static/icons/light/golf-club.svg rename to src/static/icons/light/golf-club.svg diff --git a/client/src/static/icons/light/gopuram.svg b/src/static/icons/light/gopuram.svg similarity index 100% rename from client/src/static/icons/light/gopuram.svg rename to src/static/icons/light/gopuram.svg diff --git a/client/src/static/icons/light/graduation-cap.svg b/src/static/icons/light/graduation-cap.svg similarity index 100% rename from client/src/static/icons/light/graduation-cap.svg rename to src/static/icons/light/graduation-cap.svg diff --git a/client/src/static/icons/light/gramophone.svg b/src/static/icons/light/gramophone.svg similarity index 100% rename from client/src/static/icons/light/gramophone.svg rename to src/static/icons/light/gramophone.svg diff --git a/client/src/static/icons/light/greater-than-equal.svg b/src/static/icons/light/greater-than-equal.svg similarity index 100% rename from client/src/static/icons/light/greater-than-equal.svg rename to src/static/icons/light/greater-than-equal.svg diff --git a/client/src/static/icons/light/greater-than.svg b/src/static/icons/light/greater-than.svg similarity index 100% rename from client/src/static/icons/light/greater-than.svg rename to src/static/icons/light/greater-than.svg diff --git a/client/src/static/icons/light/grimace.svg b/src/static/icons/light/grimace.svg similarity index 100% rename from client/src/static/icons/light/grimace.svg rename to src/static/icons/light/grimace.svg diff --git a/client/src/static/icons/light/grin-alt.svg b/src/static/icons/light/grin-alt.svg similarity index 100% rename from client/src/static/icons/light/grin-alt.svg rename to src/static/icons/light/grin-alt.svg diff --git a/client/src/static/icons/light/grin-beam-sweat.svg b/src/static/icons/light/grin-beam-sweat.svg similarity index 100% rename from client/src/static/icons/light/grin-beam-sweat.svg rename to src/static/icons/light/grin-beam-sweat.svg diff --git a/client/src/static/icons/light/grin-beam.svg b/src/static/icons/light/grin-beam.svg similarity index 100% rename from client/src/static/icons/light/grin-beam.svg rename to src/static/icons/light/grin-beam.svg diff --git a/client/src/static/icons/light/grin-hearts.svg b/src/static/icons/light/grin-hearts.svg similarity index 100% rename from client/src/static/icons/light/grin-hearts.svg rename to src/static/icons/light/grin-hearts.svg diff --git a/client/src/static/icons/light/grin-squint-tears.svg b/src/static/icons/light/grin-squint-tears.svg similarity index 100% rename from client/src/static/icons/light/grin-squint-tears.svg rename to src/static/icons/light/grin-squint-tears.svg diff --git a/client/src/static/icons/light/grin-squint.svg b/src/static/icons/light/grin-squint.svg similarity index 100% rename from client/src/static/icons/light/grin-squint.svg rename to src/static/icons/light/grin-squint.svg diff --git a/client/src/static/icons/light/grin-stars.svg b/src/static/icons/light/grin-stars.svg similarity index 100% rename from client/src/static/icons/light/grin-stars.svg rename to src/static/icons/light/grin-stars.svg diff --git a/client/src/static/icons/light/grin-tears.svg b/src/static/icons/light/grin-tears.svg similarity index 100% rename from client/src/static/icons/light/grin-tears.svg rename to src/static/icons/light/grin-tears.svg diff --git a/client/src/static/icons/light/grin-tongue-squint.svg b/src/static/icons/light/grin-tongue-squint.svg similarity index 100% rename from client/src/static/icons/light/grin-tongue-squint.svg rename to src/static/icons/light/grin-tongue-squint.svg diff --git a/client/src/static/icons/light/grin-tongue-wink.svg b/src/static/icons/light/grin-tongue-wink.svg similarity index 100% rename from client/src/static/icons/light/grin-tongue-wink.svg rename to src/static/icons/light/grin-tongue-wink.svg diff --git a/client/src/static/icons/light/grin-tongue.svg b/src/static/icons/light/grin-tongue.svg similarity index 100% rename from client/src/static/icons/light/grin-tongue.svg rename to src/static/icons/light/grin-tongue.svg diff --git a/client/src/static/icons/light/grin-wink.svg b/src/static/icons/light/grin-wink.svg similarity index 100% rename from client/src/static/icons/light/grin-wink.svg rename to src/static/icons/light/grin-wink.svg diff --git a/client/src/static/icons/light/grin.svg b/src/static/icons/light/grin.svg similarity index 100% rename from client/src/static/icons/light/grin.svg rename to src/static/icons/light/grin.svg diff --git a/client/src/static/icons/light/grip-horizontal.svg b/src/static/icons/light/grip-horizontal.svg similarity index 100% rename from client/src/static/icons/light/grip-horizontal.svg rename to src/static/icons/light/grip-horizontal.svg diff --git a/client/src/static/icons/light/grip-lines-vertical.svg b/src/static/icons/light/grip-lines-vertical.svg similarity index 100% rename from client/src/static/icons/light/grip-lines-vertical.svg rename to src/static/icons/light/grip-lines-vertical.svg diff --git a/client/src/static/icons/light/grip-lines.svg b/src/static/icons/light/grip-lines.svg similarity index 100% rename from client/src/static/icons/light/grip-lines.svg rename to src/static/icons/light/grip-lines.svg diff --git a/client/src/static/icons/light/grip-vertical.svg b/src/static/icons/light/grip-vertical.svg similarity index 100% rename from client/src/static/icons/light/grip-vertical.svg rename to src/static/icons/light/grip-vertical.svg diff --git a/client/src/static/icons/light/guitar-electric.svg b/src/static/icons/light/guitar-electric.svg similarity index 100% rename from client/src/static/icons/light/guitar-electric.svg rename to src/static/icons/light/guitar-electric.svg diff --git a/client/src/static/icons/light/guitar.svg b/src/static/icons/light/guitar.svg similarity index 100% rename from client/src/static/icons/light/guitar.svg rename to src/static/icons/light/guitar.svg diff --git a/client/src/static/icons/light/guitars.svg b/src/static/icons/light/guitars.svg similarity index 100% rename from client/src/static/icons/light/guitars.svg rename to src/static/icons/light/guitars.svg diff --git a/client/src/static/icons/light/h-square.svg b/src/static/icons/light/h-square.svg similarity index 100% rename from client/src/static/icons/light/h-square.svg rename to src/static/icons/light/h-square.svg diff --git a/client/src/static/icons/light/h1.svg b/src/static/icons/light/h1.svg similarity index 100% rename from client/src/static/icons/light/h1.svg rename to src/static/icons/light/h1.svg diff --git a/client/src/static/icons/light/h2.svg b/src/static/icons/light/h2.svg similarity index 100% rename from client/src/static/icons/light/h2.svg rename to src/static/icons/light/h2.svg diff --git a/client/src/static/icons/light/h3.svg b/src/static/icons/light/h3.svg similarity index 100% rename from client/src/static/icons/light/h3.svg rename to src/static/icons/light/h3.svg diff --git a/client/src/static/icons/light/h4.svg b/src/static/icons/light/h4.svg similarity index 100% rename from client/src/static/icons/light/h4.svg rename to src/static/icons/light/h4.svg diff --git a/client/src/static/icons/light/hamburger.svg b/src/static/icons/light/hamburger.svg similarity index 100% rename from client/src/static/icons/light/hamburger.svg rename to src/static/icons/light/hamburger.svg diff --git a/client/src/static/icons/light/hammer-war.svg b/src/static/icons/light/hammer-war.svg similarity index 100% rename from client/src/static/icons/light/hammer-war.svg rename to src/static/icons/light/hammer-war.svg diff --git a/client/src/static/icons/light/hammer.svg b/src/static/icons/light/hammer.svg similarity index 100% rename from client/src/static/icons/light/hammer.svg rename to src/static/icons/light/hammer.svg diff --git a/client/src/static/icons/light/hamsa.svg b/src/static/icons/light/hamsa.svg similarity index 100% rename from client/src/static/icons/light/hamsa.svg rename to src/static/icons/light/hamsa.svg diff --git a/client/src/static/icons/light/hand-heart.svg b/src/static/icons/light/hand-heart.svg similarity index 100% rename from client/src/static/icons/light/hand-heart.svg rename to src/static/icons/light/hand-heart.svg diff --git a/client/src/static/icons/light/hand-holding-box.svg b/src/static/icons/light/hand-holding-box.svg similarity index 100% rename from client/src/static/icons/light/hand-holding-box.svg rename to src/static/icons/light/hand-holding-box.svg diff --git a/client/src/static/icons/light/hand-holding-heart.svg b/src/static/icons/light/hand-holding-heart.svg similarity index 100% rename from client/src/static/icons/light/hand-holding-heart.svg rename to src/static/icons/light/hand-holding-heart.svg diff --git a/client/src/static/icons/light/hand-holding-magic.svg b/src/static/icons/light/hand-holding-magic.svg similarity index 100% rename from client/src/static/icons/light/hand-holding-magic.svg rename to src/static/icons/light/hand-holding-magic.svg diff --git a/client/src/static/icons/light/hand-holding-seedling.svg b/src/static/icons/light/hand-holding-seedling.svg similarity index 100% rename from client/src/static/icons/light/hand-holding-seedling.svg rename to src/static/icons/light/hand-holding-seedling.svg diff --git a/client/src/static/icons/light/hand-holding-usd.svg b/src/static/icons/light/hand-holding-usd.svg similarity index 100% rename from client/src/static/icons/light/hand-holding-usd.svg rename to src/static/icons/light/hand-holding-usd.svg diff --git a/client/src/static/icons/light/hand-holding-water.svg b/src/static/icons/light/hand-holding-water.svg similarity index 100% rename from client/src/static/icons/light/hand-holding-water.svg rename to src/static/icons/light/hand-holding-water.svg diff --git a/client/src/static/icons/light/hand-holding.svg b/src/static/icons/light/hand-holding.svg similarity index 100% rename from client/src/static/icons/light/hand-holding.svg rename to src/static/icons/light/hand-holding.svg diff --git a/client/src/static/icons/light/hand-lizard.svg b/src/static/icons/light/hand-lizard.svg similarity index 100% rename from client/src/static/icons/light/hand-lizard.svg rename to src/static/icons/light/hand-lizard.svg diff --git a/client/src/static/icons/light/hand-middle-finger.svg b/src/static/icons/light/hand-middle-finger.svg similarity index 100% rename from client/src/static/icons/light/hand-middle-finger.svg rename to src/static/icons/light/hand-middle-finger.svg diff --git a/client/src/static/icons/light/hand-paper.svg b/src/static/icons/light/hand-paper.svg similarity index 100% rename from client/src/static/icons/light/hand-paper.svg rename to src/static/icons/light/hand-paper.svg diff --git a/client/src/static/icons/light/hand-peace.svg b/src/static/icons/light/hand-peace.svg similarity index 100% rename from client/src/static/icons/light/hand-peace.svg rename to src/static/icons/light/hand-peace.svg diff --git a/client/src/static/icons/light/hand-point-down.svg b/src/static/icons/light/hand-point-down.svg similarity index 100% rename from client/src/static/icons/light/hand-point-down.svg rename to src/static/icons/light/hand-point-down.svg diff --git a/client/src/static/icons/light/hand-point-left.svg b/src/static/icons/light/hand-point-left.svg similarity index 100% rename from client/src/static/icons/light/hand-point-left.svg rename to src/static/icons/light/hand-point-left.svg diff --git a/client/src/static/icons/light/hand-point-right.svg b/src/static/icons/light/hand-point-right.svg similarity index 100% rename from client/src/static/icons/light/hand-point-right.svg rename to src/static/icons/light/hand-point-right.svg diff --git a/client/src/static/icons/light/hand-point-up.svg b/src/static/icons/light/hand-point-up.svg similarity index 100% rename from client/src/static/icons/light/hand-point-up.svg rename to src/static/icons/light/hand-point-up.svg diff --git a/client/src/static/icons/light/hand-pointer.svg b/src/static/icons/light/hand-pointer.svg similarity index 100% rename from client/src/static/icons/light/hand-pointer.svg rename to src/static/icons/light/hand-pointer.svg diff --git a/client/src/static/icons/light/hand-receiving.svg b/src/static/icons/light/hand-receiving.svg similarity index 100% rename from client/src/static/icons/light/hand-receiving.svg rename to src/static/icons/light/hand-receiving.svg diff --git a/client/src/static/icons/light/hand-rock.svg b/src/static/icons/light/hand-rock.svg similarity index 100% rename from client/src/static/icons/light/hand-rock.svg rename to src/static/icons/light/hand-rock.svg diff --git a/client/src/static/icons/light/hand-scissors.svg b/src/static/icons/light/hand-scissors.svg similarity index 100% rename from client/src/static/icons/light/hand-scissors.svg rename to src/static/icons/light/hand-scissors.svg diff --git a/client/src/static/icons/light/hand-spock.svg b/src/static/icons/light/hand-spock.svg similarity index 100% rename from client/src/static/icons/light/hand-spock.svg rename to src/static/icons/light/hand-spock.svg diff --git a/client/src/static/icons/light/hands-heart.svg b/src/static/icons/light/hands-heart.svg similarity index 100% rename from client/src/static/icons/light/hands-heart.svg rename to src/static/icons/light/hands-heart.svg diff --git a/client/src/static/icons/light/hands-helping.svg b/src/static/icons/light/hands-helping.svg similarity index 100% rename from client/src/static/icons/light/hands-helping.svg rename to src/static/icons/light/hands-helping.svg diff --git a/client/src/static/icons/light/hands-usd.svg b/src/static/icons/light/hands-usd.svg similarity index 100% rename from client/src/static/icons/light/hands-usd.svg rename to src/static/icons/light/hands-usd.svg diff --git a/client/src/static/icons/light/hands.svg b/src/static/icons/light/hands.svg similarity index 100% rename from client/src/static/icons/light/hands.svg rename to src/static/icons/light/hands.svg diff --git a/client/src/static/icons/light/handshake-alt.svg b/src/static/icons/light/handshake-alt.svg similarity index 100% rename from client/src/static/icons/light/handshake-alt.svg rename to src/static/icons/light/handshake-alt.svg diff --git a/client/src/static/icons/light/handshake.svg b/src/static/icons/light/handshake.svg similarity index 100% rename from client/src/static/icons/light/handshake.svg rename to src/static/icons/light/handshake.svg diff --git a/client/src/static/icons/light/hanukiah.svg b/src/static/icons/light/hanukiah.svg similarity index 100% rename from client/src/static/icons/light/hanukiah.svg rename to src/static/icons/light/hanukiah.svg diff --git a/client/src/static/icons/light/hard-hat.svg b/src/static/icons/light/hard-hat.svg similarity index 100% rename from client/src/static/icons/light/hard-hat.svg rename to src/static/icons/light/hard-hat.svg diff --git a/client/src/static/icons/light/hashtag.svg b/src/static/icons/light/hashtag.svg similarity index 100% rename from client/src/static/icons/light/hashtag.svg rename to src/static/icons/light/hashtag.svg diff --git a/client/src/static/icons/light/hat-chef.svg b/src/static/icons/light/hat-chef.svg similarity index 100% rename from client/src/static/icons/light/hat-chef.svg rename to src/static/icons/light/hat-chef.svg diff --git a/client/src/static/icons/light/hat-cowboy-side.svg b/src/static/icons/light/hat-cowboy-side.svg similarity index 100% rename from client/src/static/icons/light/hat-cowboy-side.svg rename to src/static/icons/light/hat-cowboy-side.svg diff --git a/client/src/static/icons/light/hat-cowboy.svg b/src/static/icons/light/hat-cowboy.svg similarity index 100% rename from client/src/static/icons/light/hat-cowboy.svg rename to src/static/icons/light/hat-cowboy.svg diff --git a/client/src/static/icons/light/hat-santa.svg b/src/static/icons/light/hat-santa.svg similarity index 100% rename from client/src/static/icons/light/hat-santa.svg rename to src/static/icons/light/hat-santa.svg diff --git a/client/src/static/icons/light/hat-winter.svg b/src/static/icons/light/hat-winter.svg similarity index 100% rename from client/src/static/icons/light/hat-winter.svg rename to src/static/icons/light/hat-winter.svg diff --git a/client/src/static/icons/light/hat-witch.svg b/src/static/icons/light/hat-witch.svg similarity index 100% rename from client/src/static/icons/light/hat-witch.svg rename to src/static/icons/light/hat-witch.svg diff --git a/client/src/static/icons/light/hat-wizard.svg b/src/static/icons/light/hat-wizard.svg similarity index 100% rename from client/src/static/icons/light/hat-wizard.svg rename to src/static/icons/light/hat-wizard.svg diff --git a/client/src/static/icons/light/hdd.svg b/src/static/icons/light/hdd.svg similarity index 100% rename from client/src/static/icons/light/hdd.svg rename to src/static/icons/light/hdd.svg diff --git a/client/src/static/icons/light/head-side-brain.svg b/src/static/icons/light/head-side-brain.svg similarity index 100% rename from client/src/static/icons/light/head-side-brain.svg rename to src/static/icons/light/head-side-brain.svg diff --git a/client/src/static/icons/light/head-side-headphones.svg b/src/static/icons/light/head-side-headphones.svg similarity index 100% rename from client/src/static/icons/light/head-side-headphones.svg rename to src/static/icons/light/head-side-headphones.svg diff --git a/client/src/static/icons/light/head-side-medical.svg b/src/static/icons/light/head-side-medical.svg similarity index 100% rename from client/src/static/icons/light/head-side-medical.svg rename to src/static/icons/light/head-side-medical.svg diff --git a/client/src/static/icons/light/head-side.svg b/src/static/icons/light/head-side.svg similarity index 100% rename from client/src/static/icons/light/head-side.svg rename to src/static/icons/light/head-side.svg diff --git a/client/src/static/icons/light/head-vr.svg b/src/static/icons/light/head-vr.svg similarity index 100% rename from client/src/static/icons/light/head-vr.svg rename to src/static/icons/light/head-vr.svg diff --git a/client/src/static/icons/light/heading.svg b/src/static/icons/light/heading.svg similarity index 100% rename from client/src/static/icons/light/heading.svg rename to src/static/icons/light/heading.svg diff --git a/client/src/static/icons/light/headphones-alt.svg b/src/static/icons/light/headphones-alt.svg similarity index 100% rename from client/src/static/icons/light/headphones-alt.svg rename to src/static/icons/light/headphones-alt.svg diff --git a/client/src/static/icons/light/headphones.svg b/src/static/icons/light/headphones.svg similarity index 100% rename from client/src/static/icons/light/headphones.svg rename to src/static/icons/light/headphones.svg diff --git a/client/src/static/icons/light/headset.svg b/src/static/icons/light/headset.svg similarity index 100% rename from client/src/static/icons/light/headset.svg rename to src/static/icons/light/headset.svg diff --git a/client/src/static/icons/light/heart-broken.svg b/src/static/icons/light/heart-broken.svg similarity index 100% rename from client/src/static/icons/light/heart-broken.svg rename to src/static/icons/light/heart-broken.svg diff --git a/client/src/static/icons/light/heart-circle.svg b/src/static/icons/light/heart-circle.svg similarity index 100% rename from client/src/static/icons/light/heart-circle.svg rename to src/static/icons/light/heart-circle.svg diff --git a/client/src/static/icons/light/heart-rate.svg b/src/static/icons/light/heart-rate.svg similarity index 100% rename from client/src/static/icons/light/heart-rate.svg rename to src/static/icons/light/heart-rate.svg diff --git a/client/src/static/icons/light/heart-square.svg b/src/static/icons/light/heart-square.svg similarity index 100% rename from client/src/static/icons/light/heart-square.svg rename to src/static/icons/light/heart-square.svg diff --git a/client/src/static/icons/light/heart.svg b/src/static/icons/light/heart.svg similarity index 100% rename from client/src/static/icons/light/heart.svg rename to src/static/icons/light/heart.svg diff --git a/client/src/static/icons/light/heartbeat.svg b/src/static/icons/light/heartbeat.svg similarity index 100% rename from client/src/static/icons/light/heartbeat.svg rename to src/static/icons/light/heartbeat.svg diff --git a/client/src/static/icons/light/heat.svg b/src/static/icons/light/heat.svg similarity index 100% rename from client/src/static/icons/light/heat.svg rename to src/static/icons/light/heat.svg diff --git a/client/src/static/icons/light/helicopter.svg b/src/static/icons/light/helicopter.svg similarity index 100% rename from client/src/static/icons/light/helicopter.svg rename to src/static/icons/light/helicopter.svg diff --git a/client/src/static/icons/light/helmet-battle.svg b/src/static/icons/light/helmet-battle.svg similarity index 100% rename from client/src/static/icons/light/helmet-battle.svg rename to src/static/icons/light/helmet-battle.svg diff --git a/client/src/static/icons/light/hexagon.svg b/src/static/icons/light/hexagon.svg similarity index 100% rename from client/src/static/icons/light/hexagon.svg rename to src/static/icons/light/hexagon.svg diff --git a/client/src/static/icons/light/highlighter.svg b/src/static/icons/light/highlighter.svg similarity index 100% rename from client/src/static/icons/light/highlighter.svg rename to src/static/icons/light/highlighter.svg diff --git a/client/src/static/icons/light/hiking.svg b/src/static/icons/light/hiking.svg similarity index 100% rename from client/src/static/icons/light/hiking.svg rename to src/static/icons/light/hiking.svg diff --git a/client/src/static/icons/light/hippo.svg b/src/static/icons/light/hippo.svg similarity index 100% rename from client/src/static/icons/light/hippo.svg rename to src/static/icons/light/hippo.svg diff --git a/client/src/static/icons/light/history.svg b/src/static/icons/light/history.svg similarity index 100% rename from client/src/static/icons/light/history.svg rename to src/static/icons/light/history.svg diff --git a/client/src/static/icons/light/hockey-mask.svg b/src/static/icons/light/hockey-mask.svg similarity index 100% rename from client/src/static/icons/light/hockey-mask.svg rename to src/static/icons/light/hockey-mask.svg diff --git a/client/src/static/icons/light/hockey-puck.svg b/src/static/icons/light/hockey-puck.svg similarity index 100% rename from client/src/static/icons/light/hockey-puck.svg rename to src/static/icons/light/hockey-puck.svg diff --git a/client/src/static/icons/light/hockey-sticks.svg b/src/static/icons/light/hockey-sticks.svg similarity index 100% rename from client/src/static/icons/light/hockey-sticks.svg rename to src/static/icons/light/hockey-sticks.svg diff --git a/client/src/static/icons/light/holly-berry.svg b/src/static/icons/light/holly-berry.svg similarity index 100% rename from client/src/static/icons/light/holly-berry.svg rename to src/static/icons/light/holly-berry.svg diff --git a/client/src/static/icons/light/home-alt.svg b/src/static/icons/light/home-alt.svg similarity index 100% rename from client/src/static/icons/light/home-alt.svg rename to src/static/icons/light/home-alt.svg diff --git a/client/src/static/icons/light/home-heart.svg b/src/static/icons/light/home-heart.svg similarity index 100% rename from client/src/static/icons/light/home-heart.svg rename to src/static/icons/light/home-heart.svg diff --git a/client/src/static/icons/light/home-lg-alt.svg b/src/static/icons/light/home-lg-alt.svg similarity index 100% rename from client/src/static/icons/light/home-lg-alt.svg rename to src/static/icons/light/home-lg-alt.svg diff --git a/client/src/static/icons/light/home-lg.svg b/src/static/icons/light/home-lg.svg similarity index 100% rename from client/src/static/icons/light/home-lg.svg rename to src/static/icons/light/home-lg.svg diff --git a/client/src/static/icons/light/home.svg b/src/static/icons/light/home.svg similarity index 100% rename from client/src/static/icons/light/home.svg rename to src/static/icons/light/home.svg diff --git a/client/src/static/icons/light/hood-cloak.svg b/src/static/icons/light/hood-cloak.svg similarity index 100% rename from client/src/static/icons/light/hood-cloak.svg rename to src/static/icons/light/hood-cloak.svg diff --git a/client/src/static/icons/light/horizontal-rule.svg b/src/static/icons/light/horizontal-rule.svg similarity index 100% rename from client/src/static/icons/light/horizontal-rule.svg rename to src/static/icons/light/horizontal-rule.svg diff --git a/client/src/static/icons/light/horse-head.svg b/src/static/icons/light/horse-head.svg similarity index 100% rename from client/src/static/icons/light/horse-head.svg rename to src/static/icons/light/horse-head.svg diff --git a/client/src/static/icons/light/horse-saddle.svg b/src/static/icons/light/horse-saddle.svg similarity index 100% rename from client/src/static/icons/light/horse-saddle.svg rename to src/static/icons/light/horse-saddle.svg diff --git a/client/src/static/icons/light/horse.svg b/src/static/icons/light/horse.svg similarity index 100% rename from client/src/static/icons/light/horse.svg rename to src/static/icons/light/horse.svg diff --git a/client/src/static/icons/light/hospital-alt.svg b/src/static/icons/light/hospital-alt.svg similarity index 100% rename from client/src/static/icons/light/hospital-alt.svg rename to src/static/icons/light/hospital-alt.svg diff --git a/client/src/static/icons/light/hospital-symbol.svg b/src/static/icons/light/hospital-symbol.svg similarity index 100% rename from client/src/static/icons/light/hospital-symbol.svg rename to src/static/icons/light/hospital-symbol.svg diff --git a/client/src/static/icons/light/hospital-user.svg b/src/static/icons/light/hospital-user.svg similarity index 100% rename from client/src/static/icons/light/hospital-user.svg rename to src/static/icons/light/hospital-user.svg diff --git a/client/src/static/icons/light/hospital.svg b/src/static/icons/light/hospital.svg similarity index 100% rename from client/src/static/icons/light/hospital.svg rename to src/static/icons/light/hospital.svg diff --git a/client/src/static/icons/light/hospitals.svg b/src/static/icons/light/hospitals.svg similarity index 100% rename from client/src/static/icons/light/hospitals.svg rename to src/static/icons/light/hospitals.svg diff --git a/client/src/static/icons/light/hot-tub.svg b/src/static/icons/light/hot-tub.svg similarity index 100% rename from client/src/static/icons/light/hot-tub.svg rename to src/static/icons/light/hot-tub.svg diff --git a/client/src/static/icons/light/hotdog.svg b/src/static/icons/light/hotdog.svg similarity index 100% rename from client/src/static/icons/light/hotdog.svg rename to src/static/icons/light/hotdog.svg diff --git a/client/src/static/icons/light/hotel.svg b/src/static/icons/light/hotel.svg similarity index 100% rename from client/src/static/icons/light/hotel.svg rename to src/static/icons/light/hotel.svg diff --git a/client/src/static/icons/light/hourglass-end.svg b/src/static/icons/light/hourglass-end.svg similarity index 100% rename from client/src/static/icons/light/hourglass-end.svg rename to src/static/icons/light/hourglass-end.svg diff --git a/client/src/static/icons/light/hourglass-half.svg b/src/static/icons/light/hourglass-half.svg similarity index 100% rename from client/src/static/icons/light/hourglass-half.svg rename to src/static/icons/light/hourglass-half.svg diff --git a/client/src/static/icons/light/hourglass-start.svg b/src/static/icons/light/hourglass-start.svg similarity index 100% rename from client/src/static/icons/light/hourglass-start.svg rename to src/static/icons/light/hourglass-start.svg diff --git a/client/src/static/icons/light/hourglass.svg b/src/static/icons/light/hourglass.svg similarity index 100% rename from client/src/static/icons/light/hourglass.svg rename to src/static/icons/light/hourglass.svg diff --git a/client/src/static/icons/light/house-damage.svg b/src/static/icons/light/house-damage.svg similarity index 100% rename from client/src/static/icons/light/house-damage.svg rename to src/static/icons/light/house-damage.svg diff --git a/client/src/static/icons/light/house-day.svg b/src/static/icons/light/house-day.svg similarity index 100% rename from client/src/static/icons/light/house-day.svg rename to src/static/icons/light/house-day.svg diff --git a/client/src/static/icons/light/house-flood.svg b/src/static/icons/light/house-flood.svg similarity index 100% rename from client/src/static/icons/light/house-flood.svg rename to src/static/icons/light/house-flood.svg diff --git a/client/src/static/icons/light/house-leave.svg b/src/static/icons/light/house-leave.svg similarity index 100% rename from client/src/static/icons/light/house-leave.svg rename to src/static/icons/light/house-leave.svg diff --git a/client/src/static/icons/light/house-night.svg b/src/static/icons/light/house-night.svg similarity index 100% rename from client/src/static/icons/light/house-night.svg rename to src/static/icons/light/house-night.svg diff --git a/client/src/static/icons/light/house-return.svg b/src/static/icons/light/house-return.svg similarity index 100% rename from client/src/static/icons/light/house-return.svg rename to src/static/icons/light/house-return.svg diff --git a/client/src/static/icons/light/house-signal.svg b/src/static/icons/light/house-signal.svg similarity index 100% rename from client/src/static/icons/light/house-signal.svg rename to src/static/icons/light/house-signal.svg diff --git a/client/src/static/icons/light/house.svg b/src/static/icons/light/house.svg similarity index 100% rename from client/src/static/icons/light/house.svg rename to src/static/icons/light/house.svg diff --git a/client/src/static/icons/light/hryvnia.svg b/src/static/icons/light/hryvnia.svg similarity index 100% rename from client/src/static/icons/light/hryvnia.svg rename to src/static/icons/light/hryvnia.svg diff --git a/client/src/static/icons/light/humidity.svg b/src/static/icons/light/humidity.svg similarity index 100% rename from client/src/static/icons/light/humidity.svg rename to src/static/icons/light/humidity.svg diff --git a/client/src/static/icons/light/hurricane.svg b/src/static/icons/light/hurricane.svg similarity index 100% rename from client/src/static/icons/light/hurricane.svg rename to src/static/icons/light/hurricane.svg diff --git a/client/src/static/icons/light/i-cursor.svg b/src/static/icons/light/i-cursor.svg similarity index 100% rename from client/src/static/icons/light/i-cursor.svg rename to src/static/icons/light/i-cursor.svg diff --git a/client/src/static/icons/light/ice-cream.svg b/src/static/icons/light/ice-cream.svg similarity index 100% rename from client/src/static/icons/light/ice-cream.svg rename to src/static/icons/light/ice-cream.svg diff --git a/client/src/static/icons/light/ice-skate.svg b/src/static/icons/light/ice-skate.svg similarity index 100% rename from client/src/static/icons/light/ice-skate.svg rename to src/static/icons/light/ice-skate.svg diff --git a/client/src/static/icons/light/icicles.svg b/src/static/icons/light/icicles.svg similarity index 100% rename from client/src/static/icons/light/icicles.svg rename to src/static/icons/light/icicles.svg diff --git a/client/src/static/icons/light/icons-alt.svg b/src/static/icons/light/icons-alt.svg similarity index 100% rename from client/src/static/icons/light/icons-alt.svg rename to src/static/icons/light/icons-alt.svg diff --git a/client/src/static/icons/light/icons.svg b/src/static/icons/light/icons.svg similarity index 100% rename from client/src/static/icons/light/icons.svg rename to src/static/icons/light/icons.svg diff --git a/client/src/static/icons/light/id-badge.svg b/src/static/icons/light/id-badge.svg similarity index 100% rename from client/src/static/icons/light/id-badge.svg rename to src/static/icons/light/id-badge.svg diff --git a/client/src/static/icons/light/id-card-alt.svg b/src/static/icons/light/id-card-alt.svg similarity index 100% rename from client/src/static/icons/light/id-card-alt.svg rename to src/static/icons/light/id-card-alt.svg diff --git a/client/src/static/icons/light/id-card.svg b/src/static/icons/light/id-card.svg similarity index 100% rename from client/src/static/icons/light/id-card.svg rename to src/static/icons/light/id-card.svg diff --git a/client/src/static/icons/light/igloo.svg b/src/static/icons/light/igloo.svg similarity index 100% rename from client/src/static/icons/light/igloo.svg rename to src/static/icons/light/igloo.svg diff --git a/client/src/static/icons/light/image-polaroid.svg b/src/static/icons/light/image-polaroid.svg similarity index 100% rename from client/src/static/icons/light/image-polaroid.svg rename to src/static/icons/light/image-polaroid.svg diff --git a/client/src/static/icons/light/image.svg b/src/static/icons/light/image.svg similarity index 100% rename from client/src/static/icons/light/image.svg rename to src/static/icons/light/image.svg diff --git a/client/src/static/icons/light/images.svg b/src/static/icons/light/images.svg similarity index 100% rename from client/src/static/icons/light/images.svg rename to src/static/icons/light/images.svg diff --git a/client/src/static/icons/light/inbox-in.svg b/src/static/icons/light/inbox-in.svg similarity index 100% rename from client/src/static/icons/light/inbox-in.svg rename to src/static/icons/light/inbox-in.svg diff --git a/client/src/static/icons/light/inbox-out.svg b/src/static/icons/light/inbox-out.svg similarity index 100% rename from client/src/static/icons/light/inbox-out.svg rename to src/static/icons/light/inbox-out.svg diff --git a/client/src/static/icons/light/inbox.svg b/src/static/icons/light/inbox.svg similarity index 100% rename from client/src/static/icons/light/inbox.svg rename to src/static/icons/light/inbox.svg diff --git a/client/src/static/icons/light/indent.svg b/src/static/icons/light/indent.svg similarity index 100% rename from client/src/static/icons/light/indent.svg rename to src/static/icons/light/indent.svg diff --git a/client/src/static/icons/light/industry-alt.svg b/src/static/icons/light/industry-alt.svg similarity index 100% rename from client/src/static/icons/light/industry-alt.svg rename to src/static/icons/light/industry-alt.svg diff --git a/client/src/static/icons/light/industry.svg b/src/static/icons/light/industry.svg similarity index 100% rename from client/src/static/icons/light/industry.svg rename to src/static/icons/light/industry.svg diff --git a/client/src/static/icons/light/infinity.svg b/src/static/icons/light/infinity.svg similarity index 100% rename from client/src/static/icons/light/infinity.svg rename to src/static/icons/light/infinity.svg diff --git a/client/src/static/icons/light/info-circle.svg b/src/static/icons/light/info-circle.svg similarity index 100% rename from client/src/static/icons/light/info-circle.svg rename to src/static/icons/light/info-circle.svg diff --git a/client/src/static/icons/light/info-square.svg b/src/static/icons/light/info-square.svg similarity index 100% rename from client/src/static/icons/light/info-square.svg rename to src/static/icons/light/info-square.svg diff --git a/client/src/static/icons/light/info.svg b/src/static/icons/light/info.svg similarity index 100% rename from client/src/static/icons/light/info.svg rename to src/static/icons/light/info.svg diff --git a/client/src/static/icons/light/inhaler.svg b/src/static/icons/light/inhaler.svg similarity index 100% rename from client/src/static/icons/light/inhaler.svg rename to src/static/icons/light/inhaler.svg diff --git a/client/src/static/icons/light/integral.svg b/src/static/icons/light/integral.svg similarity index 100% rename from client/src/static/icons/light/integral.svg rename to src/static/icons/light/integral.svg diff --git a/client/src/static/icons/light/intersection.svg b/src/static/icons/light/intersection.svg similarity index 100% rename from client/src/static/icons/light/intersection.svg rename to src/static/icons/light/intersection.svg diff --git a/client/src/static/icons/light/inventory.svg b/src/static/icons/light/inventory.svg similarity index 100% rename from client/src/static/icons/light/inventory.svg rename to src/static/icons/light/inventory.svg diff --git a/client/src/static/icons/light/island-tropical.svg b/src/static/icons/light/island-tropical.svg similarity index 100% rename from client/src/static/icons/light/island-tropical.svg rename to src/static/icons/light/island-tropical.svg diff --git a/client/src/static/icons/light/italic.svg b/src/static/icons/light/italic.svg similarity index 100% rename from client/src/static/icons/light/italic.svg rename to src/static/icons/light/italic.svg diff --git a/client/src/static/icons/light/jack-o-lantern.svg b/src/static/icons/light/jack-o-lantern.svg similarity index 100% rename from client/src/static/icons/light/jack-o-lantern.svg rename to src/static/icons/light/jack-o-lantern.svg diff --git a/client/src/static/icons/light/jedi.svg b/src/static/icons/light/jedi.svg similarity index 100% rename from client/src/static/icons/light/jedi.svg rename to src/static/icons/light/jedi.svg diff --git a/client/src/static/icons/light/joint.svg b/src/static/icons/light/joint.svg similarity index 100% rename from client/src/static/icons/light/joint.svg rename to src/static/icons/light/joint.svg diff --git a/client/src/static/icons/light/journal-whills.svg b/src/static/icons/light/journal-whills.svg similarity index 100% rename from client/src/static/icons/light/journal-whills.svg rename to src/static/icons/light/journal-whills.svg diff --git a/client/src/static/icons/light/joystick.svg b/src/static/icons/light/joystick.svg similarity index 100% rename from client/src/static/icons/light/joystick.svg rename to src/static/icons/light/joystick.svg diff --git a/client/src/static/icons/light/jug.svg b/src/static/icons/light/jug.svg similarity index 100% rename from client/src/static/icons/light/jug.svg rename to src/static/icons/light/jug.svg diff --git a/client/src/static/icons/light/kaaba.svg b/src/static/icons/light/kaaba.svg similarity index 100% rename from client/src/static/icons/light/kaaba.svg rename to src/static/icons/light/kaaba.svg diff --git a/client/src/static/icons/light/kazoo.svg b/src/static/icons/light/kazoo.svg similarity index 100% rename from client/src/static/icons/light/kazoo.svg rename to src/static/icons/light/kazoo.svg diff --git a/client/src/static/icons/light/kerning.svg b/src/static/icons/light/kerning.svg similarity index 100% rename from client/src/static/icons/light/kerning.svg rename to src/static/icons/light/kerning.svg diff --git a/client/src/static/icons/light/key-skeleton.svg b/src/static/icons/light/key-skeleton.svg similarity index 100% rename from client/src/static/icons/light/key-skeleton.svg rename to src/static/icons/light/key-skeleton.svg diff --git a/client/src/static/icons/light/key.svg b/src/static/icons/light/key.svg similarity index 100% rename from client/src/static/icons/light/key.svg rename to src/static/icons/light/key.svg diff --git a/client/src/static/icons/light/keyboard.svg b/src/static/icons/light/keyboard.svg similarity index 100% rename from client/src/static/icons/light/keyboard.svg rename to src/static/icons/light/keyboard.svg diff --git a/client/src/static/icons/light/keynote.svg b/src/static/icons/light/keynote.svg similarity index 100% rename from client/src/static/icons/light/keynote.svg rename to src/static/icons/light/keynote.svg diff --git a/client/src/static/icons/light/khanda.svg b/src/static/icons/light/khanda.svg similarity index 100% rename from client/src/static/icons/light/khanda.svg rename to src/static/icons/light/khanda.svg diff --git a/client/src/static/icons/light/kidneys.svg b/src/static/icons/light/kidneys.svg similarity index 100% rename from client/src/static/icons/light/kidneys.svg rename to src/static/icons/light/kidneys.svg diff --git a/client/src/static/icons/light/kiss-beam.svg b/src/static/icons/light/kiss-beam.svg similarity index 100% rename from client/src/static/icons/light/kiss-beam.svg rename to src/static/icons/light/kiss-beam.svg diff --git a/client/src/static/icons/light/kiss-wink-heart.svg b/src/static/icons/light/kiss-wink-heart.svg similarity index 100% rename from client/src/static/icons/light/kiss-wink-heart.svg rename to src/static/icons/light/kiss-wink-heart.svg diff --git a/client/src/static/icons/light/kiss.svg b/src/static/icons/light/kiss.svg similarity index 100% rename from client/src/static/icons/light/kiss.svg rename to src/static/icons/light/kiss.svg diff --git a/client/src/static/icons/light/kite.svg b/src/static/icons/light/kite.svg similarity index 100% rename from client/src/static/icons/light/kite.svg rename to src/static/icons/light/kite.svg diff --git a/client/src/static/icons/light/kiwi-bird.svg b/src/static/icons/light/kiwi-bird.svg similarity index 100% rename from client/src/static/icons/light/kiwi-bird.svg rename to src/static/icons/light/kiwi-bird.svg diff --git a/client/src/static/icons/light/knife-kitchen.svg b/src/static/icons/light/knife-kitchen.svg similarity index 100% rename from client/src/static/icons/light/knife-kitchen.svg rename to src/static/icons/light/knife-kitchen.svg diff --git a/client/src/static/icons/light/lambda.svg b/src/static/icons/light/lambda.svg similarity index 100% rename from client/src/static/icons/light/lambda.svg rename to src/static/icons/light/lambda.svg diff --git a/client/src/static/icons/light/lamp-desk.svg b/src/static/icons/light/lamp-desk.svg similarity index 100% rename from client/src/static/icons/light/lamp-desk.svg rename to src/static/icons/light/lamp-desk.svg diff --git a/client/src/static/icons/light/lamp-floor.svg b/src/static/icons/light/lamp-floor.svg similarity index 100% rename from client/src/static/icons/light/lamp-floor.svg rename to src/static/icons/light/lamp-floor.svg diff --git a/client/src/static/icons/light/lamp.svg b/src/static/icons/light/lamp.svg similarity index 100% rename from client/src/static/icons/light/lamp.svg rename to src/static/icons/light/lamp.svg diff --git a/client/src/static/icons/light/landmark-alt.svg b/src/static/icons/light/landmark-alt.svg similarity index 100% rename from client/src/static/icons/light/landmark-alt.svg rename to src/static/icons/light/landmark-alt.svg diff --git a/client/src/static/icons/light/landmark.svg b/src/static/icons/light/landmark.svg similarity index 100% rename from client/src/static/icons/light/landmark.svg rename to src/static/icons/light/landmark.svg diff --git a/client/src/static/icons/light/language.svg b/src/static/icons/light/language.svg similarity index 100% rename from client/src/static/icons/light/language.svg rename to src/static/icons/light/language.svg diff --git a/client/src/static/icons/light/laptop-code.svg b/src/static/icons/light/laptop-code.svg similarity index 100% rename from client/src/static/icons/light/laptop-code.svg rename to src/static/icons/light/laptop-code.svg diff --git a/client/src/static/icons/light/laptop-medical.svg b/src/static/icons/light/laptop-medical.svg similarity index 100% rename from client/src/static/icons/light/laptop-medical.svg rename to src/static/icons/light/laptop-medical.svg diff --git a/client/src/static/icons/light/laptop.svg b/src/static/icons/light/laptop.svg similarity index 100% rename from client/src/static/icons/light/laptop.svg rename to src/static/icons/light/laptop.svg diff --git a/client/src/static/icons/light/lasso.svg b/src/static/icons/light/lasso.svg similarity index 100% rename from client/src/static/icons/light/lasso.svg rename to src/static/icons/light/lasso.svg diff --git a/client/src/static/icons/light/laugh-beam.svg b/src/static/icons/light/laugh-beam.svg similarity index 100% rename from client/src/static/icons/light/laugh-beam.svg rename to src/static/icons/light/laugh-beam.svg diff --git a/client/src/static/icons/light/laugh-squint.svg b/src/static/icons/light/laugh-squint.svg similarity index 100% rename from client/src/static/icons/light/laugh-squint.svg rename to src/static/icons/light/laugh-squint.svg diff --git a/client/src/static/icons/light/laugh-wink.svg b/src/static/icons/light/laugh-wink.svg similarity index 100% rename from client/src/static/icons/light/laugh-wink.svg rename to src/static/icons/light/laugh-wink.svg diff --git a/client/src/static/icons/light/laugh.svg b/src/static/icons/light/laugh.svg similarity index 100% rename from client/src/static/icons/light/laugh.svg rename to src/static/icons/light/laugh.svg diff --git a/client/src/static/icons/light/layer-group.svg b/src/static/icons/light/layer-group.svg similarity index 100% rename from client/src/static/icons/light/layer-group.svg rename to src/static/icons/light/layer-group.svg diff --git a/client/src/static/icons/light/layer-minus.svg b/src/static/icons/light/layer-minus.svg similarity index 100% rename from client/src/static/icons/light/layer-minus.svg rename to src/static/icons/light/layer-minus.svg diff --git a/client/src/static/icons/light/layer-plus.svg b/src/static/icons/light/layer-plus.svg similarity index 100% rename from client/src/static/icons/light/layer-plus.svg rename to src/static/icons/light/layer-plus.svg diff --git a/client/src/static/icons/light/leaf-heart.svg b/src/static/icons/light/leaf-heart.svg similarity index 100% rename from client/src/static/icons/light/leaf-heart.svg rename to src/static/icons/light/leaf-heart.svg diff --git a/client/src/static/icons/light/leaf-maple.svg b/src/static/icons/light/leaf-maple.svg similarity index 100% rename from client/src/static/icons/light/leaf-maple.svg rename to src/static/icons/light/leaf-maple.svg diff --git a/client/src/static/icons/light/leaf-oak.svg b/src/static/icons/light/leaf-oak.svg similarity index 100% rename from client/src/static/icons/light/leaf-oak.svg rename to src/static/icons/light/leaf-oak.svg diff --git a/client/src/static/icons/light/leaf.svg b/src/static/icons/light/leaf.svg similarity index 100% rename from client/src/static/icons/light/leaf.svg rename to src/static/icons/light/leaf.svg diff --git a/client/src/static/icons/light/lemon.svg b/src/static/icons/light/lemon.svg similarity index 100% rename from client/src/static/icons/light/lemon.svg rename to src/static/icons/light/lemon.svg diff --git a/client/src/static/icons/light/less-than-equal.svg b/src/static/icons/light/less-than-equal.svg similarity index 100% rename from client/src/static/icons/light/less-than-equal.svg rename to src/static/icons/light/less-than-equal.svg diff --git a/client/src/static/icons/light/less-than.svg b/src/static/icons/light/less-than.svg similarity index 100% rename from client/src/static/icons/light/less-than.svg rename to src/static/icons/light/less-than.svg diff --git a/client/src/static/icons/light/level-down-alt.svg b/src/static/icons/light/level-down-alt.svg similarity index 100% rename from client/src/static/icons/light/level-down-alt.svg rename to src/static/icons/light/level-down-alt.svg diff --git a/client/src/static/icons/light/level-down.svg b/src/static/icons/light/level-down.svg similarity index 100% rename from client/src/static/icons/light/level-down.svg rename to src/static/icons/light/level-down.svg diff --git a/client/src/static/icons/light/level-up-alt.svg b/src/static/icons/light/level-up-alt.svg similarity index 100% rename from client/src/static/icons/light/level-up-alt.svg rename to src/static/icons/light/level-up-alt.svg diff --git a/client/src/static/icons/light/level-up.svg b/src/static/icons/light/level-up.svg similarity index 100% rename from client/src/static/icons/light/level-up.svg rename to src/static/icons/light/level-up.svg diff --git a/client/src/static/icons/light/life-ring.svg b/src/static/icons/light/life-ring.svg similarity index 100% rename from client/src/static/icons/light/life-ring.svg rename to src/static/icons/light/life-ring.svg diff --git a/client/src/static/icons/light/light-ceiling.svg b/src/static/icons/light/light-ceiling.svg similarity index 100% rename from client/src/static/icons/light/light-ceiling.svg rename to src/static/icons/light/light-ceiling.svg diff --git a/client/src/static/icons/light/light-switch-off.svg b/src/static/icons/light/light-switch-off.svg similarity index 100% rename from client/src/static/icons/light/light-switch-off.svg rename to src/static/icons/light/light-switch-off.svg diff --git a/client/src/static/icons/light/light-switch-on.svg b/src/static/icons/light/light-switch-on.svg similarity index 100% rename from client/src/static/icons/light/light-switch-on.svg rename to src/static/icons/light/light-switch-on.svg diff --git a/client/src/static/icons/light/light-switch.svg b/src/static/icons/light/light-switch.svg similarity index 100% rename from client/src/static/icons/light/light-switch.svg rename to src/static/icons/light/light-switch.svg diff --git a/client/src/static/icons/light/lightbulb-dollar.svg b/src/static/icons/light/lightbulb-dollar.svg similarity index 100% rename from client/src/static/icons/light/lightbulb-dollar.svg rename to src/static/icons/light/lightbulb-dollar.svg diff --git a/client/src/static/icons/light/lightbulb-exclamation.svg b/src/static/icons/light/lightbulb-exclamation.svg similarity index 100% rename from client/src/static/icons/light/lightbulb-exclamation.svg rename to src/static/icons/light/lightbulb-exclamation.svg diff --git a/client/src/static/icons/light/lightbulb-on.svg b/src/static/icons/light/lightbulb-on.svg similarity index 100% rename from client/src/static/icons/light/lightbulb-on.svg rename to src/static/icons/light/lightbulb-on.svg diff --git a/client/src/static/icons/light/lightbulb-slash.svg b/src/static/icons/light/lightbulb-slash.svg similarity index 100% rename from client/src/static/icons/light/lightbulb-slash.svg rename to src/static/icons/light/lightbulb-slash.svg diff --git a/client/src/static/icons/light/lightbulb.svg b/src/static/icons/light/lightbulb.svg similarity index 100% rename from client/src/static/icons/light/lightbulb.svg rename to src/static/icons/light/lightbulb.svg diff --git a/client/src/static/icons/light/lights-holiday.svg b/src/static/icons/light/lights-holiday.svg similarity index 100% rename from client/src/static/icons/light/lights-holiday.svg rename to src/static/icons/light/lights-holiday.svg diff --git a/client/src/static/icons/light/line-columns.svg b/src/static/icons/light/line-columns.svg similarity index 100% rename from client/src/static/icons/light/line-columns.svg rename to src/static/icons/light/line-columns.svg diff --git a/client/src/static/icons/light/line-height.svg b/src/static/icons/light/line-height.svg similarity index 100% rename from client/src/static/icons/light/line-height.svg rename to src/static/icons/light/line-height.svg diff --git a/client/src/static/icons/light/link.svg b/src/static/icons/light/link.svg similarity index 100% rename from client/src/static/icons/light/link.svg rename to src/static/icons/light/link.svg diff --git a/client/src/static/icons/light/lips.svg b/src/static/icons/light/lips.svg similarity index 100% rename from client/src/static/icons/light/lips.svg rename to src/static/icons/light/lips.svg diff --git a/client/src/static/icons/light/lira-sign.svg b/src/static/icons/light/lira-sign.svg similarity index 100% rename from client/src/static/icons/light/lira-sign.svg rename to src/static/icons/light/lira-sign.svg diff --git a/client/src/static/icons/light/list-alt.svg b/src/static/icons/light/list-alt.svg similarity index 100% rename from client/src/static/icons/light/list-alt.svg rename to src/static/icons/light/list-alt.svg diff --git a/client/src/static/icons/light/list-music.svg b/src/static/icons/light/list-music.svg similarity index 100% rename from client/src/static/icons/light/list-music.svg rename to src/static/icons/light/list-music.svg diff --git a/client/src/static/icons/light/list-ol.svg b/src/static/icons/light/list-ol.svg similarity index 100% rename from client/src/static/icons/light/list-ol.svg rename to src/static/icons/light/list-ol.svg diff --git a/client/src/static/icons/light/list-ul.svg b/src/static/icons/light/list-ul.svg similarity index 100% rename from client/src/static/icons/light/list-ul.svg rename to src/static/icons/light/list-ul.svg diff --git a/client/src/static/icons/light/list.svg b/src/static/icons/light/list.svg similarity index 100% rename from client/src/static/icons/light/list.svg rename to src/static/icons/light/list.svg diff --git a/client/src/static/icons/light/location-arrow.svg b/src/static/icons/light/location-arrow.svg similarity index 100% rename from client/src/static/icons/light/location-arrow.svg rename to src/static/icons/light/location-arrow.svg diff --git a/client/src/static/icons/light/location-circle.svg b/src/static/icons/light/location-circle.svg similarity index 100% rename from client/src/static/icons/light/location-circle.svg rename to src/static/icons/light/location-circle.svg diff --git a/client/src/static/icons/light/location-slash.svg b/src/static/icons/light/location-slash.svg similarity index 100% rename from client/src/static/icons/light/location-slash.svg rename to src/static/icons/light/location-slash.svg diff --git a/client/src/static/icons/light/location.svg b/src/static/icons/light/location.svg similarity index 100% rename from client/src/static/icons/light/location.svg rename to src/static/icons/light/location.svg diff --git a/client/src/static/icons/light/lock-alt.svg b/src/static/icons/light/lock-alt.svg similarity index 100% rename from client/src/static/icons/light/lock-alt.svg rename to src/static/icons/light/lock-alt.svg diff --git a/client/src/static/icons/light/lock-open-alt.svg b/src/static/icons/light/lock-open-alt.svg similarity index 100% rename from client/src/static/icons/light/lock-open-alt.svg rename to src/static/icons/light/lock-open-alt.svg diff --git a/client/src/static/icons/light/lock-open.svg b/src/static/icons/light/lock-open.svg similarity index 100% rename from client/src/static/icons/light/lock-open.svg rename to src/static/icons/light/lock-open.svg diff --git a/client/src/static/icons/light/lock.svg b/src/static/icons/light/lock.svg similarity index 100% rename from client/src/static/icons/light/lock.svg rename to src/static/icons/light/lock.svg diff --git a/client/src/static/icons/light/long-arrow-alt-down.svg b/src/static/icons/light/long-arrow-alt-down.svg similarity index 100% rename from client/src/static/icons/light/long-arrow-alt-down.svg rename to src/static/icons/light/long-arrow-alt-down.svg diff --git a/client/src/static/icons/light/long-arrow-alt-left.svg b/src/static/icons/light/long-arrow-alt-left.svg similarity index 100% rename from client/src/static/icons/light/long-arrow-alt-left.svg rename to src/static/icons/light/long-arrow-alt-left.svg diff --git a/client/src/static/icons/light/long-arrow-alt-right.svg b/src/static/icons/light/long-arrow-alt-right.svg similarity index 100% rename from client/src/static/icons/light/long-arrow-alt-right.svg rename to src/static/icons/light/long-arrow-alt-right.svg diff --git a/client/src/static/icons/light/long-arrow-alt-up.svg b/src/static/icons/light/long-arrow-alt-up.svg similarity index 100% rename from client/src/static/icons/light/long-arrow-alt-up.svg rename to src/static/icons/light/long-arrow-alt-up.svg diff --git a/client/src/static/icons/light/long-arrow-down.svg b/src/static/icons/light/long-arrow-down.svg similarity index 100% rename from client/src/static/icons/light/long-arrow-down.svg rename to src/static/icons/light/long-arrow-down.svg diff --git a/client/src/static/icons/light/long-arrow-left.svg b/src/static/icons/light/long-arrow-left.svg similarity index 100% rename from client/src/static/icons/light/long-arrow-left.svg rename to src/static/icons/light/long-arrow-left.svg diff --git a/client/src/static/icons/light/long-arrow-right.svg b/src/static/icons/light/long-arrow-right.svg similarity index 100% rename from client/src/static/icons/light/long-arrow-right.svg rename to src/static/icons/light/long-arrow-right.svg diff --git a/client/src/static/icons/light/long-arrow-up.svg b/src/static/icons/light/long-arrow-up.svg similarity index 100% rename from client/src/static/icons/light/long-arrow-up.svg rename to src/static/icons/light/long-arrow-up.svg diff --git a/client/src/static/icons/light/loveseat.svg b/src/static/icons/light/loveseat.svg similarity index 100% rename from client/src/static/icons/light/loveseat.svg rename to src/static/icons/light/loveseat.svg diff --git a/client/src/static/icons/light/low-vision.svg b/src/static/icons/light/low-vision.svg similarity index 100% rename from client/src/static/icons/light/low-vision.svg rename to src/static/icons/light/low-vision.svg diff --git a/client/src/static/icons/light/luchador.svg b/src/static/icons/light/luchador.svg similarity index 100% rename from client/src/static/icons/light/luchador.svg rename to src/static/icons/light/luchador.svg diff --git a/client/src/static/icons/light/luggage-cart.svg b/src/static/icons/light/luggage-cart.svg similarity index 100% rename from client/src/static/icons/light/luggage-cart.svg rename to src/static/icons/light/luggage-cart.svg diff --git a/client/src/static/icons/light/lungs.svg b/src/static/icons/light/lungs.svg similarity index 100% rename from client/src/static/icons/light/lungs.svg rename to src/static/icons/light/lungs.svg diff --git a/client/src/static/icons/light/mace.svg b/src/static/icons/light/mace.svg similarity index 100% rename from client/src/static/icons/light/mace.svg rename to src/static/icons/light/mace.svg diff --git a/client/src/static/icons/light/magic.svg b/src/static/icons/light/magic.svg similarity index 100% rename from client/src/static/icons/light/magic.svg rename to src/static/icons/light/magic.svg diff --git a/client/src/static/icons/light/magnet.svg b/src/static/icons/light/magnet.svg similarity index 100% rename from client/src/static/icons/light/magnet.svg rename to src/static/icons/light/magnet.svg diff --git a/client/src/static/icons/light/mail-bulk.svg b/src/static/icons/light/mail-bulk.svg similarity index 100% rename from client/src/static/icons/light/mail-bulk.svg rename to src/static/icons/light/mail-bulk.svg diff --git a/client/src/static/icons/light/mailbox.svg b/src/static/icons/light/mailbox.svg similarity index 100% rename from client/src/static/icons/light/mailbox.svg rename to src/static/icons/light/mailbox.svg diff --git a/client/src/static/icons/light/male.svg b/src/static/icons/light/male.svg similarity index 100% rename from client/src/static/icons/light/male.svg rename to src/static/icons/light/male.svg diff --git a/client/src/static/icons/light/mandolin.svg b/src/static/icons/light/mandolin.svg similarity index 100% rename from client/src/static/icons/light/mandolin.svg rename to src/static/icons/light/mandolin.svg diff --git a/client/src/static/icons/light/map-marked-alt.svg b/src/static/icons/light/map-marked-alt.svg similarity index 100% rename from client/src/static/icons/light/map-marked-alt.svg rename to src/static/icons/light/map-marked-alt.svg diff --git a/client/src/static/icons/light/map-marked.svg b/src/static/icons/light/map-marked.svg similarity index 100% rename from client/src/static/icons/light/map-marked.svg rename to src/static/icons/light/map-marked.svg diff --git a/client/src/static/icons/light/map-marker-alt-slash.svg b/src/static/icons/light/map-marker-alt-slash.svg similarity index 100% rename from client/src/static/icons/light/map-marker-alt-slash.svg rename to src/static/icons/light/map-marker-alt-slash.svg diff --git a/client/src/static/icons/light/map-marker-alt.svg b/src/static/icons/light/map-marker-alt.svg similarity index 100% rename from client/src/static/icons/light/map-marker-alt.svg rename to src/static/icons/light/map-marker-alt.svg diff --git a/client/src/static/icons/light/map-marker-check.svg b/src/static/icons/light/map-marker-check.svg similarity index 100% rename from client/src/static/icons/light/map-marker-check.svg rename to src/static/icons/light/map-marker-check.svg diff --git a/client/src/static/icons/light/map-marker-edit.svg b/src/static/icons/light/map-marker-edit.svg similarity index 100% rename from client/src/static/icons/light/map-marker-edit.svg rename to src/static/icons/light/map-marker-edit.svg diff --git a/client/src/static/icons/light/map-marker-exclamation.svg b/src/static/icons/light/map-marker-exclamation.svg similarity index 100% rename from client/src/static/icons/light/map-marker-exclamation.svg rename to src/static/icons/light/map-marker-exclamation.svg diff --git a/client/src/static/icons/light/map-marker-minus.svg b/src/static/icons/light/map-marker-minus.svg similarity index 100% rename from client/src/static/icons/light/map-marker-minus.svg rename to src/static/icons/light/map-marker-minus.svg diff --git a/client/src/static/icons/light/map-marker-plus.svg b/src/static/icons/light/map-marker-plus.svg similarity index 100% rename from client/src/static/icons/light/map-marker-plus.svg rename to src/static/icons/light/map-marker-plus.svg diff --git a/client/src/static/icons/light/map-marker-question.svg b/src/static/icons/light/map-marker-question.svg similarity index 100% rename from client/src/static/icons/light/map-marker-question.svg rename to src/static/icons/light/map-marker-question.svg diff --git a/client/src/static/icons/light/map-marker-slash.svg b/src/static/icons/light/map-marker-slash.svg similarity index 100% rename from client/src/static/icons/light/map-marker-slash.svg rename to src/static/icons/light/map-marker-slash.svg diff --git a/client/src/static/icons/light/map-marker-smile.svg b/src/static/icons/light/map-marker-smile.svg similarity index 100% rename from client/src/static/icons/light/map-marker-smile.svg rename to src/static/icons/light/map-marker-smile.svg diff --git a/client/src/static/icons/light/map-marker-times.svg b/src/static/icons/light/map-marker-times.svg similarity index 100% rename from client/src/static/icons/light/map-marker-times.svg rename to src/static/icons/light/map-marker-times.svg diff --git a/client/src/static/icons/light/map-marker.svg b/src/static/icons/light/map-marker.svg similarity index 100% rename from client/src/static/icons/light/map-marker.svg rename to src/static/icons/light/map-marker.svg diff --git a/client/src/static/icons/light/map-pin.svg b/src/static/icons/light/map-pin.svg similarity index 100% rename from client/src/static/icons/light/map-pin.svg rename to src/static/icons/light/map-pin.svg diff --git a/client/src/static/icons/light/map-signs.svg b/src/static/icons/light/map-signs.svg similarity index 100% rename from client/src/static/icons/light/map-signs.svg rename to src/static/icons/light/map-signs.svg diff --git a/client/src/static/icons/light/map.svg b/src/static/icons/light/map.svg similarity index 100% rename from client/src/static/icons/light/map.svg rename to src/static/icons/light/map.svg diff --git a/client/src/static/icons/light/marker.svg b/src/static/icons/light/marker.svg similarity index 100% rename from client/src/static/icons/light/marker.svg rename to src/static/icons/light/marker.svg diff --git a/client/src/static/icons/light/mars-double.svg b/src/static/icons/light/mars-double.svg similarity index 100% rename from client/src/static/icons/light/mars-double.svg rename to src/static/icons/light/mars-double.svg diff --git a/client/src/static/icons/light/mars-stroke-h.svg b/src/static/icons/light/mars-stroke-h.svg similarity index 100% rename from client/src/static/icons/light/mars-stroke-h.svg rename to src/static/icons/light/mars-stroke-h.svg diff --git a/client/src/static/icons/light/mars-stroke-v.svg b/src/static/icons/light/mars-stroke-v.svg similarity index 100% rename from client/src/static/icons/light/mars-stroke-v.svg rename to src/static/icons/light/mars-stroke-v.svg diff --git a/client/src/static/icons/light/mars-stroke.svg b/src/static/icons/light/mars-stroke.svg similarity index 100% rename from client/src/static/icons/light/mars-stroke.svg rename to src/static/icons/light/mars-stroke.svg diff --git a/client/src/static/icons/light/mars.svg b/src/static/icons/light/mars.svg similarity index 100% rename from client/src/static/icons/light/mars.svg rename to src/static/icons/light/mars.svg diff --git a/client/src/static/icons/light/mask.svg b/src/static/icons/light/mask.svg similarity index 100% rename from client/src/static/icons/light/mask.svg rename to src/static/icons/light/mask.svg diff --git a/client/src/static/icons/light/meat.svg b/src/static/icons/light/meat.svg similarity index 100% rename from client/src/static/icons/light/meat.svg rename to src/static/icons/light/meat.svg diff --git a/client/src/static/icons/light/medal.svg b/src/static/icons/light/medal.svg similarity index 100% rename from client/src/static/icons/light/medal.svg rename to src/static/icons/light/medal.svg diff --git a/client/src/static/icons/light/medkit.svg b/src/static/icons/light/medkit.svg similarity index 100% rename from client/src/static/icons/light/medkit.svg rename to src/static/icons/light/medkit.svg diff --git a/client/src/static/icons/light/megaphone.svg b/src/static/icons/light/megaphone.svg similarity index 100% rename from client/src/static/icons/light/megaphone.svg rename to src/static/icons/light/megaphone.svg diff --git a/client/src/static/icons/light/meh-blank.svg b/src/static/icons/light/meh-blank.svg similarity index 100% rename from client/src/static/icons/light/meh-blank.svg rename to src/static/icons/light/meh-blank.svg diff --git a/client/src/static/icons/light/meh-rolling-eyes.svg b/src/static/icons/light/meh-rolling-eyes.svg similarity index 100% rename from client/src/static/icons/light/meh-rolling-eyes.svg rename to src/static/icons/light/meh-rolling-eyes.svg diff --git a/client/src/static/icons/light/meh.svg b/src/static/icons/light/meh.svg similarity index 100% rename from client/src/static/icons/light/meh.svg rename to src/static/icons/light/meh.svg diff --git a/client/src/static/icons/light/memory.svg b/src/static/icons/light/memory.svg similarity index 100% rename from client/src/static/icons/light/memory.svg rename to src/static/icons/light/memory.svg diff --git a/client/src/static/icons/light/menorah.svg b/src/static/icons/light/menorah.svg similarity index 100% rename from client/src/static/icons/light/menorah.svg rename to src/static/icons/light/menorah.svg diff --git a/client/src/static/icons/light/mercury.svg b/src/static/icons/light/mercury.svg similarity index 100% rename from client/src/static/icons/light/mercury.svg rename to src/static/icons/light/mercury.svg diff --git a/client/src/static/icons/light/meteor.svg b/src/static/icons/light/meteor.svg similarity index 100% rename from client/src/static/icons/light/meteor.svg rename to src/static/icons/light/meteor.svg diff --git a/client/src/static/icons/light/microchip.svg b/src/static/icons/light/microchip.svg similarity index 100% rename from client/src/static/icons/light/microchip.svg rename to src/static/icons/light/microchip.svg diff --git a/client/src/static/icons/light/microphone-alt-slash.svg b/src/static/icons/light/microphone-alt-slash.svg similarity index 100% rename from client/src/static/icons/light/microphone-alt-slash.svg rename to src/static/icons/light/microphone-alt-slash.svg diff --git a/client/src/static/icons/light/microphone-alt.svg b/src/static/icons/light/microphone-alt.svg similarity index 100% rename from client/src/static/icons/light/microphone-alt.svg rename to src/static/icons/light/microphone-alt.svg diff --git a/client/src/static/icons/light/microphone-slash.svg b/src/static/icons/light/microphone-slash.svg similarity index 100% rename from client/src/static/icons/light/microphone-slash.svg rename to src/static/icons/light/microphone-slash.svg diff --git a/client/src/static/icons/light/microphone-stand.svg b/src/static/icons/light/microphone-stand.svg similarity index 100% rename from client/src/static/icons/light/microphone-stand.svg rename to src/static/icons/light/microphone-stand.svg diff --git a/client/src/static/icons/light/microphone.svg b/src/static/icons/light/microphone.svg similarity index 100% rename from client/src/static/icons/light/microphone.svg rename to src/static/icons/light/microphone.svg diff --git a/client/src/static/icons/light/microscope.svg b/src/static/icons/light/microscope.svg similarity index 100% rename from client/src/static/icons/light/microscope.svg rename to src/static/icons/light/microscope.svg diff --git a/client/src/static/icons/light/microwave.svg b/src/static/icons/light/microwave.svg similarity index 100% rename from client/src/static/icons/light/microwave.svg rename to src/static/icons/light/microwave.svg diff --git a/client/src/static/icons/light/mind-share.svg b/src/static/icons/light/mind-share.svg similarity index 100% rename from client/src/static/icons/light/mind-share.svg rename to src/static/icons/light/mind-share.svg diff --git a/client/src/static/icons/light/minus-circle.svg b/src/static/icons/light/minus-circle.svg similarity index 100% rename from client/src/static/icons/light/minus-circle.svg rename to src/static/icons/light/minus-circle.svg diff --git a/client/src/static/icons/light/minus-hexagon.svg b/src/static/icons/light/minus-hexagon.svg similarity index 100% rename from client/src/static/icons/light/minus-hexagon.svg rename to src/static/icons/light/minus-hexagon.svg diff --git a/client/src/static/icons/light/minus-octagon.svg b/src/static/icons/light/minus-octagon.svg similarity index 100% rename from client/src/static/icons/light/minus-octagon.svg rename to src/static/icons/light/minus-octagon.svg diff --git a/client/src/static/icons/light/minus-square.svg b/src/static/icons/light/minus-square.svg similarity index 100% rename from client/src/static/icons/light/minus-square.svg rename to src/static/icons/light/minus-square.svg diff --git a/client/src/static/icons/light/minus.svg b/src/static/icons/light/minus.svg similarity index 100% rename from client/src/static/icons/light/minus.svg rename to src/static/icons/light/minus.svg diff --git a/client/src/static/icons/light/mistletoe.svg b/src/static/icons/light/mistletoe.svg similarity index 100% rename from client/src/static/icons/light/mistletoe.svg rename to src/static/icons/light/mistletoe.svg diff --git a/client/src/static/icons/light/mitten.svg b/src/static/icons/light/mitten.svg similarity index 100% rename from client/src/static/icons/light/mitten.svg rename to src/static/icons/light/mitten.svg diff --git a/client/src/static/icons/light/mobile-alt.svg b/src/static/icons/light/mobile-alt.svg similarity index 100% rename from client/src/static/icons/light/mobile-alt.svg rename to src/static/icons/light/mobile-alt.svg diff --git a/client/src/static/icons/light/mobile-android-alt.svg b/src/static/icons/light/mobile-android-alt.svg similarity index 100% rename from client/src/static/icons/light/mobile-android-alt.svg rename to src/static/icons/light/mobile-android-alt.svg diff --git a/client/src/static/icons/light/mobile-android.svg b/src/static/icons/light/mobile-android.svg similarity index 100% rename from client/src/static/icons/light/mobile-android.svg rename to src/static/icons/light/mobile-android.svg diff --git a/client/src/static/icons/light/mobile.svg b/src/static/icons/light/mobile.svg similarity index 100% rename from client/src/static/icons/light/mobile.svg rename to src/static/icons/light/mobile.svg diff --git a/client/src/static/icons/light/money-bill-alt.svg b/src/static/icons/light/money-bill-alt.svg similarity index 100% rename from client/src/static/icons/light/money-bill-alt.svg rename to src/static/icons/light/money-bill-alt.svg diff --git a/client/src/static/icons/light/money-bill-wave-alt.svg b/src/static/icons/light/money-bill-wave-alt.svg similarity index 100% rename from client/src/static/icons/light/money-bill-wave-alt.svg rename to src/static/icons/light/money-bill-wave-alt.svg diff --git a/client/src/static/icons/light/money-bill-wave.svg b/src/static/icons/light/money-bill-wave.svg similarity index 100% rename from client/src/static/icons/light/money-bill-wave.svg rename to src/static/icons/light/money-bill-wave.svg diff --git a/client/src/static/icons/light/money-bill.svg b/src/static/icons/light/money-bill.svg similarity index 100% rename from client/src/static/icons/light/money-bill.svg rename to src/static/icons/light/money-bill.svg diff --git a/client/src/static/icons/light/money-check-alt.svg b/src/static/icons/light/money-check-alt.svg similarity index 100% rename from client/src/static/icons/light/money-check-alt.svg rename to src/static/icons/light/money-check-alt.svg diff --git a/client/src/static/icons/light/money-check-edit-alt.svg b/src/static/icons/light/money-check-edit-alt.svg similarity index 100% rename from client/src/static/icons/light/money-check-edit-alt.svg rename to src/static/icons/light/money-check-edit-alt.svg diff --git a/client/src/static/icons/light/money-check-edit.svg b/src/static/icons/light/money-check-edit.svg similarity index 100% rename from client/src/static/icons/light/money-check-edit.svg rename to src/static/icons/light/money-check-edit.svg diff --git a/client/src/static/icons/light/money-check.svg b/src/static/icons/light/money-check.svg similarity index 100% rename from client/src/static/icons/light/money-check.svg rename to src/static/icons/light/money-check.svg diff --git a/client/src/static/icons/light/monitor-heart-rate.svg b/src/static/icons/light/monitor-heart-rate.svg similarity index 100% rename from client/src/static/icons/light/monitor-heart-rate.svg rename to src/static/icons/light/monitor-heart-rate.svg diff --git a/client/src/static/icons/light/monkey.svg b/src/static/icons/light/monkey.svg similarity index 100% rename from client/src/static/icons/light/monkey.svg rename to src/static/icons/light/monkey.svg diff --git a/client/src/static/icons/light/monument.svg b/src/static/icons/light/monument.svg similarity index 100% rename from client/src/static/icons/light/monument.svg rename to src/static/icons/light/monument.svg diff --git a/client/src/static/icons/light/moon-cloud.svg b/src/static/icons/light/moon-cloud.svg similarity index 100% rename from client/src/static/icons/light/moon-cloud.svg rename to src/static/icons/light/moon-cloud.svg diff --git a/client/src/static/icons/light/moon-stars.svg b/src/static/icons/light/moon-stars.svg similarity index 100% rename from client/src/static/icons/light/moon-stars.svg rename to src/static/icons/light/moon-stars.svg diff --git a/client/src/static/icons/light/moon.svg b/src/static/icons/light/moon.svg similarity index 100% rename from client/src/static/icons/light/moon.svg rename to src/static/icons/light/moon.svg diff --git a/client/src/static/icons/light/mortar-pestle.svg b/src/static/icons/light/mortar-pestle.svg similarity index 100% rename from client/src/static/icons/light/mortar-pestle.svg rename to src/static/icons/light/mortar-pestle.svg diff --git a/client/src/static/icons/light/mosque.svg b/src/static/icons/light/mosque.svg similarity index 100% rename from client/src/static/icons/light/mosque.svg rename to src/static/icons/light/mosque.svg diff --git a/client/src/static/icons/light/motorcycle.svg b/src/static/icons/light/motorcycle.svg similarity index 100% rename from client/src/static/icons/light/motorcycle.svg rename to src/static/icons/light/motorcycle.svg diff --git a/client/src/static/icons/light/mountain.svg b/src/static/icons/light/mountain.svg similarity index 100% rename from client/src/static/icons/light/mountain.svg rename to src/static/icons/light/mountain.svg diff --git a/client/src/static/icons/light/mountains.svg b/src/static/icons/light/mountains.svg similarity index 100% rename from client/src/static/icons/light/mountains.svg rename to src/static/icons/light/mountains.svg diff --git a/client/src/static/icons/light/mouse-alt.svg b/src/static/icons/light/mouse-alt.svg similarity index 100% rename from client/src/static/icons/light/mouse-alt.svg rename to src/static/icons/light/mouse-alt.svg diff --git a/client/src/static/icons/light/mouse-pointer.svg b/src/static/icons/light/mouse-pointer.svg similarity index 100% rename from client/src/static/icons/light/mouse-pointer.svg rename to src/static/icons/light/mouse-pointer.svg diff --git a/client/src/static/icons/light/mouse.svg b/src/static/icons/light/mouse.svg similarity index 100% rename from client/src/static/icons/light/mouse.svg rename to src/static/icons/light/mouse.svg diff --git a/client/src/static/icons/light/mp3-player.svg b/src/static/icons/light/mp3-player.svg similarity index 100% rename from client/src/static/icons/light/mp3-player.svg rename to src/static/icons/light/mp3-player.svg diff --git a/client/src/static/icons/light/mug-hot.svg b/src/static/icons/light/mug-hot.svg similarity index 100% rename from client/src/static/icons/light/mug-hot.svg rename to src/static/icons/light/mug-hot.svg diff --git a/client/src/static/icons/light/mug-marshmallows.svg b/src/static/icons/light/mug-marshmallows.svg similarity index 100% rename from client/src/static/icons/light/mug-marshmallows.svg rename to src/static/icons/light/mug-marshmallows.svg diff --git a/client/src/static/icons/light/mug-tea.svg b/src/static/icons/light/mug-tea.svg similarity index 100% rename from client/src/static/icons/light/mug-tea.svg rename to src/static/icons/light/mug-tea.svg diff --git a/client/src/static/icons/light/mug.svg b/src/static/icons/light/mug.svg similarity index 100% rename from client/src/static/icons/light/mug.svg rename to src/static/icons/light/mug.svg diff --git a/client/src/static/icons/light/music-alt-slash.svg b/src/static/icons/light/music-alt-slash.svg similarity index 100% rename from client/src/static/icons/light/music-alt-slash.svg rename to src/static/icons/light/music-alt-slash.svg diff --git a/client/src/static/icons/light/music-alt.svg b/src/static/icons/light/music-alt.svg similarity index 100% rename from client/src/static/icons/light/music-alt.svg rename to src/static/icons/light/music-alt.svg diff --git a/client/src/static/icons/light/music-slash.svg b/src/static/icons/light/music-slash.svg similarity index 100% rename from client/src/static/icons/light/music-slash.svg rename to src/static/icons/light/music-slash.svg diff --git a/client/src/static/icons/light/music.svg b/src/static/icons/light/music.svg similarity index 100% rename from client/src/static/icons/light/music.svg rename to src/static/icons/light/music.svg diff --git a/client/src/static/icons/light/narwhal.svg b/src/static/icons/light/narwhal.svg similarity index 100% rename from client/src/static/icons/light/narwhal.svg rename to src/static/icons/light/narwhal.svg diff --git a/client/src/static/icons/light/network-wired.svg b/src/static/icons/light/network-wired.svg similarity index 100% rename from client/src/static/icons/light/network-wired.svg rename to src/static/icons/light/network-wired.svg diff --git a/client/src/static/icons/light/neuter.svg b/src/static/icons/light/neuter.svg similarity index 100% rename from client/src/static/icons/light/neuter.svg rename to src/static/icons/light/neuter.svg diff --git a/client/src/static/icons/light/newspaper.svg b/src/static/icons/light/newspaper.svg similarity index 100% rename from client/src/static/icons/light/newspaper.svg rename to src/static/icons/light/newspaper.svg diff --git a/client/src/static/icons/light/not-equal.svg b/src/static/icons/light/not-equal.svg similarity index 100% rename from client/src/static/icons/light/not-equal.svg rename to src/static/icons/light/not-equal.svg diff --git a/client/src/static/icons/light/notes-medical.svg b/src/static/icons/light/notes-medical.svg similarity index 100% rename from client/src/static/icons/light/notes-medical.svg rename to src/static/icons/light/notes-medical.svg diff --git a/client/src/static/icons/light/object-group.svg b/src/static/icons/light/object-group.svg similarity index 100% rename from client/src/static/icons/light/object-group.svg rename to src/static/icons/light/object-group.svg diff --git a/client/src/static/icons/light/object-ungroup.svg b/src/static/icons/light/object-ungroup.svg similarity index 100% rename from client/src/static/icons/light/object-ungroup.svg rename to src/static/icons/light/object-ungroup.svg diff --git a/client/src/static/icons/light/octagon.svg b/src/static/icons/light/octagon.svg similarity index 100% rename from client/src/static/icons/light/octagon.svg rename to src/static/icons/light/octagon.svg diff --git a/client/src/static/icons/light/oil-can.svg b/src/static/icons/light/oil-can.svg similarity index 100% rename from client/src/static/icons/light/oil-can.svg rename to src/static/icons/light/oil-can.svg diff --git a/client/src/static/icons/light/oil-temp.svg b/src/static/icons/light/oil-temp.svg similarity index 100% rename from client/src/static/icons/light/oil-temp.svg rename to src/static/icons/light/oil-temp.svg diff --git a/client/src/static/icons/light/om.svg b/src/static/icons/light/om.svg similarity index 100% rename from client/src/static/icons/light/om.svg rename to src/static/icons/light/om.svg diff --git a/client/src/static/icons/light/omega.svg b/src/static/icons/light/omega.svg similarity index 100% rename from client/src/static/icons/light/omega.svg rename to src/static/icons/light/omega.svg diff --git a/client/src/static/icons/light/ornament.svg b/src/static/icons/light/ornament.svg similarity index 100% rename from client/src/static/icons/light/ornament.svg rename to src/static/icons/light/ornament.svg diff --git a/client/src/static/icons/light/otter.svg b/src/static/icons/light/otter.svg similarity index 100% rename from client/src/static/icons/light/otter.svg rename to src/static/icons/light/otter.svg diff --git a/client/src/static/icons/light/outdent.svg b/src/static/icons/light/outdent.svg similarity index 100% rename from client/src/static/icons/light/outdent.svg rename to src/static/icons/light/outdent.svg diff --git a/client/src/static/icons/light/outlet.svg b/src/static/icons/light/outlet.svg similarity index 100% rename from client/src/static/icons/light/outlet.svg rename to src/static/icons/light/outlet.svg diff --git a/client/src/static/icons/light/oven.svg b/src/static/icons/light/oven.svg similarity index 100% rename from client/src/static/icons/light/oven.svg rename to src/static/icons/light/oven.svg diff --git a/client/src/static/icons/light/overline.svg b/src/static/icons/light/overline.svg similarity index 100% rename from client/src/static/icons/light/overline.svg rename to src/static/icons/light/overline.svg diff --git a/client/src/static/icons/light/page-break.svg b/src/static/icons/light/page-break.svg similarity index 100% rename from client/src/static/icons/light/page-break.svg rename to src/static/icons/light/page-break.svg diff --git a/client/src/static/icons/light/pager.svg b/src/static/icons/light/pager.svg similarity index 100% rename from client/src/static/icons/light/pager.svg rename to src/static/icons/light/pager.svg diff --git a/client/src/static/icons/light/paint-brush-alt.svg b/src/static/icons/light/paint-brush-alt.svg similarity index 100% rename from client/src/static/icons/light/paint-brush-alt.svg rename to src/static/icons/light/paint-brush-alt.svg diff --git a/client/src/static/icons/light/paint-brush.svg b/src/static/icons/light/paint-brush.svg similarity index 100% rename from client/src/static/icons/light/paint-brush.svg rename to src/static/icons/light/paint-brush.svg diff --git a/client/src/static/icons/light/paint-roller.svg b/src/static/icons/light/paint-roller.svg similarity index 100% rename from client/src/static/icons/light/paint-roller.svg rename to src/static/icons/light/paint-roller.svg diff --git a/client/src/static/icons/light/palette.svg b/src/static/icons/light/palette.svg similarity index 100% rename from client/src/static/icons/light/palette.svg rename to src/static/icons/light/palette.svg diff --git a/client/src/static/icons/light/pallet-alt.svg b/src/static/icons/light/pallet-alt.svg similarity index 100% rename from client/src/static/icons/light/pallet-alt.svg rename to src/static/icons/light/pallet-alt.svg diff --git a/client/src/static/icons/light/pallet.svg b/src/static/icons/light/pallet.svg similarity index 100% rename from client/src/static/icons/light/pallet.svg rename to src/static/icons/light/pallet.svg diff --git a/client/src/static/icons/light/paper-plane.svg b/src/static/icons/light/paper-plane.svg similarity index 100% rename from client/src/static/icons/light/paper-plane.svg rename to src/static/icons/light/paper-plane.svg diff --git a/client/src/static/icons/light/paperclip.svg b/src/static/icons/light/paperclip.svg similarity index 100% rename from client/src/static/icons/light/paperclip.svg rename to src/static/icons/light/paperclip.svg diff --git a/client/src/static/icons/light/parachute-box.svg b/src/static/icons/light/parachute-box.svg similarity index 100% rename from client/src/static/icons/light/parachute-box.svg rename to src/static/icons/light/parachute-box.svg diff --git a/client/src/static/icons/light/paragraph-rtl.svg b/src/static/icons/light/paragraph-rtl.svg similarity index 100% rename from client/src/static/icons/light/paragraph-rtl.svg rename to src/static/icons/light/paragraph-rtl.svg diff --git a/client/src/static/icons/light/paragraph.svg b/src/static/icons/light/paragraph.svg similarity index 100% rename from client/src/static/icons/light/paragraph.svg rename to src/static/icons/light/paragraph.svg diff --git a/client/src/static/icons/light/parking-circle-slash.svg b/src/static/icons/light/parking-circle-slash.svg similarity index 100% rename from client/src/static/icons/light/parking-circle-slash.svg rename to src/static/icons/light/parking-circle-slash.svg diff --git a/client/src/static/icons/light/parking-circle.svg b/src/static/icons/light/parking-circle.svg similarity index 100% rename from client/src/static/icons/light/parking-circle.svg rename to src/static/icons/light/parking-circle.svg diff --git a/client/src/static/icons/light/parking-slash.svg b/src/static/icons/light/parking-slash.svg similarity index 100% rename from client/src/static/icons/light/parking-slash.svg rename to src/static/icons/light/parking-slash.svg diff --git a/client/src/static/icons/light/parking.svg b/src/static/icons/light/parking.svg similarity index 100% rename from client/src/static/icons/light/parking.svg rename to src/static/icons/light/parking.svg diff --git a/client/src/static/icons/light/passport.svg b/src/static/icons/light/passport.svg similarity index 100% rename from client/src/static/icons/light/passport.svg rename to src/static/icons/light/passport.svg diff --git a/client/src/static/icons/light/pastafarianism.svg b/src/static/icons/light/pastafarianism.svg similarity index 100% rename from client/src/static/icons/light/pastafarianism.svg rename to src/static/icons/light/pastafarianism.svg diff --git a/client/src/static/icons/light/paste.svg b/src/static/icons/light/paste.svg similarity index 100% rename from client/src/static/icons/light/paste.svg rename to src/static/icons/light/paste.svg diff --git a/client/src/static/icons/light/pause-circle.svg b/src/static/icons/light/pause-circle.svg similarity index 100% rename from client/src/static/icons/light/pause-circle.svg rename to src/static/icons/light/pause-circle.svg diff --git a/client/src/static/icons/light/pause.svg b/src/static/icons/light/pause.svg similarity index 100% rename from client/src/static/icons/light/pause.svg rename to src/static/icons/light/pause.svg diff --git a/client/src/static/icons/light/paw-alt.svg b/src/static/icons/light/paw-alt.svg similarity index 100% rename from client/src/static/icons/light/paw-alt.svg rename to src/static/icons/light/paw-alt.svg diff --git a/client/src/static/icons/light/paw-claws.svg b/src/static/icons/light/paw-claws.svg similarity index 100% rename from client/src/static/icons/light/paw-claws.svg rename to src/static/icons/light/paw-claws.svg diff --git a/client/src/static/icons/light/paw.svg b/src/static/icons/light/paw.svg similarity index 100% rename from client/src/static/icons/light/paw.svg rename to src/static/icons/light/paw.svg diff --git a/client/src/static/icons/light/peace.svg b/src/static/icons/light/peace.svg similarity index 100% rename from client/src/static/icons/light/peace.svg rename to src/static/icons/light/peace.svg diff --git a/client/src/static/icons/light/pegasus.svg b/src/static/icons/light/pegasus.svg similarity index 100% rename from client/src/static/icons/light/pegasus.svg rename to src/static/icons/light/pegasus.svg diff --git a/client/src/static/icons/light/pen-alt.svg b/src/static/icons/light/pen-alt.svg similarity index 100% rename from client/src/static/icons/light/pen-alt.svg rename to src/static/icons/light/pen-alt.svg diff --git a/client/src/static/icons/light/pen-fancy.svg b/src/static/icons/light/pen-fancy.svg similarity index 100% rename from client/src/static/icons/light/pen-fancy.svg rename to src/static/icons/light/pen-fancy.svg diff --git a/client/src/static/icons/light/pen-nib.svg b/src/static/icons/light/pen-nib.svg similarity index 100% rename from client/src/static/icons/light/pen-nib.svg rename to src/static/icons/light/pen-nib.svg diff --git a/client/src/static/icons/light/pen-square.svg b/src/static/icons/light/pen-square.svg similarity index 100% rename from client/src/static/icons/light/pen-square.svg rename to src/static/icons/light/pen-square.svg diff --git a/client/src/static/icons/light/pen.svg b/src/static/icons/light/pen.svg similarity index 100% rename from client/src/static/icons/light/pen.svg rename to src/static/icons/light/pen.svg diff --git a/client/src/static/icons/light/pencil-alt.svg b/src/static/icons/light/pencil-alt.svg similarity index 100% rename from client/src/static/icons/light/pencil-alt.svg rename to src/static/icons/light/pencil-alt.svg diff --git a/client/src/static/icons/light/pencil-paintbrush.svg b/src/static/icons/light/pencil-paintbrush.svg similarity index 100% rename from client/src/static/icons/light/pencil-paintbrush.svg rename to src/static/icons/light/pencil-paintbrush.svg diff --git a/client/src/static/icons/light/pencil-ruler.svg b/src/static/icons/light/pencil-ruler.svg similarity index 100% rename from client/src/static/icons/light/pencil-ruler.svg rename to src/static/icons/light/pencil-ruler.svg diff --git a/client/src/static/icons/light/pencil.svg b/src/static/icons/light/pencil.svg similarity index 100% rename from client/src/static/icons/light/pencil.svg rename to src/static/icons/light/pencil.svg diff --git a/client/src/static/icons/light/pennant.svg b/src/static/icons/light/pennant.svg similarity index 100% rename from client/src/static/icons/light/pennant.svg rename to src/static/icons/light/pennant.svg diff --git a/client/src/static/icons/light/people-carry.svg b/src/static/icons/light/people-carry.svg similarity index 100% rename from client/src/static/icons/light/people-carry.svg rename to src/static/icons/light/people-carry.svg diff --git a/client/src/static/icons/light/pepper-hot.svg b/src/static/icons/light/pepper-hot.svg similarity index 100% rename from client/src/static/icons/light/pepper-hot.svg rename to src/static/icons/light/pepper-hot.svg diff --git a/client/src/static/icons/light/percent.svg b/src/static/icons/light/percent.svg similarity index 100% rename from client/src/static/icons/light/percent.svg rename to src/static/icons/light/percent.svg diff --git a/client/src/static/icons/light/percentage.svg b/src/static/icons/light/percentage.svg similarity index 100% rename from client/src/static/icons/light/percentage.svg rename to src/static/icons/light/percentage.svg diff --git a/client/src/static/icons/light/person-booth.svg b/src/static/icons/light/person-booth.svg similarity index 100% rename from client/src/static/icons/light/person-booth.svg rename to src/static/icons/light/person-booth.svg diff --git a/client/src/static/icons/light/person-carry.svg b/src/static/icons/light/person-carry.svg similarity index 100% rename from client/src/static/icons/light/person-carry.svg rename to src/static/icons/light/person-carry.svg diff --git a/client/src/static/icons/light/person-dolly-empty.svg b/src/static/icons/light/person-dolly-empty.svg similarity index 100% rename from client/src/static/icons/light/person-dolly-empty.svg rename to src/static/icons/light/person-dolly-empty.svg diff --git a/client/src/static/icons/light/person-dolly.svg b/src/static/icons/light/person-dolly.svg similarity index 100% rename from client/src/static/icons/light/person-dolly.svg rename to src/static/icons/light/person-dolly.svg diff --git a/client/src/static/icons/light/person-sign.svg b/src/static/icons/light/person-sign.svg similarity index 100% rename from client/src/static/icons/light/person-sign.svg rename to src/static/icons/light/person-sign.svg diff --git a/client/src/static/icons/light/phone-alt.svg b/src/static/icons/light/phone-alt.svg similarity index 100% rename from client/src/static/icons/light/phone-alt.svg rename to src/static/icons/light/phone-alt.svg diff --git a/client/src/static/icons/light/phone-laptop.svg b/src/static/icons/light/phone-laptop.svg similarity index 100% rename from client/src/static/icons/light/phone-laptop.svg rename to src/static/icons/light/phone-laptop.svg diff --git a/client/src/static/icons/light/phone-office.svg b/src/static/icons/light/phone-office.svg similarity index 100% rename from client/src/static/icons/light/phone-office.svg rename to src/static/icons/light/phone-office.svg diff --git a/client/src/static/icons/light/phone-plus.svg b/src/static/icons/light/phone-plus.svg similarity index 100% rename from client/src/static/icons/light/phone-plus.svg rename to src/static/icons/light/phone-plus.svg diff --git a/client/src/static/icons/light/phone-rotary.svg b/src/static/icons/light/phone-rotary.svg similarity index 100% rename from client/src/static/icons/light/phone-rotary.svg rename to src/static/icons/light/phone-rotary.svg diff --git a/client/src/static/icons/light/phone-slash.svg b/src/static/icons/light/phone-slash.svg similarity index 100% rename from client/src/static/icons/light/phone-slash.svg rename to src/static/icons/light/phone-slash.svg diff --git a/client/src/static/icons/light/phone-square-alt.svg b/src/static/icons/light/phone-square-alt.svg similarity index 100% rename from client/src/static/icons/light/phone-square-alt.svg rename to src/static/icons/light/phone-square-alt.svg diff --git a/client/src/static/icons/light/phone-square.svg b/src/static/icons/light/phone-square.svg similarity index 100% rename from client/src/static/icons/light/phone-square.svg rename to src/static/icons/light/phone-square.svg diff --git a/client/src/static/icons/light/phone-volume.svg b/src/static/icons/light/phone-volume.svg similarity index 100% rename from client/src/static/icons/light/phone-volume.svg rename to src/static/icons/light/phone-volume.svg diff --git a/client/src/static/icons/light/phone.svg b/src/static/icons/light/phone.svg similarity index 100% rename from client/src/static/icons/light/phone.svg rename to src/static/icons/light/phone.svg diff --git a/client/src/static/icons/light/photo-video.svg b/src/static/icons/light/photo-video.svg similarity index 100% rename from client/src/static/icons/light/photo-video.svg rename to src/static/icons/light/photo-video.svg diff --git a/client/src/static/icons/light/pi.svg b/src/static/icons/light/pi.svg similarity index 100% rename from client/src/static/icons/light/pi.svg rename to src/static/icons/light/pi.svg diff --git a/client/src/static/icons/light/piano-keyboard.svg b/src/static/icons/light/piano-keyboard.svg similarity index 100% rename from client/src/static/icons/light/piano-keyboard.svg rename to src/static/icons/light/piano-keyboard.svg diff --git a/client/src/static/icons/light/piano.svg b/src/static/icons/light/piano.svg similarity index 100% rename from client/src/static/icons/light/piano.svg rename to src/static/icons/light/piano.svg diff --git a/client/src/static/icons/light/pie.svg b/src/static/icons/light/pie.svg similarity index 100% rename from client/src/static/icons/light/pie.svg rename to src/static/icons/light/pie.svg diff --git a/client/src/static/icons/light/pig.svg b/src/static/icons/light/pig.svg similarity index 100% rename from client/src/static/icons/light/pig.svg rename to src/static/icons/light/pig.svg diff --git a/client/src/static/icons/light/piggy-bank.svg b/src/static/icons/light/piggy-bank.svg similarity index 100% rename from client/src/static/icons/light/piggy-bank.svg rename to src/static/icons/light/piggy-bank.svg diff --git a/client/src/static/icons/light/pills.svg b/src/static/icons/light/pills.svg similarity index 100% rename from client/src/static/icons/light/pills.svg rename to src/static/icons/light/pills.svg diff --git a/client/src/static/icons/light/pizza-slice.svg b/src/static/icons/light/pizza-slice.svg similarity index 100% rename from client/src/static/icons/light/pizza-slice.svg rename to src/static/icons/light/pizza-slice.svg diff --git a/client/src/static/icons/light/pizza.svg b/src/static/icons/light/pizza.svg similarity index 100% rename from client/src/static/icons/light/pizza.svg rename to src/static/icons/light/pizza.svg diff --git a/client/src/static/icons/light/place-of-worship.svg b/src/static/icons/light/place-of-worship.svg similarity index 100% rename from client/src/static/icons/light/place-of-worship.svg rename to src/static/icons/light/place-of-worship.svg diff --git a/client/src/static/icons/light/plane-alt.svg b/src/static/icons/light/plane-alt.svg similarity index 100% rename from client/src/static/icons/light/plane-alt.svg rename to src/static/icons/light/plane-alt.svg diff --git a/client/src/static/icons/light/plane-arrival.svg b/src/static/icons/light/plane-arrival.svg similarity index 100% rename from client/src/static/icons/light/plane-arrival.svg rename to src/static/icons/light/plane-arrival.svg diff --git a/client/src/static/icons/light/plane-departure.svg b/src/static/icons/light/plane-departure.svg similarity index 100% rename from client/src/static/icons/light/plane-departure.svg rename to src/static/icons/light/plane-departure.svg diff --git a/client/src/static/icons/light/plane.svg b/src/static/icons/light/plane.svg similarity index 100% rename from client/src/static/icons/light/plane.svg rename to src/static/icons/light/plane.svg diff --git a/client/src/static/icons/light/planet-moon.svg b/src/static/icons/light/planet-moon.svg similarity index 100% rename from client/src/static/icons/light/planet-moon.svg rename to src/static/icons/light/planet-moon.svg diff --git a/client/src/static/icons/light/planet-ringed.svg b/src/static/icons/light/planet-ringed.svg similarity index 100% rename from client/src/static/icons/light/planet-ringed.svg rename to src/static/icons/light/planet-ringed.svg diff --git a/client/src/static/icons/light/play-circle.svg b/src/static/icons/light/play-circle.svg similarity index 100% rename from client/src/static/icons/light/play-circle.svg rename to src/static/icons/light/play-circle.svg diff --git a/client/src/static/icons/light/play.svg b/src/static/icons/light/play.svg similarity index 100% rename from client/src/static/icons/light/play.svg rename to src/static/icons/light/play.svg diff --git a/client/src/static/icons/light/plug.svg b/src/static/icons/light/plug.svg similarity index 100% rename from client/src/static/icons/light/plug.svg rename to src/static/icons/light/plug.svg diff --git a/client/src/static/icons/light/plus-circle.svg b/src/static/icons/light/plus-circle.svg similarity index 100% rename from client/src/static/icons/light/plus-circle.svg rename to src/static/icons/light/plus-circle.svg diff --git a/client/src/static/icons/light/plus-hexagon.svg b/src/static/icons/light/plus-hexagon.svg similarity index 100% rename from client/src/static/icons/light/plus-hexagon.svg rename to src/static/icons/light/plus-hexagon.svg diff --git a/client/src/static/icons/light/plus-octagon.svg b/src/static/icons/light/plus-octagon.svg similarity index 100% rename from client/src/static/icons/light/plus-octagon.svg rename to src/static/icons/light/plus-octagon.svg diff --git a/client/src/static/icons/light/plus-square.svg b/src/static/icons/light/plus-square.svg similarity index 100% rename from client/src/static/icons/light/plus-square.svg rename to src/static/icons/light/plus-square.svg diff --git a/client/src/static/icons/light/plus.svg b/src/static/icons/light/plus.svg similarity index 100% rename from client/src/static/icons/light/plus.svg rename to src/static/icons/light/plus.svg diff --git a/client/src/static/icons/light/podcast.svg b/src/static/icons/light/podcast.svg similarity index 100% rename from client/src/static/icons/light/podcast.svg rename to src/static/icons/light/podcast.svg diff --git a/client/src/static/icons/light/podium-star.svg b/src/static/icons/light/podium-star.svg similarity index 100% rename from client/src/static/icons/light/podium-star.svg rename to src/static/icons/light/podium-star.svg diff --git a/client/src/static/icons/light/podium.svg b/src/static/icons/light/podium.svg similarity index 100% rename from client/src/static/icons/light/podium.svg rename to src/static/icons/light/podium.svg diff --git a/client/src/static/icons/light/police-box.svg b/src/static/icons/light/police-box.svg similarity index 100% rename from client/src/static/icons/light/police-box.svg rename to src/static/icons/light/police-box.svg diff --git a/client/src/static/icons/light/poll-h.svg b/src/static/icons/light/poll-h.svg similarity index 100% rename from client/src/static/icons/light/poll-h.svg rename to src/static/icons/light/poll-h.svg diff --git a/client/src/static/icons/light/poll-people.svg b/src/static/icons/light/poll-people.svg similarity index 100% rename from client/src/static/icons/light/poll-people.svg rename to src/static/icons/light/poll-people.svg diff --git a/client/src/static/icons/light/poll.svg b/src/static/icons/light/poll.svg similarity index 100% rename from client/src/static/icons/light/poll.svg rename to src/static/icons/light/poll.svg diff --git a/client/src/static/icons/light/poo-storm.svg b/src/static/icons/light/poo-storm.svg similarity index 100% rename from client/src/static/icons/light/poo-storm.svg rename to src/static/icons/light/poo-storm.svg diff --git a/client/src/static/icons/light/poo.svg b/src/static/icons/light/poo.svg similarity index 100% rename from client/src/static/icons/light/poo.svg rename to src/static/icons/light/poo.svg diff --git a/client/src/static/icons/light/poop.svg b/src/static/icons/light/poop.svg similarity index 100% rename from client/src/static/icons/light/poop.svg rename to src/static/icons/light/poop.svg diff --git a/client/src/static/icons/light/popcorn.svg b/src/static/icons/light/popcorn.svg similarity index 100% rename from client/src/static/icons/light/popcorn.svg rename to src/static/icons/light/popcorn.svg diff --git a/client/src/static/icons/light/portal-enter.svg b/src/static/icons/light/portal-enter.svg similarity index 100% rename from client/src/static/icons/light/portal-enter.svg rename to src/static/icons/light/portal-enter.svg diff --git a/client/src/static/icons/light/portal-exit.svg b/src/static/icons/light/portal-exit.svg similarity index 100% rename from client/src/static/icons/light/portal-exit.svg rename to src/static/icons/light/portal-exit.svg diff --git a/client/src/static/icons/light/portrait.svg b/src/static/icons/light/portrait.svg similarity index 100% rename from client/src/static/icons/light/portrait.svg rename to src/static/icons/light/portrait.svg diff --git a/client/src/static/icons/light/pound-sign.svg b/src/static/icons/light/pound-sign.svg similarity index 100% rename from client/src/static/icons/light/pound-sign.svg rename to src/static/icons/light/pound-sign.svg diff --git a/client/src/static/icons/light/power-off.svg b/src/static/icons/light/power-off.svg similarity index 100% rename from client/src/static/icons/light/power-off.svg rename to src/static/icons/light/power-off.svg diff --git a/client/src/static/icons/light/pray.svg b/src/static/icons/light/pray.svg similarity index 100% rename from client/src/static/icons/light/pray.svg rename to src/static/icons/light/pray.svg diff --git a/client/src/static/icons/light/praying-hands.svg b/src/static/icons/light/praying-hands.svg similarity index 100% rename from client/src/static/icons/light/praying-hands.svg rename to src/static/icons/light/praying-hands.svg diff --git a/client/src/static/icons/light/prescription-bottle-alt.svg b/src/static/icons/light/prescription-bottle-alt.svg similarity index 100% rename from client/src/static/icons/light/prescription-bottle-alt.svg rename to src/static/icons/light/prescription-bottle-alt.svg diff --git a/client/src/static/icons/light/prescription-bottle.svg b/src/static/icons/light/prescription-bottle.svg similarity index 100% rename from client/src/static/icons/light/prescription-bottle.svg rename to src/static/icons/light/prescription-bottle.svg diff --git a/client/src/static/icons/light/prescription.svg b/src/static/icons/light/prescription.svg similarity index 100% rename from client/src/static/icons/light/prescription.svg rename to src/static/icons/light/prescription.svg diff --git a/client/src/static/icons/light/presentation.svg b/src/static/icons/light/presentation.svg similarity index 100% rename from client/src/static/icons/light/presentation.svg rename to src/static/icons/light/presentation.svg diff --git a/client/src/static/icons/light/print-search.svg b/src/static/icons/light/print-search.svg similarity index 100% rename from client/src/static/icons/light/print-search.svg rename to src/static/icons/light/print-search.svg diff --git a/client/src/static/icons/light/print-slash.svg b/src/static/icons/light/print-slash.svg similarity index 100% rename from client/src/static/icons/light/print-slash.svg rename to src/static/icons/light/print-slash.svg diff --git a/client/src/static/icons/light/print.svg b/src/static/icons/light/print.svg similarity index 100% rename from client/src/static/icons/light/print.svg rename to src/static/icons/light/print.svg diff --git a/client/src/static/icons/light/procedures.svg b/src/static/icons/light/procedures.svg similarity index 100% rename from client/src/static/icons/light/procedures.svg rename to src/static/icons/light/procedures.svg diff --git a/client/src/static/icons/light/project-diagram.svg b/src/static/icons/light/project-diagram.svg similarity index 100% rename from client/src/static/icons/light/project-diagram.svg rename to src/static/icons/light/project-diagram.svg diff --git a/client/src/static/icons/light/projector.svg b/src/static/icons/light/projector.svg similarity index 100% rename from client/src/static/icons/light/projector.svg rename to src/static/icons/light/projector.svg diff --git a/client/src/static/icons/light/pumpkin.svg b/src/static/icons/light/pumpkin.svg similarity index 100% rename from client/src/static/icons/light/pumpkin.svg rename to src/static/icons/light/pumpkin.svg diff --git a/client/src/static/icons/light/puzzle-piece.svg b/src/static/icons/light/puzzle-piece.svg similarity index 100% rename from client/src/static/icons/light/puzzle-piece.svg rename to src/static/icons/light/puzzle-piece.svg diff --git a/client/src/static/icons/light/qrcode.svg b/src/static/icons/light/qrcode.svg similarity index 100% rename from client/src/static/icons/light/qrcode.svg rename to src/static/icons/light/qrcode.svg diff --git a/client/src/static/icons/light/question-circle.svg b/src/static/icons/light/question-circle.svg similarity index 100% rename from client/src/static/icons/light/question-circle.svg rename to src/static/icons/light/question-circle.svg diff --git a/client/src/static/icons/light/question-square.svg b/src/static/icons/light/question-square.svg similarity index 100% rename from client/src/static/icons/light/question-square.svg rename to src/static/icons/light/question-square.svg diff --git a/client/src/static/icons/light/question.svg b/src/static/icons/light/question.svg similarity index 100% rename from client/src/static/icons/light/question.svg rename to src/static/icons/light/question.svg diff --git a/client/src/static/icons/light/quidditch.svg b/src/static/icons/light/quidditch.svg similarity index 100% rename from client/src/static/icons/light/quidditch.svg rename to src/static/icons/light/quidditch.svg diff --git a/client/src/static/icons/light/quote-left.svg b/src/static/icons/light/quote-left.svg similarity index 100% rename from client/src/static/icons/light/quote-left.svg rename to src/static/icons/light/quote-left.svg diff --git a/client/src/static/icons/light/quote-right.svg b/src/static/icons/light/quote-right.svg similarity index 100% rename from client/src/static/icons/light/quote-right.svg rename to src/static/icons/light/quote-right.svg diff --git a/client/src/static/icons/light/quran.svg b/src/static/icons/light/quran.svg similarity index 100% rename from client/src/static/icons/light/quran.svg rename to src/static/icons/light/quran.svg diff --git a/client/src/static/icons/light/rabbit-fast.svg b/src/static/icons/light/rabbit-fast.svg similarity index 100% rename from client/src/static/icons/light/rabbit-fast.svg rename to src/static/icons/light/rabbit-fast.svg diff --git a/client/src/static/icons/light/rabbit.svg b/src/static/icons/light/rabbit.svg similarity index 100% rename from client/src/static/icons/light/rabbit.svg rename to src/static/icons/light/rabbit.svg diff --git a/client/src/static/icons/light/racquet.svg b/src/static/icons/light/racquet.svg similarity index 100% rename from client/src/static/icons/light/racquet.svg rename to src/static/icons/light/racquet.svg diff --git a/client/src/static/icons/light/radar.svg b/src/static/icons/light/radar.svg similarity index 100% rename from client/src/static/icons/light/radar.svg rename to src/static/icons/light/radar.svg diff --git a/client/src/static/icons/light/radiation-alt.svg b/src/static/icons/light/radiation-alt.svg similarity index 100% rename from client/src/static/icons/light/radiation-alt.svg rename to src/static/icons/light/radiation-alt.svg diff --git a/client/src/static/icons/light/radiation.svg b/src/static/icons/light/radiation.svg similarity index 100% rename from client/src/static/icons/light/radiation.svg rename to src/static/icons/light/radiation.svg diff --git a/client/src/static/icons/light/radio-alt.svg b/src/static/icons/light/radio-alt.svg similarity index 100% rename from client/src/static/icons/light/radio-alt.svg rename to src/static/icons/light/radio-alt.svg diff --git a/client/src/static/icons/light/radio.svg b/src/static/icons/light/radio.svg similarity index 100% rename from client/src/static/icons/light/radio.svg rename to src/static/icons/light/radio.svg diff --git a/client/src/static/icons/light/rainbow.svg b/src/static/icons/light/rainbow.svg similarity index 100% rename from client/src/static/icons/light/rainbow.svg rename to src/static/icons/light/rainbow.svg diff --git a/client/src/static/icons/light/raindrops.svg b/src/static/icons/light/raindrops.svg similarity index 100% rename from client/src/static/icons/light/raindrops.svg rename to src/static/icons/light/raindrops.svg diff --git a/client/src/static/icons/light/ram.svg b/src/static/icons/light/ram.svg similarity index 100% rename from client/src/static/icons/light/ram.svg rename to src/static/icons/light/ram.svg diff --git a/client/src/static/icons/light/ramp-loading.svg b/src/static/icons/light/ramp-loading.svg similarity index 100% rename from client/src/static/icons/light/ramp-loading.svg rename to src/static/icons/light/ramp-loading.svg diff --git a/client/src/static/icons/light/random.svg b/src/static/icons/light/random.svg similarity index 100% rename from client/src/static/icons/light/random.svg rename to src/static/icons/light/random.svg diff --git a/client/src/static/icons/light/raygun.svg b/src/static/icons/light/raygun.svg similarity index 100% rename from client/src/static/icons/light/raygun.svg rename to src/static/icons/light/raygun.svg diff --git a/client/src/static/icons/light/receipt.svg b/src/static/icons/light/receipt.svg similarity index 100% rename from client/src/static/icons/light/receipt.svg rename to src/static/icons/light/receipt.svg diff --git a/client/src/static/icons/light/record-vinyl.svg b/src/static/icons/light/record-vinyl.svg similarity index 100% rename from client/src/static/icons/light/record-vinyl.svg rename to src/static/icons/light/record-vinyl.svg diff --git a/client/src/static/icons/light/rectangle-landscape.svg b/src/static/icons/light/rectangle-landscape.svg similarity index 100% rename from client/src/static/icons/light/rectangle-landscape.svg rename to src/static/icons/light/rectangle-landscape.svg diff --git a/client/src/static/icons/light/rectangle-portrait.svg b/src/static/icons/light/rectangle-portrait.svg similarity index 100% rename from client/src/static/icons/light/rectangle-portrait.svg rename to src/static/icons/light/rectangle-portrait.svg diff --git a/client/src/static/icons/light/rectangle-wide.svg b/src/static/icons/light/rectangle-wide.svg similarity index 100% rename from client/src/static/icons/light/rectangle-wide.svg rename to src/static/icons/light/rectangle-wide.svg diff --git a/client/src/static/icons/light/recycle.svg b/src/static/icons/light/recycle.svg similarity index 100% rename from client/src/static/icons/light/recycle.svg rename to src/static/icons/light/recycle.svg diff --git a/client/src/static/icons/light/redo-alt.svg b/src/static/icons/light/redo-alt.svg similarity index 100% rename from client/src/static/icons/light/redo-alt.svg rename to src/static/icons/light/redo-alt.svg diff --git a/client/src/static/icons/light/redo.svg b/src/static/icons/light/redo.svg similarity index 100% rename from client/src/static/icons/light/redo.svg rename to src/static/icons/light/redo.svg diff --git a/client/src/static/icons/light/refrigerator.svg b/src/static/icons/light/refrigerator.svg similarity index 100% rename from client/src/static/icons/light/refrigerator.svg rename to src/static/icons/light/refrigerator.svg diff --git a/client/src/static/icons/light/registered.svg b/src/static/icons/light/registered.svg similarity index 100% rename from client/src/static/icons/light/registered.svg rename to src/static/icons/light/registered.svg diff --git a/client/src/static/icons/light/remove-format.svg b/src/static/icons/light/remove-format.svg similarity index 100% rename from client/src/static/icons/light/remove-format.svg rename to src/static/icons/light/remove-format.svg diff --git a/client/src/static/icons/light/repeat-1-alt.svg b/src/static/icons/light/repeat-1-alt.svg similarity index 100% rename from client/src/static/icons/light/repeat-1-alt.svg rename to src/static/icons/light/repeat-1-alt.svg diff --git a/client/src/static/icons/light/repeat-1.svg b/src/static/icons/light/repeat-1.svg similarity index 100% rename from client/src/static/icons/light/repeat-1.svg rename to src/static/icons/light/repeat-1.svg diff --git a/client/src/static/icons/light/repeat-alt.svg b/src/static/icons/light/repeat-alt.svg similarity index 100% rename from client/src/static/icons/light/repeat-alt.svg rename to src/static/icons/light/repeat-alt.svg diff --git a/client/src/static/icons/light/repeat.svg b/src/static/icons/light/repeat.svg similarity index 100% rename from client/src/static/icons/light/repeat.svg rename to src/static/icons/light/repeat.svg diff --git a/client/src/static/icons/light/reply-all.svg b/src/static/icons/light/reply-all.svg similarity index 100% rename from client/src/static/icons/light/reply-all.svg rename to src/static/icons/light/reply-all.svg diff --git a/client/src/static/icons/light/reply.svg b/src/static/icons/light/reply.svg similarity index 100% rename from client/src/static/icons/light/reply.svg rename to src/static/icons/light/reply.svg diff --git a/client/src/static/icons/light/republican.svg b/src/static/icons/light/republican.svg similarity index 100% rename from client/src/static/icons/light/republican.svg rename to src/static/icons/light/republican.svg diff --git a/client/src/static/icons/light/restroom.svg b/src/static/icons/light/restroom.svg similarity index 100% rename from client/src/static/icons/light/restroom.svg rename to src/static/icons/light/restroom.svg diff --git a/client/src/static/icons/light/retweet-alt.svg b/src/static/icons/light/retweet-alt.svg similarity index 100% rename from client/src/static/icons/light/retweet-alt.svg rename to src/static/icons/light/retweet-alt.svg diff --git a/client/src/static/icons/light/retweet.svg b/src/static/icons/light/retweet.svg similarity index 100% rename from client/src/static/icons/light/retweet.svg rename to src/static/icons/light/retweet.svg diff --git a/client/src/static/icons/light/ribbon.svg b/src/static/icons/light/ribbon.svg similarity index 100% rename from client/src/static/icons/light/ribbon.svg rename to src/static/icons/light/ribbon.svg diff --git a/client/src/static/icons/light/ring.svg b/src/static/icons/light/ring.svg similarity index 100% rename from client/src/static/icons/light/ring.svg rename to src/static/icons/light/ring.svg diff --git a/client/src/static/icons/light/rings-wedding.svg b/src/static/icons/light/rings-wedding.svg similarity index 100% rename from client/src/static/icons/light/rings-wedding.svg rename to src/static/icons/light/rings-wedding.svg diff --git a/client/src/static/icons/light/road.svg b/src/static/icons/light/road.svg similarity index 100% rename from client/src/static/icons/light/road.svg rename to src/static/icons/light/road.svg diff --git a/client/src/static/icons/light/robot.svg b/src/static/icons/light/robot.svg similarity index 100% rename from client/src/static/icons/light/robot.svg rename to src/static/icons/light/robot.svg diff --git a/client/src/static/icons/light/rocket-launch.svg b/src/static/icons/light/rocket-launch.svg similarity index 100% rename from client/src/static/icons/light/rocket-launch.svg rename to src/static/icons/light/rocket-launch.svg diff --git a/client/src/static/icons/light/rocket.svg b/src/static/icons/light/rocket.svg similarity index 100% rename from client/src/static/icons/light/rocket.svg rename to src/static/icons/light/rocket.svg diff --git a/client/src/static/icons/light/route-highway.svg b/src/static/icons/light/route-highway.svg similarity index 100% rename from client/src/static/icons/light/route-highway.svg rename to src/static/icons/light/route-highway.svg diff --git a/client/src/static/icons/light/route-interstate.svg b/src/static/icons/light/route-interstate.svg similarity index 100% rename from client/src/static/icons/light/route-interstate.svg rename to src/static/icons/light/route-interstate.svg diff --git a/client/src/static/icons/light/route.svg b/src/static/icons/light/route.svg similarity index 100% rename from client/src/static/icons/light/route.svg rename to src/static/icons/light/route.svg diff --git a/client/src/static/icons/light/router.svg b/src/static/icons/light/router.svg similarity index 100% rename from client/src/static/icons/light/router.svg rename to src/static/icons/light/router.svg diff --git a/client/src/static/icons/light/rss-square.svg b/src/static/icons/light/rss-square.svg similarity index 100% rename from client/src/static/icons/light/rss-square.svg rename to src/static/icons/light/rss-square.svg diff --git a/client/src/static/icons/light/rss.svg b/src/static/icons/light/rss.svg similarity index 100% rename from client/src/static/icons/light/rss.svg rename to src/static/icons/light/rss.svg diff --git a/client/src/static/icons/light/ruble-sign.svg b/src/static/icons/light/ruble-sign.svg similarity index 100% rename from client/src/static/icons/light/ruble-sign.svg rename to src/static/icons/light/ruble-sign.svg diff --git a/client/src/static/icons/light/ruler-combined.svg b/src/static/icons/light/ruler-combined.svg similarity index 100% rename from client/src/static/icons/light/ruler-combined.svg rename to src/static/icons/light/ruler-combined.svg diff --git a/client/src/static/icons/light/ruler-horizontal.svg b/src/static/icons/light/ruler-horizontal.svg similarity index 100% rename from client/src/static/icons/light/ruler-horizontal.svg rename to src/static/icons/light/ruler-horizontal.svg diff --git a/client/src/static/icons/light/ruler-triangle.svg b/src/static/icons/light/ruler-triangle.svg similarity index 100% rename from client/src/static/icons/light/ruler-triangle.svg rename to src/static/icons/light/ruler-triangle.svg diff --git a/client/src/static/icons/light/ruler-vertical.svg b/src/static/icons/light/ruler-vertical.svg similarity index 100% rename from client/src/static/icons/light/ruler-vertical.svg rename to src/static/icons/light/ruler-vertical.svg diff --git a/client/src/static/icons/light/ruler.svg b/src/static/icons/light/ruler.svg similarity index 100% rename from client/src/static/icons/light/ruler.svg rename to src/static/icons/light/ruler.svg diff --git a/client/src/static/icons/light/running.svg b/src/static/icons/light/running.svg similarity index 100% rename from client/src/static/icons/light/running.svg rename to src/static/icons/light/running.svg diff --git a/client/src/static/icons/light/rupee-sign.svg b/src/static/icons/light/rupee-sign.svg similarity index 100% rename from client/src/static/icons/light/rupee-sign.svg rename to src/static/icons/light/rupee-sign.svg diff --git a/client/src/static/icons/light/rv.svg b/src/static/icons/light/rv.svg similarity index 100% rename from client/src/static/icons/light/rv.svg rename to src/static/icons/light/rv.svg diff --git a/client/src/static/icons/light/sack-dollar.svg b/src/static/icons/light/sack-dollar.svg similarity index 100% rename from client/src/static/icons/light/sack-dollar.svg rename to src/static/icons/light/sack-dollar.svg diff --git a/client/src/static/icons/light/sack.svg b/src/static/icons/light/sack.svg similarity index 100% rename from client/src/static/icons/light/sack.svg rename to src/static/icons/light/sack.svg diff --git a/client/src/static/icons/light/sad-cry.svg b/src/static/icons/light/sad-cry.svg similarity index 100% rename from client/src/static/icons/light/sad-cry.svg rename to src/static/icons/light/sad-cry.svg diff --git a/client/src/static/icons/light/sad-tear.svg b/src/static/icons/light/sad-tear.svg similarity index 100% rename from client/src/static/icons/light/sad-tear.svg rename to src/static/icons/light/sad-tear.svg diff --git a/client/src/static/icons/light/salad.svg b/src/static/icons/light/salad.svg similarity index 100% rename from client/src/static/icons/light/salad.svg rename to src/static/icons/light/salad.svg diff --git a/client/src/static/icons/light/sandwich.svg b/src/static/icons/light/sandwich.svg similarity index 100% rename from client/src/static/icons/light/sandwich.svg rename to src/static/icons/light/sandwich.svg diff --git a/client/src/static/icons/light/satellite-dish.svg b/src/static/icons/light/satellite-dish.svg similarity index 100% rename from client/src/static/icons/light/satellite-dish.svg rename to src/static/icons/light/satellite-dish.svg diff --git a/client/src/static/icons/light/satellite.svg b/src/static/icons/light/satellite.svg similarity index 100% rename from client/src/static/icons/light/satellite.svg rename to src/static/icons/light/satellite.svg diff --git a/client/src/static/icons/light/sausage.svg b/src/static/icons/light/sausage.svg similarity index 100% rename from client/src/static/icons/light/sausage.svg rename to src/static/icons/light/sausage.svg diff --git a/client/src/static/icons/light/save.svg b/src/static/icons/light/save.svg similarity index 100% rename from client/src/static/icons/light/save.svg rename to src/static/icons/light/save.svg diff --git a/client/src/static/icons/light/sax-hot.svg b/src/static/icons/light/sax-hot.svg similarity index 100% rename from client/src/static/icons/light/sax-hot.svg rename to src/static/icons/light/sax-hot.svg diff --git a/client/src/static/icons/light/saxophone.svg b/src/static/icons/light/saxophone.svg similarity index 100% rename from client/src/static/icons/light/saxophone.svg rename to src/static/icons/light/saxophone.svg diff --git a/client/src/static/icons/light/scalpel-path.svg b/src/static/icons/light/scalpel-path.svg similarity index 100% rename from client/src/static/icons/light/scalpel-path.svg rename to src/static/icons/light/scalpel-path.svg diff --git a/client/src/static/icons/light/scalpel.svg b/src/static/icons/light/scalpel.svg similarity index 100% rename from client/src/static/icons/light/scalpel.svg rename to src/static/icons/light/scalpel.svg diff --git a/client/src/static/icons/light/scanner-image.svg b/src/static/icons/light/scanner-image.svg similarity index 100% rename from client/src/static/icons/light/scanner-image.svg rename to src/static/icons/light/scanner-image.svg diff --git a/client/src/static/icons/light/scanner-keyboard.svg b/src/static/icons/light/scanner-keyboard.svg similarity index 100% rename from client/src/static/icons/light/scanner-keyboard.svg rename to src/static/icons/light/scanner-keyboard.svg diff --git a/client/src/static/icons/light/scanner-touchscreen.svg b/src/static/icons/light/scanner-touchscreen.svg similarity index 100% rename from client/src/static/icons/light/scanner-touchscreen.svg rename to src/static/icons/light/scanner-touchscreen.svg diff --git a/client/src/static/icons/light/scanner.svg b/src/static/icons/light/scanner.svg similarity index 100% rename from client/src/static/icons/light/scanner.svg rename to src/static/icons/light/scanner.svg diff --git a/client/src/static/icons/light/scarecrow.svg b/src/static/icons/light/scarecrow.svg similarity index 100% rename from client/src/static/icons/light/scarecrow.svg rename to src/static/icons/light/scarecrow.svg diff --git a/client/src/static/icons/light/scarf.svg b/src/static/icons/light/scarf.svg similarity index 100% rename from client/src/static/icons/light/scarf.svg rename to src/static/icons/light/scarf.svg diff --git a/client/src/static/icons/light/school.svg b/src/static/icons/light/school.svg similarity index 100% rename from client/src/static/icons/light/school.svg rename to src/static/icons/light/school.svg diff --git a/client/src/static/icons/light/screwdriver.svg b/src/static/icons/light/screwdriver.svg similarity index 100% rename from client/src/static/icons/light/screwdriver.svg rename to src/static/icons/light/screwdriver.svg diff --git a/client/src/static/icons/light/scroll-old.svg b/src/static/icons/light/scroll-old.svg similarity index 100% rename from client/src/static/icons/light/scroll-old.svg rename to src/static/icons/light/scroll-old.svg diff --git a/client/src/static/icons/light/scroll.svg b/src/static/icons/light/scroll.svg similarity index 100% rename from client/src/static/icons/light/scroll.svg rename to src/static/icons/light/scroll.svg diff --git a/client/src/static/icons/light/scrubber.svg b/src/static/icons/light/scrubber.svg similarity index 100% rename from client/src/static/icons/light/scrubber.svg rename to src/static/icons/light/scrubber.svg diff --git a/client/src/static/icons/light/scythe.svg b/src/static/icons/light/scythe.svg similarity index 100% rename from client/src/static/icons/light/scythe.svg rename to src/static/icons/light/scythe.svg diff --git a/client/src/static/icons/light/sd-card.svg b/src/static/icons/light/sd-card.svg similarity index 100% rename from client/src/static/icons/light/sd-card.svg rename to src/static/icons/light/sd-card.svg diff --git a/client/src/static/icons/light/search-dollar.svg b/src/static/icons/light/search-dollar.svg similarity index 100% rename from client/src/static/icons/light/search-dollar.svg rename to src/static/icons/light/search-dollar.svg diff --git a/client/src/static/icons/light/search-location.svg b/src/static/icons/light/search-location.svg similarity index 100% rename from client/src/static/icons/light/search-location.svg rename to src/static/icons/light/search-location.svg diff --git a/client/src/static/icons/light/search-minus.svg b/src/static/icons/light/search-minus.svg similarity index 100% rename from client/src/static/icons/light/search-minus.svg rename to src/static/icons/light/search-minus.svg diff --git a/client/src/static/icons/light/search-plus.svg b/src/static/icons/light/search-plus.svg similarity index 100% rename from client/src/static/icons/light/search-plus.svg rename to src/static/icons/light/search-plus.svg diff --git a/client/src/static/icons/light/search.svg b/src/static/icons/light/search.svg similarity index 100% rename from client/src/static/icons/light/search.svg rename to src/static/icons/light/search.svg diff --git a/client/src/static/icons/light/seedling.svg b/src/static/icons/light/seedling.svg similarity index 100% rename from client/src/static/icons/light/seedling.svg rename to src/static/icons/light/seedling.svg diff --git a/client/src/static/icons/light/send-back.svg b/src/static/icons/light/send-back.svg similarity index 100% rename from client/src/static/icons/light/send-back.svg rename to src/static/icons/light/send-back.svg diff --git a/client/src/static/icons/light/send-backward.svg b/src/static/icons/light/send-backward.svg similarity index 100% rename from client/src/static/icons/light/send-backward.svg rename to src/static/icons/light/send-backward.svg diff --git a/client/src/static/icons/light/sensor-alert.svg b/src/static/icons/light/sensor-alert.svg similarity index 100% rename from client/src/static/icons/light/sensor-alert.svg rename to src/static/icons/light/sensor-alert.svg diff --git a/client/src/static/icons/light/sensor-fire.svg b/src/static/icons/light/sensor-fire.svg similarity index 100% rename from client/src/static/icons/light/sensor-fire.svg rename to src/static/icons/light/sensor-fire.svg diff --git a/client/src/static/icons/light/sensor-on.svg b/src/static/icons/light/sensor-on.svg similarity index 100% rename from client/src/static/icons/light/sensor-on.svg rename to src/static/icons/light/sensor-on.svg diff --git a/client/src/static/icons/light/sensor-smoke.svg b/src/static/icons/light/sensor-smoke.svg similarity index 100% rename from client/src/static/icons/light/sensor-smoke.svg rename to src/static/icons/light/sensor-smoke.svg diff --git a/client/src/static/icons/light/sensor.svg b/src/static/icons/light/sensor.svg similarity index 100% rename from client/src/static/icons/light/sensor.svg rename to src/static/icons/light/sensor.svg diff --git a/client/src/static/icons/light/server.svg b/src/static/icons/light/server.svg similarity index 100% rename from client/src/static/icons/light/server.svg rename to src/static/icons/light/server.svg diff --git a/client/src/static/icons/light/shapes.svg b/src/static/icons/light/shapes.svg similarity index 100% rename from client/src/static/icons/light/shapes.svg rename to src/static/icons/light/shapes.svg diff --git a/client/src/static/icons/light/share-all.svg b/src/static/icons/light/share-all.svg similarity index 100% rename from client/src/static/icons/light/share-all.svg rename to src/static/icons/light/share-all.svg diff --git a/client/src/static/icons/light/share-alt-square.svg b/src/static/icons/light/share-alt-square.svg similarity index 100% rename from client/src/static/icons/light/share-alt-square.svg rename to src/static/icons/light/share-alt-square.svg diff --git a/client/src/static/icons/light/share-alt.svg b/src/static/icons/light/share-alt.svg similarity index 100% rename from client/src/static/icons/light/share-alt.svg rename to src/static/icons/light/share-alt.svg diff --git a/client/src/static/icons/light/share-square.svg b/src/static/icons/light/share-square.svg similarity index 100% rename from client/src/static/icons/light/share-square.svg rename to src/static/icons/light/share-square.svg diff --git a/client/src/static/icons/light/share.svg b/src/static/icons/light/share.svg similarity index 100% rename from client/src/static/icons/light/share.svg rename to src/static/icons/light/share.svg diff --git a/client/src/static/icons/light/sheep.svg b/src/static/icons/light/sheep.svg similarity index 100% rename from client/src/static/icons/light/sheep.svg rename to src/static/icons/light/sheep.svg diff --git a/client/src/static/icons/light/shekel-sign.svg b/src/static/icons/light/shekel-sign.svg similarity index 100% rename from client/src/static/icons/light/shekel-sign.svg rename to src/static/icons/light/shekel-sign.svg diff --git a/client/src/static/icons/light/shield-alt.svg b/src/static/icons/light/shield-alt.svg similarity index 100% rename from client/src/static/icons/light/shield-alt.svg rename to src/static/icons/light/shield-alt.svg diff --git a/client/src/static/icons/light/shield-check.svg b/src/static/icons/light/shield-check.svg similarity index 100% rename from client/src/static/icons/light/shield-check.svg rename to src/static/icons/light/shield-check.svg diff --git a/client/src/static/icons/light/shield-cross.svg b/src/static/icons/light/shield-cross.svg similarity index 100% rename from client/src/static/icons/light/shield-cross.svg rename to src/static/icons/light/shield-cross.svg diff --git a/client/src/static/icons/light/shield.svg b/src/static/icons/light/shield.svg similarity index 100% rename from client/src/static/icons/light/shield.svg rename to src/static/icons/light/shield.svg diff --git a/client/src/static/icons/light/ship.svg b/src/static/icons/light/ship.svg similarity index 100% rename from client/src/static/icons/light/ship.svg rename to src/static/icons/light/ship.svg diff --git a/client/src/static/icons/light/shipping-fast.svg b/src/static/icons/light/shipping-fast.svg similarity index 100% rename from client/src/static/icons/light/shipping-fast.svg rename to src/static/icons/light/shipping-fast.svg diff --git a/client/src/static/icons/light/shipping-timed.svg b/src/static/icons/light/shipping-timed.svg similarity index 100% rename from client/src/static/icons/light/shipping-timed.svg rename to src/static/icons/light/shipping-timed.svg diff --git a/client/src/static/icons/light/shish-kebab.svg b/src/static/icons/light/shish-kebab.svg similarity index 100% rename from client/src/static/icons/light/shish-kebab.svg rename to src/static/icons/light/shish-kebab.svg diff --git a/client/src/static/icons/light/shoe-prints.svg b/src/static/icons/light/shoe-prints.svg similarity index 100% rename from client/src/static/icons/light/shoe-prints.svg rename to src/static/icons/light/shoe-prints.svg diff --git a/client/src/static/icons/light/shopping-bag.svg b/src/static/icons/light/shopping-bag.svg similarity index 100% rename from client/src/static/icons/light/shopping-bag.svg rename to src/static/icons/light/shopping-bag.svg diff --git a/client/src/static/icons/light/shopping-basket.svg b/src/static/icons/light/shopping-basket.svg similarity index 100% rename from client/src/static/icons/light/shopping-basket.svg rename to src/static/icons/light/shopping-basket.svg diff --git a/client/src/static/icons/light/shopping-cart.svg b/src/static/icons/light/shopping-cart.svg similarity index 100% rename from client/src/static/icons/light/shopping-cart.svg rename to src/static/icons/light/shopping-cart.svg diff --git a/client/src/static/icons/light/shovel-snow.svg b/src/static/icons/light/shovel-snow.svg similarity index 100% rename from client/src/static/icons/light/shovel-snow.svg rename to src/static/icons/light/shovel-snow.svg diff --git a/client/src/static/icons/light/shovel.svg b/src/static/icons/light/shovel.svg similarity index 100% rename from client/src/static/icons/light/shovel.svg rename to src/static/icons/light/shovel.svg diff --git a/client/src/static/icons/light/shower.svg b/src/static/icons/light/shower.svg similarity index 100% rename from client/src/static/icons/light/shower.svg rename to src/static/icons/light/shower.svg diff --git a/client/src/static/icons/light/shredder.svg b/src/static/icons/light/shredder.svg similarity index 100% rename from client/src/static/icons/light/shredder.svg rename to src/static/icons/light/shredder.svg diff --git a/client/src/static/icons/light/shuttle-van.svg b/src/static/icons/light/shuttle-van.svg similarity index 100% rename from client/src/static/icons/light/shuttle-van.svg rename to src/static/icons/light/shuttle-van.svg diff --git a/client/src/static/icons/light/shuttlecock.svg b/src/static/icons/light/shuttlecock.svg similarity index 100% rename from client/src/static/icons/light/shuttlecock.svg rename to src/static/icons/light/shuttlecock.svg diff --git a/client/src/static/icons/light/sickle.svg b/src/static/icons/light/sickle.svg similarity index 100% rename from client/src/static/icons/light/sickle.svg rename to src/static/icons/light/sickle.svg diff --git a/client/src/static/icons/light/sigma.svg b/src/static/icons/light/sigma.svg similarity index 100% rename from client/src/static/icons/light/sigma.svg rename to src/static/icons/light/sigma.svg diff --git a/client/src/static/icons/light/sign-in-alt.svg b/src/static/icons/light/sign-in-alt.svg similarity index 100% rename from client/src/static/icons/light/sign-in-alt.svg rename to src/static/icons/light/sign-in-alt.svg diff --git a/client/src/static/icons/light/sign-in.svg b/src/static/icons/light/sign-in.svg similarity index 100% rename from client/src/static/icons/light/sign-in.svg rename to src/static/icons/light/sign-in.svg diff --git a/client/src/static/icons/light/sign-language.svg b/src/static/icons/light/sign-language.svg similarity index 100% rename from client/src/static/icons/light/sign-language.svg rename to src/static/icons/light/sign-language.svg diff --git a/client/src/static/icons/light/sign-out-alt.svg b/src/static/icons/light/sign-out-alt.svg similarity index 100% rename from client/src/static/icons/light/sign-out-alt.svg rename to src/static/icons/light/sign-out-alt.svg diff --git a/client/src/static/icons/light/sign-out.svg b/src/static/icons/light/sign-out.svg similarity index 100% rename from client/src/static/icons/light/sign-out.svg rename to src/static/icons/light/sign-out.svg diff --git a/client/src/static/icons/light/sign.svg b/src/static/icons/light/sign.svg similarity index 100% rename from client/src/static/icons/light/sign.svg rename to src/static/icons/light/sign.svg diff --git a/client/src/static/icons/light/signal-1.svg b/src/static/icons/light/signal-1.svg similarity index 100% rename from client/src/static/icons/light/signal-1.svg rename to src/static/icons/light/signal-1.svg diff --git a/client/src/static/icons/light/signal-2.svg b/src/static/icons/light/signal-2.svg similarity index 100% rename from client/src/static/icons/light/signal-2.svg rename to src/static/icons/light/signal-2.svg diff --git a/client/src/static/icons/light/signal-3.svg b/src/static/icons/light/signal-3.svg similarity index 100% rename from client/src/static/icons/light/signal-3.svg rename to src/static/icons/light/signal-3.svg diff --git a/client/src/static/icons/light/signal-4.svg b/src/static/icons/light/signal-4.svg similarity index 100% rename from client/src/static/icons/light/signal-4.svg rename to src/static/icons/light/signal-4.svg diff --git a/client/src/static/icons/light/signal-alt-1.svg b/src/static/icons/light/signal-alt-1.svg similarity index 100% rename from client/src/static/icons/light/signal-alt-1.svg rename to src/static/icons/light/signal-alt-1.svg diff --git a/client/src/static/icons/light/signal-alt-2.svg b/src/static/icons/light/signal-alt-2.svg similarity index 100% rename from client/src/static/icons/light/signal-alt-2.svg rename to src/static/icons/light/signal-alt-2.svg diff --git a/client/src/static/icons/light/signal-alt-3.svg b/src/static/icons/light/signal-alt-3.svg similarity index 100% rename from client/src/static/icons/light/signal-alt-3.svg rename to src/static/icons/light/signal-alt-3.svg diff --git a/client/src/static/icons/light/signal-alt-slash.svg b/src/static/icons/light/signal-alt-slash.svg similarity index 100% rename from client/src/static/icons/light/signal-alt-slash.svg rename to src/static/icons/light/signal-alt-slash.svg diff --git a/client/src/static/icons/light/signal-alt.svg b/src/static/icons/light/signal-alt.svg similarity index 100% rename from client/src/static/icons/light/signal-alt.svg rename to src/static/icons/light/signal-alt.svg diff --git a/client/src/static/icons/light/signal-slash.svg b/src/static/icons/light/signal-slash.svg similarity index 100% rename from client/src/static/icons/light/signal-slash.svg rename to src/static/icons/light/signal-slash.svg diff --git a/client/src/static/icons/light/signal-stream.svg b/src/static/icons/light/signal-stream.svg similarity index 100% rename from client/src/static/icons/light/signal-stream.svg rename to src/static/icons/light/signal-stream.svg diff --git a/client/src/static/icons/light/signal.svg b/src/static/icons/light/signal.svg similarity index 100% rename from client/src/static/icons/light/signal.svg rename to src/static/icons/light/signal.svg diff --git a/client/src/static/icons/light/signature.svg b/src/static/icons/light/signature.svg similarity index 100% rename from client/src/static/icons/light/signature.svg rename to src/static/icons/light/signature.svg diff --git a/client/src/static/icons/light/sim-card.svg b/src/static/icons/light/sim-card.svg similarity index 100% rename from client/src/static/icons/light/sim-card.svg rename to src/static/icons/light/sim-card.svg diff --git a/client/src/static/icons/light/siren-on.svg b/src/static/icons/light/siren-on.svg similarity index 100% rename from client/src/static/icons/light/siren-on.svg rename to src/static/icons/light/siren-on.svg diff --git a/client/src/static/icons/light/siren.svg b/src/static/icons/light/siren.svg similarity index 100% rename from client/src/static/icons/light/siren.svg rename to src/static/icons/light/siren.svg diff --git a/client/src/static/icons/light/sitemap.svg b/src/static/icons/light/sitemap.svg similarity index 100% rename from client/src/static/icons/light/sitemap.svg rename to src/static/icons/light/sitemap.svg diff --git a/client/src/static/icons/light/skating.svg b/src/static/icons/light/skating.svg similarity index 100% rename from client/src/static/icons/light/skating.svg rename to src/static/icons/light/skating.svg diff --git a/client/src/static/icons/light/skeleton.svg b/src/static/icons/light/skeleton.svg similarity index 100% rename from client/src/static/icons/light/skeleton.svg rename to src/static/icons/light/skeleton.svg diff --git a/client/src/static/icons/light/ski-jump.svg b/src/static/icons/light/ski-jump.svg similarity index 100% rename from client/src/static/icons/light/ski-jump.svg rename to src/static/icons/light/ski-jump.svg diff --git a/client/src/static/icons/light/ski-lift.svg b/src/static/icons/light/ski-lift.svg similarity index 100% rename from client/src/static/icons/light/ski-lift.svg rename to src/static/icons/light/ski-lift.svg diff --git a/client/src/static/icons/light/skiing-nordic.svg b/src/static/icons/light/skiing-nordic.svg similarity index 100% rename from client/src/static/icons/light/skiing-nordic.svg rename to src/static/icons/light/skiing-nordic.svg diff --git a/client/src/static/icons/light/skiing.svg b/src/static/icons/light/skiing.svg similarity index 100% rename from client/src/static/icons/light/skiing.svg rename to src/static/icons/light/skiing.svg diff --git a/client/src/static/icons/light/skull-cow.svg b/src/static/icons/light/skull-cow.svg similarity index 100% rename from client/src/static/icons/light/skull-cow.svg rename to src/static/icons/light/skull-cow.svg diff --git a/client/src/static/icons/light/skull-crossbones.svg b/src/static/icons/light/skull-crossbones.svg similarity index 100% rename from client/src/static/icons/light/skull-crossbones.svg rename to src/static/icons/light/skull-crossbones.svg diff --git a/client/src/static/icons/light/skull.svg b/src/static/icons/light/skull.svg similarity index 100% rename from client/src/static/icons/light/skull.svg rename to src/static/icons/light/skull.svg diff --git a/client/src/static/icons/light/slash.svg b/src/static/icons/light/slash.svg similarity index 100% rename from client/src/static/icons/light/slash.svg rename to src/static/icons/light/slash.svg diff --git a/client/src/static/icons/light/sledding.svg b/src/static/icons/light/sledding.svg similarity index 100% rename from client/src/static/icons/light/sledding.svg rename to src/static/icons/light/sledding.svg diff --git a/client/src/static/icons/light/sleigh.svg b/src/static/icons/light/sleigh.svg similarity index 100% rename from client/src/static/icons/light/sleigh.svg rename to src/static/icons/light/sleigh.svg diff --git a/client/src/static/icons/light/sliders-h-square.svg b/src/static/icons/light/sliders-h-square.svg similarity index 100% rename from client/src/static/icons/light/sliders-h-square.svg rename to src/static/icons/light/sliders-h-square.svg diff --git a/client/src/static/icons/light/sliders-h.svg b/src/static/icons/light/sliders-h.svg similarity index 100% rename from client/src/static/icons/light/sliders-h.svg rename to src/static/icons/light/sliders-h.svg diff --git a/client/src/static/icons/light/sliders-v-square.svg b/src/static/icons/light/sliders-v-square.svg similarity index 100% rename from client/src/static/icons/light/sliders-v-square.svg rename to src/static/icons/light/sliders-v-square.svg diff --git a/client/src/static/icons/light/sliders-v.svg b/src/static/icons/light/sliders-v.svg similarity index 100% rename from client/src/static/icons/light/sliders-v.svg rename to src/static/icons/light/sliders-v.svg diff --git a/client/src/static/icons/light/smile-beam.svg b/src/static/icons/light/smile-beam.svg similarity index 100% rename from client/src/static/icons/light/smile-beam.svg rename to src/static/icons/light/smile-beam.svg diff --git a/client/src/static/icons/light/smile-plus.svg b/src/static/icons/light/smile-plus.svg similarity index 100% rename from client/src/static/icons/light/smile-plus.svg rename to src/static/icons/light/smile-plus.svg diff --git a/client/src/static/icons/light/smile-wink.svg b/src/static/icons/light/smile-wink.svg similarity index 100% rename from client/src/static/icons/light/smile-wink.svg rename to src/static/icons/light/smile-wink.svg diff --git a/client/src/static/icons/light/smile.svg b/src/static/icons/light/smile.svg similarity index 100% rename from client/src/static/icons/light/smile.svg rename to src/static/icons/light/smile.svg diff --git a/client/src/static/icons/light/smog.svg b/src/static/icons/light/smog.svg similarity index 100% rename from client/src/static/icons/light/smog.svg rename to src/static/icons/light/smog.svg diff --git a/client/src/static/icons/light/smoke.svg b/src/static/icons/light/smoke.svg similarity index 100% rename from client/src/static/icons/light/smoke.svg rename to src/static/icons/light/smoke.svg diff --git a/client/src/static/icons/light/smoking-ban.svg b/src/static/icons/light/smoking-ban.svg similarity index 100% rename from client/src/static/icons/light/smoking-ban.svg rename to src/static/icons/light/smoking-ban.svg diff --git a/client/src/static/icons/light/smoking.svg b/src/static/icons/light/smoking.svg similarity index 100% rename from client/src/static/icons/light/smoking.svg rename to src/static/icons/light/smoking.svg diff --git a/client/src/static/icons/light/sms.svg b/src/static/icons/light/sms.svg similarity index 100% rename from client/src/static/icons/light/sms.svg rename to src/static/icons/light/sms.svg diff --git a/client/src/static/icons/light/snake.svg b/src/static/icons/light/snake.svg similarity index 100% rename from client/src/static/icons/light/snake.svg rename to src/static/icons/light/snake.svg diff --git a/client/src/static/icons/light/snooze.svg b/src/static/icons/light/snooze.svg similarity index 100% rename from client/src/static/icons/light/snooze.svg rename to src/static/icons/light/snooze.svg diff --git a/client/src/static/icons/light/snow-blowing.svg b/src/static/icons/light/snow-blowing.svg similarity index 100% rename from client/src/static/icons/light/snow-blowing.svg rename to src/static/icons/light/snow-blowing.svg diff --git a/client/src/static/icons/light/snowboarding.svg b/src/static/icons/light/snowboarding.svg similarity index 100% rename from client/src/static/icons/light/snowboarding.svg rename to src/static/icons/light/snowboarding.svg diff --git a/client/src/static/icons/light/snowflake.svg b/src/static/icons/light/snowflake.svg similarity index 100% rename from client/src/static/icons/light/snowflake.svg rename to src/static/icons/light/snowflake.svg diff --git a/client/src/static/icons/light/snowflakes.svg b/src/static/icons/light/snowflakes.svg similarity index 100% rename from client/src/static/icons/light/snowflakes.svg rename to src/static/icons/light/snowflakes.svg diff --git a/client/src/static/icons/light/snowman.svg b/src/static/icons/light/snowman.svg similarity index 100% rename from client/src/static/icons/light/snowman.svg rename to src/static/icons/light/snowman.svg diff --git a/client/src/static/icons/light/snowmobile.svg b/src/static/icons/light/snowmobile.svg similarity index 100% rename from client/src/static/icons/light/snowmobile.svg rename to src/static/icons/light/snowmobile.svg diff --git a/client/src/static/icons/light/snowplow.svg b/src/static/icons/light/snowplow.svg similarity index 100% rename from client/src/static/icons/light/snowplow.svg rename to src/static/icons/light/snowplow.svg diff --git a/client/src/static/icons/light/socks.svg b/src/static/icons/light/socks.svg similarity index 100% rename from client/src/static/icons/light/socks.svg rename to src/static/icons/light/socks.svg diff --git a/client/src/static/icons/light/solar-panel.svg b/src/static/icons/light/solar-panel.svg similarity index 100% rename from client/src/static/icons/light/solar-panel.svg rename to src/static/icons/light/solar-panel.svg diff --git a/client/src/static/icons/light/solar-system.svg b/src/static/icons/light/solar-system.svg similarity index 100% rename from client/src/static/icons/light/solar-system.svg rename to src/static/icons/light/solar-system.svg diff --git a/client/src/static/icons/light/sort-alpha-down-alt.svg b/src/static/icons/light/sort-alpha-down-alt.svg similarity index 100% rename from client/src/static/icons/light/sort-alpha-down-alt.svg rename to src/static/icons/light/sort-alpha-down-alt.svg diff --git a/client/src/static/icons/light/sort-alpha-down.svg b/src/static/icons/light/sort-alpha-down.svg similarity index 100% rename from client/src/static/icons/light/sort-alpha-down.svg rename to src/static/icons/light/sort-alpha-down.svg diff --git a/client/src/static/icons/light/sort-alpha-up-alt.svg b/src/static/icons/light/sort-alpha-up-alt.svg similarity index 100% rename from client/src/static/icons/light/sort-alpha-up-alt.svg rename to src/static/icons/light/sort-alpha-up-alt.svg diff --git a/client/src/static/icons/light/sort-alpha-up.svg b/src/static/icons/light/sort-alpha-up.svg similarity index 100% rename from client/src/static/icons/light/sort-alpha-up.svg rename to src/static/icons/light/sort-alpha-up.svg diff --git a/client/src/static/icons/light/sort-alt.svg b/src/static/icons/light/sort-alt.svg similarity index 100% rename from client/src/static/icons/light/sort-alt.svg rename to src/static/icons/light/sort-alt.svg diff --git a/client/src/static/icons/light/sort-amount-down-alt.svg b/src/static/icons/light/sort-amount-down-alt.svg similarity index 100% rename from client/src/static/icons/light/sort-amount-down-alt.svg rename to src/static/icons/light/sort-amount-down-alt.svg diff --git a/client/src/static/icons/light/sort-amount-down.svg b/src/static/icons/light/sort-amount-down.svg similarity index 100% rename from client/src/static/icons/light/sort-amount-down.svg rename to src/static/icons/light/sort-amount-down.svg diff --git a/client/src/static/icons/light/sort-amount-up-alt.svg b/src/static/icons/light/sort-amount-up-alt.svg similarity index 100% rename from client/src/static/icons/light/sort-amount-up-alt.svg rename to src/static/icons/light/sort-amount-up-alt.svg diff --git a/client/src/static/icons/light/sort-amount-up.svg b/src/static/icons/light/sort-amount-up.svg similarity index 100% rename from client/src/static/icons/light/sort-amount-up.svg rename to src/static/icons/light/sort-amount-up.svg diff --git a/client/src/static/icons/light/sort-circle-down.svg b/src/static/icons/light/sort-circle-down.svg similarity index 100% rename from client/src/static/icons/light/sort-circle-down.svg rename to src/static/icons/light/sort-circle-down.svg diff --git a/client/src/static/icons/light/sort-circle-up.svg b/src/static/icons/light/sort-circle-up.svg similarity index 100% rename from client/src/static/icons/light/sort-circle-up.svg rename to src/static/icons/light/sort-circle-up.svg diff --git a/client/src/static/icons/light/sort-circle.svg b/src/static/icons/light/sort-circle.svg similarity index 100% rename from client/src/static/icons/light/sort-circle.svg rename to src/static/icons/light/sort-circle.svg diff --git a/client/src/static/icons/light/sort-down.svg b/src/static/icons/light/sort-down.svg similarity index 100% rename from client/src/static/icons/light/sort-down.svg rename to src/static/icons/light/sort-down.svg diff --git a/client/src/static/icons/light/sort-numeric-down-alt.svg b/src/static/icons/light/sort-numeric-down-alt.svg similarity index 100% rename from client/src/static/icons/light/sort-numeric-down-alt.svg rename to src/static/icons/light/sort-numeric-down-alt.svg diff --git a/client/src/static/icons/light/sort-numeric-down.svg b/src/static/icons/light/sort-numeric-down.svg similarity index 100% rename from client/src/static/icons/light/sort-numeric-down.svg rename to src/static/icons/light/sort-numeric-down.svg diff --git a/client/src/static/icons/light/sort-numeric-up-alt.svg b/src/static/icons/light/sort-numeric-up-alt.svg similarity index 100% rename from client/src/static/icons/light/sort-numeric-up-alt.svg rename to src/static/icons/light/sort-numeric-up-alt.svg diff --git a/client/src/static/icons/light/sort-numeric-up.svg b/src/static/icons/light/sort-numeric-up.svg similarity index 100% rename from client/src/static/icons/light/sort-numeric-up.svg rename to src/static/icons/light/sort-numeric-up.svg diff --git a/client/src/static/icons/light/sort-shapes-down-alt.svg b/src/static/icons/light/sort-shapes-down-alt.svg similarity index 100% rename from client/src/static/icons/light/sort-shapes-down-alt.svg rename to src/static/icons/light/sort-shapes-down-alt.svg diff --git a/client/src/static/icons/light/sort-shapes-down.svg b/src/static/icons/light/sort-shapes-down.svg similarity index 100% rename from client/src/static/icons/light/sort-shapes-down.svg rename to src/static/icons/light/sort-shapes-down.svg diff --git a/client/src/static/icons/light/sort-shapes-up-alt.svg b/src/static/icons/light/sort-shapes-up-alt.svg similarity index 100% rename from client/src/static/icons/light/sort-shapes-up-alt.svg rename to src/static/icons/light/sort-shapes-up-alt.svg diff --git a/client/src/static/icons/light/sort-shapes-up.svg b/src/static/icons/light/sort-shapes-up.svg similarity index 100% rename from client/src/static/icons/light/sort-shapes-up.svg rename to src/static/icons/light/sort-shapes-up.svg diff --git a/client/src/static/icons/light/sort-size-down-alt.svg b/src/static/icons/light/sort-size-down-alt.svg similarity index 100% rename from client/src/static/icons/light/sort-size-down-alt.svg rename to src/static/icons/light/sort-size-down-alt.svg diff --git a/client/src/static/icons/light/sort-size-down.svg b/src/static/icons/light/sort-size-down.svg similarity index 100% rename from client/src/static/icons/light/sort-size-down.svg rename to src/static/icons/light/sort-size-down.svg diff --git a/client/src/static/icons/light/sort-size-up-alt.svg b/src/static/icons/light/sort-size-up-alt.svg similarity index 100% rename from client/src/static/icons/light/sort-size-up-alt.svg rename to src/static/icons/light/sort-size-up-alt.svg diff --git a/client/src/static/icons/light/sort-size-up.svg b/src/static/icons/light/sort-size-up.svg similarity index 100% rename from client/src/static/icons/light/sort-size-up.svg rename to src/static/icons/light/sort-size-up.svg diff --git a/client/src/static/icons/light/sort-up.svg b/src/static/icons/light/sort-up.svg similarity index 100% rename from client/src/static/icons/light/sort-up.svg rename to src/static/icons/light/sort-up.svg diff --git a/client/src/static/icons/light/sort.svg b/src/static/icons/light/sort.svg similarity index 100% rename from client/src/static/icons/light/sort.svg rename to src/static/icons/light/sort.svg diff --git a/client/src/static/icons/light/soup.svg b/src/static/icons/light/soup.svg similarity index 100% rename from client/src/static/icons/light/soup.svg rename to src/static/icons/light/soup.svg diff --git a/client/src/static/icons/light/spa.svg b/src/static/icons/light/spa.svg similarity index 100% rename from client/src/static/icons/light/spa.svg rename to src/static/icons/light/spa.svg diff --git a/client/src/static/icons/light/space-shuttle.svg b/src/static/icons/light/space-shuttle.svg similarity index 100% rename from client/src/static/icons/light/space-shuttle.svg rename to src/static/icons/light/space-shuttle.svg diff --git a/client/src/static/icons/light/space-station-moon-alt.svg b/src/static/icons/light/space-station-moon-alt.svg similarity index 100% rename from client/src/static/icons/light/space-station-moon-alt.svg rename to src/static/icons/light/space-station-moon-alt.svg diff --git a/client/src/static/icons/light/space-station-moon.svg b/src/static/icons/light/space-station-moon.svg similarity index 100% rename from client/src/static/icons/light/space-station-moon.svg rename to src/static/icons/light/space-station-moon.svg diff --git a/client/src/static/icons/light/spade.svg b/src/static/icons/light/spade.svg similarity index 100% rename from client/src/static/icons/light/spade.svg rename to src/static/icons/light/spade.svg diff --git a/client/src/static/icons/light/sparkles.svg b/src/static/icons/light/sparkles.svg similarity index 100% rename from client/src/static/icons/light/sparkles.svg rename to src/static/icons/light/sparkles.svg diff --git a/client/src/static/icons/light/speaker.svg b/src/static/icons/light/speaker.svg similarity index 100% rename from client/src/static/icons/light/speaker.svg rename to src/static/icons/light/speaker.svg diff --git a/client/src/static/icons/light/speakers.svg b/src/static/icons/light/speakers.svg similarity index 100% rename from client/src/static/icons/light/speakers.svg rename to src/static/icons/light/speakers.svg diff --git a/client/src/static/icons/light/spell-check.svg b/src/static/icons/light/spell-check.svg similarity index 100% rename from client/src/static/icons/light/spell-check.svg rename to src/static/icons/light/spell-check.svg diff --git a/client/src/static/icons/light/spider-black-widow.svg b/src/static/icons/light/spider-black-widow.svg similarity index 100% rename from client/src/static/icons/light/spider-black-widow.svg rename to src/static/icons/light/spider-black-widow.svg diff --git a/client/src/static/icons/light/spider-web.svg b/src/static/icons/light/spider-web.svg similarity index 100% rename from client/src/static/icons/light/spider-web.svg rename to src/static/icons/light/spider-web.svg diff --git a/client/src/static/icons/light/spider.svg b/src/static/icons/light/spider.svg similarity index 100% rename from client/src/static/icons/light/spider.svg rename to src/static/icons/light/spider.svg diff --git a/client/src/static/icons/light/spinner-third.svg b/src/static/icons/light/spinner-third.svg similarity index 100% rename from client/src/static/icons/light/spinner-third.svg rename to src/static/icons/light/spinner-third.svg diff --git a/client/src/static/icons/light/spinner.svg b/src/static/icons/light/spinner.svg similarity index 100% rename from client/src/static/icons/light/spinner.svg rename to src/static/icons/light/spinner.svg diff --git a/client/src/static/icons/light/splotch.svg b/src/static/icons/light/splotch.svg similarity index 100% rename from client/src/static/icons/light/splotch.svg rename to src/static/icons/light/splotch.svg diff --git a/client/src/static/icons/light/spray-can.svg b/src/static/icons/light/spray-can.svg similarity index 100% rename from client/src/static/icons/light/spray-can.svg rename to src/static/icons/light/spray-can.svg diff --git a/client/src/static/icons/light/sprinkler.svg b/src/static/icons/light/sprinkler.svg similarity index 100% rename from client/src/static/icons/light/sprinkler.svg rename to src/static/icons/light/sprinkler.svg diff --git a/client/src/static/icons/light/square-full.svg b/src/static/icons/light/square-full.svg similarity index 100% rename from client/src/static/icons/light/square-full.svg rename to src/static/icons/light/square-full.svg diff --git a/client/src/static/icons/light/square-root-alt.svg b/src/static/icons/light/square-root-alt.svg similarity index 100% rename from client/src/static/icons/light/square-root-alt.svg rename to src/static/icons/light/square-root-alt.svg diff --git a/client/src/static/icons/light/square-root.svg b/src/static/icons/light/square-root.svg similarity index 100% rename from client/src/static/icons/light/square-root.svg rename to src/static/icons/light/square-root.svg diff --git a/client/src/static/icons/light/square.svg b/src/static/icons/light/square.svg similarity index 100% rename from client/src/static/icons/light/square.svg rename to src/static/icons/light/square.svg diff --git a/client/src/static/icons/light/squirrel.svg b/src/static/icons/light/squirrel.svg similarity index 100% rename from client/src/static/icons/light/squirrel.svg rename to src/static/icons/light/squirrel.svg diff --git a/client/src/static/icons/light/staff.svg b/src/static/icons/light/staff.svg similarity index 100% rename from client/src/static/icons/light/staff.svg rename to src/static/icons/light/staff.svg diff --git a/client/src/static/icons/light/stamp.svg b/src/static/icons/light/stamp.svg similarity index 100% rename from client/src/static/icons/light/stamp.svg rename to src/static/icons/light/stamp.svg diff --git a/client/src/static/icons/light/star-and-crescent.svg b/src/static/icons/light/star-and-crescent.svg similarity index 100% rename from client/src/static/icons/light/star-and-crescent.svg rename to src/static/icons/light/star-and-crescent.svg diff --git a/client/src/static/icons/light/star-christmas.svg b/src/static/icons/light/star-christmas.svg similarity index 100% rename from client/src/static/icons/light/star-christmas.svg rename to src/static/icons/light/star-christmas.svg diff --git a/client/src/static/icons/light/star-exclamation.svg b/src/static/icons/light/star-exclamation.svg similarity index 100% rename from client/src/static/icons/light/star-exclamation.svg rename to src/static/icons/light/star-exclamation.svg diff --git a/client/src/static/icons/light/star-half-alt.svg b/src/static/icons/light/star-half-alt.svg similarity index 100% rename from client/src/static/icons/light/star-half-alt.svg rename to src/static/icons/light/star-half-alt.svg diff --git a/client/src/static/icons/light/star-half.svg b/src/static/icons/light/star-half.svg similarity index 100% rename from client/src/static/icons/light/star-half.svg rename to src/static/icons/light/star-half.svg diff --git a/client/src/static/icons/light/star-of-david.svg b/src/static/icons/light/star-of-david.svg similarity index 100% rename from client/src/static/icons/light/star-of-david.svg rename to src/static/icons/light/star-of-david.svg diff --git a/client/src/static/icons/light/star-of-life.svg b/src/static/icons/light/star-of-life.svg similarity index 100% rename from client/src/static/icons/light/star-of-life.svg rename to src/static/icons/light/star-of-life.svg diff --git a/client/src/static/icons/light/star-shooting.svg b/src/static/icons/light/star-shooting.svg similarity index 100% rename from client/src/static/icons/light/star-shooting.svg rename to src/static/icons/light/star-shooting.svg diff --git a/client/src/static/icons/light/star.svg b/src/static/icons/light/star.svg similarity index 100% rename from client/src/static/icons/light/star.svg rename to src/static/icons/light/star.svg diff --git a/client/src/static/icons/light/starfighter-alt.svg b/src/static/icons/light/starfighter-alt.svg similarity index 100% rename from client/src/static/icons/light/starfighter-alt.svg rename to src/static/icons/light/starfighter-alt.svg diff --git a/client/src/static/icons/light/starfighter.svg b/src/static/icons/light/starfighter.svg similarity index 100% rename from client/src/static/icons/light/starfighter.svg rename to src/static/icons/light/starfighter.svg diff --git a/client/src/static/icons/light/stars.svg b/src/static/icons/light/stars.svg similarity index 100% rename from client/src/static/icons/light/stars.svg rename to src/static/icons/light/stars.svg diff --git a/client/src/static/icons/light/starship-freighter.svg b/src/static/icons/light/starship-freighter.svg similarity index 100% rename from client/src/static/icons/light/starship-freighter.svg rename to src/static/icons/light/starship-freighter.svg diff --git a/client/src/static/icons/light/starship.svg b/src/static/icons/light/starship.svg similarity index 100% rename from client/src/static/icons/light/starship.svg rename to src/static/icons/light/starship.svg diff --git a/client/src/static/icons/light/steak.svg b/src/static/icons/light/steak.svg similarity index 100% rename from client/src/static/icons/light/steak.svg rename to src/static/icons/light/steak.svg diff --git a/client/src/static/icons/light/steering-wheel.svg b/src/static/icons/light/steering-wheel.svg similarity index 100% rename from client/src/static/icons/light/steering-wheel.svg rename to src/static/icons/light/steering-wheel.svg diff --git a/client/src/static/icons/light/step-backward.svg b/src/static/icons/light/step-backward.svg similarity index 100% rename from client/src/static/icons/light/step-backward.svg rename to src/static/icons/light/step-backward.svg diff --git a/client/src/static/icons/light/step-forward.svg b/src/static/icons/light/step-forward.svg similarity index 100% rename from client/src/static/icons/light/step-forward.svg rename to src/static/icons/light/step-forward.svg diff --git a/client/src/static/icons/light/stethoscope.svg b/src/static/icons/light/stethoscope.svg similarity index 100% rename from client/src/static/icons/light/stethoscope.svg rename to src/static/icons/light/stethoscope.svg diff --git a/client/src/static/icons/light/sticky-note.svg b/src/static/icons/light/sticky-note.svg similarity index 100% rename from client/src/static/icons/light/sticky-note.svg rename to src/static/icons/light/sticky-note.svg diff --git a/client/src/static/icons/light/stocking.svg b/src/static/icons/light/stocking.svg similarity index 100% rename from client/src/static/icons/light/stocking.svg rename to src/static/icons/light/stocking.svg diff --git a/client/src/static/icons/light/stomach.svg b/src/static/icons/light/stomach.svg similarity index 100% rename from client/src/static/icons/light/stomach.svg rename to src/static/icons/light/stomach.svg diff --git a/client/src/static/icons/light/stop-circle.svg b/src/static/icons/light/stop-circle.svg similarity index 100% rename from client/src/static/icons/light/stop-circle.svg rename to src/static/icons/light/stop-circle.svg diff --git a/client/src/static/icons/light/stop.svg b/src/static/icons/light/stop.svg similarity index 100% rename from client/src/static/icons/light/stop.svg rename to src/static/icons/light/stop.svg diff --git a/client/src/static/icons/light/stopwatch.svg b/src/static/icons/light/stopwatch.svg similarity index 100% rename from client/src/static/icons/light/stopwatch.svg rename to src/static/icons/light/stopwatch.svg diff --git a/client/src/static/icons/light/store-alt.svg b/src/static/icons/light/store-alt.svg similarity index 100% rename from client/src/static/icons/light/store-alt.svg rename to src/static/icons/light/store-alt.svg diff --git a/client/src/static/icons/light/store.svg b/src/static/icons/light/store.svg similarity index 100% rename from client/src/static/icons/light/store.svg rename to src/static/icons/light/store.svg diff --git a/client/src/static/icons/light/stream.svg b/src/static/icons/light/stream.svg similarity index 100% rename from client/src/static/icons/light/stream.svg rename to src/static/icons/light/stream.svg diff --git a/client/src/static/icons/light/street-view.svg b/src/static/icons/light/street-view.svg similarity index 100% rename from client/src/static/icons/light/street-view.svg rename to src/static/icons/light/street-view.svg diff --git a/client/src/static/icons/light/stretcher.svg b/src/static/icons/light/stretcher.svg similarity index 100% rename from client/src/static/icons/light/stretcher.svg rename to src/static/icons/light/stretcher.svg diff --git a/client/src/static/icons/light/strikethrough.svg b/src/static/icons/light/strikethrough.svg similarity index 100% rename from client/src/static/icons/light/strikethrough.svg rename to src/static/icons/light/strikethrough.svg diff --git a/client/src/static/icons/light/stroopwafel.svg b/src/static/icons/light/stroopwafel.svg similarity index 100% rename from client/src/static/icons/light/stroopwafel.svg rename to src/static/icons/light/stroopwafel.svg diff --git a/client/src/static/icons/light/subscript.svg b/src/static/icons/light/subscript.svg similarity index 100% rename from client/src/static/icons/light/subscript.svg rename to src/static/icons/light/subscript.svg diff --git a/client/src/static/icons/light/subway.svg b/src/static/icons/light/subway.svg similarity index 100% rename from client/src/static/icons/light/subway.svg rename to src/static/icons/light/subway.svg diff --git a/client/src/static/icons/light/suitcase-rolling.svg b/src/static/icons/light/suitcase-rolling.svg similarity index 100% rename from client/src/static/icons/light/suitcase-rolling.svg rename to src/static/icons/light/suitcase-rolling.svg diff --git a/client/src/static/icons/light/suitcase.svg b/src/static/icons/light/suitcase.svg similarity index 100% rename from client/src/static/icons/light/suitcase.svg rename to src/static/icons/light/suitcase.svg diff --git a/client/src/static/icons/light/sun-cloud.svg b/src/static/icons/light/sun-cloud.svg similarity index 100% rename from client/src/static/icons/light/sun-cloud.svg rename to src/static/icons/light/sun-cloud.svg diff --git a/client/src/static/icons/light/sun-dust.svg b/src/static/icons/light/sun-dust.svg similarity index 100% rename from client/src/static/icons/light/sun-dust.svg rename to src/static/icons/light/sun-dust.svg diff --git a/client/src/static/icons/light/sun-haze.svg b/src/static/icons/light/sun-haze.svg similarity index 100% rename from client/src/static/icons/light/sun-haze.svg rename to src/static/icons/light/sun-haze.svg diff --git a/client/src/static/icons/light/sun.svg b/src/static/icons/light/sun.svg similarity index 100% rename from client/src/static/icons/light/sun.svg rename to src/static/icons/light/sun.svg diff --git a/client/src/static/icons/light/sunglasses.svg b/src/static/icons/light/sunglasses.svg similarity index 100% rename from client/src/static/icons/light/sunglasses.svg rename to src/static/icons/light/sunglasses.svg diff --git a/client/src/static/icons/light/sunrise.svg b/src/static/icons/light/sunrise.svg similarity index 100% rename from client/src/static/icons/light/sunrise.svg rename to src/static/icons/light/sunrise.svg diff --git a/client/src/static/icons/light/sunset.svg b/src/static/icons/light/sunset.svg similarity index 100% rename from client/src/static/icons/light/sunset.svg rename to src/static/icons/light/sunset.svg diff --git a/client/src/static/icons/light/superscript.svg b/src/static/icons/light/superscript.svg similarity index 100% rename from client/src/static/icons/light/superscript.svg rename to src/static/icons/light/superscript.svg diff --git a/client/src/static/icons/light/surprise.svg b/src/static/icons/light/surprise.svg similarity index 100% rename from client/src/static/icons/light/surprise.svg rename to src/static/icons/light/surprise.svg diff --git a/client/src/static/icons/light/swatchbook.svg b/src/static/icons/light/swatchbook.svg similarity index 100% rename from client/src/static/icons/light/swatchbook.svg rename to src/static/icons/light/swatchbook.svg diff --git a/client/src/static/icons/light/swimmer.svg b/src/static/icons/light/swimmer.svg similarity index 100% rename from client/src/static/icons/light/swimmer.svg rename to src/static/icons/light/swimmer.svg diff --git a/client/src/static/icons/light/swimming-pool.svg b/src/static/icons/light/swimming-pool.svg similarity index 100% rename from client/src/static/icons/light/swimming-pool.svg rename to src/static/icons/light/swimming-pool.svg diff --git a/client/src/static/icons/light/sword-laser-alt.svg b/src/static/icons/light/sword-laser-alt.svg similarity index 100% rename from client/src/static/icons/light/sword-laser-alt.svg rename to src/static/icons/light/sword-laser-alt.svg diff --git a/client/src/static/icons/light/sword-laser.svg b/src/static/icons/light/sword-laser.svg similarity index 100% rename from client/src/static/icons/light/sword-laser.svg rename to src/static/icons/light/sword-laser.svg diff --git a/client/src/static/icons/light/sword.svg b/src/static/icons/light/sword.svg similarity index 100% rename from client/src/static/icons/light/sword.svg rename to src/static/icons/light/sword.svg diff --git a/client/src/static/icons/light/swords-laser.svg b/src/static/icons/light/swords-laser.svg similarity index 100% rename from client/src/static/icons/light/swords-laser.svg rename to src/static/icons/light/swords-laser.svg diff --git a/client/src/static/icons/light/swords.svg b/src/static/icons/light/swords.svg similarity index 100% rename from client/src/static/icons/light/swords.svg rename to src/static/icons/light/swords.svg diff --git a/client/src/static/icons/light/synagogue.svg b/src/static/icons/light/synagogue.svg similarity index 100% rename from client/src/static/icons/light/synagogue.svg rename to src/static/icons/light/synagogue.svg diff --git a/client/src/static/icons/light/sync-alt.svg b/src/static/icons/light/sync-alt.svg similarity index 100% rename from client/src/static/icons/light/sync-alt.svg rename to src/static/icons/light/sync-alt.svg diff --git a/client/src/static/icons/light/sync.svg b/src/static/icons/light/sync.svg similarity index 100% rename from client/src/static/icons/light/sync.svg rename to src/static/icons/light/sync.svg diff --git a/client/src/static/icons/light/syringe.svg b/src/static/icons/light/syringe.svg similarity index 100% rename from client/src/static/icons/light/syringe.svg rename to src/static/icons/light/syringe.svg diff --git a/client/src/static/icons/light/table-tennis.svg b/src/static/icons/light/table-tennis.svg similarity index 100% rename from client/src/static/icons/light/table-tennis.svg rename to src/static/icons/light/table-tennis.svg diff --git a/client/src/static/icons/light/table.svg b/src/static/icons/light/table.svg similarity index 100% rename from client/src/static/icons/light/table.svg rename to src/static/icons/light/table.svg diff --git a/client/src/static/icons/light/tablet-alt.svg b/src/static/icons/light/tablet-alt.svg similarity index 100% rename from client/src/static/icons/light/tablet-alt.svg rename to src/static/icons/light/tablet-alt.svg diff --git a/client/src/static/icons/light/tablet-android-alt.svg b/src/static/icons/light/tablet-android-alt.svg similarity index 100% rename from client/src/static/icons/light/tablet-android-alt.svg rename to src/static/icons/light/tablet-android-alt.svg diff --git a/client/src/static/icons/light/tablet-android.svg b/src/static/icons/light/tablet-android.svg similarity index 100% rename from client/src/static/icons/light/tablet-android.svg rename to src/static/icons/light/tablet-android.svg diff --git a/client/src/static/icons/light/tablet-rugged.svg b/src/static/icons/light/tablet-rugged.svg similarity index 100% rename from client/src/static/icons/light/tablet-rugged.svg rename to src/static/icons/light/tablet-rugged.svg diff --git a/client/src/static/icons/light/tablet.svg b/src/static/icons/light/tablet.svg similarity index 100% rename from client/src/static/icons/light/tablet.svg rename to src/static/icons/light/tablet.svg diff --git a/client/src/static/icons/light/tablets.svg b/src/static/icons/light/tablets.svg similarity index 100% rename from client/src/static/icons/light/tablets.svg rename to src/static/icons/light/tablets.svg diff --git a/client/src/static/icons/light/tachometer-alt-average.svg b/src/static/icons/light/tachometer-alt-average.svg similarity index 100% rename from client/src/static/icons/light/tachometer-alt-average.svg rename to src/static/icons/light/tachometer-alt-average.svg diff --git a/client/src/static/icons/light/tachometer-alt-fast.svg b/src/static/icons/light/tachometer-alt-fast.svg similarity index 100% rename from client/src/static/icons/light/tachometer-alt-fast.svg rename to src/static/icons/light/tachometer-alt-fast.svg diff --git a/client/src/static/icons/light/tachometer-alt-fastest.svg b/src/static/icons/light/tachometer-alt-fastest.svg similarity index 100% rename from client/src/static/icons/light/tachometer-alt-fastest.svg rename to src/static/icons/light/tachometer-alt-fastest.svg diff --git a/client/src/static/icons/light/tachometer-alt-slow.svg b/src/static/icons/light/tachometer-alt-slow.svg similarity index 100% rename from client/src/static/icons/light/tachometer-alt-slow.svg rename to src/static/icons/light/tachometer-alt-slow.svg diff --git a/client/src/static/icons/light/tachometer-alt-slowest.svg b/src/static/icons/light/tachometer-alt-slowest.svg similarity index 100% rename from client/src/static/icons/light/tachometer-alt-slowest.svg rename to src/static/icons/light/tachometer-alt-slowest.svg diff --git a/client/src/static/icons/light/tachometer-alt.svg b/src/static/icons/light/tachometer-alt.svg similarity index 100% rename from client/src/static/icons/light/tachometer-alt.svg rename to src/static/icons/light/tachometer-alt.svg diff --git a/client/src/static/icons/light/tachometer-average.svg b/src/static/icons/light/tachometer-average.svg similarity index 100% rename from client/src/static/icons/light/tachometer-average.svg rename to src/static/icons/light/tachometer-average.svg diff --git a/client/src/static/icons/light/tachometer-fast.svg b/src/static/icons/light/tachometer-fast.svg similarity index 100% rename from client/src/static/icons/light/tachometer-fast.svg rename to src/static/icons/light/tachometer-fast.svg diff --git a/client/src/static/icons/light/tachometer-fastest.svg b/src/static/icons/light/tachometer-fastest.svg similarity index 100% rename from client/src/static/icons/light/tachometer-fastest.svg rename to src/static/icons/light/tachometer-fastest.svg diff --git a/client/src/static/icons/light/tachometer-slow.svg b/src/static/icons/light/tachometer-slow.svg similarity index 100% rename from client/src/static/icons/light/tachometer-slow.svg rename to src/static/icons/light/tachometer-slow.svg diff --git a/client/src/static/icons/light/tachometer-slowest.svg b/src/static/icons/light/tachometer-slowest.svg similarity index 100% rename from client/src/static/icons/light/tachometer-slowest.svg rename to src/static/icons/light/tachometer-slowest.svg diff --git a/client/src/static/icons/light/tachometer.svg b/src/static/icons/light/tachometer.svg similarity index 100% rename from client/src/static/icons/light/tachometer.svg rename to src/static/icons/light/tachometer.svg diff --git a/client/src/static/icons/light/taco.svg b/src/static/icons/light/taco.svg similarity index 100% rename from client/src/static/icons/light/taco.svg rename to src/static/icons/light/taco.svg diff --git a/client/src/static/icons/light/tag.svg b/src/static/icons/light/tag.svg similarity index 100% rename from client/src/static/icons/light/tag.svg rename to src/static/icons/light/tag.svg diff --git a/client/src/static/icons/light/tags.svg b/src/static/icons/light/tags.svg similarity index 100% rename from client/src/static/icons/light/tags.svg rename to src/static/icons/light/tags.svg diff --git a/client/src/static/icons/light/tally.svg b/src/static/icons/light/tally.svg similarity index 100% rename from client/src/static/icons/light/tally.svg rename to src/static/icons/light/tally.svg diff --git a/client/src/static/icons/light/tanakh.svg b/src/static/icons/light/tanakh.svg similarity index 100% rename from client/src/static/icons/light/tanakh.svg rename to src/static/icons/light/tanakh.svg diff --git a/client/src/static/icons/light/tape.svg b/src/static/icons/light/tape.svg similarity index 100% rename from client/src/static/icons/light/tape.svg rename to src/static/icons/light/tape.svg diff --git a/client/src/static/icons/light/tasks-alt.svg b/src/static/icons/light/tasks-alt.svg similarity index 100% rename from client/src/static/icons/light/tasks-alt.svg rename to src/static/icons/light/tasks-alt.svg diff --git a/client/src/static/icons/light/tasks.svg b/src/static/icons/light/tasks.svg similarity index 100% rename from client/src/static/icons/light/tasks.svg rename to src/static/icons/light/tasks.svg diff --git a/client/src/static/icons/light/taxi.svg b/src/static/icons/light/taxi.svg similarity index 100% rename from client/src/static/icons/light/taxi.svg rename to src/static/icons/light/taxi.svg diff --git a/client/src/static/icons/light/teeth-open.svg b/src/static/icons/light/teeth-open.svg similarity index 100% rename from client/src/static/icons/light/teeth-open.svg rename to src/static/icons/light/teeth-open.svg diff --git a/client/src/static/icons/light/teeth.svg b/src/static/icons/light/teeth.svg similarity index 100% rename from client/src/static/icons/light/teeth.svg rename to src/static/icons/light/teeth.svg diff --git a/client/src/static/icons/light/telescope.svg b/src/static/icons/light/telescope.svg similarity index 100% rename from client/src/static/icons/light/telescope.svg rename to src/static/icons/light/telescope.svg diff --git a/client/src/static/icons/light/temperature-down.svg b/src/static/icons/light/temperature-down.svg similarity index 100% rename from client/src/static/icons/light/temperature-down.svg rename to src/static/icons/light/temperature-down.svg diff --git a/client/src/static/icons/light/temperature-frigid.svg b/src/static/icons/light/temperature-frigid.svg similarity index 100% rename from client/src/static/icons/light/temperature-frigid.svg rename to src/static/icons/light/temperature-frigid.svg diff --git a/client/src/static/icons/light/temperature-high.svg b/src/static/icons/light/temperature-high.svg similarity index 100% rename from client/src/static/icons/light/temperature-high.svg rename to src/static/icons/light/temperature-high.svg diff --git a/client/src/static/icons/light/temperature-hot.svg b/src/static/icons/light/temperature-hot.svg similarity index 100% rename from client/src/static/icons/light/temperature-hot.svg rename to src/static/icons/light/temperature-hot.svg diff --git a/client/src/static/icons/light/temperature-low.svg b/src/static/icons/light/temperature-low.svg similarity index 100% rename from client/src/static/icons/light/temperature-low.svg rename to src/static/icons/light/temperature-low.svg diff --git a/client/src/static/icons/light/temperature-up.svg b/src/static/icons/light/temperature-up.svg similarity index 100% rename from client/src/static/icons/light/temperature-up.svg rename to src/static/icons/light/temperature-up.svg diff --git a/client/src/static/icons/light/tenge.svg b/src/static/icons/light/tenge.svg similarity index 100% rename from client/src/static/icons/light/tenge.svg rename to src/static/icons/light/tenge.svg diff --git a/client/src/static/icons/light/tennis-ball.svg b/src/static/icons/light/tennis-ball.svg similarity index 100% rename from client/src/static/icons/light/tennis-ball.svg rename to src/static/icons/light/tennis-ball.svg diff --git a/client/src/static/icons/light/terminal.svg b/src/static/icons/light/terminal.svg similarity index 100% rename from client/src/static/icons/light/terminal.svg rename to src/static/icons/light/terminal.svg diff --git a/client/src/static/icons/light/text-height.svg b/src/static/icons/light/text-height.svg similarity index 100% rename from client/src/static/icons/light/text-height.svg rename to src/static/icons/light/text-height.svg diff --git a/client/src/static/icons/light/text-size.svg b/src/static/icons/light/text-size.svg similarity index 100% rename from client/src/static/icons/light/text-size.svg rename to src/static/icons/light/text-size.svg diff --git a/client/src/static/icons/light/text-width.svg b/src/static/icons/light/text-width.svg similarity index 100% rename from client/src/static/icons/light/text-width.svg rename to src/static/icons/light/text-width.svg diff --git a/client/src/static/icons/light/text.svg b/src/static/icons/light/text.svg similarity index 100% rename from client/src/static/icons/light/text.svg rename to src/static/icons/light/text.svg diff --git a/client/src/static/icons/light/th-large.svg b/src/static/icons/light/th-large.svg similarity index 100% rename from client/src/static/icons/light/th-large.svg rename to src/static/icons/light/th-large.svg diff --git a/client/src/static/icons/light/th-list.svg b/src/static/icons/light/th-list.svg similarity index 100% rename from client/src/static/icons/light/th-list.svg rename to src/static/icons/light/th-list.svg diff --git a/client/src/static/icons/light/th.svg b/src/static/icons/light/th.svg similarity index 100% rename from client/src/static/icons/light/th.svg rename to src/static/icons/light/th.svg diff --git a/client/src/static/icons/light/theater-masks.svg b/src/static/icons/light/theater-masks.svg similarity index 100% rename from client/src/static/icons/light/theater-masks.svg rename to src/static/icons/light/theater-masks.svg diff --git a/client/src/static/icons/light/thermometer-empty.svg b/src/static/icons/light/thermometer-empty.svg similarity index 100% rename from client/src/static/icons/light/thermometer-empty.svg rename to src/static/icons/light/thermometer-empty.svg diff --git a/client/src/static/icons/light/thermometer-full.svg b/src/static/icons/light/thermometer-full.svg similarity index 100% rename from client/src/static/icons/light/thermometer-full.svg rename to src/static/icons/light/thermometer-full.svg diff --git a/client/src/static/icons/light/thermometer-half.svg b/src/static/icons/light/thermometer-half.svg similarity index 100% rename from client/src/static/icons/light/thermometer-half.svg rename to src/static/icons/light/thermometer-half.svg diff --git a/client/src/static/icons/light/thermometer-quarter.svg b/src/static/icons/light/thermometer-quarter.svg similarity index 100% rename from client/src/static/icons/light/thermometer-quarter.svg rename to src/static/icons/light/thermometer-quarter.svg diff --git a/client/src/static/icons/light/thermometer-three-quarters.svg b/src/static/icons/light/thermometer-three-quarters.svg similarity index 100% rename from client/src/static/icons/light/thermometer-three-quarters.svg rename to src/static/icons/light/thermometer-three-quarters.svg diff --git a/client/src/static/icons/light/thermometer.svg b/src/static/icons/light/thermometer.svg similarity index 100% rename from client/src/static/icons/light/thermometer.svg rename to src/static/icons/light/thermometer.svg diff --git a/client/src/static/icons/light/theta.svg b/src/static/icons/light/theta.svg similarity index 100% rename from client/src/static/icons/light/theta.svg rename to src/static/icons/light/theta.svg diff --git a/client/src/static/icons/light/thumbs-down.svg b/src/static/icons/light/thumbs-down.svg similarity index 100% rename from client/src/static/icons/light/thumbs-down.svg rename to src/static/icons/light/thumbs-down.svg diff --git a/client/src/static/icons/light/thumbs-up.svg b/src/static/icons/light/thumbs-up.svg similarity index 100% rename from client/src/static/icons/light/thumbs-up.svg rename to src/static/icons/light/thumbs-up.svg diff --git a/client/src/static/icons/light/thumbtack.svg b/src/static/icons/light/thumbtack.svg similarity index 100% rename from client/src/static/icons/light/thumbtack.svg rename to src/static/icons/light/thumbtack.svg diff --git a/client/src/static/icons/light/thunderstorm-moon.svg b/src/static/icons/light/thunderstorm-moon.svg similarity index 100% rename from client/src/static/icons/light/thunderstorm-moon.svg rename to src/static/icons/light/thunderstorm-moon.svg diff --git a/client/src/static/icons/light/thunderstorm-sun.svg b/src/static/icons/light/thunderstorm-sun.svg similarity index 100% rename from client/src/static/icons/light/thunderstorm-sun.svg rename to src/static/icons/light/thunderstorm-sun.svg diff --git a/client/src/static/icons/light/thunderstorm.svg b/src/static/icons/light/thunderstorm.svg similarity index 100% rename from client/src/static/icons/light/thunderstorm.svg rename to src/static/icons/light/thunderstorm.svg diff --git a/client/src/static/icons/light/ticket-alt.svg b/src/static/icons/light/ticket-alt.svg similarity index 100% rename from client/src/static/icons/light/ticket-alt.svg rename to src/static/icons/light/ticket-alt.svg diff --git a/client/src/static/icons/light/ticket.svg b/src/static/icons/light/ticket.svg similarity index 100% rename from client/src/static/icons/light/ticket.svg rename to src/static/icons/light/ticket.svg diff --git a/client/src/static/icons/light/tilde.svg b/src/static/icons/light/tilde.svg similarity index 100% rename from client/src/static/icons/light/tilde.svg rename to src/static/icons/light/tilde.svg diff --git a/client/src/static/icons/light/times-circle.svg b/src/static/icons/light/times-circle.svg similarity index 100% rename from client/src/static/icons/light/times-circle.svg rename to src/static/icons/light/times-circle.svg diff --git a/client/src/static/icons/light/times-hexagon.svg b/src/static/icons/light/times-hexagon.svg similarity index 100% rename from client/src/static/icons/light/times-hexagon.svg rename to src/static/icons/light/times-hexagon.svg diff --git a/client/src/static/icons/light/times-octagon.svg b/src/static/icons/light/times-octagon.svg similarity index 100% rename from client/src/static/icons/light/times-octagon.svg rename to src/static/icons/light/times-octagon.svg diff --git a/client/src/static/icons/light/times-square.svg b/src/static/icons/light/times-square.svg similarity index 100% rename from client/src/static/icons/light/times-square.svg rename to src/static/icons/light/times-square.svg diff --git a/client/src/static/icons/light/times.svg b/src/static/icons/light/times.svg similarity index 100% rename from client/src/static/icons/light/times.svg rename to src/static/icons/light/times.svg diff --git a/client/src/static/icons/light/tint-slash.svg b/src/static/icons/light/tint-slash.svg similarity index 100% rename from client/src/static/icons/light/tint-slash.svg rename to src/static/icons/light/tint-slash.svg diff --git a/client/src/static/icons/light/tint.svg b/src/static/icons/light/tint.svg similarity index 100% rename from client/src/static/icons/light/tint.svg rename to src/static/icons/light/tint.svg diff --git a/client/src/static/icons/light/tire-flat.svg b/src/static/icons/light/tire-flat.svg similarity index 100% rename from client/src/static/icons/light/tire-flat.svg rename to src/static/icons/light/tire-flat.svg diff --git a/client/src/static/icons/light/tire-pressure-warning.svg b/src/static/icons/light/tire-pressure-warning.svg similarity index 100% rename from client/src/static/icons/light/tire-pressure-warning.svg rename to src/static/icons/light/tire-pressure-warning.svg diff --git a/client/src/static/icons/light/tire-rugged.svg b/src/static/icons/light/tire-rugged.svg similarity index 100% rename from client/src/static/icons/light/tire-rugged.svg rename to src/static/icons/light/tire-rugged.svg diff --git a/client/src/static/icons/light/tire.svg b/src/static/icons/light/tire.svg similarity index 100% rename from client/src/static/icons/light/tire.svg rename to src/static/icons/light/tire.svg diff --git a/client/src/static/icons/light/tired.svg b/src/static/icons/light/tired.svg similarity index 100% rename from client/src/static/icons/light/tired.svg rename to src/static/icons/light/tired.svg diff --git a/client/src/static/icons/light/toggle-off.svg b/src/static/icons/light/toggle-off.svg similarity index 100% rename from client/src/static/icons/light/toggle-off.svg rename to src/static/icons/light/toggle-off.svg diff --git a/client/src/static/icons/light/toggle-on.svg b/src/static/icons/light/toggle-on.svg similarity index 100% rename from client/src/static/icons/light/toggle-on.svg rename to src/static/icons/light/toggle-on.svg diff --git a/client/src/static/icons/light/toilet-paper-alt.svg b/src/static/icons/light/toilet-paper-alt.svg similarity index 100% rename from client/src/static/icons/light/toilet-paper-alt.svg rename to src/static/icons/light/toilet-paper-alt.svg diff --git a/client/src/static/icons/light/toilet-paper.svg b/src/static/icons/light/toilet-paper.svg similarity index 100% rename from client/src/static/icons/light/toilet-paper.svg rename to src/static/icons/light/toilet-paper.svg diff --git a/client/src/static/icons/light/toilet.svg b/src/static/icons/light/toilet.svg similarity index 100% rename from client/src/static/icons/light/toilet.svg rename to src/static/icons/light/toilet.svg diff --git a/client/src/static/icons/light/tombstone-alt.svg b/src/static/icons/light/tombstone-alt.svg similarity index 100% rename from client/src/static/icons/light/tombstone-alt.svg rename to src/static/icons/light/tombstone-alt.svg diff --git a/client/src/static/icons/light/tombstone.svg b/src/static/icons/light/tombstone.svg similarity index 100% rename from client/src/static/icons/light/tombstone.svg rename to src/static/icons/light/tombstone.svg diff --git a/client/src/static/icons/light/toolbox.svg b/src/static/icons/light/toolbox.svg similarity index 100% rename from client/src/static/icons/light/toolbox.svg rename to src/static/icons/light/toolbox.svg diff --git a/client/src/static/icons/light/tools.svg b/src/static/icons/light/tools.svg similarity index 100% rename from client/src/static/icons/light/tools.svg rename to src/static/icons/light/tools.svg diff --git a/client/src/static/icons/light/tooth.svg b/src/static/icons/light/tooth.svg similarity index 100% rename from client/src/static/icons/light/tooth.svg rename to src/static/icons/light/tooth.svg diff --git a/client/src/static/icons/light/toothbrush.svg b/src/static/icons/light/toothbrush.svg similarity index 100% rename from client/src/static/icons/light/toothbrush.svg rename to src/static/icons/light/toothbrush.svg diff --git a/client/src/static/icons/light/torah.svg b/src/static/icons/light/torah.svg similarity index 100% rename from client/src/static/icons/light/torah.svg rename to src/static/icons/light/torah.svg diff --git a/client/src/static/icons/light/torii-gate.svg b/src/static/icons/light/torii-gate.svg similarity index 100% rename from client/src/static/icons/light/torii-gate.svg rename to src/static/icons/light/torii-gate.svg diff --git a/client/src/static/icons/light/tornado.svg b/src/static/icons/light/tornado.svg similarity index 100% rename from client/src/static/icons/light/tornado.svg rename to src/static/icons/light/tornado.svg diff --git a/client/src/static/icons/light/tractor.svg b/src/static/icons/light/tractor.svg similarity index 100% rename from client/src/static/icons/light/tractor.svg rename to src/static/icons/light/tractor.svg diff --git a/client/src/static/icons/light/trademark.svg b/src/static/icons/light/trademark.svg similarity index 100% rename from client/src/static/icons/light/trademark.svg rename to src/static/icons/light/trademark.svg diff --git a/client/src/static/icons/light/traffic-cone.svg b/src/static/icons/light/traffic-cone.svg similarity index 100% rename from client/src/static/icons/light/traffic-cone.svg rename to src/static/icons/light/traffic-cone.svg diff --git a/client/src/static/icons/light/traffic-light-go.svg b/src/static/icons/light/traffic-light-go.svg similarity index 100% rename from client/src/static/icons/light/traffic-light-go.svg rename to src/static/icons/light/traffic-light-go.svg diff --git a/client/src/static/icons/light/traffic-light-slow.svg b/src/static/icons/light/traffic-light-slow.svg similarity index 100% rename from client/src/static/icons/light/traffic-light-slow.svg rename to src/static/icons/light/traffic-light-slow.svg diff --git a/client/src/static/icons/light/traffic-light-stop.svg b/src/static/icons/light/traffic-light-stop.svg similarity index 100% rename from client/src/static/icons/light/traffic-light-stop.svg rename to src/static/icons/light/traffic-light-stop.svg diff --git a/client/src/static/icons/light/traffic-light.svg b/src/static/icons/light/traffic-light.svg similarity index 100% rename from client/src/static/icons/light/traffic-light.svg rename to src/static/icons/light/traffic-light.svg diff --git a/client/src/static/icons/light/trailer.svg b/src/static/icons/light/trailer.svg similarity index 100% rename from client/src/static/icons/light/trailer.svg rename to src/static/icons/light/trailer.svg diff --git a/client/src/static/icons/light/train.svg b/src/static/icons/light/train.svg similarity index 100% rename from client/src/static/icons/light/train.svg rename to src/static/icons/light/train.svg diff --git a/client/src/static/icons/light/tram.svg b/src/static/icons/light/tram.svg similarity index 100% rename from client/src/static/icons/light/tram.svg rename to src/static/icons/light/tram.svg diff --git a/client/src/static/icons/light/transgender-alt.svg b/src/static/icons/light/transgender-alt.svg similarity index 100% rename from client/src/static/icons/light/transgender-alt.svg rename to src/static/icons/light/transgender-alt.svg diff --git a/client/src/static/icons/light/transgender.svg b/src/static/icons/light/transgender.svg similarity index 100% rename from client/src/static/icons/light/transgender.svg rename to src/static/icons/light/transgender.svg diff --git a/client/src/static/icons/light/transporter-1.svg b/src/static/icons/light/transporter-1.svg similarity index 100% rename from client/src/static/icons/light/transporter-1.svg rename to src/static/icons/light/transporter-1.svg diff --git a/client/src/static/icons/light/transporter-2.svg b/src/static/icons/light/transporter-2.svg similarity index 100% rename from client/src/static/icons/light/transporter-2.svg rename to src/static/icons/light/transporter-2.svg diff --git a/client/src/static/icons/light/transporter-3.svg b/src/static/icons/light/transporter-3.svg similarity index 100% rename from client/src/static/icons/light/transporter-3.svg rename to src/static/icons/light/transporter-3.svg diff --git a/client/src/static/icons/light/transporter-empty.svg b/src/static/icons/light/transporter-empty.svg similarity index 100% rename from client/src/static/icons/light/transporter-empty.svg rename to src/static/icons/light/transporter-empty.svg diff --git a/client/src/static/icons/light/transporter.svg b/src/static/icons/light/transporter.svg similarity index 100% rename from client/src/static/icons/light/transporter.svg rename to src/static/icons/light/transporter.svg diff --git a/client/src/static/icons/light/trash-alt.svg b/src/static/icons/light/trash-alt.svg similarity index 100% rename from client/src/static/icons/light/trash-alt.svg rename to src/static/icons/light/trash-alt.svg diff --git a/client/src/static/icons/light/trash-restore-alt.svg b/src/static/icons/light/trash-restore-alt.svg similarity index 100% rename from client/src/static/icons/light/trash-restore-alt.svg rename to src/static/icons/light/trash-restore-alt.svg diff --git a/client/src/static/icons/light/trash-restore.svg b/src/static/icons/light/trash-restore.svg similarity index 100% rename from client/src/static/icons/light/trash-restore.svg rename to src/static/icons/light/trash-restore.svg diff --git a/client/src/static/icons/light/trash-undo-alt.svg b/src/static/icons/light/trash-undo-alt.svg similarity index 100% rename from client/src/static/icons/light/trash-undo-alt.svg rename to src/static/icons/light/trash-undo-alt.svg diff --git a/client/src/static/icons/light/trash-undo.svg b/src/static/icons/light/trash-undo.svg similarity index 100% rename from client/src/static/icons/light/trash-undo.svg rename to src/static/icons/light/trash-undo.svg diff --git a/client/src/static/icons/light/trash.svg b/src/static/icons/light/trash.svg similarity index 100% rename from client/src/static/icons/light/trash.svg rename to src/static/icons/light/trash.svg diff --git a/client/src/static/icons/light/treasure-chest.svg b/src/static/icons/light/treasure-chest.svg similarity index 100% rename from client/src/static/icons/light/treasure-chest.svg rename to src/static/icons/light/treasure-chest.svg diff --git a/client/src/static/icons/light/tree-alt.svg b/src/static/icons/light/tree-alt.svg similarity index 100% rename from client/src/static/icons/light/tree-alt.svg rename to src/static/icons/light/tree-alt.svg diff --git a/client/src/static/icons/light/tree-christmas.svg b/src/static/icons/light/tree-christmas.svg similarity index 100% rename from client/src/static/icons/light/tree-christmas.svg rename to src/static/icons/light/tree-christmas.svg diff --git a/client/src/static/icons/light/tree-decorated.svg b/src/static/icons/light/tree-decorated.svg similarity index 100% rename from client/src/static/icons/light/tree-decorated.svg rename to src/static/icons/light/tree-decorated.svg diff --git a/client/src/static/icons/light/tree-large.svg b/src/static/icons/light/tree-large.svg similarity index 100% rename from client/src/static/icons/light/tree-large.svg rename to src/static/icons/light/tree-large.svg diff --git a/client/src/static/icons/light/tree-palm.svg b/src/static/icons/light/tree-palm.svg similarity index 100% rename from client/src/static/icons/light/tree-palm.svg rename to src/static/icons/light/tree-palm.svg diff --git a/client/src/static/icons/light/tree.svg b/src/static/icons/light/tree.svg similarity index 100% rename from client/src/static/icons/light/tree.svg rename to src/static/icons/light/tree.svg diff --git a/client/src/static/icons/light/trees.svg b/src/static/icons/light/trees.svg similarity index 100% rename from client/src/static/icons/light/trees.svg rename to src/static/icons/light/trees.svg diff --git a/client/src/static/icons/light/triangle-music.svg b/src/static/icons/light/triangle-music.svg similarity index 100% rename from client/src/static/icons/light/triangle-music.svg rename to src/static/icons/light/triangle-music.svg diff --git a/client/src/static/icons/light/triangle.svg b/src/static/icons/light/triangle.svg similarity index 100% rename from client/src/static/icons/light/triangle.svg rename to src/static/icons/light/triangle.svg diff --git a/client/src/static/icons/light/trophy-alt.svg b/src/static/icons/light/trophy-alt.svg similarity index 100% rename from client/src/static/icons/light/trophy-alt.svg rename to src/static/icons/light/trophy-alt.svg diff --git a/client/src/static/icons/light/trophy.svg b/src/static/icons/light/trophy.svg similarity index 100% rename from client/src/static/icons/light/trophy.svg rename to src/static/icons/light/trophy.svg diff --git a/client/src/static/icons/light/truck-container.svg b/src/static/icons/light/truck-container.svg similarity index 100% rename from client/src/static/icons/light/truck-container.svg rename to src/static/icons/light/truck-container.svg diff --git a/client/src/static/icons/light/truck-couch.svg b/src/static/icons/light/truck-couch.svg similarity index 100% rename from client/src/static/icons/light/truck-couch.svg rename to src/static/icons/light/truck-couch.svg diff --git a/client/src/static/icons/light/truck-loading.svg b/src/static/icons/light/truck-loading.svg similarity index 100% rename from client/src/static/icons/light/truck-loading.svg rename to src/static/icons/light/truck-loading.svg diff --git a/client/src/static/icons/light/truck-monster.svg b/src/static/icons/light/truck-monster.svg similarity index 100% rename from client/src/static/icons/light/truck-monster.svg rename to src/static/icons/light/truck-monster.svg diff --git a/client/src/static/icons/light/truck-moving.svg b/src/static/icons/light/truck-moving.svg similarity index 100% rename from client/src/static/icons/light/truck-moving.svg rename to src/static/icons/light/truck-moving.svg diff --git a/client/src/static/icons/light/truck-pickup.svg b/src/static/icons/light/truck-pickup.svg similarity index 100% rename from client/src/static/icons/light/truck-pickup.svg rename to src/static/icons/light/truck-pickup.svg diff --git a/client/src/static/icons/light/truck-plow.svg b/src/static/icons/light/truck-plow.svg similarity index 100% rename from client/src/static/icons/light/truck-plow.svg rename to src/static/icons/light/truck-plow.svg diff --git a/client/src/static/icons/light/truck-ramp.svg b/src/static/icons/light/truck-ramp.svg similarity index 100% rename from client/src/static/icons/light/truck-ramp.svg rename to src/static/icons/light/truck-ramp.svg diff --git a/client/src/static/icons/light/truck.svg b/src/static/icons/light/truck.svg similarity index 100% rename from client/src/static/icons/light/truck.svg rename to src/static/icons/light/truck.svg diff --git a/client/src/static/icons/light/trumpet.svg b/src/static/icons/light/trumpet.svg similarity index 100% rename from client/src/static/icons/light/trumpet.svg rename to src/static/icons/light/trumpet.svg diff --git a/client/src/static/icons/light/tshirt.svg b/src/static/icons/light/tshirt.svg similarity index 100% rename from client/src/static/icons/light/tshirt.svg rename to src/static/icons/light/tshirt.svg diff --git a/client/src/static/icons/light/tty.svg b/src/static/icons/light/tty.svg similarity index 100% rename from client/src/static/icons/light/tty.svg rename to src/static/icons/light/tty.svg diff --git a/client/src/static/icons/light/turkey.svg b/src/static/icons/light/turkey.svg similarity index 100% rename from client/src/static/icons/light/turkey.svg rename to src/static/icons/light/turkey.svg diff --git a/client/src/static/icons/light/turntable.svg b/src/static/icons/light/turntable.svg similarity index 100% rename from client/src/static/icons/light/turntable.svg rename to src/static/icons/light/turntable.svg diff --git a/client/src/static/icons/light/turtle.svg b/src/static/icons/light/turtle.svg similarity index 100% rename from client/src/static/icons/light/turtle.svg rename to src/static/icons/light/turtle.svg diff --git a/client/src/static/icons/light/tv-alt.svg b/src/static/icons/light/tv-alt.svg similarity index 100% rename from client/src/static/icons/light/tv-alt.svg rename to src/static/icons/light/tv-alt.svg diff --git a/client/src/static/icons/light/tv-music.svg b/src/static/icons/light/tv-music.svg similarity index 100% rename from client/src/static/icons/light/tv-music.svg rename to src/static/icons/light/tv-music.svg diff --git a/client/src/static/icons/light/tv-retro.svg b/src/static/icons/light/tv-retro.svg similarity index 100% rename from client/src/static/icons/light/tv-retro.svg rename to src/static/icons/light/tv-retro.svg diff --git a/client/src/static/icons/light/tv.svg b/src/static/icons/light/tv.svg similarity index 100% rename from client/src/static/icons/light/tv.svg rename to src/static/icons/light/tv.svg diff --git a/client/src/static/icons/light/typewriter.svg b/src/static/icons/light/typewriter.svg similarity index 100% rename from client/src/static/icons/light/typewriter.svg rename to src/static/icons/light/typewriter.svg diff --git a/client/src/static/icons/light/ufo-beam.svg b/src/static/icons/light/ufo-beam.svg similarity index 100% rename from client/src/static/icons/light/ufo-beam.svg rename to src/static/icons/light/ufo-beam.svg diff --git a/client/src/static/icons/light/ufo.svg b/src/static/icons/light/ufo.svg similarity index 100% rename from client/src/static/icons/light/ufo.svg rename to src/static/icons/light/ufo.svg diff --git a/client/src/static/icons/light/umbrella-beach.svg b/src/static/icons/light/umbrella-beach.svg similarity index 100% rename from client/src/static/icons/light/umbrella-beach.svg rename to src/static/icons/light/umbrella-beach.svg diff --git a/client/src/static/icons/light/umbrella.svg b/src/static/icons/light/umbrella.svg similarity index 100% rename from client/src/static/icons/light/umbrella.svg rename to src/static/icons/light/umbrella.svg diff --git a/client/src/static/icons/light/underline.svg b/src/static/icons/light/underline.svg similarity index 100% rename from client/src/static/icons/light/underline.svg rename to src/static/icons/light/underline.svg diff --git a/client/src/static/icons/light/undo-alt.svg b/src/static/icons/light/undo-alt.svg similarity index 100% rename from client/src/static/icons/light/undo-alt.svg rename to src/static/icons/light/undo-alt.svg diff --git a/client/src/static/icons/light/undo.svg b/src/static/icons/light/undo.svg similarity index 100% rename from client/src/static/icons/light/undo.svg rename to src/static/icons/light/undo.svg diff --git a/client/src/static/icons/light/unicorn.svg b/src/static/icons/light/unicorn.svg similarity index 100% rename from client/src/static/icons/light/unicorn.svg rename to src/static/icons/light/unicorn.svg diff --git a/client/src/static/icons/light/union.svg b/src/static/icons/light/union.svg similarity index 100% rename from client/src/static/icons/light/union.svg rename to src/static/icons/light/union.svg diff --git a/client/src/static/icons/light/universal-access.svg b/src/static/icons/light/universal-access.svg similarity index 100% rename from client/src/static/icons/light/universal-access.svg rename to src/static/icons/light/universal-access.svg diff --git a/client/src/static/icons/light/university.svg b/src/static/icons/light/university.svg similarity index 100% rename from client/src/static/icons/light/university.svg rename to src/static/icons/light/university.svg diff --git a/client/src/static/icons/light/unlink.svg b/src/static/icons/light/unlink.svg similarity index 100% rename from client/src/static/icons/light/unlink.svg rename to src/static/icons/light/unlink.svg diff --git a/client/src/static/icons/light/unlock-alt.svg b/src/static/icons/light/unlock-alt.svg similarity index 100% rename from client/src/static/icons/light/unlock-alt.svg rename to src/static/icons/light/unlock-alt.svg diff --git a/client/src/static/icons/light/unlock.svg b/src/static/icons/light/unlock.svg similarity index 100% rename from client/src/static/icons/light/unlock.svg rename to src/static/icons/light/unlock.svg diff --git a/client/src/static/icons/light/upload.svg b/src/static/icons/light/upload.svg similarity index 100% rename from client/src/static/icons/light/upload.svg rename to src/static/icons/light/upload.svg diff --git a/client/src/static/icons/light/usb-drive.svg b/src/static/icons/light/usb-drive.svg similarity index 100% rename from client/src/static/icons/light/usb-drive.svg rename to src/static/icons/light/usb-drive.svg diff --git a/client/src/static/icons/light/usd-circle.svg b/src/static/icons/light/usd-circle.svg similarity index 100% rename from client/src/static/icons/light/usd-circle.svg rename to src/static/icons/light/usd-circle.svg diff --git a/client/src/static/icons/light/usd-square.svg b/src/static/icons/light/usd-square.svg similarity index 100% rename from client/src/static/icons/light/usd-square.svg rename to src/static/icons/light/usd-square.svg diff --git a/client/src/static/icons/light/user-alien.svg b/src/static/icons/light/user-alien.svg similarity index 100% rename from client/src/static/icons/light/user-alien.svg rename to src/static/icons/light/user-alien.svg diff --git a/client/src/static/icons/light/user-alt-slash.svg b/src/static/icons/light/user-alt-slash.svg similarity index 100% rename from client/src/static/icons/light/user-alt-slash.svg rename to src/static/icons/light/user-alt-slash.svg diff --git a/client/src/static/icons/light/user-alt.svg b/src/static/icons/light/user-alt.svg similarity index 100% rename from client/src/static/icons/light/user-alt.svg rename to src/static/icons/light/user-alt.svg diff --git a/client/src/static/icons/light/user-astronaut.svg b/src/static/icons/light/user-astronaut.svg similarity index 100% rename from client/src/static/icons/light/user-astronaut.svg rename to src/static/icons/light/user-astronaut.svg diff --git a/client/src/static/icons/light/user-chart.svg b/src/static/icons/light/user-chart.svg similarity index 100% rename from client/src/static/icons/light/user-chart.svg rename to src/static/icons/light/user-chart.svg diff --git a/client/src/static/icons/light/user-check.svg b/src/static/icons/light/user-check.svg similarity index 100% rename from client/src/static/icons/light/user-check.svg rename to src/static/icons/light/user-check.svg diff --git a/client/src/static/icons/light/user-circle.svg b/src/static/icons/light/user-circle.svg similarity index 100% rename from client/src/static/icons/light/user-circle.svg rename to src/static/icons/light/user-circle.svg diff --git a/client/src/static/icons/light/user-clock.svg b/src/static/icons/light/user-clock.svg similarity index 100% rename from client/src/static/icons/light/user-clock.svg rename to src/static/icons/light/user-clock.svg diff --git a/client/src/static/icons/light/user-cog.svg b/src/static/icons/light/user-cog.svg similarity index 100% rename from client/src/static/icons/light/user-cog.svg rename to src/static/icons/light/user-cog.svg diff --git a/client/src/static/icons/light/user-cowboy.svg b/src/static/icons/light/user-cowboy.svg similarity index 100% rename from client/src/static/icons/light/user-cowboy.svg rename to src/static/icons/light/user-cowboy.svg diff --git a/client/src/static/icons/light/user-crown.svg b/src/static/icons/light/user-crown.svg similarity index 100% rename from client/src/static/icons/light/user-crown.svg rename to src/static/icons/light/user-crown.svg diff --git a/client/src/static/icons/light/user-edit.svg b/src/static/icons/light/user-edit.svg similarity index 100% rename from client/src/static/icons/light/user-edit.svg rename to src/static/icons/light/user-edit.svg diff --git a/client/src/static/icons/light/user-friends.svg b/src/static/icons/light/user-friends.svg similarity index 100% rename from client/src/static/icons/light/user-friends.svg rename to src/static/icons/light/user-friends.svg diff --git a/client/src/static/icons/light/user-graduate.svg b/src/static/icons/light/user-graduate.svg similarity index 100% rename from client/src/static/icons/light/user-graduate.svg rename to src/static/icons/light/user-graduate.svg diff --git a/client/src/static/icons/light/user-hard-hat.svg b/src/static/icons/light/user-hard-hat.svg similarity index 100% rename from client/src/static/icons/light/user-hard-hat.svg rename to src/static/icons/light/user-hard-hat.svg diff --git a/client/src/static/icons/light/user-headset.svg b/src/static/icons/light/user-headset.svg similarity index 100% rename from client/src/static/icons/light/user-headset.svg rename to src/static/icons/light/user-headset.svg diff --git a/client/src/static/icons/light/user-injured.svg b/src/static/icons/light/user-injured.svg similarity index 100% rename from client/src/static/icons/light/user-injured.svg rename to src/static/icons/light/user-injured.svg diff --git a/client/src/static/icons/light/user-lock.svg b/src/static/icons/light/user-lock.svg similarity index 100% rename from client/src/static/icons/light/user-lock.svg rename to src/static/icons/light/user-lock.svg diff --git a/client/src/static/icons/light/user-md-chat.svg b/src/static/icons/light/user-md-chat.svg similarity index 100% rename from client/src/static/icons/light/user-md-chat.svg rename to src/static/icons/light/user-md-chat.svg diff --git a/client/src/static/icons/light/user-md.svg b/src/static/icons/light/user-md.svg similarity index 100% rename from client/src/static/icons/light/user-md.svg rename to src/static/icons/light/user-md.svg diff --git a/client/src/static/icons/light/user-minus.svg b/src/static/icons/light/user-minus.svg similarity index 100% rename from client/src/static/icons/light/user-minus.svg rename to src/static/icons/light/user-minus.svg diff --git a/client/src/static/icons/light/user-music.svg b/src/static/icons/light/user-music.svg similarity index 100% rename from client/src/static/icons/light/user-music.svg rename to src/static/icons/light/user-music.svg diff --git a/client/src/static/icons/light/user-ninja.svg b/src/static/icons/light/user-ninja.svg similarity index 100% rename from client/src/static/icons/light/user-ninja.svg rename to src/static/icons/light/user-ninja.svg diff --git a/client/src/static/icons/light/user-nurse.svg b/src/static/icons/light/user-nurse.svg similarity index 100% rename from client/src/static/icons/light/user-nurse.svg rename to src/static/icons/light/user-nurse.svg diff --git a/client/src/static/icons/light/user-plus.svg b/src/static/icons/light/user-plus.svg similarity index 100% rename from client/src/static/icons/light/user-plus.svg rename to src/static/icons/light/user-plus.svg diff --git a/client/src/static/icons/light/user-robot.svg b/src/static/icons/light/user-robot.svg similarity index 100% rename from client/src/static/icons/light/user-robot.svg rename to src/static/icons/light/user-robot.svg diff --git a/client/src/static/icons/light/user-secret.svg b/src/static/icons/light/user-secret.svg similarity index 100% rename from client/src/static/icons/light/user-secret.svg rename to src/static/icons/light/user-secret.svg diff --git a/client/src/static/icons/light/user-shield.svg b/src/static/icons/light/user-shield.svg similarity index 100% rename from client/src/static/icons/light/user-shield.svg rename to src/static/icons/light/user-shield.svg diff --git a/client/src/static/icons/light/user-slash.svg b/src/static/icons/light/user-slash.svg similarity index 100% rename from client/src/static/icons/light/user-slash.svg rename to src/static/icons/light/user-slash.svg diff --git a/client/src/static/icons/light/user-tag.svg b/src/static/icons/light/user-tag.svg similarity index 100% rename from client/src/static/icons/light/user-tag.svg rename to src/static/icons/light/user-tag.svg diff --git a/client/src/static/icons/light/user-tie.svg b/src/static/icons/light/user-tie.svg similarity index 100% rename from client/src/static/icons/light/user-tie.svg rename to src/static/icons/light/user-tie.svg diff --git a/client/src/static/icons/light/user-times.svg b/src/static/icons/light/user-times.svg similarity index 100% rename from client/src/static/icons/light/user-times.svg rename to src/static/icons/light/user-times.svg diff --git a/client/src/static/icons/light/user-visor.svg b/src/static/icons/light/user-visor.svg similarity index 100% rename from client/src/static/icons/light/user-visor.svg rename to src/static/icons/light/user-visor.svg diff --git a/client/src/static/icons/light/user.svg b/src/static/icons/light/user.svg similarity index 100% rename from client/src/static/icons/light/user.svg rename to src/static/icons/light/user.svg diff --git a/client/src/static/icons/light/users-class.svg b/src/static/icons/light/users-class.svg similarity index 100% rename from client/src/static/icons/light/users-class.svg rename to src/static/icons/light/users-class.svg diff --git a/client/src/static/icons/light/users-cog.svg b/src/static/icons/light/users-cog.svg similarity index 100% rename from client/src/static/icons/light/users-cog.svg rename to src/static/icons/light/users-cog.svg diff --git a/client/src/static/icons/light/users-crown.svg b/src/static/icons/light/users-crown.svg similarity index 100% rename from client/src/static/icons/light/users-crown.svg rename to src/static/icons/light/users-crown.svg diff --git a/client/src/static/icons/light/users-medical.svg b/src/static/icons/light/users-medical.svg similarity index 100% rename from client/src/static/icons/light/users-medical.svg rename to src/static/icons/light/users-medical.svg diff --git a/client/src/static/icons/light/users.svg b/src/static/icons/light/users.svg similarity index 100% rename from client/src/static/icons/light/users.svg rename to src/static/icons/light/users.svg diff --git a/client/src/static/icons/light/utensil-fork.svg b/src/static/icons/light/utensil-fork.svg similarity index 100% rename from client/src/static/icons/light/utensil-fork.svg rename to src/static/icons/light/utensil-fork.svg diff --git a/client/src/static/icons/light/utensil-knife.svg b/src/static/icons/light/utensil-knife.svg similarity index 100% rename from client/src/static/icons/light/utensil-knife.svg rename to src/static/icons/light/utensil-knife.svg diff --git a/client/src/static/icons/light/utensil-spoon.svg b/src/static/icons/light/utensil-spoon.svg similarity index 100% rename from client/src/static/icons/light/utensil-spoon.svg rename to src/static/icons/light/utensil-spoon.svg diff --git a/client/src/static/icons/light/utensils-alt.svg b/src/static/icons/light/utensils-alt.svg similarity index 100% rename from client/src/static/icons/light/utensils-alt.svg rename to src/static/icons/light/utensils-alt.svg diff --git a/client/src/static/icons/light/utensils.svg b/src/static/icons/light/utensils.svg similarity index 100% rename from client/src/static/icons/light/utensils.svg rename to src/static/icons/light/utensils.svg diff --git a/client/src/static/icons/light/vacuum-robot.svg b/src/static/icons/light/vacuum-robot.svg similarity index 100% rename from client/src/static/icons/light/vacuum-robot.svg rename to src/static/icons/light/vacuum-robot.svg diff --git a/client/src/static/icons/light/vacuum.svg b/src/static/icons/light/vacuum.svg similarity index 100% rename from client/src/static/icons/light/vacuum.svg rename to src/static/icons/light/vacuum.svg diff --git a/client/src/static/icons/light/value-absolute.svg b/src/static/icons/light/value-absolute.svg similarity index 100% rename from client/src/static/icons/light/value-absolute.svg rename to src/static/icons/light/value-absolute.svg diff --git a/client/src/static/icons/light/vector-square.svg b/src/static/icons/light/vector-square.svg similarity index 100% rename from client/src/static/icons/light/vector-square.svg rename to src/static/icons/light/vector-square.svg diff --git a/client/src/static/icons/light/venus-double.svg b/src/static/icons/light/venus-double.svg similarity index 100% rename from client/src/static/icons/light/venus-double.svg rename to src/static/icons/light/venus-double.svg diff --git a/client/src/static/icons/light/venus-mars.svg b/src/static/icons/light/venus-mars.svg similarity index 100% rename from client/src/static/icons/light/venus-mars.svg rename to src/static/icons/light/venus-mars.svg diff --git a/client/src/static/icons/light/venus.svg b/src/static/icons/light/venus.svg similarity index 100% rename from client/src/static/icons/light/venus.svg rename to src/static/icons/light/venus.svg diff --git a/client/src/static/icons/light/vhs.svg b/src/static/icons/light/vhs.svg similarity index 100% rename from client/src/static/icons/light/vhs.svg rename to src/static/icons/light/vhs.svg diff --git a/client/src/static/icons/light/vial.svg b/src/static/icons/light/vial.svg similarity index 100% rename from client/src/static/icons/light/vial.svg rename to src/static/icons/light/vial.svg diff --git a/client/src/static/icons/light/vials.svg b/src/static/icons/light/vials.svg similarity index 100% rename from client/src/static/icons/light/vials.svg rename to src/static/icons/light/vials.svg diff --git a/client/src/static/icons/light/video-plus.svg b/src/static/icons/light/video-plus.svg similarity index 100% rename from client/src/static/icons/light/video-plus.svg rename to src/static/icons/light/video-plus.svg diff --git a/client/src/static/icons/light/video-slash.svg b/src/static/icons/light/video-slash.svg similarity index 100% rename from client/src/static/icons/light/video-slash.svg rename to src/static/icons/light/video-slash.svg diff --git a/client/src/static/icons/light/video.svg b/src/static/icons/light/video.svg similarity index 100% rename from client/src/static/icons/light/video.svg rename to src/static/icons/light/video.svg diff --git a/client/src/static/icons/light/vihara.svg b/src/static/icons/light/vihara.svg similarity index 100% rename from client/src/static/icons/light/vihara.svg rename to src/static/icons/light/vihara.svg diff --git a/client/src/static/icons/light/violin.svg b/src/static/icons/light/violin.svg similarity index 100% rename from client/src/static/icons/light/violin.svg rename to src/static/icons/light/violin.svg diff --git a/client/src/static/icons/light/voicemail.svg b/src/static/icons/light/voicemail.svg similarity index 100% rename from client/src/static/icons/light/voicemail.svg rename to src/static/icons/light/voicemail.svg diff --git a/client/src/static/icons/light/volcano.svg b/src/static/icons/light/volcano.svg similarity index 100% rename from client/src/static/icons/light/volcano.svg rename to src/static/icons/light/volcano.svg diff --git a/client/src/static/icons/light/volleyball-ball.svg b/src/static/icons/light/volleyball-ball.svg similarity index 100% rename from client/src/static/icons/light/volleyball-ball.svg rename to src/static/icons/light/volleyball-ball.svg diff --git a/client/src/static/icons/light/volume-down.svg b/src/static/icons/light/volume-down.svg similarity index 100% rename from client/src/static/icons/light/volume-down.svg rename to src/static/icons/light/volume-down.svg diff --git a/client/src/static/icons/light/volume-mute.svg b/src/static/icons/light/volume-mute.svg similarity index 100% rename from client/src/static/icons/light/volume-mute.svg rename to src/static/icons/light/volume-mute.svg diff --git a/client/src/static/icons/light/volume-off.svg b/src/static/icons/light/volume-off.svg similarity index 100% rename from client/src/static/icons/light/volume-off.svg rename to src/static/icons/light/volume-off.svg diff --git a/client/src/static/icons/light/volume-slash.svg b/src/static/icons/light/volume-slash.svg similarity index 100% rename from client/src/static/icons/light/volume-slash.svg rename to src/static/icons/light/volume-slash.svg diff --git a/client/src/static/icons/light/volume-up.svg b/src/static/icons/light/volume-up.svg similarity index 100% rename from client/src/static/icons/light/volume-up.svg rename to src/static/icons/light/volume-up.svg diff --git a/client/src/static/icons/light/volume.svg b/src/static/icons/light/volume.svg similarity index 100% rename from client/src/static/icons/light/volume.svg rename to src/static/icons/light/volume.svg diff --git a/client/src/static/icons/light/vote-nay.svg b/src/static/icons/light/vote-nay.svg similarity index 100% rename from client/src/static/icons/light/vote-nay.svg rename to src/static/icons/light/vote-nay.svg diff --git a/client/src/static/icons/light/vote-yea.svg b/src/static/icons/light/vote-yea.svg similarity index 100% rename from client/src/static/icons/light/vote-yea.svg rename to src/static/icons/light/vote-yea.svg diff --git a/client/src/static/icons/light/vr-cardboard.svg b/src/static/icons/light/vr-cardboard.svg similarity index 100% rename from client/src/static/icons/light/vr-cardboard.svg rename to src/static/icons/light/vr-cardboard.svg diff --git a/client/src/static/icons/light/wagon-covered.svg b/src/static/icons/light/wagon-covered.svg similarity index 100% rename from client/src/static/icons/light/wagon-covered.svg rename to src/static/icons/light/wagon-covered.svg diff --git a/client/src/static/icons/light/walker.svg b/src/static/icons/light/walker.svg similarity index 100% rename from client/src/static/icons/light/walker.svg rename to src/static/icons/light/walker.svg diff --git a/client/src/static/icons/light/walkie-talkie.svg b/src/static/icons/light/walkie-talkie.svg similarity index 100% rename from client/src/static/icons/light/walkie-talkie.svg rename to src/static/icons/light/walkie-talkie.svg diff --git a/client/src/static/icons/light/walking.svg b/src/static/icons/light/walking.svg similarity index 100% rename from client/src/static/icons/light/walking.svg rename to src/static/icons/light/walking.svg diff --git a/client/src/static/icons/light/wallet.svg b/src/static/icons/light/wallet.svg similarity index 100% rename from client/src/static/icons/light/wallet.svg rename to src/static/icons/light/wallet.svg diff --git a/client/src/static/icons/light/wand-magic.svg b/src/static/icons/light/wand-magic.svg similarity index 100% rename from client/src/static/icons/light/wand-magic.svg rename to src/static/icons/light/wand-magic.svg diff --git a/client/src/static/icons/light/wand.svg b/src/static/icons/light/wand.svg similarity index 100% rename from client/src/static/icons/light/wand.svg rename to src/static/icons/light/wand.svg diff --git a/client/src/static/icons/light/warehouse-alt.svg b/src/static/icons/light/warehouse-alt.svg similarity index 100% rename from client/src/static/icons/light/warehouse-alt.svg rename to src/static/icons/light/warehouse-alt.svg diff --git a/client/src/static/icons/light/warehouse.svg b/src/static/icons/light/warehouse.svg similarity index 100% rename from client/src/static/icons/light/warehouse.svg rename to src/static/icons/light/warehouse.svg diff --git a/client/src/static/icons/light/washer.svg b/src/static/icons/light/washer.svg similarity index 100% rename from client/src/static/icons/light/washer.svg rename to src/static/icons/light/washer.svg diff --git a/client/src/static/icons/light/watch-calculator.svg b/src/static/icons/light/watch-calculator.svg similarity index 100% rename from client/src/static/icons/light/watch-calculator.svg rename to src/static/icons/light/watch-calculator.svg diff --git a/client/src/static/icons/light/watch-fitness.svg b/src/static/icons/light/watch-fitness.svg similarity index 100% rename from client/src/static/icons/light/watch-fitness.svg rename to src/static/icons/light/watch-fitness.svg diff --git a/client/src/static/icons/light/watch.svg b/src/static/icons/light/watch.svg similarity index 100% rename from client/src/static/icons/light/watch.svg rename to src/static/icons/light/watch.svg diff --git a/client/src/static/icons/light/water-lower.svg b/src/static/icons/light/water-lower.svg similarity index 100% rename from client/src/static/icons/light/water-lower.svg rename to src/static/icons/light/water-lower.svg diff --git a/client/src/static/icons/light/water-rise.svg b/src/static/icons/light/water-rise.svg similarity index 100% rename from client/src/static/icons/light/water-rise.svg rename to src/static/icons/light/water-rise.svg diff --git a/client/src/static/icons/light/water.svg b/src/static/icons/light/water.svg similarity index 100% rename from client/src/static/icons/light/water.svg rename to src/static/icons/light/water.svg diff --git a/client/src/static/icons/light/wave-sine.svg b/src/static/icons/light/wave-sine.svg similarity index 100% rename from client/src/static/icons/light/wave-sine.svg rename to src/static/icons/light/wave-sine.svg diff --git a/client/src/static/icons/light/wave-square.svg b/src/static/icons/light/wave-square.svg similarity index 100% rename from client/src/static/icons/light/wave-square.svg rename to src/static/icons/light/wave-square.svg diff --git a/client/src/static/icons/light/wave-triangle.svg b/src/static/icons/light/wave-triangle.svg similarity index 100% rename from client/src/static/icons/light/wave-triangle.svg rename to src/static/icons/light/wave-triangle.svg diff --git a/client/src/static/icons/light/waveform-path.svg b/src/static/icons/light/waveform-path.svg similarity index 100% rename from client/src/static/icons/light/waveform-path.svg rename to src/static/icons/light/waveform-path.svg diff --git a/client/src/static/icons/light/waveform.svg b/src/static/icons/light/waveform.svg similarity index 100% rename from client/src/static/icons/light/waveform.svg rename to src/static/icons/light/waveform.svg diff --git a/client/src/static/icons/light/webcam-slash.svg b/src/static/icons/light/webcam-slash.svg similarity index 100% rename from client/src/static/icons/light/webcam-slash.svg rename to src/static/icons/light/webcam-slash.svg diff --git a/client/src/static/icons/light/webcam.svg b/src/static/icons/light/webcam.svg similarity index 100% rename from client/src/static/icons/light/webcam.svg rename to src/static/icons/light/webcam.svg diff --git a/client/src/static/icons/light/weight-hanging.svg b/src/static/icons/light/weight-hanging.svg similarity index 100% rename from client/src/static/icons/light/weight-hanging.svg rename to src/static/icons/light/weight-hanging.svg diff --git a/client/src/static/icons/light/weight.svg b/src/static/icons/light/weight.svg similarity index 100% rename from client/src/static/icons/light/weight.svg rename to src/static/icons/light/weight.svg diff --git a/client/src/static/icons/light/whale.svg b/src/static/icons/light/whale.svg similarity index 100% rename from client/src/static/icons/light/whale.svg rename to src/static/icons/light/whale.svg diff --git a/client/src/static/icons/light/wheat.svg b/src/static/icons/light/wheat.svg similarity index 100% rename from client/src/static/icons/light/wheat.svg rename to src/static/icons/light/wheat.svg diff --git a/client/src/static/icons/light/wheelchair.svg b/src/static/icons/light/wheelchair.svg similarity index 100% rename from client/src/static/icons/light/wheelchair.svg rename to src/static/icons/light/wheelchair.svg diff --git a/client/src/static/icons/light/whistle.svg b/src/static/icons/light/whistle.svg similarity index 100% rename from client/src/static/icons/light/whistle.svg rename to src/static/icons/light/whistle.svg diff --git a/client/src/static/icons/light/wifi-1.svg b/src/static/icons/light/wifi-1.svg similarity index 100% rename from client/src/static/icons/light/wifi-1.svg rename to src/static/icons/light/wifi-1.svg diff --git a/client/src/static/icons/light/wifi-2.svg b/src/static/icons/light/wifi-2.svg similarity index 100% rename from client/src/static/icons/light/wifi-2.svg rename to src/static/icons/light/wifi-2.svg diff --git a/client/src/static/icons/light/wifi-slash.svg b/src/static/icons/light/wifi-slash.svg similarity index 100% rename from client/src/static/icons/light/wifi-slash.svg rename to src/static/icons/light/wifi-slash.svg diff --git a/client/src/static/icons/light/wifi.svg b/src/static/icons/light/wifi.svg similarity index 100% rename from client/src/static/icons/light/wifi.svg rename to src/static/icons/light/wifi.svg diff --git a/client/src/static/icons/light/wind-turbine.svg b/src/static/icons/light/wind-turbine.svg similarity index 100% rename from client/src/static/icons/light/wind-turbine.svg rename to src/static/icons/light/wind-turbine.svg diff --git a/client/src/static/icons/light/wind-warning.svg b/src/static/icons/light/wind-warning.svg similarity index 100% rename from client/src/static/icons/light/wind-warning.svg rename to src/static/icons/light/wind-warning.svg diff --git a/client/src/static/icons/light/wind.svg b/src/static/icons/light/wind.svg similarity index 100% rename from client/src/static/icons/light/wind.svg rename to src/static/icons/light/wind.svg diff --git a/client/src/static/icons/light/window-alt.svg b/src/static/icons/light/window-alt.svg similarity index 100% rename from client/src/static/icons/light/window-alt.svg rename to src/static/icons/light/window-alt.svg diff --git a/client/src/static/icons/light/window-close.svg b/src/static/icons/light/window-close.svg similarity index 100% rename from client/src/static/icons/light/window-close.svg rename to src/static/icons/light/window-close.svg diff --git a/client/src/static/icons/light/window-frame-open.svg b/src/static/icons/light/window-frame-open.svg similarity index 100% rename from client/src/static/icons/light/window-frame-open.svg rename to src/static/icons/light/window-frame-open.svg diff --git a/client/src/static/icons/light/window-frame.svg b/src/static/icons/light/window-frame.svg similarity index 100% rename from client/src/static/icons/light/window-frame.svg rename to src/static/icons/light/window-frame.svg diff --git a/client/src/static/icons/light/window-maximize.svg b/src/static/icons/light/window-maximize.svg similarity index 100% rename from client/src/static/icons/light/window-maximize.svg rename to src/static/icons/light/window-maximize.svg diff --git a/client/src/static/icons/light/window-minimize.svg b/src/static/icons/light/window-minimize.svg similarity index 100% rename from client/src/static/icons/light/window-minimize.svg rename to src/static/icons/light/window-minimize.svg diff --git a/client/src/static/icons/light/window-restore.svg b/src/static/icons/light/window-restore.svg similarity index 100% rename from client/src/static/icons/light/window-restore.svg rename to src/static/icons/light/window-restore.svg diff --git a/client/src/static/icons/light/window.svg b/src/static/icons/light/window.svg similarity index 100% rename from client/src/static/icons/light/window.svg rename to src/static/icons/light/window.svg diff --git a/client/src/static/icons/light/windsock.svg b/src/static/icons/light/windsock.svg similarity index 100% rename from client/src/static/icons/light/windsock.svg rename to src/static/icons/light/windsock.svg diff --git a/client/src/static/icons/light/wine-bottle.svg b/src/static/icons/light/wine-bottle.svg similarity index 100% rename from client/src/static/icons/light/wine-bottle.svg rename to src/static/icons/light/wine-bottle.svg diff --git a/client/src/static/icons/light/wine-glass-alt.svg b/src/static/icons/light/wine-glass-alt.svg similarity index 100% rename from client/src/static/icons/light/wine-glass-alt.svg rename to src/static/icons/light/wine-glass-alt.svg diff --git a/client/src/static/icons/light/wine-glass.svg b/src/static/icons/light/wine-glass.svg similarity index 100% rename from client/src/static/icons/light/wine-glass.svg rename to src/static/icons/light/wine-glass.svg diff --git a/client/src/static/icons/light/won-sign.svg b/src/static/icons/light/won-sign.svg similarity index 100% rename from client/src/static/icons/light/won-sign.svg rename to src/static/icons/light/won-sign.svg diff --git a/client/src/static/icons/light/wreath.svg b/src/static/icons/light/wreath.svg similarity index 100% rename from client/src/static/icons/light/wreath.svg rename to src/static/icons/light/wreath.svg diff --git a/client/src/static/icons/light/wrench.svg b/src/static/icons/light/wrench.svg similarity index 100% rename from client/src/static/icons/light/wrench.svg rename to src/static/icons/light/wrench.svg diff --git a/client/src/static/icons/light/x-ray.svg b/src/static/icons/light/x-ray.svg similarity index 100% rename from client/src/static/icons/light/x-ray.svg rename to src/static/icons/light/x-ray.svg diff --git a/client/src/static/icons/light/yen-sign.svg b/src/static/icons/light/yen-sign.svg similarity index 100% rename from client/src/static/icons/light/yen-sign.svg rename to src/static/icons/light/yen-sign.svg diff --git a/client/src/static/icons/light/yin-yang.svg b/src/static/icons/light/yin-yang.svg similarity index 100% rename from client/src/static/icons/light/yin-yang.svg rename to src/static/icons/light/yin-yang.svg diff --git a/client/src/static/icons/regular/abacus.svg b/src/static/icons/regular/abacus.svg similarity index 100% rename from client/src/static/icons/regular/abacus.svg rename to src/static/icons/regular/abacus.svg diff --git a/client/src/static/icons/regular/acorn.svg b/src/static/icons/regular/acorn.svg similarity index 100% rename from client/src/static/icons/regular/acorn.svg rename to src/static/icons/regular/acorn.svg diff --git a/client/src/static/icons/regular/ad.svg b/src/static/icons/regular/ad.svg similarity index 100% rename from client/src/static/icons/regular/ad.svg rename to src/static/icons/regular/ad.svg diff --git a/client/src/static/icons/regular/address-book.svg b/src/static/icons/regular/address-book.svg similarity index 100% rename from client/src/static/icons/regular/address-book.svg rename to src/static/icons/regular/address-book.svg diff --git a/client/src/static/icons/regular/address-card.svg b/src/static/icons/regular/address-card.svg similarity index 100% rename from client/src/static/icons/regular/address-card.svg rename to src/static/icons/regular/address-card.svg diff --git a/client/src/static/icons/regular/adjust.svg b/src/static/icons/regular/adjust.svg similarity index 100% rename from client/src/static/icons/regular/adjust.svg rename to src/static/icons/regular/adjust.svg diff --git a/client/src/static/icons/regular/air-conditioner.svg b/src/static/icons/regular/air-conditioner.svg similarity index 100% rename from client/src/static/icons/regular/air-conditioner.svg rename to src/static/icons/regular/air-conditioner.svg diff --git a/client/src/static/icons/regular/air-freshener.svg b/src/static/icons/regular/air-freshener.svg similarity index 100% rename from client/src/static/icons/regular/air-freshener.svg rename to src/static/icons/regular/air-freshener.svg diff --git a/client/src/static/icons/regular/alarm-clock.svg b/src/static/icons/regular/alarm-clock.svg similarity index 100% rename from client/src/static/icons/regular/alarm-clock.svg rename to src/static/icons/regular/alarm-clock.svg diff --git a/client/src/static/icons/regular/alarm-exclamation.svg b/src/static/icons/regular/alarm-exclamation.svg similarity index 100% rename from client/src/static/icons/regular/alarm-exclamation.svg rename to src/static/icons/regular/alarm-exclamation.svg diff --git a/client/src/static/icons/regular/alarm-plus.svg b/src/static/icons/regular/alarm-plus.svg similarity index 100% rename from client/src/static/icons/regular/alarm-plus.svg rename to src/static/icons/regular/alarm-plus.svg diff --git a/client/src/static/icons/regular/alarm-snooze.svg b/src/static/icons/regular/alarm-snooze.svg similarity index 100% rename from client/src/static/icons/regular/alarm-snooze.svg rename to src/static/icons/regular/alarm-snooze.svg diff --git a/client/src/static/icons/regular/album-collection.svg b/src/static/icons/regular/album-collection.svg similarity index 100% rename from client/src/static/icons/regular/album-collection.svg rename to src/static/icons/regular/album-collection.svg diff --git a/client/src/static/icons/regular/album.svg b/src/static/icons/regular/album.svg similarity index 100% rename from client/src/static/icons/regular/album.svg rename to src/static/icons/regular/album.svg diff --git a/client/src/static/icons/regular/alicorn.svg b/src/static/icons/regular/alicorn.svg similarity index 100% rename from client/src/static/icons/regular/alicorn.svg rename to src/static/icons/regular/alicorn.svg diff --git a/client/src/static/icons/regular/alien-monster.svg b/src/static/icons/regular/alien-monster.svg similarity index 100% rename from client/src/static/icons/regular/alien-monster.svg rename to src/static/icons/regular/alien-monster.svg diff --git a/client/src/static/icons/regular/alien.svg b/src/static/icons/regular/alien.svg similarity index 100% rename from client/src/static/icons/regular/alien.svg rename to src/static/icons/regular/alien.svg diff --git a/client/src/static/icons/regular/align-center.svg b/src/static/icons/regular/align-center.svg similarity index 100% rename from client/src/static/icons/regular/align-center.svg rename to src/static/icons/regular/align-center.svg diff --git a/client/src/static/icons/regular/align-justify.svg b/src/static/icons/regular/align-justify.svg similarity index 100% rename from client/src/static/icons/regular/align-justify.svg rename to src/static/icons/regular/align-justify.svg diff --git a/client/src/static/icons/regular/align-left.svg b/src/static/icons/regular/align-left.svg similarity index 100% rename from client/src/static/icons/regular/align-left.svg rename to src/static/icons/regular/align-left.svg diff --git a/client/src/static/icons/regular/align-right.svg b/src/static/icons/regular/align-right.svg similarity index 100% rename from client/src/static/icons/regular/align-right.svg rename to src/static/icons/regular/align-right.svg diff --git a/client/src/static/icons/regular/align-slash.svg b/src/static/icons/regular/align-slash.svg similarity index 100% rename from client/src/static/icons/regular/align-slash.svg rename to src/static/icons/regular/align-slash.svg diff --git a/client/src/static/icons/regular/allergies.svg b/src/static/icons/regular/allergies.svg similarity index 100% rename from client/src/static/icons/regular/allergies.svg rename to src/static/icons/regular/allergies.svg diff --git a/client/src/static/icons/regular/ambulance.svg b/src/static/icons/regular/ambulance.svg similarity index 100% rename from client/src/static/icons/regular/ambulance.svg rename to src/static/icons/regular/ambulance.svg diff --git a/client/src/static/icons/regular/american-sign-language-interpreting.svg b/src/static/icons/regular/american-sign-language-interpreting.svg similarity index 100% rename from client/src/static/icons/regular/american-sign-language-interpreting.svg rename to src/static/icons/regular/american-sign-language-interpreting.svg diff --git a/client/src/static/icons/regular/amp-guitar.svg b/src/static/icons/regular/amp-guitar.svg similarity index 100% rename from client/src/static/icons/regular/amp-guitar.svg rename to src/static/icons/regular/amp-guitar.svg diff --git a/client/src/static/icons/regular/analytics.svg b/src/static/icons/regular/analytics.svg similarity index 100% rename from client/src/static/icons/regular/analytics.svg rename to src/static/icons/regular/analytics.svg diff --git a/client/src/static/icons/regular/anchor.svg b/src/static/icons/regular/anchor.svg similarity index 100% rename from client/src/static/icons/regular/anchor.svg rename to src/static/icons/regular/anchor.svg diff --git a/client/src/static/icons/regular/angel.svg b/src/static/icons/regular/angel.svg similarity index 100% rename from client/src/static/icons/regular/angel.svg rename to src/static/icons/regular/angel.svg diff --git a/client/src/static/icons/regular/angle-double-down.svg b/src/static/icons/regular/angle-double-down.svg similarity index 100% rename from client/src/static/icons/regular/angle-double-down.svg rename to src/static/icons/regular/angle-double-down.svg diff --git a/client/src/static/icons/regular/angle-double-left.svg b/src/static/icons/regular/angle-double-left.svg similarity index 100% rename from client/src/static/icons/regular/angle-double-left.svg rename to src/static/icons/regular/angle-double-left.svg diff --git a/client/src/static/icons/regular/angle-double-right.svg b/src/static/icons/regular/angle-double-right.svg similarity index 100% rename from client/src/static/icons/regular/angle-double-right.svg rename to src/static/icons/regular/angle-double-right.svg diff --git a/client/src/static/icons/regular/angle-double-up.svg b/src/static/icons/regular/angle-double-up.svg similarity index 100% rename from client/src/static/icons/regular/angle-double-up.svg rename to src/static/icons/regular/angle-double-up.svg diff --git a/client/src/static/icons/regular/angle-down.svg b/src/static/icons/regular/angle-down.svg similarity index 100% rename from client/src/static/icons/regular/angle-down.svg rename to src/static/icons/regular/angle-down.svg diff --git a/client/src/static/icons/regular/angle-left.svg b/src/static/icons/regular/angle-left.svg similarity index 100% rename from client/src/static/icons/regular/angle-left.svg rename to src/static/icons/regular/angle-left.svg diff --git a/client/src/static/icons/regular/angle-right.svg b/src/static/icons/regular/angle-right.svg similarity index 100% rename from client/src/static/icons/regular/angle-right.svg rename to src/static/icons/regular/angle-right.svg diff --git a/client/src/static/icons/regular/angle-up.svg b/src/static/icons/regular/angle-up.svg similarity index 100% rename from client/src/static/icons/regular/angle-up.svg rename to src/static/icons/regular/angle-up.svg diff --git a/client/src/static/icons/regular/angry.svg b/src/static/icons/regular/angry.svg similarity index 100% rename from client/src/static/icons/regular/angry.svg rename to src/static/icons/regular/angry.svg diff --git a/client/src/static/icons/regular/ankh.svg b/src/static/icons/regular/ankh.svg similarity index 100% rename from client/src/static/icons/regular/ankh.svg rename to src/static/icons/regular/ankh.svg diff --git a/client/src/static/icons/regular/apple-alt.svg b/src/static/icons/regular/apple-alt.svg similarity index 100% rename from client/src/static/icons/regular/apple-alt.svg rename to src/static/icons/regular/apple-alt.svg diff --git a/client/src/static/icons/regular/apple-crate.svg b/src/static/icons/regular/apple-crate.svg similarity index 100% rename from client/src/static/icons/regular/apple-crate.svg rename to src/static/icons/regular/apple-crate.svg diff --git a/client/src/static/icons/regular/archive.svg b/src/static/icons/regular/archive.svg similarity index 100% rename from client/src/static/icons/regular/archive.svg rename to src/static/icons/regular/archive.svg diff --git a/client/src/static/icons/regular/archway.svg b/src/static/icons/regular/archway.svg similarity index 100% rename from client/src/static/icons/regular/archway.svg rename to src/static/icons/regular/archway.svg diff --git a/client/src/static/icons/regular/arrow-alt-circle-down.svg b/src/static/icons/regular/arrow-alt-circle-down.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-circle-down.svg rename to src/static/icons/regular/arrow-alt-circle-down.svg diff --git a/client/src/static/icons/regular/arrow-alt-circle-left.svg b/src/static/icons/regular/arrow-alt-circle-left.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-circle-left.svg rename to src/static/icons/regular/arrow-alt-circle-left.svg diff --git a/client/src/static/icons/regular/arrow-alt-circle-right.svg b/src/static/icons/regular/arrow-alt-circle-right.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-circle-right.svg rename to src/static/icons/regular/arrow-alt-circle-right.svg diff --git a/client/src/static/icons/regular/arrow-alt-circle-up.svg b/src/static/icons/regular/arrow-alt-circle-up.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-circle-up.svg rename to src/static/icons/regular/arrow-alt-circle-up.svg diff --git a/client/src/static/icons/regular/arrow-alt-down.svg b/src/static/icons/regular/arrow-alt-down.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-down.svg rename to src/static/icons/regular/arrow-alt-down.svg diff --git a/client/src/static/icons/regular/arrow-alt-from-bottom.svg b/src/static/icons/regular/arrow-alt-from-bottom.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-from-bottom.svg rename to src/static/icons/regular/arrow-alt-from-bottom.svg diff --git a/client/src/static/icons/regular/arrow-alt-from-left.svg b/src/static/icons/regular/arrow-alt-from-left.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-from-left.svg rename to src/static/icons/regular/arrow-alt-from-left.svg diff --git a/client/src/static/icons/regular/arrow-alt-from-right.svg b/src/static/icons/regular/arrow-alt-from-right.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-from-right.svg rename to src/static/icons/regular/arrow-alt-from-right.svg diff --git a/client/src/static/icons/regular/arrow-alt-from-top.svg b/src/static/icons/regular/arrow-alt-from-top.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-from-top.svg rename to src/static/icons/regular/arrow-alt-from-top.svg diff --git a/client/src/static/icons/regular/arrow-alt-left.svg b/src/static/icons/regular/arrow-alt-left.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-left.svg rename to src/static/icons/regular/arrow-alt-left.svg diff --git a/client/src/static/icons/regular/arrow-alt-right.svg b/src/static/icons/regular/arrow-alt-right.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-right.svg rename to src/static/icons/regular/arrow-alt-right.svg diff --git a/client/src/static/icons/regular/arrow-alt-square-down.svg b/src/static/icons/regular/arrow-alt-square-down.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-square-down.svg rename to src/static/icons/regular/arrow-alt-square-down.svg diff --git a/client/src/static/icons/regular/arrow-alt-square-left.svg b/src/static/icons/regular/arrow-alt-square-left.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-square-left.svg rename to src/static/icons/regular/arrow-alt-square-left.svg diff --git a/client/src/static/icons/regular/arrow-alt-square-right.svg b/src/static/icons/regular/arrow-alt-square-right.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-square-right.svg rename to src/static/icons/regular/arrow-alt-square-right.svg diff --git a/client/src/static/icons/regular/arrow-alt-square-up.svg b/src/static/icons/regular/arrow-alt-square-up.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-square-up.svg rename to src/static/icons/regular/arrow-alt-square-up.svg diff --git a/client/src/static/icons/regular/arrow-alt-to-bottom.svg b/src/static/icons/regular/arrow-alt-to-bottom.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-to-bottom.svg rename to src/static/icons/regular/arrow-alt-to-bottom.svg diff --git a/client/src/static/icons/regular/arrow-alt-to-left.svg b/src/static/icons/regular/arrow-alt-to-left.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-to-left.svg rename to src/static/icons/regular/arrow-alt-to-left.svg diff --git a/client/src/static/icons/regular/arrow-alt-to-right.svg b/src/static/icons/regular/arrow-alt-to-right.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-to-right.svg rename to src/static/icons/regular/arrow-alt-to-right.svg diff --git a/client/src/static/icons/regular/arrow-alt-to-top.svg b/src/static/icons/regular/arrow-alt-to-top.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-to-top.svg rename to src/static/icons/regular/arrow-alt-to-top.svg diff --git a/client/src/static/icons/regular/arrow-alt-up.svg b/src/static/icons/regular/arrow-alt-up.svg similarity index 100% rename from client/src/static/icons/regular/arrow-alt-up.svg rename to src/static/icons/regular/arrow-alt-up.svg diff --git a/client/src/static/icons/regular/arrow-circle-down.svg b/src/static/icons/regular/arrow-circle-down.svg similarity index 100% rename from client/src/static/icons/regular/arrow-circle-down.svg rename to src/static/icons/regular/arrow-circle-down.svg diff --git a/client/src/static/icons/regular/arrow-circle-left.svg b/src/static/icons/regular/arrow-circle-left.svg similarity index 100% rename from client/src/static/icons/regular/arrow-circle-left.svg rename to src/static/icons/regular/arrow-circle-left.svg diff --git a/client/src/static/icons/regular/arrow-circle-right.svg b/src/static/icons/regular/arrow-circle-right.svg similarity index 100% rename from client/src/static/icons/regular/arrow-circle-right.svg rename to src/static/icons/regular/arrow-circle-right.svg diff --git a/client/src/static/icons/regular/arrow-circle-up.svg b/src/static/icons/regular/arrow-circle-up.svg similarity index 100% rename from client/src/static/icons/regular/arrow-circle-up.svg rename to src/static/icons/regular/arrow-circle-up.svg diff --git a/client/src/static/icons/regular/arrow-down.svg b/src/static/icons/regular/arrow-down.svg similarity index 100% rename from client/src/static/icons/regular/arrow-down.svg rename to src/static/icons/regular/arrow-down.svg diff --git a/client/src/static/icons/regular/arrow-from-bottom.svg b/src/static/icons/regular/arrow-from-bottom.svg similarity index 100% rename from client/src/static/icons/regular/arrow-from-bottom.svg rename to src/static/icons/regular/arrow-from-bottom.svg diff --git a/client/src/static/icons/regular/arrow-from-left.svg b/src/static/icons/regular/arrow-from-left.svg similarity index 100% rename from client/src/static/icons/regular/arrow-from-left.svg rename to src/static/icons/regular/arrow-from-left.svg diff --git a/client/src/static/icons/regular/arrow-from-right.svg b/src/static/icons/regular/arrow-from-right.svg similarity index 100% rename from client/src/static/icons/regular/arrow-from-right.svg rename to src/static/icons/regular/arrow-from-right.svg diff --git a/client/src/static/icons/regular/arrow-from-top.svg b/src/static/icons/regular/arrow-from-top.svg similarity index 100% rename from client/src/static/icons/regular/arrow-from-top.svg rename to src/static/icons/regular/arrow-from-top.svg diff --git a/client/src/static/icons/regular/arrow-left.svg b/src/static/icons/regular/arrow-left.svg similarity index 100% rename from client/src/static/icons/regular/arrow-left.svg rename to src/static/icons/regular/arrow-left.svg diff --git a/client/src/static/icons/regular/arrow-right.svg b/src/static/icons/regular/arrow-right.svg similarity index 100% rename from client/src/static/icons/regular/arrow-right.svg rename to src/static/icons/regular/arrow-right.svg diff --git a/client/src/static/icons/regular/arrow-square-down.svg b/src/static/icons/regular/arrow-square-down.svg similarity index 100% rename from client/src/static/icons/regular/arrow-square-down.svg rename to src/static/icons/regular/arrow-square-down.svg diff --git a/client/src/static/icons/regular/arrow-square-left.svg b/src/static/icons/regular/arrow-square-left.svg similarity index 100% rename from client/src/static/icons/regular/arrow-square-left.svg rename to src/static/icons/regular/arrow-square-left.svg diff --git a/client/src/static/icons/regular/arrow-square-right.svg b/src/static/icons/regular/arrow-square-right.svg similarity index 100% rename from client/src/static/icons/regular/arrow-square-right.svg rename to src/static/icons/regular/arrow-square-right.svg diff --git a/client/src/static/icons/regular/arrow-square-up.svg b/src/static/icons/regular/arrow-square-up.svg similarity index 100% rename from client/src/static/icons/regular/arrow-square-up.svg rename to src/static/icons/regular/arrow-square-up.svg diff --git a/client/src/static/icons/regular/arrow-to-bottom.svg b/src/static/icons/regular/arrow-to-bottom.svg similarity index 100% rename from client/src/static/icons/regular/arrow-to-bottom.svg rename to src/static/icons/regular/arrow-to-bottom.svg diff --git a/client/src/static/icons/regular/arrow-to-left.svg b/src/static/icons/regular/arrow-to-left.svg similarity index 100% rename from client/src/static/icons/regular/arrow-to-left.svg rename to src/static/icons/regular/arrow-to-left.svg diff --git a/client/src/static/icons/regular/arrow-to-right.svg b/src/static/icons/regular/arrow-to-right.svg similarity index 100% rename from client/src/static/icons/regular/arrow-to-right.svg rename to src/static/icons/regular/arrow-to-right.svg diff --git a/client/src/static/icons/regular/arrow-to-top.svg b/src/static/icons/regular/arrow-to-top.svg similarity index 100% rename from client/src/static/icons/regular/arrow-to-top.svg rename to src/static/icons/regular/arrow-to-top.svg diff --git a/client/src/static/icons/regular/arrow-up.svg b/src/static/icons/regular/arrow-up.svg similarity index 100% rename from client/src/static/icons/regular/arrow-up.svg rename to src/static/icons/regular/arrow-up.svg diff --git a/client/src/static/icons/regular/arrows-alt-h.svg b/src/static/icons/regular/arrows-alt-h.svg similarity index 100% rename from client/src/static/icons/regular/arrows-alt-h.svg rename to src/static/icons/regular/arrows-alt-h.svg diff --git a/client/src/static/icons/regular/arrows-alt-v.svg b/src/static/icons/regular/arrows-alt-v.svg similarity index 100% rename from client/src/static/icons/regular/arrows-alt-v.svg rename to src/static/icons/regular/arrows-alt-v.svg diff --git a/client/src/static/icons/regular/arrows-alt.svg b/src/static/icons/regular/arrows-alt.svg similarity index 100% rename from client/src/static/icons/regular/arrows-alt.svg rename to src/static/icons/regular/arrows-alt.svg diff --git a/client/src/static/icons/regular/arrows-h.svg b/src/static/icons/regular/arrows-h.svg similarity index 100% rename from client/src/static/icons/regular/arrows-h.svg rename to src/static/icons/regular/arrows-h.svg diff --git a/client/src/static/icons/regular/arrows-v.svg b/src/static/icons/regular/arrows-v.svg similarity index 100% rename from client/src/static/icons/regular/arrows-v.svg rename to src/static/icons/regular/arrows-v.svg diff --git a/client/src/static/icons/regular/arrows.svg b/src/static/icons/regular/arrows.svg similarity index 100% rename from client/src/static/icons/regular/arrows.svg rename to src/static/icons/regular/arrows.svg diff --git a/client/src/static/icons/regular/assistive-listening-systems.svg b/src/static/icons/regular/assistive-listening-systems.svg similarity index 100% rename from client/src/static/icons/regular/assistive-listening-systems.svg rename to src/static/icons/regular/assistive-listening-systems.svg diff --git a/client/src/static/icons/regular/asterisk.svg b/src/static/icons/regular/asterisk.svg similarity index 100% rename from client/src/static/icons/regular/asterisk.svg rename to src/static/icons/regular/asterisk.svg diff --git a/client/src/static/icons/regular/at.svg b/src/static/icons/regular/at.svg similarity index 100% rename from client/src/static/icons/regular/at.svg rename to src/static/icons/regular/at.svg diff --git a/client/src/static/icons/regular/atlas.svg b/src/static/icons/regular/atlas.svg similarity index 100% rename from client/src/static/icons/regular/atlas.svg rename to src/static/icons/regular/atlas.svg diff --git a/client/src/static/icons/regular/atom-alt.svg b/src/static/icons/regular/atom-alt.svg similarity index 100% rename from client/src/static/icons/regular/atom-alt.svg rename to src/static/icons/regular/atom-alt.svg diff --git a/client/src/static/icons/regular/atom.svg b/src/static/icons/regular/atom.svg similarity index 100% rename from client/src/static/icons/regular/atom.svg rename to src/static/icons/regular/atom.svg diff --git a/client/src/static/icons/regular/audio-description.svg b/src/static/icons/regular/audio-description.svg similarity index 100% rename from client/src/static/icons/regular/audio-description.svg rename to src/static/icons/regular/audio-description.svg diff --git a/client/src/static/icons/regular/award.svg b/src/static/icons/regular/award.svg similarity index 100% rename from client/src/static/icons/regular/award.svg rename to src/static/icons/regular/award.svg diff --git a/client/src/static/icons/regular/axe-battle.svg b/src/static/icons/regular/axe-battle.svg similarity index 100% rename from client/src/static/icons/regular/axe-battle.svg rename to src/static/icons/regular/axe-battle.svg diff --git a/client/src/static/icons/regular/axe.svg b/src/static/icons/regular/axe.svg similarity index 100% rename from client/src/static/icons/regular/axe.svg rename to src/static/icons/regular/axe.svg diff --git a/client/src/static/icons/regular/baby-carriage.svg b/src/static/icons/regular/baby-carriage.svg similarity index 100% rename from client/src/static/icons/regular/baby-carriage.svg rename to src/static/icons/regular/baby-carriage.svg diff --git a/client/src/static/icons/regular/baby.svg b/src/static/icons/regular/baby.svg similarity index 100% rename from client/src/static/icons/regular/baby.svg rename to src/static/icons/regular/baby.svg diff --git a/client/src/static/icons/regular/backpack.svg b/src/static/icons/regular/backpack.svg similarity index 100% rename from client/src/static/icons/regular/backpack.svg rename to src/static/icons/regular/backpack.svg diff --git a/client/src/static/icons/regular/backspace.svg b/src/static/icons/regular/backspace.svg similarity index 100% rename from client/src/static/icons/regular/backspace.svg rename to src/static/icons/regular/backspace.svg diff --git a/client/src/static/icons/regular/backward.svg b/src/static/icons/regular/backward.svg similarity index 100% rename from client/src/static/icons/regular/backward.svg rename to src/static/icons/regular/backward.svg diff --git a/client/src/static/icons/regular/bacon.svg b/src/static/icons/regular/bacon.svg similarity index 100% rename from client/src/static/icons/regular/bacon.svg rename to src/static/icons/regular/bacon.svg diff --git a/client/src/static/icons/regular/badge-check.svg b/src/static/icons/regular/badge-check.svg similarity index 100% rename from client/src/static/icons/regular/badge-check.svg rename to src/static/icons/regular/badge-check.svg diff --git a/client/src/static/icons/regular/badge-dollar.svg b/src/static/icons/regular/badge-dollar.svg similarity index 100% rename from client/src/static/icons/regular/badge-dollar.svg rename to src/static/icons/regular/badge-dollar.svg diff --git a/client/src/static/icons/regular/badge-percent.svg b/src/static/icons/regular/badge-percent.svg similarity index 100% rename from client/src/static/icons/regular/badge-percent.svg rename to src/static/icons/regular/badge-percent.svg diff --git a/client/src/static/icons/regular/badge-sheriff.svg b/src/static/icons/regular/badge-sheriff.svg similarity index 100% rename from client/src/static/icons/regular/badge-sheriff.svg rename to src/static/icons/regular/badge-sheriff.svg diff --git a/client/src/static/icons/regular/badge.svg b/src/static/icons/regular/badge.svg similarity index 100% rename from client/src/static/icons/regular/badge.svg rename to src/static/icons/regular/badge.svg diff --git a/client/src/static/icons/regular/badger-honey.svg b/src/static/icons/regular/badger-honey.svg similarity index 100% rename from client/src/static/icons/regular/badger-honey.svg rename to src/static/icons/regular/badger-honey.svg diff --git a/client/src/static/icons/regular/bags-shopping.svg b/src/static/icons/regular/bags-shopping.svg similarity index 100% rename from client/src/static/icons/regular/bags-shopping.svg rename to src/static/icons/regular/bags-shopping.svg diff --git a/client/src/static/icons/regular/bahai.svg b/src/static/icons/regular/bahai.svg similarity index 100% rename from client/src/static/icons/regular/bahai.svg rename to src/static/icons/regular/bahai.svg diff --git a/client/src/static/icons/regular/balance-scale-left.svg b/src/static/icons/regular/balance-scale-left.svg similarity index 100% rename from client/src/static/icons/regular/balance-scale-left.svg rename to src/static/icons/regular/balance-scale-left.svg diff --git a/client/src/static/icons/regular/balance-scale-right.svg b/src/static/icons/regular/balance-scale-right.svg similarity index 100% rename from client/src/static/icons/regular/balance-scale-right.svg rename to src/static/icons/regular/balance-scale-right.svg diff --git a/client/src/static/icons/regular/balance-scale.svg b/src/static/icons/regular/balance-scale.svg similarity index 100% rename from client/src/static/icons/regular/balance-scale.svg rename to src/static/icons/regular/balance-scale.svg diff --git a/client/src/static/icons/regular/ball-pile.svg b/src/static/icons/regular/ball-pile.svg similarity index 100% rename from client/src/static/icons/regular/ball-pile.svg rename to src/static/icons/regular/ball-pile.svg diff --git a/client/src/static/icons/regular/ballot-check.svg b/src/static/icons/regular/ballot-check.svg similarity index 100% rename from client/src/static/icons/regular/ballot-check.svg rename to src/static/icons/regular/ballot-check.svg diff --git a/client/src/static/icons/regular/ballot.svg b/src/static/icons/regular/ballot.svg similarity index 100% rename from client/src/static/icons/regular/ballot.svg rename to src/static/icons/regular/ballot.svg diff --git a/client/src/static/icons/regular/ban.svg b/src/static/icons/regular/ban.svg similarity index 100% rename from client/src/static/icons/regular/ban.svg rename to src/static/icons/regular/ban.svg diff --git a/client/src/static/icons/regular/band-aid.svg b/src/static/icons/regular/band-aid.svg similarity index 100% rename from client/src/static/icons/regular/band-aid.svg rename to src/static/icons/regular/band-aid.svg diff --git a/client/src/static/icons/regular/banjo.svg b/src/static/icons/regular/banjo.svg similarity index 100% rename from client/src/static/icons/regular/banjo.svg rename to src/static/icons/regular/banjo.svg diff --git a/client/src/static/icons/regular/barcode-alt.svg b/src/static/icons/regular/barcode-alt.svg similarity index 100% rename from client/src/static/icons/regular/barcode-alt.svg rename to src/static/icons/regular/barcode-alt.svg diff --git a/client/src/static/icons/regular/barcode-read.svg b/src/static/icons/regular/barcode-read.svg similarity index 100% rename from client/src/static/icons/regular/barcode-read.svg rename to src/static/icons/regular/barcode-read.svg diff --git a/client/src/static/icons/regular/barcode-scan.svg b/src/static/icons/regular/barcode-scan.svg similarity index 100% rename from client/src/static/icons/regular/barcode-scan.svg rename to src/static/icons/regular/barcode-scan.svg diff --git a/client/src/static/icons/regular/barcode.svg b/src/static/icons/regular/barcode.svg similarity index 100% rename from client/src/static/icons/regular/barcode.svg rename to src/static/icons/regular/barcode.svg diff --git a/client/src/static/icons/regular/bars.svg b/src/static/icons/regular/bars.svg similarity index 100% rename from client/src/static/icons/regular/bars.svg rename to src/static/icons/regular/bars.svg diff --git a/client/src/static/icons/regular/baseball-ball.svg b/src/static/icons/regular/baseball-ball.svg similarity index 100% rename from client/src/static/icons/regular/baseball-ball.svg rename to src/static/icons/regular/baseball-ball.svg diff --git a/client/src/static/icons/regular/baseball.svg b/src/static/icons/regular/baseball.svg similarity index 100% rename from client/src/static/icons/regular/baseball.svg rename to src/static/icons/regular/baseball.svg diff --git a/client/src/static/icons/regular/basketball-ball.svg b/src/static/icons/regular/basketball-ball.svg similarity index 100% rename from client/src/static/icons/regular/basketball-ball.svg rename to src/static/icons/regular/basketball-ball.svg diff --git a/client/src/static/icons/regular/basketball-hoop.svg b/src/static/icons/regular/basketball-hoop.svg similarity index 100% rename from client/src/static/icons/regular/basketball-hoop.svg rename to src/static/icons/regular/basketball-hoop.svg diff --git a/client/src/static/icons/regular/bat.svg b/src/static/icons/regular/bat.svg similarity index 100% rename from client/src/static/icons/regular/bat.svg rename to src/static/icons/regular/bat.svg diff --git a/client/src/static/icons/regular/bath.svg b/src/static/icons/regular/bath.svg similarity index 100% rename from client/src/static/icons/regular/bath.svg rename to src/static/icons/regular/bath.svg diff --git a/client/src/static/icons/regular/battery-bolt.svg b/src/static/icons/regular/battery-bolt.svg similarity index 100% rename from client/src/static/icons/regular/battery-bolt.svg rename to src/static/icons/regular/battery-bolt.svg diff --git a/client/src/static/icons/regular/battery-empty.svg b/src/static/icons/regular/battery-empty.svg similarity index 100% rename from client/src/static/icons/regular/battery-empty.svg rename to src/static/icons/regular/battery-empty.svg diff --git a/client/src/static/icons/regular/battery-full.svg b/src/static/icons/regular/battery-full.svg similarity index 100% rename from client/src/static/icons/regular/battery-full.svg rename to src/static/icons/regular/battery-full.svg diff --git a/client/src/static/icons/regular/battery-half.svg b/src/static/icons/regular/battery-half.svg similarity index 100% rename from client/src/static/icons/regular/battery-half.svg rename to src/static/icons/regular/battery-half.svg diff --git a/client/src/static/icons/regular/battery-quarter.svg b/src/static/icons/regular/battery-quarter.svg similarity index 100% rename from client/src/static/icons/regular/battery-quarter.svg rename to src/static/icons/regular/battery-quarter.svg diff --git a/client/src/static/icons/regular/battery-slash.svg b/src/static/icons/regular/battery-slash.svg similarity index 100% rename from client/src/static/icons/regular/battery-slash.svg rename to src/static/icons/regular/battery-slash.svg diff --git a/client/src/static/icons/regular/battery-three-quarters.svg b/src/static/icons/regular/battery-three-quarters.svg similarity index 100% rename from client/src/static/icons/regular/battery-three-quarters.svg rename to src/static/icons/regular/battery-three-quarters.svg diff --git a/client/src/static/icons/regular/bed-alt.svg b/src/static/icons/regular/bed-alt.svg similarity index 100% rename from client/src/static/icons/regular/bed-alt.svg rename to src/static/icons/regular/bed-alt.svg diff --git a/client/src/static/icons/regular/bed-bunk.svg b/src/static/icons/regular/bed-bunk.svg similarity index 100% rename from client/src/static/icons/regular/bed-bunk.svg rename to src/static/icons/regular/bed-bunk.svg diff --git a/client/src/static/icons/regular/bed-empty.svg b/src/static/icons/regular/bed-empty.svg similarity index 100% rename from client/src/static/icons/regular/bed-empty.svg rename to src/static/icons/regular/bed-empty.svg diff --git a/client/src/static/icons/regular/bed.svg b/src/static/icons/regular/bed.svg similarity index 100% rename from client/src/static/icons/regular/bed.svg rename to src/static/icons/regular/bed.svg diff --git a/client/src/static/icons/regular/beer.svg b/src/static/icons/regular/beer.svg similarity index 100% rename from client/src/static/icons/regular/beer.svg rename to src/static/icons/regular/beer.svg diff --git a/client/src/static/icons/regular/bell-exclamation.svg b/src/static/icons/regular/bell-exclamation.svg similarity index 100% rename from client/src/static/icons/regular/bell-exclamation.svg rename to src/static/icons/regular/bell-exclamation.svg diff --git a/client/src/static/icons/regular/bell-on.svg b/src/static/icons/regular/bell-on.svg similarity index 100% rename from client/src/static/icons/regular/bell-on.svg rename to src/static/icons/regular/bell-on.svg diff --git a/client/src/static/icons/regular/bell-plus.svg b/src/static/icons/regular/bell-plus.svg similarity index 100% rename from client/src/static/icons/regular/bell-plus.svg rename to src/static/icons/regular/bell-plus.svg diff --git a/client/src/static/icons/regular/bell-school-slash.svg b/src/static/icons/regular/bell-school-slash.svg similarity index 100% rename from client/src/static/icons/regular/bell-school-slash.svg rename to src/static/icons/regular/bell-school-slash.svg diff --git a/client/src/static/icons/regular/bell-school.svg b/src/static/icons/regular/bell-school.svg similarity index 100% rename from client/src/static/icons/regular/bell-school.svg rename to src/static/icons/regular/bell-school.svg diff --git a/client/src/static/icons/regular/bell-slash.svg b/src/static/icons/regular/bell-slash.svg similarity index 100% rename from client/src/static/icons/regular/bell-slash.svg rename to src/static/icons/regular/bell-slash.svg diff --git a/client/src/static/icons/regular/bell.svg b/src/static/icons/regular/bell.svg similarity index 100% rename from client/src/static/icons/regular/bell.svg rename to src/static/icons/regular/bell.svg diff --git a/client/src/static/icons/regular/bells.svg b/src/static/icons/regular/bells.svg similarity index 100% rename from client/src/static/icons/regular/bells.svg rename to src/static/icons/regular/bells.svg diff --git a/client/src/static/icons/regular/betamax.svg b/src/static/icons/regular/betamax.svg similarity index 100% rename from client/src/static/icons/regular/betamax.svg rename to src/static/icons/regular/betamax.svg diff --git a/client/src/static/icons/regular/bezier-curve.svg b/src/static/icons/regular/bezier-curve.svg similarity index 100% rename from client/src/static/icons/regular/bezier-curve.svg rename to src/static/icons/regular/bezier-curve.svg diff --git a/client/src/static/icons/regular/bible.svg b/src/static/icons/regular/bible.svg similarity index 100% rename from client/src/static/icons/regular/bible.svg rename to src/static/icons/regular/bible.svg diff --git a/client/src/static/icons/regular/bicycle.svg b/src/static/icons/regular/bicycle.svg similarity index 100% rename from client/src/static/icons/regular/bicycle.svg rename to src/static/icons/regular/bicycle.svg diff --git a/client/src/static/icons/regular/biking-mountain.svg b/src/static/icons/regular/biking-mountain.svg similarity index 100% rename from client/src/static/icons/regular/biking-mountain.svg rename to src/static/icons/regular/biking-mountain.svg diff --git a/client/src/static/icons/regular/biking.svg b/src/static/icons/regular/biking.svg similarity index 100% rename from client/src/static/icons/regular/biking.svg rename to src/static/icons/regular/biking.svg diff --git a/client/src/static/icons/regular/binoculars.svg b/src/static/icons/regular/binoculars.svg similarity index 100% rename from client/src/static/icons/regular/binoculars.svg rename to src/static/icons/regular/binoculars.svg diff --git a/client/src/static/icons/regular/biohazard.svg b/src/static/icons/regular/biohazard.svg similarity index 100% rename from client/src/static/icons/regular/biohazard.svg rename to src/static/icons/regular/biohazard.svg diff --git a/client/src/static/icons/regular/birthday-cake.svg b/src/static/icons/regular/birthday-cake.svg similarity index 100% rename from client/src/static/icons/regular/birthday-cake.svg rename to src/static/icons/regular/birthday-cake.svg diff --git a/client/src/static/icons/regular/blanket.svg b/src/static/icons/regular/blanket.svg similarity index 100% rename from client/src/static/icons/regular/blanket.svg rename to src/static/icons/regular/blanket.svg diff --git a/client/src/static/icons/regular/blender-phone.svg b/src/static/icons/regular/blender-phone.svg similarity index 100% rename from client/src/static/icons/regular/blender-phone.svg rename to src/static/icons/regular/blender-phone.svg diff --git a/client/src/static/icons/regular/blender.svg b/src/static/icons/regular/blender.svg similarity index 100% rename from client/src/static/icons/regular/blender.svg rename to src/static/icons/regular/blender.svg diff --git a/client/src/static/icons/regular/blind.svg b/src/static/icons/regular/blind.svg similarity index 100% rename from client/src/static/icons/regular/blind.svg rename to src/static/icons/regular/blind.svg diff --git a/client/src/static/icons/regular/blinds-open.svg b/src/static/icons/regular/blinds-open.svg similarity index 100% rename from client/src/static/icons/regular/blinds-open.svg rename to src/static/icons/regular/blinds-open.svg diff --git a/client/src/static/icons/regular/blinds-raised.svg b/src/static/icons/regular/blinds-raised.svg similarity index 100% rename from client/src/static/icons/regular/blinds-raised.svg rename to src/static/icons/regular/blinds-raised.svg diff --git a/client/src/static/icons/regular/blinds.svg b/src/static/icons/regular/blinds.svg similarity index 100% rename from client/src/static/icons/regular/blinds.svg rename to src/static/icons/regular/blinds.svg diff --git a/client/src/static/icons/regular/blog.svg b/src/static/icons/regular/blog.svg similarity index 100% rename from client/src/static/icons/regular/blog.svg rename to src/static/icons/regular/blog.svg diff --git a/client/src/static/icons/regular/bold.svg b/src/static/icons/regular/bold.svg similarity index 100% rename from client/src/static/icons/regular/bold.svg rename to src/static/icons/regular/bold.svg diff --git a/client/src/static/icons/regular/bolt.svg b/src/static/icons/regular/bolt.svg similarity index 100% rename from client/src/static/icons/regular/bolt.svg rename to src/static/icons/regular/bolt.svg diff --git a/client/src/static/icons/regular/bomb.svg b/src/static/icons/regular/bomb.svg similarity index 100% rename from client/src/static/icons/regular/bomb.svg rename to src/static/icons/regular/bomb.svg diff --git a/client/src/static/icons/regular/bone-break.svg b/src/static/icons/regular/bone-break.svg similarity index 100% rename from client/src/static/icons/regular/bone-break.svg rename to src/static/icons/regular/bone-break.svg diff --git a/client/src/static/icons/regular/bone.svg b/src/static/icons/regular/bone.svg similarity index 100% rename from client/src/static/icons/regular/bone.svg rename to src/static/icons/regular/bone.svg diff --git a/client/src/static/icons/regular/bong.svg b/src/static/icons/regular/bong.svg similarity index 100% rename from client/src/static/icons/regular/bong.svg rename to src/static/icons/regular/bong.svg diff --git a/client/src/static/icons/regular/book-alt.svg b/src/static/icons/regular/book-alt.svg similarity index 100% rename from client/src/static/icons/regular/book-alt.svg rename to src/static/icons/regular/book-alt.svg diff --git a/client/src/static/icons/regular/book-dead.svg b/src/static/icons/regular/book-dead.svg similarity index 100% rename from client/src/static/icons/regular/book-dead.svg rename to src/static/icons/regular/book-dead.svg diff --git a/client/src/static/icons/regular/book-heart.svg b/src/static/icons/regular/book-heart.svg similarity index 100% rename from client/src/static/icons/regular/book-heart.svg rename to src/static/icons/regular/book-heart.svg diff --git a/client/src/static/icons/regular/book-medical.svg b/src/static/icons/regular/book-medical.svg similarity index 100% rename from client/src/static/icons/regular/book-medical.svg rename to src/static/icons/regular/book-medical.svg diff --git a/client/src/static/icons/regular/book-open.svg b/src/static/icons/regular/book-open.svg similarity index 100% rename from client/src/static/icons/regular/book-open.svg rename to src/static/icons/regular/book-open.svg diff --git a/client/src/static/icons/regular/book-reader.svg b/src/static/icons/regular/book-reader.svg similarity index 100% rename from client/src/static/icons/regular/book-reader.svg rename to src/static/icons/regular/book-reader.svg diff --git a/client/src/static/icons/regular/book-spells.svg b/src/static/icons/regular/book-spells.svg similarity index 100% rename from client/src/static/icons/regular/book-spells.svg rename to src/static/icons/regular/book-spells.svg diff --git a/client/src/static/icons/regular/book-user.svg b/src/static/icons/regular/book-user.svg similarity index 100% rename from client/src/static/icons/regular/book-user.svg rename to src/static/icons/regular/book-user.svg diff --git a/client/src/static/icons/regular/book.svg b/src/static/icons/regular/book.svg similarity index 100% rename from client/src/static/icons/regular/book.svg rename to src/static/icons/regular/book.svg diff --git a/client/src/static/icons/regular/bookmark.svg b/src/static/icons/regular/bookmark.svg similarity index 100% rename from client/src/static/icons/regular/bookmark.svg rename to src/static/icons/regular/bookmark.svg diff --git a/client/src/static/icons/regular/books-medical.svg b/src/static/icons/regular/books-medical.svg similarity index 100% rename from client/src/static/icons/regular/books-medical.svg rename to src/static/icons/regular/books-medical.svg diff --git a/client/src/static/icons/regular/books.svg b/src/static/icons/regular/books.svg similarity index 100% rename from client/src/static/icons/regular/books.svg rename to src/static/icons/regular/books.svg diff --git a/client/src/static/icons/regular/boombox.svg b/src/static/icons/regular/boombox.svg similarity index 100% rename from client/src/static/icons/regular/boombox.svg rename to src/static/icons/regular/boombox.svg diff --git a/client/src/static/icons/regular/boot.svg b/src/static/icons/regular/boot.svg similarity index 100% rename from client/src/static/icons/regular/boot.svg rename to src/static/icons/regular/boot.svg diff --git a/client/src/static/icons/regular/booth-curtain.svg b/src/static/icons/regular/booth-curtain.svg similarity index 100% rename from client/src/static/icons/regular/booth-curtain.svg rename to src/static/icons/regular/booth-curtain.svg diff --git a/client/src/static/icons/regular/border-all.svg b/src/static/icons/regular/border-all.svg similarity index 100% rename from client/src/static/icons/regular/border-all.svg rename to src/static/icons/regular/border-all.svg diff --git a/client/src/static/icons/regular/border-bottom.svg b/src/static/icons/regular/border-bottom.svg similarity index 100% rename from client/src/static/icons/regular/border-bottom.svg rename to src/static/icons/regular/border-bottom.svg diff --git a/client/src/static/icons/regular/border-center-h.svg b/src/static/icons/regular/border-center-h.svg similarity index 100% rename from client/src/static/icons/regular/border-center-h.svg rename to src/static/icons/regular/border-center-h.svg diff --git a/client/src/static/icons/regular/border-center-v.svg b/src/static/icons/regular/border-center-v.svg similarity index 100% rename from client/src/static/icons/regular/border-center-v.svg rename to src/static/icons/regular/border-center-v.svg diff --git a/client/src/static/icons/regular/border-inner.svg b/src/static/icons/regular/border-inner.svg similarity index 100% rename from client/src/static/icons/regular/border-inner.svg rename to src/static/icons/regular/border-inner.svg diff --git a/client/src/static/icons/regular/border-left.svg b/src/static/icons/regular/border-left.svg similarity index 100% rename from client/src/static/icons/regular/border-left.svg rename to src/static/icons/regular/border-left.svg diff --git a/client/src/static/icons/regular/border-none.svg b/src/static/icons/regular/border-none.svg similarity index 100% rename from client/src/static/icons/regular/border-none.svg rename to src/static/icons/regular/border-none.svg diff --git a/client/src/static/icons/regular/border-outer.svg b/src/static/icons/regular/border-outer.svg similarity index 100% rename from client/src/static/icons/regular/border-outer.svg rename to src/static/icons/regular/border-outer.svg diff --git a/client/src/static/icons/regular/border-right.svg b/src/static/icons/regular/border-right.svg similarity index 100% rename from client/src/static/icons/regular/border-right.svg rename to src/static/icons/regular/border-right.svg diff --git a/client/src/static/icons/regular/border-style-alt.svg b/src/static/icons/regular/border-style-alt.svg similarity index 100% rename from client/src/static/icons/regular/border-style-alt.svg rename to src/static/icons/regular/border-style-alt.svg diff --git a/client/src/static/icons/regular/border-style.svg b/src/static/icons/regular/border-style.svg similarity index 100% rename from client/src/static/icons/regular/border-style.svg rename to src/static/icons/regular/border-style.svg diff --git a/client/src/static/icons/regular/border-top.svg b/src/static/icons/regular/border-top.svg similarity index 100% rename from client/src/static/icons/regular/border-top.svg rename to src/static/icons/regular/border-top.svg diff --git a/client/src/static/icons/regular/bow-arrow.svg b/src/static/icons/regular/bow-arrow.svg similarity index 100% rename from client/src/static/icons/regular/bow-arrow.svg rename to src/static/icons/regular/bow-arrow.svg diff --git a/client/src/static/icons/regular/bowling-ball.svg b/src/static/icons/regular/bowling-ball.svg similarity index 100% rename from client/src/static/icons/regular/bowling-ball.svg rename to src/static/icons/regular/bowling-ball.svg diff --git a/client/src/static/icons/regular/bowling-pins.svg b/src/static/icons/regular/bowling-pins.svg similarity index 100% rename from client/src/static/icons/regular/bowling-pins.svg rename to src/static/icons/regular/bowling-pins.svg diff --git a/client/src/static/icons/regular/box-alt.svg b/src/static/icons/regular/box-alt.svg similarity index 100% rename from client/src/static/icons/regular/box-alt.svg rename to src/static/icons/regular/box-alt.svg diff --git a/client/src/static/icons/regular/box-ballot.svg b/src/static/icons/regular/box-ballot.svg similarity index 100% rename from client/src/static/icons/regular/box-ballot.svg rename to src/static/icons/regular/box-ballot.svg diff --git a/client/src/static/icons/regular/box-check.svg b/src/static/icons/regular/box-check.svg similarity index 100% rename from client/src/static/icons/regular/box-check.svg rename to src/static/icons/regular/box-check.svg diff --git a/client/src/static/icons/regular/box-fragile.svg b/src/static/icons/regular/box-fragile.svg similarity index 100% rename from client/src/static/icons/regular/box-fragile.svg rename to src/static/icons/regular/box-fragile.svg diff --git a/client/src/static/icons/regular/box-full.svg b/src/static/icons/regular/box-full.svg similarity index 100% rename from client/src/static/icons/regular/box-full.svg rename to src/static/icons/regular/box-full.svg diff --git a/client/src/static/icons/regular/box-heart.svg b/src/static/icons/regular/box-heart.svg similarity index 100% rename from client/src/static/icons/regular/box-heart.svg rename to src/static/icons/regular/box-heart.svg diff --git a/client/src/static/icons/regular/box-open.svg b/src/static/icons/regular/box-open.svg similarity index 100% rename from client/src/static/icons/regular/box-open.svg rename to src/static/icons/regular/box-open.svg diff --git a/client/src/static/icons/regular/box-up.svg b/src/static/icons/regular/box-up.svg similarity index 100% rename from client/src/static/icons/regular/box-up.svg rename to src/static/icons/regular/box-up.svg diff --git a/client/src/static/icons/regular/box-usd.svg b/src/static/icons/regular/box-usd.svg similarity index 100% rename from client/src/static/icons/regular/box-usd.svg rename to src/static/icons/regular/box-usd.svg diff --git a/client/src/static/icons/regular/box.svg b/src/static/icons/regular/box.svg similarity index 100% rename from client/src/static/icons/regular/box.svg rename to src/static/icons/regular/box.svg diff --git a/client/src/static/icons/regular/boxes-alt.svg b/src/static/icons/regular/boxes-alt.svg similarity index 100% rename from client/src/static/icons/regular/boxes-alt.svg rename to src/static/icons/regular/boxes-alt.svg diff --git a/client/src/static/icons/regular/boxes.svg b/src/static/icons/regular/boxes.svg similarity index 100% rename from client/src/static/icons/regular/boxes.svg rename to src/static/icons/regular/boxes.svg diff --git a/client/src/static/icons/regular/boxing-glove.svg b/src/static/icons/regular/boxing-glove.svg similarity index 100% rename from client/src/static/icons/regular/boxing-glove.svg rename to src/static/icons/regular/boxing-glove.svg diff --git a/client/src/static/icons/regular/brackets-curly.svg b/src/static/icons/regular/brackets-curly.svg similarity index 100% rename from client/src/static/icons/regular/brackets-curly.svg rename to src/static/icons/regular/brackets-curly.svg diff --git a/client/src/static/icons/regular/brackets.svg b/src/static/icons/regular/brackets.svg similarity index 100% rename from client/src/static/icons/regular/brackets.svg rename to src/static/icons/regular/brackets.svg diff --git a/client/src/static/icons/regular/braille.svg b/src/static/icons/regular/braille.svg similarity index 100% rename from client/src/static/icons/regular/braille.svg rename to src/static/icons/regular/braille.svg diff --git a/client/src/static/icons/regular/brain.svg b/src/static/icons/regular/brain.svg similarity index 100% rename from client/src/static/icons/regular/brain.svg rename to src/static/icons/regular/brain.svg diff --git a/client/src/static/icons/regular/bread-loaf.svg b/src/static/icons/regular/bread-loaf.svg similarity index 100% rename from client/src/static/icons/regular/bread-loaf.svg rename to src/static/icons/regular/bread-loaf.svg diff --git a/client/src/static/icons/regular/bread-slice.svg b/src/static/icons/regular/bread-slice.svg similarity index 100% rename from client/src/static/icons/regular/bread-slice.svg rename to src/static/icons/regular/bread-slice.svg diff --git a/client/src/static/icons/regular/briefcase-medical.svg b/src/static/icons/regular/briefcase-medical.svg similarity index 100% rename from client/src/static/icons/regular/briefcase-medical.svg rename to src/static/icons/regular/briefcase-medical.svg diff --git a/client/src/static/icons/regular/briefcase.svg b/src/static/icons/regular/briefcase.svg similarity index 100% rename from client/src/static/icons/regular/briefcase.svg rename to src/static/icons/regular/briefcase.svg diff --git a/client/src/static/icons/regular/bring-forward.svg b/src/static/icons/regular/bring-forward.svg similarity index 100% rename from client/src/static/icons/regular/bring-forward.svg rename to src/static/icons/regular/bring-forward.svg diff --git a/client/src/static/icons/regular/bring-front.svg b/src/static/icons/regular/bring-front.svg similarity index 100% rename from client/src/static/icons/regular/bring-front.svg rename to src/static/icons/regular/bring-front.svg diff --git a/client/src/static/icons/regular/broadcast-tower.svg b/src/static/icons/regular/broadcast-tower.svg similarity index 100% rename from client/src/static/icons/regular/broadcast-tower.svg rename to src/static/icons/regular/broadcast-tower.svg diff --git a/client/src/static/icons/regular/broom.svg b/src/static/icons/regular/broom.svg similarity index 100% rename from client/src/static/icons/regular/broom.svg rename to src/static/icons/regular/broom.svg diff --git a/client/src/static/icons/regular/browser.svg b/src/static/icons/regular/browser.svg similarity index 100% rename from client/src/static/icons/regular/browser.svg rename to src/static/icons/regular/browser.svg diff --git a/client/src/static/icons/regular/brush.svg b/src/static/icons/regular/brush.svg similarity index 100% rename from client/src/static/icons/regular/brush.svg rename to src/static/icons/regular/brush.svg diff --git a/client/src/static/icons/regular/bug.svg b/src/static/icons/regular/bug.svg similarity index 100% rename from client/src/static/icons/regular/bug.svg rename to src/static/icons/regular/bug.svg diff --git a/client/src/static/icons/regular/building.svg b/src/static/icons/regular/building.svg similarity index 100% rename from client/src/static/icons/regular/building.svg rename to src/static/icons/regular/building.svg diff --git a/client/src/static/icons/regular/bullhorn.svg b/src/static/icons/regular/bullhorn.svg similarity index 100% rename from client/src/static/icons/regular/bullhorn.svg rename to src/static/icons/regular/bullhorn.svg diff --git a/client/src/static/icons/regular/bullseye-arrow.svg b/src/static/icons/regular/bullseye-arrow.svg similarity index 100% rename from client/src/static/icons/regular/bullseye-arrow.svg rename to src/static/icons/regular/bullseye-arrow.svg diff --git a/client/src/static/icons/regular/bullseye-pointer.svg b/src/static/icons/regular/bullseye-pointer.svg similarity index 100% rename from client/src/static/icons/regular/bullseye-pointer.svg rename to src/static/icons/regular/bullseye-pointer.svg diff --git a/client/src/static/icons/regular/bullseye.svg b/src/static/icons/regular/bullseye.svg similarity index 100% rename from client/src/static/icons/regular/bullseye.svg rename to src/static/icons/regular/bullseye.svg diff --git a/client/src/static/icons/regular/burger-soda.svg b/src/static/icons/regular/burger-soda.svg similarity index 100% rename from client/src/static/icons/regular/burger-soda.svg rename to src/static/icons/regular/burger-soda.svg diff --git a/client/src/static/icons/regular/burn.svg b/src/static/icons/regular/burn.svg similarity index 100% rename from client/src/static/icons/regular/burn.svg rename to src/static/icons/regular/burn.svg diff --git a/client/src/static/icons/regular/burrito.svg b/src/static/icons/regular/burrito.svg similarity index 100% rename from client/src/static/icons/regular/burrito.svg rename to src/static/icons/regular/burrito.svg diff --git a/client/src/static/icons/regular/bus-alt.svg b/src/static/icons/regular/bus-alt.svg similarity index 100% rename from client/src/static/icons/regular/bus-alt.svg rename to src/static/icons/regular/bus-alt.svg diff --git a/client/src/static/icons/regular/bus-school.svg b/src/static/icons/regular/bus-school.svg similarity index 100% rename from client/src/static/icons/regular/bus-school.svg rename to src/static/icons/regular/bus-school.svg diff --git a/client/src/static/icons/regular/bus.svg b/src/static/icons/regular/bus.svg similarity index 100% rename from client/src/static/icons/regular/bus.svg rename to src/static/icons/regular/bus.svg diff --git a/client/src/static/icons/regular/business-time.svg b/src/static/icons/regular/business-time.svg similarity index 100% rename from client/src/static/icons/regular/business-time.svg rename to src/static/icons/regular/business-time.svg diff --git a/client/src/static/icons/regular/cabinet-filing.svg b/src/static/icons/regular/cabinet-filing.svg similarity index 100% rename from client/src/static/icons/regular/cabinet-filing.svg rename to src/static/icons/regular/cabinet-filing.svg diff --git a/client/src/static/icons/regular/cactus.svg b/src/static/icons/regular/cactus.svg similarity index 100% rename from client/src/static/icons/regular/cactus.svg rename to src/static/icons/regular/cactus.svg diff --git a/client/src/static/icons/regular/calculator-alt.svg b/src/static/icons/regular/calculator-alt.svg similarity index 100% rename from client/src/static/icons/regular/calculator-alt.svg rename to src/static/icons/regular/calculator-alt.svg diff --git a/client/src/static/icons/regular/calculator.svg b/src/static/icons/regular/calculator.svg similarity index 100% rename from client/src/static/icons/regular/calculator.svg rename to src/static/icons/regular/calculator.svg diff --git a/client/src/static/icons/regular/calendar-alt.svg b/src/static/icons/regular/calendar-alt.svg similarity index 100% rename from client/src/static/icons/regular/calendar-alt.svg rename to src/static/icons/regular/calendar-alt.svg diff --git a/client/src/static/icons/regular/calendar-check.svg b/src/static/icons/regular/calendar-check.svg similarity index 100% rename from client/src/static/icons/regular/calendar-check.svg rename to src/static/icons/regular/calendar-check.svg diff --git a/client/src/static/icons/regular/calendar-day.svg b/src/static/icons/regular/calendar-day.svg similarity index 100% rename from client/src/static/icons/regular/calendar-day.svg rename to src/static/icons/regular/calendar-day.svg diff --git a/client/src/static/icons/regular/calendar-edit.svg b/src/static/icons/regular/calendar-edit.svg similarity index 100% rename from client/src/static/icons/regular/calendar-edit.svg rename to src/static/icons/regular/calendar-edit.svg diff --git a/client/src/static/icons/regular/calendar-exclamation.svg b/src/static/icons/regular/calendar-exclamation.svg similarity index 100% rename from client/src/static/icons/regular/calendar-exclamation.svg rename to src/static/icons/regular/calendar-exclamation.svg diff --git a/client/src/static/icons/regular/calendar-minus.svg b/src/static/icons/regular/calendar-minus.svg similarity index 100% rename from client/src/static/icons/regular/calendar-minus.svg rename to src/static/icons/regular/calendar-minus.svg diff --git a/client/src/static/icons/regular/calendar-plus.svg b/src/static/icons/regular/calendar-plus.svg similarity index 100% rename from client/src/static/icons/regular/calendar-plus.svg rename to src/static/icons/regular/calendar-plus.svg diff --git a/client/src/static/icons/regular/calendar-star.svg b/src/static/icons/regular/calendar-star.svg similarity index 100% rename from client/src/static/icons/regular/calendar-star.svg rename to src/static/icons/regular/calendar-star.svg diff --git a/client/src/static/icons/regular/calendar-times.svg b/src/static/icons/regular/calendar-times.svg similarity index 100% rename from client/src/static/icons/regular/calendar-times.svg rename to src/static/icons/regular/calendar-times.svg diff --git a/client/src/static/icons/regular/calendar-week.svg b/src/static/icons/regular/calendar-week.svg similarity index 100% rename from client/src/static/icons/regular/calendar-week.svg rename to src/static/icons/regular/calendar-week.svg diff --git a/client/src/static/icons/regular/calendar.svg b/src/static/icons/regular/calendar.svg similarity index 100% rename from client/src/static/icons/regular/calendar.svg rename to src/static/icons/regular/calendar.svg diff --git a/client/src/static/icons/regular/camcorder.svg b/src/static/icons/regular/camcorder.svg similarity index 100% rename from client/src/static/icons/regular/camcorder.svg rename to src/static/icons/regular/camcorder.svg diff --git a/client/src/static/icons/regular/camera-alt.svg b/src/static/icons/regular/camera-alt.svg similarity index 100% rename from client/src/static/icons/regular/camera-alt.svg rename to src/static/icons/regular/camera-alt.svg diff --git a/client/src/static/icons/regular/camera-home.svg b/src/static/icons/regular/camera-home.svg similarity index 100% rename from client/src/static/icons/regular/camera-home.svg rename to src/static/icons/regular/camera-home.svg diff --git a/client/src/static/icons/regular/camera-movie.svg b/src/static/icons/regular/camera-movie.svg similarity index 100% rename from client/src/static/icons/regular/camera-movie.svg rename to src/static/icons/regular/camera-movie.svg diff --git a/client/src/static/icons/regular/camera-polaroid.svg b/src/static/icons/regular/camera-polaroid.svg similarity index 100% rename from client/src/static/icons/regular/camera-polaroid.svg rename to src/static/icons/regular/camera-polaroid.svg diff --git a/client/src/static/icons/regular/camera-retro.svg b/src/static/icons/regular/camera-retro.svg similarity index 100% rename from client/src/static/icons/regular/camera-retro.svg rename to src/static/icons/regular/camera-retro.svg diff --git a/client/src/static/icons/regular/camera.svg b/src/static/icons/regular/camera.svg similarity index 100% rename from client/src/static/icons/regular/camera.svg rename to src/static/icons/regular/camera.svg diff --git a/client/src/static/icons/regular/campfire.svg b/src/static/icons/regular/campfire.svg similarity index 100% rename from client/src/static/icons/regular/campfire.svg rename to src/static/icons/regular/campfire.svg diff --git a/client/src/static/icons/regular/campground.svg b/src/static/icons/regular/campground.svg similarity index 100% rename from client/src/static/icons/regular/campground.svg rename to src/static/icons/regular/campground.svg diff --git a/client/src/static/icons/regular/candle-holder.svg b/src/static/icons/regular/candle-holder.svg similarity index 100% rename from client/src/static/icons/regular/candle-holder.svg rename to src/static/icons/regular/candle-holder.svg diff --git a/client/src/static/icons/regular/candy-cane.svg b/src/static/icons/regular/candy-cane.svg similarity index 100% rename from client/src/static/icons/regular/candy-cane.svg rename to src/static/icons/regular/candy-cane.svg diff --git a/client/src/static/icons/regular/candy-corn.svg b/src/static/icons/regular/candy-corn.svg similarity index 100% rename from client/src/static/icons/regular/candy-corn.svg rename to src/static/icons/regular/candy-corn.svg diff --git a/client/src/static/icons/regular/cannabis.svg b/src/static/icons/regular/cannabis.svg similarity index 100% rename from client/src/static/icons/regular/cannabis.svg rename to src/static/icons/regular/cannabis.svg diff --git a/client/src/static/icons/regular/capsules.svg b/src/static/icons/regular/capsules.svg similarity index 100% rename from client/src/static/icons/regular/capsules.svg rename to src/static/icons/regular/capsules.svg diff --git a/client/src/static/icons/regular/car-alt.svg b/src/static/icons/regular/car-alt.svg similarity index 100% rename from client/src/static/icons/regular/car-alt.svg rename to src/static/icons/regular/car-alt.svg diff --git a/client/src/static/icons/regular/car-battery.svg b/src/static/icons/regular/car-battery.svg similarity index 100% rename from client/src/static/icons/regular/car-battery.svg rename to src/static/icons/regular/car-battery.svg diff --git a/client/src/static/icons/regular/car-building.svg b/src/static/icons/regular/car-building.svg similarity index 100% rename from client/src/static/icons/regular/car-building.svg rename to src/static/icons/regular/car-building.svg diff --git a/client/src/static/icons/regular/car-bump.svg b/src/static/icons/regular/car-bump.svg similarity index 100% rename from client/src/static/icons/regular/car-bump.svg rename to src/static/icons/regular/car-bump.svg diff --git a/client/src/static/icons/regular/car-bus.svg b/src/static/icons/regular/car-bus.svg similarity index 100% rename from client/src/static/icons/regular/car-bus.svg rename to src/static/icons/regular/car-bus.svg diff --git a/client/src/static/icons/regular/car-crash.svg b/src/static/icons/regular/car-crash.svg similarity index 100% rename from client/src/static/icons/regular/car-crash.svg rename to src/static/icons/regular/car-crash.svg diff --git a/client/src/static/icons/regular/car-garage.svg b/src/static/icons/regular/car-garage.svg similarity index 100% rename from client/src/static/icons/regular/car-garage.svg rename to src/static/icons/regular/car-garage.svg diff --git a/client/src/static/icons/regular/car-mechanic.svg b/src/static/icons/regular/car-mechanic.svg similarity index 100% rename from client/src/static/icons/regular/car-mechanic.svg rename to src/static/icons/regular/car-mechanic.svg diff --git a/client/src/static/icons/regular/car-side.svg b/src/static/icons/regular/car-side.svg similarity index 100% rename from client/src/static/icons/regular/car-side.svg rename to src/static/icons/regular/car-side.svg diff --git a/client/src/static/icons/regular/car-tilt.svg b/src/static/icons/regular/car-tilt.svg similarity index 100% rename from client/src/static/icons/regular/car-tilt.svg rename to src/static/icons/regular/car-tilt.svg diff --git a/client/src/static/icons/regular/car-wash.svg b/src/static/icons/regular/car-wash.svg similarity index 100% rename from client/src/static/icons/regular/car-wash.svg rename to src/static/icons/regular/car-wash.svg diff --git a/client/src/static/icons/regular/car.svg b/src/static/icons/regular/car.svg similarity index 100% rename from client/src/static/icons/regular/car.svg rename to src/static/icons/regular/car.svg diff --git a/client/src/static/icons/regular/caravan-alt.svg b/src/static/icons/regular/caravan-alt.svg similarity index 100% rename from client/src/static/icons/regular/caravan-alt.svg rename to src/static/icons/regular/caravan-alt.svg diff --git a/client/src/static/icons/regular/caravan.svg b/src/static/icons/regular/caravan.svg similarity index 100% rename from client/src/static/icons/regular/caravan.svg rename to src/static/icons/regular/caravan.svg diff --git a/client/src/static/icons/regular/caret-circle-down.svg b/src/static/icons/regular/caret-circle-down.svg similarity index 100% rename from client/src/static/icons/regular/caret-circle-down.svg rename to src/static/icons/regular/caret-circle-down.svg diff --git a/client/src/static/icons/regular/caret-circle-left.svg b/src/static/icons/regular/caret-circle-left.svg similarity index 100% rename from client/src/static/icons/regular/caret-circle-left.svg rename to src/static/icons/regular/caret-circle-left.svg diff --git a/client/src/static/icons/regular/caret-circle-right.svg b/src/static/icons/regular/caret-circle-right.svg similarity index 100% rename from client/src/static/icons/regular/caret-circle-right.svg rename to src/static/icons/regular/caret-circle-right.svg diff --git a/client/src/static/icons/regular/caret-circle-up.svg b/src/static/icons/regular/caret-circle-up.svg similarity index 100% rename from client/src/static/icons/regular/caret-circle-up.svg rename to src/static/icons/regular/caret-circle-up.svg diff --git a/client/src/static/icons/regular/caret-down.svg b/src/static/icons/regular/caret-down.svg similarity index 100% rename from client/src/static/icons/regular/caret-down.svg rename to src/static/icons/regular/caret-down.svg diff --git a/client/src/static/icons/regular/caret-left.svg b/src/static/icons/regular/caret-left.svg similarity index 100% rename from client/src/static/icons/regular/caret-left.svg rename to src/static/icons/regular/caret-left.svg diff --git a/client/src/static/icons/regular/caret-right.svg b/src/static/icons/regular/caret-right.svg similarity index 100% rename from client/src/static/icons/regular/caret-right.svg rename to src/static/icons/regular/caret-right.svg diff --git a/client/src/static/icons/regular/caret-square-down.svg b/src/static/icons/regular/caret-square-down.svg similarity index 100% rename from client/src/static/icons/regular/caret-square-down.svg rename to src/static/icons/regular/caret-square-down.svg diff --git a/client/src/static/icons/regular/caret-square-left.svg b/src/static/icons/regular/caret-square-left.svg similarity index 100% rename from client/src/static/icons/regular/caret-square-left.svg rename to src/static/icons/regular/caret-square-left.svg diff --git a/client/src/static/icons/regular/caret-square-right.svg b/src/static/icons/regular/caret-square-right.svg similarity index 100% rename from client/src/static/icons/regular/caret-square-right.svg rename to src/static/icons/regular/caret-square-right.svg diff --git a/client/src/static/icons/regular/caret-square-up.svg b/src/static/icons/regular/caret-square-up.svg similarity index 100% rename from client/src/static/icons/regular/caret-square-up.svg rename to src/static/icons/regular/caret-square-up.svg diff --git a/client/src/static/icons/regular/caret-up.svg b/src/static/icons/regular/caret-up.svg similarity index 100% rename from client/src/static/icons/regular/caret-up.svg rename to src/static/icons/regular/caret-up.svg diff --git a/client/src/static/icons/regular/carrot.svg b/src/static/icons/regular/carrot.svg similarity index 100% rename from client/src/static/icons/regular/carrot.svg rename to src/static/icons/regular/carrot.svg diff --git a/client/src/static/icons/regular/cars.svg b/src/static/icons/regular/cars.svg similarity index 100% rename from client/src/static/icons/regular/cars.svg rename to src/static/icons/regular/cars.svg diff --git a/client/src/static/icons/regular/cart-arrow-down.svg b/src/static/icons/regular/cart-arrow-down.svg similarity index 100% rename from client/src/static/icons/regular/cart-arrow-down.svg rename to src/static/icons/regular/cart-arrow-down.svg diff --git a/client/src/static/icons/regular/cart-plus.svg b/src/static/icons/regular/cart-plus.svg similarity index 100% rename from client/src/static/icons/regular/cart-plus.svg rename to src/static/icons/regular/cart-plus.svg diff --git a/client/src/static/icons/regular/cash-register.svg b/src/static/icons/regular/cash-register.svg similarity index 100% rename from client/src/static/icons/regular/cash-register.svg rename to src/static/icons/regular/cash-register.svg diff --git a/client/src/static/icons/regular/cassette-tape.svg b/src/static/icons/regular/cassette-tape.svg similarity index 100% rename from client/src/static/icons/regular/cassette-tape.svg rename to src/static/icons/regular/cassette-tape.svg diff --git a/client/src/static/icons/regular/cat-space.svg b/src/static/icons/regular/cat-space.svg similarity index 100% rename from client/src/static/icons/regular/cat-space.svg rename to src/static/icons/regular/cat-space.svg diff --git a/client/src/static/icons/regular/cat.svg b/src/static/icons/regular/cat.svg similarity index 100% rename from client/src/static/icons/regular/cat.svg rename to src/static/icons/regular/cat.svg diff --git a/client/src/static/icons/regular/cauldron.svg b/src/static/icons/regular/cauldron.svg similarity index 100% rename from client/src/static/icons/regular/cauldron.svg rename to src/static/icons/regular/cauldron.svg diff --git a/client/src/static/icons/regular/cctv.svg b/src/static/icons/regular/cctv.svg similarity index 100% rename from client/src/static/icons/regular/cctv.svg rename to src/static/icons/regular/cctv.svg diff --git a/client/src/static/icons/regular/certificate.svg b/src/static/icons/regular/certificate.svg similarity index 100% rename from client/src/static/icons/regular/certificate.svg rename to src/static/icons/regular/certificate.svg diff --git a/client/src/static/icons/regular/chair-office.svg b/src/static/icons/regular/chair-office.svg similarity index 100% rename from client/src/static/icons/regular/chair-office.svg rename to src/static/icons/regular/chair-office.svg diff --git a/client/src/static/icons/regular/chair.svg b/src/static/icons/regular/chair.svg similarity index 100% rename from client/src/static/icons/regular/chair.svg rename to src/static/icons/regular/chair.svg diff --git a/client/src/static/icons/regular/chalkboard-teacher.svg b/src/static/icons/regular/chalkboard-teacher.svg similarity index 100% rename from client/src/static/icons/regular/chalkboard-teacher.svg rename to src/static/icons/regular/chalkboard-teacher.svg diff --git a/client/src/static/icons/regular/chalkboard.svg b/src/static/icons/regular/chalkboard.svg similarity index 100% rename from client/src/static/icons/regular/chalkboard.svg rename to src/static/icons/regular/chalkboard.svg diff --git a/client/src/static/icons/regular/charging-station.svg b/src/static/icons/regular/charging-station.svg similarity index 100% rename from client/src/static/icons/regular/charging-station.svg rename to src/static/icons/regular/charging-station.svg diff --git a/client/src/static/icons/regular/chart-area.svg b/src/static/icons/regular/chart-area.svg similarity index 100% rename from client/src/static/icons/regular/chart-area.svg rename to src/static/icons/regular/chart-area.svg diff --git a/client/src/static/icons/regular/chart-bar.svg b/src/static/icons/regular/chart-bar.svg similarity index 100% rename from client/src/static/icons/regular/chart-bar.svg rename to src/static/icons/regular/chart-bar.svg diff --git a/client/src/static/icons/regular/chart-line-down.svg b/src/static/icons/regular/chart-line-down.svg similarity index 100% rename from client/src/static/icons/regular/chart-line-down.svg rename to src/static/icons/regular/chart-line-down.svg diff --git a/client/src/static/icons/regular/chart-line.svg b/src/static/icons/regular/chart-line.svg similarity index 100% rename from client/src/static/icons/regular/chart-line.svg rename to src/static/icons/regular/chart-line.svg diff --git a/client/src/static/icons/regular/chart-network.svg b/src/static/icons/regular/chart-network.svg similarity index 100% rename from client/src/static/icons/regular/chart-network.svg rename to src/static/icons/regular/chart-network.svg diff --git a/client/src/static/icons/regular/chart-pie-alt.svg b/src/static/icons/regular/chart-pie-alt.svg similarity index 100% rename from client/src/static/icons/regular/chart-pie-alt.svg rename to src/static/icons/regular/chart-pie-alt.svg diff --git a/client/src/static/icons/regular/chart-pie.svg b/src/static/icons/regular/chart-pie.svg similarity index 100% rename from client/src/static/icons/regular/chart-pie.svg rename to src/static/icons/regular/chart-pie.svg diff --git a/client/src/static/icons/regular/chart-scatter.svg b/src/static/icons/regular/chart-scatter.svg similarity index 100% rename from client/src/static/icons/regular/chart-scatter.svg rename to src/static/icons/regular/chart-scatter.svg diff --git a/client/src/static/icons/regular/check-circle.svg b/src/static/icons/regular/check-circle.svg similarity index 100% rename from client/src/static/icons/regular/check-circle.svg rename to src/static/icons/regular/check-circle.svg diff --git a/client/src/static/icons/regular/check-double.svg b/src/static/icons/regular/check-double.svg similarity index 100% rename from client/src/static/icons/regular/check-double.svg rename to src/static/icons/regular/check-double.svg diff --git a/client/src/static/icons/regular/check-square.svg b/src/static/icons/regular/check-square.svg similarity index 100% rename from client/src/static/icons/regular/check-square.svg rename to src/static/icons/regular/check-square.svg diff --git a/client/src/static/icons/regular/check.svg b/src/static/icons/regular/check.svg similarity index 100% rename from client/src/static/icons/regular/check.svg rename to src/static/icons/regular/check.svg diff --git a/client/src/static/icons/regular/cheese-swiss.svg b/src/static/icons/regular/cheese-swiss.svg similarity index 100% rename from client/src/static/icons/regular/cheese-swiss.svg rename to src/static/icons/regular/cheese-swiss.svg diff --git a/client/src/static/icons/regular/cheese.svg b/src/static/icons/regular/cheese.svg similarity index 100% rename from client/src/static/icons/regular/cheese.svg rename to src/static/icons/regular/cheese.svg diff --git a/client/src/static/icons/regular/cheeseburger.svg b/src/static/icons/regular/cheeseburger.svg similarity index 100% rename from client/src/static/icons/regular/cheeseburger.svg rename to src/static/icons/regular/cheeseburger.svg diff --git a/client/src/static/icons/regular/chess-bishop-alt.svg b/src/static/icons/regular/chess-bishop-alt.svg similarity index 100% rename from client/src/static/icons/regular/chess-bishop-alt.svg rename to src/static/icons/regular/chess-bishop-alt.svg diff --git a/client/src/static/icons/regular/chess-bishop.svg b/src/static/icons/regular/chess-bishop.svg similarity index 100% rename from client/src/static/icons/regular/chess-bishop.svg rename to src/static/icons/regular/chess-bishop.svg diff --git a/client/src/static/icons/regular/chess-board.svg b/src/static/icons/regular/chess-board.svg similarity index 100% rename from client/src/static/icons/regular/chess-board.svg rename to src/static/icons/regular/chess-board.svg diff --git a/client/src/static/icons/regular/chess-clock-alt.svg b/src/static/icons/regular/chess-clock-alt.svg similarity index 100% rename from client/src/static/icons/regular/chess-clock-alt.svg rename to src/static/icons/regular/chess-clock-alt.svg diff --git a/client/src/static/icons/regular/chess-clock.svg b/src/static/icons/regular/chess-clock.svg similarity index 100% rename from client/src/static/icons/regular/chess-clock.svg rename to src/static/icons/regular/chess-clock.svg diff --git a/client/src/static/icons/regular/chess-king-alt.svg b/src/static/icons/regular/chess-king-alt.svg similarity index 100% rename from client/src/static/icons/regular/chess-king-alt.svg rename to src/static/icons/regular/chess-king-alt.svg diff --git a/client/src/static/icons/regular/chess-king.svg b/src/static/icons/regular/chess-king.svg similarity index 100% rename from client/src/static/icons/regular/chess-king.svg rename to src/static/icons/regular/chess-king.svg diff --git a/client/src/static/icons/regular/chess-knight-alt.svg b/src/static/icons/regular/chess-knight-alt.svg similarity index 100% rename from client/src/static/icons/regular/chess-knight-alt.svg rename to src/static/icons/regular/chess-knight-alt.svg diff --git a/client/src/static/icons/regular/chess-knight.svg b/src/static/icons/regular/chess-knight.svg similarity index 100% rename from client/src/static/icons/regular/chess-knight.svg rename to src/static/icons/regular/chess-knight.svg diff --git a/client/src/static/icons/regular/chess-pawn-alt.svg b/src/static/icons/regular/chess-pawn-alt.svg similarity index 100% rename from client/src/static/icons/regular/chess-pawn-alt.svg rename to src/static/icons/regular/chess-pawn-alt.svg diff --git a/client/src/static/icons/regular/chess-pawn.svg b/src/static/icons/regular/chess-pawn.svg similarity index 100% rename from client/src/static/icons/regular/chess-pawn.svg rename to src/static/icons/regular/chess-pawn.svg diff --git a/client/src/static/icons/regular/chess-queen-alt.svg b/src/static/icons/regular/chess-queen-alt.svg similarity index 100% rename from client/src/static/icons/regular/chess-queen-alt.svg rename to src/static/icons/regular/chess-queen-alt.svg diff --git a/client/src/static/icons/regular/chess-queen.svg b/src/static/icons/regular/chess-queen.svg similarity index 100% rename from client/src/static/icons/regular/chess-queen.svg rename to src/static/icons/regular/chess-queen.svg diff --git a/client/src/static/icons/regular/chess-rook-alt.svg b/src/static/icons/regular/chess-rook-alt.svg similarity index 100% rename from client/src/static/icons/regular/chess-rook-alt.svg rename to src/static/icons/regular/chess-rook-alt.svg diff --git a/client/src/static/icons/regular/chess-rook.svg b/src/static/icons/regular/chess-rook.svg similarity index 100% rename from client/src/static/icons/regular/chess-rook.svg rename to src/static/icons/regular/chess-rook.svg diff --git a/client/src/static/icons/regular/chess.svg b/src/static/icons/regular/chess.svg similarity index 100% rename from client/src/static/icons/regular/chess.svg rename to src/static/icons/regular/chess.svg diff --git a/client/src/static/icons/regular/chevron-circle-down.svg b/src/static/icons/regular/chevron-circle-down.svg similarity index 100% rename from client/src/static/icons/regular/chevron-circle-down.svg rename to src/static/icons/regular/chevron-circle-down.svg diff --git a/client/src/static/icons/regular/chevron-circle-left.svg b/src/static/icons/regular/chevron-circle-left.svg similarity index 100% rename from client/src/static/icons/regular/chevron-circle-left.svg rename to src/static/icons/regular/chevron-circle-left.svg diff --git a/client/src/static/icons/regular/chevron-circle-right.svg b/src/static/icons/regular/chevron-circle-right.svg similarity index 100% rename from client/src/static/icons/regular/chevron-circle-right.svg rename to src/static/icons/regular/chevron-circle-right.svg diff --git a/client/src/static/icons/regular/chevron-circle-up.svg b/src/static/icons/regular/chevron-circle-up.svg similarity index 100% rename from client/src/static/icons/regular/chevron-circle-up.svg rename to src/static/icons/regular/chevron-circle-up.svg diff --git a/client/src/static/icons/regular/chevron-double-down.svg b/src/static/icons/regular/chevron-double-down.svg similarity index 100% rename from client/src/static/icons/regular/chevron-double-down.svg rename to src/static/icons/regular/chevron-double-down.svg diff --git a/client/src/static/icons/regular/chevron-double-left.svg b/src/static/icons/regular/chevron-double-left.svg similarity index 100% rename from client/src/static/icons/regular/chevron-double-left.svg rename to src/static/icons/regular/chevron-double-left.svg diff --git a/client/src/static/icons/regular/chevron-double-right.svg b/src/static/icons/regular/chevron-double-right.svg similarity index 100% rename from client/src/static/icons/regular/chevron-double-right.svg rename to src/static/icons/regular/chevron-double-right.svg diff --git a/client/src/static/icons/regular/chevron-double-up.svg b/src/static/icons/regular/chevron-double-up.svg similarity index 100% rename from client/src/static/icons/regular/chevron-double-up.svg rename to src/static/icons/regular/chevron-double-up.svg diff --git a/client/src/static/icons/regular/chevron-down.svg b/src/static/icons/regular/chevron-down.svg similarity index 100% rename from client/src/static/icons/regular/chevron-down.svg rename to src/static/icons/regular/chevron-down.svg diff --git a/client/src/static/icons/regular/chevron-left.svg b/src/static/icons/regular/chevron-left.svg similarity index 100% rename from client/src/static/icons/regular/chevron-left.svg rename to src/static/icons/regular/chevron-left.svg diff --git a/client/src/static/icons/regular/chevron-right.svg b/src/static/icons/regular/chevron-right.svg similarity index 100% rename from client/src/static/icons/regular/chevron-right.svg rename to src/static/icons/regular/chevron-right.svg diff --git a/client/src/static/icons/regular/chevron-square-down.svg b/src/static/icons/regular/chevron-square-down.svg similarity index 100% rename from client/src/static/icons/regular/chevron-square-down.svg rename to src/static/icons/regular/chevron-square-down.svg diff --git a/client/src/static/icons/regular/chevron-square-left.svg b/src/static/icons/regular/chevron-square-left.svg similarity index 100% rename from client/src/static/icons/regular/chevron-square-left.svg rename to src/static/icons/regular/chevron-square-left.svg diff --git a/client/src/static/icons/regular/chevron-square-right.svg b/src/static/icons/regular/chevron-square-right.svg similarity index 100% rename from client/src/static/icons/regular/chevron-square-right.svg rename to src/static/icons/regular/chevron-square-right.svg diff --git a/client/src/static/icons/regular/chevron-square-up.svg b/src/static/icons/regular/chevron-square-up.svg similarity index 100% rename from client/src/static/icons/regular/chevron-square-up.svg rename to src/static/icons/regular/chevron-square-up.svg diff --git a/client/src/static/icons/regular/chevron-up.svg b/src/static/icons/regular/chevron-up.svg similarity index 100% rename from client/src/static/icons/regular/chevron-up.svg rename to src/static/icons/regular/chevron-up.svg diff --git a/client/src/static/icons/regular/child.svg b/src/static/icons/regular/child.svg similarity index 100% rename from client/src/static/icons/regular/child.svg rename to src/static/icons/regular/child.svg diff --git a/client/src/static/icons/regular/chimney.svg b/src/static/icons/regular/chimney.svg similarity index 100% rename from client/src/static/icons/regular/chimney.svg rename to src/static/icons/regular/chimney.svg diff --git a/client/src/static/icons/regular/church.svg b/src/static/icons/regular/church.svg similarity index 100% rename from client/src/static/icons/regular/church.svg rename to src/static/icons/regular/church.svg diff --git a/client/src/static/icons/regular/circle-notch.svg b/src/static/icons/regular/circle-notch.svg similarity index 100% rename from client/src/static/icons/regular/circle-notch.svg rename to src/static/icons/regular/circle-notch.svg diff --git a/client/src/static/icons/regular/circle.svg b/src/static/icons/regular/circle.svg similarity index 100% rename from client/src/static/icons/regular/circle.svg rename to src/static/icons/regular/circle.svg diff --git a/client/src/static/icons/regular/city.svg b/src/static/icons/regular/city.svg similarity index 100% rename from client/src/static/icons/regular/city.svg rename to src/static/icons/regular/city.svg diff --git a/client/src/static/icons/regular/clarinet.svg b/src/static/icons/regular/clarinet.svg similarity index 100% rename from client/src/static/icons/regular/clarinet.svg rename to src/static/icons/regular/clarinet.svg diff --git a/client/src/static/icons/regular/claw-marks.svg b/src/static/icons/regular/claw-marks.svg similarity index 100% rename from client/src/static/icons/regular/claw-marks.svg rename to src/static/icons/regular/claw-marks.svg diff --git a/client/src/static/icons/regular/clinic-medical.svg b/src/static/icons/regular/clinic-medical.svg similarity index 100% rename from client/src/static/icons/regular/clinic-medical.svg rename to src/static/icons/regular/clinic-medical.svg diff --git a/client/src/static/icons/regular/clipboard-check.svg b/src/static/icons/regular/clipboard-check.svg similarity index 100% rename from client/src/static/icons/regular/clipboard-check.svg rename to src/static/icons/regular/clipboard-check.svg diff --git a/client/src/static/icons/regular/clipboard-list-check.svg b/src/static/icons/regular/clipboard-list-check.svg similarity index 100% rename from client/src/static/icons/regular/clipboard-list-check.svg rename to src/static/icons/regular/clipboard-list-check.svg diff --git a/client/src/static/icons/regular/clipboard-list.svg b/src/static/icons/regular/clipboard-list.svg similarity index 100% rename from client/src/static/icons/regular/clipboard-list.svg rename to src/static/icons/regular/clipboard-list.svg diff --git a/client/src/static/icons/regular/clipboard-prescription.svg b/src/static/icons/regular/clipboard-prescription.svg similarity index 100% rename from client/src/static/icons/regular/clipboard-prescription.svg rename to src/static/icons/regular/clipboard-prescription.svg diff --git a/client/src/static/icons/regular/clipboard-user.svg b/src/static/icons/regular/clipboard-user.svg similarity index 100% rename from client/src/static/icons/regular/clipboard-user.svg rename to src/static/icons/regular/clipboard-user.svg diff --git a/client/src/static/icons/regular/clipboard.svg b/src/static/icons/regular/clipboard.svg similarity index 100% rename from client/src/static/icons/regular/clipboard.svg rename to src/static/icons/regular/clipboard.svg diff --git a/client/src/static/icons/regular/clock.svg b/src/static/icons/regular/clock.svg similarity index 100% rename from client/src/static/icons/regular/clock.svg rename to src/static/icons/regular/clock.svg diff --git a/client/src/static/icons/regular/clone.svg b/src/static/icons/regular/clone.svg similarity index 100% rename from client/src/static/icons/regular/clone.svg rename to src/static/icons/regular/clone.svg diff --git a/client/src/static/icons/regular/closed-captioning.svg b/src/static/icons/regular/closed-captioning.svg similarity index 100% rename from client/src/static/icons/regular/closed-captioning.svg rename to src/static/icons/regular/closed-captioning.svg diff --git a/client/src/static/icons/regular/cloud-download-alt.svg b/src/static/icons/regular/cloud-download-alt.svg similarity index 100% rename from client/src/static/icons/regular/cloud-download-alt.svg rename to src/static/icons/regular/cloud-download-alt.svg diff --git a/client/src/static/icons/regular/cloud-download.svg b/src/static/icons/regular/cloud-download.svg similarity index 100% rename from client/src/static/icons/regular/cloud-download.svg rename to src/static/icons/regular/cloud-download.svg diff --git a/client/src/static/icons/regular/cloud-drizzle.svg b/src/static/icons/regular/cloud-drizzle.svg similarity index 100% rename from client/src/static/icons/regular/cloud-drizzle.svg rename to src/static/icons/regular/cloud-drizzle.svg diff --git a/client/src/static/icons/regular/cloud-hail-mixed.svg b/src/static/icons/regular/cloud-hail-mixed.svg similarity index 100% rename from client/src/static/icons/regular/cloud-hail-mixed.svg rename to src/static/icons/regular/cloud-hail-mixed.svg diff --git a/client/src/static/icons/regular/cloud-hail.svg b/src/static/icons/regular/cloud-hail.svg similarity index 100% rename from client/src/static/icons/regular/cloud-hail.svg rename to src/static/icons/regular/cloud-hail.svg diff --git a/client/src/static/icons/regular/cloud-meatball.svg b/src/static/icons/regular/cloud-meatball.svg similarity index 100% rename from client/src/static/icons/regular/cloud-meatball.svg rename to src/static/icons/regular/cloud-meatball.svg diff --git a/client/src/static/icons/regular/cloud-moon-rain.svg b/src/static/icons/regular/cloud-moon-rain.svg similarity index 100% rename from client/src/static/icons/regular/cloud-moon-rain.svg rename to src/static/icons/regular/cloud-moon-rain.svg diff --git a/client/src/static/icons/regular/cloud-moon.svg b/src/static/icons/regular/cloud-moon.svg similarity index 100% rename from client/src/static/icons/regular/cloud-moon.svg rename to src/static/icons/regular/cloud-moon.svg diff --git a/client/src/static/icons/regular/cloud-music.svg b/src/static/icons/regular/cloud-music.svg similarity index 100% rename from client/src/static/icons/regular/cloud-music.svg rename to src/static/icons/regular/cloud-music.svg diff --git a/client/src/static/icons/regular/cloud-rain.svg b/src/static/icons/regular/cloud-rain.svg similarity index 100% rename from client/src/static/icons/regular/cloud-rain.svg rename to src/static/icons/regular/cloud-rain.svg diff --git a/client/src/static/icons/regular/cloud-rainbow.svg b/src/static/icons/regular/cloud-rainbow.svg similarity index 100% rename from client/src/static/icons/regular/cloud-rainbow.svg rename to src/static/icons/regular/cloud-rainbow.svg diff --git a/client/src/static/icons/regular/cloud-showers-heavy.svg b/src/static/icons/regular/cloud-showers-heavy.svg similarity index 100% rename from client/src/static/icons/regular/cloud-showers-heavy.svg rename to src/static/icons/regular/cloud-showers-heavy.svg diff --git a/client/src/static/icons/regular/cloud-showers.svg b/src/static/icons/regular/cloud-showers.svg similarity index 100% rename from client/src/static/icons/regular/cloud-showers.svg rename to src/static/icons/regular/cloud-showers.svg diff --git a/client/src/static/icons/regular/cloud-sleet.svg b/src/static/icons/regular/cloud-sleet.svg similarity index 100% rename from client/src/static/icons/regular/cloud-sleet.svg rename to src/static/icons/regular/cloud-sleet.svg diff --git a/client/src/static/icons/regular/cloud-snow.svg b/src/static/icons/regular/cloud-snow.svg similarity index 100% rename from client/src/static/icons/regular/cloud-snow.svg rename to src/static/icons/regular/cloud-snow.svg diff --git a/client/src/static/icons/regular/cloud-sun-rain.svg b/src/static/icons/regular/cloud-sun-rain.svg similarity index 100% rename from client/src/static/icons/regular/cloud-sun-rain.svg rename to src/static/icons/regular/cloud-sun-rain.svg diff --git a/client/src/static/icons/regular/cloud-sun.svg b/src/static/icons/regular/cloud-sun.svg similarity index 100% rename from client/src/static/icons/regular/cloud-sun.svg rename to src/static/icons/regular/cloud-sun.svg diff --git a/client/src/static/icons/regular/cloud-upload-alt.svg b/src/static/icons/regular/cloud-upload-alt.svg similarity index 100% rename from client/src/static/icons/regular/cloud-upload-alt.svg rename to src/static/icons/regular/cloud-upload-alt.svg diff --git a/client/src/static/icons/regular/cloud-upload.svg b/src/static/icons/regular/cloud-upload.svg similarity index 100% rename from client/src/static/icons/regular/cloud-upload.svg rename to src/static/icons/regular/cloud-upload.svg diff --git a/client/src/static/icons/regular/cloud.svg b/src/static/icons/regular/cloud.svg similarity index 100% rename from client/src/static/icons/regular/cloud.svg rename to src/static/icons/regular/cloud.svg diff --git a/client/src/static/icons/regular/clouds-moon.svg b/src/static/icons/regular/clouds-moon.svg similarity index 100% rename from client/src/static/icons/regular/clouds-moon.svg rename to src/static/icons/regular/clouds-moon.svg diff --git a/client/src/static/icons/regular/clouds-sun.svg b/src/static/icons/regular/clouds-sun.svg similarity index 100% rename from client/src/static/icons/regular/clouds-sun.svg rename to src/static/icons/regular/clouds-sun.svg diff --git a/client/src/static/icons/regular/clouds.svg b/src/static/icons/regular/clouds.svg similarity index 100% rename from client/src/static/icons/regular/clouds.svg rename to src/static/icons/regular/clouds.svg diff --git a/client/src/static/icons/regular/club.svg b/src/static/icons/regular/club.svg similarity index 100% rename from client/src/static/icons/regular/club.svg rename to src/static/icons/regular/club.svg diff --git a/client/src/static/icons/regular/cocktail.svg b/src/static/icons/regular/cocktail.svg similarity index 100% rename from client/src/static/icons/regular/cocktail.svg rename to src/static/icons/regular/cocktail.svg diff --git a/client/src/static/icons/regular/code-branch.svg b/src/static/icons/regular/code-branch.svg similarity index 100% rename from client/src/static/icons/regular/code-branch.svg rename to src/static/icons/regular/code-branch.svg diff --git a/client/src/static/icons/regular/code-commit.svg b/src/static/icons/regular/code-commit.svg similarity index 100% rename from client/src/static/icons/regular/code-commit.svg rename to src/static/icons/regular/code-commit.svg diff --git a/client/src/static/icons/regular/code-merge.svg b/src/static/icons/regular/code-merge.svg similarity index 100% rename from client/src/static/icons/regular/code-merge.svg rename to src/static/icons/regular/code-merge.svg diff --git a/client/src/static/icons/regular/code.svg b/src/static/icons/regular/code.svg similarity index 100% rename from client/src/static/icons/regular/code.svg rename to src/static/icons/regular/code.svg diff --git a/client/src/static/icons/regular/coffee-pot.svg b/src/static/icons/regular/coffee-pot.svg similarity index 100% rename from client/src/static/icons/regular/coffee-pot.svg rename to src/static/icons/regular/coffee-pot.svg diff --git a/client/src/static/icons/regular/coffee-togo.svg b/src/static/icons/regular/coffee-togo.svg similarity index 100% rename from client/src/static/icons/regular/coffee-togo.svg rename to src/static/icons/regular/coffee-togo.svg diff --git a/client/src/static/icons/regular/coffee.svg b/src/static/icons/regular/coffee.svg similarity index 100% rename from client/src/static/icons/regular/coffee.svg rename to src/static/icons/regular/coffee.svg diff --git a/client/src/static/icons/regular/coffin.svg b/src/static/icons/regular/coffin.svg similarity index 100% rename from client/src/static/icons/regular/coffin.svg rename to src/static/icons/regular/coffin.svg diff --git a/client/src/static/icons/regular/cog.svg b/src/static/icons/regular/cog.svg similarity index 100% rename from client/src/static/icons/regular/cog.svg rename to src/static/icons/regular/cog.svg diff --git a/client/src/static/icons/regular/cogs.svg b/src/static/icons/regular/cogs.svg similarity index 100% rename from client/src/static/icons/regular/cogs.svg rename to src/static/icons/regular/cogs.svg diff --git a/client/src/static/icons/regular/coin.svg b/src/static/icons/regular/coin.svg similarity index 100% rename from client/src/static/icons/regular/coin.svg rename to src/static/icons/regular/coin.svg diff --git a/client/src/static/icons/regular/coins.svg b/src/static/icons/regular/coins.svg similarity index 100% rename from client/src/static/icons/regular/coins.svg rename to src/static/icons/regular/coins.svg diff --git a/client/src/static/icons/regular/columns.svg b/src/static/icons/regular/columns.svg similarity index 100% rename from client/src/static/icons/regular/columns.svg rename to src/static/icons/regular/columns.svg diff --git a/client/src/static/icons/regular/comet.svg b/src/static/icons/regular/comet.svg similarity index 100% rename from client/src/static/icons/regular/comet.svg rename to src/static/icons/regular/comet.svg diff --git a/client/src/static/icons/regular/comment-alt-check.svg b/src/static/icons/regular/comment-alt-check.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-check.svg rename to src/static/icons/regular/comment-alt-check.svg diff --git a/client/src/static/icons/regular/comment-alt-dollar.svg b/src/static/icons/regular/comment-alt-dollar.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-dollar.svg rename to src/static/icons/regular/comment-alt-dollar.svg diff --git a/client/src/static/icons/regular/comment-alt-dots.svg b/src/static/icons/regular/comment-alt-dots.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-dots.svg rename to src/static/icons/regular/comment-alt-dots.svg diff --git a/client/src/static/icons/regular/comment-alt-edit.svg b/src/static/icons/regular/comment-alt-edit.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-edit.svg rename to src/static/icons/regular/comment-alt-edit.svg diff --git a/client/src/static/icons/regular/comment-alt-exclamation.svg b/src/static/icons/regular/comment-alt-exclamation.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-exclamation.svg rename to src/static/icons/regular/comment-alt-exclamation.svg diff --git a/client/src/static/icons/regular/comment-alt-lines.svg b/src/static/icons/regular/comment-alt-lines.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-lines.svg rename to src/static/icons/regular/comment-alt-lines.svg diff --git a/client/src/static/icons/regular/comment-alt-medical.svg b/src/static/icons/regular/comment-alt-medical.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-medical.svg rename to src/static/icons/regular/comment-alt-medical.svg diff --git a/client/src/static/icons/regular/comment-alt-minus.svg b/src/static/icons/regular/comment-alt-minus.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-minus.svg rename to src/static/icons/regular/comment-alt-minus.svg diff --git a/client/src/static/icons/regular/comment-alt-music.svg b/src/static/icons/regular/comment-alt-music.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-music.svg rename to src/static/icons/regular/comment-alt-music.svg diff --git a/client/src/static/icons/regular/comment-alt-plus.svg b/src/static/icons/regular/comment-alt-plus.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-plus.svg rename to src/static/icons/regular/comment-alt-plus.svg diff --git a/client/src/static/icons/regular/comment-alt-slash.svg b/src/static/icons/regular/comment-alt-slash.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-slash.svg rename to src/static/icons/regular/comment-alt-slash.svg diff --git a/client/src/static/icons/regular/comment-alt-smile.svg b/src/static/icons/regular/comment-alt-smile.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-smile.svg rename to src/static/icons/regular/comment-alt-smile.svg diff --git a/client/src/static/icons/regular/comment-alt-times.svg b/src/static/icons/regular/comment-alt-times.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt-times.svg rename to src/static/icons/regular/comment-alt-times.svg diff --git a/client/src/static/icons/regular/comment-alt.svg b/src/static/icons/regular/comment-alt.svg similarity index 100% rename from client/src/static/icons/regular/comment-alt.svg rename to src/static/icons/regular/comment-alt.svg diff --git a/client/src/static/icons/regular/comment-check.svg b/src/static/icons/regular/comment-check.svg similarity index 100% rename from client/src/static/icons/regular/comment-check.svg rename to src/static/icons/regular/comment-check.svg diff --git a/client/src/static/icons/regular/comment-dollar.svg b/src/static/icons/regular/comment-dollar.svg similarity index 100% rename from client/src/static/icons/regular/comment-dollar.svg rename to src/static/icons/regular/comment-dollar.svg diff --git a/client/src/static/icons/regular/comment-dots.svg b/src/static/icons/regular/comment-dots.svg similarity index 100% rename from client/src/static/icons/regular/comment-dots.svg rename to src/static/icons/regular/comment-dots.svg diff --git a/client/src/static/icons/regular/comment-edit.svg b/src/static/icons/regular/comment-edit.svg similarity index 100% rename from client/src/static/icons/regular/comment-edit.svg rename to src/static/icons/regular/comment-edit.svg diff --git a/client/src/static/icons/regular/comment-exclamation.svg b/src/static/icons/regular/comment-exclamation.svg similarity index 100% rename from client/src/static/icons/regular/comment-exclamation.svg rename to src/static/icons/regular/comment-exclamation.svg diff --git a/client/src/static/icons/regular/comment-lines.svg b/src/static/icons/regular/comment-lines.svg similarity index 100% rename from client/src/static/icons/regular/comment-lines.svg rename to src/static/icons/regular/comment-lines.svg diff --git a/client/src/static/icons/regular/comment-medical.svg b/src/static/icons/regular/comment-medical.svg similarity index 100% rename from client/src/static/icons/regular/comment-medical.svg rename to src/static/icons/regular/comment-medical.svg diff --git a/client/src/static/icons/regular/comment-minus.svg b/src/static/icons/regular/comment-minus.svg similarity index 100% rename from client/src/static/icons/regular/comment-minus.svg rename to src/static/icons/regular/comment-minus.svg diff --git a/client/src/static/icons/regular/comment-music.svg b/src/static/icons/regular/comment-music.svg similarity index 100% rename from client/src/static/icons/regular/comment-music.svg rename to src/static/icons/regular/comment-music.svg diff --git a/client/src/static/icons/regular/comment-plus.svg b/src/static/icons/regular/comment-plus.svg similarity index 100% rename from client/src/static/icons/regular/comment-plus.svg rename to src/static/icons/regular/comment-plus.svg diff --git a/client/src/static/icons/regular/comment-slash.svg b/src/static/icons/regular/comment-slash.svg similarity index 100% rename from client/src/static/icons/regular/comment-slash.svg rename to src/static/icons/regular/comment-slash.svg diff --git a/client/src/static/icons/regular/comment-smile.svg b/src/static/icons/regular/comment-smile.svg similarity index 100% rename from client/src/static/icons/regular/comment-smile.svg rename to src/static/icons/regular/comment-smile.svg diff --git a/client/src/static/icons/regular/comment-times.svg b/src/static/icons/regular/comment-times.svg similarity index 100% rename from client/src/static/icons/regular/comment-times.svg rename to src/static/icons/regular/comment-times.svg diff --git a/client/src/static/icons/regular/comment.svg b/src/static/icons/regular/comment.svg similarity index 100% rename from client/src/static/icons/regular/comment.svg rename to src/static/icons/regular/comment.svg diff --git a/client/src/static/icons/regular/comments-alt-dollar.svg b/src/static/icons/regular/comments-alt-dollar.svg similarity index 100% rename from client/src/static/icons/regular/comments-alt-dollar.svg rename to src/static/icons/regular/comments-alt-dollar.svg diff --git a/client/src/static/icons/regular/comments-alt.svg b/src/static/icons/regular/comments-alt.svg similarity index 100% rename from client/src/static/icons/regular/comments-alt.svg rename to src/static/icons/regular/comments-alt.svg diff --git a/client/src/static/icons/regular/comments-dollar.svg b/src/static/icons/regular/comments-dollar.svg similarity index 100% rename from client/src/static/icons/regular/comments-dollar.svg rename to src/static/icons/regular/comments-dollar.svg diff --git a/client/src/static/icons/regular/comments.svg b/src/static/icons/regular/comments.svg similarity index 100% rename from client/src/static/icons/regular/comments.svg rename to src/static/icons/regular/comments.svg diff --git a/client/src/static/icons/regular/compact-disc.svg b/src/static/icons/regular/compact-disc.svg similarity index 100% rename from client/src/static/icons/regular/compact-disc.svg rename to src/static/icons/regular/compact-disc.svg diff --git a/client/src/static/icons/regular/compass-slash.svg b/src/static/icons/regular/compass-slash.svg similarity index 100% rename from client/src/static/icons/regular/compass-slash.svg rename to src/static/icons/regular/compass-slash.svg diff --git a/client/src/static/icons/regular/compass.svg b/src/static/icons/regular/compass.svg similarity index 100% rename from client/src/static/icons/regular/compass.svg rename to src/static/icons/regular/compass.svg diff --git a/client/src/static/icons/regular/compress-alt.svg b/src/static/icons/regular/compress-alt.svg similarity index 100% rename from client/src/static/icons/regular/compress-alt.svg rename to src/static/icons/regular/compress-alt.svg diff --git a/client/src/static/icons/regular/compress-arrows-alt.svg b/src/static/icons/regular/compress-arrows-alt.svg similarity index 100% rename from client/src/static/icons/regular/compress-arrows-alt.svg rename to src/static/icons/regular/compress-arrows-alt.svg diff --git a/client/src/static/icons/regular/compress-wide.svg b/src/static/icons/regular/compress-wide.svg similarity index 100% rename from client/src/static/icons/regular/compress-wide.svg rename to src/static/icons/regular/compress-wide.svg diff --git a/client/src/static/icons/regular/compress.svg b/src/static/icons/regular/compress.svg similarity index 100% rename from client/src/static/icons/regular/compress.svg rename to src/static/icons/regular/compress.svg diff --git a/client/src/static/icons/regular/computer-classic.svg b/src/static/icons/regular/computer-classic.svg similarity index 100% rename from client/src/static/icons/regular/computer-classic.svg rename to src/static/icons/regular/computer-classic.svg diff --git a/client/src/static/icons/regular/computer-speaker.svg b/src/static/icons/regular/computer-speaker.svg similarity index 100% rename from client/src/static/icons/regular/computer-speaker.svg rename to src/static/icons/regular/computer-speaker.svg diff --git a/client/src/static/icons/regular/concierge-bell.svg b/src/static/icons/regular/concierge-bell.svg similarity index 100% rename from client/src/static/icons/regular/concierge-bell.svg rename to src/static/icons/regular/concierge-bell.svg diff --git a/client/src/static/icons/regular/construction.svg b/src/static/icons/regular/construction.svg similarity index 100% rename from client/src/static/icons/regular/construction.svg rename to src/static/icons/regular/construction.svg diff --git a/client/src/static/icons/regular/container-storage.svg b/src/static/icons/regular/container-storage.svg similarity index 100% rename from client/src/static/icons/regular/container-storage.svg rename to src/static/icons/regular/container-storage.svg diff --git a/client/src/static/icons/regular/conveyor-belt-alt.svg b/src/static/icons/regular/conveyor-belt-alt.svg similarity index 100% rename from client/src/static/icons/regular/conveyor-belt-alt.svg rename to src/static/icons/regular/conveyor-belt-alt.svg diff --git a/client/src/static/icons/regular/conveyor-belt.svg b/src/static/icons/regular/conveyor-belt.svg similarity index 100% rename from client/src/static/icons/regular/conveyor-belt.svg rename to src/static/icons/regular/conveyor-belt.svg diff --git a/client/src/static/icons/regular/cookie-bite.svg b/src/static/icons/regular/cookie-bite.svg similarity index 100% rename from client/src/static/icons/regular/cookie-bite.svg rename to src/static/icons/regular/cookie-bite.svg diff --git a/client/src/static/icons/regular/cookie.svg b/src/static/icons/regular/cookie.svg similarity index 100% rename from client/src/static/icons/regular/cookie.svg rename to src/static/icons/regular/cookie.svg diff --git a/client/src/static/icons/regular/copy.svg b/src/static/icons/regular/copy.svg similarity index 100% rename from client/src/static/icons/regular/copy.svg rename to src/static/icons/regular/copy.svg diff --git a/client/src/static/icons/regular/copyright.svg b/src/static/icons/regular/copyright.svg similarity index 100% rename from client/src/static/icons/regular/copyright.svg rename to src/static/icons/regular/copyright.svg diff --git a/client/src/static/icons/regular/corn.svg b/src/static/icons/regular/corn.svg similarity index 100% rename from client/src/static/icons/regular/corn.svg rename to src/static/icons/regular/corn.svg diff --git a/client/src/static/icons/regular/couch.svg b/src/static/icons/regular/couch.svg similarity index 100% rename from client/src/static/icons/regular/couch.svg rename to src/static/icons/regular/couch.svg diff --git a/client/src/static/icons/regular/cow.svg b/src/static/icons/regular/cow.svg similarity index 100% rename from client/src/static/icons/regular/cow.svg rename to src/static/icons/regular/cow.svg diff --git a/client/src/static/icons/regular/cowbell-more.svg b/src/static/icons/regular/cowbell-more.svg similarity index 100% rename from client/src/static/icons/regular/cowbell-more.svg rename to src/static/icons/regular/cowbell-more.svg diff --git a/client/src/static/icons/regular/cowbell.svg b/src/static/icons/regular/cowbell.svg similarity index 100% rename from client/src/static/icons/regular/cowbell.svg rename to src/static/icons/regular/cowbell.svg diff --git a/client/src/static/icons/regular/credit-card-blank.svg b/src/static/icons/regular/credit-card-blank.svg similarity index 100% rename from client/src/static/icons/regular/credit-card-blank.svg rename to src/static/icons/regular/credit-card-blank.svg diff --git a/client/src/static/icons/regular/credit-card-front.svg b/src/static/icons/regular/credit-card-front.svg similarity index 100% rename from client/src/static/icons/regular/credit-card-front.svg rename to src/static/icons/regular/credit-card-front.svg diff --git a/client/src/static/icons/regular/credit-card.svg b/src/static/icons/regular/credit-card.svg similarity index 100% rename from client/src/static/icons/regular/credit-card.svg rename to src/static/icons/regular/credit-card.svg diff --git a/client/src/static/icons/regular/cricket.svg b/src/static/icons/regular/cricket.svg similarity index 100% rename from client/src/static/icons/regular/cricket.svg rename to src/static/icons/regular/cricket.svg diff --git a/client/src/static/icons/regular/croissant.svg b/src/static/icons/regular/croissant.svg similarity index 100% rename from client/src/static/icons/regular/croissant.svg rename to src/static/icons/regular/croissant.svg diff --git a/client/src/static/icons/regular/crop-alt.svg b/src/static/icons/regular/crop-alt.svg similarity index 100% rename from client/src/static/icons/regular/crop-alt.svg rename to src/static/icons/regular/crop-alt.svg diff --git a/client/src/static/icons/regular/crop.svg b/src/static/icons/regular/crop.svg similarity index 100% rename from client/src/static/icons/regular/crop.svg rename to src/static/icons/regular/crop.svg diff --git a/client/src/static/icons/regular/cross.svg b/src/static/icons/regular/cross.svg similarity index 100% rename from client/src/static/icons/regular/cross.svg rename to src/static/icons/regular/cross.svg diff --git a/client/src/static/icons/regular/crosshairs.svg b/src/static/icons/regular/crosshairs.svg similarity index 100% rename from client/src/static/icons/regular/crosshairs.svg rename to src/static/icons/regular/crosshairs.svg diff --git a/client/src/static/icons/regular/crow.svg b/src/static/icons/regular/crow.svg similarity index 100% rename from client/src/static/icons/regular/crow.svg rename to src/static/icons/regular/crow.svg diff --git a/client/src/static/icons/regular/crown.svg b/src/static/icons/regular/crown.svg similarity index 100% rename from client/src/static/icons/regular/crown.svg rename to src/static/icons/regular/crown.svg diff --git a/client/src/static/icons/regular/crutch.svg b/src/static/icons/regular/crutch.svg similarity index 100% rename from client/src/static/icons/regular/crutch.svg rename to src/static/icons/regular/crutch.svg diff --git a/client/src/static/icons/regular/crutches.svg b/src/static/icons/regular/crutches.svg similarity index 100% rename from client/src/static/icons/regular/crutches.svg rename to src/static/icons/regular/crutches.svg diff --git a/client/src/static/icons/regular/cube.svg b/src/static/icons/regular/cube.svg similarity index 100% rename from client/src/static/icons/regular/cube.svg rename to src/static/icons/regular/cube.svg diff --git a/client/src/static/icons/regular/cubes.svg b/src/static/icons/regular/cubes.svg similarity index 100% rename from client/src/static/icons/regular/cubes.svg rename to src/static/icons/regular/cubes.svg diff --git a/client/src/static/icons/regular/curling.svg b/src/static/icons/regular/curling.svg similarity index 100% rename from client/src/static/icons/regular/curling.svg rename to src/static/icons/regular/curling.svg diff --git a/client/src/static/icons/regular/cut.svg b/src/static/icons/regular/cut.svg similarity index 100% rename from client/src/static/icons/regular/cut.svg rename to src/static/icons/regular/cut.svg diff --git a/client/src/static/icons/regular/dagger.svg b/src/static/icons/regular/dagger.svg similarity index 100% rename from client/src/static/icons/regular/dagger.svg rename to src/static/icons/regular/dagger.svg diff --git a/client/src/static/icons/regular/database.svg b/src/static/icons/regular/database.svg similarity index 100% rename from client/src/static/icons/regular/database.svg rename to src/static/icons/regular/database.svg diff --git a/client/src/static/icons/regular/deaf.svg b/src/static/icons/regular/deaf.svg similarity index 100% rename from client/src/static/icons/regular/deaf.svg rename to src/static/icons/regular/deaf.svg diff --git a/client/src/static/icons/regular/debug.svg b/src/static/icons/regular/debug.svg similarity index 100% rename from client/src/static/icons/regular/debug.svg rename to src/static/icons/regular/debug.svg diff --git a/client/src/static/icons/regular/deer-rudolph.svg b/src/static/icons/regular/deer-rudolph.svg similarity index 100% rename from client/src/static/icons/regular/deer-rudolph.svg rename to src/static/icons/regular/deer-rudolph.svg diff --git a/client/src/static/icons/regular/deer.svg b/src/static/icons/regular/deer.svg similarity index 100% rename from client/src/static/icons/regular/deer.svg rename to src/static/icons/regular/deer.svg diff --git a/client/src/static/icons/regular/democrat.svg b/src/static/icons/regular/democrat.svg similarity index 100% rename from client/src/static/icons/regular/democrat.svg rename to src/static/icons/regular/democrat.svg diff --git a/client/src/static/icons/regular/desktop-alt.svg b/src/static/icons/regular/desktop-alt.svg similarity index 100% rename from client/src/static/icons/regular/desktop-alt.svg rename to src/static/icons/regular/desktop-alt.svg diff --git a/client/src/static/icons/regular/desktop.svg b/src/static/icons/regular/desktop.svg similarity index 100% rename from client/src/static/icons/regular/desktop.svg rename to src/static/icons/regular/desktop.svg diff --git a/client/src/static/icons/regular/dewpoint.svg b/src/static/icons/regular/dewpoint.svg similarity index 100% rename from client/src/static/icons/regular/dewpoint.svg rename to src/static/icons/regular/dewpoint.svg diff --git a/client/src/static/icons/regular/dharmachakra.svg b/src/static/icons/regular/dharmachakra.svg similarity index 100% rename from client/src/static/icons/regular/dharmachakra.svg rename to src/static/icons/regular/dharmachakra.svg diff --git a/client/src/static/icons/regular/diagnoses.svg b/src/static/icons/regular/diagnoses.svg similarity index 100% rename from client/src/static/icons/regular/diagnoses.svg rename to src/static/icons/regular/diagnoses.svg diff --git a/client/src/static/icons/regular/diamond.svg b/src/static/icons/regular/diamond.svg similarity index 100% rename from client/src/static/icons/regular/diamond.svg rename to src/static/icons/regular/diamond.svg diff --git a/client/src/static/icons/regular/dice-d10.svg b/src/static/icons/regular/dice-d10.svg similarity index 100% rename from client/src/static/icons/regular/dice-d10.svg rename to src/static/icons/regular/dice-d10.svg diff --git a/client/src/static/icons/regular/dice-d12.svg b/src/static/icons/regular/dice-d12.svg similarity index 100% rename from client/src/static/icons/regular/dice-d12.svg rename to src/static/icons/regular/dice-d12.svg diff --git a/client/src/static/icons/regular/dice-d20.svg b/src/static/icons/regular/dice-d20.svg similarity index 100% rename from client/src/static/icons/regular/dice-d20.svg rename to src/static/icons/regular/dice-d20.svg diff --git a/client/src/static/icons/regular/dice-d4.svg b/src/static/icons/regular/dice-d4.svg similarity index 100% rename from client/src/static/icons/regular/dice-d4.svg rename to src/static/icons/regular/dice-d4.svg diff --git a/client/src/static/icons/regular/dice-d6.svg b/src/static/icons/regular/dice-d6.svg similarity index 100% rename from client/src/static/icons/regular/dice-d6.svg rename to src/static/icons/regular/dice-d6.svg diff --git a/client/src/static/icons/regular/dice-d8.svg b/src/static/icons/regular/dice-d8.svg similarity index 100% rename from client/src/static/icons/regular/dice-d8.svg rename to src/static/icons/regular/dice-d8.svg diff --git a/client/src/static/icons/regular/dice-five.svg b/src/static/icons/regular/dice-five.svg similarity index 100% rename from client/src/static/icons/regular/dice-five.svg rename to src/static/icons/regular/dice-five.svg diff --git a/client/src/static/icons/regular/dice-four.svg b/src/static/icons/regular/dice-four.svg similarity index 100% rename from client/src/static/icons/regular/dice-four.svg rename to src/static/icons/regular/dice-four.svg diff --git a/client/src/static/icons/regular/dice-one.svg b/src/static/icons/regular/dice-one.svg similarity index 100% rename from client/src/static/icons/regular/dice-one.svg rename to src/static/icons/regular/dice-one.svg diff --git a/client/src/static/icons/regular/dice-six.svg b/src/static/icons/regular/dice-six.svg similarity index 100% rename from client/src/static/icons/regular/dice-six.svg rename to src/static/icons/regular/dice-six.svg diff --git a/client/src/static/icons/regular/dice-three.svg b/src/static/icons/regular/dice-three.svg similarity index 100% rename from client/src/static/icons/regular/dice-three.svg rename to src/static/icons/regular/dice-three.svg diff --git a/client/src/static/icons/regular/dice-two.svg b/src/static/icons/regular/dice-two.svg similarity index 100% rename from client/src/static/icons/regular/dice-two.svg rename to src/static/icons/regular/dice-two.svg diff --git a/client/src/static/icons/regular/dice.svg b/src/static/icons/regular/dice.svg similarity index 100% rename from client/src/static/icons/regular/dice.svg rename to src/static/icons/regular/dice.svg diff --git a/client/src/static/icons/regular/digging.svg b/src/static/icons/regular/digging.svg similarity index 100% rename from client/src/static/icons/regular/digging.svg rename to src/static/icons/regular/digging.svg diff --git a/client/src/static/icons/regular/digital-tachograph.svg b/src/static/icons/regular/digital-tachograph.svg similarity index 100% rename from client/src/static/icons/regular/digital-tachograph.svg rename to src/static/icons/regular/digital-tachograph.svg diff --git a/client/src/static/icons/regular/diploma.svg b/src/static/icons/regular/diploma.svg similarity index 100% rename from client/src/static/icons/regular/diploma.svg rename to src/static/icons/regular/diploma.svg diff --git a/client/src/static/icons/regular/directions.svg b/src/static/icons/regular/directions.svg similarity index 100% rename from client/src/static/icons/regular/directions.svg rename to src/static/icons/regular/directions.svg diff --git a/client/src/static/icons/regular/disc-drive.svg b/src/static/icons/regular/disc-drive.svg similarity index 100% rename from client/src/static/icons/regular/disc-drive.svg rename to src/static/icons/regular/disc-drive.svg diff --git a/client/src/static/icons/regular/disease.svg b/src/static/icons/regular/disease.svg similarity index 100% rename from client/src/static/icons/regular/disease.svg rename to src/static/icons/regular/disease.svg diff --git a/client/src/static/icons/regular/divide.svg b/src/static/icons/regular/divide.svg similarity index 100% rename from client/src/static/icons/regular/divide.svg rename to src/static/icons/regular/divide.svg diff --git a/client/src/static/icons/regular/dizzy.svg b/src/static/icons/regular/dizzy.svg similarity index 100% rename from client/src/static/icons/regular/dizzy.svg rename to src/static/icons/regular/dizzy.svg diff --git a/client/src/static/icons/regular/dna.svg b/src/static/icons/regular/dna.svg similarity index 100% rename from client/src/static/icons/regular/dna.svg rename to src/static/icons/regular/dna.svg diff --git a/client/src/static/icons/regular/do-not-enter.svg b/src/static/icons/regular/do-not-enter.svg similarity index 100% rename from client/src/static/icons/regular/do-not-enter.svg rename to src/static/icons/regular/do-not-enter.svg diff --git a/client/src/static/icons/regular/dog-leashed.svg b/src/static/icons/regular/dog-leashed.svg similarity index 100% rename from client/src/static/icons/regular/dog-leashed.svg rename to src/static/icons/regular/dog-leashed.svg diff --git a/client/src/static/icons/regular/dog.svg b/src/static/icons/regular/dog.svg similarity index 100% rename from client/src/static/icons/regular/dog.svg rename to src/static/icons/regular/dog.svg diff --git a/client/src/static/icons/regular/dollar-sign.svg b/src/static/icons/regular/dollar-sign.svg similarity index 100% rename from client/src/static/icons/regular/dollar-sign.svg rename to src/static/icons/regular/dollar-sign.svg diff --git a/client/src/static/icons/regular/dolly-empty.svg b/src/static/icons/regular/dolly-empty.svg similarity index 100% rename from client/src/static/icons/regular/dolly-empty.svg rename to src/static/icons/regular/dolly-empty.svg diff --git a/client/src/static/icons/regular/dolly-flatbed-alt.svg b/src/static/icons/regular/dolly-flatbed-alt.svg similarity index 100% rename from client/src/static/icons/regular/dolly-flatbed-alt.svg rename to src/static/icons/regular/dolly-flatbed-alt.svg diff --git a/client/src/static/icons/regular/dolly-flatbed-empty.svg b/src/static/icons/regular/dolly-flatbed-empty.svg similarity index 100% rename from client/src/static/icons/regular/dolly-flatbed-empty.svg rename to src/static/icons/regular/dolly-flatbed-empty.svg diff --git a/client/src/static/icons/regular/dolly-flatbed.svg b/src/static/icons/regular/dolly-flatbed.svg similarity index 100% rename from client/src/static/icons/regular/dolly-flatbed.svg rename to src/static/icons/regular/dolly-flatbed.svg diff --git a/client/src/static/icons/regular/dolly.svg b/src/static/icons/regular/dolly.svg similarity index 100% rename from client/src/static/icons/regular/dolly.svg rename to src/static/icons/regular/dolly.svg diff --git a/client/src/static/icons/regular/donate.svg b/src/static/icons/regular/donate.svg similarity index 100% rename from client/src/static/icons/regular/donate.svg rename to src/static/icons/regular/donate.svg diff --git a/client/src/static/icons/regular/door-closed.svg b/src/static/icons/regular/door-closed.svg similarity index 100% rename from client/src/static/icons/regular/door-closed.svg rename to src/static/icons/regular/door-closed.svg diff --git a/client/src/static/icons/regular/door-open.svg b/src/static/icons/regular/door-open.svg similarity index 100% rename from client/src/static/icons/regular/door-open.svg rename to src/static/icons/regular/door-open.svg diff --git a/client/src/static/icons/regular/dot-circle.svg b/src/static/icons/regular/dot-circle.svg similarity index 100% rename from client/src/static/icons/regular/dot-circle.svg rename to src/static/icons/regular/dot-circle.svg diff --git a/client/src/static/icons/regular/dove.svg b/src/static/icons/regular/dove.svg similarity index 100% rename from client/src/static/icons/regular/dove.svg rename to src/static/icons/regular/dove.svg diff --git a/client/src/static/icons/regular/download.svg b/src/static/icons/regular/download.svg similarity index 100% rename from client/src/static/icons/regular/download.svg rename to src/static/icons/regular/download.svg diff --git a/client/src/static/icons/regular/drafting-compass.svg b/src/static/icons/regular/drafting-compass.svg similarity index 100% rename from client/src/static/icons/regular/drafting-compass.svg rename to src/static/icons/regular/drafting-compass.svg diff --git a/client/src/static/icons/regular/dragon.svg b/src/static/icons/regular/dragon.svg similarity index 100% rename from client/src/static/icons/regular/dragon.svg rename to src/static/icons/regular/dragon.svg diff --git a/client/src/static/icons/regular/draw-circle.svg b/src/static/icons/regular/draw-circle.svg similarity index 100% rename from client/src/static/icons/regular/draw-circle.svg rename to src/static/icons/regular/draw-circle.svg diff --git a/client/src/static/icons/regular/draw-polygon.svg b/src/static/icons/regular/draw-polygon.svg similarity index 100% rename from client/src/static/icons/regular/draw-polygon.svg rename to src/static/icons/regular/draw-polygon.svg diff --git a/client/src/static/icons/regular/draw-square.svg b/src/static/icons/regular/draw-square.svg similarity index 100% rename from client/src/static/icons/regular/draw-square.svg rename to src/static/icons/regular/draw-square.svg diff --git a/client/src/static/icons/regular/dreidel.svg b/src/static/icons/regular/dreidel.svg similarity index 100% rename from client/src/static/icons/regular/dreidel.svg rename to src/static/icons/regular/dreidel.svg diff --git a/client/src/static/icons/regular/drone-alt.svg b/src/static/icons/regular/drone-alt.svg similarity index 100% rename from client/src/static/icons/regular/drone-alt.svg rename to src/static/icons/regular/drone-alt.svg diff --git a/client/src/static/icons/regular/drone.svg b/src/static/icons/regular/drone.svg similarity index 100% rename from client/src/static/icons/regular/drone.svg rename to src/static/icons/regular/drone.svg diff --git a/client/src/static/icons/regular/drum-steelpan.svg b/src/static/icons/regular/drum-steelpan.svg similarity index 100% rename from client/src/static/icons/regular/drum-steelpan.svg rename to src/static/icons/regular/drum-steelpan.svg diff --git a/client/src/static/icons/regular/drum.svg b/src/static/icons/regular/drum.svg similarity index 100% rename from client/src/static/icons/regular/drum.svg rename to src/static/icons/regular/drum.svg diff --git a/client/src/static/icons/regular/drumstick-bite.svg b/src/static/icons/regular/drumstick-bite.svg similarity index 100% rename from client/src/static/icons/regular/drumstick-bite.svg rename to src/static/icons/regular/drumstick-bite.svg diff --git a/client/src/static/icons/regular/drumstick.svg b/src/static/icons/regular/drumstick.svg similarity index 100% rename from client/src/static/icons/regular/drumstick.svg rename to src/static/icons/regular/drumstick.svg diff --git a/client/src/static/icons/regular/dryer-alt.svg b/src/static/icons/regular/dryer-alt.svg similarity index 100% rename from client/src/static/icons/regular/dryer-alt.svg rename to src/static/icons/regular/dryer-alt.svg diff --git a/client/src/static/icons/regular/dryer.svg b/src/static/icons/regular/dryer.svg similarity index 100% rename from client/src/static/icons/regular/dryer.svg rename to src/static/icons/regular/dryer.svg diff --git a/client/src/static/icons/regular/duck.svg b/src/static/icons/regular/duck.svg similarity index 100% rename from client/src/static/icons/regular/duck.svg rename to src/static/icons/regular/duck.svg diff --git a/client/src/static/icons/regular/dumbbell.svg b/src/static/icons/regular/dumbbell.svg similarity index 100% rename from client/src/static/icons/regular/dumbbell.svg rename to src/static/icons/regular/dumbbell.svg diff --git a/client/src/static/icons/regular/dumpster-fire.svg b/src/static/icons/regular/dumpster-fire.svg similarity index 100% rename from client/src/static/icons/regular/dumpster-fire.svg rename to src/static/icons/regular/dumpster-fire.svg diff --git a/client/src/static/icons/regular/dumpster.svg b/src/static/icons/regular/dumpster.svg similarity index 100% rename from client/src/static/icons/regular/dumpster.svg rename to src/static/icons/regular/dumpster.svg diff --git a/client/src/static/icons/regular/dungeon.svg b/src/static/icons/regular/dungeon.svg similarity index 100% rename from client/src/static/icons/regular/dungeon.svg rename to src/static/icons/regular/dungeon.svg diff --git a/client/src/static/icons/regular/ear-muffs.svg b/src/static/icons/regular/ear-muffs.svg similarity index 100% rename from client/src/static/icons/regular/ear-muffs.svg rename to src/static/icons/regular/ear-muffs.svg diff --git a/client/src/static/icons/regular/ear.svg b/src/static/icons/regular/ear.svg similarity index 100% rename from client/src/static/icons/regular/ear.svg rename to src/static/icons/regular/ear.svg diff --git a/client/src/static/icons/regular/eclipse-alt.svg b/src/static/icons/regular/eclipse-alt.svg similarity index 100% rename from client/src/static/icons/regular/eclipse-alt.svg rename to src/static/icons/regular/eclipse-alt.svg diff --git a/client/src/static/icons/regular/eclipse.svg b/src/static/icons/regular/eclipse.svg similarity index 100% rename from client/src/static/icons/regular/eclipse.svg rename to src/static/icons/regular/eclipse.svg diff --git a/client/src/static/icons/regular/edit.svg b/src/static/icons/regular/edit.svg similarity index 100% rename from client/src/static/icons/regular/edit.svg rename to src/static/icons/regular/edit.svg diff --git a/client/src/static/icons/regular/egg-fried.svg b/src/static/icons/regular/egg-fried.svg similarity index 100% rename from client/src/static/icons/regular/egg-fried.svg rename to src/static/icons/regular/egg-fried.svg diff --git a/client/src/static/icons/regular/egg.svg b/src/static/icons/regular/egg.svg similarity index 100% rename from client/src/static/icons/regular/egg.svg rename to src/static/icons/regular/egg.svg diff --git a/client/src/static/icons/regular/eject.svg b/src/static/icons/regular/eject.svg similarity index 100% rename from client/src/static/icons/regular/eject.svg rename to src/static/icons/regular/eject.svg diff --git a/client/src/static/icons/regular/elephant.svg b/src/static/icons/regular/elephant.svg similarity index 100% rename from client/src/static/icons/regular/elephant.svg rename to src/static/icons/regular/elephant.svg diff --git a/client/src/static/icons/regular/ellipsis-h-alt.svg b/src/static/icons/regular/ellipsis-h-alt.svg similarity index 100% rename from client/src/static/icons/regular/ellipsis-h-alt.svg rename to src/static/icons/regular/ellipsis-h-alt.svg diff --git a/client/src/static/icons/regular/ellipsis-h.svg b/src/static/icons/regular/ellipsis-h.svg similarity index 100% rename from client/src/static/icons/regular/ellipsis-h.svg rename to src/static/icons/regular/ellipsis-h.svg diff --git a/client/src/static/icons/regular/ellipsis-v-alt.svg b/src/static/icons/regular/ellipsis-v-alt.svg similarity index 100% rename from client/src/static/icons/regular/ellipsis-v-alt.svg rename to src/static/icons/regular/ellipsis-v-alt.svg diff --git a/client/src/static/icons/regular/ellipsis-v.svg b/src/static/icons/regular/ellipsis-v.svg similarity index 100% rename from client/src/static/icons/regular/ellipsis-v.svg rename to src/static/icons/regular/ellipsis-v.svg diff --git a/client/src/static/icons/regular/empty-set.svg b/src/static/icons/regular/empty-set.svg similarity index 100% rename from client/src/static/icons/regular/empty-set.svg rename to src/static/icons/regular/empty-set.svg diff --git a/client/src/static/icons/regular/engine-warning.svg b/src/static/icons/regular/engine-warning.svg similarity index 100% rename from client/src/static/icons/regular/engine-warning.svg rename to src/static/icons/regular/engine-warning.svg diff --git a/client/src/static/icons/regular/envelope-open-dollar.svg b/src/static/icons/regular/envelope-open-dollar.svg similarity index 100% rename from client/src/static/icons/regular/envelope-open-dollar.svg rename to src/static/icons/regular/envelope-open-dollar.svg diff --git a/client/src/static/icons/regular/envelope-open-text.svg b/src/static/icons/regular/envelope-open-text.svg similarity index 100% rename from client/src/static/icons/regular/envelope-open-text.svg rename to src/static/icons/regular/envelope-open-text.svg diff --git a/client/src/static/icons/regular/envelope-open.svg b/src/static/icons/regular/envelope-open.svg similarity index 100% rename from client/src/static/icons/regular/envelope-open.svg rename to src/static/icons/regular/envelope-open.svg diff --git a/client/src/static/icons/regular/envelope-square.svg b/src/static/icons/regular/envelope-square.svg similarity index 100% rename from client/src/static/icons/regular/envelope-square.svg rename to src/static/icons/regular/envelope-square.svg diff --git a/client/src/static/icons/regular/envelope.svg b/src/static/icons/regular/envelope.svg similarity index 100% rename from client/src/static/icons/regular/envelope.svg rename to src/static/icons/regular/envelope.svg diff --git a/client/src/static/icons/regular/equals.svg b/src/static/icons/regular/equals.svg similarity index 100% rename from client/src/static/icons/regular/equals.svg rename to src/static/icons/regular/equals.svg diff --git a/client/src/static/icons/regular/eraser.svg b/src/static/icons/regular/eraser.svg similarity index 100% rename from client/src/static/icons/regular/eraser.svg rename to src/static/icons/regular/eraser.svg diff --git a/client/src/static/icons/regular/ethernet.svg b/src/static/icons/regular/ethernet.svg similarity index 100% rename from client/src/static/icons/regular/ethernet.svg rename to src/static/icons/regular/ethernet.svg diff --git a/client/src/static/icons/regular/euro-sign.svg b/src/static/icons/regular/euro-sign.svg similarity index 100% rename from client/src/static/icons/regular/euro-sign.svg rename to src/static/icons/regular/euro-sign.svg diff --git a/client/src/static/icons/regular/exchange-alt.svg b/src/static/icons/regular/exchange-alt.svg similarity index 100% rename from client/src/static/icons/regular/exchange-alt.svg rename to src/static/icons/regular/exchange-alt.svg diff --git a/client/src/static/icons/regular/exchange.svg b/src/static/icons/regular/exchange.svg similarity index 100% rename from client/src/static/icons/regular/exchange.svg rename to src/static/icons/regular/exchange.svg diff --git a/client/src/static/icons/regular/exclamation-circle.svg b/src/static/icons/regular/exclamation-circle.svg similarity index 100% rename from client/src/static/icons/regular/exclamation-circle.svg rename to src/static/icons/regular/exclamation-circle.svg diff --git a/client/src/static/icons/regular/exclamation-square.svg b/src/static/icons/regular/exclamation-square.svg similarity index 100% rename from client/src/static/icons/regular/exclamation-square.svg rename to src/static/icons/regular/exclamation-square.svg diff --git a/client/src/static/icons/regular/exclamation-triangle.svg b/src/static/icons/regular/exclamation-triangle.svg similarity index 100% rename from client/src/static/icons/regular/exclamation-triangle.svg rename to src/static/icons/regular/exclamation-triangle.svg diff --git a/client/src/static/icons/regular/exclamation.svg b/src/static/icons/regular/exclamation.svg similarity index 100% rename from client/src/static/icons/regular/exclamation.svg rename to src/static/icons/regular/exclamation.svg diff --git a/client/src/static/icons/regular/expand-alt.svg b/src/static/icons/regular/expand-alt.svg similarity index 100% rename from client/src/static/icons/regular/expand-alt.svg rename to src/static/icons/regular/expand-alt.svg diff --git a/client/src/static/icons/regular/expand-arrows-alt.svg b/src/static/icons/regular/expand-arrows-alt.svg similarity index 100% rename from client/src/static/icons/regular/expand-arrows-alt.svg rename to src/static/icons/regular/expand-arrows-alt.svg diff --git a/client/src/static/icons/regular/expand-arrows.svg b/src/static/icons/regular/expand-arrows.svg similarity index 100% rename from client/src/static/icons/regular/expand-arrows.svg rename to src/static/icons/regular/expand-arrows.svg diff --git a/client/src/static/icons/regular/expand-wide.svg b/src/static/icons/regular/expand-wide.svg similarity index 100% rename from client/src/static/icons/regular/expand-wide.svg rename to src/static/icons/regular/expand-wide.svg diff --git a/client/src/static/icons/regular/expand.svg b/src/static/icons/regular/expand.svg similarity index 100% rename from client/src/static/icons/regular/expand.svg rename to src/static/icons/regular/expand.svg diff --git a/client/src/static/icons/regular/external-link-alt.svg b/src/static/icons/regular/external-link-alt.svg similarity index 100% rename from client/src/static/icons/regular/external-link-alt.svg rename to src/static/icons/regular/external-link-alt.svg diff --git a/client/src/static/icons/regular/external-link-square-alt.svg b/src/static/icons/regular/external-link-square-alt.svg similarity index 100% rename from client/src/static/icons/regular/external-link-square-alt.svg rename to src/static/icons/regular/external-link-square-alt.svg diff --git a/client/src/static/icons/regular/external-link-square.svg b/src/static/icons/regular/external-link-square.svg similarity index 100% rename from client/src/static/icons/regular/external-link-square.svg rename to src/static/icons/regular/external-link-square.svg diff --git a/client/src/static/icons/regular/external-link.svg b/src/static/icons/regular/external-link.svg similarity index 100% rename from client/src/static/icons/regular/external-link.svg rename to src/static/icons/regular/external-link.svg diff --git a/client/src/static/icons/regular/eye-dropper.svg b/src/static/icons/regular/eye-dropper.svg similarity index 100% rename from client/src/static/icons/regular/eye-dropper.svg rename to src/static/icons/regular/eye-dropper.svg diff --git a/client/src/static/icons/regular/eye-evil.svg b/src/static/icons/regular/eye-evil.svg similarity index 100% rename from client/src/static/icons/regular/eye-evil.svg rename to src/static/icons/regular/eye-evil.svg diff --git a/client/src/static/icons/regular/eye-slash.svg b/src/static/icons/regular/eye-slash.svg similarity index 100% rename from client/src/static/icons/regular/eye-slash.svg rename to src/static/icons/regular/eye-slash.svg diff --git a/client/src/static/icons/regular/eye.svg b/src/static/icons/regular/eye.svg similarity index 100% rename from client/src/static/icons/regular/eye.svg rename to src/static/icons/regular/eye.svg diff --git a/client/src/static/icons/regular/fan-table.svg b/src/static/icons/regular/fan-table.svg similarity index 100% rename from client/src/static/icons/regular/fan-table.svg rename to src/static/icons/regular/fan-table.svg diff --git a/client/src/static/icons/regular/fan.svg b/src/static/icons/regular/fan.svg similarity index 100% rename from client/src/static/icons/regular/fan.svg rename to src/static/icons/regular/fan.svg diff --git a/client/src/static/icons/regular/farm.svg b/src/static/icons/regular/farm.svg similarity index 100% rename from client/src/static/icons/regular/farm.svg rename to src/static/icons/regular/farm.svg diff --git a/client/src/static/icons/regular/fast-backward.svg b/src/static/icons/regular/fast-backward.svg similarity index 100% rename from client/src/static/icons/regular/fast-backward.svg rename to src/static/icons/regular/fast-backward.svg diff --git a/client/src/static/icons/regular/fast-forward.svg b/src/static/icons/regular/fast-forward.svg similarity index 100% rename from client/src/static/icons/regular/fast-forward.svg rename to src/static/icons/regular/fast-forward.svg diff --git a/client/src/static/icons/regular/faucet-drip.svg b/src/static/icons/regular/faucet-drip.svg similarity index 100% rename from client/src/static/icons/regular/faucet-drip.svg rename to src/static/icons/regular/faucet-drip.svg diff --git a/client/src/static/icons/regular/faucet.svg b/src/static/icons/regular/faucet.svg similarity index 100% rename from client/src/static/icons/regular/faucet.svg rename to src/static/icons/regular/faucet.svg diff --git a/client/src/static/icons/regular/fax.svg b/src/static/icons/regular/fax.svg similarity index 100% rename from client/src/static/icons/regular/fax.svg rename to src/static/icons/regular/fax.svg diff --git a/client/src/static/icons/regular/feather-alt.svg b/src/static/icons/regular/feather-alt.svg similarity index 100% rename from client/src/static/icons/regular/feather-alt.svg rename to src/static/icons/regular/feather-alt.svg diff --git a/client/src/static/icons/regular/feather.svg b/src/static/icons/regular/feather.svg similarity index 100% rename from client/src/static/icons/regular/feather.svg rename to src/static/icons/regular/feather.svg diff --git a/client/src/static/icons/regular/female.svg b/src/static/icons/regular/female.svg similarity index 100% rename from client/src/static/icons/regular/female.svg rename to src/static/icons/regular/female.svg diff --git a/client/src/static/icons/regular/field-hockey.svg b/src/static/icons/regular/field-hockey.svg similarity index 100% rename from client/src/static/icons/regular/field-hockey.svg rename to src/static/icons/regular/field-hockey.svg diff --git a/client/src/static/icons/regular/fighter-jet.svg b/src/static/icons/regular/fighter-jet.svg similarity index 100% rename from client/src/static/icons/regular/fighter-jet.svg rename to src/static/icons/regular/fighter-jet.svg diff --git a/client/src/static/icons/regular/file-alt.svg b/src/static/icons/regular/file-alt.svg similarity index 100% rename from client/src/static/icons/regular/file-alt.svg rename to src/static/icons/regular/file-alt.svg diff --git a/client/src/static/icons/regular/file-archive.svg b/src/static/icons/regular/file-archive.svg similarity index 100% rename from client/src/static/icons/regular/file-archive.svg rename to src/static/icons/regular/file-archive.svg diff --git a/client/src/static/icons/regular/file-audio.svg b/src/static/icons/regular/file-audio.svg similarity index 100% rename from client/src/static/icons/regular/file-audio.svg rename to src/static/icons/regular/file-audio.svg diff --git a/client/src/static/icons/regular/file-certificate.svg b/src/static/icons/regular/file-certificate.svg similarity index 100% rename from client/src/static/icons/regular/file-certificate.svg rename to src/static/icons/regular/file-certificate.svg diff --git a/client/src/static/icons/regular/file-chart-line.svg b/src/static/icons/regular/file-chart-line.svg similarity index 100% rename from client/src/static/icons/regular/file-chart-line.svg rename to src/static/icons/regular/file-chart-line.svg diff --git a/client/src/static/icons/regular/file-chart-pie.svg b/src/static/icons/regular/file-chart-pie.svg similarity index 100% rename from client/src/static/icons/regular/file-chart-pie.svg rename to src/static/icons/regular/file-chart-pie.svg diff --git a/client/src/static/icons/regular/file-check.svg b/src/static/icons/regular/file-check.svg similarity index 100% rename from client/src/static/icons/regular/file-check.svg rename to src/static/icons/regular/file-check.svg diff --git a/client/src/static/icons/regular/file-code.svg b/src/static/icons/regular/file-code.svg similarity index 100% rename from client/src/static/icons/regular/file-code.svg rename to src/static/icons/regular/file-code.svg diff --git a/client/src/static/icons/regular/file-contract.svg b/src/static/icons/regular/file-contract.svg similarity index 100% rename from client/src/static/icons/regular/file-contract.svg rename to src/static/icons/regular/file-contract.svg diff --git a/client/src/static/icons/regular/file-csv.svg b/src/static/icons/regular/file-csv.svg similarity index 100% rename from client/src/static/icons/regular/file-csv.svg rename to src/static/icons/regular/file-csv.svg diff --git a/client/src/static/icons/regular/file-download.svg b/src/static/icons/regular/file-download.svg similarity index 100% rename from client/src/static/icons/regular/file-download.svg rename to src/static/icons/regular/file-download.svg diff --git a/client/src/static/icons/regular/file-edit.svg b/src/static/icons/regular/file-edit.svg similarity index 100% rename from client/src/static/icons/regular/file-edit.svg rename to src/static/icons/regular/file-edit.svg diff --git a/client/src/static/icons/regular/file-excel.svg b/src/static/icons/regular/file-excel.svg similarity index 100% rename from client/src/static/icons/regular/file-excel.svg rename to src/static/icons/regular/file-excel.svg diff --git a/client/src/static/icons/regular/file-exclamation.svg b/src/static/icons/regular/file-exclamation.svg similarity index 100% rename from client/src/static/icons/regular/file-exclamation.svg rename to src/static/icons/regular/file-exclamation.svg diff --git a/client/src/static/icons/regular/file-export.svg b/src/static/icons/regular/file-export.svg similarity index 100% rename from client/src/static/icons/regular/file-export.svg rename to src/static/icons/regular/file-export.svg diff --git a/client/src/static/icons/regular/file-image.svg b/src/static/icons/regular/file-image.svg similarity index 100% rename from client/src/static/icons/regular/file-image.svg rename to src/static/icons/regular/file-image.svg diff --git a/client/src/static/icons/regular/file-import.svg b/src/static/icons/regular/file-import.svg similarity index 100% rename from client/src/static/icons/regular/file-import.svg rename to src/static/icons/regular/file-import.svg diff --git a/client/src/static/icons/regular/file-invoice-dollar.svg b/src/static/icons/regular/file-invoice-dollar.svg similarity index 100% rename from client/src/static/icons/regular/file-invoice-dollar.svg rename to src/static/icons/regular/file-invoice-dollar.svg diff --git a/client/src/static/icons/regular/file-invoice.svg b/src/static/icons/regular/file-invoice.svg similarity index 100% rename from client/src/static/icons/regular/file-invoice.svg rename to src/static/icons/regular/file-invoice.svg diff --git a/client/src/static/icons/regular/file-medical-alt.svg b/src/static/icons/regular/file-medical-alt.svg similarity index 100% rename from client/src/static/icons/regular/file-medical-alt.svg rename to src/static/icons/regular/file-medical-alt.svg diff --git a/client/src/static/icons/regular/file-medical.svg b/src/static/icons/regular/file-medical.svg similarity index 100% rename from client/src/static/icons/regular/file-medical.svg rename to src/static/icons/regular/file-medical.svg diff --git a/client/src/static/icons/regular/file-minus.svg b/src/static/icons/regular/file-minus.svg similarity index 100% rename from client/src/static/icons/regular/file-minus.svg rename to src/static/icons/regular/file-minus.svg diff --git a/client/src/static/icons/regular/file-music.svg b/src/static/icons/regular/file-music.svg similarity index 100% rename from client/src/static/icons/regular/file-music.svg rename to src/static/icons/regular/file-music.svg diff --git a/client/src/static/icons/regular/file-pdf.svg b/src/static/icons/regular/file-pdf.svg similarity index 100% rename from client/src/static/icons/regular/file-pdf.svg rename to src/static/icons/regular/file-pdf.svg diff --git a/client/src/static/icons/regular/file-plus.svg b/src/static/icons/regular/file-plus.svg similarity index 100% rename from client/src/static/icons/regular/file-plus.svg rename to src/static/icons/regular/file-plus.svg diff --git a/client/src/static/icons/regular/file-powerpoint.svg b/src/static/icons/regular/file-powerpoint.svg similarity index 100% rename from client/src/static/icons/regular/file-powerpoint.svg rename to src/static/icons/regular/file-powerpoint.svg diff --git a/client/src/static/icons/regular/file-prescription.svg b/src/static/icons/regular/file-prescription.svg similarity index 100% rename from client/src/static/icons/regular/file-prescription.svg rename to src/static/icons/regular/file-prescription.svg diff --git a/client/src/static/icons/regular/file-search.svg b/src/static/icons/regular/file-search.svg similarity index 100% rename from client/src/static/icons/regular/file-search.svg rename to src/static/icons/regular/file-search.svg diff --git a/client/src/static/icons/regular/file-signature.svg b/src/static/icons/regular/file-signature.svg similarity index 100% rename from client/src/static/icons/regular/file-signature.svg rename to src/static/icons/regular/file-signature.svg diff --git a/client/src/static/icons/regular/file-spreadsheet.svg b/src/static/icons/regular/file-spreadsheet.svg similarity index 100% rename from client/src/static/icons/regular/file-spreadsheet.svg rename to src/static/icons/regular/file-spreadsheet.svg diff --git a/client/src/static/icons/regular/file-times.svg b/src/static/icons/regular/file-times.svg similarity index 100% rename from client/src/static/icons/regular/file-times.svg rename to src/static/icons/regular/file-times.svg diff --git a/client/src/static/icons/regular/file-upload.svg b/src/static/icons/regular/file-upload.svg similarity index 100% rename from client/src/static/icons/regular/file-upload.svg rename to src/static/icons/regular/file-upload.svg diff --git a/client/src/static/icons/regular/file-user.svg b/src/static/icons/regular/file-user.svg similarity index 100% rename from client/src/static/icons/regular/file-user.svg rename to src/static/icons/regular/file-user.svg diff --git a/client/src/static/icons/regular/file-video.svg b/src/static/icons/regular/file-video.svg similarity index 100% rename from client/src/static/icons/regular/file-video.svg rename to src/static/icons/regular/file-video.svg diff --git a/client/src/static/icons/regular/file-word.svg b/src/static/icons/regular/file-word.svg similarity index 100% rename from client/src/static/icons/regular/file-word.svg rename to src/static/icons/regular/file-word.svg diff --git a/client/src/static/icons/regular/file.svg b/src/static/icons/regular/file.svg similarity index 100% rename from client/src/static/icons/regular/file.svg rename to src/static/icons/regular/file.svg diff --git a/client/src/static/icons/regular/files-medical.svg b/src/static/icons/regular/files-medical.svg similarity index 100% rename from client/src/static/icons/regular/files-medical.svg rename to src/static/icons/regular/files-medical.svg diff --git a/client/src/static/icons/regular/fill-drip.svg b/src/static/icons/regular/fill-drip.svg similarity index 100% rename from client/src/static/icons/regular/fill-drip.svg rename to src/static/icons/regular/fill-drip.svg diff --git a/client/src/static/icons/regular/fill.svg b/src/static/icons/regular/fill.svg similarity index 100% rename from client/src/static/icons/regular/fill.svg rename to src/static/icons/regular/fill.svg diff --git a/client/src/static/icons/regular/film-alt.svg b/src/static/icons/regular/film-alt.svg similarity index 100% rename from client/src/static/icons/regular/film-alt.svg rename to src/static/icons/regular/film-alt.svg diff --git a/client/src/static/icons/regular/film-canister.svg b/src/static/icons/regular/film-canister.svg similarity index 100% rename from client/src/static/icons/regular/film-canister.svg rename to src/static/icons/regular/film-canister.svg diff --git a/client/src/static/icons/regular/film.svg b/src/static/icons/regular/film.svg similarity index 100% rename from client/src/static/icons/regular/film.svg rename to src/static/icons/regular/film.svg diff --git a/client/src/static/icons/regular/filter.svg b/src/static/icons/regular/filter.svg similarity index 100% rename from client/src/static/icons/regular/filter.svg rename to src/static/icons/regular/filter.svg diff --git a/client/src/static/icons/regular/fingerprint.svg b/src/static/icons/regular/fingerprint.svg similarity index 100% rename from client/src/static/icons/regular/fingerprint.svg rename to src/static/icons/regular/fingerprint.svg diff --git a/client/src/static/icons/regular/fire-alt.svg b/src/static/icons/regular/fire-alt.svg similarity index 100% rename from client/src/static/icons/regular/fire-alt.svg rename to src/static/icons/regular/fire-alt.svg diff --git a/client/src/static/icons/regular/fire-extinguisher.svg b/src/static/icons/regular/fire-extinguisher.svg similarity index 100% rename from client/src/static/icons/regular/fire-extinguisher.svg rename to src/static/icons/regular/fire-extinguisher.svg diff --git a/client/src/static/icons/regular/fire-smoke.svg b/src/static/icons/regular/fire-smoke.svg similarity index 100% rename from client/src/static/icons/regular/fire-smoke.svg rename to src/static/icons/regular/fire-smoke.svg diff --git a/client/src/static/icons/regular/fire.svg b/src/static/icons/regular/fire.svg similarity index 100% rename from client/src/static/icons/regular/fire.svg rename to src/static/icons/regular/fire.svg diff --git a/client/src/static/icons/regular/fireplace.svg b/src/static/icons/regular/fireplace.svg similarity index 100% rename from client/src/static/icons/regular/fireplace.svg rename to src/static/icons/regular/fireplace.svg diff --git a/client/src/static/icons/regular/first-aid.svg b/src/static/icons/regular/first-aid.svg similarity index 100% rename from client/src/static/icons/regular/first-aid.svg rename to src/static/icons/regular/first-aid.svg diff --git a/client/src/static/icons/regular/fish-cooked.svg b/src/static/icons/regular/fish-cooked.svg similarity index 100% rename from client/src/static/icons/regular/fish-cooked.svg rename to src/static/icons/regular/fish-cooked.svg diff --git a/client/src/static/icons/regular/fish.svg b/src/static/icons/regular/fish.svg similarity index 100% rename from client/src/static/icons/regular/fish.svg rename to src/static/icons/regular/fish.svg diff --git a/client/src/static/icons/regular/fist-raised.svg b/src/static/icons/regular/fist-raised.svg similarity index 100% rename from client/src/static/icons/regular/fist-raised.svg rename to src/static/icons/regular/fist-raised.svg diff --git a/client/src/static/icons/regular/flag-alt.svg b/src/static/icons/regular/flag-alt.svg similarity index 100% rename from client/src/static/icons/regular/flag-alt.svg rename to src/static/icons/regular/flag-alt.svg diff --git a/client/src/static/icons/regular/flag-checkered.svg b/src/static/icons/regular/flag-checkered.svg similarity index 100% rename from client/src/static/icons/regular/flag-checkered.svg rename to src/static/icons/regular/flag-checkered.svg diff --git a/client/src/static/icons/regular/flag-usa.svg b/src/static/icons/regular/flag-usa.svg similarity index 100% rename from client/src/static/icons/regular/flag-usa.svg rename to src/static/icons/regular/flag-usa.svg diff --git a/client/src/static/icons/regular/flag.svg b/src/static/icons/regular/flag.svg similarity index 100% rename from client/src/static/icons/regular/flag.svg rename to src/static/icons/regular/flag.svg diff --git a/client/src/static/icons/regular/flame.svg b/src/static/icons/regular/flame.svg similarity index 100% rename from client/src/static/icons/regular/flame.svg rename to src/static/icons/regular/flame.svg diff --git a/client/src/static/icons/regular/flashlight.svg b/src/static/icons/regular/flashlight.svg similarity index 100% rename from client/src/static/icons/regular/flashlight.svg rename to src/static/icons/regular/flashlight.svg diff --git a/client/src/static/icons/regular/flask-poison.svg b/src/static/icons/regular/flask-poison.svg similarity index 100% rename from client/src/static/icons/regular/flask-poison.svg rename to src/static/icons/regular/flask-poison.svg diff --git a/client/src/static/icons/regular/flask-potion.svg b/src/static/icons/regular/flask-potion.svg similarity index 100% rename from client/src/static/icons/regular/flask-potion.svg rename to src/static/icons/regular/flask-potion.svg diff --git a/client/src/static/icons/regular/flask.svg b/src/static/icons/regular/flask.svg similarity index 100% rename from client/src/static/icons/regular/flask.svg rename to src/static/icons/regular/flask.svg diff --git a/client/src/static/icons/regular/flower-daffodil.svg b/src/static/icons/regular/flower-daffodil.svg similarity index 100% rename from client/src/static/icons/regular/flower-daffodil.svg rename to src/static/icons/regular/flower-daffodil.svg diff --git a/client/src/static/icons/regular/flower-tulip.svg b/src/static/icons/regular/flower-tulip.svg similarity index 100% rename from client/src/static/icons/regular/flower-tulip.svg rename to src/static/icons/regular/flower-tulip.svg diff --git a/client/src/static/icons/regular/flower.svg b/src/static/icons/regular/flower.svg similarity index 100% rename from client/src/static/icons/regular/flower.svg rename to src/static/icons/regular/flower.svg diff --git a/client/src/static/icons/regular/flushed.svg b/src/static/icons/regular/flushed.svg similarity index 100% rename from client/src/static/icons/regular/flushed.svg rename to src/static/icons/regular/flushed.svg diff --git a/client/src/static/icons/regular/flute.svg b/src/static/icons/regular/flute.svg similarity index 100% rename from client/src/static/icons/regular/flute.svg rename to src/static/icons/regular/flute.svg diff --git a/client/src/static/icons/regular/flux-capacitor.svg b/src/static/icons/regular/flux-capacitor.svg similarity index 100% rename from client/src/static/icons/regular/flux-capacitor.svg rename to src/static/icons/regular/flux-capacitor.svg diff --git a/client/src/static/icons/regular/fog.svg b/src/static/icons/regular/fog.svg similarity index 100% rename from client/src/static/icons/regular/fog.svg rename to src/static/icons/regular/fog.svg diff --git a/client/src/static/icons/regular/folder-minus.svg b/src/static/icons/regular/folder-minus.svg similarity index 100% rename from client/src/static/icons/regular/folder-minus.svg rename to src/static/icons/regular/folder-minus.svg diff --git a/client/src/static/icons/regular/folder-open.svg b/src/static/icons/regular/folder-open.svg similarity index 100% rename from client/src/static/icons/regular/folder-open.svg rename to src/static/icons/regular/folder-open.svg diff --git a/client/src/static/icons/regular/folder-plus.svg b/src/static/icons/regular/folder-plus.svg similarity index 100% rename from client/src/static/icons/regular/folder-plus.svg rename to src/static/icons/regular/folder-plus.svg diff --git a/client/src/static/icons/regular/folder-times.svg b/src/static/icons/regular/folder-times.svg similarity index 100% rename from client/src/static/icons/regular/folder-times.svg rename to src/static/icons/regular/folder-times.svg diff --git a/client/src/static/icons/regular/folder-tree.svg b/src/static/icons/regular/folder-tree.svg similarity index 100% rename from client/src/static/icons/regular/folder-tree.svg rename to src/static/icons/regular/folder-tree.svg diff --git a/client/src/static/icons/regular/folder.svg b/src/static/icons/regular/folder.svg similarity index 100% rename from client/src/static/icons/regular/folder.svg rename to src/static/icons/regular/folder.svg diff --git a/client/src/static/icons/regular/folders.svg b/src/static/icons/regular/folders.svg similarity index 100% rename from client/src/static/icons/regular/folders.svg rename to src/static/icons/regular/folders.svg diff --git a/client/src/static/icons/regular/font-awesome-logo-full.svg b/src/static/icons/regular/font-awesome-logo-full.svg similarity index 100% rename from client/src/static/icons/regular/font-awesome-logo-full.svg rename to src/static/icons/regular/font-awesome-logo-full.svg diff --git a/client/src/static/icons/regular/font-case.svg b/src/static/icons/regular/font-case.svg similarity index 100% rename from client/src/static/icons/regular/font-case.svg rename to src/static/icons/regular/font-case.svg diff --git a/client/src/static/icons/regular/font.svg b/src/static/icons/regular/font.svg similarity index 100% rename from client/src/static/icons/regular/font.svg rename to src/static/icons/regular/font.svg diff --git a/client/src/static/icons/regular/football-ball.svg b/src/static/icons/regular/football-ball.svg similarity index 100% rename from client/src/static/icons/regular/football-ball.svg rename to src/static/icons/regular/football-ball.svg diff --git a/client/src/static/icons/regular/football-helmet.svg b/src/static/icons/regular/football-helmet.svg similarity index 100% rename from client/src/static/icons/regular/football-helmet.svg rename to src/static/icons/regular/football-helmet.svg diff --git a/client/src/static/icons/regular/forklift.svg b/src/static/icons/regular/forklift.svg similarity index 100% rename from client/src/static/icons/regular/forklift.svg rename to src/static/icons/regular/forklift.svg diff --git a/client/src/static/icons/regular/forward.svg b/src/static/icons/regular/forward.svg similarity index 100% rename from client/src/static/icons/regular/forward.svg rename to src/static/icons/regular/forward.svg diff --git a/client/src/static/icons/regular/fragile.svg b/src/static/icons/regular/fragile.svg similarity index 100% rename from client/src/static/icons/regular/fragile.svg rename to src/static/icons/regular/fragile.svg diff --git a/client/src/static/icons/regular/french-fries.svg b/src/static/icons/regular/french-fries.svg similarity index 100% rename from client/src/static/icons/regular/french-fries.svg rename to src/static/icons/regular/french-fries.svg diff --git a/client/src/static/icons/regular/frog.svg b/src/static/icons/regular/frog.svg similarity index 100% rename from client/src/static/icons/regular/frog.svg rename to src/static/icons/regular/frog.svg diff --git a/client/src/static/icons/regular/frosty-head.svg b/src/static/icons/regular/frosty-head.svg similarity index 100% rename from client/src/static/icons/regular/frosty-head.svg rename to src/static/icons/regular/frosty-head.svg diff --git a/client/src/static/icons/regular/frown-open.svg b/src/static/icons/regular/frown-open.svg similarity index 100% rename from client/src/static/icons/regular/frown-open.svg rename to src/static/icons/regular/frown-open.svg diff --git a/client/src/static/icons/regular/frown.svg b/src/static/icons/regular/frown.svg similarity index 100% rename from client/src/static/icons/regular/frown.svg rename to src/static/icons/regular/frown.svg diff --git a/client/src/static/icons/regular/function.svg b/src/static/icons/regular/function.svg similarity index 100% rename from client/src/static/icons/regular/function.svg rename to src/static/icons/regular/function.svg diff --git a/client/src/static/icons/regular/funnel-dollar.svg b/src/static/icons/regular/funnel-dollar.svg similarity index 100% rename from client/src/static/icons/regular/funnel-dollar.svg rename to src/static/icons/regular/funnel-dollar.svg diff --git a/client/src/static/icons/regular/futbol.svg b/src/static/icons/regular/futbol.svg similarity index 100% rename from client/src/static/icons/regular/futbol.svg rename to src/static/icons/regular/futbol.svg diff --git a/client/src/static/icons/regular/galaxy.svg b/src/static/icons/regular/galaxy.svg similarity index 100% rename from client/src/static/icons/regular/galaxy.svg rename to src/static/icons/regular/galaxy.svg diff --git a/client/src/static/icons/regular/game-board-alt.svg b/src/static/icons/regular/game-board-alt.svg similarity index 100% rename from client/src/static/icons/regular/game-board-alt.svg rename to src/static/icons/regular/game-board-alt.svg diff --git a/client/src/static/icons/regular/game-board.svg b/src/static/icons/regular/game-board.svg similarity index 100% rename from client/src/static/icons/regular/game-board.svg rename to src/static/icons/regular/game-board.svg diff --git a/client/src/static/icons/regular/game-console-handheld.svg b/src/static/icons/regular/game-console-handheld.svg similarity index 100% rename from client/src/static/icons/regular/game-console-handheld.svg rename to src/static/icons/regular/game-console-handheld.svg diff --git a/client/src/static/icons/regular/gamepad-alt.svg b/src/static/icons/regular/gamepad-alt.svg similarity index 100% rename from client/src/static/icons/regular/gamepad-alt.svg rename to src/static/icons/regular/gamepad-alt.svg diff --git a/client/src/static/icons/regular/gamepad.svg b/src/static/icons/regular/gamepad.svg similarity index 100% rename from client/src/static/icons/regular/gamepad.svg rename to src/static/icons/regular/gamepad.svg diff --git a/client/src/static/icons/regular/garage-car.svg b/src/static/icons/regular/garage-car.svg similarity index 100% rename from client/src/static/icons/regular/garage-car.svg rename to src/static/icons/regular/garage-car.svg diff --git a/client/src/static/icons/regular/garage-open.svg b/src/static/icons/regular/garage-open.svg similarity index 100% rename from client/src/static/icons/regular/garage-open.svg rename to src/static/icons/regular/garage-open.svg diff --git a/client/src/static/icons/regular/garage.svg b/src/static/icons/regular/garage.svg similarity index 100% rename from client/src/static/icons/regular/garage.svg rename to src/static/icons/regular/garage.svg diff --git a/client/src/static/icons/regular/gas-pump-slash.svg b/src/static/icons/regular/gas-pump-slash.svg similarity index 100% rename from client/src/static/icons/regular/gas-pump-slash.svg rename to src/static/icons/regular/gas-pump-slash.svg diff --git a/client/src/static/icons/regular/gas-pump.svg b/src/static/icons/regular/gas-pump.svg similarity index 100% rename from client/src/static/icons/regular/gas-pump.svg rename to src/static/icons/regular/gas-pump.svg diff --git a/client/src/static/icons/regular/gavel.svg b/src/static/icons/regular/gavel.svg similarity index 100% rename from client/src/static/icons/regular/gavel.svg rename to src/static/icons/regular/gavel.svg diff --git a/client/src/static/icons/regular/gem.svg b/src/static/icons/regular/gem.svg similarity index 100% rename from client/src/static/icons/regular/gem.svg rename to src/static/icons/regular/gem.svg diff --git a/client/src/static/icons/regular/genderless.svg b/src/static/icons/regular/genderless.svg similarity index 100% rename from client/src/static/icons/regular/genderless.svg rename to src/static/icons/regular/genderless.svg diff --git a/client/src/static/icons/regular/ghost.svg b/src/static/icons/regular/ghost.svg similarity index 100% rename from client/src/static/icons/regular/ghost.svg rename to src/static/icons/regular/ghost.svg diff --git a/client/src/static/icons/regular/gift-card.svg b/src/static/icons/regular/gift-card.svg similarity index 100% rename from client/src/static/icons/regular/gift-card.svg rename to src/static/icons/regular/gift-card.svg diff --git a/client/src/static/icons/regular/gift.svg b/src/static/icons/regular/gift.svg similarity index 100% rename from client/src/static/icons/regular/gift.svg rename to src/static/icons/regular/gift.svg diff --git a/client/src/static/icons/regular/gifts.svg b/src/static/icons/regular/gifts.svg similarity index 100% rename from client/src/static/icons/regular/gifts.svg rename to src/static/icons/regular/gifts.svg diff --git a/client/src/static/icons/regular/gingerbread-man.svg b/src/static/icons/regular/gingerbread-man.svg similarity index 100% rename from client/src/static/icons/regular/gingerbread-man.svg rename to src/static/icons/regular/gingerbread-man.svg diff --git a/client/src/static/icons/regular/glass-champagne.svg b/src/static/icons/regular/glass-champagne.svg similarity index 100% rename from client/src/static/icons/regular/glass-champagne.svg rename to src/static/icons/regular/glass-champagne.svg diff --git a/client/src/static/icons/regular/glass-cheers.svg b/src/static/icons/regular/glass-cheers.svg similarity index 100% rename from client/src/static/icons/regular/glass-cheers.svg rename to src/static/icons/regular/glass-cheers.svg diff --git a/client/src/static/icons/regular/glass-citrus.svg b/src/static/icons/regular/glass-citrus.svg similarity index 100% rename from client/src/static/icons/regular/glass-citrus.svg rename to src/static/icons/regular/glass-citrus.svg diff --git a/client/src/static/icons/regular/glass-martini-alt.svg b/src/static/icons/regular/glass-martini-alt.svg similarity index 100% rename from client/src/static/icons/regular/glass-martini-alt.svg rename to src/static/icons/regular/glass-martini-alt.svg diff --git a/client/src/static/icons/regular/glass-martini.svg b/src/static/icons/regular/glass-martini.svg similarity index 100% rename from client/src/static/icons/regular/glass-martini.svg rename to src/static/icons/regular/glass-martini.svg diff --git a/client/src/static/icons/regular/glass-whiskey-rocks.svg b/src/static/icons/regular/glass-whiskey-rocks.svg similarity index 100% rename from client/src/static/icons/regular/glass-whiskey-rocks.svg rename to src/static/icons/regular/glass-whiskey-rocks.svg diff --git a/client/src/static/icons/regular/glass-whiskey.svg b/src/static/icons/regular/glass-whiskey.svg similarity index 100% rename from client/src/static/icons/regular/glass-whiskey.svg rename to src/static/icons/regular/glass-whiskey.svg diff --git a/client/src/static/icons/regular/glass.svg b/src/static/icons/regular/glass.svg similarity index 100% rename from client/src/static/icons/regular/glass.svg rename to src/static/icons/regular/glass.svg diff --git a/client/src/static/icons/regular/glasses-alt.svg b/src/static/icons/regular/glasses-alt.svg similarity index 100% rename from client/src/static/icons/regular/glasses-alt.svg rename to src/static/icons/regular/glasses-alt.svg diff --git a/client/src/static/icons/regular/glasses.svg b/src/static/icons/regular/glasses.svg similarity index 100% rename from client/src/static/icons/regular/glasses.svg rename to src/static/icons/regular/glasses.svg diff --git a/client/src/static/icons/regular/globe-africa.svg b/src/static/icons/regular/globe-africa.svg similarity index 100% rename from client/src/static/icons/regular/globe-africa.svg rename to src/static/icons/regular/globe-africa.svg diff --git a/client/src/static/icons/regular/globe-americas.svg b/src/static/icons/regular/globe-americas.svg similarity index 100% rename from client/src/static/icons/regular/globe-americas.svg rename to src/static/icons/regular/globe-americas.svg diff --git a/client/src/static/icons/regular/globe-asia.svg b/src/static/icons/regular/globe-asia.svg similarity index 100% rename from client/src/static/icons/regular/globe-asia.svg rename to src/static/icons/regular/globe-asia.svg diff --git a/client/src/static/icons/regular/globe-europe.svg b/src/static/icons/regular/globe-europe.svg similarity index 100% rename from client/src/static/icons/regular/globe-europe.svg rename to src/static/icons/regular/globe-europe.svg diff --git a/client/src/static/icons/regular/globe-snow.svg b/src/static/icons/regular/globe-snow.svg similarity index 100% rename from client/src/static/icons/regular/globe-snow.svg rename to src/static/icons/regular/globe-snow.svg diff --git a/client/src/static/icons/regular/globe-stand.svg b/src/static/icons/regular/globe-stand.svg similarity index 100% rename from client/src/static/icons/regular/globe-stand.svg rename to src/static/icons/regular/globe-stand.svg diff --git a/client/src/static/icons/regular/globe.svg b/src/static/icons/regular/globe.svg similarity index 100% rename from client/src/static/icons/regular/globe.svg rename to src/static/icons/regular/globe.svg diff --git a/client/src/static/icons/regular/golf-ball.svg b/src/static/icons/regular/golf-ball.svg similarity index 100% rename from client/src/static/icons/regular/golf-ball.svg rename to src/static/icons/regular/golf-ball.svg diff --git a/client/src/static/icons/regular/golf-club.svg b/src/static/icons/regular/golf-club.svg similarity index 100% rename from client/src/static/icons/regular/golf-club.svg rename to src/static/icons/regular/golf-club.svg diff --git a/client/src/static/icons/regular/gopuram.svg b/src/static/icons/regular/gopuram.svg similarity index 100% rename from client/src/static/icons/regular/gopuram.svg rename to src/static/icons/regular/gopuram.svg diff --git a/client/src/static/icons/regular/graduation-cap.svg b/src/static/icons/regular/graduation-cap.svg similarity index 100% rename from client/src/static/icons/regular/graduation-cap.svg rename to src/static/icons/regular/graduation-cap.svg diff --git a/client/src/static/icons/regular/gramophone.svg b/src/static/icons/regular/gramophone.svg similarity index 100% rename from client/src/static/icons/regular/gramophone.svg rename to src/static/icons/regular/gramophone.svg diff --git a/client/src/static/icons/regular/greater-than-equal.svg b/src/static/icons/regular/greater-than-equal.svg similarity index 100% rename from client/src/static/icons/regular/greater-than-equal.svg rename to src/static/icons/regular/greater-than-equal.svg diff --git a/client/src/static/icons/regular/greater-than.svg b/src/static/icons/regular/greater-than.svg similarity index 100% rename from client/src/static/icons/regular/greater-than.svg rename to src/static/icons/regular/greater-than.svg diff --git a/client/src/static/icons/regular/grimace.svg b/src/static/icons/regular/grimace.svg similarity index 100% rename from client/src/static/icons/regular/grimace.svg rename to src/static/icons/regular/grimace.svg diff --git a/client/src/static/icons/regular/grin-alt.svg b/src/static/icons/regular/grin-alt.svg similarity index 100% rename from client/src/static/icons/regular/grin-alt.svg rename to src/static/icons/regular/grin-alt.svg diff --git a/client/src/static/icons/regular/grin-beam-sweat.svg b/src/static/icons/regular/grin-beam-sweat.svg similarity index 100% rename from client/src/static/icons/regular/grin-beam-sweat.svg rename to src/static/icons/regular/grin-beam-sweat.svg diff --git a/client/src/static/icons/regular/grin-beam.svg b/src/static/icons/regular/grin-beam.svg similarity index 100% rename from client/src/static/icons/regular/grin-beam.svg rename to src/static/icons/regular/grin-beam.svg diff --git a/client/src/static/icons/regular/grin-hearts.svg b/src/static/icons/regular/grin-hearts.svg similarity index 100% rename from client/src/static/icons/regular/grin-hearts.svg rename to src/static/icons/regular/grin-hearts.svg diff --git a/client/src/static/icons/regular/grin-squint-tears.svg b/src/static/icons/regular/grin-squint-tears.svg similarity index 100% rename from client/src/static/icons/regular/grin-squint-tears.svg rename to src/static/icons/regular/grin-squint-tears.svg diff --git a/client/src/static/icons/regular/grin-squint.svg b/src/static/icons/regular/grin-squint.svg similarity index 100% rename from client/src/static/icons/regular/grin-squint.svg rename to src/static/icons/regular/grin-squint.svg diff --git a/client/src/static/icons/regular/grin-stars.svg b/src/static/icons/regular/grin-stars.svg similarity index 100% rename from client/src/static/icons/regular/grin-stars.svg rename to src/static/icons/regular/grin-stars.svg diff --git a/client/src/static/icons/regular/grin-tears.svg b/src/static/icons/regular/grin-tears.svg similarity index 100% rename from client/src/static/icons/regular/grin-tears.svg rename to src/static/icons/regular/grin-tears.svg diff --git a/client/src/static/icons/regular/grin-tongue-squint.svg b/src/static/icons/regular/grin-tongue-squint.svg similarity index 100% rename from client/src/static/icons/regular/grin-tongue-squint.svg rename to src/static/icons/regular/grin-tongue-squint.svg diff --git a/client/src/static/icons/regular/grin-tongue-wink.svg b/src/static/icons/regular/grin-tongue-wink.svg similarity index 100% rename from client/src/static/icons/regular/grin-tongue-wink.svg rename to src/static/icons/regular/grin-tongue-wink.svg diff --git a/client/src/static/icons/regular/grin-tongue.svg b/src/static/icons/regular/grin-tongue.svg similarity index 100% rename from client/src/static/icons/regular/grin-tongue.svg rename to src/static/icons/regular/grin-tongue.svg diff --git a/client/src/static/icons/regular/grin-wink.svg b/src/static/icons/regular/grin-wink.svg similarity index 100% rename from client/src/static/icons/regular/grin-wink.svg rename to src/static/icons/regular/grin-wink.svg diff --git a/client/src/static/icons/regular/grin.svg b/src/static/icons/regular/grin.svg similarity index 100% rename from client/src/static/icons/regular/grin.svg rename to src/static/icons/regular/grin.svg diff --git a/client/src/static/icons/regular/grip-horizontal.svg b/src/static/icons/regular/grip-horizontal.svg similarity index 100% rename from client/src/static/icons/regular/grip-horizontal.svg rename to src/static/icons/regular/grip-horizontal.svg diff --git a/client/src/static/icons/regular/grip-lines-vertical.svg b/src/static/icons/regular/grip-lines-vertical.svg similarity index 100% rename from client/src/static/icons/regular/grip-lines-vertical.svg rename to src/static/icons/regular/grip-lines-vertical.svg diff --git a/client/src/static/icons/regular/grip-lines.svg b/src/static/icons/regular/grip-lines.svg similarity index 100% rename from client/src/static/icons/regular/grip-lines.svg rename to src/static/icons/regular/grip-lines.svg diff --git a/client/src/static/icons/regular/grip-vertical.svg b/src/static/icons/regular/grip-vertical.svg similarity index 100% rename from client/src/static/icons/regular/grip-vertical.svg rename to src/static/icons/regular/grip-vertical.svg diff --git a/client/src/static/icons/regular/guitar-electric.svg b/src/static/icons/regular/guitar-electric.svg similarity index 100% rename from client/src/static/icons/regular/guitar-electric.svg rename to src/static/icons/regular/guitar-electric.svg diff --git a/client/src/static/icons/regular/guitar.svg b/src/static/icons/regular/guitar.svg similarity index 100% rename from client/src/static/icons/regular/guitar.svg rename to src/static/icons/regular/guitar.svg diff --git a/client/src/static/icons/regular/guitars.svg b/src/static/icons/regular/guitars.svg similarity index 100% rename from client/src/static/icons/regular/guitars.svg rename to src/static/icons/regular/guitars.svg diff --git a/client/src/static/icons/regular/h-square.svg b/src/static/icons/regular/h-square.svg similarity index 100% rename from client/src/static/icons/regular/h-square.svg rename to src/static/icons/regular/h-square.svg diff --git a/client/src/static/icons/regular/h1.svg b/src/static/icons/regular/h1.svg similarity index 100% rename from client/src/static/icons/regular/h1.svg rename to src/static/icons/regular/h1.svg diff --git a/client/src/static/icons/regular/h2.svg b/src/static/icons/regular/h2.svg similarity index 100% rename from client/src/static/icons/regular/h2.svg rename to src/static/icons/regular/h2.svg diff --git a/client/src/static/icons/regular/h3.svg b/src/static/icons/regular/h3.svg similarity index 100% rename from client/src/static/icons/regular/h3.svg rename to src/static/icons/regular/h3.svg diff --git a/client/src/static/icons/regular/h4.svg b/src/static/icons/regular/h4.svg similarity index 100% rename from client/src/static/icons/regular/h4.svg rename to src/static/icons/regular/h4.svg diff --git a/client/src/static/icons/regular/hamburger.svg b/src/static/icons/regular/hamburger.svg similarity index 100% rename from client/src/static/icons/regular/hamburger.svg rename to src/static/icons/regular/hamburger.svg diff --git a/client/src/static/icons/regular/hammer-war.svg b/src/static/icons/regular/hammer-war.svg similarity index 100% rename from client/src/static/icons/regular/hammer-war.svg rename to src/static/icons/regular/hammer-war.svg diff --git a/client/src/static/icons/regular/hammer.svg b/src/static/icons/regular/hammer.svg similarity index 100% rename from client/src/static/icons/regular/hammer.svg rename to src/static/icons/regular/hammer.svg diff --git a/client/src/static/icons/regular/hamsa.svg b/src/static/icons/regular/hamsa.svg similarity index 100% rename from client/src/static/icons/regular/hamsa.svg rename to src/static/icons/regular/hamsa.svg diff --git a/client/src/static/icons/regular/hand-heart.svg b/src/static/icons/regular/hand-heart.svg similarity index 100% rename from client/src/static/icons/regular/hand-heart.svg rename to src/static/icons/regular/hand-heart.svg diff --git a/client/src/static/icons/regular/hand-holding-box.svg b/src/static/icons/regular/hand-holding-box.svg similarity index 100% rename from client/src/static/icons/regular/hand-holding-box.svg rename to src/static/icons/regular/hand-holding-box.svg diff --git a/client/src/static/icons/regular/hand-holding-heart.svg b/src/static/icons/regular/hand-holding-heart.svg similarity index 100% rename from client/src/static/icons/regular/hand-holding-heart.svg rename to src/static/icons/regular/hand-holding-heart.svg diff --git a/client/src/static/icons/regular/hand-holding-magic.svg b/src/static/icons/regular/hand-holding-magic.svg similarity index 100% rename from client/src/static/icons/regular/hand-holding-magic.svg rename to src/static/icons/regular/hand-holding-magic.svg diff --git a/client/src/static/icons/regular/hand-holding-seedling.svg b/src/static/icons/regular/hand-holding-seedling.svg similarity index 100% rename from client/src/static/icons/regular/hand-holding-seedling.svg rename to src/static/icons/regular/hand-holding-seedling.svg diff --git a/client/src/static/icons/regular/hand-holding-usd.svg b/src/static/icons/regular/hand-holding-usd.svg similarity index 100% rename from client/src/static/icons/regular/hand-holding-usd.svg rename to src/static/icons/regular/hand-holding-usd.svg diff --git a/client/src/static/icons/regular/hand-holding-water.svg b/src/static/icons/regular/hand-holding-water.svg similarity index 100% rename from client/src/static/icons/regular/hand-holding-water.svg rename to src/static/icons/regular/hand-holding-water.svg diff --git a/client/src/static/icons/regular/hand-holding.svg b/src/static/icons/regular/hand-holding.svg similarity index 100% rename from client/src/static/icons/regular/hand-holding.svg rename to src/static/icons/regular/hand-holding.svg diff --git a/client/src/static/icons/regular/hand-lizard.svg b/src/static/icons/regular/hand-lizard.svg similarity index 100% rename from client/src/static/icons/regular/hand-lizard.svg rename to src/static/icons/regular/hand-lizard.svg diff --git a/client/src/static/icons/regular/hand-middle-finger.svg b/src/static/icons/regular/hand-middle-finger.svg similarity index 100% rename from client/src/static/icons/regular/hand-middle-finger.svg rename to src/static/icons/regular/hand-middle-finger.svg diff --git a/client/src/static/icons/regular/hand-paper.svg b/src/static/icons/regular/hand-paper.svg similarity index 100% rename from client/src/static/icons/regular/hand-paper.svg rename to src/static/icons/regular/hand-paper.svg diff --git a/client/src/static/icons/regular/hand-peace.svg b/src/static/icons/regular/hand-peace.svg similarity index 100% rename from client/src/static/icons/regular/hand-peace.svg rename to src/static/icons/regular/hand-peace.svg diff --git a/client/src/static/icons/regular/hand-point-down.svg b/src/static/icons/regular/hand-point-down.svg similarity index 100% rename from client/src/static/icons/regular/hand-point-down.svg rename to src/static/icons/regular/hand-point-down.svg diff --git a/client/src/static/icons/regular/hand-point-left.svg b/src/static/icons/regular/hand-point-left.svg similarity index 100% rename from client/src/static/icons/regular/hand-point-left.svg rename to src/static/icons/regular/hand-point-left.svg diff --git a/client/src/static/icons/regular/hand-point-right.svg b/src/static/icons/regular/hand-point-right.svg similarity index 100% rename from client/src/static/icons/regular/hand-point-right.svg rename to src/static/icons/regular/hand-point-right.svg diff --git a/client/src/static/icons/regular/hand-point-up.svg b/src/static/icons/regular/hand-point-up.svg similarity index 100% rename from client/src/static/icons/regular/hand-point-up.svg rename to src/static/icons/regular/hand-point-up.svg diff --git a/client/src/static/icons/regular/hand-pointer.svg b/src/static/icons/regular/hand-pointer.svg similarity index 100% rename from client/src/static/icons/regular/hand-pointer.svg rename to src/static/icons/regular/hand-pointer.svg diff --git a/client/src/static/icons/regular/hand-receiving.svg b/src/static/icons/regular/hand-receiving.svg similarity index 100% rename from client/src/static/icons/regular/hand-receiving.svg rename to src/static/icons/regular/hand-receiving.svg diff --git a/client/src/static/icons/regular/hand-rock.svg b/src/static/icons/regular/hand-rock.svg similarity index 100% rename from client/src/static/icons/regular/hand-rock.svg rename to src/static/icons/regular/hand-rock.svg diff --git a/client/src/static/icons/regular/hand-scissors.svg b/src/static/icons/regular/hand-scissors.svg similarity index 100% rename from client/src/static/icons/regular/hand-scissors.svg rename to src/static/icons/regular/hand-scissors.svg diff --git a/client/src/static/icons/regular/hand-spock.svg b/src/static/icons/regular/hand-spock.svg similarity index 100% rename from client/src/static/icons/regular/hand-spock.svg rename to src/static/icons/regular/hand-spock.svg diff --git a/client/src/static/icons/regular/hands-heart.svg b/src/static/icons/regular/hands-heart.svg similarity index 100% rename from client/src/static/icons/regular/hands-heart.svg rename to src/static/icons/regular/hands-heart.svg diff --git a/client/src/static/icons/regular/hands-helping.svg b/src/static/icons/regular/hands-helping.svg similarity index 100% rename from client/src/static/icons/regular/hands-helping.svg rename to src/static/icons/regular/hands-helping.svg diff --git a/client/src/static/icons/regular/hands-usd.svg b/src/static/icons/regular/hands-usd.svg similarity index 100% rename from client/src/static/icons/regular/hands-usd.svg rename to src/static/icons/regular/hands-usd.svg diff --git a/client/src/static/icons/regular/hands.svg b/src/static/icons/regular/hands.svg similarity index 100% rename from client/src/static/icons/regular/hands.svg rename to src/static/icons/regular/hands.svg diff --git a/client/src/static/icons/regular/handshake-alt.svg b/src/static/icons/regular/handshake-alt.svg similarity index 100% rename from client/src/static/icons/regular/handshake-alt.svg rename to src/static/icons/regular/handshake-alt.svg diff --git a/client/src/static/icons/regular/handshake.svg b/src/static/icons/regular/handshake.svg similarity index 100% rename from client/src/static/icons/regular/handshake.svg rename to src/static/icons/regular/handshake.svg diff --git a/client/src/static/icons/regular/hanukiah.svg b/src/static/icons/regular/hanukiah.svg similarity index 100% rename from client/src/static/icons/regular/hanukiah.svg rename to src/static/icons/regular/hanukiah.svg diff --git a/client/src/static/icons/regular/hard-hat.svg b/src/static/icons/regular/hard-hat.svg similarity index 100% rename from client/src/static/icons/regular/hard-hat.svg rename to src/static/icons/regular/hard-hat.svg diff --git a/client/src/static/icons/regular/hashtag.svg b/src/static/icons/regular/hashtag.svg similarity index 100% rename from client/src/static/icons/regular/hashtag.svg rename to src/static/icons/regular/hashtag.svg diff --git a/client/src/static/icons/regular/hat-chef.svg b/src/static/icons/regular/hat-chef.svg similarity index 100% rename from client/src/static/icons/regular/hat-chef.svg rename to src/static/icons/regular/hat-chef.svg diff --git a/client/src/static/icons/regular/hat-cowboy-side.svg b/src/static/icons/regular/hat-cowboy-side.svg similarity index 100% rename from client/src/static/icons/regular/hat-cowboy-side.svg rename to src/static/icons/regular/hat-cowboy-side.svg diff --git a/client/src/static/icons/regular/hat-cowboy.svg b/src/static/icons/regular/hat-cowboy.svg similarity index 100% rename from client/src/static/icons/regular/hat-cowboy.svg rename to src/static/icons/regular/hat-cowboy.svg diff --git a/client/src/static/icons/regular/hat-santa.svg b/src/static/icons/regular/hat-santa.svg similarity index 100% rename from client/src/static/icons/regular/hat-santa.svg rename to src/static/icons/regular/hat-santa.svg diff --git a/client/src/static/icons/regular/hat-winter.svg b/src/static/icons/regular/hat-winter.svg similarity index 100% rename from client/src/static/icons/regular/hat-winter.svg rename to src/static/icons/regular/hat-winter.svg diff --git a/client/src/static/icons/regular/hat-witch.svg b/src/static/icons/regular/hat-witch.svg similarity index 100% rename from client/src/static/icons/regular/hat-witch.svg rename to src/static/icons/regular/hat-witch.svg diff --git a/client/src/static/icons/regular/hat-wizard.svg b/src/static/icons/regular/hat-wizard.svg similarity index 100% rename from client/src/static/icons/regular/hat-wizard.svg rename to src/static/icons/regular/hat-wizard.svg diff --git a/client/src/static/icons/regular/hdd.svg b/src/static/icons/regular/hdd.svg similarity index 100% rename from client/src/static/icons/regular/hdd.svg rename to src/static/icons/regular/hdd.svg diff --git a/client/src/static/icons/regular/head-side-brain.svg b/src/static/icons/regular/head-side-brain.svg similarity index 100% rename from client/src/static/icons/regular/head-side-brain.svg rename to src/static/icons/regular/head-side-brain.svg diff --git a/client/src/static/icons/regular/head-side-headphones.svg b/src/static/icons/regular/head-side-headphones.svg similarity index 100% rename from client/src/static/icons/regular/head-side-headphones.svg rename to src/static/icons/regular/head-side-headphones.svg diff --git a/client/src/static/icons/regular/head-side-medical.svg b/src/static/icons/regular/head-side-medical.svg similarity index 100% rename from client/src/static/icons/regular/head-side-medical.svg rename to src/static/icons/regular/head-side-medical.svg diff --git a/client/src/static/icons/regular/head-side.svg b/src/static/icons/regular/head-side.svg similarity index 100% rename from client/src/static/icons/regular/head-side.svg rename to src/static/icons/regular/head-side.svg diff --git a/client/src/static/icons/regular/head-vr.svg b/src/static/icons/regular/head-vr.svg similarity index 100% rename from client/src/static/icons/regular/head-vr.svg rename to src/static/icons/regular/head-vr.svg diff --git a/client/src/static/icons/regular/heading.svg b/src/static/icons/regular/heading.svg similarity index 100% rename from client/src/static/icons/regular/heading.svg rename to src/static/icons/regular/heading.svg diff --git a/client/src/static/icons/regular/headphones-alt.svg b/src/static/icons/regular/headphones-alt.svg similarity index 100% rename from client/src/static/icons/regular/headphones-alt.svg rename to src/static/icons/regular/headphones-alt.svg diff --git a/client/src/static/icons/regular/headphones.svg b/src/static/icons/regular/headphones.svg similarity index 100% rename from client/src/static/icons/regular/headphones.svg rename to src/static/icons/regular/headphones.svg diff --git a/client/src/static/icons/regular/headset.svg b/src/static/icons/regular/headset.svg similarity index 100% rename from client/src/static/icons/regular/headset.svg rename to src/static/icons/regular/headset.svg diff --git a/client/src/static/icons/regular/heart-broken.svg b/src/static/icons/regular/heart-broken.svg similarity index 100% rename from client/src/static/icons/regular/heart-broken.svg rename to src/static/icons/regular/heart-broken.svg diff --git a/client/src/static/icons/regular/heart-circle.svg b/src/static/icons/regular/heart-circle.svg similarity index 100% rename from client/src/static/icons/regular/heart-circle.svg rename to src/static/icons/regular/heart-circle.svg diff --git a/client/src/static/icons/regular/heart-rate.svg b/src/static/icons/regular/heart-rate.svg similarity index 100% rename from client/src/static/icons/regular/heart-rate.svg rename to src/static/icons/regular/heart-rate.svg diff --git a/client/src/static/icons/regular/heart-square.svg b/src/static/icons/regular/heart-square.svg similarity index 100% rename from client/src/static/icons/regular/heart-square.svg rename to src/static/icons/regular/heart-square.svg diff --git a/client/src/static/icons/regular/heart.svg b/src/static/icons/regular/heart.svg similarity index 100% rename from client/src/static/icons/regular/heart.svg rename to src/static/icons/regular/heart.svg diff --git a/client/src/static/icons/regular/heartbeat.svg b/src/static/icons/regular/heartbeat.svg similarity index 100% rename from client/src/static/icons/regular/heartbeat.svg rename to src/static/icons/regular/heartbeat.svg diff --git a/client/src/static/icons/regular/heat.svg b/src/static/icons/regular/heat.svg similarity index 100% rename from client/src/static/icons/regular/heat.svg rename to src/static/icons/regular/heat.svg diff --git a/client/src/static/icons/regular/helicopter.svg b/src/static/icons/regular/helicopter.svg similarity index 100% rename from client/src/static/icons/regular/helicopter.svg rename to src/static/icons/regular/helicopter.svg diff --git a/client/src/static/icons/regular/helmet-battle.svg b/src/static/icons/regular/helmet-battle.svg similarity index 100% rename from client/src/static/icons/regular/helmet-battle.svg rename to src/static/icons/regular/helmet-battle.svg diff --git a/client/src/static/icons/regular/hexagon.svg b/src/static/icons/regular/hexagon.svg similarity index 100% rename from client/src/static/icons/regular/hexagon.svg rename to src/static/icons/regular/hexagon.svg diff --git a/client/src/static/icons/regular/highlighter.svg b/src/static/icons/regular/highlighter.svg similarity index 100% rename from client/src/static/icons/regular/highlighter.svg rename to src/static/icons/regular/highlighter.svg diff --git a/client/src/static/icons/regular/hiking.svg b/src/static/icons/regular/hiking.svg similarity index 100% rename from client/src/static/icons/regular/hiking.svg rename to src/static/icons/regular/hiking.svg diff --git a/client/src/static/icons/regular/hippo.svg b/src/static/icons/regular/hippo.svg similarity index 100% rename from client/src/static/icons/regular/hippo.svg rename to src/static/icons/regular/hippo.svg diff --git a/client/src/static/icons/regular/history.svg b/src/static/icons/regular/history.svg similarity index 100% rename from client/src/static/icons/regular/history.svg rename to src/static/icons/regular/history.svg diff --git a/client/src/static/icons/regular/hockey-mask.svg b/src/static/icons/regular/hockey-mask.svg similarity index 100% rename from client/src/static/icons/regular/hockey-mask.svg rename to src/static/icons/regular/hockey-mask.svg diff --git a/client/src/static/icons/regular/hockey-puck.svg b/src/static/icons/regular/hockey-puck.svg similarity index 100% rename from client/src/static/icons/regular/hockey-puck.svg rename to src/static/icons/regular/hockey-puck.svg diff --git a/client/src/static/icons/regular/hockey-sticks.svg b/src/static/icons/regular/hockey-sticks.svg similarity index 100% rename from client/src/static/icons/regular/hockey-sticks.svg rename to src/static/icons/regular/hockey-sticks.svg diff --git a/client/src/static/icons/regular/holly-berry.svg b/src/static/icons/regular/holly-berry.svg similarity index 100% rename from client/src/static/icons/regular/holly-berry.svg rename to src/static/icons/regular/holly-berry.svg diff --git a/client/src/static/icons/regular/home-alt.svg b/src/static/icons/regular/home-alt.svg similarity index 100% rename from client/src/static/icons/regular/home-alt.svg rename to src/static/icons/regular/home-alt.svg diff --git a/client/src/static/icons/regular/home-heart.svg b/src/static/icons/regular/home-heart.svg similarity index 100% rename from client/src/static/icons/regular/home-heart.svg rename to src/static/icons/regular/home-heart.svg diff --git a/client/src/static/icons/regular/home-lg-alt.svg b/src/static/icons/regular/home-lg-alt.svg similarity index 100% rename from client/src/static/icons/regular/home-lg-alt.svg rename to src/static/icons/regular/home-lg-alt.svg diff --git a/client/src/static/icons/regular/home-lg.svg b/src/static/icons/regular/home-lg.svg similarity index 100% rename from client/src/static/icons/regular/home-lg.svg rename to src/static/icons/regular/home-lg.svg diff --git a/client/src/static/icons/regular/home.svg b/src/static/icons/regular/home.svg similarity index 100% rename from client/src/static/icons/regular/home.svg rename to src/static/icons/regular/home.svg diff --git a/client/src/static/icons/regular/hood-cloak.svg b/src/static/icons/regular/hood-cloak.svg similarity index 100% rename from client/src/static/icons/regular/hood-cloak.svg rename to src/static/icons/regular/hood-cloak.svg diff --git a/client/src/static/icons/regular/horizontal-rule.svg b/src/static/icons/regular/horizontal-rule.svg similarity index 100% rename from client/src/static/icons/regular/horizontal-rule.svg rename to src/static/icons/regular/horizontal-rule.svg diff --git a/client/src/static/icons/regular/horse-head.svg b/src/static/icons/regular/horse-head.svg similarity index 100% rename from client/src/static/icons/regular/horse-head.svg rename to src/static/icons/regular/horse-head.svg diff --git a/client/src/static/icons/regular/horse-saddle.svg b/src/static/icons/regular/horse-saddle.svg similarity index 100% rename from client/src/static/icons/regular/horse-saddle.svg rename to src/static/icons/regular/horse-saddle.svg diff --git a/client/src/static/icons/regular/horse.svg b/src/static/icons/regular/horse.svg similarity index 100% rename from client/src/static/icons/regular/horse.svg rename to src/static/icons/regular/horse.svg diff --git a/client/src/static/icons/regular/hospital-alt.svg b/src/static/icons/regular/hospital-alt.svg similarity index 100% rename from client/src/static/icons/regular/hospital-alt.svg rename to src/static/icons/regular/hospital-alt.svg diff --git a/client/src/static/icons/regular/hospital-symbol.svg b/src/static/icons/regular/hospital-symbol.svg similarity index 100% rename from client/src/static/icons/regular/hospital-symbol.svg rename to src/static/icons/regular/hospital-symbol.svg diff --git a/client/src/static/icons/regular/hospital-user.svg b/src/static/icons/regular/hospital-user.svg similarity index 100% rename from client/src/static/icons/regular/hospital-user.svg rename to src/static/icons/regular/hospital-user.svg diff --git a/client/src/static/icons/regular/hospital.svg b/src/static/icons/regular/hospital.svg similarity index 100% rename from client/src/static/icons/regular/hospital.svg rename to src/static/icons/regular/hospital.svg diff --git a/client/src/static/icons/regular/hospitals.svg b/src/static/icons/regular/hospitals.svg similarity index 100% rename from client/src/static/icons/regular/hospitals.svg rename to src/static/icons/regular/hospitals.svg diff --git a/client/src/static/icons/regular/hot-tub.svg b/src/static/icons/regular/hot-tub.svg similarity index 100% rename from client/src/static/icons/regular/hot-tub.svg rename to src/static/icons/regular/hot-tub.svg diff --git a/client/src/static/icons/regular/hotdog.svg b/src/static/icons/regular/hotdog.svg similarity index 100% rename from client/src/static/icons/regular/hotdog.svg rename to src/static/icons/regular/hotdog.svg diff --git a/client/src/static/icons/regular/hotel.svg b/src/static/icons/regular/hotel.svg similarity index 100% rename from client/src/static/icons/regular/hotel.svg rename to src/static/icons/regular/hotel.svg diff --git a/client/src/static/icons/regular/hourglass-end.svg b/src/static/icons/regular/hourglass-end.svg similarity index 100% rename from client/src/static/icons/regular/hourglass-end.svg rename to src/static/icons/regular/hourglass-end.svg diff --git a/client/src/static/icons/regular/hourglass-half.svg b/src/static/icons/regular/hourglass-half.svg similarity index 100% rename from client/src/static/icons/regular/hourglass-half.svg rename to src/static/icons/regular/hourglass-half.svg diff --git a/client/src/static/icons/regular/hourglass-start.svg b/src/static/icons/regular/hourglass-start.svg similarity index 100% rename from client/src/static/icons/regular/hourglass-start.svg rename to src/static/icons/regular/hourglass-start.svg diff --git a/client/src/static/icons/regular/hourglass.svg b/src/static/icons/regular/hourglass.svg similarity index 100% rename from client/src/static/icons/regular/hourglass.svg rename to src/static/icons/regular/hourglass.svg diff --git a/client/src/static/icons/regular/house-damage.svg b/src/static/icons/regular/house-damage.svg similarity index 100% rename from client/src/static/icons/regular/house-damage.svg rename to src/static/icons/regular/house-damage.svg diff --git a/client/src/static/icons/regular/house-day.svg b/src/static/icons/regular/house-day.svg similarity index 100% rename from client/src/static/icons/regular/house-day.svg rename to src/static/icons/regular/house-day.svg diff --git a/client/src/static/icons/regular/house-flood.svg b/src/static/icons/regular/house-flood.svg similarity index 100% rename from client/src/static/icons/regular/house-flood.svg rename to src/static/icons/regular/house-flood.svg diff --git a/client/src/static/icons/regular/house-leave.svg b/src/static/icons/regular/house-leave.svg similarity index 100% rename from client/src/static/icons/regular/house-leave.svg rename to src/static/icons/regular/house-leave.svg diff --git a/client/src/static/icons/regular/house-night.svg b/src/static/icons/regular/house-night.svg similarity index 100% rename from client/src/static/icons/regular/house-night.svg rename to src/static/icons/regular/house-night.svg diff --git a/client/src/static/icons/regular/house-return.svg b/src/static/icons/regular/house-return.svg similarity index 100% rename from client/src/static/icons/regular/house-return.svg rename to src/static/icons/regular/house-return.svg diff --git a/client/src/static/icons/regular/house-signal.svg b/src/static/icons/regular/house-signal.svg similarity index 100% rename from client/src/static/icons/regular/house-signal.svg rename to src/static/icons/regular/house-signal.svg diff --git a/client/src/static/icons/regular/house.svg b/src/static/icons/regular/house.svg similarity index 100% rename from client/src/static/icons/regular/house.svg rename to src/static/icons/regular/house.svg diff --git a/client/src/static/icons/regular/hryvnia.svg b/src/static/icons/regular/hryvnia.svg similarity index 100% rename from client/src/static/icons/regular/hryvnia.svg rename to src/static/icons/regular/hryvnia.svg diff --git a/client/src/static/icons/regular/humidity.svg b/src/static/icons/regular/humidity.svg similarity index 100% rename from client/src/static/icons/regular/humidity.svg rename to src/static/icons/regular/humidity.svg diff --git a/client/src/static/icons/regular/hurricane.svg b/src/static/icons/regular/hurricane.svg similarity index 100% rename from client/src/static/icons/regular/hurricane.svg rename to src/static/icons/regular/hurricane.svg diff --git a/client/src/static/icons/regular/i-cursor.svg b/src/static/icons/regular/i-cursor.svg similarity index 100% rename from client/src/static/icons/regular/i-cursor.svg rename to src/static/icons/regular/i-cursor.svg diff --git a/client/src/static/icons/regular/ice-cream.svg b/src/static/icons/regular/ice-cream.svg similarity index 100% rename from client/src/static/icons/regular/ice-cream.svg rename to src/static/icons/regular/ice-cream.svg diff --git a/client/src/static/icons/regular/ice-skate.svg b/src/static/icons/regular/ice-skate.svg similarity index 100% rename from client/src/static/icons/regular/ice-skate.svg rename to src/static/icons/regular/ice-skate.svg diff --git a/client/src/static/icons/regular/icicles.svg b/src/static/icons/regular/icicles.svg similarity index 100% rename from client/src/static/icons/regular/icicles.svg rename to src/static/icons/regular/icicles.svg diff --git a/client/src/static/icons/regular/icons-alt.svg b/src/static/icons/regular/icons-alt.svg similarity index 100% rename from client/src/static/icons/regular/icons-alt.svg rename to src/static/icons/regular/icons-alt.svg diff --git a/client/src/static/icons/regular/icons.svg b/src/static/icons/regular/icons.svg similarity index 100% rename from client/src/static/icons/regular/icons.svg rename to src/static/icons/regular/icons.svg diff --git a/client/src/static/icons/regular/id-badge.svg b/src/static/icons/regular/id-badge.svg similarity index 100% rename from client/src/static/icons/regular/id-badge.svg rename to src/static/icons/regular/id-badge.svg diff --git a/client/src/static/icons/regular/id-card-alt.svg b/src/static/icons/regular/id-card-alt.svg similarity index 100% rename from client/src/static/icons/regular/id-card-alt.svg rename to src/static/icons/regular/id-card-alt.svg diff --git a/client/src/static/icons/regular/id-card.svg b/src/static/icons/regular/id-card.svg similarity index 100% rename from client/src/static/icons/regular/id-card.svg rename to src/static/icons/regular/id-card.svg diff --git a/client/src/static/icons/regular/igloo.svg b/src/static/icons/regular/igloo.svg similarity index 100% rename from client/src/static/icons/regular/igloo.svg rename to src/static/icons/regular/igloo.svg diff --git a/client/src/static/icons/regular/image-polaroid.svg b/src/static/icons/regular/image-polaroid.svg similarity index 100% rename from client/src/static/icons/regular/image-polaroid.svg rename to src/static/icons/regular/image-polaroid.svg diff --git a/client/src/static/icons/regular/image.svg b/src/static/icons/regular/image.svg similarity index 100% rename from client/src/static/icons/regular/image.svg rename to src/static/icons/regular/image.svg diff --git a/client/src/static/icons/regular/images.svg b/src/static/icons/regular/images.svg similarity index 100% rename from client/src/static/icons/regular/images.svg rename to src/static/icons/regular/images.svg diff --git a/client/src/static/icons/regular/inbox-in.svg b/src/static/icons/regular/inbox-in.svg similarity index 100% rename from client/src/static/icons/regular/inbox-in.svg rename to src/static/icons/regular/inbox-in.svg diff --git a/client/src/static/icons/regular/inbox-out.svg b/src/static/icons/regular/inbox-out.svg similarity index 100% rename from client/src/static/icons/regular/inbox-out.svg rename to src/static/icons/regular/inbox-out.svg diff --git a/client/src/static/icons/regular/inbox.svg b/src/static/icons/regular/inbox.svg similarity index 100% rename from client/src/static/icons/regular/inbox.svg rename to src/static/icons/regular/inbox.svg diff --git a/client/src/static/icons/regular/indent.svg b/src/static/icons/regular/indent.svg similarity index 100% rename from client/src/static/icons/regular/indent.svg rename to src/static/icons/regular/indent.svg diff --git a/client/src/static/icons/regular/industry-alt.svg b/src/static/icons/regular/industry-alt.svg similarity index 100% rename from client/src/static/icons/regular/industry-alt.svg rename to src/static/icons/regular/industry-alt.svg diff --git a/client/src/static/icons/regular/industry.svg b/src/static/icons/regular/industry.svg similarity index 100% rename from client/src/static/icons/regular/industry.svg rename to src/static/icons/regular/industry.svg diff --git a/client/src/static/icons/regular/infinity.svg b/src/static/icons/regular/infinity.svg similarity index 100% rename from client/src/static/icons/regular/infinity.svg rename to src/static/icons/regular/infinity.svg diff --git a/client/src/static/icons/regular/info-circle.svg b/src/static/icons/regular/info-circle.svg similarity index 100% rename from client/src/static/icons/regular/info-circle.svg rename to src/static/icons/regular/info-circle.svg diff --git a/client/src/static/icons/regular/info-square.svg b/src/static/icons/regular/info-square.svg similarity index 100% rename from client/src/static/icons/regular/info-square.svg rename to src/static/icons/regular/info-square.svg diff --git a/client/src/static/icons/regular/info.svg b/src/static/icons/regular/info.svg similarity index 100% rename from client/src/static/icons/regular/info.svg rename to src/static/icons/regular/info.svg diff --git a/client/src/static/icons/regular/inhaler.svg b/src/static/icons/regular/inhaler.svg similarity index 100% rename from client/src/static/icons/regular/inhaler.svg rename to src/static/icons/regular/inhaler.svg diff --git a/client/src/static/icons/regular/integral.svg b/src/static/icons/regular/integral.svg similarity index 100% rename from client/src/static/icons/regular/integral.svg rename to src/static/icons/regular/integral.svg diff --git a/client/src/static/icons/regular/intersection.svg b/src/static/icons/regular/intersection.svg similarity index 100% rename from client/src/static/icons/regular/intersection.svg rename to src/static/icons/regular/intersection.svg diff --git a/client/src/static/icons/regular/inventory.svg b/src/static/icons/regular/inventory.svg similarity index 100% rename from client/src/static/icons/regular/inventory.svg rename to src/static/icons/regular/inventory.svg diff --git a/client/src/static/icons/regular/island-tropical.svg b/src/static/icons/regular/island-tropical.svg similarity index 100% rename from client/src/static/icons/regular/island-tropical.svg rename to src/static/icons/regular/island-tropical.svg diff --git a/client/src/static/icons/regular/italic.svg b/src/static/icons/regular/italic.svg similarity index 100% rename from client/src/static/icons/regular/italic.svg rename to src/static/icons/regular/italic.svg diff --git a/client/src/static/icons/regular/jack-o-lantern.svg b/src/static/icons/regular/jack-o-lantern.svg similarity index 100% rename from client/src/static/icons/regular/jack-o-lantern.svg rename to src/static/icons/regular/jack-o-lantern.svg diff --git a/client/src/static/icons/regular/jedi.svg b/src/static/icons/regular/jedi.svg similarity index 100% rename from client/src/static/icons/regular/jedi.svg rename to src/static/icons/regular/jedi.svg diff --git a/client/src/static/icons/regular/joint.svg b/src/static/icons/regular/joint.svg similarity index 100% rename from client/src/static/icons/regular/joint.svg rename to src/static/icons/regular/joint.svg diff --git a/client/src/static/icons/regular/journal-whills.svg b/src/static/icons/regular/journal-whills.svg similarity index 100% rename from client/src/static/icons/regular/journal-whills.svg rename to src/static/icons/regular/journal-whills.svg diff --git a/client/src/static/icons/regular/joystick.svg b/src/static/icons/regular/joystick.svg similarity index 100% rename from client/src/static/icons/regular/joystick.svg rename to src/static/icons/regular/joystick.svg diff --git a/client/src/static/icons/regular/jug.svg b/src/static/icons/regular/jug.svg similarity index 100% rename from client/src/static/icons/regular/jug.svg rename to src/static/icons/regular/jug.svg diff --git a/client/src/static/icons/regular/kaaba.svg b/src/static/icons/regular/kaaba.svg similarity index 100% rename from client/src/static/icons/regular/kaaba.svg rename to src/static/icons/regular/kaaba.svg diff --git a/client/src/static/icons/regular/kazoo.svg b/src/static/icons/regular/kazoo.svg similarity index 100% rename from client/src/static/icons/regular/kazoo.svg rename to src/static/icons/regular/kazoo.svg diff --git a/client/src/static/icons/regular/kerning.svg b/src/static/icons/regular/kerning.svg similarity index 100% rename from client/src/static/icons/regular/kerning.svg rename to src/static/icons/regular/kerning.svg diff --git a/client/src/static/icons/regular/key-skeleton.svg b/src/static/icons/regular/key-skeleton.svg similarity index 100% rename from client/src/static/icons/regular/key-skeleton.svg rename to src/static/icons/regular/key-skeleton.svg diff --git a/client/src/static/icons/regular/key.svg b/src/static/icons/regular/key.svg similarity index 100% rename from client/src/static/icons/regular/key.svg rename to src/static/icons/regular/key.svg diff --git a/client/src/static/icons/regular/keyboard.svg b/src/static/icons/regular/keyboard.svg similarity index 100% rename from client/src/static/icons/regular/keyboard.svg rename to src/static/icons/regular/keyboard.svg diff --git a/client/src/static/icons/regular/keynote.svg b/src/static/icons/regular/keynote.svg similarity index 100% rename from client/src/static/icons/regular/keynote.svg rename to src/static/icons/regular/keynote.svg diff --git a/client/src/static/icons/regular/khanda.svg b/src/static/icons/regular/khanda.svg similarity index 100% rename from client/src/static/icons/regular/khanda.svg rename to src/static/icons/regular/khanda.svg diff --git a/client/src/static/icons/regular/kidneys.svg b/src/static/icons/regular/kidneys.svg similarity index 100% rename from client/src/static/icons/regular/kidneys.svg rename to src/static/icons/regular/kidneys.svg diff --git a/client/src/static/icons/regular/kiss-beam.svg b/src/static/icons/regular/kiss-beam.svg similarity index 100% rename from client/src/static/icons/regular/kiss-beam.svg rename to src/static/icons/regular/kiss-beam.svg diff --git a/client/src/static/icons/regular/kiss-wink-heart.svg b/src/static/icons/regular/kiss-wink-heart.svg similarity index 100% rename from client/src/static/icons/regular/kiss-wink-heart.svg rename to src/static/icons/regular/kiss-wink-heart.svg diff --git a/client/src/static/icons/regular/kiss.svg b/src/static/icons/regular/kiss.svg similarity index 100% rename from client/src/static/icons/regular/kiss.svg rename to src/static/icons/regular/kiss.svg diff --git a/client/src/static/icons/regular/kite.svg b/src/static/icons/regular/kite.svg similarity index 100% rename from client/src/static/icons/regular/kite.svg rename to src/static/icons/regular/kite.svg diff --git a/client/src/static/icons/regular/kiwi-bird.svg b/src/static/icons/regular/kiwi-bird.svg similarity index 100% rename from client/src/static/icons/regular/kiwi-bird.svg rename to src/static/icons/regular/kiwi-bird.svg diff --git a/client/src/static/icons/regular/knife-kitchen.svg b/src/static/icons/regular/knife-kitchen.svg similarity index 100% rename from client/src/static/icons/regular/knife-kitchen.svg rename to src/static/icons/regular/knife-kitchen.svg diff --git a/client/src/static/icons/regular/lambda.svg b/src/static/icons/regular/lambda.svg similarity index 100% rename from client/src/static/icons/regular/lambda.svg rename to src/static/icons/regular/lambda.svg diff --git a/client/src/static/icons/regular/lamp-desk.svg b/src/static/icons/regular/lamp-desk.svg similarity index 100% rename from client/src/static/icons/regular/lamp-desk.svg rename to src/static/icons/regular/lamp-desk.svg diff --git a/client/src/static/icons/regular/lamp-floor.svg b/src/static/icons/regular/lamp-floor.svg similarity index 100% rename from client/src/static/icons/regular/lamp-floor.svg rename to src/static/icons/regular/lamp-floor.svg diff --git a/client/src/static/icons/regular/lamp.svg b/src/static/icons/regular/lamp.svg similarity index 100% rename from client/src/static/icons/regular/lamp.svg rename to src/static/icons/regular/lamp.svg diff --git a/client/src/static/icons/regular/landmark-alt.svg b/src/static/icons/regular/landmark-alt.svg similarity index 100% rename from client/src/static/icons/regular/landmark-alt.svg rename to src/static/icons/regular/landmark-alt.svg diff --git a/client/src/static/icons/regular/landmark.svg b/src/static/icons/regular/landmark.svg similarity index 100% rename from client/src/static/icons/regular/landmark.svg rename to src/static/icons/regular/landmark.svg diff --git a/client/src/static/icons/regular/language.svg b/src/static/icons/regular/language.svg similarity index 100% rename from client/src/static/icons/regular/language.svg rename to src/static/icons/regular/language.svg diff --git a/client/src/static/icons/regular/laptop-code.svg b/src/static/icons/regular/laptop-code.svg similarity index 100% rename from client/src/static/icons/regular/laptop-code.svg rename to src/static/icons/regular/laptop-code.svg diff --git a/client/src/static/icons/regular/laptop-medical.svg b/src/static/icons/regular/laptop-medical.svg similarity index 100% rename from client/src/static/icons/regular/laptop-medical.svg rename to src/static/icons/regular/laptop-medical.svg diff --git a/client/src/static/icons/regular/laptop.svg b/src/static/icons/regular/laptop.svg similarity index 100% rename from client/src/static/icons/regular/laptop.svg rename to src/static/icons/regular/laptop.svg diff --git a/client/src/static/icons/regular/lasso.svg b/src/static/icons/regular/lasso.svg similarity index 100% rename from client/src/static/icons/regular/lasso.svg rename to src/static/icons/regular/lasso.svg diff --git a/client/src/static/icons/regular/laugh-beam.svg b/src/static/icons/regular/laugh-beam.svg similarity index 100% rename from client/src/static/icons/regular/laugh-beam.svg rename to src/static/icons/regular/laugh-beam.svg diff --git a/client/src/static/icons/regular/laugh-squint.svg b/src/static/icons/regular/laugh-squint.svg similarity index 100% rename from client/src/static/icons/regular/laugh-squint.svg rename to src/static/icons/regular/laugh-squint.svg diff --git a/client/src/static/icons/regular/laugh-wink.svg b/src/static/icons/regular/laugh-wink.svg similarity index 100% rename from client/src/static/icons/regular/laugh-wink.svg rename to src/static/icons/regular/laugh-wink.svg diff --git a/client/src/static/icons/regular/laugh.svg b/src/static/icons/regular/laugh.svg similarity index 100% rename from client/src/static/icons/regular/laugh.svg rename to src/static/icons/regular/laugh.svg diff --git a/client/src/static/icons/regular/layer-group.svg b/src/static/icons/regular/layer-group.svg similarity index 100% rename from client/src/static/icons/regular/layer-group.svg rename to src/static/icons/regular/layer-group.svg diff --git a/client/src/static/icons/regular/layer-minus.svg b/src/static/icons/regular/layer-minus.svg similarity index 100% rename from client/src/static/icons/regular/layer-minus.svg rename to src/static/icons/regular/layer-minus.svg diff --git a/client/src/static/icons/regular/layer-plus.svg b/src/static/icons/regular/layer-plus.svg similarity index 100% rename from client/src/static/icons/regular/layer-plus.svg rename to src/static/icons/regular/layer-plus.svg diff --git a/client/src/static/icons/regular/leaf-heart.svg b/src/static/icons/regular/leaf-heart.svg similarity index 100% rename from client/src/static/icons/regular/leaf-heart.svg rename to src/static/icons/regular/leaf-heart.svg diff --git a/client/src/static/icons/regular/leaf-maple.svg b/src/static/icons/regular/leaf-maple.svg similarity index 100% rename from client/src/static/icons/regular/leaf-maple.svg rename to src/static/icons/regular/leaf-maple.svg diff --git a/client/src/static/icons/regular/leaf-oak.svg b/src/static/icons/regular/leaf-oak.svg similarity index 100% rename from client/src/static/icons/regular/leaf-oak.svg rename to src/static/icons/regular/leaf-oak.svg diff --git a/client/src/static/icons/regular/leaf.svg b/src/static/icons/regular/leaf.svg similarity index 100% rename from client/src/static/icons/regular/leaf.svg rename to src/static/icons/regular/leaf.svg diff --git a/client/src/static/icons/regular/lemon.svg b/src/static/icons/regular/lemon.svg similarity index 100% rename from client/src/static/icons/regular/lemon.svg rename to src/static/icons/regular/lemon.svg diff --git a/client/src/static/icons/regular/less-than-equal.svg b/src/static/icons/regular/less-than-equal.svg similarity index 100% rename from client/src/static/icons/regular/less-than-equal.svg rename to src/static/icons/regular/less-than-equal.svg diff --git a/client/src/static/icons/regular/less-than.svg b/src/static/icons/regular/less-than.svg similarity index 100% rename from client/src/static/icons/regular/less-than.svg rename to src/static/icons/regular/less-than.svg diff --git a/client/src/static/icons/regular/level-down-alt.svg b/src/static/icons/regular/level-down-alt.svg similarity index 100% rename from client/src/static/icons/regular/level-down-alt.svg rename to src/static/icons/regular/level-down-alt.svg diff --git a/client/src/static/icons/regular/level-down.svg b/src/static/icons/regular/level-down.svg similarity index 100% rename from client/src/static/icons/regular/level-down.svg rename to src/static/icons/regular/level-down.svg diff --git a/client/src/static/icons/regular/level-up-alt.svg b/src/static/icons/regular/level-up-alt.svg similarity index 100% rename from client/src/static/icons/regular/level-up-alt.svg rename to src/static/icons/regular/level-up-alt.svg diff --git a/client/src/static/icons/regular/level-up.svg b/src/static/icons/regular/level-up.svg similarity index 100% rename from client/src/static/icons/regular/level-up.svg rename to src/static/icons/regular/level-up.svg diff --git a/client/src/static/icons/regular/life-ring.svg b/src/static/icons/regular/life-ring.svg similarity index 100% rename from client/src/static/icons/regular/life-ring.svg rename to src/static/icons/regular/life-ring.svg diff --git a/client/src/static/icons/regular/light-ceiling.svg b/src/static/icons/regular/light-ceiling.svg similarity index 100% rename from client/src/static/icons/regular/light-ceiling.svg rename to src/static/icons/regular/light-ceiling.svg diff --git a/client/src/static/icons/regular/light-switch-off.svg b/src/static/icons/regular/light-switch-off.svg similarity index 100% rename from client/src/static/icons/regular/light-switch-off.svg rename to src/static/icons/regular/light-switch-off.svg diff --git a/client/src/static/icons/regular/light-switch-on.svg b/src/static/icons/regular/light-switch-on.svg similarity index 100% rename from client/src/static/icons/regular/light-switch-on.svg rename to src/static/icons/regular/light-switch-on.svg diff --git a/client/src/static/icons/regular/light-switch.svg b/src/static/icons/regular/light-switch.svg similarity index 100% rename from client/src/static/icons/regular/light-switch.svg rename to src/static/icons/regular/light-switch.svg diff --git a/client/src/static/icons/regular/lightbulb-dollar.svg b/src/static/icons/regular/lightbulb-dollar.svg similarity index 100% rename from client/src/static/icons/regular/lightbulb-dollar.svg rename to src/static/icons/regular/lightbulb-dollar.svg diff --git a/client/src/static/icons/regular/lightbulb-exclamation.svg b/src/static/icons/regular/lightbulb-exclamation.svg similarity index 100% rename from client/src/static/icons/regular/lightbulb-exclamation.svg rename to src/static/icons/regular/lightbulb-exclamation.svg diff --git a/client/src/static/icons/regular/lightbulb-on.svg b/src/static/icons/regular/lightbulb-on.svg similarity index 100% rename from client/src/static/icons/regular/lightbulb-on.svg rename to src/static/icons/regular/lightbulb-on.svg diff --git a/client/src/static/icons/regular/lightbulb-slash.svg b/src/static/icons/regular/lightbulb-slash.svg similarity index 100% rename from client/src/static/icons/regular/lightbulb-slash.svg rename to src/static/icons/regular/lightbulb-slash.svg diff --git a/client/src/static/icons/regular/lightbulb.svg b/src/static/icons/regular/lightbulb.svg similarity index 100% rename from client/src/static/icons/regular/lightbulb.svg rename to src/static/icons/regular/lightbulb.svg diff --git a/client/src/static/icons/regular/lights-holiday.svg b/src/static/icons/regular/lights-holiday.svg similarity index 100% rename from client/src/static/icons/regular/lights-holiday.svg rename to src/static/icons/regular/lights-holiday.svg diff --git a/client/src/static/icons/regular/line-columns.svg b/src/static/icons/regular/line-columns.svg similarity index 100% rename from client/src/static/icons/regular/line-columns.svg rename to src/static/icons/regular/line-columns.svg diff --git a/client/src/static/icons/regular/line-height.svg b/src/static/icons/regular/line-height.svg similarity index 100% rename from client/src/static/icons/regular/line-height.svg rename to src/static/icons/regular/line-height.svg diff --git a/client/src/static/icons/regular/link.svg b/src/static/icons/regular/link.svg similarity index 100% rename from client/src/static/icons/regular/link.svg rename to src/static/icons/regular/link.svg diff --git a/client/src/static/icons/regular/lips.svg b/src/static/icons/regular/lips.svg similarity index 100% rename from client/src/static/icons/regular/lips.svg rename to src/static/icons/regular/lips.svg diff --git a/client/src/static/icons/regular/lira-sign.svg b/src/static/icons/regular/lira-sign.svg similarity index 100% rename from client/src/static/icons/regular/lira-sign.svg rename to src/static/icons/regular/lira-sign.svg diff --git a/client/src/static/icons/regular/list-alt.svg b/src/static/icons/regular/list-alt.svg similarity index 100% rename from client/src/static/icons/regular/list-alt.svg rename to src/static/icons/regular/list-alt.svg diff --git a/client/src/static/icons/regular/list-music.svg b/src/static/icons/regular/list-music.svg similarity index 100% rename from client/src/static/icons/regular/list-music.svg rename to src/static/icons/regular/list-music.svg diff --git a/client/src/static/icons/regular/list-ol.svg b/src/static/icons/regular/list-ol.svg similarity index 100% rename from client/src/static/icons/regular/list-ol.svg rename to src/static/icons/regular/list-ol.svg diff --git a/client/src/static/icons/regular/list-ul.svg b/src/static/icons/regular/list-ul.svg similarity index 100% rename from client/src/static/icons/regular/list-ul.svg rename to src/static/icons/regular/list-ul.svg diff --git a/client/src/static/icons/regular/list.svg b/src/static/icons/regular/list.svg similarity index 100% rename from client/src/static/icons/regular/list.svg rename to src/static/icons/regular/list.svg diff --git a/client/src/static/icons/regular/location-arrow.svg b/src/static/icons/regular/location-arrow.svg similarity index 100% rename from client/src/static/icons/regular/location-arrow.svg rename to src/static/icons/regular/location-arrow.svg diff --git a/client/src/static/icons/regular/location-circle.svg b/src/static/icons/regular/location-circle.svg similarity index 100% rename from client/src/static/icons/regular/location-circle.svg rename to src/static/icons/regular/location-circle.svg diff --git a/client/src/static/icons/regular/location-slash.svg b/src/static/icons/regular/location-slash.svg similarity index 100% rename from client/src/static/icons/regular/location-slash.svg rename to src/static/icons/regular/location-slash.svg diff --git a/client/src/static/icons/regular/location.svg b/src/static/icons/regular/location.svg similarity index 100% rename from client/src/static/icons/regular/location.svg rename to src/static/icons/regular/location.svg diff --git a/client/src/static/icons/regular/lock-alt.svg b/src/static/icons/regular/lock-alt.svg similarity index 100% rename from client/src/static/icons/regular/lock-alt.svg rename to src/static/icons/regular/lock-alt.svg diff --git a/client/src/static/icons/regular/lock-open-alt.svg b/src/static/icons/regular/lock-open-alt.svg similarity index 100% rename from client/src/static/icons/regular/lock-open-alt.svg rename to src/static/icons/regular/lock-open-alt.svg diff --git a/client/src/static/icons/regular/lock-open.svg b/src/static/icons/regular/lock-open.svg similarity index 100% rename from client/src/static/icons/regular/lock-open.svg rename to src/static/icons/regular/lock-open.svg diff --git a/client/src/static/icons/regular/lock.svg b/src/static/icons/regular/lock.svg similarity index 100% rename from client/src/static/icons/regular/lock.svg rename to src/static/icons/regular/lock.svg diff --git a/client/src/static/icons/regular/long-arrow-alt-down.svg b/src/static/icons/regular/long-arrow-alt-down.svg similarity index 100% rename from client/src/static/icons/regular/long-arrow-alt-down.svg rename to src/static/icons/regular/long-arrow-alt-down.svg diff --git a/client/src/static/icons/regular/long-arrow-alt-left.svg b/src/static/icons/regular/long-arrow-alt-left.svg similarity index 100% rename from client/src/static/icons/regular/long-arrow-alt-left.svg rename to src/static/icons/regular/long-arrow-alt-left.svg diff --git a/client/src/static/icons/regular/long-arrow-alt-right.svg b/src/static/icons/regular/long-arrow-alt-right.svg similarity index 100% rename from client/src/static/icons/regular/long-arrow-alt-right.svg rename to src/static/icons/regular/long-arrow-alt-right.svg diff --git a/client/src/static/icons/regular/long-arrow-alt-up.svg b/src/static/icons/regular/long-arrow-alt-up.svg similarity index 100% rename from client/src/static/icons/regular/long-arrow-alt-up.svg rename to src/static/icons/regular/long-arrow-alt-up.svg diff --git a/client/src/static/icons/regular/long-arrow-down.svg b/src/static/icons/regular/long-arrow-down.svg similarity index 100% rename from client/src/static/icons/regular/long-arrow-down.svg rename to src/static/icons/regular/long-arrow-down.svg diff --git a/client/src/static/icons/regular/long-arrow-left.svg b/src/static/icons/regular/long-arrow-left.svg similarity index 100% rename from client/src/static/icons/regular/long-arrow-left.svg rename to src/static/icons/regular/long-arrow-left.svg diff --git a/client/src/static/icons/regular/long-arrow-right.svg b/src/static/icons/regular/long-arrow-right.svg similarity index 100% rename from client/src/static/icons/regular/long-arrow-right.svg rename to src/static/icons/regular/long-arrow-right.svg diff --git a/client/src/static/icons/regular/long-arrow-up.svg b/src/static/icons/regular/long-arrow-up.svg similarity index 100% rename from client/src/static/icons/regular/long-arrow-up.svg rename to src/static/icons/regular/long-arrow-up.svg diff --git a/client/src/static/icons/regular/loveseat.svg b/src/static/icons/regular/loveseat.svg similarity index 100% rename from client/src/static/icons/regular/loveseat.svg rename to src/static/icons/regular/loveseat.svg diff --git a/client/src/static/icons/regular/low-vision.svg b/src/static/icons/regular/low-vision.svg similarity index 100% rename from client/src/static/icons/regular/low-vision.svg rename to src/static/icons/regular/low-vision.svg diff --git a/client/src/static/icons/regular/luchador.svg b/src/static/icons/regular/luchador.svg similarity index 100% rename from client/src/static/icons/regular/luchador.svg rename to src/static/icons/regular/luchador.svg diff --git a/client/src/static/icons/regular/luggage-cart.svg b/src/static/icons/regular/luggage-cart.svg similarity index 100% rename from client/src/static/icons/regular/luggage-cart.svg rename to src/static/icons/regular/luggage-cart.svg diff --git a/client/src/static/icons/regular/lungs.svg b/src/static/icons/regular/lungs.svg similarity index 100% rename from client/src/static/icons/regular/lungs.svg rename to src/static/icons/regular/lungs.svg diff --git a/client/src/static/icons/regular/mace.svg b/src/static/icons/regular/mace.svg similarity index 100% rename from client/src/static/icons/regular/mace.svg rename to src/static/icons/regular/mace.svg diff --git a/client/src/static/icons/regular/magic.svg b/src/static/icons/regular/magic.svg similarity index 100% rename from client/src/static/icons/regular/magic.svg rename to src/static/icons/regular/magic.svg diff --git a/client/src/static/icons/regular/magnet.svg b/src/static/icons/regular/magnet.svg similarity index 100% rename from client/src/static/icons/regular/magnet.svg rename to src/static/icons/regular/magnet.svg diff --git a/client/src/static/icons/regular/mail-bulk.svg b/src/static/icons/regular/mail-bulk.svg similarity index 100% rename from client/src/static/icons/regular/mail-bulk.svg rename to src/static/icons/regular/mail-bulk.svg diff --git a/client/src/static/icons/regular/mailbox.svg b/src/static/icons/regular/mailbox.svg similarity index 100% rename from client/src/static/icons/regular/mailbox.svg rename to src/static/icons/regular/mailbox.svg diff --git a/client/src/static/icons/regular/male.svg b/src/static/icons/regular/male.svg similarity index 100% rename from client/src/static/icons/regular/male.svg rename to src/static/icons/regular/male.svg diff --git a/client/src/static/icons/regular/mandolin.svg b/src/static/icons/regular/mandolin.svg similarity index 100% rename from client/src/static/icons/regular/mandolin.svg rename to src/static/icons/regular/mandolin.svg diff --git a/client/src/static/icons/regular/map-marked-alt.svg b/src/static/icons/regular/map-marked-alt.svg similarity index 100% rename from client/src/static/icons/regular/map-marked-alt.svg rename to src/static/icons/regular/map-marked-alt.svg diff --git a/client/src/static/icons/regular/map-marked.svg b/src/static/icons/regular/map-marked.svg similarity index 100% rename from client/src/static/icons/regular/map-marked.svg rename to src/static/icons/regular/map-marked.svg diff --git a/client/src/static/icons/regular/map-marker-alt-slash.svg b/src/static/icons/regular/map-marker-alt-slash.svg similarity index 100% rename from client/src/static/icons/regular/map-marker-alt-slash.svg rename to src/static/icons/regular/map-marker-alt-slash.svg diff --git a/client/src/static/icons/regular/map-marker-alt.svg b/src/static/icons/regular/map-marker-alt.svg similarity index 100% rename from client/src/static/icons/regular/map-marker-alt.svg rename to src/static/icons/regular/map-marker-alt.svg diff --git a/client/src/static/icons/regular/map-marker-check.svg b/src/static/icons/regular/map-marker-check.svg similarity index 100% rename from client/src/static/icons/regular/map-marker-check.svg rename to src/static/icons/regular/map-marker-check.svg diff --git a/client/src/static/icons/regular/map-marker-edit.svg b/src/static/icons/regular/map-marker-edit.svg similarity index 100% rename from client/src/static/icons/regular/map-marker-edit.svg rename to src/static/icons/regular/map-marker-edit.svg diff --git a/client/src/static/icons/regular/map-marker-exclamation.svg b/src/static/icons/regular/map-marker-exclamation.svg similarity index 100% rename from client/src/static/icons/regular/map-marker-exclamation.svg rename to src/static/icons/regular/map-marker-exclamation.svg diff --git a/client/src/static/icons/regular/map-marker-minus.svg b/src/static/icons/regular/map-marker-minus.svg similarity index 100% rename from client/src/static/icons/regular/map-marker-minus.svg rename to src/static/icons/regular/map-marker-minus.svg diff --git a/client/src/static/icons/regular/map-marker-plus.svg b/src/static/icons/regular/map-marker-plus.svg similarity index 100% rename from client/src/static/icons/regular/map-marker-plus.svg rename to src/static/icons/regular/map-marker-plus.svg diff --git a/client/src/static/icons/regular/map-marker-question.svg b/src/static/icons/regular/map-marker-question.svg similarity index 100% rename from client/src/static/icons/regular/map-marker-question.svg rename to src/static/icons/regular/map-marker-question.svg diff --git a/client/src/static/icons/regular/map-marker-slash.svg b/src/static/icons/regular/map-marker-slash.svg similarity index 100% rename from client/src/static/icons/regular/map-marker-slash.svg rename to src/static/icons/regular/map-marker-slash.svg diff --git a/client/src/static/icons/regular/map-marker-smile.svg b/src/static/icons/regular/map-marker-smile.svg similarity index 100% rename from client/src/static/icons/regular/map-marker-smile.svg rename to src/static/icons/regular/map-marker-smile.svg diff --git a/client/src/static/icons/regular/map-marker-times.svg b/src/static/icons/regular/map-marker-times.svg similarity index 100% rename from client/src/static/icons/regular/map-marker-times.svg rename to src/static/icons/regular/map-marker-times.svg diff --git a/client/src/static/icons/regular/map-marker.svg b/src/static/icons/regular/map-marker.svg similarity index 100% rename from client/src/static/icons/regular/map-marker.svg rename to src/static/icons/regular/map-marker.svg diff --git a/client/src/static/icons/regular/map-pin.svg b/src/static/icons/regular/map-pin.svg similarity index 100% rename from client/src/static/icons/regular/map-pin.svg rename to src/static/icons/regular/map-pin.svg diff --git a/client/src/static/icons/regular/map-signs.svg b/src/static/icons/regular/map-signs.svg similarity index 100% rename from client/src/static/icons/regular/map-signs.svg rename to src/static/icons/regular/map-signs.svg diff --git a/client/src/static/icons/regular/map.svg b/src/static/icons/regular/map.svg similarity index 100% rename from client/src/static/icons/regular/map.svg rename to src/static/icons/regular/map.svg diff --git a/client/src/static/icons/regular/marker.svg b/src/static/icons/regular/marker.svg similarity index 100% rename from client/src/static/icons/regular/marker.svg rename to src/static/icons/regular/marker.svg diff --git a/client/src/static/icons/regular/mars-double.svg b/src/static/icons/regular/mars-double.svg similarity index 100% rename from client/src/static/icons/regular/mars-double.svg rename to src/static/icons/regular/mars-double.svg diff --git a/client/src/static/icons/regular/mars-stroke-h.svg b/src/static/icons/regular/mars-stroke-h.svg similarity index 100% rename from client/src/static/icons/regular/mars-stroke-h.svg rename to src/static/icons/regular/mars-stroke-h.svg diff --git a/client/src/static/icons/regular/mars-stroke-v.svg b/src/static/icons/regular/mars-stroke-v.svg similarity index 100% rename from client/src/static/icons/regular/mars-stroke-v.svg rename to src/static/icons/regular/mars-stroke-v.svg diff --git a/client/src/static/icons/regular/mars-stroke.svg b/src/static/icons/regular/mars-stroke.svg similarity index 100% rename from client/src/static/icons/regular/mars-stroke.svg rename to src/static/icons/regular/mars-stroke.svg diff --git a/client/src/static/icons/regular/mars.svg b/src/static/icons/regular/mars.svg similarity index 100% rename from client/src/static/icons/regular/mars.svg rename to src/static/icons/regular/mars.svg diff --git a/client/src/static/icons/regular/mask.svg b/src/static/icons/regular/mask.svg similarity index 100% rename from client/src/static/icons/regular/mask.svg rename to src/static/icons/regular/mask.svg diff --git a/client/src/static/icons/regular/meat.svg b/src/static/icons/regular/meat.svg similarity index 100% rename from client/src/static/icons/regular/meat.svg rename to src/static/icons/regular/meat.svg diff --git a/client/src/static/icons/regular/medal.svg b/src/static/icons/regular/medal.svg similarity index 100% rename from client/src/static/icons/regular/medal.svg rename to src/static/icons/regular/medal.svg diff --git a/client/src/static/icons/regular/medkit.svg b/src/static/icons/regular/medkit.svg similarity index 100% rename from client/src/static/icons/regular/medkit.svg rename to src/static/icons/regular/medkit.svg diff --git a/client/src/static/icons/regular/megaphone.svg b/src/static/icons/regular/megaphone.svg similarity index 100% rename from client/src/static/icons/regular/megaphone.svg rename to src/static/icons/regular/megaphone.svg diff --git a/client/src/static/icons/regular/meh-blank.svg b/src/static/icons/regular/meh-blank.svg similarity index 100% rename from client/src/static/icons/regular/meh-blank.svg rename to src/static/icons/regular/meh-blank.svg diff --git a/client/src/static/icons/regular/meh-rolling-eyes.svg b/src/static/icons/regular/meh-rolling-eyes.svg similarity index 100% rename from client/src/static/icons/regular/meh-rolling-eyes.svg rename to src/static/icons/regular/meh-rolling-eyes.svg diff --git a/client/src/static/icons/regular/meh.svg b/src/static/icons/regular/meh.svg similarity index 100% rename from client/src/static/icons/regular/meh.svg rename to src/static/icons/regular/meh.svg diff --git a/client/src/static/icons/regular/memory.svg b/src/static/icons/regular/memory.svg similarity index 100% rename from client/src/static/icons/regular/memory.svg rename to src/static/icons/regular/memory.svg diff --git a/client/src/static/icons/regular/menorah.svg b/src/static/icons/regular/menorah.svg similarity index 100% rename from client/src/static/icons/regular/menorah.svg rename to src/static/icons/regular/menorah.svg diff --git a/client/src/static/icons/regular/mercury.svg b/src/static/icons/regular/mercury.svg similarity index 100% rename from client/src/static/icons/regular/mercury.svg rename to src/static/icons/regular/mercury.svg diff --git a/client/src/static/icons/regular/meteor.svg b/src/static/icons/regular/meteor.svg similarity index 100% rename from client/src/static/icons/regular/meteor.svg rename to src/static/icons/regular/meteor.svg diff --git a/client/src/static/icons/regular/microchip.svg b/src/static/icons/regular/microchip.svg similarity index 100% rename from client/src/static/icons/regular/microchip.svg rename to src/static/icons/regular/microchip.svg diff --git a/client/src/static/icons/regular/microphone-alt-slash.svg b/src/static/icons/regular/microphone-alt-slash.svg similarity index 100% rename from client/src/static/icons/regular/microphone-alt-slash.svg rename to src/static/icons/regular/microphone-alt-slash.svg diff --git a/client/src/static/icons/regular/microphone-alt.svg b/src/static/icons/regular/microphone-alt.svg similarity index 100% rename from client/src/static/icons/regular/microphone-alt.svg rename to src/static/icons/regular/microphone-alt.svg diff --git a/client/src/static/icons/regular/microphone-slash.svg b/src/static/icons/regular/microphone-slash.svg similarity index 100% rename from client/src/static/icons/regular/microphone-slash.svg rename to src/static/icons/regular/microphone-slash.svg diff --git a/client/src/static/icons/regular/microphone-stand.svg b/src/static/icons/regular/microphone-stand.svg similarity index 100% rename from client/src/static/icons/regular/microphone-stand.svg rename to src/static/icons/regular/microphone-stand.svg diff --git a/client/src/static/icons/regular/microphone.svg b/src/static/icons/regular/microphone.svg similarity index 100% rename from client/src/static/icons/regular/microphone.svg rename to src/static/icons/regular/microphone.svg diff --git a/client/src/static/icons/regular/microscope.svg b/src/static/icons/regular/microscope.svg similarity index 100% rename from client/src/static/icons/regular/microscope.svg rename to src/static/icons/regular/microscope.svg diff --git a/client/src/static/icons/regular/microwave.svg b/src/static/icons/regular/microwave.svg similarity index 100% rename from client/src/static/icons/regular/microwave.svg rename to src/static/icons/regular/microwave.svg diff --git a/client/src/static/icons/regular/mind-share.svg b/src/static/icons/regular/mind-share.svg similarity index 100% rename from client/src/static/icons/regular/mind-share.svg rename to src/static/icons/regular/mind-share.svg diff --git a/client/src/static/icons/regular/minus-circle.svg b/src/static/icons/regular/minus-circle.svg similarity index 100% rename from client/src/static/icons/regular/minus-circle.svg rename to src/static/icons/regular/minus-circle.svg diff --git a/client/src/static/icons/regular/minus-hexagon.svg b/src/static/icons/regular/minus-hexagon.svg similarity index 100% rename from client/src/static/icons/regular/minus-hexagon.svg rename to src/static/icons/regular/minus-hexagon.svg diff --git a/client/src/static/icons/regular/minus-octagon.svg b/src/static/icons/regular/minus-octagon.svg similarity index 100% rename from client/src/static/icons/regular/minus-octagon.svg rename to src/static/icons/regular/minus-octagon.svg diff --git a/client/src/static/icons/regular/minus-square.svg b/src/static/icons/regular/minus-square.svg similarity index 100% rename from client/src/static/icons/regular/minus-square.svg rename to src/static/icons/regular/minus-square.svg diff --git a/client/src/static/icons/regular/minus.svg b/src/static/icons/regular/minus.svg similarity index 100% rename from client/src/static/icons/regular/minus.svg rename to src/static/icons/regular/minus.svg diff --git a/client/src/static/icons/regular/mistletoe.svg b/src/static/icons/regular/mistletoe.svg similarity index 100% rename from client/src/static/icons/regular/mistletoe.svg rename to src/static/icons/regular/mistletoe.svg diff --git a/client/src/static/icons/regular/mitten.svg b/src/static/icons/regular/mitten.svg similarity index 100% rename from client/src/static/icons/regular/mitten.svg rename to src/static/icons/regular/mitten.svg diff --git a/client/src/static/icons/regular/mobile-alt.svg b/src/static/icons/regular/mobile-alt.svg similarity index 100% rename from client/src/static/icons/regular/mobile-alt.svg rename to src/static/icons/regular/mobile-alt.svg diff --git a/client/src/static/icons/regular/mobile-android-alt.svg b/src/static/icons/regular/mobile-android-alt.svg similarity index 100% rename from client/src/static/icons/regular/mobile-android-alt.svg rename to src/static/icons/regular/mobile-android-alt.svg diff --git a/client/src/static/icons/regular/mobile-android.svg b/src/static/icons/regular/mobile-android.svg similarity index 100% rename from client/src/static/icons/regular/mobile-android.svg rename to src/static/icons/regular/mobile-android.svg diff --git a/client/src/static/icons/regular/mobile.svg b/src/static/icons/regular/mobile.svg similarity index 100% rename from client/src/static/icons/regular/mobile.svg rename to src/static/icons/regular/mobile.svg diff --git a/client/src/static/icons/regular/money-bill-alt.svg b/src/static/icons/regular/money-bill-alt.svg similarity index 100% rename from client/src/static/icons/regular/money-bill-alt.svg rename to src/static/icons/regular/money-bill-alt.svg diff --git a/client/src/static/icons/regular/money-bill-wave-alt.svg b/src/static/icons/regular/money-bill-wave-alt.svg similarity index 100% rename from client/src/static/icons/regular/money-bill-wave-alt.svg rename to src/static/icons/regular/money-bill-wave-alt.svg diff --git a/client/src/static/icons/regular/money-bill-wave.svg b/src/static/icons/regular/money-bill-wave.svg similarity index 100% rename from client/src/static/icons/regular/money-bill-wave.svg rename to src/static/icons/regular/money-bill-wave.svg diff --git a/client/src/static/icons/regular/money-bill.svg b/src/static/icons/regular/money-bill.svg similarity index 100% rename from client/src/static/icons/regular/money-bill.svg rename to src/static/icons/regular/money-bill.svg diff --git a/client/src/static/icons/regular/money-check-alt.svg b/src/static/icons/regular/money-check-alt.svg similarity index 100% rename from client/src/static/icons/regular/money-check-alt.svg rename to src/static/icons/regular/money-check-alt.svg diff --git a/client/src/static/icons/regular/money-check-edit-alt.svg b/src/static/icons/regular/money-check-edit-alt.svg similarity index 100% rename from client/src/static/icons/regular/money-check-edit-alt.svg rename to src/static/icons/regular/money-check-edit-alt.svg diff --git a/client/src/static/icons/regular/money-check-edit.svg b/src/static/icons/regular/money-check-edit.svg similarity index 100% rename from client/src/static/icons/regular/money-check-edit.svg rename to src/static/icons/regular/money-check-edit.svg diff --git a/client/src/static/icons/regular/money-check.svg b/src/static/icons/regular/money-check.svg similarity index 100% rename from client/src/static/icons/regular/money-check.svg rename to src/static/icons/regular/money-check.svg diff --git a/client/src/static/icons/regular/monitor-heart-rate.svg b/src/static/icons/regular/monitor-heart-rate.svg similarity index 100% rename from client/src/static/icons/regular/monitor-heart-rate.svg rename to src/static/icons/regular/monitor-heart-rate.svg diff --git a/client/src/static/icons/regular/monkey.svg b/src/static/icons/regular/monkey.svg similarity index 100% rename from client/src/static/icons/regular/monkey.svg rename to src/static/icons/regular/monkey.svg diff --git a/client/src/static/icons/regular/monument.svg b/src/static/icons/regular/monument.svg similarity index 100% rename from client/src/static/icons/regular/monument.svg rename to src/static/icons/regular/monument.svg diff --git a/client/src/static/icons/regular/moon-cloud.svg b/src/static/icons/regular/moon-cloud.svg similarity index 100% rename from client/src/static/icons/regular/moon-cloud.svg rename to src/static/icons/regular/moon-cloud.svg diff --git a/client/src/static/icons/regular/moon-stars.svg b/src/static/icons/regular/moon-stars.svg similarity index 100% rename from client/src/static/icons/regular/moon-stars.svg rename to src/static/icons/regular/moon-stars.svg diff --git a/client/src/static/icons/regular/moon.svg b/src/static/icons/regular/moon.svg similarity index 100% rename from client/src/static/icons/regular/moon.svg rename to src/static/icons/regular/moon.svg diff --git a/client/src/static/icons/regular/mortar-pestle.svg b/src/static/icons/regular/mortar-pestle.svg similarity index 100% rename from client/src/static/icons/regular/mortar-pestle.svg rename to src/static/icons/regular/mortar-pestle.svg diff --git a/client/src/static/icons/regular/mosque.svg b/src/static/icons/regular/mosque.svg similarity index 100% rename from client/src/static/icons/regular/mosque.svg rename to src/static/icons/regular/mosque.svg diff --git a/client/src/static/icons/regular/motorcycle.svg b/src/static/icons/regular/motorcycle.svg similarity index 100% rename from client/src/static/icons/regular/motorcycle.svg rename to src/static/icons/regular/motorcycle.svg diff --git a/client/src/static/icons/regular/mountain.svg b/src/static/icons/regular/mountain.svg similarity index 100% rename from client/src/static/icons/regular/mountain.svg rename to src/static/icons/regular/mountain.svg diff --git a/client/src/static/icons/regular/mountains.svg b/src/static/icons/regular/mountains.svg similarity index 100% rename from client/src/static/icons/regular/mountains.svg rename to src/static/icons/regular/mountains.svg diff --git a/client/src/static/icons/regular/mouse-alt.svg b/src/static/icons/regular/mouse-alt.svg similarity index 100% rename from client/src/static/icons/regular/mouse-alt.svg rename to src/static/icons/regular/mouse-alt.svg diff --git a/client/src/static/icons/regular/mouse-pointer.svg b/src/static/icons/regular/mouse-pointer.svg similarity index 100% rename from client/src/static/icons/regular/mouse-pointer.svg rename to src/static/icons/regular/mouse-pointer.svg diff --git a/client/src/static/icons/regular/mouse.svg b/src/static/icons/regular/mouse.svg similarity index 100% rename from client/src/static/icons/regular/mouse.svg rename to src/static/icons/regular/mouse.svg diff --git a/client/src/static/icons/regular/mp3-player.svg b/src/static/icons/regular/mp3-player.svg similarity index 100% rename from client/src/static/icons/regular/mp3-player.svg rename to src/static/icons/regular/mp3-player.svg diff --git a/client/src/static/icons/regular/mug-hot.svg b/src/static/icons/regular/mug-hot.svg similarity index 100% rename from client/src/static/icons/regular/mug-hot.svg rename to src/static/icons/regular/mug-hot.svg diff --git a/client/src/static/icons/regular/mug-marshmallows.svg b/src/static/icons/regular/mug-marshmallows.svg similarity index 100% rename from client/src/static/icons/regular/mug-marshmallows.svg rename to src/static/icons/regular/mug-marshmallows.svg diff --git a/client/src/static/icons/regular/mug-tea.svg b/src/static/icons/regular/mug-tea.svg similarity index 100% rename from client/src/static/icons/regular/mug-tea.svg rename to src/static/icons/regular/mug-tea.svg diff --git a/client/src/static/icons/regular/mug.svg b/src/static/icons/regular/mug.svg similarity index 100% rename from client/src/static/icons/regular/mug.svg rename to src/static/icons/regular/mug.svg diff --git a/client/src/static/icons/regular/music-alt-slash.svg b/src/static/icons/regular/music-alt-slash.svg similarity index 100% rename from client/src/static/icons/regular/music-alt-slash.svg rename to src/static/icons/regular/music-alt-slash.svg diff --git a/client/src/static/icons/regular/music-alt.svg b/src/static/icons/regular/music-alt.svg similarity index 100% rename from client/src/static/icons/regular/music-alt.svg rename to src/static/icons/regular/music-alt.svg diff --git a/client/src/static/icons/regular/music-slash.svg b/src/static/icons/regular/music-slash.svg similarity index 100% rename from client/src/static/icons/regular/music-slash.svg rename to src/static/icons/regular/music-slash.svg diff --git a/client/src/static/icons/regular/music.svg b/src/static/icons/regular/music.svg similarity index 100% rename from client/src/static/icons/regular/music.svg rename to src/static/icons/regular/music.svg diff --git a/client/src/static/icons/regular/narwhal.svg b/src/static/icons/regular/narwhal.svg similarity index 100% rename from client/src/static/icons/regular/narwhal.svg rename to src/static/icons/regular/narwhal.svg diff --git a/client/src/static/icons/regular/network-wired.svg b/src/static/icons/regular/network-wired.svg similarity index 100% rename from client/src/static/icons/regular/network-wired.svg rename to src/static/icons/regular/network-wired.svg diff --git a/client/src/static/icons/regular/neuter.svg b/src/static/icons/regular/neuter.svg similarity index 100% rename from client/src/static/icons/regular/neuter.svg rename to src/static/icons/regular/neuter.svg diff --git a/client/src/static/icons/regular/newspaper.svg b/src/static/icons/regular/newspaper.svg similarity index 100% rename from client/src/static/icons/regular/newspaper.svg rename to src/static/icons/regular/newspaper.svg diff --git a/client/src/static/icons/regular/not-equal.svg b/src/static/icons/regular/not-equal.svg similarity index 100% rename from client/src/static/icons/regular/not-equal.svg rename to src/static/icons/regular/not-equal.svg diff --git a/client/src/static/icons/regular/notes-medical.svg b/src/static/icons/regular/notes-medical.svg similarity index 100% rename from client/src/static/icons/regular/notes-medical.svg rename to src/static/icons/regular/notes-medical.svg diff --git a/client/src/static/icons/regular/object-group.svg b/src/static/icons/regular/object-group.svg similarity index 100% rename from client/src/static/icons/regular/object-group.svg rename to src/static/icons/regular/object-group.svg diff --git a/client/src/static/icons/regular/object-ungroup.svg b/src/static/icons/regular/object-ungroup.svg similarity index 100% rename from client/src/static/icons/regular/object-ungroup.svg rename to src/static/icons/regular/object-ungroup.svg diff --git a/client/src/static/icons/regular/octagon.svg b/src/static/icons/regular/octagon.svg similarity index 100% rename from client/src/static/icons/regular/octagon.svg rename to src/static/icons/regular/octagon.svg diff --git a/client/src/static/icons/regular/oil-can.svg b/src/static/icons/regular/oil-can.svg similarity index 100% rename from client/src/static/icons/regular/oil-can.svg rename to src/static/icons/regular/oil-can.svg diff --git a/client/src/static/icons/regular/oil-temp.svg b/src/static/icons/regular/oil-temp.svg similarity index 100% rename from client/src/static/icons/regular/oil-temp.svg rename to src/static/icons/regular/oil-temp.svg diff --git a/client/src/static/icons/regular/om.svg b/src/static/icons/regular/om.svg similarity index 100% rename from client/src/static/icons/regular/om.svg rename to src/static/icons/regular/om.svg diff --git a/client/src/static/icons/regular/omega.svg b/src/static/icons/regular/omega.svg similarity index 100% rename from client/src/static/icons/regular/omega.svg rename to src/static/icons/regular/omega.svg diff --git a/client/src/static/icons/regular/ornament.svg b/src/static/icons/regular/ornament.svg similarity index 100% rename from client/src/static/icons/regular/ornament.svg rename to src/static/icons/regular/ornament.svg diff --git a/client/src/static/icons/regular/otter.svg b/src/static/icons/regular/otter.svg similarity index 100% rename from client/src/static/icons/regular/otter.svg rename to src/static/icons/regular/otter.svg diff --git a/client/src/static/icons/regular/outdent.svg b/src/static/icons/regular/outdent.svg similarity index 100% rename from client/src/static/icons/regular/outdent.svg rename to src/static/icons/regular/outdent.svg diff --git a/client/src/static/icons/regular/outlet.svg b/src/static/icons/regular/outlet.svg similarity index 100% rename from client/src/static/icons/regular/outlet.svg rename to src/static/icons/regular/outlet.svg diff --git a/client/src/static/icons/regular/oven.svg b/src/static/icons/regular/oven.svg similarity index 100% rename from client/src/static/icons/regular/oven.svg rename to src/static/icons/regular/oven.svg diff --git a/client/src/static/icons/regular/overline.svg b/src/static/icons/regular/overline.svg similarity index 100% rename from client/src/static/icons/regular/overline.svg rename to src/static/icons/regular/overline.svg diff --git a/client/src/static/icons/regular/page-break.svg b/src/static/icons/regular/page-break.svg similarity index 100% rename from client/src/static/icons/regular/page-break.svg rename to src/static/icons/regular/page-break.svg diff --git a/client/src/static/icons/regular/pager.svg b/src/static/icons/regular/pager.svg similarity index 100% rename from client/src/static/icons/regular/pager.svg rename to src/static/icons/regular/pager.svg diff --git a/client/src/static/icons/regular/paint-brush-alt.svg b/src/static/icons/regular/paint-brush-alt.svg similarity index 100% rename from client/src/static/icons/regular/paint-brush-alt.svg rename to src/static/icons/regular/paint-brush-alt.svg diff --git a/client/src/static/icons/regular/paint-brush.svg b/src/static/icons/regular/paint-brush.svg similarity index 100% rename from client/src/static/icons/regular/paint-brush.svg rename to src/static/icons/regular/paint-brush.svg diff --git a/client/src/static/icons/regular/paint-roller.svg b/src/static/icons/regular/paint-roller.svg similarity index 100% rename from client/src/static/icons/regular/paint-roller.svg rename to src/static/icons/regular/paint-roller.svg diff --git a/client/src/static/icons/regular/palette.svg b/src/static/icons/regular/palette.svg similarity index 100% rename from client/src/static/icons/regular/palette.svg rename to src/static/icons/regular/palette.svg diff --git a/client/src/static/icons/regular/pallet-alt.svg b/src/static/icons/regular/pallet-alt.svg similarity index 100% rename from client/src/static/icons/regular/pallet-alt.svg rename to src/static/icons/regular/pallet-alt.svg diff --git a/client/src/static/icons/regular/pallet.svg b/src/static/icons/regular/pallet.svg similarity index 100% rename from client/src/static/icons/regular/pallet.svg rename to src/static/icons/regular/pallet.svg diff --git a/client/src/static/icons/regular/paper-plane.svg b/src/static/icons/regular/paper-plane.svg similarity index 100% rename from client/src/static/icons/regular/paper-plane.svg rename to src/static/icons/regular/paper-plane.svg diff --git a/client/src/static/icons/regular/paperclip.svg b/src/static/icons/regular/paperclip.svg similarity index 100% rename from client/src/static/icons/regular/paperclip.svg rename to src/static/icons/regular/paperclip.svg diff --git a/client/src/static/icons/regular/parachute-box.svg b/src/static/icons/regular/parachute-box.svg similarity index 100% rename from client/src/static/icons/regular/parachute-box.svg rename to src/static/icons/regular/parachute-box.svg diff --git a/client/src/static/icons/regular/paragraph-rtl.svg b/src/static/icons/regular/paragraph-rtl.svg similarity index 100% rename from client/src/static/icons/regular/paragraph-rtl.svg rename to src/static/icons/regular/paragraph-rtl.svg diff --git a/client/src/static/icons/regular/paragraph.svg b/src/static/icons/regular/paragraph.svg similarity index 100% rename from client/src/static/icons/regular/paragraph.svg rename to src/static/icons/regular/paragraph.svg diff --git a/client/src/static/icons/regular/parking-circle-slash.svg b/src/static/icons/regular/parking-circle-slash.svg similarity index 100% rename from client/src/static/icons/regular/parking-circle-slash.svg rename to src/static/icons/regular/parking-circle-slash.svg diff --git a/client/src/static/icons/regular/parking-circle.svg b/src/static/icons/regular/parking-circle.svg similarity index 100% rename from client/src/static/icons/regular/parking-circle.svg rename to src/static/icons/regular/parking-circle.svg diff --git a/client/src/static/icons/regular/parking-slash.svg b/src/static/icons/regular/parking-slash.svg similarity index 100% rename from client/src/static/icons/regular/parking-slash.svg rename to src/static/icons/regular/parking-slash.svg diff --git a/client/src/static/icons/regular/parking.svg b/src/static/icons/regular/parking.svg similarity index 100% rename from client/src/static/icons/regular/parking.svg rename to src/static/icons/regular/parking.svg diff --git a/client/src/static/icons/regular/passport.svg b/src/static/icons/regular/passport.svg similarity index 100% rename from client/src/static/icons/regular/passport.svg rename to src/static/icons/regular/passport.svg diff --git a/client/src/static/icons/regular/pastafarianism.svg b/src/static/icons/regular/pastafarianism.svg similarity index 100% rename from client/src/static/icons/regular/pastafarianism.svg rename to src/static/icons/regular/pastafarianism.svg diff --git a/client/src/static/icons/regular/paste.svg b/src/static/icons/regular/paste.svg similarity index 100% rename from client/src/static/icons/regular/paste.svg rename to src/static/icons/regular/paste.svg diff --git a/client/src/static/icons/regular/pause-circle.svg b/src/static/icons/regular/pause-circle.svg similarity index 100% rename from client/src/static/icons/regular/pause-circle.svg rename to src/static/icons/regular/pause-circle.svg diff --git a/client/src/static/icons/regular/pause.svg b/src/static/icons/regular/pause.svg similarity index 100% rename from client/src/static/icons/regular/pause.svg rename to src/static/icons/regular/pause.svg diff --git a/client/src/static/icons/regular/paw-alt.svg b/src/static/icons/regular/paw-alt.svg similarity index 100% rename from client/src/static/icons/regular/paw-alt.svg rename to src/static/icons/regular/paw-alt.svg diff --git a/client/src/static/icons/regular/paw-claws.svg b/src/static/icons/regular/paw-claws.svg similarity index 100% rename from client/src/static/icons/regular/paw-claws.svg rename to src/static/icons/regular/paw-claws.svg diff --git a/client/src/static/icons/regular/paw.svg b/src/static/icons/regular/paw.svg similarity index 100% rename from client/src/static/icons/regular/paw.svg rename to src/static/icons/regular/paw.svg diff --git a/client/src/static/icons/regular/peace.svg b/src/static/icons/regular/peace.svg similarity index 100% rename from client/src/static/icons/regular/peace.svg rename to src/static/icons/regular/peace.svg diff --git a/client/src/static/icons/regular/pegasus.svg b/src/static/icons/regular/pegasus.svg similarity index 100% rename from client/src/static/icons/regular/pegasus.svg rename to src/static/icons/regular/pegasus.svg diff --git a/client/src/static/icons/regular/pen-alt.svg b/src/static/icons/regular/pen-alt.svg similarity index 100% rename from client/src/static/icons/regular/pen-alt.svg rename to src/static/icons/regular/pen-alt.svg diff --git a/client/src/static/icons/regular/pen-fancy.svg b/src/static/icons/regular/pen-fancy.svg similarity index 100% rename from client/src/static/icons/regular/pen-fancy.svg rename to src/static/icons/regular/pen-fancy.svg diff --git a/client/src/static/icons/regular/pen-nib.svg b/src/static/icons/regular/pen-nib.svg similarity index 100% rename from client/src/static/icons/regular/pen-nib.svg rename to src/static/icons/regular/pen-nib.svg diff --git a/client/src/static/icons/regular/pen-square.svg b/src/static/icons/regular/pen-square.svg similarity index 100% rename from client/src/static/icons/regular/pen-square.svg rename to src/static/icons/regular/pen-square.svg diff --git a/client/src/static/icons/regular/pen.svg b/src/static/icons/regular/pen.svg similarity index 100% rename from client/src/static/icons/regular/pen.svg rename to src/static/icons/regular/pen.svg diff --git a/client/src/static/icons/regular/pencil-alt.svg b/src/static/icons/regular/pencil-alt.svg similarity index 100% rename from client/src/static/icons/regular/pencil-alt.svg rename to src/static/icons/regular/pencil-alt.svg diff --git a/client/src/static/icons/regular/pencil-paintbrush.svg b/src/static/icons/regular/pencil-paintbrush.svg similarity index 100% rename from client/src/static/icons/regular/pencil-paintbrush.svg rename to src/static/icons/regular/pencil-paintbrush.svg diff --git a/client/src/static/icons/regular/pencil-ruler.svg b/src/static/icons/regular/pencil-ruler.svg similarity index 100% rename from client/src/static/icons/regular/pencil-ruler.svg rename to src/static/icons/regular/pencil-ruler.svg diff --git a/client/src/static/icons/regular/pencil.svg b/src/static/icons/regular/pencil.svg similarity index 100% rename from client/src/static/icons/regular/pencil.svg rename to src/static/icons/regular/pencil.svg diff --git a/client/src/static/icons/regular/pennant.svg b/src/static/icons/regular/pennant.svg similarity index 100% rename from client/src/static/icons/regular/pennant.svg rename to src/static/icons/regular/pennant.svg diff --git a/client/src/static/icons/regular/people-carry.svg b/src/static/icons/regular/people-carry.svg similarity index 100% rename from client/src/static/icons/regular/people-carry.svg rename to src/static/icons/regular/people-carry.svg diff --git a/client/src/static/icons/regular/pepper-hot.svg b/src/static/icons/regular/pepper-hot.svg similarity index 100% rename from client/src/static/icons/regular/pepper-hot.svg rename to src/static/icons/regular/pepper-hot.svg diff --git a/client/src/static/icons/regular/percent.svg b/src/static/icons/regular/percent.svg similarity index 100% rename from client/src/static/icons/regular/percent.svg rename to src/static/icons/regular/percent.svg diff --git a/client/src/static/icons/regular/percentage.svg b/src/static/icons/regular/percentage.svg similarity index 100% rename from client/src/static/icons/regular/percentage.svg rename to src/static/icons/regular/percentage.svg diff --git a/client/src/static/icons/regular/person-booth.svg b/src/static/icons/regular/person-booth.svg similarity index 100% rename from client/src/static/icons/regular/person-booth.svg rename to src/static/icons/regular/person-booth.svg diff --git a/client/src/static/icons/regular/person-carry.svg b/src/static/icons/regular/person-carry.svg similarity index 100% rename from client/src/static/icons/regular/person-carry.svg rename to src/static/icons/regular/person-carry.svg diff --git a/client/src/static/icons/regular/person-dolly-empty.svg b/src/static/icons/regular/person-dolly-empty.svg similarity index 100% rename from client/src/static/icons/regular/person-dolly-empty.svg rename to src/static/icons/regular/person-dolly-empty.svg diff --git a/client/src/static/icons/regular/person-dolly.svg b/src/static/icons/regular/person-dolly.svg similarity index 100% rename from client/src/static/icons/regular/person-dolly.svg rename to src/static/icons/regular/person-dolly.svg diff --git a/client/src/static/icons/regular/person-sign.svg b/src/static/icons/regular/person-sign.svg similarity index 100% rename from client/src/static/icons/regular/person-sign.svg rename to src/static/icons/regular/person-sign.svg diff --git a/client/src/static/icons/regular/phone-alt.svg b/src/static/icons/regular/phone-alt.svg similarity index 100% rename from client/src/static/icons/regular/phone-alt.svg rename to src/static/icons/regular/phone-alt.svg diff --git a/client/src/static/icons/regular/phone-laptop.svg b/src/static/icons/regular/phone-laptop.svg similarity index 100% rename from client/src/static/icons/regular/phone-laptop.svg rename to src/static/icons/regular/phone-laptop.svg diff --git a/client/src/static/icons/regular/phone-office.svg b/src/static/icons/regular/phone-office.svg similarity index 100% rename from client/src/static/icons/regular/phone-office.svg rename to src/static/icons/regular/phone-office.svg diff --git a/client/src/static/icons/regular/phone-plus.svg b/src/static/icons/regular/phone-plus.svg similarity index 100% rename from client/src/static/icons/regular/phone-plus.svg rename to src/static/icons/regular/phone-plus.svg diff --git a/client/src/static/icons/regular/phone-rotary.svg b/src/static/icons/regular/phone-rotary.svg similarity index 100% rename from client/src/static/icons/regular/phone-rotary.svg rename to src/static/icons/regular/phone-rotary.svg diff --git a/client/src/static/icons/regular/phone-slash.svg b/src/static/icons/regular/phone-slash.svg similarity index 100% rename from client/src/static/icons/regular/phone-slash.svg rename to src/static/icons/regular/phone-slash.svg diff --git a/client/src/static/icons/regular/phone-square-alt.svg b/src/static/icons/regular/phone-square-alt.svg similarity index 100% rename from client/src/static/icons/regular/phone-square-alt.svg rename to src/static/icons/regular/phone-square-alt.svg diff --git a/client/src/static/icons/regular/phone-square.svg b/src/static/icons/regular/phone-square.svg similarity index 100% rename from client/src/static/icons/regular/phone-square.svg rename to src/static/icons/regular/phone-square.svg diff --git a/client/src/static/icons/regular/phone-volume.svg b/src/static/icons/regular/phone-volume.svg similarity index 100% rename from client/src/static/icons/regular/phone-volume.svg rename to src/static/icons/regular/phone-volume.svg diff --git a/client/src/static/icons/regular/phone.svg b/src/static/icons/regular/phone.svg similarity index 100% rename from client/src/static/icons/regular/phone.svg rename to src/static/icons/regular/phone.svg diff --git a/client/src/static/icons/regular/photo-video.svg b/src/static/icons/regular/photo-video.svg similarity index 100% rename from client/src/static/icons/regular/photo-video.svg rename to src/static/icons/regular/photo-video.svg diff --git a/client/src/static/icons/regular/pi.svg b/src/static/icons/regular/pi.svg similarity index 100% rename from client/src/static/icons/regular/pi.svg rename to src/static/icons/regular/pi.svg diff --git a/client/src/static/icons/regular/piano-keyboard.svg b/src/static/icons/regular/piano-keyboard.svg similarity index 100% rename from client/src/static/icons/regular/piano-keyboard.svg rename to src/static/icons/regular/piano-keyboard.svg diff --git a/client/src/static/icons/regular/piano.svg b/src/static/icons/regular/piano.svg similarity index 100% rename from client/src/static/icons/regular/piano.svg rename to src/static/icons/regular/piano.svg diff --git a/client/src/static/icons/regular/pie.svg b/src/static/icons/regular/pie.svg similarity index 100% rename from client/src/static/icons/regular/pie.svg rename to src/static/icons/regular/pie.svg diff --git a/client/src/static/icons/regular/pig.svg b/src/static/icons/regular/pig.svg similarity index 100% rename from client/src/static/icons/regular/pig.svg rename to src/static/icons/regular/pig.svg diff --git a/client/src/static/icons/regular/piggy-bank.svg b/src/static/icons/regular/piggy-bank.svg similarity index 100% rename from client/src/static/icons/regular/piggy-bank.svg rename to src/static/icons/regular/piggy-bank.svg diff --git a/client/src/static/icons/regular/pills.svg b/src/static/icons/regular/pills.svg similarity index 100% rename from client/src/static/icons/regular/pills.svg rename to src/static/icons/regular/pills.svg diff --git a/client/src/static/icons/regular/pizza-slice.svg b/src/static/icons/regular/pizza-slice.svg similarity index 100% rename from client/src/static/icons/regular/pizza-slice.svg rename to src/static/icons/regular/pizza-slice.svg diff --git a/client/src/static/icons/regular/pizza.svg b/src/static/icons/regular/pizza.svg similarity index 100% rename from client/src/static/icons/regular/pizza.svg rename to src/static/icons/regular/pizza.svg diff --git a/client/src/static/icons/regular/place-of-worship.svg b/src/static/icons/regular/place-of-worship.svg similarity index 100% rename from client/src/static/icons/regular/place-of-worship.svg rename to src/static/icons/regular/place-of-worship.svg diff --git a/client/src/static/icons/regular/plane-alt.svg b/src/static/icons/regular/plane-alt.svg similarity index 100% rename from client/src/static/icons/regular/plane-alt.svg rename to src/static/icons/regular/plane-alt.svg diff --git a/client/src/static/icons/regular/plane-arrival.svg b/src/static/icons/regular/plane-arrival.svg similarity index 100% rename from client/src/static/icons/regular/plane-arrival.svg rename to src/static/icons/regular/plane-arrival.svg diff --git a/client/src/static/icons/regular/plane-departure.svg b/src/static/icons/regular/plane-departure.svg similarity index 100% rename from client/src/static/icons/regular/plane-departure.svg rename to src/static/icons/regular/plane-departure.svg diff --git a/client/src/static/icons/regular/plane.svg b/src/static/icons/regular/plane.svg similarity index 100% rename from client/src/static/icons/regular/plane.svg rename to src/static/icons/regular/plane.svg diff --git a/client/src/static/icons/regular/planet-moon.svg b/src/static/icons/regular/planet-moon.svg similarity index 100% rename from client/src/static/icons/regular/planet-moon.svg rename to src/static/icons/regular/planet-moon.svg diff --git a/client/src/static/icons/regular/planet-ringed.svg b/src/static/icons/regular/planet-ringed.svg similarity index 100% rename from client/src/static/icons/regular/planet-ringed.svg rename to src/static/icons/regular/planet-ringed.svg diff --git a/client/src/static/icons/regular/play-circle.svg b/src/static/icons/regular/play-circle.svg similarity index 100% rename from client/src/static/icons/regular/play-circle.svg rename to src/static/icons/regular/play-circle.svg diff --git a/client/src/static/icons/regular/play.svg b/src/static/icons/regular/play.svg similarity index 100% rename from client/src/static/icons/regular/play.svg rename to src/static/icons/regular/play.svg diff --git a/client/src/static/icons/regular/plug.svg b/src/static/icons/regular/plug.svg similarity index 100% rename from client/src/static/icons/regular/plug.svg rename to src/static/icons/regular/plug.svg diff --git a/client/src/static/icons/regular/plus-circle.svg b/src/static/icons/regular/plus-circle.svg similarity index 100% rename from client/src/static/icons/regular/plus-circle.svg rename to src/static/icons/regular/plus-circle.svg diff --git a/client/src/static/icons/regular/plus-hexagon.svg b/src/static/icons/regular/plus-hexagon.svg similarity index 100% rename from client/src/static/icons/regular/plus-hexagon.svg rename to src/static/icons/regular/plus-hexagon.svg diff --git a/client/src/static/icons/regular/plus-octagon.svg b/src/static/icons/regular/plus-octagon.svg similarity index 100% rename from client/src/static/icons/regular/plus-octagon.svg rename to src/static/icons/regular/plus-octagon.svg diff --git a/client/src/static/icons/regular/plus-square.svg b/src/static/icons/regular/plus-square.svg similarity index 100% rename from client/src/static/icons/regular/plus-square.svg rename to src/static/icons/regular/plus-square.svg diff --git a/client/src/static/icons/regular/plus.svg b/src/static/icons/regular/plus.svg similarity index 100% rename from client/src/static/icons/regular/plus.svg rename to src/static/icons/regular/plus.svg diff --git a/client/src/static/icons/regular/podcast.svg b/src/static/icons/regular/podcast.svg similarity index 100% rename from client/src/static/icons/regular/podcast.svg rename to src/static/icons/regular/podcast.svg diff --git a/client/src/static/icons/regular/podium-star.svg b/src/static/icons/regular/podium-star.svg similarity index 100% rename from client/src/static/icons/regular/podium-star.svg rename to src/static/icons/regular/podium-star.svg diff --git a/client/src/static/icons/regular/podium.svg b/src/static/icons/regular/podium.svg similarity index 100% rename from client/src/static/icons/regular/podium.svg rename to src/static/icons/regular/podium.svg diff --git a/client/src/static/icons/regular/police-box.svg b/src/static/icons/regular/police-box.svg similarity index 100% rename from client/src/static/icons/regular/police-box.svg rename to src/static/icons/regular/police-box.svg diff --git a/client/src/static/icons/regular/poll-h.svg b/src/static/icons/regular/poll-h.svg similarity index 100% rename from client/src/static/icons/regular/poll-h.svg rename to src/static/icons/regular/poll-h.svg diff --git a/client/src/static/icons/regular/poll-people.svg b/src/static/icons/regular/poll-people.svg similarity index 100% rename from client/src/static/icons/regular/poll-people.svg rename to src/static/icons/regular/poll-people.svg diff --git a/client/src/static/icons/regular/poll.svg b/src/static/icons/regular/poll.svg similarity index 100% rename from client/src/static/icons/regular/poll.svg rename to src/static/icons/regular/poll.svg diff --git a/client/src/static/icons/regular/poo-storm.svg b/src/static/icons/regular/poo-storm.svg similarity index 100% rename from client/src/static/icons/regular/poo-storm.svg rename to src/static/icons/regular/poo-storm.svg diff --git a/client/src/static/icons/regular/poo.svg b/src/static/icons/regular/poo.svg similarity index 100% rename from client/src/static/icons/regular/poo.svg rename to src/static/icons/regular/poo.svg diff --git a/client/src/static/icons/regular/poop.svg b/src/static/icons/regular/poop.svg similarity index 100% rename from client/src/static/icons/regular/poop.svg rename to src/static/icons/regular/poop.svg diff --git a/client/src/static/icons/regular/popcorn.svg b/src/static/icons/regular/popcorn.svg similarity index 100% rename from client/src/static/icons/regular/popcorn.svg rename to src/static/icons/regular/popcorn.svg diff --git a/client/src/static/icons/regular/portal-enter.svg b/src/static/icons/regular/portal-enter.svg similarity index 100% rename from client/src/static/icons/regular/portal-enter.svg rename to src/static/icons/regular/portal-enter.svg diff --git a/client/src/static/icons/regular/portal-exit.svg b/src/static/icons/regular/portal-exit.svg similarity index 100% rename from client/src/static/icons/regular/portal-exit.svg rename to src/static/icons/regular/portal-exit.svg diff --git a/client/src/static/icons/regular/portrait.svg b/src/static/icons/regular/portrait.svg similarity index 100% rename from client/src/static/icons/regular/portrait.svg rename to src/static/icons/regular/portrait.svg diff --git a/client/src/static/icons/regular/pound-sign.svg b/src/static/icons/regular/pound-sign.svg similarity index 100% rename from client/src/static/icons/regular/pound-sign.svg rename to src/static/icons/regular/pound-sign.svg diff --git a/client/src/static/icons/regular/power-off.svg b/src/static/icons/regular/power-off.svg similarity index 100% rename from client/src/static/icons/regular/power-off.svg rename to src/static/icons/regular/power-off.svg diff --git a/client/src/static/icons/regular/pray.svg b/src/static/icons/regular/pray.svg similarity index 100% rename from client/src/static/icons/regular/pray.svg rename to src/static/icons/regular/pray.svg diff --git a/client/src/static/icons/regular/praying-hands.svg b/src/static/icons/regular/praying-hands.svg similarity index 100% rename from client/src/static/icons/regular/praying-hands.svg rename to src/static/icons/regular/praying-hands.svg diff --git a/client/src/static/icons/regular/prescription-bottle-alt.svg b/src/static/icons/regular/prescription-bottle-alt.svg similarity index 100% rename from client/src/static/icons/regular/prescription-bottle-alt.svg rename to src/static/icons/regular/prescription-bottle-alt.svg diff --git a/client/src/static/icons/regular/prescription-bottle.svg b/src/static/icons/regular/prescription-bottle.svg similarity index 100% rename from client/src/static/icons/regular/prescription-bottle.svg rename to src/static/icons/regular/prescription-bottle.svg diff --git a/client/src/static/icons/regular/prescription.svg b/src/static/icons/regular/prescription.svg similarity index 100% rename from client/src/static/icons/regular/prescription.svg rename to src/static/icons/regular/prescription.svg diff --git a/client/src/static/icons/regular/presentation.svg b/src/static/icons/regular/presentation.svg similarity index 100% rename from client/src/static/icons/regular/presentation.svg rename to src/static/icons/regular/presentation.svg diff --git a/client/src/static/icons/regular/print-search.svg b/src/static/icons/regular/print-search.svg similarity index 100% rename from client/src/static/icons/regular/print-search.svg rename to src/static/icons/regular/print-search.svg diff --git a/client/src/static/icons/regular/print-slash.svg b/src/static/icons/regular/print-slash.svg similarity index 100% rename from client/src/static/icons/regular/print-slash.svg rename to src/static/icons/regular/print-slash.svg diff --git a/client/src/static/icons/regular/print.svg b/src/static/icons/regular/print.svg similarity index 100% rename from client/src/static/icons/regular/print.svg rename to src/static/icons/regular/print.svg diff --git a/client/src/static/icons/regular/procedures.svg b/src/static/icons/regular/procedures.svg similarity index 100% rename from client/src/static/icons/regular/procedures.svg rename to src/static/icons/regular/procedures.svg diff --git a/client/src/static/icons/regular/project-diagram.svg b/src/static/icons/regular/project-diagram.svg similarity index 100% rename from client/src/static/icons/regular/project-diagram.svg rename to src/static/icons/regular/project-diagram.svg diff --git a/client/src/static/icons/regular/projector.svg b/src/static/icons/regular/projector.svg similarity index 100% rename from client/src/static/icons/regular/projector.svg rename to src/static/icons/regular/projector.svg diff --git a/client/src/static/icons/regular/pumpkin.svg b/src/static/icons/regular/pumpkin.svg similarity index 100% rename from client/src/static/icons/regular/pumpkin.svg rename to src/static/icons/regular/pumpkin.svg diff --git a/client/src/static/icons/regular/puzzle-piece.svg b/src/static/icons/regular/puzzle-piece.svg similarity index 100% rename from client/src/static/icons/regular/puzzle-piece.svg rename to src/static/icons/regular/puzzle-piece.svg diff --git a/client/src/static/icons/regular/qrcode.svg b/src/static/icons/regular/qrcode.svg similarity index 100% rename from client/src/static/icons/regular/qrcode.svg rename to src/static/icons/regular/qrcode.svg diff --git a/client/src/static/icons/regular/question-circle.svg b/src/static/icons/regular/question-circle.svg similarity index 100% rename from client/src/static/icons/regular/question-circle.svg rename to src/static/icons/regular/question-circle.svg diff --git a/client/src/static/icons/regular/question-square.svg b/src/static/icons/regular/question-square.svg similarity index 100% rename from client/src/static/icons/regular/question-square.svg rename to src/static/icons/regular/question-square.svg diff --git a/client/src/static/icons/regular/question.svg b/src/static/icons/regular/question.svg similarity index 100% rename from client/src/static/icons/regular/question.svg rename to src/static/icons/regular/question.svg diff --git a/client/src/static/icons/regular/quidditch.svg b/src/static/icons/regular/quidditch.svg similarity index 100% rename from client/src/static/icons/regular/quidditch.svg rename to src/static/icons/regular/quidditch.svg diff --git a/client/src/static/icons/regular/quote-left.svg b/src/static/icons/regular/quote-left.svg similarity index 100% rename from client/src/static/icons/regular/quote-left.svg rename to src/static/icons/regular/quote-left.svg diff --git a/client/src/static/icons/regular/quote-right.svg b/src/static/icons/regular/quote-right.svg similarity index 100% rename from client/src/static/icons/regular/quote-right.svg rename to src/static/icons/regular/quote-right.svg diff --git a/client/src/static/icons/regular/quran.svg b/src/static/icons/regular/quran.svg similarity index 100% rename from client/src/static/icons/regular/quran.svg rename to src/static/icons/regular/quran.svg diff --git a/client/src/static/icons/regular/rabbit-fast.svg b/src/static/icons/regular/rabbit-fast.svg similarity index 100% rename from client/src/static/icons/regular/rabbit-fast.svg rename to src/static/icons/regular/rabbit-fast.svg diff --git a/client/src/static/icons/regular/rabbit.svg b/src/static/icons/regular/rabbit.svg similarity index 100% rename from client/src/static/icons/regular/rabbit.svg rename to src/static/icons/regular/rabbit.svg diff --git a/client/src/static/icons/regular/racquet.svg b/src/static/icons/regular/racquet.svg similarity index 100% rename from client/src/static/icons/regular/racquet.svg rename to src/static/icons/regular/racquet.svg diff --git a/client/src/static/icons/regular/radar.svg b/src/static/icons/regular/radar.svg similarity index 100% rename from client/src/static/icons/regular/radar.svg rename to src/static/icons/regular/radar.svg diff --git a/client/src/static/icons/regular/radiation-alt.svg b/src/static/icons/regular/radiation-alt.svg similarity index 100% rename from client/src/static/icons/regular/radiation-alt.svg rename to src/static/icons/regular/radiation-alt.svg diff --git a/client/src/static/icons/regular/radiation.svg b/src/static/icons/regular/radiation.svg similarity index 100% rename from client/src/static/icons/regular/radiation.svg rename to src/static/icons/regular/radiation.svg diff --git a/client/src/static/icons/regular/radio-alt.svg b/src/static/icons/regular/radio-alt.svg similarity index 100% rename from client/src/static/icons/regular/radio-alt.svg rename to src/static/icons/regular/radio-alt.svg diff --git a/client/src/static/icons/regular/radio.svg b/src/static/icons/regular/radio.svg similarity index 100% rename from client/src/static/icons/regular/radio.svg rename to src/static/icons/regular/radio.svg diff --git a/client/src/static/icons/regular/rainbow.svg b/src/static/icons/regular/rainbow.svg similarity index 100% rename from client/src/static/icons/regular/rainbow.svg rename to src/static/icons/regular/rainbow.svg diff --git a/client/src/static/icons/regular/raindrops.svg b/src/static/icons/regular/raindrops.svg similarity index 100% rename from client/src/static/icons/regular/raindrops.svg rename to src/static/icons/regular/raindrops.svg diff --git a/client/src/static/icons/regular/ram.svg b/src/static/icons/regular/ram.svg similarity index 100% rename from client/src/static/icons/regular/ram.svg rename to src/static/icons/regular/ram.svg diff --git a/client/src/static/icons/regular/ramp-loading.svg b/src/static/icons/regular/ramp-loading.svg similarity index 100% rename from client/src/static/icons/regular/ramp-loading.svg rename to src/static/icons/regular/ramp-loading.svg diff --git a/client/src/static/icons/regular/random.svg b/src/static/icons/regular/random.svg similarity index 100% rename from client/src/static/icons/regular/random.svg rename to src/static/icons/regular/random.svg diff --git a/client/src/static/icons/regular/raygun.svg b/src/static/icons/regular/raygun.svg similarity index 100% rename from client/src/static/icons/regular/raygun.svg rename to src/static/icons/regular/raygun.svg diff --git a/client/src/static/icons/regular/receipt.svg b/src/static/icons/regular/receipt.svg similarity index 100% rename from client/src/static/icons/regular/receipt.svg rename to src/static/icons/regular/receipt.svg diff --git a/client/src/static/icons/regular/record-vinyl.svg b/src/static/icons/regular/record-vinyl.svg similarity index 100% rename from client/src/static/icons/regular/record-vinyl.svg rename to src/static/icons/regular/record-vinyl.svg diff --git a/client/src/static/icons/regular/rectangle-landscape.svg b/src/static/icons/regular/rectangle-landscape.svg similarity index 100% rename from client/src/static/icons/regular/rectangle-landscape.svg rename to src/static/icons/regular/rectangle-landscape.svg diff --git a/client/src/static/icons/regular/rectangle-portrait.svg b/src/static/icons/regular/rectangle-portrait.svg similarity index 100% rename from client/src/static/icons/regular/rectangle-portrait.svg rename to src/static/icons/regular/rectangle-portrait.svg diff --git a/client/src/static/icons/regular/rectangle-wide.svg b/src/static/icons/regular/rectangle-wide.svg similarity index 100% rename from client/src/static/icons/regular/rectangle-wide.svg rename to src/static/icons/regular/rectangle-wide.svg diff --git a/client/src/static/icons/regular/recycle.svg b/src/static/icons/regular/recycle.svg similarity index 100% rename from client/src/static/icons/regular/recycle.svg rename to src/static/icons/regular/recycle.svg diff --git a/client/src/static/icons/regular/redo-alt.svg b/src/static/icons/regular/redo-alt.svg similarity index 100% rename from client/src/static/icons/regular/redo-alt.svg rename to src/static/icons/regular/redo-alt.svg diff --git a/client/src/static/icons/regular/redo.svg b/src/static/icons/regular/redo.svg similarity index 100% rename from client/src/static/icons/regular/redo.svg rename to src/static/icons/regular/redo.svg diff --git a/client/src/static/icons/regular/refrigerator.svg b/src/static/icons/regular/refrigerator.svg similarity index 100% rename from client/src/static/icons/regular/refrigerator.svg rename to src/static/icons/regular/refrigerator.svg diff --git a/client/src/static/icons/regular/registered.svg b/src/static/icons/regular/registered.svg similarity index 100% rename from client/src/static/icons/regular/registered.svg rename to src/static/icons/regular/registered.svg diff --git a/client/src/static/icons/regular/remove-format.svg b/src/static/icons/regular/remove-format.svg similarity index 100% rename from client/src/static/icons/regular/remove-format.svg rename to src/static/icons/regular/remove-format.svg diff --git a/client/src/static/icons/regular/repeat-1-alt.svg b/src/static/icons/regular/repeat-1-alt.svg similarity index 100% rename from client/src/static/icons/regular/repeat-1-alt.svg rename to src/static/icons/regular/repeat-1-alt.svg diff --git a/client/src/static/icons/regular/repeat-1.svg b/src/static/icons/regular/repeat-1.svg similarity index 100% rename from client/src/static/icons/regular/repeat-1.svg rename to src/static/icons/regular/repeat-1.svg diff --git a/client/src/static/icons/regular/repeat-alt.svg b/src/static/icons/regular/repeat-alt.svg similarity index 100% rename from client/src/static/icons/regular/repeat-alt.svg rename to src/static/icons/regular/repeat-alt.svg diff --git a/client/src/static/icons/regular/repeat.svg b/src/static/icons/regular/repeat.svg similarity index 100% rename from client/src/static/icons/regular/repeat.svg rename to src/static/icons/regular/repeat.svg diff --git a/client/src/static/icons/regular/reply-all.svg b/src/static/icons/regular/reply-all.svg similarity index 100% rename from client/src/static/icons/regular/reply-all.svg rename to src/static/icons/regular/reply-all.svg diff --git a/client/src/static/icons/regular/reply.svg b/src/static/icons/regular/reply.svg similarity index 100% rename from client/src/static/icons/regular/reply.svg rename to src/static/icons/regular/reply.svg diff --git a/client/src/static/icons/regular/republican.svg b/src/static/icons/regular/republican.svg similarity index 100% rename from client/src/static/icons/regular/republican.svg rename to src/static/icons/regular/republican.svg diff --git a/client/src/static/icons/regular/restroom.svg b/src/static/icons/regular/restroom.svg similarity index 100% rename from client/src/static/icons/regular/restroom.svg rename to src/static/icons/regular/restroom.svg diff --git a/client/src/static/icons/regular/retweet-alt.svg b/src/static/icons/regular/retweet-alt.svg similarity index 100% rename from client/src/static/icons/regular/retweet-alt.svg rename to src/static/icons/regular/retweet-alt.svg diff --git a/client/src/static/icons/regular/retweet.svg b/src/static/icons/regular/retweet.svg similarity index 100% rename from client/src/static/icons/regular/retweet.svg rename to src/static/icons/regular/retweet.svg diff --git a/client/src/static/icons/regular/ribbon.svg b/src/static/icons/regular/ribbon.svg similarity index 100% rename from client/src/static/icons/regular/ribbon.svg rename to src/static/icons/regular/ribbon.svg diff --git a/client/src/static/icons/regular/ring.svg b/src/static/icons/regular/ring.svg similarity index 100% rename from client/src/static/icons/regular/ring.svg rename to src/static/icons/regular/ring.svg diff --git a/client/src/static/icons/regular/rings-wedding.svg b/src/static/icons/regular/rings-wedding.svg similarity index 100% rename from client/src/static/icons/regular/rings-wedding.svg rename to src/static/icons/regular/rings-wedding.svg diff --git a/client/src/static/icons/regular/road.svg b/src/static/icons/regular/road.svg similarity index 100% rename from client/src/static/icons/regular/road.svg rename to src/static/icons/regular/road.svg diff --git a/client/src/static/icons/regular/robot.svg b/src/static/icons/regular/robot.svg similarity index 100% rename from client/src/static/icons/regular/robot.svg rename to src/static/icons/regular/robot.svg diff --git a/client/src/static/icons/regular/rocket-launch.svg b/src/static/icons/regular/rocket-launch.svg similarity index 100% rename from client/src/static/icons/regular/rocket-launch.svg rename to src/static/icons/regular/rocket-launch.svg diff --git a/client/src/static/icons/regular/rocket.svg b/src/static/icons/regular/rocket.svg similarity index 100% rename from client/src/static/icons/regular/rocket.svg rename to src/static/icons/regular/rocket.svg diff --git a/client/src/static/icons/regular/route-highway.svg b/src/static/icons/regular/route-highway.svg similarity index 100% rename from client/src/static/icons/regular/route-highway.svg rename to src/static/icons/regular/route-highway.svg diff --git a/client/src/static/icons/regular/route-interstate.svg b/src/static/icons/regular/route-interstate.svg similarity index 100% rename from client/src/static/icons/regular/route-interstate.svg rename to src/static/icons/regular/route-interstate.svg diff --git a/client/src/static/icons/regular/route.svg b/src/static/icons/regular/route.svg similarity index 100% rename from client/src/static/icons/regular/route.svg rename to src/static/icons/regular/route.svg diff --git a/client/src/static/icons/regular/router.svg b/src/static/icons/regular/router.svg similarity index 100% rename from client/src/static/icons/regular/router.svg rename to src/static/icons/regular/router.svg diff --git a/client/src/static/icons/regular/rss-square.svg b/src/static/icons/regular/rss-square.svg similarity index 100% rename from client/src/static/icons/regular/rss-square.svg rename to src/static/icons/regular/rss-square.svg diff --git a/client/src/static/icons/regular/rss.svg b/src/static/icons/regular/rss.svg similarity index 100% rename from client/src/static/icons/regular/rss.svg rename to src/static/icons/regular/rss.svg diff --git a/client/src/static/icons/regular/ruble-sign.svg b/src/static/icons/regular/ruble-sign.svg similarity index 100% rename from client/src/static/icons/regular/ruble-sign.svg rename to src/static/icons/regular/ruble-sign.svg diff --git a/client/src/static/icons/regular/ruler-combined.svg b/src/static/icons/regular/ruler-combined.svg similarity index 100% rename from client/src/static/icons/regular/ruler-combined.svg rename to src/static/icons/regular/ruler-combined.svg diff --git a/client/src/static/icons/regular/ruler-horizontal.svg b/src/static/icons/regular/ruler-horizontal.svg similarity index 100% rename from client/src/static/icons/regular/ruler-horizontal.svg rename to src/static/icons/regular/ruler-horizontal.svg diff --git a/client/src/static/icons/regular/ruler-triangle.svg b/src/static/icons/regular/ruler-triangle.svg similarity index 100% rename from client/src/static/icons/regular/ruler-triangle.svg rename to src/static/icons/regular/ruler-triangle.svg diff --git a/client/src/static/icons/regular/ruler-vertical.svg b/src/static/icons/regular/ruler-vertical.svg similarity index 100% rename from client/src/static/icons/regular/ruler-vertical.svg rename to src/static/icons/regular/ruler-vertical.svg diff --git a/client/src/static/icons/regular/ruler.svg b/src/static/icons/regular/ruler.svg similarity index 100% rename from client/src/static/icons/regular/ruler.svg rename to src/static/icons/regular/ruler.svg diff --git a/client/src/static/icons/regular/running.svg b/src/static/icons/regular/running.svg similarity index 100% rename from client/src/static/icons/regular/running.svg rename to src/static/icons/regular/running.svg diff --git a/client/src/static/icons/regular/rupee-sign.svg b/src/static/icons/regular/rupee-sign.svg similarity index 100% rename from client/src/static/icons/regular/rupee-sign.svg rename to src/static/icons/regular/rupee-sign.svg diff --git a/client/src/static/icons/regular/rv.svg b/src/static/icons/regular/rv.svg similarity index 100% rename from client/src/static/icons/regular/rv.svg rename to src/static/icons/regular/rv.svg diff --git a/client/src/static/icons/regular/sack-dollar.svg b/src/static/icons/regular/sack-dollar.svg similarity index 100% rename from client/src/static/icons/regular/sack-dollar.svg rename to src/static/icons/regular/sack-dollar.svg diff --git a/client/src/static/icons/regular/sack.svg b/src/static/icons/regular/sack.svg similarity index 100% rename from client/src/static/icons/regular/sack.svg rename to src/static/icons/regular/sack.svg diff --git a/client/src/static/icons/regular/sad-cry.svg b/src/static/icons/regular/sad-cry.svg similarity index 100% rename from client/src/static/icons/regular/sad-cry.svg rename to src/static/icons/regular/sad-cry.svg diff --git a/client/src/static/icons/regular/sad-tear.svg b/src/static/icons/regular/sad-tear.svg similarity index 100% rename from client/src/static/icons/regular/sad-tear.svg rename to src/static/icons/regular/sad-tear.svg diff --git a/client/src/static/icons/regular/salad.svg b/src/static/icons/regular/salad.svg similarity index 100% rename from client/src/static/icons/regular/salad.svg rename to src/static/icons/regular/salad.svg diff --git a/client/src/static/icons/regular/sandwich.svg b/src/static/icons/regular/sandwich.svg similarity index 100% rename from client/src/static/icons/regular/sandwich.svg rename to src/static/icons/regular/sandwich.svg diff --git a/client/src/static/icons/regular/satellite-dish.svg b/src/static/icons/regular/satellite-dish.svg similarity index 100% rename from client/src/static/icons/regular/satellite-dish.svg rename to src/static/icons/regular/satellite-dish.svg diff --git a/client/src/static/icons/regular/satellite.svg b/src/static/icons/regular/satellite.svg similarity index 100% rename from client/src/static/icons/regular/satellite.svg rename to src/static/icons/regular/satellite.svg diff --git a/client/src/static/icons/regular/sausage.svg b/src/static/icons/regular/sausage.svg similarity index 100% rename from client/src/static/icons/regular/sausage.svg rename to src/static/icons/regular/sausage.svg diff --git a/client/src/static/icons/regular/save.svg b/src/static/icons/regular/save.svg similarity index 100% rename from client/src/static/icons/regular/save.svg rename to src/static/icons/regular/save.svg diff --git a/client/src/static/icons/regular/sax-hot.svg b/src/static/icons/regular/sax-hot.svg similarity index 100% rename from client/src/static/icons/regular/sax-hot.svg rename to src/static/icons/regular/sax-hot.svg diff --git a/client/src/static/icons/regular/saxophone.svg b/src/static/icons/regular/saxophone.svg similarity index 100% rename from client/src/static/icons/regular/saxophone.svg rename to src/static/icons/regular/saxophone.svg diff --git a/client/src/static/icons/regular/scalpel-path.svg b/src/static/icons/regular/scalpel-path.svg similarity index 100% rename from client/src/static/icons/regular/scalpel-path.svg rename to src/static/icons/regular/scalpel-path.svg diff --git a/client/src/static/icons/regular/scalpel.svg b/src/static/icons/regular/scalpel.svg similarity index 100% rename from client/src/static/icons/regular/scalpel.svg rename to src/static/icons/regular/scalpel.svg diff --git a/client/src/static/icons/regular/scanner-image.svg b/src/static/icons/regular/scanner-image.svg similarity index 100% rename from client/src/static/icons/regular/scanner-image.svg rename to src/static/icons/regular/scanner-image.svg diff --git a/client/src/static/icons/regular/scanner-keyboard.svg b/src/static/icons/regular/scanner-keyboard.svg similarity index 100% rename from client/src/static/icons/regular/scanner-keyboard.svg rename to src/static/icons/regular/scanner-keyboard.svg diff --git a/client/src/static/icons/regular/scanner-touchscreen.svg b/src/static/icons/regular/scanner-touchscreen.svg similarity index 100% rename from client/src/static/icons/regular/scanner-touchscreen.svg rename to src/static/icons/regular/scanner-touchscreen.svg diff --git a/client/src/static/icons/regular/scanner.svg b/src/static/icons/regular/scanner.svg similarity index 100% rename from client/src/static/icons/regular/scanner.svg rename to src/static/icons/regular/scanner.svg diff --git a/client/src/static/icons/regular/scarecrow.svg b/src/static/icons/regular/scarecrow.svg similarity index 100% rename from client/src/static/icons/regular/scarecrow.svg rename to src/static/icons/regular/scarecrow.svg diff --git a/client/src/static/icons/regular/scarf.svg b/src/static/icons/regular/scarf.svg similarity index 100% rename from client/src/static/icons/regular/scarf.svg rename to src/static/icons/regular/scarf.svg diff --git a/client/src/static/icons/regular/school.svg b/src/static/icons/regular/school.svg similarity index 100% rename from client/src/static/icons/regular/school.svg rename to src/static/icons/regular/school.svg diff --git a/client/src/static/icons/regular/screwdriver.svg b/src/static/icons/regular/screwdriver.svg similarity index 100% rename from client/src/static/icons/regular/screwdriver.svg rename to src/static/icons/regular/screwdriver.svg diff --git a/client/src/static/icons/regular/scroll-old.svg b/src/static/icons/regular/scroll-old.svg similarity index 100% rename from client/src/static/icons/regular/scroll-old.svg rename to src/static/icons/regular/scroll-old.svg diff --git a/client/src/static/icons/regular/scroll.svg b/src/static/icons/regular/scroll.svg similarity index 100% rename from client/src/static/icons/regular/scroll.svg rename to src/static/icons/regular/scroll.svg diff --git a/client/src/static/icons/regular/scrubber.svg b/src/static/icons/regular/scrubber.svg similarity index 100% rename from client/src/static/icons/regular/scrubber.svg rename to src/static/icons/regular/scrubber.svg diff --git a/client/src/static/icons/regular/scythe.svg b/src/static/icons/regular/scythe.svg similarity index 100% rename from client/src/static/icons/regular/scythe.svg rename to src/static/icons/regular/scythe.svg diff --git a/client/src/static/icons/regular/sd-card.svg b/src/static/icons/regular/sd-card.svg similarity index 100% rename from client/src/static/icons/regular/sd-card.svg rename to src/static/icons/regular/sd-card.svg diff --git a/client/src/static/icons/regular/search-dollar.svg b/src/static/icons/regular/search-dollar.svg similarity index 100% rename from client/src/static/icons/regular/search-dollar.svg rename to src/static/icons/regular/search-dollar.svg diff --git a/client/src/static/icons/regular/search-location.svg b/src/static/icons/regular/search-location.svg similarity index 100% rename from client/src/static/icons/regular/search-location.svg rename to src/static/icons/regular/search-location.svg diff --git a/client/src/static/icons/regular/search-minus.svg b/src/static/icons/regular/search-minus.svg similarity index 100% rename from client/src/static/icons/regular/search-minus.svg rename to src/static/icons/regular/search-minus.svg diff --git a/client/src/static/icons/regular/search-plus.svg b/src/static/icons/regular/search-plus.svg similarity index 100% rename from client/src/static/icons/regular/search-plus.svg rename to src/static/icons/regular/search-plus.svg diff --git a/client/src/static/icons/regular/search.svg b/src/static/icons/regular/search.svg similarity index 100% rename from client/src/static/icons/regular/search.svg rename to src/static/icons/regular/search.svg diff --git a/client/src/static/icons/regular/seedling.svg b/src/static/icons/regular/seedling.svg similarity index 100% rename from client/src/static/icons/regular/seedling.svg rename to src/static/icons/regular/seedling.svg diff --git a/client/src/static/icons/regular/send-back.svg b/src/static/icons/regular/send-back.svg similarity index 100% rename from client/src/static/icons/regular/send-back.svg rename to src/static/icons/regular/send-back.svg diff --git a/client/src/static/icons/regular/send-backward.svg b/src/static/icons/regular/send-backward.svg similarity index 100% rename from client/src/static/icons/regular/send-backward.svg rename to src/static/icons/regular/send-backward.svg diff --git a/client/src/static/icons/regular/sensor-alert.svg b/src/static/icons/regular/sensor-alert.svg similarity index 100% rename from client/src/static/icons/regular/sensor-alert.svg rename to src/static/icons/regular/sensor-alert.svg diff --git a/client/src/static/icons/regular/sensor-fire.svg b/src/static/icons/regular/sensor-fire.svg similarity index 100% rename from client/src/static/icons/regular/sensor-fire.svg rename to src/static/icons/regular/sensor-fire.svg diff --git a/client/src/static/icons/regular/sensor-on.svg b/src/static/icons/regular/sensor-on.svg similarity index 100% rename from client/src/static/icons/regular/sensor-on.svg rename to src/static/icons/regular/sensor-on.svg diff --git a/client/src/static/icons/regular/sensor-smoke.svg b/src/static/icons/regular/sensor-smoke.svg similarity index 100% rename from client/src/static/icons/regular/sensor-smoke.svg rename to src/static/icons/regular/sensor-smoke.svg diff --git a/client/src/static/icons/regular/sensor.svg b/src/static/icons/regular/sensor.svg similarity index 100% rename from client/src/static/icons/regular/sensor.svg rename to src/static/icons/regular/sensor.svg diff --git a/client/src/static/icons/regular/server.svg b/src/static/icons/regular/server.svg similarity index 100% rename from client/src/static/icons/regular/server.svg rename to src/static/icons/regular/server.svg diff --git a/client/src/static/icons/regular/shapes.svg b/src/static/icons/regular/shapes.svg similarity index 100% rename from client/src/static/icons/regular/shapes.svg rename to src/static/icons/regular/shapes.svg diff --git a/client/src/static/icons/regular/share-all.svg b/src/static/icons/regular/share-all.svg similarity index 100% rename from client/src/static/icons/regular/share-all.svg rename to src/static/icons/regular/share-all.svg diff --git a/client/src/static/icons/regular/share-alt-square.svg b/src/static/icons/regular/share-alt-square.svg similarity index 100% rename from client/src/static/icons/regular/share-alt-square.svg rename to src/static/icons/regular/share-alt-square.svg diff --git a/client/src/static/icons/regular/share-alt.svg b/src/static/icons/regular/share-alt.svg similarity index 100% rename from client/src/static/icons/regular/share-alt.svg rename to src/static/icons/regular/share-alt.svg diff --git a/client/src/static/icons/regular/share-square.svg b/src/static/icons/regular/share-square.svg similarity index 100% rename from client/src/static/icons/regular/share-square.svg rename to src/static/icons/regular/share-square.svg diff --git a/client/src/static/icons/regular/share.svg b/src/static/icons/regular/share.svg similarity index 100% rename from client/src/static/icons/regular/share.svg rename to src/static/icons/regular/share.svg diff --git a/client/src/static/icons/regular/sheep.svg b/src/static/icons/regular/sheep.svg similarity index 100% rename from client/src/static/icons/regular/sheep.svg rename to src/static/icons/regular/sheep.svg diff --git a/client/src/static/icons/regular/shekel-sign.svg b/src/static/icons/regular/shekel-sign.svg similarity index 100% rename from client/src/static/icons/regular/shekel-sign.svg rename to src/static/icons/regular/shekel-sign.svg diff --git a/client/src/static/icons/regular/shield-alt.svg b/src/static/icons/regular/shield-alt.svg similarity index 100% rename from client/src/static/icons/regular/shield-alt.svg rename to src/static/icons/regular/shield-alt.svg diff --git a/client/src/static/icons/regular/shield-check.svg b/src/static/icons/regular/shield-check.svg similarity index 100% rename from client/src/static/icons/regular/shield-check.svg rename to src/static/icons/regular/shield-check.svg diff --git a/client/src/static/icons/regular/shield-cross.svg b/src/static/icons/regular/shield-cross.svg similarity index 100% rename from client/src/static/icons/regular/shield-cross.svg rename to src/static/icons/regular/shield-cross.svg diff --git a/client/src/static/icons/regular/shield.svg b/src/static/icons/regular/shield.svg similarity index 100% rename from client/src/static/icons/regular/shield.svg rename to src/static/icons/regular/shield.svg diff --git a/client/src/static/icons/regular/ship.svg b/src/static/icons/regular/ship.svg similarity index 100% rename from client/src/static/icons/regular/ship.svg rename to src/static/icons/regular/ship.svg diff --git a/client/src/static/icons/regular/shipping-fast.svg b/src/static/icons/regular/shipping-fast.svg similarity index 100% rename from client/src/static/icons/regular/shipping-fast.svg rename to src/static/icons/regular/shipping-fast.svg diff --git a/client/src/static/icons/regular/shipping-timed.svg b/src/static/icons/regular/shipping-timed.svg similarity index 100% rename from client/src/static/icons/regular/shipping-timed.svg rename to src/static/icons/regular/shipping-timed.svg diff --git a/client/src/static/icons/regular/shish-kebab.svg b/src/static/icons/regular/shish-kebab.svg similarity index 100% rename from client/src/static/icons/regular/shish-kebab.svg rename to src/static/icons/regular/shish-kebab.svg diff --git a/client/src/static/icons/regular/shoe-prints.svg b/src/static/icons/regular/shoe-prints.svg similarity index 100% rename from client/src/static/icons/regular/shoe-prints.svg rename to src/static/icons/regular/shoe-prints.svg diff --git a/client/src/static/icons/regular/shopping-bag.svg b/src/static/icons/regular/shopping-bag.svg similarity index 100% rename from client/src/static/icons/regular/shopping-bag.svg rename to src/static/icons/regular/shopping-bag.svg diff --git a/client/src/static/icons/regular/shopping-basket.svg b/src/static/icons/regular/shopping-basket.svg similarity index 100% rename from client/src/static/icons/regular/shopping-basket.svg rename to src/static/icons/regular/shopping-basket.svg diff --git a/client/src/static/icons/regular/shopping-cart.svg b/src/static/icons/regular/shopping-cart.svg similarity index 100% rename from client/src/static/icons/regular/shopping-cart.svg rename to src/static/icons/regular/shopping-cart.svg diff --git a/client/src/static/icons/regular/shovel-snow.svg b/src/static/icons/regular/shovel-snow.svg similarity index 100% rename from client/src/static/icons/regular/shovel-snow.svg rename to src/static/icons/regular/shovel-snow.svg diff --git a/client/src/static/icons/regular/shovel.svg b/src/static/icons/regular/shovel.svg similarity index 100% rename from client/src/static/icons/regular/shovel.svg rename to src/static/icons/regular/shovel.svg diff --git a/client/src/static/icons/regular/shower.svg b/src/static/icons/regular/shower.svg similarity index 100% rename from client/src/static/icons/regular/shower.svg rename to src/static/icons/regular/shower.svg diff --git a/client/src/static/icons/regular/shredder.svg b/src/static/icons/regular/shredder.svg similarity index 100% rename from client/src/static/icons/regular/shredder.svg rename to src/static/icons/regular/shredder.svg diff --git a/client/src/static/icons/regular/shuttle-van.svg b/src/static/icons/regular/shuttle-van.svg similarity index 100% rename from client/src/static/icons/regular/shuttle-van.svg rename to src/static/icons/regular/shuttle-van.svg diff --git a/client/src/static/icons/regular/shuttlecock.svg b/src/static/icons/regular/shuttlecock.svg similarity index 100% rename from client/src/static/icons/regular/shuttlecock.svg rename to src/static/icons/regular/shuttlecock.svg diff --git a/client/src/static/icons/regular/sickle.svg b/src/static/icons/regular/sickle.svg similarity index 100% rename from client/src/static/icons/regular/sickle.svg rename to src/static/icons/regular/sickle.svg diff --git a/client/src/static/icons/regular/sigma.svg b/src/static/icons/regular/sigma.svg similarity index 100% rename from client/src/static/icons/regular/sigma.svg rename to src/static/icons/regular/sigma.svg diff --git a/client/src/static/icons/regular/sign-in-alt.svg b/src/static/icons/regular/sign-in-alt.svg similarity index 100% rename from client/src/static/icons/regular/sign-in-alt.svg rename to src/static/icons/regular/sign-in-alt.svg diff --git a/client/src/static/icons/regular/sign-in.svg b/src/static/icons/regular/sign-in.svg similarity index 100% rename from client/src/static/icons/regular/sign-in.svg rename to src/static/icons/regular/sign-in.svg diff --git a/client/src/static/icons/regular/sign-language.svg b/src/static/icons/regular/sign-language.svg similarity index 100% rename from client/src/static/icons/regular/sign-language.svg rename to src/static/icons/regular/sign-language.svg diff --git a/client/src/static/icons/regular/sign-out-alt.svg b/src/static/icons/regular/sign-out-alt.svg similarity index 100% rename from client/src/static/icons/regular/sign-out-alt.svg rename to src/static/icons/regular/sign-out-alt.svg diff --git a/client/src/static/icons/regular/sign-out.svg b/src/static/icons/regular/sign-out.svg similarity index 100% rename from client/src/static/icons/regular/sign-out.svg rename to src/static/icons/regular/sign-out.svg diff --git a/client/src/static/icons/regular/sign.svg b/src/static/icons/regular/sign.svg similarity index 100% rename from client/src/static/icons/regular/sign.svg rename to src/static/icons/regular/sign.svg diff --git a/client/src/static/icons/regular/signal-1.svg b/src/static/icons/regular/signal-1.svg similarity index 100% rename from client/src/static/icons/regular/signal-1.svg rename to src/static/icons/regular/signal-1.svg diff --git a/client/src/static/icons/regular/signal-2.svg b/src/static/icons/regular/signal-2.svg similarity index 100% rename from client/src/static/icons/regular/signal-2.svg rename to src/static/icons/regular/signal-2.svg diff --git a/client/src/static/icons/regular/signal-3.svg b/src/static/icons/regular/signal-3.svg similarity index 100% rename from client/src/static/icons/regular/signal-3.svg rename to src/static/icons/regular/signal-3.svg diff --git a/client/src/static/icons/regular/signal-4.svg b/src/static/icons/regular/signal-4.svg similarity index 100% rename from client/src/static/icons/regular/signal-4.svg rename to src/static/icons/regular/signal-4.svg diff --git a/client/src/static/icons/regular/signal-alt-1.svg b/src/static/icons/regular/signal-alt-1.svg similarity index 100% rename from client/src/static/icons/regular/signal-alt-1.svg rename to src/static/icons/regular/signal-alt-1.svg diff --git a/client/src/static/icons/regular/signal-alt-2.svg b/src/static/icons/regular/signal-alt-2.svg similarity index 100% rename from client/src/static/icons/regular/signal-alt-2.svg rename to src/static/icons/regular/signal-alt-2.svg diff --git a/client/src/static/icons/regular/signal-alt-3.svg b/src/static/icons/regular/signal-alt-3.svg similarity index 100% rename from client/src/static/icons/regular/signal-alt-3.svg rename to src/static/icons/regular/signal-alt-3.svg diff --git a/client/src/static/icons/regular/signal-alt-slash.svg b/src/static/icons/regular/signal-alt-slash.svg similarity index 100% rename from client/src/static/icons/regular/signal-alt-slash.svg rename to src/static/icons/regular/signal-alt-slash.svg diff --git a/client/src/static/icons/regular/signal-alt.svg b/src/static/icons/regular/signal-alt.svg similarity index 100% rename from client/src/static/icons/regular/signal-alt.svg rename to src/static/icons/regular/signal-alt.svg diff --git a/client/src/static/icons/regular/signal-slash.svg b/src/static/icons/regular/signal-slash.svg similarity index 100% rename from client/src/static/icons/regular/signal-slash.svg rename to src/static/icons/regular/signal-slash.svg diff --git a/client/src/static/icons/regular/signal-stream.svg b/src/static/icons/regular/signal-stream.svg similarity index 100% rename from client/src/static/icons/regular/signal-stream.svg rename to src/static/icons/regular/signal-stream.svg diff --git a/client/src/static/icons/regular/signal.svg b/src/static/icons/regular/signal.svg similarity index 100% rename from client/src/static/icons/regular/signal.svg rename to src/static/icons/regular/signal.svg diff --git a/client/src/static/icons/regular/signature.svg b/src/static/icons/regular/signature.svg similarity index 100% rename from client/src/static/icons/regular/signature.svg rename to src/static/icons/regular/signature.svg diff --git a/client/src/static/icons/regular/sim-card.svg b/src/static/icons/regular/sim-card.svg similarity index 100% rename from client/src/static/icons/regular/sim-card.svg rename to src/static/icons/regular/sim-card.svg diff --git a/client/src/static/icons/regular/siren-on.svg b/src/static/icons/regular/siren-on.svg similarity index 100% rename from client/src/static/icons/regular/siren-on.svg rename to src/static/icons/regular/siren-on.svg diff --git a/client/src/static/icons/regular/siren.svg b/src/static/icons/regular/siren.svg similarity index 100% rename from client/src/static/icons/regular/siren.svg rename to src/static/icons/regular/siren.svg diff --git a/client/src/static/icons/regular/sitemap.svg b/src/static/icons/regular/sitemap.svg similarity index 100% rename from client/src/static/icons/regular/sitemap.svg rename to src/static/icons/regular/sitemap.svg diff --git a/client/src/static/icons/regular/skating.svg b/src/static/icons/regular/skating.svg similarity index 100% rename from client/src/static/icons/regular/skating.svg rename to src/static/icons/regular/skating.svg diff --git a/client/src/static/icons/regular/skeleton.svg b/src/static/icons/regular/skeleton.svg similarity index 100% rename from client/src/static/icons/regular/skeleton.svg rename to src/static/icons/regular/skeleton.svg diff --git a/client/src/static/icons/regular/ski-jump.svg b/src/static/icons/regular/ski-jump.svg similarity index 100% rename from client/src/static/icons/regular/ski-jump.svg rename to src/static/icons/regular/ski-jump.svg diff --git a/client/src/static/icons/regular/ski-lift.svg b/src/static/icons/regular/ski-lift.svg similarity index 100% rename from client/src/static/icons/regular/ski-lift.svg rename to src/static/icons/regular/ski-lift.svg diff --git a/client/src/static/icons/regular/skiing-nordic.svg b/src/static/icons/regular/skiing-nordic.svg similarity index 100% rename from client/src/static/icons/regular/skiing-nordic.svg rename to src/static/icons/regular/skiing-nordic.svg diff --git a/client/src/static/icons/regular/skiing.svg b/src/static/icons/regular/skiing.svg similarity index 100% rename from client/src/static/icons/regular/skiing.svg rename to src/static/icons/regular/skiing.svg diff --git a/client/src/static/icons/regular/skull-cow.svg b/src/static/icons/regular/skull-cow.svg similarity index 100% rename from client/src/static/icons/regular/skull-cow.svg rename to src/static/icons/regular/skull-cow.svg diff --git a/client/src/static/icons/regular/skull-crossbones.svg b/src/static/icons/regular/skull-crossbones.svg similarity index 100% rename from client/src/static/icons/regular/skull-crossbones.svg rename to src/static/icons/regular/skull-crossbones.svg diff --git a/client/src/static/icons/regular/skull.svg b/src/static/icons/regular/skull.svg similarity index 100% rename from client/src/static/icons/regular/skull.svg rename to src/static/icons/regular/skull.svg diff --git a/client/src/static/icons/regular/slash.svg b/src/static/icons/regular/slash.svg similarity index 100% rename from client/src/static/icons/regular/slash.svg rename to src/static/icons/regular/slash.svg diff --git a/client/src/static/icons/regular/sledding.svg b/src/static/icons/regular/sledding.svg similarity index 100% rename from client/src/static/icons/regular/sledding.svg rename to src/static/icons/regular/sledding.svg diff --git a/client/src/static/icons/regular/sleigh.svg b/src/static/icons/regular/sleigh.svg similarity index 100% rename from client/src/static/icons/regular/sleigh.svg rename to src/static/icons/regular/sleigh.svg diff --git a/client/src/static/icons/regular/sliders-h-square.svg b/src/static/icons/regular/sliders-h-square.svg similarity index 100% rename from client/src/static/icons/regular/sliders-h-square.svg rename to src/static/icons/regular/sliders-h-square.svg diff --git a/client/src/static/icons/regular/sliders-h.svg b/src/static/icons/regular/sliders-h.svg similarity index 100% rename from client/src/static/icons/regular/sliders-h.svg rename to src/static/icons/regular/sliders-h.svg diff --git a/client/src/static/icons/regular/sliders-v-square.svg b/src/static/icons/regular/sliders-v-square.svg similarity index 100% rename from client/src/static/icons/regular/sliders-v-square.svg rename to src/static/icons/regular/sliders-v-square.svg diff --git a/client/src/static/icons/regular/sliders-v.svg b/src/static/icons/regular/sliders-v.svg similarity index 100% rename from client/src/static/icons/regular/sliders-v.svg rename to src/static/icons/regular/sliders-v.svg diff --git a/client/src/static/icons/regular/smile-beam.svg b/src/static/icons/regular/smile-beam.svg similarity index 100% rename from client/src/static/icons/regular/smile-beam.svg rename to src/static/icons/regular/smile-beam.svg diff --git a/client/src/static/icons/regular/smile-plus.svg b/src/static/icons/regular/smile-plus.svg similarity index 100% rename from client/src/static/icons/regular/smile-plus.svg rename to src/static/icons/regular/smile-plus.svg diff --git a/client/src/static/icons/regular/smile-wink.svg b/src/static/icons/regular/smile-wink.svg similarity index 100% rename from client/src/static/icons/regular/smile-wink.svg rename to src/static/icons/regular/smile-wink.svg diff --git a/client/src/static/icons/regular/smile.svg b/src/static/icons/regular/smile.svg similarity index 100% rename from client/src/static/icons/regular/smile.svg rename to src/static/icons/regular/smile.svg diff --git a/client/src/static/icons/regular/smog.svg b/src/static/icons/regular/smog.svg similarity index 100% rename from client/src/static/icons/regular/smog.svg rename to src/static/icons/regular/smog.svg diff --git a/client/src/static/icons/regular/smoke.svg b/src/static/icons/regular/smoke.svg similarity index 100% rename from client/src/static/icons/regular/smoke.svg rename to src/static/icons/regular/smoke.svg diff --git a/client/src/static/icons/regular/smoking-ban.svg b/src/static/icons/regular/smoking-ban.svg similarity index 100% rename from client/src/static/icons/regular/smoking-ban.svg rename to src/static/icons/regular/smoking-ban.svg diff --git a/client/src/static/icons/regular/smoking.svg b/src/static/icons/regular/smoking.svg similarity index 100% rename from client/src/static/icons/regular/smoking.svg rename to src/static/icons/regular/smoking.svg diff --git a/client/src/static/icons/regular/sms.svg b/src/static/icons/regular/sms.svg similarity index 100% rename from client/src/static/icons/regular/sms.svg rename to src/static/icons/regular/sms.svg diff --git a/client/src/static/icons/regular/snake.svg b/src/static/icons/regular/snake.svg similarity index 100% rename from client/src/static/icons/regular/snake.svg rename to src/static/icons/regular/snake.svg diff --git a/client/src/static/icons/regular/snooze.svg b/src/static/icons/regular/snooze.svg similarity index 100% rename from client/src/static/icons/regular/snooze.svg rename to src/static/icons/regular/snooze.svg diff --git a/client/src/static/icons/regular/snow-blowing.svg b/src/static/icons/regular/snow-blowing.svg similarity index 100% rename from client/src/static/icons/regular/snow-blowing.svg rename to src/static/icons/regular/snow-blowing.svg diff --git a/client/src/static/icons/regular/snowboarding.svg b/src/static/icons/regular/snowboarding.svg similarity index 100% rename from client/src/static/icons/regular/snowboarding.svg rename to src/static/icons/regular/snowboarding.svg diff --git a/client/src/static/icons/regular/snowflake.svg b/src/static/icons/regular/snowflake.svg similarity index 100% rename from client/src/static/icons/regular/snowflake.svg rename to src/static/icons/regular/snowflake.svg diff --git a/client/src/static/icons/regular/snowflakes.svg b/src/static/icons/regular/snowflakes.svg similarity index 100% rename from client/src/static/icons/regular/snowflakes.svg rename to src/static/icons/regular/snowflakes.svg diff --git a/client/src/static/icons/regular/snowman.svg b/src/static/icons/regular/snowman.svg similarity index 100% rename from client/src/static/icons/regular/snowman.svg rename to src/static/icons/regular/snowman.svg diff --git a/client/src/static/icons/regular/snowmobile.svg b/src/static/icons/regular/snowmobile.svg similarity index 100% rename from client/src/static/icons/regular/snowmobile.svg rename to src/static/icons/regular/snowmobile.svg diff --git a/client/src/static/icons/regular/snowplow.svg b/src/static/icons/regular/snowplow.svg similarity index 100% rename from client/src/static/icons/regular/snowplow.svg rename to src/static/icons/regular/snowplow.svg diff --git a/client/src/static/icons/regular/socks.svg b/src/static/icons/regular/socks.svg similarity index 100% rename from client/src/static/icons/regular/socks.svg rename to src/static/icons/regular/socks.svg diff --git a/client/src/static/icons/regular/solar-panel.svg b/src/static/icons/regular/solar-panel.svg similarity index 100% rename from client/src/static/icons/regular/solar-panel.svg rename to src/static/icons/regular/solar-panel.svg diff --git a/client/src/static/icons/regular/solar-system.svg b/src/static/icons/regular/solar-system.svg similarity index 100% rename from client/src/static/icons/regular/solar-system.svg rename to src/static/icons/regular/solar-system.svg diff --git a/client/src/static/icons/regular/sort-alpha-down-alt.svg b/src/static/icons/regular/sort-alpha-down-alt.svg similarity index 100% rename from client/src/static/icons/regular/sort-alpha-down-alt.svg rename to src/static/icons/regular/sort-alpha-down-alt.svg diff --git a/client/src/static/icons/regular/sort-alpha-down.svg b/src/static/icons/regular/sort-alpha-down.svg similarity index 100% rename from client/src/static/icons/regular/sort-alpha-down.svg rename to src/static/icons/regular/sort-alpha-down.svg diff --git a/client/src/static/icons/regular/sort-alpha-up-alt.svg b/src/static/icons/regular/sort-alpha-up-alt.svg similarity index 100% rename from client/src/static/icons/regular/sort-alpha-up-alt.svg rename to src/static/icons/regular/sort-alpha-up-alt.svg diff --git a/client/src/static/icons/regular/sort-alpha-up.svg b/src/static/icons/regular/sort-alpha-up.svg similarity index 100% rename from client/src/static/icons/regular/sort-alpha-up.svg rename to src/static/icons/regular/sort-alpha-up.svg diff --git a/client/src/static/icons/regular/sort-alt.svg b/src/static/icons/regular/sort-alt.svg similarity index 100% rename from client/src/static/icons/regular/sort-alt.svg rename to src/static/icons/regular/sort-alt.svg diff --git a/client/src/static/icons/regular/sort-amount-down-alt.svg b/src/static/icons/regular/sort-amount-down-alt.svg similarity index 100% rename from client/src/static/icons/regular/sort-amount-down-alt.svg rename to src/static/icons/regular/sort-amount-down-alt.svg diff --git a/client/src/static/icons/regular/sort-amount-down.svg b/src/static/icons/regular/sort-amount-down.svg similarity index 100% rename from client/src/static/icons/regular/sort-amount-down.svg rename to src/static/icons/regular/sort-amount-down.svg diff --git a/client/src/static/icons/regular/sort-amount-up-alt.svg b/src/static/icons/regular/sort-amount-up-alt.svg similarity index 100% rename from client/src/static/icons/regular/sort-amount-up-alt.svg rename to src/static/icons/regular/sort-amount-up-alt.svg diff --git a/client/src/static/icons/regular/sort-amount-up.svg b/src/static/icons/regular/sort-amount-up.svg similarity index 100% rename from client/src/static/icons/regular/sort-amount-up.svg rename to src/static/icons/regular/sort-amount-up.svg diff --git a/client/src/static/icons/regular/sort-circle-down.svg b/src/static/icons/regular/sort-circle-down.svg similarity index 100% rename from client/src/static/icons/regular/sort-circle-down.svg rename to src/static/icons/regular/sort-circle-down.svg diff --git a/client/src/static/icons/regular/sort-circle-up.svg b/src/static/icons/regular/sort-circle-up.svg similarity index 100% rename from client/src/static/icons/regular/sort-circle-up.svg rename to src/static/icons/regular/sort-circle-up.svg diff --git a/client/src/static/icons/regular/sort-circle.svg b/src/static/icons/regular/sort-circle.svg similarity index 100% rename from client/src/static/icons/regular/sort-circle.svg rename to src/static/icons/regular/sort-circle.svg diff --git a/client/src/static/icons/regular/sort-down.svg b/src/static/icons/regular/sort-down.svg similarity index 100% rename from client/src/static/icons/regular/sort-down.svg rename to src/static/icons/regular/sort-down.svg diff --git a/client/src/static/icons/regular/sort-numeric-down-alt.svg b/src/static/icons/regular/sort-numeric-down-alt.svg similarity index 100% rename from client/src/static/icons/regular/sort-numeric-down-alt.svg rename to src/static/icons/regular/sort-numeric-down-alt.svg diff --git a/client/src/static/icons/regular/sort-numeric-down.svg b/src/static/icons/regular/sort-numeric-down.svg similarity index 100% rename from client/src/static/icons/regular/sort-numeric-down.svg rename to src/static/icons/regular/sort-numeric-down.svg diff --git a/client/src/static/icons/regular/sort-numeric-up-alt.svg b/src/static/icons/regular/sort-numeric-up-alt.svg similarity index 100% rename from client/src/static/icons/regular/sort-numeric-up-alt.svg rename to src/static/icons/regular/sort-numeric-up-alt.svg diff --git a/client/src/static/icons/regular/sort-numeric-up.svg b/src/static/icons/regular/sort-numeric-up.svg similarity index 100% rename from client/src/static/icons/regular/sort-numeric-up.svg rename to src/static/icons/regular/sort-numeric-up.svg diff --git a/client/src/static/icons/regular/sort-shapes-down-alt.svg b/src/static/icons/regular/sort-shapes-down-alt.svg similarity index 100% rename from client/src/static/icons/regular/sort-shapes-down-alt.svg rename to src/static/icons/regular/sort-shapes-down-alt.svg diff --git a/client/src/static/icons/regular/sort-shapes-down.svg b/src/static/icons/regular/sort-shapes-down.svg similarity index 100% rename from client/src/static/icons/regular/sort-shapes-down.svg rename to src/static/icons/regular/sort-shapes-down.svg diff --git a/client/src/static/icons/regular/sort-shapes-up-alt.svg b/src/static/icons/regular/sort-shapes-up-alt.svg similarity index 100% rename from client/src/static/icons/regular/sort-shapes-up-alt.svg rename to src/static/icons/regular/sort-shapes-up-alt.svg diff --git a/client/src/static/icons/regular/sort-shapes-up.svg b/src/static/icons/regular/sort-shapes-up.svg similarity index 100% rename from client/src/static/icons/regular/sort-shapes-up.svg rename to src/static/icons/regular/sort-shapes-up.svg diff --git a/client/src/static/icons/regular/sort-size-down-alt.svg b/src/static/icons/regular/sort-size-down-alt.svg similarity index 100% rename from client/src/static/icons/regular/sort-size-down-alt.svg rename to src/static/icons/regular/sort-size-down-alt.svg diff --git a/client/src/static/icons/regular/sort-size-down.svg b/src/static/icons/regular/sort-size-down.svg similarity index 100% rename from client/src/static/icons/regular/sort-size-down.svg rename to src/static/icons/regular/sort-size-down.svg diff --git a/client/src/static/icons/regular/sort-size-up-alt.svg b/src/static/icons/regular/sort-size-up-alt.svg similarity index 100% rename from client/src/static/icons/regular/sort-size-up-alt.svg rename to src/static/icons/regular/sort-size-up-alt.svg diff --git a/client/src/static/icons/regular/sort-size-up.svg b/src/static/icons/regular/sort-size-up.svg similarity index 100% rename from client/src/static/icons/regular/sort-size-up.svg rename to src/static/icons/regular/sort-size-up.svg diff --git a/client/src/static/icons/regular/sort-up.svg b/src/static/icons/regular/sort-up.svg similarity index 100% rename from client/src/static/icons/regular/sort-up.svg rename to src/static/icons/regular/sort-up.svg diff --git a/client/src/static/icons/regular/sort.svg b/src/static/icons/regular/sort.svg similarity index 100% rename from client/src/static/icons/regular/sort.svg rename to src/static/icons/regular/sort.svg diff --git a/client/src/static/icons/regular/soup.svg b/src/static/icons/regular/soup.svg similarity index 100% rename from client/src/static/icons/regular/soup.svg rename to src/static/icons/regular/soup.svg diff --git a/client/src/static/icons/regular/spa.svg b/src/static/icons/regular/spa.svg similarity index 100% rename from client/src/static/icons/regular/spa.svg rename to src/static/icons/regular/spa.svg diff --git a/client/src/static/icons/regular/space-shuttle.svg b/src/static/icons/regular/space-shuttle.svg similarity index 100% rename from client/src/static/icons/regular/space-shuttle.svg rename to src/static/icons/regular/space-shuttle.svg diff --git a/client/src/static/icons/regular/space-station-moon-alt.svg b/src/static/icons/regular/space-station-moon-alt.svg similarity index 100% rename from client/src/static/icons/regular/space-station-moon-alt.svg rename to src/static/icons/regular/space-station-moon-alt.svg diff --git a/client/src/static/icons/regular/space-station-moon.svg b/src/static/icons/regular/space-station-moon.svg similarity index 100% rename from client/src/static/icons/regular/space-station-moon.svg rename to src/static/icons/regular/space-station-moon.svg diff --git a/client/src/static/icons/regular/spade.svg b/src/static/icons/regular/spade.svg similarity index 100% rename from client/src/static/icons/regular/spade.svg rename to src/static/icons/regular/spade.svg diff --git a/client/src/static/icons/regular/sparkles.svg b/src/static/icons/regular/sparkles.svg similarity index 100% rename from client/src/static/icons/regular/sparkles.svg rename to src/static/icons/regular/sparkles.svg diff --git a/client/src/static/icons/regular/speaker.svg b/src/static/icons/regular/speaker.svg similarity index 100% rename from client/src/static/icons/regular/speaker.svg rename to src/static/icons/regular/speaker.svg diff --git a/client/src/static/icons/regular/speakers.svg b/src/static/icons/regular/speakers.svg similarity index 100% rename from client/src/static/icons/regular/speakers.svg rename to src/static/icons/regular/speakers.svg diff --git a/client/src/static/icons/regular/spell-check.svg b/src/static/icons/regular/spell-check.svg similarity index 100% rename from client/src/static/icons/regular/spell-check.svg rename to src/static/icons/regular/spell-check.svg diff --git a/client/src/static/icons/regular/spider-black-widow.svg b/src/static/icons/regular/spider-black-widow.svg similarity index 100% rename from client/src/static/icons/regular/spider-black-widow.svg rename to src/static/icons/regular/spider-black-widow.svg diff --git a/client/src/static/icons/regular/spider-web.svg b/src/static/icons/regular/spider-web.svg similarity index 100% rename from client/src/static/icons/regular/spider-web.svg rename to src/static/icons/regular/spider-web.svg diff --git a/client/src/static/icons/regular/spider.svg b/src/static/icons/regular/spider.svg similarity index 100% rename from client/src/static/icons/regular/spider.svg rename to src/static/icons/regular/spider.svg diff --git a/client/src/static/icons/regular/spinner-third.svg b/src/static/icons/regular/spinner-third.svg similarity index 100% rename from client/src/static/icons/regular/spinner-third.svg rename to src/static/icons/regular/spinner-third.svg diff --git a/client/src/static/icons/regular/spinner.svg b/src/static/icons/regular/spinner.svg similarity index 100% rename from client/src/static/icons/regular/spinner.svg rename to src/static/icons/regular/spinner.svg diff --git a/client/src/static/icons/regular/splotch.svg b/src/static/icons/regular/splotch.svg similarity index 100% rename from client/src/static/icons/regular/splotch.svg rename to src/static/icons/regular/splotch.svg diff --git a/client/src/static/icons/regular/spray-can.svg b/src/static/icons/regular/spray-can.svg similarity index 100% rename from client/src/static/icons/regular/spray-can.svg rename to src/static/icons/regular/spray-can.svg diff --git a/client/src/static/icons/regular/sprinkler.svg b/src/static/icons/regular/sprinkler.svg similarity index 100% rename from client/src/static/icons/regular/sprinkler.svg rename to src/static/icons/regular/sprinkler.svg diff --git a/client/src/static/icons/regular/square-full.svg b/src/static/icons/regular/square-full.svg similarity index 100% rename from client/src/static/icons/regular/square-full.svg rename to src/static/icons/regular/square-full.svg diff --git a/client/src/static/icons/regular/square-root-alt.svg b/src/static/icons/regular/square-root-alt.svg similarity index 100% rename from client/src/static/icons/regular/square-root-alt.svg rename to src/static/icons/regular/square-root-alt.svg diff --git a/client/src/static/icons/regular/square-root.svg b/src/static/icons/regular/square-root.svg similarity index 100% rename from client/src/static/icons/regular/square-root.svg rename to src/static/icons/regular/square-root.svg diff --git a/client/src/static/icons/regular/square.svg b/src/static/icons/regular/square.svg similarity index 100% rename from client/src/static/icons/regular/square.svg rename to src/static/icons/regular/square.svg diff --git a/client/src/static/icons/regular/squirrel.svg b/src/static/icons/regular/squirrel.svg similarity index 100% rename from client/src/static/icons/regular/squirrel.svg rename to src/static/icons/regular/squirrel.svg diff --git a/client/src/static/icons/regular/staff.svg b/src/static/icons/regular/staff.svg similarity index 100% rename from client/src/static/icons/regular/staff.svg rename to src/static/icons/regular/staff.svg diff --git a/client/src/static/icons/regular/stamp.svg b/src/static/icons/regular/stamp.svg similarity index 100% rename from client/src/static/icons/regular/stamp.svg rename to src/static/icons/regular/stamp.svg diff --git a/client/src/static/icons/regular/star-and-crescent.svg b/src/static/icons/regular/star-and-crescent.svg similarity index 100% rename from client/src/static/icons/regular/star-and-crescent.svg rename to src/static/icons/regular/star-and-crescent.svg diff --git a/client/src/static/icons/regular/star-christmas.svg b/src/static/icons/regular/star-christmas.svg similarity index 100% rename from client/src/static/icons/regular/star-christmas.svg rename to src/static/icons/regular/star-christmas.svg diff --git a/client/src/static/icons/regular/star-exclamation.svg b/src/static/icons/regular/star-exclamation.svg similarity index 100% rename from client/src/static/icons/regular/star-exclamation.svg rename to src/static/icons/regular/star-exclamation.svg diff --git a/client/src/static/icons/regular/star-half-alt.svg b/src/static/icons/regular/star-half-alt.svg similarity index 100% rename from client/src/static/icons/regular/star-half-alt.svg rename to src/static/icons/regular/star-half-alt.svg diff --git a/client/src/static/icons/regular/star-half.svg b/src/static/icons/regular/star-half.svg similarity index 100% rename from client/src/static/icons/regular/star-half.svg rename to src/static/icons/regular/star-half.svg diff --git a/client/src/static/icons/regular/star-of-david.svg b/src/static/icons/regular/star-of-david.svg similarity index 100% rename from client/src/static/icons/regular/star-of-david.svg rename to src/static/icons/regular/star-of-david.svg diff --git a/client/src/static/icons/regular/star-of-life.svg b/src/static/icons/regular/star-of-life.svg similarity index 100% rename from client/src/static/icons/regular/star-of-life.svg rename to src/static/icons/regular/star-of-life.svg diff --git a/client/src/static/icons/regular/star-shooting.svg b/src/static/icons/regular/star-shooting.svg similarity index 100% rename from client/src/static/icons/regular/star-shooting.svg rename to src/static/icons/regular/star-shooting.svg diff --git a/client/src/static/icons/regular/star.svg b/src/static/icons/regular/star.svg similarity index 100% rename from client/src/static/icons/regular/star.svg rename to src/static/icons/regular/star.svg diff --git a/client/src/static/icons/regular/starfighter-alt.svg b/src/static/icons/regular/starfighter-alt.svg similarity index 100% rename from client/src/static/icons/regular/starfighter-alt.svg rename to src/static/icons/regular/starfighter-alt.svg diff --git a/client/src/static/icons/regular/starfighter.svg b/src/static/icons/regular/starfighter.svg similarity index 100% rename from client/src/static/icons/regular/starfighter.svg rename to src/static/icons/regular/starfighter.svg diff --git a/client/src/static/icons/regular/stars.svg b/src/static/icons/regular/stars.svg similarity index 100% rename from client/src/static/icons/regular/stars.svg rename to src/static/icons/regular/stars.svg diff --git a/client/src/static/icons/regular/starship-freighter.svg b/src/static/icons/regular/starship-freighter.svg similarity index 100% rename from client/src/static/icons/regular/starship-freighter.svg rename to src/static/icons/regular/starship-freighter.svg diff --git a/client/src/static/icons/regular/starship.svg b/src/static/icons/regular/starship.svg similarity index 100% rename from client/src/static/icons/regular/starship.svg rename to src/static/icons/regular/starship.svg diff --git a/client/src/static/icons/regular/steak.svg b/src/static/icons/regular/steak.svg similarity index 100% rename from client/src/static/icons/regular/steak.svg rename to src/static/icons/regular/steak.svg diff --git a/client/src/static/icons/regular/steering-wheel.svg b/src/static/icons/regular/steering-wheel.svg similarity index 100% rename from client/src/static/icons/regular/steering-wheel.svg rename to src/static/icons/regular/steering-wheel.svg diff --git a/client/src/static/icons/regular/step-backward.svg b/src/static/icons/regular/step-backward.svg similarity index 100% rename from client/src/static/icons/regular/step-backward.svg rename to src/static/icons/regular/step-backward.svg diff --git a/client/src/static/icons/regular/step-forward.svg b/src/static/icons/regular/step-forward.svg similarity index 100% rename from client/src/static/icons/regular/step-forward.svg rename to src/static/icons/regular/step-forward.svg diff --git a/client/src/static/icons/regular/stethoscope.svg b/src/static/icons/regular/stethoscope.svg similarity index 100% rename from client/src/static/icons/regular/stethoscope.svg rename to src/static/icons/regular/stethoscope.svg diff --git a/client/src/static/icons/regular/sticky-note.svg b/src/static/icons/regular/sticky-note.svg similarity index 100% rename from client/src/static/icons/regular/sticky-note.svg rename to src/static/icons/regular/sticky-note.svg diff --git a/client/src/static/icons/regular/stocking.svg b/src/static/icons/regular/stocking.svg similarity index 100% rename from client/src/static/icons/regular/stocking.svg rename to src/static/icons/regular/stocking.svg diff --git a/client/src/static/icons/regular/stomach.svg b/src/static/icons/regular/stomach.svg similarity index 100% rename from client/src/static/icons/regular/stomach.svg rename to src/static/icons/regular/stomach.svg diff --git a/client/src/static/icons/regular/stop-circle.svg b/src/static/icons/regular/stop-circle.svg similarity index 100% rename from client/src/static/icons/regular/stop-circle.svg rename to src/static/icons/regular/stop-circle.svg diff --git a/client/src/static/icons/regular/stop.svg b/src/static/icons/regular/stop.svg similarity index 100% rename from client/src/static/icons/regular/stop.svg rename to src/static/icons/regular/stop.svg diff --git a/client/src/static/icons/regular/stopwatch.svg b/src/static/icons/regular/stopwatch.svg similarity index 100% rename from client/src/static/icons/regular/stopwatch.svg rename to src/static/icons/regular/stopwatch.svg diff --git a/client/src/static/icons/regular/store-alt.svg b/src/static/icons/regular/store-alt.svg similarity index 100% rename from client/src/static/icons/regular/store-alt.svg rename to src/static/icons/regular/store-alt.svg diff --git a/client/src/static/icons/regular/store.svg b/src/static/icons/regular/store.svg similarity index 100% rename from client/src/static/icons/regular/store.svg rename to src/static/icons/regular/store.svg diff --git a/client/src/static/icons/regular/stream.svg b/src/static/icons/regular/stream.svg similarity index 100% rename from client/src/static/icons/regular/stream.svg rename to src/static/icons/regular/stream.svg diff --git a/client/src/static/icons/regular/street-view.svg b/src/static/icons/regular/street-view.svg similarity index 100% rename from client/src/static/icons/regular/street-view.svg rename to src/static/icons/regular/street-view.svg diff --git a/client/src/static/icons/regular/stretcher.svg b/src/static/icons/regular/stretcher.svg similarity index 100% rename from client/src/static/icons/regular/stretcher.svg rename to src/static/icons/regular/stretcher.svg diff --git a/client/src/static/icons/regular/strikethrough.svg b/src/static/icons/regular/strikethrough.svg similarity index 100% rename from client/src/static/icons/regular/strikethrough.svg rename to src/static/icons/regular/strikethrough.svg diff --git a/client/src/static/icons/regular/stroopwafel.svg b/src/static/icons/regular/stroopwafel.svg similarity index 100% rename from client/src/static/icons/regular/stroopwafel.svg rename to src/static/icons/regular/stroopwafel.svg diff --git a/client/src/static/icons/regular/subscript.svg b/src/static/icons/regular/subscript.svg similarity index 100% rename from client/src/static/icons/regular/subscript.svg rename to src/static/icons/regular/subscript.svg diff --git a/client/src/static/icons/regular/subway.svg b/src/static/icons/regular/subway.svg similarity index 100% rename from client/src/static/icons/regular/subway.svg rename to src/static/icons/regular/subway.svg diff --git a/client/src/static/icons/regular/suitcase-rolling.svg b/src/static/icons/regular/suitcase-rolling.svg similarity index 100% rename from client/src/static/icons/regular/suitcase-rolling.svg rename to src/static/icons/regular/suitcase-rolling.svg diff --git a/client/src/static/icons/regular/suitcase.svg b/src/static/icons/regular/suitcase.svg similarity index 100% rename from client/src/static/icons/regular/suitcase.svg rename to src/static/icons/regular/suitcase.svg diff --git a/client/src/static/icons/regular/sun-cloud.svg b/src/static/icons/regular/sun-cloud.svg similarity index 100% rename from client/src/static/icons/regular/sun-cloud.svg rename to src/static/icons/regular/sun-cloud.svg diff --git a/client/src/static/icons/regular/sun-dust.svg b/src/static/icons/regular/sun-dust.svg similarity index 100% rename from client/src/static/icons/regular/sun-dust.svg rename to src/static/icons/regular/sun-dust.svg diff --git a/client/src/static/icons/regular/sun-haze.svg b/src/static/icons/regular/sun-haze.svg similarity index 100% rename from client/src/static/icons/regular/sun-haze.svg rename to src/static/icons/regular/sun-haze.svg diff --git a/client/src/static/icons/regular/sun.svg b/src/static/icons/regular/sun.svg similarity index 100% rename from client/src/static/icons/regular/sun.svg rename to src/static/icons/regular/sun.svg diff --git a/client/src/static/icons/regular/sunglasses.svg b/src/static/icons/regular/sunglasses.svg similarity index 100% rename from client/src/static/icons/regular/sunglasses.svg rename to src/static/icons/regular/sunglasses.svg diff --git a/client/src/static/icons/regular/sunrise.svg b/src/static/icons/regular/sunrise.svg similarity index 100% rename from client/src/static/icons/regular/sunrise.svg rename to src/static/icons/regular/sunrise.svg diff --git a/client/src/static/icons/regular/sunset.svg b/src/static/icons/regular/sunset.svg similarity index 100% rename from client/src/static/icons/regular/sunset.svg rename to src/static/icons/regular/sunset.svg diff --git a/client/src/static/icons/regular/superscript.svg b/src/static/icons/regular/superscript.svg similarity index 100% rename from client/src/static/icons/regular/superscript.svg rename to src/static/icons/regular/superscript.svg diff --git a/client/src/static/icons/regular/surprise.svg b/src/static/icons/regular/surprise.svg similarity index 100% rename from client/src/static/icons/regular/surprise.svg rename to src/static/icons/regular/surprise.svg diff --git a/client/src/static/icons/regular/swatchbook.svg b/src/static/icons/regular/swatchbook.svg similarity index 100% rename from client/src/static/icons/regular/swatchbook.svg rename to src/static/icons/regular/swatchbook.svg diff --git a/client/src/static/icons/regular/swimmer.svg b/src/static/icons/regular/swimmer.svg similarity index 100% rename from client/src/static/icons/regular/swimmer.svg rename to src/static/icons/regular/swimmer.svg diff --git a/client/src/static/icons/regular/swimming-pool.svg b/src/static/icons/regular/swimming-pool.svg similarity index 100% rename from client/src/static/icons/regular/swimming-pool.svg rename to src/static/icons/regular/swimming-pool.svg diff --git a/client/src/static/icons/regular/sword-laser-alt.svg b/src/static/icons/regular/sword-laser-alt.svg similarity index 100% rename from client/src/static/icons/regular/sword-laser-alt.svg rename to src/static/icons/regular/sword-laser-alt.svg diff --git a/client/src/static/icons/regular/sword-laser.svg b/src/static/icons/regular/sword-laser.svg similarity index 100% rename from client/src/static/icons/regular/sword-laser.svg rename to src/static/icons/regular/sword-laser.svg diff --git a/client/src/static/icons/regular/sword.svg b/src/static/icons/regular/sword.svg similarity index 100% rename from client/src/static/icons/regular/sword.svg rename to src/static/icons/regular/sword.svg diff --git a/client/src/static/icons/regular/swords-laser.svg b/src/static/icons/regular/swords-laser.svg similarity index 100% rename from client/src/static/icons/regular/swords-laser.svg rename to src/static/icons/regular/swords-laser.svg diff --git a/client/src/static/icons/regular/swords.svg b/src/static/icons/regular/swords.svg similarity index 100% rename from client/src/static/icons/regular/swords.svg rename to src/static/icons/regular/swords.svg diff --git a/client/src/static/icons/regular/synagogue.svg b/src/static/icons/regular/synagogue.svg similarity index 100% rename from client/src/static/icons/regular/synagogue.svg rename to src/static/icons/regular/synagogue.svg diff --git a/client/src/static/icons/regular/sync-alt.svg b/src/static/icons/regular/sync-alt.svg similarity index 100% rename from client/src/static/icons/regular/sync-alt.svg rename to src/static/icons/regular/sync-alt.svg diff --git a/client/src/static/icons/regular/sync.svg b/src/static/icons/regular/sync.svg similarity index 100% rename from client/src/static/icons/regular/sync.svg rename to src/static/icons/regular/sync.svg diff --git a/client/src/static/icons/regular/syringe.svg b/src/static/icons/regular/syringe.svg similarity index 100% rename from client/src/static/icons/regular/syringe.svg rename to src/static/icons/regular/syringe.svg diff --git a/client/src/static/icons/regular/table-tennis.svg b/src/static/icons/regular/table-tennis.svg similarity index 100% rename from client/src/static/icons/regular/table-tennis.svg rename to src/static/icons/regular/table-tennis.svg diff --git a/client/src/static/icons/regular/table.svg b/src/static/icons/regular/table.svg similarity index 100% rename from client/src/static/icons/regular/table.svg rename to src/static/icons/regular/table.svg diff --git a/client/src/static/icons/regular/tablet-alt.svg b/src/static/icons/regular/tablet-alt.svg similarity index 100% rename from client/src/static/icons/regular/tablet-alt.svg rename to src/static/icons/regular/tablet-alt.svg diff --git a/client/src/static/icons/regular/tablet-android-alt.svg b/src/static/icons/regular/tablet-android-alt.svg similarity index 100% rename from client/src/static/icons/regular/tablet-android-alt.svg rename to src/static/icons/regular/tablet-android-alt.svg diff --git a/client/src/static/icons/regular/tablet-android.svg b/src/static/icons/regular/tablet-android.svg similarity index 100% rename from client/src/static/icons/regular/tablet-android.svg rename to src/static/icons/regular/tablet-android.svg diff --git a/client/src/static/icons/regular/tablet-rugged.svg b/src/static/icons/regular/tablet-rugged.svg similarity index 100% rename from client/src/static/icons/regular/tablet-rugged.svg rename to src/static/icons/regular/tablet-rugged.svg diff --git a/client/src/static/icons/regular/tablet.svg b/src/static/icons/regular/tablet.svg similarity index 100% rename from client/src/static/icons/regular/tablet.svg rename to src/static/icons/regular/tablet.svg diff --git a/client/src/static/icons/regular/tablets.svg b/src/static/icons/regular/tablets.svg similarity index 100% rename from client/src/static/icons/regular/tablets.svg rename to src/static/icons/regular/tablets.svg diff --git a/client/src/static/icons/regular/tachometer-alt-average.svg b/src/static/icons/regular/tachometer-alt-average.svg similarity index 100% rename from client/src/static/icons/regular/tachometer-alt-average.svg rename to src/static/icons/regular/tachometer-alt-average.svg diff --git a/client/src/static/icons/regular/tachometer-alt-fast.svg b/src/static/icons/regular/tachometer-alt-fast.svg similarity index 100% rename from client/src/static/icons/regular/tachometer-alt-fast.svg rename to src/static/icons/regular/tachometer-alt-fast.svg diff --git a/client/src/static/icons/regular/tachometer-alt-fastest.svg b/src/static/icons/regular/tachometer-alt-fastest.svg similarity index 100% rename from client/src/static/icons/regular/tachometer-alt-fastest.svg rename to src/static/icons/regular/tachometer-alt-fastest.svg diff --git a/client/src/static/icons/regular/tachometer-alt-slow.svg b/src/static/icons/regular/tachometer-alt-slow.svg similarity index 100% rename from client/src/static/icons/regular/tachometer-alt-slow.svg rename to src/static/icons/regular/tachometer-alt-slow.svg diff --git a/client/src/static/icons/regular/tachometer-alt-slowest.svg b/src/static/icons/regular/tachometer-alt-slowest.svg similarity index 100% rename from client/src/static/icons/regular/tachometer-alt-slowest.svg rename to src/static/icons/regular/tachometer-alt-slowest.svg diff --git a/client/src/static/icons/regular/tachometer-alt.svg b/src/static/icons/regular/tachometer-alt.svg similarity index 100% rename from client/src/static/icons/regular/tachometer-alt.svg rename to src/static/icons/regular/tachometer-alt.svg diff --git a/client/src/static/icons/regular/tachometer-average.svg b/src/static/icons/regular/tachometer-average.svg similarity index 100% rename from client/src/static/icons/regular/tachometer-average.svg rename to src/static/icons/regular/tachometer-average.svg diff --git a/client/src/static/icons/regular/tachometer-fast.svg b/src/static/icons/regular/tachometer-fast.svg similarity index 100% rename from client/src/static/icons/regular/tachometer-fast.svg rename to src/static/icons/regular/tachometer-fast.svg diff --git a/client/src/static/icons/regular/tachometer-fastest.svg b/src/static/icons/regular/tachometer-fastest.svg similarity index 100% rename from client/src/static/icons/regular/tachometer-fastest.svg rename to src/static/icons/regular/tachometer-fastest.svg diff --git a/client/src/static/icons/regular/tachometer-slow.svg b/src/static/icons/regular/tachometer-slow.svg similarity index 100% rename from client/src/static/icons/regular/tachometer-slow.svg rename to src/static/icons/regular/tachometer-slow.svg diff --git a/client/src/static/icons/regular/tachometer-slowest.svg b/src/static/icons/regular/tachometer-slowest.svg similarity index 100% rename from client/src/static/icons/regular/tachometer-slowest.svg rename to src/static/icons/regular/tachometer-slowest.svg diff --git a/client/src/static/icons/regular/tachometer.svg b/src/static/icons/regular/tachometer.svg similarity index 100% rename from client/src/static/icons/regular/tachometer.svg rename to src/static/icons/regular/tachometer.svg diff --git a/client/src/static/icons/regular/taco.svg b/src/static/icons/regular/taco.svg similarity index 100% rename from client/src/static/icons/regular/taco.svg rename to src/static/icons/regular/taco.svg diff --git a/client/src/static/icons/regular/tag.svg b/src/static/icons/regular/tag.svg similarity index 100% rename from client/src/static/icons/regular/tag.svg rename to src/static/icons/regular/tag.svg diff --git a/client/src/static/icons/regular/tags.svg b/src/static/icons/regular/tags.svg similarity index 100% rename from client/src/static/icons/regular/tags.svg rename to src/static/icons/regular/tags.svg diff --git a/client/src/static/icons/regular/tally.svg b/src/static/icons/regular/tally.svg similarity index 100% rename from client/src/static/icons/regular/tally.svg rename to src/static/icons/regular/tally.svg diff --git a/client/src/static/icons/regular/tanakh.svg b/src/static/icons/regular/tanakh.svg similarity index 100% rename from client/src/static/icons/regular/tanakh.svg rename to src/static/icons/regular/tanakh.svg diff --git a/client/src/static/icons/regular/tape.svg b/src/static/icons/regular/tape.svg similarity index 100% rename from client/src/static/icons/regular/tape.svg rename to src/static/icons/regular/tape.svg diff --git a/client/src/static/icons/regular/tasks-alt.svg b/src/static/icons/regular/tasks-alt.svg similarity index 100% rename from client/src/static/icons/regular/tasks-alt.svg rename to src/static/icons/regular/tasks-alt.svg diff --git a/client/src/static/icons/regular/tasks.svg b/src/static/icons/regular/tasks.svg similarity index 100% rename from client/src/static/icons/regular/tasks.svg rename to src/static/icons/regular/tasks.svg diff --git a/client/src/static/icons/regular/taxi.svg b/src/static/icons/regular/taxi.svg similarity index 100% rename from client/src/static/icons/regular/taxi.svg rename to src/static/icons/regular/taxi.svg diff --git a/client/src/static/icons/regular/teeth-open.svg b/src/static/icons/regular/teeth-open.svg similarity index 100% rename from client/src/static/icons/regular/teeth-open.svg rename to src/static/icons/regular/teeth-open.svg diff --git a/client/src/static/icons/regular/teeth.svg b/src/static/icons/regular/teeth.svg similarity index 100% rename from client/src/static/icons/regular/teeth.svg rename to src/static/icons/regular/teeth.svg diff --git a/client/src/static/icons/regular/telescope.svg b/src/static/icons/regular/telescope.svg similarity index 100% rename from client/src/static/icons/regular/telescope.svg rename to src/static/icons/regular/telescope.svg diff --git a/client/src/static/icons/regular/temperature-down.svg b/src/static/icons/regular/temperature-down.svg similarity index 100% rename from client/src/static/icons/regular/temperature-down.svg rename to src/static/icons/regular/temperature-down.svg diff --git a/client/src/static/icons/regular/temperature-frigid.svg b/src/static/icons/regular/temperature-frigid.svg similarity index 100% rename from client/src/static/icons/regular/temperature-frigid.svg rename to src/static/icons/regular/temperature-frigid.svg diff --git a/client/src/static/icons/regular/temperature-high.svg b/src/static/icons/regular/temperature-high.svg similarity index 100% rename from client/src/static/icons/regular/temperature-high.svg rename to src/static/icons/regular/temperature-high.svg diff --git a/client/src/static/icons/regular/temperature-hot.svg b/src/static/icons/regular/temperature-hot.svg similarity index 100% rename from client/src/static/icons/regular/temperature-hot.svg rename to src/static/icons/regular/temperature-hot.svg diff --git a/client/src/static/icons/regular/temperature-low.svg b/src/static/icons/regular/temperature-low.svg similarity index 100% rename from client/src/static/icons/regular/temperature-low.svg rename to src/static/icons/regular/temperature-low.svg diff --git a/client/src/static/icons/regular/temperature-up.svg b/src/static/icons/regular/temperature-up.svg similarity index 100% rename from client/src/static/icons/regular/temperature-up.svg rename to src/static/icons/regular/temperature-up.svg diff --git a/client/src/static/icons/regular/tenge.svg b/src/static/icons/regular/tenge.svg similarity index 100% rename from client/src/static/icons/regular/tenge.svg rename to src/static/icons/regular/tenge.svg diff --git a/client/src/static/icons/regular/tennis-ball.svg b/src/static/icons/regular/tennis-ball.svg similarity index 100% rename from client/src/static/icons/regular/tennis-ball.svg rename to src/static/icons/regular/tennis-ball.svg diff --git a/client/src/static/icons/regular/terminal.svg b/src/static/icons/regular/terminal.svg similarity index 100% rename from client/src/static/icons/regular/terminal.svg rename to src/static/icons/regular/terminal.svg diff --git a/client/src/static/icons/regular/text-height.svg b/src/static/icons/regular/text-height.svg similarity index 100% rename from client/src/static/icons/regular/text-height.svg rename to src/static/icons/regular/text-height.svg diff --git a/client/src/static/icons/regular/text-size.svg b/src/static/icons/regular/text-size.svg similarity index 100% rename from client/src/static/icons/regular/text-size.svg rename to src/static/icons/regular/text-size.svg diff --git a/client/src/static/icons/regular/text-width.svg b/src/static/icons/regular/text-width.svg similarity index 100% rename from client/src/static/icons/regular/text-width.svg rename to src/static/icons/regular/text-width.svg diff --git a/client/src/static/icons/regular/text.svg b/src/static/icons/regular/text.svg similarity index 100% rename from client/src/static/icons/regular/text.svg rename to src/static/icons/regular/text.svg diff --git a/client/src/static/icons/regular/th-large.svg b/src/static/icons/regular/th-large.svg similarity index 100% rename from client/src/static/icons/regular/th-large.svg rename to src/static/icons/regular/th-large.svg diff --git a/client/src/static/icons/regular/th-list.svg b/src/static/icons/regular/th-list.svg similarity index 100% rename from client/src/static/icons/regular/th-list.svg rename to src/static/icons/regular/th-list.svg diff --git a/client/src/static/icons/regular/th.svg b/src/static/icons/regular/th.svg similarity index 100% rename from client/src/static/icons/regular/th.svg rename to src/static/icons/regular/th.svg diff --git a/client/src/static/icons/regular/theater-masks.svg b/src/static/icons/regular/theater-masks.svg similarity index 100% rename from client/src/static/icons/regular/theater-masks.svg rename to src/static/icons/regular/theater-masks.svg diff --git a/client/src/static/icons/regular/thermometer-empty.svg b/src/static/icons/regular/thermometer-empty.svg similarity index 100% rename from client/src/static/icons/regular/thermometer-empty.svg rename to src/static/icons/regular/thermometer-empty.svg diff --git a/client/src/static/icons/regular/thermometer-full.svg b/src/static/icons/regular/thermometer-full.svg similarity index 100% rename from client/src/static/icons/regular/thermometer-full.svg rename to src/static/icons/regular/thermometer-full.svg diff --git a/client/src/static/icons/regular/thermometer-half.svg b/src/static/icons/regular/thermometer-half.svg similarity index 100% rename from client/src/static/icons/regular/thermometer-half.svg rename to src/static/icons/regular/thermometer-half.svg diff --git a/client/src/static/icons/regular/thermometer-quarter.svg b/src/static/icons/regular/thermometer-quarter.svg similarity index 100% rename from client/src/static/icons/regular/thermometer-quarter.svg rename to src/static/icons/regular/thermometer-quarter.svg diff --git a/client/src/static/icons/regular/thermometer-three-quarters.svg b/src/static/icons/regular/thermometer-three-quarters.svg similarity index 100% rename from client/src/static/icons/regular/thermometer-three-quarters.svg rename to src/static/icons/regular/thermometer-three-quarters.svg diff --git a/client/src/static/icons/regular/thermometer.svg b/src/static/icons/regular/thermometer.svg similarity index 100% rename from client/src/static/icons/regular/thermometer.svg rename to src/static/icons/regular/thermometer.svg diff --git a/client/src/static/icons/regular/theta.svg b/src/static/icons/regular/theta.svg similarity index 100% rename from client/src/static/icons/regular/theta.svg rename to src/static/icons/regular/theta.svg diff --git a/client/src/static/icons/regular/thumbs-down.svg b/src/static/icons/regular/thumbs-down.svg similarity index 100% rename from client/src/static/icons/regular/thumbs-down.svg rename to src/static/icons/regular/thumbs-down.svg diff --git a/client/src/static/icons/regular/thumbs-up.svg b/src/static/icons/regular/thumbs-up.svg similarity index 100% rename from client/src/static/icons/regular/thumbs-up.svg rename to src/static/icons/regular/thumbs-up.svg diff --git a/client/src/static/icons/regular/thumbtack.svg b/src/static/icons/regular/thumbtack.svg similarity index 100% rename from client/src/static/icons/regular/thumbtack.svg rename to src/static/icons/regular/thumbtack.svg diff --git a/client/src/static/icons/regular/thunderstorm-moon.svg b/src/static/icons/regular/thunderstorm-moon.svg similarity index 100% rename from client/src/static/icons/regular/thunderstorm-moon.svg rename to src/static/icons/regular/thunderstorm-moon.svg diff --git a/client/src/static/icons/regular/thunderstorm-sun.svg b/src/static/icons/regular/thunderstorm-sun.svg similarity index 100% rename from client/src/static/icons/regular/thunderstorm-sun.svg rename to src/static/icons/regular/thunderstorm-sun.svg diff --git a/client/src/static/icons/regular/thunderstorm.svg b/src/static/icons/regular/thunderstorm.svg similarity index 100% rename from client/src/static/icons/regular/thunderstorm.svg rename to src/static/icons/regular/thunderstorm.svg diff --git a/client/src/static/icons/regular/ticket-alt.svg b/src/static/icons/regular/ticket-alt.svg similarity index 100% rename from client/src/static/icons/regular/ticket-alt.svg rename to src/static/icons/regular/ticket-alt.svg diff --git a/client/src/static/icons/regular/ticket.svg b/src/static/icons/regular/ticket.svg similarity index 100% rename from client/src/static/icons/regular/ticket.svg rename to src/static/icons/regular/ticket.svg diff --git a/client/src/static/icons/regular/tilde.svg b/src/static/icons/regular/tilde.svg similarity index 100% rename from client/src/static/icons/regular/tilde.svg rename to src/static/icons/regular/tilde.svg diff --git a/client/src/static/icons/regular/times-circle.svg b/src/static/icons/regular/times-circle.svg similarity index 100% rename from client/src/static/icons/regular/times-circle.svg rename to src/static/icons/regular/times-circle.svg diff --git a/client/src/static/icons/regular/times-hexagon.svg b/src/static/icons/regular/times-hexagon.svg similarity index 100% rename from client/src/static/icons/regular/times-hexagon.svg rename to src/static/icons/regular/times-hexagon.svg diff --git a/client/src/static/icons/regular/times-octagon.svg b/src/static/icons/regular/times-octagon.svg similarity index 100% rename from client/src/static/icons/regular/times-octagon.svg rename to src/static/icons/regular/times-octagon.svg diff --git a/client/src/static/icons/regular/times-square.svg b/src/static/icons/regular/times-square.svg similarity index 100% rename from client/src/static/icons/regular/times-square.svg rename to src/static/icons/regular/times-square.svg diff --git a/client/src/static/icons/regular/times.svg b/src/static/icons/regular/times.svg similarity index 100% rename from client/src/static/icons/regular/times.svg rename to src/static/icons/regular/times.svg diff --git a/client/src/static/icons/regular/tint-slash.svg b/src/static/icons/regular/tint-slash.svg similarity index 100% rename from client/src/static/icons/regular/tint-slash.svg rename to src/static/icons/regular/tint-slash.svg diff --git a/client/src/static/icons/regular/tint.svg b/src/static/icons/regular/tint.svg similarity index 100% rename from client/src/static/icons/regular/tint.svg rename to src/static/icons/regular/tint.svg diff --git a/client/src/static/icons/regular/tire-flat.svg b/src/static/icons/regular/tire-flat.svg similarity index 100% rename from client/src/static/icons/regular/tire-flat.svg rename to src/static/icons/regular/tire-flat.svg diff --git a/client/src/static/icons/regular/tire-pressure-warning.svg b/src/static/icons/regular/tire-pressure-warning.svg similarity index 100% rename from client/src/static/icons/regular/tire-pressure-warning.svg rename to src/static/icons/regular/tire-pressure-warning.svg diff --git a/client/src/static/icons/regular/tire-rugged.svg b/src/static/icons/regular/tire-rugged.svg similarity index 100% rename from client/src/static/icons/regular/tire-rugged.svg rename to src/static/icons/regular/tire-rugged.svg diff --git a/client/src/static/icons/regular/tire.svg b/src/static/icons/regular/tire.svg similarity index 100% rename from client/src/static/icons/regular/tire.svg rename to src/static/icons/regular/tire.svg diff --git a/client/src/static/icons/regular/tired.svg b/src/static/icons/regular/tired.svg similarity index 100% rename from client/src/static/icons/regular/tired.svg rename to src/static/icons/regular/tired.svg diff --git a/client/src/static/icons/regular/toggle-off.svg b/src/static/icons/regular/toggle-off.svg similarity index 100% rename from client/src/static/icons/regular/toggle-off.svg rename to src/static/icons/regular/toggle-off.svg diff --git a/client/src/static/icons/regular/toggle-on.svg b/src/static/icons/regular/toggle-on.svg similarity index 100% rename from client/src/static/icons/regular/toggle-on.svg rename to src/static/icons/regular/toggle-on.svg diff --git a/client/src/static/icons/regular/toilet-paper-alt.svg b/src/static/icons/regular/toilet-paper-alt.svg similarity index 100% rename from client/src/static/icons/regular/toilet-paper-alt.svg rename to src/static/icons/regular/toilet-paper-alt.svg diff --git a/client/src/static/icons/regular/toilet-paper.svg b/src/static/icons/regular/toilet-paper.svg similarity index 100% rename from client/src/static/icons/regular/toilet-paper.svg rename to src/static/icons/regular/toilet-paper.svg diff --git a/client/src/static/icons/regular/toilet.svg b/src/static/icons/regular/toilet.svg similarity index 100% rename from client/src/static/icons/regular/toilet.svg rename to src/static/icons/regular/toilet.svg diff --git a/client/src/static/icons/regular/tombstone-alt.svg b/src/static/icons/regular/tombstone-alt.svg similarity index 100% rename from client/src/static/icons/regular/tombstone-alt.svg rename to src/static/icons/regular/tombstone-alt.svg diff --git a/client/src/static/icons/regular/tombstone.svg b/src/static/icons/regular/tombstone.svg similarity index 100% rename from client/src/static/icons/regular/tombstone.svg rename to src/static/icons/regular/tombstone.svg diff --git a/client/src/static/icons/regular/toolbox.svg b/src/static/icons/regular/toolbox.svg similarity index 100% rename from client/src/static/icons/regular/toolbox.svg rename to src/static/icons/regular/toolbox.svg diff --git a/client/src/static/icons/regular/tools.svg b/src/static/icons/regular/tools.svg similarity index 100% rename from client/src/static/icons/regular/tools.svg rename to src/static/icons/regular/tools.svg diff --git a/client/src/static/icons/regular/tooth.svg b/src/static/icons/regular/tooth.svg similarity index 100% rename from client/src/static/icons/regular/tooth.svg rename to src/static/icons/regular/tooth.svg diff --git a/client/src/static/icons/regular/toothbrush.svg b/src/static/icons/regular/toothbrush.svg similarity index 100% rename from client/src/static/icons/regular/toothbrush.svg rename to src/static/icons/regular/toothbrush.svg diff --git a/client/src/static/icons/regular/torah.svg b/src/static/icons/regular/torah.svg similarity index 100% rename from client/src/static/icons/regular/torah.svg rename to src/static/icons/regular/torah.svg diff --git a/client/src/static/icons/regular/torii-gate.svg b/src/static/icons/regular/torii-gate.svg similarity index 100% rename from client/src/static/icons/regular/torii-gate.svg rename to src/static/icons/regular/torii-gate.svg diff --git a/client/src/static/icons/regular/tornado.svg b/src/static/icons/regular/tornado.svg similarity index 100% rename from client/src/static/icons/regular/tornado.svg rename to src/static/icons/regular/tornado.svg diff --git a/client/src/static/icons/regular/tractor.svg b/src/static/icons/regular/tractor.svg similarity index 100% rename from client/src/static/icons/regular/tractor.svg rename to src/static/icons/regular/tractor.svg diff --git a/client/src/static/icons/regular/trademark.svg b/src/static/icons/regular/trademark.svg similarity index 100% rename from client/src/static/icons/regular/trademark.svg rename to src/static/icons/regular/trademark.svg diff --git a/client/src/static/icons/regular/traffic-cone.svg b/src/static/icons/regular/traffic-cone.svg similarity index 100% rename from client/src/static/icons/regular/traffic-cone.svg rename to src/static/icons/regular/traffic-cone.svg diff --git a/client/src/static/icons/regular/traffic-light-go.svg b/src/static/icons/regular/traffic-light-go.svg similarity index 100% rename from client/src/static/icons/regular/traffic-light-go.svg rename to src/static/icons/regular/traffic-light-go.svg diff --git a/client/src/static/icons/regular/traffic-light-slow.svg b/src/static/icons/regular/traffic-light-slow.svg similarity index 100% rename from client/src/static/icons/regular/traffic-light-slow.svg rename to src/static/icons/regular/traffic-light-slow.svg diff --git a/client/src/static/icons/regular/traffic-light-stop.svg b/src/static/icons/regular/traffic-light-stop.svg similarity index 100% rename from client/src/static/icons/regular/traffic-light-stop.svg rename to src/static/icons/regular/traffic-light-stop.svg diff --git a/client/src/static/icons/regular/traffic-light.svg b/src/static/icons/regular/traffic-light.svg similarity index 100% rename from client/src/static/icons/regular/traffic-light.svg rename to src/static/icons/regular/traffic-light.svg diff --git a/client/src/static/icons/regular/trailer.svg b/src/static/icons/regular/trailer.svg similarity index 100% rename from client/src/static/icons/regular/trailer.svg rename to src/static/icons/regular/trailer.svg diff --git a/client/src/static/icons/regular/train.svg b/src/static/icons/regular/train.svg similarity index 100% rename from client/src/static/icons/regular/train.svg rename to src/static/icons/regular/train.svg diff --git a/client/src/static/icons/regular/tram.svg b/src/static/icons/regular/tram.svg similarity index 100% rename from client/src/static/icons/regular/tram.svg rename to src/static/icons/regular/tram.svg diff --git a/client/src/static/icons/regular/transgender-alt.svg b/src/static/icons/regular/transgender-alt.svg similarity index 100% rename from client/src/static/icons/regular/transgender-alt.svg rename to src/static/icons/regular/transgender-alt.svg diff --git a/client/src/static/icons/regular/transgender.svg b/src/static/icons/regular/transgender.svg similarity index 100% rename from client/src/static/icons/regular/transgender.svg rename to src/static/icons/regular/transgender.svg diff --git a/client/src/static/icons/regular/transporter-1.svg b/src/static/icons/regular/transporter-1.svg similarity index 100% rename from client/src/static/icons/regular/transporter-1.svg rename to src/static/icons/regular/transporter-1.svg diff --git a/client/src/static/icons/regular/transporter-2.svg b/src/static/icons/regular/transporter-2.svg similarity index 100% rename from client/src/static/icons/regular/transporter-2.svg rename to src/static/icons/regular/transporter-2.svg diff --git a/client/src/static/icons/regular/transporter-3.svg b/src/static/icons/regular/transporter-3.svg similarity index 100% rename from client/src/static/icons/regular/transporter-3.svg rename to src/static/icons/regular/transporter-3.svg diff --git a/client/src/static/icons/regular/transporter-empty.svg b/src/static/icons/regular/transporter-empty.svg similarity index 100% rename from client/src/static/icons/regular/transporter-empty.svg rename to src/static/icons/regular/transporter-empty.svg diff --git a/client/src/static/icons/regular/transporter.svg b/src/static/icons/regular/transporter.svg similarity index 100% rename from client/src/static/icons/regular/transporter.svg rename to src/static/icons/regular/transporter.svg diff --git a/client/src/static/icons/regular/trash-alt.svg b/src/static/icons/regular/trash-alt.svg similarity index 100% rename from client/src/static/icons/regular/trash-alt.svg rename to src/static/icons/regular/trash-alt.svg diff --git a/client/src/static/icons/regular/trash-restore-alt.svg b/src/static/icons/regular/trash-restore-alt.svg similarity index 100% rename from client/src/static/icons/regular/trash-restore-alt.svg rename to src/static/icons/regular/trash-restore-alt.svg diff --git a/client/src/static/icons/regular/trash-restore.svg b/src/static/icons/regular/trash-restore.svg similarity index 100% rename from client/src/static/icons/regular/trash-restore.svg rename to src/static/icons/regular/trash-restore.svg diff --git a/client/src/static/icons/regular/trash-undo-alt.svg b/src/static/icons/regular/trash-undo-alt.svg similarity index 100% rename from client/src/static/icons/regular/trash-undo-alt.svg rename to src/static/icons/regular/trash-undo-alt.svg diff --git a/client/src/static/icons/regular/trash-undo.svg b/src/static/icons/regular/trash-undo.svg similarity index 100% rename from client/src/static/icons/regular/trash-undo.svg rename to src/static/icons/regular/trash-undo.svg diff --git a/client/src/static/icons/regular/trash.svg b/src/static/icons/regular/trash.svg similarity index 100% rename from client/src/static/icons/regular/trash.svg rename to src/static/icons/regular/trash.svg diff --git a/client/src/static/icons/regular/treasure-chest.svg b/src/static/icons/regular/treasure-chest.svg similarity index 100% rename from client/src/static/icons/regular/treasure-chest.svg rename to src/static/icons/regular/treasure-chest.svg diff --git a/client/src/static/icons/regular/tree-alt.svg b/src/static/icons/regular/tree-alt.svg similarity index 100% rename from client/src/static/icons/regular/tree-alt.svg rename to src/static/icons/regular/tree-alt.svg diff --git a/client/src/static/icons/regular/tree-christmas.svg b/src/static/icons/regular/tree-christmas.svg similarity index 100% rename from client/src/static/icons/regular/tree-christmas.svg rename to src/static/icons/regular/tree-christmas.svg diff --git a/client/src/static/icons/regular/tree-decorated.svg b/src/static/icons/regular/tree-decorated.svg similarity index 100% rename from client/src/static/icons/regular/tree-decorated.svg rename to src/static/icons/regular/tree-decorated.svg diff --git a/client/src/static/icons/regular/tree-large.svg b/src/static/icons/regular/tree-large.svg similarity index 100% rename from client/src/static/icons/regular/tree-large.svg rename to src/static/icons/regular/tree-large.svg diff --git a/client/src/static/icons/regular/tree-palm.svg b/src/static/icons/regular/tree-palm.svg similarity index 100% rename from client/src/static/icons/regular/tree-palm.svg rename to src/static/icons/regular/tree-palm.svg diff --git a/client/src/static/icons/regular/tree.svg b/src/static/icons/regular/tree.svg similarity index 100% rename from client/src/static/icons/regular/tree.svg rename to src/static/icons/regular/tree.svg diff --git a/client/src/static/icons/regular/trees.svg b/src/static/icons/regular/trees.svg similarity index 100% rename from client/src/static/icons/regular/trees.svg rename to src/static/icons/regular/trees.svg diff --git a/client/src/static/icons/regular/triangle-music.svg b/src/static/icons/regular/triangle-music.svg similarity index 100% rename from client/src/static/icons/regular/triangle-music.svg rename to src/static/icons/regular/triangle-music.svg diff --git a/client/src/static/icons/regular/triangle.svg b/src/static/icons/regular/triangle.svg similarity index 100% rename from client/src/static/icons/regular/triangle.svg rename to src/static/icons/regular/triangle.svg diff --git a/client/src/static/icons/regular/trophy-alt.svg b/src/static/icons/regular/trophy-alt.svg similarity index 100% rename from client/src/static/icons/regular/trophy-alt.svg rename to src/static/icons/regular/trophy-alt.svg diff --git a/client/src/static/icons/regular/trophy.svg b/src/static/icons/regular/trophy.svg similarity index 100% rename from client/src/static/icons/regular/trophy.svg rename to src/static/icons/regular/trophy.svg diff --git a/client/src/static/icons/regular/truck-container.svg b/src/static/icons/regular/truck-container.svg similarity index 100% rename from client/src/static/icons/regular/truck-container.svg rename to src/static/icons/regular/truck-container.svg diff --git a/client/src/static/icons/regular/truck-couch.svg b/src/static/icons/regular/truck-couch.svg similarity index 100% rename from client/src/static/icons/regular/truck-couch.svg rename to src/static/icons/regular/truck-couch.svg diff --git a/client/src/static/icons/regular/truck-loading.svg b/src/static/icons/regular/truck-loading.svg similarity index 100% rename from client/src/static/icons/regular/truck-loading.svg rename to src/static/icons/regular/truck-loading.svg diff --git a/client/src/static/icons/regular/truck-monster.svg b/src/static/icons/regular/truck-monster.svg similarity index 100% rename from client/src/static/icons/regular/truck-monster.svg rename to src/static/icons/regular/truck-monster.svg diff --git a/client/src/static/icons/regular/truck-moving.svg b/src/static/icons/regular/truck-moving.svg similarity index 100% rename from client/src/static/icons/regular/truck-moving.svg rename to src/static/icons/regular/truck-moving.svg diff --git a/client/src/static/icons/regular/truck-pickup.svg b/src/static/icons/regular/truck-pickup.svg similarity index 100% rename from client/src/static/icons/regular/truck-pickup.svg rename to src/static/icons/regular/truck-pickup.svg diff --git a/client/src/static/icons/regular/truck-plow.svg b/src/static/icons/regular/truck-plow.svg similarity index 100% rename from client/src/static/icons/regular/truck-plow.svg rename to src/static/icons/regular/truck-plow.svg diff --git a/client/src/static/icons/regular/truck-ramp.svg b/src/static/icons/regular/truck-ramp.svg similarity index 100% rename from client/src/static/icons/regular/truck-ramp.svg rename to src/static/icons/regular/truck-ramp.svg diff --git a/client/src/static/icons/regular/truck.svg b/src/static/icons/regular/truck.svg similarity index 100% rename from client/src/static/icons/regular/truck.svg rename to src/static/icons/regular/truck.svg diff --git a/client/src/static/icons/regular/trumpet.svg b/src/static/icons/regular/trumpet.svg similarity index 100% rename from client/src/static/icons/regular/trumpet.svg rename to src/static/icons/regular/trumpet.svg diff --git a/client/src/static/icons/regular/tshirt.svg b/src/static/icons/regular/tshirt.svg similarity index 100% rename from client/src/static/icons/regular/tshirt.svg rename to src/static/icons/regular/tshirt.svg diff --git a/client/src/static/icons/regular/tty.svg b/src/static/icons/regular/tty.svg similarity index 100% rename from client/src/static/icons/regular/tty.svg rename to src/static/icons/regular/tty.svg diff --git a/client/src/static/icons/regular/turkey.svg b/src/static/icons/regular/turkey.svg similarity index 100% rename from client/src/static/icons/regular/turkey.svg rename to src/static/icons/regular/turkey.svg diff --git a/client/src/static/icons/regular/turntable.svg b/src/static/icons/regular/turntable.svg similarity index 100% rename from client/src/static/icons/regular/turntable.svg rename to src/static/icons/regular/turntable.svg diff --git a/client/src/static/icons/regular/turtle.svg b/src/static/icons/regular/turtle.svg similarity index 100% rename from client/src/static/icons/regular/turtle.svg rename to src/static/icons/regular/turtle.svg diff --git a/client/src/static/icons/regular/tv-alt.svg b/src/static/icons/regular/tv-alt.svg similarity index 100% rename from client/src/static/icons/regular/tv-alt.svg rename to src/static/icons/regular/tv-alt.svg diff --git a/client/src/static/icons/regular/tv-music.svg b/src/static/icons/regular/tv-music.svg similarity index 100% rename from client/src/static/icons/regular/tv-music.svg rename to src/static/icons/regular/tv-music.svg diff --git a/client/src/static/icons/regular/tv-retro.svg b/src/static/icons/regular/tv-retro.svg similarity index 100% rename from client/src/static/icons/regular/tv-retro.svg rename to src/static/icons/regular/tv-retro.svg diff --git a/client/src/static/icons/regular/tv.svg b/src/static/icons/regular/tv.svg similarity index 100% rename from client/src/static/icons/regular/tv.svg rename to src/static/icons/regular/tv.svg diff --git a/client/src/static/icons/regular/typewriter.svg b/src/static/icons/regular/typewriter.svg similarity index 100% rename from client/src/static/icons/regular/typewriter.svg rename to src/static/icons/regular/typewriter.svg diff --git a/client/src/static/icons/regular/ufo-beam.svg b/src/static/icons/regular/ufo-beam.svg similarity index 100% rename from client/src/static/icons/regular/ufo-beam.svg rename to src/static/icons/regular/ufo-beam.svg diff --git a/client/src/static/icons/regular/ufo.svg b/src/static/icons/regular/ufo.svg similarity index 100% rename from client/src/static/icons/regular/ufo.svg rename to src/static/icons/regular/ufo.svg diff --git a/client/src/static/icons/regular/umbrella-beach.svg b/src/static/icons/regular/umbrella-beach.svg similarity index 100% rename from client/src/static/icons/regular/umbrella-beach.svg rename to src/static/icons/regular/umbrella-beach.svg diff --git a/client/src/static/icons/regular/umbrella.svg b/src/static/icons/regular/umbrella.svg similarity index 100% rename from client/src/static/icons/regular/umbrella.svg rename to src/static/icons/regular/umbrella.svg diff --git a/client/src/static/icons/regular/underline.svg b/src/static/icons/regular/underline.svg similarity index 100% rename from client/src/static/icons/regular/underline.svg rename to src/static/icons/regular/underline.svg diff --git a/client/src/static/icons/regular/undo-alt.svg b/src/static/icons/regular/undo-alt.svg similarity index 100% rename from client/src/static/icons/regular/undo-alt.svg rename to src/static/icons/regular/undo-alt.svg diff --git a/client/src/static/icons/regular/undo.svg b/src/static/icons/regular/undo.svg similarity index 100% rename from client/src/static/icons/regular/undo.svg rename to src/static/icons/regular/undo.svg diff --git a/client/src/static/icons/regular/unicorn.svg b/src/static/icons/regular/unicorn.svg similarity index 100% rename from client/src/static/icons/regular/unicorn.svg rename to src/static/icons/regular/unicorn.svg diff --git a/client/src/static/icons/regular/union.svg b/src/static/icons/regular/union.svg similarity index 100% rename from client/src/static/icons/regular/union.svg rename to src/static/icons/regular/union.svg diff --git a/client/src/static/icons/regular/universal-access.svg b/src/static/icons/regular/universal-access.svg similarity index 100% rename from client/src/static/icons/regular/universal-access.svg rename to src/static/icons/regular/universal-access.svg diff --git a/client/src/static/icons/regular/university.svg b/src/static/icons/regular/university.svg similarity index 100% rename from client/src/static/icons/regular/university.svg rename to src/static/icons/regular/university.svg diff --git a/client/src/static/icons/regular/unlink.svg b/src/static/icons/regular/unlink.svg similarity index 100% rename from client/src/static/icons/regular/unlink.svg rename to src/static/icons/regular/unlink.svg diff --git a/client/src/static/icons/regular/unlock-alt.svg b/src/static/icons/regular/unlock-alt.svg similarity index 100% rename from client/src/static/icons/regular/unlock-alt.svg rename to src/static/icons/regular/unlock-alt.svg diff --git a/client/src/static/icons/regular/unlock.svg b/src/static/icons/regular/unlock.svg similarity index 100% rename from client/src/static/icons/regular/unlock.svg rename to src/static/icons/regular/unlock.svg diff --git a/client/src/static/icons/regular/upload.svg b/src/static/icons/regular/upload.svg similarity index 100% rename from client/src/static/icons/regular/upload.svg rename to src/static/icons/regular/upload.svg diff --git a/client/src/static/icons/regular/usb-drive.svg b/src/static/icons/regular/usb-drive.svg similarity index 100% rename from client/src/static/icons/regular/usb-drive.svg rename to src/static/icons/regular/usb-drive.svg diff --git a/client/src/static/icons/regular/usd-circle.svg b/src/static/icons/regular/usd-circle.svg similarity index 100% rename from client/src/static/icons/regular/usd-circle.svg rename to src/static/icons/regular/usd-circle.svg diff --git a/client/src/static/icons/regular/usd-square.svg b/src/static/icons/regular/usd-square.svg similarity index 100% rename from client/src/static/icons/regular/usd-square.svg rename to src/static/icons/regular/usd-square.svg diff --git a/client/src/static/icons/regular/user-alien.svg b/src/static/icons/regular/user-alien.svg similarity index 100% rename from client/src/static/icons/regular/user-alien.svg rename to src/static/icons/regular/user-alien.svg diff --git a/client/src/static/icons/regular/user-alt-slash.svg b/src/static/icons/regular/user-alt-slash.svg similarity index 100% rename from client/src/static/icons/regular/user-alt-slash.svg rename to src/static/icons/regular/user-alt-slash.svg diff --git a/client/src/static/icons/regular/user-alt.svg b/src/static/icons/regular/user-alt.svg similarity index 100% rename from client/src/static/icons/regular/user-alt.svg rename to src/static/icons/regular/user-alt.svg diff --git a/client/src/static/icons/regular/user-astronaut.svg b/src/static/icons/regular/user-astronaut.svg similarity index 100% rename from client/src/static/icons/regular/user-astronaut.svg rename to src/static/icons/regular/user-astronaut.svg diff --git a/client/src/static/icons/regular/user-chart.svg b/src/static/icons/regular/user-chart.svg similarity index 100% rename from client/src/static/icons/regular/user-chart.svg rename to src/static/icons/regular/user-chart.svg diff --git a/client/src/static/icons/regular/user-check.svg b/src/static/icons/regular/user-check.svg similarity index 100% rename from client/src/static/icons/regular/user-check.svg rename to src/static/icons/regular/user-check.svg diff --git a/client/src/static/icons/regular/user-circle.svg b/src/static/icons/regular/user-circle.svg similarity index 100% rename from client/src/static/icons/regular/user-circle.svg rename to src/static/icons/regular/user-circle.svg diff --git a/client/src/static/icons/regular/user-clock.svg b/src/static/icons/regular/user-clock.svg similarity index 100% rename from client/src/static/icons/regular/user-clock.svg rename to src/static/icons/regular/user-clock.svg diff --git a/client/src/static/icons/regular/user-cog.svg b/src/static/icons/regular/user-cog.svg similarity index 100% rename from client/src/static/icons/regular/user-cog.svg rename to src/static/icons/regular/user-cog.svg diff --git a/client/src/static/icons/regular/user-cowboy.svg b/src/static/icons/regular/user-cowboy.svg similarity index 100% rename from client/src/static/icons/regular/user-cowboy.svg rename to src/static/icons/regular/user-cowboy.svg diff --git a/client/src/static/icons/regular/user-crown.svg b/src/static/icons/regular/user-crown.svg similarity index 100% rename from client/src/static/icons/regular/user-crown.svg rename to src/static/icons/regular/user-crown.svg diff --git a/client/src/static/icons/regular/user-edit.svg b/src/static/icons/regular/user-edit.svg similarity index 100% rename from client/src/static/icons/regular/user-edit.svg rename to src/static/icons/regular/user-edit.svg diff --git a/client/src/static/icons/regular/user-friends.svg b/src/static/icons/regular/user-friends.svg similarity index 100% rename from client/src/static/icons/regular/user-friends.svg rename to src/static/icons/regular/user-friends.svg diff --git a/client/src/static/icons/regular/user-graduate.svg b/src/static/icons/regular/user-graduate.svg similarity index 100% rename from client/src/static/icons/regular/user-graduate.svg rename to src/static/icons/regular/user-graduate.svg diff --git a/client/src/static/icons/regular/user-hard-hat.svg b/src/static/icons/regular/user-hard-hat.svg similarity index 100% rename from client/src/static/icons/regular/user-hard-hat.svg rename to src/static/icons/regular/user-hard-hat.svg diff --git a/client/src/static/icons/regular/user-headset.svg b/src/static/icons/regular/user-headset.svg similarity index 100% rename from client/src/static/icons/regular/user-headset.svg rename to src/static/icons/regular/user-headset.svg diff --git a/client/src/static/icons/regular/user-injured.svg b/src/static/icons/regular/user-injured.svg similarity index 100% rename from client/src/static/icons/regular/user-injured.svg rename to src/static/icons/regular/user-injured.svg diff --git a/client/src/static/icons/regular/user-lock.svg b/src/static/icons/regular/user-lock.svg similarity index 100% rename from client/src/static/icons/regular/user-lock.svg rename to src/static/icons/regular/user-lock.svg diff --git a/client/src/static/icons/regular/user-md-chat.svg b/src/static/icons/regular/user-md-chat.svg similarity index 100% rename from client/src/static/icons/regular/user-md-chat.svg rename to src/static/icons/regular/user-md-chat.svg diff --git a/client/src/static/icons/regular/user-md.svg b/src/static/icons/regular/user-md.svg similarity index 100% rename from client/src/static/icons/regular/user-md.svg rename to src/static/icons/regular/user-md.svg diff --git a/client/src/static/icons/regular/user-minus.svg b/src/static/icons/regular/user-minus.svg similarity index 100% rename from client/src/static/icons/regular/user-minus.svg rename to src/static/icons/regular/user-minus.svg diff --git a/client/src/static/icons/regular/user-music.svg b/src/static/icons/regular/user-music.svg similarity index 100% rename from client/src/static/icons/regular/user-music.svg rename to src/static/icons/regular/user-music.svg diff --git a/client/src/static/icons/regular/user-ninja.svg b/src/static/icons/regular/user-ninja.svg similarity index 100% rename from client/src/static/icons/regular/user-ninja.svg rename to src/static/icons/regular/user-ninja.svg diff --git a/client/src/static/icons/regular/user-nurse.svg b/src/static/icons/regular/user-nurse.svg similarity index 100% rename from client/src/static/icons/regular/user-nurse.svg rename to src/static/icons/regular/user-nurse.svg diff --git a/client/src/static/icons/regular/user-plus.svg b/src/static/icons/regular/user-plus.svg similarity index 100% rename from client/src/static/icons/regular/user-plus.svg rename to src/static/icons/regular/user-plus.svg diff --git a/client/src/static/icons/regular/user-robot.svg b/src/static/icons/regular/user-robot.svg similarity index 100% rename from client/src/static/icons/regular/user-robot.svg rename to src/static/icons/regular/user-robot.svg diff --git a/client/src/static/icons/regular/user-secret.svg b/src/static/icons/regular/user-secret.svg similarity index 100% rename from client/src/static/icons/regular/user-secret.svg rename to src/static/icons/regular/user-secret.svg diff --git a/client/src/static/icons/regular/user-shield.svg b/src/static/icons/regular/user-shield.svg similarity index 100% rename from client/src/static/icons/regular/user-shield.svg rename to src/static/icons/regular/user-shield.svg diff --git a/client/src/static/icons/regular/user-slash.svg b/src/static/icons/regular/user-slash.svg similarity index 100% rename from client/src/static/icons/regular/user-slash.svg rename to src/static/icons/regular/user-slash.svg diff --git a/client/src/static/icons/regular/user-tag.svg b/src/static/icons/regular/user-tag.svg similarity index 100% rename from client/src/static/icons/regular/user-tag.svg rename to src/static/icons/regular/user-tag.svg diff --git a/client/src/static/icons/regular/user-tie.svg b/src/static/icons/regular/user-tie.svg similarity index 100% rename from client/src/static/icons/regular/user-tie.svg rename to src/static/icons/regular/user-tie.svg diff --git a/client/src/static/icons/regular/user-times.svg b/src/static/icons/regular/user-times.svg similarity index 100% rename from client/src/static/icons/regular/user-times.svg rename to src/static/icons/regular/user-times.svg diff --git a/client/src/static/icons/regular/user-visor.svg b/src/static/icons/regular/user-visor.svg similarity index 100% rename from client/src/static/icons/regular/user-visor.svg rename to src/static/icons/regular/user-visor.svg diff --git a/client/src/static/icons/regular/user.svg b/src/static/icons/regular/user.svg similarity index 100% rename from client/src/static/icons/regular/user.svg rename to src/static/icons/regular/user.svg diff --git a/client/src/static/icons/regular/users-class.svg b/src/static/icons/regular/users-class.svg similarity index 100% rename from client/src/static/icons/regular/users-class.svg rename to src/static/icons/regular/users-class.svg diff --git a/client/src/static/icons/regular/users-cog.svg b/src/static/icons/regular/users-cog.svg similarity index 100% rename from client/src/static/icons/regular/users-cog.svg rename to src/static/icons/regular/users-cog.svg diff --git a/client/src/static/icons/regular/users-crown.svg b/src/static/icons/regular/users-crown.svg similarity index 100% rename from client/src/static/icons/regular/users-crown.svg rename to src/static/icons/regular/users-crown.svg diff --git a/client/src/static/icons/regular/users-medical.svg b/src/static/icons/regular/users-medical.svg similarity index 100% rename from client/src/static/icons/regular/users-medical.svg rename to src/static/icons/regular/users-medical.svg diff --git a/client/src/static/icons/regular/users.svg b/src/static/icons/regular/users.svg similarity index 100% rename from client/src/static/icons/regular/users.svg rename to src/static/icons/regular/users.svg diff --git a/client/src/static/icons/regular/utensil-fork.svg b/src/static/icons/regular/utensil-fork.svg similarity index 100% rename from client/src/static/icons/regular/utensil-fork.svg rename to src/static/icons/regular/utensil-fork.svg diff --git a/client/src/static/icons/regular/utensil-knife.svg b/src/static/icons/regular/utensil-knife.svg similarity index 100% rename from client/src/static/icons/regular/utensil-knife.svg rename to src/static/icons/regular/utensil-knife.svg diff --git a/client/src/static/icons/regular/utensil-spoon.svg b/src/static/icons/regular/utensil-spoon.svg similarity index 100% rename from client/src/static/icons/regular/utensil-spoon.svg rename to src/static/icons/regular/utensil-spoon.svg diff --git a/client/src/static/icons/regular/utensils-alt.svg b/src/static/icons/regular/utensils-alt.svg similarity index 100% rename from client/src/static/icons/regular/utensils-alt.svg rename to src/static/icons/regular/utensils-alt.svg diff --git a/client/src/static/icons/regular/utensils.svg b/src/static/icons/regular/utensils.svg similarity index 100% rename from client/src/static/icons/regular/utensils.svg rename to src/static/icons/regular/utensils.svg diff --git a/client/src/static/icons/regular/vacuum-robot.svg b/src/static/icons/regular/vacuum-robot.svg similarity index 100% rename from client/src/static/icons/regular/vacuum-robot.svg rename to src/static/icons/regular/vacuum-robot.svg diff --git a/client/src/static/icons/regular/vacuum.svg b/src/static/icons/regular/vacuum.svg similarity index 100% rename from client/src/static/icons/regular/vacuum.svg rename to src/static/icons/regular/vacuum.svg diff --git a/client/src/static/icons/regular/value-absolute.svg b/src/static/icons/regular/value-absolute.svg similarity index 100% rename from client/src/static/icons/regular/value-absolute.svg rename to src/static/icons/regular/value-absolute.svg diff --git a/client/src/static/icons/regular/vector-square.svg b/src/static/icons/regular/vector-square.svg similarity index 100% rename from client/src/static/icons/regular/vector-square.svg rename to src/static/icons/regular/vector-square.svg diff --git a/client/src/static/icons/regular/venus-double.svg b/src/static/icons/regular/venus-double.svg similarity index 100% rename from client/src/static/icons/regular/venus-double.svg rename to src/static/icons/regular/venus-double.svg diff --git a/client/src/static/icons/regular/venus-mars.svg b/src/static/icons/regular/venus-mars.svg similarity index 100% rename from client/src/static/icons/regular/venus-mars.svg rename to src/static/icons/regular/venus-mars.svg diff --git a/client/src/static/icons/regular/venus.svg b/src/static/icons/regular/venus.svg similarity index 100% rename from client/src/static/icons/regular/venus.svg rename to src/static/icons/regular/venus.svg diff --git a/client/src/static/icons/regular/vhs.svg b/src/static/icons/regular/vhs.svg similarity index 100% rename from client/src/static/icons/regular/vhs.svg rename to src/static/icons/regular/vhs.svg diff --git a/client/src/static/icons/regular/vial.svg b/src/static/icons/regular/vial.svg similarity index 100% rename from client/src/static/icons/regular/vial.svg rename to src/static/icons/regular/vial.svg diff --git a/client/src/static/icons/regular/vials.svg b/src/static/icons/regular/vials.svg similarity index 100% rename from client/src/static/icons/regular/vials.svg rename to src/static/icons/regular/vials.svg diff --git a/client/src/static/icons/regular/video-plus.svg b/src/static/icons/regular/video-plus.svg similarity index 100% rename from client/src/static/icons/regular/video-plus.svg rename to src/static/icons/regular/video-plus.svg diff --git a/client/src/static/icons/regular/video-slash.svg b/src/static/icons/regular/video-slash.svg similarity index 100% rename from client/src/static/icons/regular/video-slash.svg rename to src/static/icons/regular/video-slash.svg diff --git a/client/src/static/icons/regular/video.svg b/src/static/icons/regular/video.svg similarity index 100% rename from client/src/static/icons/regular/video.svg rename to src/static/icons/regular/video.svg diff --git a/client/src/static/icons/regular/vihara.svg b/src/static/icons/regular/vihara.svg similarity index 100% rename from client/src/static/icons/regular/vihara.svg rename to src/static/icons/regular/vihara.svg diff --git a/client/src/static/icons/regular/violin.svg b/src/static/icons/regular/violin.svg similarity index 100% rename from client/src/static/icons/regular/violin.svg rename to src/static/icons/regular/violin.svg diff --git a/client/src/static/icons/regular/voicemail.svg b/src/static/icons/regular/voicemail.svg similarity index 100% rename from client/src/static/icons/regular/voicemail.svg rename to src/static/icons/regular/voicemail.svg diff --git a/client/src/static/icons/regular/volcano.svg b/src/static/icons/regular/volcano.svg similarity index 100% rename from client/src/static/icons/regular/volcano.svg rename to src/static/icons/regular/volcano.svg diff --git a/client/src/static/icons/regular/volleyball-ball.svg b/src/static/icons/regular/volleyball-ball.svg similarity index 100% rename from client/src/static/icons/regular/volleyball-ball.svg rename to src/static/icons/regular/volleyball-ball.svg diff --git a/client/src/static/icons/regular/volume-down.svg b/src/static/icons/regular/volume-down.svg similarity index 100% rename from client/src/static/icons/regular/volume-down.svg rename to src/static/icons/regular/volume-down.svg diff --git a/client/src/static/icons/regular/volume-mute.svg b/src/static/icons/regular/volume-mute.svg similarity index 100% rename from client/src/static/icons/regular/volume-mute.svg rename to src/static/icons/regular/volume-mute.svg diff --git a/client/src/static/icons/regular/volume-off.svg b/src/static/icons/regular/volume-off.svg similarity index 100% rename from client/src/static/icons/regular/volume-off.svg rename to src/static/icons/regular/volume-off.svg diff --git a/client/src/static/icons/regular/volume-slash.svg b/src/static/icons/regular/volume-slash.svg similarity index 100% rename from client/src/static/icons/regular/volume-slash.svg rename to src/static/icons/regular/volume-slash.svg diff --git a/client/src/static/icons/regular/volume-up.svg b/src/static/icons/regular/volume-up.svg similarity index 100% rename from client/src/static/icons/regular/volume-up.svg rename to src/static/icons/regular/volume-up.svg diff --git a/client/src/static/icons/regular/volume.svg b/src/static/icons/regular/volume.svg similarity index 100% rename from client/src/static/icons/regular/volume.svg rename to src/static/icons/regular/volume.svg diff --git a/client/src/static/icons/regular/vote-nay.svg b/src/static/icons/regular/vote-nay.svg similarity index 100% rename from client/src/static/icons/regular/vote-nay.svg rename to src/static/icons/regular/vote-nay.svg diff --git a/client/src/static/icons/regular/vote-yea.svg b/src/static/icons/regular/vote-yea.svg similarity index 100% rename from client/src/static/icons/regular/vote-yea.svg rename to src/static/icons/regular/vote-yea.svg diff --git a/client/src/static/icons/regular/vr-cardboard.svg b/src/static/icons/regular/vr-cardboard.svg similarity index 100% rename from client/src/static/icons/regular/vr-cardboard.svg rename to src/static/icons/regular/vr-cardboard.svg diff --git a/client/src/static/icons/regular/wagon-covered.svg b/src/static/icons/regular/wagon-covered.svg similarity index 100% rename from client/src/static/icons/regular/wagon-covered.svg rename to src/static/icons/regular/wagon-covered.svg diff --git a/client/src/static/icons/regular/walker.svg b/src/static/icons/regular/walker.svg similarity index 100% rename from client/src/static/icons/regular/walker.svg rename to src/static/icons/regular/walker.svg diff --git a/client/src/static/icons/regular/walkie-talkie.svg b/src/static/icons/regular/walkie-talkie.svg similarity index 100% rename from client/src/static/icons/regular/walkie-talkie.svg rename to src/static/icons/regular/walkie-talkie.svg diff --git a/client/src/static/icons/regular/walking.svg b/src/static/icons/regular/walking.svg similarity index 100% rename from client/src/static/icons/regular/walking.svg rename to src/static/icons/regular/walking.svg diff --git a/client/src/static/icons/regular/wallet.svg b/src/static/icons/regular/wallet.svg similarity index 100% rename from client/src/static/icons/regular/wallet.svg rename to src/static/icons/regular/wallet.svg diff --git a/client/src/static/icons/regular/wand-magic.svg b/src/static/icons/regular/wand-magic.svg similarity index 100% rename from client/src/static/icons/regular/wand-magic.svg rename to src/static/icons/regular/wand-magic.svg diff --git a/client/src/static/icons/regular/wand.svg b/src/static/icons/regular/wand.svg similarity index 100% rename from client/src/static/icons/regular/wand.svg rename to src/static/icons/regular/wand.svg diff --git a/client/src/static/icons/regular/warehouse-alt.svg b/src/static/icons/regular/warehouse-alt.svg similarity index 100% rename from client/src/static/icons/regular/warehouse-alt.svg rename to src/static/icons/regular/warehouse-alt.svg diff --git a/client/src/static/icons/regular/warehouse.svg b/src/static/icons/regular/warehouse.svg similarity index 100% rename from client/src/static/icons/regular/warehouse.svg rename to src/static/icons/regular/warehouse.svg diff --git a/client/src/static/icons/regular/washer.svg b/src/static/icons/regular/washer.svg similarity index 100% rename from client/src/static/icons/regular/washer.svg rename to src/static/icons/regular/washer.svg diff --git a/client/src/static/icons/regular/watch-calculator.svg b/src/static/icons/regular/watch-calculator.svg similarity index 100% rename from client/src/static/icons/regular/watch-calculator.svg rename to src/static/icons/regular/watch-calculator.svg diff --git a/client/src/static/icons/regular/watch-fitness.svg b/src/static/icons/regular/watch-fitness.svg similarity index 100% rename from client/src/static/icons/regular/watch-fitness.svg rename to src/static/icons/regular/watch-fitness.svg diff --git a/client/src/static/icons/regular/watch.svg b/src/static/icons/regular/watch.svg similarity index 100% rename from client/src/static/icons/regular/watch.svg rename to src/static/icons/regular/watch.svg diff --git a/client/src/static/icons/regular/water-lower.svg b/src/static/icons/regular/water-lower.svg similarity index 100% rename from client/src/static/icons/regular/water-lower.svg rename to src/static/icons/regular/water-lower.svg diff --git a/client/src/static/icons/regular/water-rise.svg b/src/static/icons/regular/water-rise.svg similarity index 100% rename from client/src/static/icons/regular/water-rise.svg rename to src/static/icons/regular/water-rise.svg diff --git a/client/src/static/icons/regular/water.svg b/src/static/icons/regular/water.svg similarity index 100% rename from client/src/static/icons/regular/water.svg rename to src/static/icons/regular/water.svg diff --git a/client/src/static/icons/regular/wave-sine.svg b/src/static/icons/regular/wave-sine.svg similarity index 100% rename from client/src/static/icons/regular/wave-sine.svg rename to src/static/icons/regular/wave-sine.svg diff --git a/client/src/static/icons/regular/wave-square.svg b/src/static/icons/regular/wave-square.svg similarity index 100% rename from client/src/static/icons/regular/wave-square.svg rename to src/static/icons/regular/wave-square.svg diff --git a/client/src/static/icons/regular/wave-triangle.svg b/src/static/icons/regular/wave-triangle.svg similarity index 100% rename from client/src/static/icons/regular/wave-triangle.svg rename to src/static/icons/regular/wave-triangle.svg diff --git a/client/src/static/icons/regular/waveform-path.svg b/src/static/icons/regular/waveform-path.svg similarity index 100% rename from client/src/static/icons/regular/waveform-path.svg rename to src/static/icons/regular/waveform-path.svg diff --git a/client/src/static/icons/regular/waveform.svg b/src/static/icons/regular/waveform.svg similarity index 100% rename from client/src/static/icons/regular/waveform.svg rename to src/static/icons/regular/waveform.svg diff --git a/client/src/static/icons/regular/webcam-slash.svg b/src/static/icons/regular/webcam-slash.svg similarity index 100% rename from client/src/static/icons/regular/webcam-slash.svg rename to src/static/icons/regular/webcam-slash.svg diff --git a/client/src/static/icons/regular/webcam.svg b/src/static/icons/regular/webcam.svg similarity index 100% rename from client/src/static/icons/regular/webcam.svg rename to src/static/icons/regular/webcam.svg diff --git a/client/src/static/icons/regular/weight-hanging.svg b/src/static/icons/regular/weight-hanging.svg similarity index 100% rename from client/src/static/icons/regular/weight-hanging.svg rename to src/static/icons/regular/weight-hanging.svg diff --git a/client/src/static/icons/regular/weight.svg b/src/static/icons/regular/weight.svg similarity index 100% rename from client/src/static/icons/regular/weight.svg rename to src/static/icons/regular/weight.svg diff --git a/client/src/static/icons/regular/whale.svg b/src/static/icons/regular/whale.svg similarity index 100% rename from client/src/static/icons/regular/whale.svg rename to src/static/icons/regular/whale.svg diff --git a/client/src/static/icons/regular/wheat.svg b/src/static/icons/regular/wheat.svg similarity index 100% rename from client/src/static/icons/regular/wheat.svg rename to src/static/icons/regular/wheat.svg diff --git a/client/src/static/icons/regular/wheelchair.svg b/src/static/icons/regular/wheelchair.svg similarity index 100% rename from client/src/static/icons/regular/wheelchair.svg rename to src/static/icons/regular/wheelchair.svg diff --git a/client/src/static/icons/regular/whistle.svg b/src/static/icons/regular/whistle.svg similarity index 100% rename from client/src/static/icons/regular/whistle.svg rename to src/static/icons/regular/whistle.svg diff --git a/client/src/static/icons/regular/wifi-1.svg b/src/static/icons/regular/wifi-1.svg similarity index 100% rename from client/src/static/icons/regular/wifi-1.svg rename to src/static/icons/regular/wifi-1.svg diff --git a/client/src/static/icons/regular/wifi-2.svg b/src/static/icons/regular/wifi-2.svg similarity index 100% rename from client/src/static/icons/regular/wifi-2.svg rename to src/static/icons/regular/wifi-2.svg diff --git a/client/src/static/icons/regular/wifi-slash.svg b/src/static/icons/regular/wifi-slash.svg similarity index 100% rename from client/src/static/icons/regular/wifi-slash.svg rename to src/static/icons/regular/wifi-slash.svg diff --git a/client/src/static/icons/regular/wifi.svg b/src/static/icons/regular/wifi.svg similarity index 100% rename from client/src/static/icons/regular/wifi.svg rename to src/static/icons/regular/wifi.svg diff --git a/client/src/static/icons/regular/wind-turbine.svg b/src/static/icons/regular/wind-turbine.svg similarity index 100% rename from client/src/static/icons/regular/wind-turbine.svg rename to src/static/icons/regular/wind-turbine.svg diff --git a/client/src/static/icons/regular/wind-warning.svg b/src/static/icons/regular/wind-warning.svg similarity index 100% rename from client/src/static/icons/regular/wind-warning.svg rename to src/static/icons/regular/wind-warning.svg diff --git a/client/src/static/icons/regular/wind.svg b/src/static/icons/regular/wind.svg similarity index 100% rename from client/src/static/icons/regular/wind.svg rename to src/static/icons/regular/wind.svg diff --git a/client/src/static/icons/regular/window-alt.svg b/src/static/icons/regular/window-alt.svg similarity index 100% rename from client/src/static/icons/regular/window-alt.svg rename to src/static/icons/regular/window-alt.svg diff --git a/client/src/static/icons/regular/window-close.svg b/src/static/icons/regular/window-close.svg similarity index 100% rename from client/src/static/icons/regular/window-close.svg rename to src/static/icons/regular/window-close.svg diff --git a/client/src/static/icons/regular/window-frame-open.svg b/src/static/icons/regular/window-frame-open.svg similarity index 100% rename from client/src/static/icons/regular/window-frame-open.svg rename to src/static/icons/regular/window-frame-open.svg diff --git a/client/src/static/icons/regular/window-frame.svg b/src/static/icons/regular/window-frame.svg similarity index 100% rename from client/src/static/icons/regular/window-frame.svg rename to src/static/icons/regular/window-frame.svg diff --git a/client/src/static/icons/regular/window-maximize.svg b/src/static/icons/regular/window-maximize.svg similarity index 100% rename from client/src/static/icons/regular/window-maximize.svg rename to src/static/icons/regular/window-maximize.svg diff --git a/client/src/static/icons/regular/window-minimize.svg b/src/static/icons/regular/window-minimize.svg similarity index 100% rename from client/src/static/icons/regular/window-minimize.svg rename to src/static/icons/regular/window-minimize.svg diff --git a/client/src/static/icons/regular/window-restore.svg b/src/static/icons/regular/window-restore.svg similarity index 100% rename from client/src/static/icons/regular/window-restore.svg rename to src/static/icons/regular/window-restore.svg diff --git a/client/src/static/icons/regular/window.svg b/src/static/icons/regular/window.svg similarity index 100% rename from client/src/static/icons/regular/window.svg rename to src/static/icons/regular/window.svg diff --git a/client/src/static/icons/regular/windsock.svg b/src/static/icons/regular/windsock.svg similarity index 100% rename from client/src/static/icons/regular/windsock.svg rename to src/static/icons/regular/windsock.svg diff --git a/client/src/static/icons/regular/wine-bottle.svg b/src/static/icons/regular/wine-bottle.svg similarity index 100% rename from client/src/static/icons/regular/wine-bottle.svg rename to src/static/icons/regular/wine-bottle.svg diff --git a/client/src/static/icons/regular/wine-glass-alt.svg b/src/static/icons/regular/wine-glass-alt.svg similarity index 100% rename from client/src/static/icons/regular/wine-glass-alt.svg rename to src/static/icons/regular/wine-glass-alt.svg diff --git a/client/src/static/icons/regular/wine-glass.svg b/src/static/icons/regular/wine-glass.svg similarity index 100% rename from client/src/static/icons/regular/wine-glass.svg rename to src/static/icons/regular/wine-glass.svg diff --git a/client/src/static/icons/regular/won-sign.svg b/src/static/icons/regular/won-sign.svg similarity index 100% rename from client/src/static/icons/regular/won-sign.svg rename to src/static/icons/regular/won-sign.svg diff --git a/client/src/static/icons/regular/wreath.svg b/src/static/icons/regular/wreath.svg similarity index 100% rename from client/src/static/icons/regular/wreath.svg rename to src/static/icons/regular/wreath.svg diff --git a/client/src/static/icons/regular/wrench.svg b/src/static/icons/regular/wrench.svg similarity index 100% rename from client/src/static/icons/regular/wrench.svg rename to src/static/icons/regular/wrench.svg diff --git a/client/src/static/icons/regular/x-ray.svg b/src/static/icons/regular/x-ray.svg similarity index 100% rename from client/src/static/icons/regular/x-ray.svg rename to src/static/icons/regular/x-ray.svg diff --git a/client/src/static/icons/regular/yen-sign.svg b/src/static/icons/regular/yen-sign.svg similarity index 100% rename from client/src/static/icons/regular/yen-sign.svg rename to src/static/icons/regular/yen-sign.svg diff --git a/client/src/static/icons/regular/yin-yang.svg b/src/static/icons/regular/yin-yang.svg similarity index 100% rename from client/src/static/icons/regular/yin-yang.svg rename to src/static/icons/regular/yin-yang.svg diff --git a/client/src/static/icons/solid/abacus.svg b/src/static/icons/solid/abacus.svg similarity index 100% rename from client/src/static/icons/solid/abacus.svg rename to src/static/icons/solid/abacus.svg diff --git a/client/src/static/icons/solid/acorn.svg b/src/static/icons/solid/acorn.svg similarity index 100% rename from client/src/static/icons/solid/acorn.svg rename to src/static/icons/solid/acorn.svg diff --git a/client/src/static/icons/solid/ad.svg b/src/static/icons/solid/ad.svg similarity index 100% rename from client/src/static/icons/solid/ad.svg rename to src/static/icons/solid/ad.svg diff --git a/client/src/static/icons/solid/address-book.svg b/src/static/icons/solid/address-book.svg similarity index 100% rename from client/src/static/icons/solid/address-book.svg rename to src/static/icons/solid/address-book.svg diff --git a/client/src/static/icons/solid/address-card.svg b/src/static/icons/solid/address-card.svg similarity index 100% rename from client/src/static/icons/solid/address-card.svg rename to src/static/icons/solid/address-card.svg diff --git a/client/src/static/icons/solid/adjust.svg b/src/static/icons/solid/adjust.svg similarity index 100% rename from client/src/static/icons/solid/adjust.svg rename to src/static/icons/solid/adjust.svg diff --git a/client/src/static/icons/solid/air-conditioner.svg b/src/static/icons/solid/air-conditioner.svg similarity index 100% rename from client/src/static/icons/solid/air-conditioner.svg rename to src/static/icons/solid/air-conditioner.svg diff --git a/client/src/static/icons/solid/air-freshener.svg b/src/static/icons/solid/air-freshener.svg similarity index 100% rename from client/src/static/icons/solid/air-freshener.svg rename to src/static/icons/solid/air-freshener.svg diff --git a/client/src/static/icons/solid/alarm-clock.svg b/src/static/icons/solid/alarm-clock.svg similarity index 100% rename from client/src/static/icons/solid/alarm-clock.svg rename to src/static/icons/solid/alarm-clock.svg diff --git a/client/src/static/icons/solid/alarm-exclamation.svg b/src/static/icons/solid/alarm-exclamation.svg similarity index 100% rename from client/src/static/icons/solid/alarm-exclamation.svg rename to src/static/icons/solid/alarm-exclamation.svg diff --git a/client/src/static/icons/solid/alarm-plus.svg b/src/static/icons/solid/alarm-plus.svg similarity index 100% rename from client/src/static/icons/solid/alarm-plus.svg rename to src/static/icons/solid/alarm-plus.svg diff --git a/client/src/static/icons/solid/alarm-snooze.svg b/src/static/icons/solid/alarm-snooze.svg similarity index 100% rename from client/src/static/icons/solid/alarm-snooze.svg rename to src/static/icons/solid/alarm-snooze.svg diff --git a/client/src/static/icons/solid/album-collection.svg b/src/static/icons/solid/album-collection.svg similarity index 100% rename from client/src/static/icons/solid/album-collection.svg rename to src/static/icons/solid/album-collection.svg diff --git a/client/src/static/icons/solid/album.svg b/src/static/icons/solid/album.svg similarity index 100% rename from client/src/static/icons/solid/album.svg rename to src/static/icons/solid/album.svg diff --git a/client/src/static/icons/solid/alicorn.svg b/src/static/icons/solid/alicorn.svg similarity index 100% rename from client/src/static/icons/solid/alicorn.svg rename to src/static/icons/solid/alicorn.svg diff --git a/client/src/static/icons/solid/alien-monster.svg b/src/static/icons/solid/alien-monster.svg similarity index 100% rename from client/src/static/icons/solid/alien-monster.svg rename to src/static/icons/solid/alien-monster.svg diff --git a/client/src/static/icons/solid/alien.svg b/src/static/icons/solid/alien.svg similarity index 100% rename from client/src/static/icons/solid/alien.svg rename to src/static/icons/solid/alien.svg diff --git a/client/src/static/icons/solid/align-center.svg b/src/static/icons/solid/align-center.svg similarity index 100% rename from client/src/static/icons/solid/align-center.svg rename to src/static/icons/solid/align-center.svg diff --git a/client/src/static/icons/solid/align-justify.svg b/src/static/icons/solid/align-justify.svg similarity index 100% rename from client/src/static/icons/solid/align-justify.svg rename to src/static/icons/solid/align-justify.svg diff --git a/client/src/static/icons/solid/align-left.svg b/src/static/icons/solid/align-left.svg similarity index 100% rename from client/src/static/icons/solid/align-left.svg rename to src/static/icons/solid/align-left.svg diff --git a/client/src/static/icons/solid/align-right.svg b/src/static/icons/solid/align-right.svg similarity index 100% rename from client/src/static/icons/solid/align-right.svg rename to src/static/icons/solid/align-right.svg diff --git a/client/src/static/icons/solid/align-slash.svg b/src/static/icons/solid/align-slash.svg similarity index 100% rename from client/src/static/icons/solid/align-slash.svg rename to src/static/icons/solid/align-slash.svg diff --git a/client/src/static/icons/solid/allergies.svg b/src/static/icons/solid/allergies.svg similarity index 100% rename from client/src/static/icons/solid/allergies.svg rename to src/static/icons/solid/allergies.svg diff --git a/client/src/static/icons/solid/ambulance.svg b/src/static/icons/solid/ambulance.svg similarity index 100% rename from client/src/static/icons/solid/ambulance.svg rename to src/static/icons/solid/ambulance.svg diff --git a/client/src/static/icons/solid/american-sign-language-interpreting.svg b/src/static/icons/solid/american-sign-language-interpreting.svg similarity index 100% rename from client/src/static/icons/solid/american-sign-language-interpreting.svg rename to src/static/icons/solid/american-sign-language-interpreting.svg diff --git a/client/src/static/icons/solid/amp-guitar.svg b/src/static/icons/solid/amp-guitar.svg similarity index 100% rename from client/src/static/icons/solid/amp-guitar.svg rename to src/static/icons/solid/amp-guitar.svg diff --git a/client/src/static/icons/solid/analytics.svg b/src/static/icons/solid/analytics.svg similarity index 100% rename from client/src/static/icons/solid/analytics.svg rename to src/static/icons/solid/analytics.svg diff --git a/client/src/static/icons/solid/anchor.svg b/src/static/icons/solid/anchor.svg similarity index 100% rename from client/src/static/icons/solid/anchor.svg rename to src/static/icons/solid/anchor.svg diff --git a/client/src/static/icons/solid/angel.svg b/src/static/icons/solid/angel.svg similarity index 100% rename from client/src/static/icons/solid/angel.svg rename to src/static/icons/solid/angel.svg diff --git a/client/src/static/icons/solid/angle-double-down.svg b/src/static/icons/solid/angle-double-down.svg similarity index 100% rename from client/src/static/icons/solid/angle-double-down.svg rename to src/static/icons/solid/angle-double-down.svg diff --git a/client/src/static/icons/solid/angle-double-left.svg b/src/static/icons/solid/angle-double-left.svg similarity index 100% rename from client/src/static/icons/solid/angle-double-left.svg rename to src/static/icons/solid/angle-double-left.svg diff --git a/client/src/static/icons/solid/angle-double-right.svg b/src/static/icons/solid/angle-double-right.svg similarity index 100% rename from client/src/static/icons/solid/angle-double-right.svg rename to src/static/icons/solid/angle-double-right.svg diff --git a/client/src/static/icons/solid/angle-double-up.svg b/src/static/icons/solid/angle-double-up.svg similarity index 100% rename from client/src/static/icons/solid/angle-double-up.svg rename to src/static/icons/solid/angle-double-up.svg diff --git a/client/src/static/icons/solid/angle-down.svg b/src/static/icons/solid/angle-down.svg similarity index 100% rename from client/src/static/icons/solid/angle-down.svg rename to src/static/icons/solid/angle-down.svg diff --git a/client/src/static/icons/solid/angle-left.svg b/src/static/icons/solid/angle-left.svg similarity index 100% rename from client/src/static/icons/solid/angle-left.svg rename to src/static/icons/solid/angle-left.svg diff --git a/client/src/static/icons/solid/angle-right.svg b/src/static/icons/solid/angle-right.svg similarity index 100% rename from client/src/static/icons/solid/angle-right.svg rename to src/static/icons/solid/angle-right.svg diff --git a/client/src/static/icons/solid/angle-up.svg b/src/static/icons/solid/angle-up.svg similarity index 100% rename from client/src/static/icons/solid/angle-up.svg rename to src/static/icons/solid/angle-up.svg diff --git a/client/src/static/icons/solid/angry.svg b/src/static/icons/solid/angry.svg similarity index 100% rename from client/src/static/icons/solid/angry.svg rename to src/static/icons/solid/angry.svg diff --git a/client/src/static/icons/solid/ankh.svg b/src/static/icons/solid/ankh.svg similarity index 100% rename from client/src/static/icons/solid/ankh.svg rename to src/static/icons/solid/ankh.svg diff --git a/client/src/static/icons/solid/apple-alt.svg b/src/static/icons/solid/apple-alt.svg similarity index 100% rename from client/src/static/icons/solid/apple-alt.svg rename to src/static/icons/solid/apple-alt.svg diff --git a/client/src/static/icons/solid/apple-crate.svg b/src/static/icons/solid/apple-crate.svg similarity index 100% rename from client/src/static/icons/solid/apple-crate.svg rename to src/static/icons/solid/apple-crate.svg diff --git a/client/src/static/icons/solid/archive.svg b/src/static/icons/solid/archive.svg similarity index 100% rename from client/src/static/icons/solid/archive.svg rename to src/static/icons/solid/archive.svg diff --git a/client/src/static/icons/solid/archway.svg b/src/static/icons/solid/archway.svg similarity index 100% rename from client/src/static/icons/solid/archway.svg rename to src/static/icons/solid/archway.svg diff --git a/client/src/static/icons/solid/arrow-alt-circle-down.svg b/src/static/icons/solid/arrow-alt-circle-down.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-circle-down.svg rename to src/static/icons/solid/arrow-alt-circle-down.svg diff --git a/client/src/static/icons/solid/arrow-alt-circle-left.svg b/src/static/icons/solid/arrow-alt-circle-left.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-circle-left.svg rename to src/static/icons/solid/arrow-alt-circle-left.svg diff --git a/client/src/static/icons/solid/arrow-alt-circle-right.svg b/src/static/icons/solid/arrow-alt-circle-right.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-circle-right.svg rename to src/static/icons/solid/arrow-alt-circle-right.svg diff --git a/client/src/static/icons/solid/arrow-alt-circle-up.svg b/src/static/icons/solid/arrow-alt-circle-up.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-circle-up.svg rename to src/static/icons/solid/arrow-alt-circle-up.svg diff --git a/client/src/static/icons/solid/arrow-alt-down.svg b/src/static/icons/solid/arrow-alt-down.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-down.svg rename to src/static/icons/solid/arrow-alt-down.svg diff --git a/client/src/static/icons/solid/arrow-alt-from-bottom.svg b/src/static/icons/solid/arrow-alt-from-bottom.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-from-bottom.svg rename to src/static/icons/solid/arrow-alt-from-bottom.svg diff --git a/client/src/static/icons/solid/arrow-alt-from-left.svg b/src/static/icons/solid/arrow-alt-from-left.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-from-left.svg rename to src/static/icons/solid/arrow-alt-from-left.svg diff --git a/client/src/static/icons/solid/arrow-alt-from-right.svg b/src/static/icons/solid/arrow-alt-from-right.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-from-right.svg rename to src/static/icons/solid/arrow-alt-from-right.svg diff --git a/client/src/static/icons/solid/arrow-alt-from-top.svg b/src/static/icons/solid/arrow-alt-from-top.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-from-top.svg rename to src/static/icons/solid/arrow-alt-from-top.svg diff --git a/client/src/static/icons/solid/arrow-alt-left.svg b/src/static/icons/solid/arrow-alt-left.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-left.svg rename to src/static/icons/solid/arrow-alt-left.svg diff --git a/client/src/static/icons/solid/arrow-alt-right.svg b/src/static/icons/solid/arrow-alt-right.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-right.svg rename to src/static/icons/solid/arrow-alt-right.svg diff --git a/client/src/static/icons/solid/arrow-alt-square-down.svg b/src/static/icons/solid/arrow-alt-square-down.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-square-down.svg rename to src/static/icons/solid/arrow-alt-square-down.svg diff --git a/client/src/static/icons/solid/arrow-alt-square-left.svg b/src/static/icons/solid/arrow-alt-square-left.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-square-left.svg rename to src/static/icons/solid/arrow-alt-square-left.svg diff --git a/client/src/static/icons/solid/arrow-alt-square-right.svg b/src/static/icons/solid/arrow-alt-square-right.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-square-right.svg rename to src/static/icons/solid/arrow-alt-square-right.svg diff --git a/client/src/static/icons/solid/arrow-alt-square-up.svg b/src/static/icons/solid/arrow-alt-square-up.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-square-up.svg rename to src/static/icons/solid/arrow-alt-square-up.svg diff --git a/client/src/static/icons/solid/arrow-alt-to-bottom.svg b/src/static/icons/solid/arrow-alt-to-bottom.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-to-bottom.svg rename to src/static/icons/solid/arrow-alt-to-bottom.svg diff --git a/client/src/static/icons/solid/arrow-alt-to-left.svg b/src/static/icons/solid/arrow-alt-to-left.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-to-left.svg rename to src/static/icons/solid/arrow-alt-to-left.svg diff --git a/client/src/static/icons/solid/arrow-alt-to-right.svg b/src/static/icons/solid/arrow-alt-to-right.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-to-right.svg rename to src/static/icons/solid/arrow-alt-to-right.svg diff --git a/client/src/static/icons/solid/arrow-alt-to-top.svg b/src/static/icons/solid/arrow-alt-to-top.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-to-top.svg rename to src/static/icons/solid/arrow-alt-to-top.svg diff --git a/client/src/static/icons/solid/arrow-alt-up.svg b/src/static/icons/solid/arrow-alt-up.svg similarity index 100% rename from client/src/static/icons/solid/arrow-alt-up.svg rename to src/static/icons/solid/arrow-alt-up.svg diff --git a/client/src/static/icons/solid/arrow-circle-down.svg b/src/static/icons/solid/arrow-circle-down.svg similarity index 100% rename from client/src/static/icons/solid/arrow-circle-down.svg rename to src/static/icons/solid/arrow-circle-down.svg diff --git a/client/src/static/icons/solid/arrow-circle-left.svg b/src/static/icons/solid/arrow-circle-left.svg similarity index 100% rename from client/src/static/icons/solid/arrow-circle-left.svg rename to src/static/icons/solid/arrow-circle-left.svg diff --git a/client/src/static/icons/solid/arrow-circle-right.svg b/src/static/icons/solid/arrow-circle-right.svg similarity index 100% rename from client/src/static/icons/solid/arrow-circle-right.svg rename to src/static/icons/solid/arrow-circle-right.svg diff --git a/client/src/static/icons/solid/arrow-circle-up.svg b/src/static/icons/solid/arrow-circle-up.svg similarity index 100% rename from client/src/static/icons/solid/arrow-circle-up.svg rename to src/static/icons/solid/arrow-circle-up.svg diff --git a/client/src/static/icons/solid/arrow-down.svg b/src/static/icons/solid/arrow-down.svg similarity index 100% rename from client/src/static/icons/solid/arrow-down.svg rename to src/static/icons/solid/arrow-down.svg diff --git a/client/src/static/icons/solid/arrow-from-bottom.svg b/src/static/icons/solid/arrow-from-bottom.svg similarity index 100% rename from client/src/static/icons/solid/arrow-from-bottom.svg rename to src/static/icons/solid/arrow-from-bottom.svg diff --git a/client/src/static/icons/solid/arrow-from-left.svg b/src/static/icons/solid/arrow-from-left.svg similarity index 100% rename from client/src/static/icons/solid/arrow-from-left.svg rename to src/static/icons/solid/arrow-from-left.svg diff --git a/client/src/static/icons/solid/arrow-from-right.svg b/src/static/icons/solid/arrow-from-right.svg similarity index 100% rename from client/src/static/icons/solid/arrow-from-right.svg rename to src/static/icons/solid/arrow-from-right.svg diff --git a/client/src/static/icons/solid/arrow-from-top.svg b/src/static/icons/solid/arrow-from-top.svg similarity index 100% rename from client/src/static/icons/solid/arrow-from-top.svg rename to src/static/icons/solid/arrow-from-top.svg diff --git a/client/src/static/icons/solid/arrow-left.svg b/src/static/icons/solid/arrow-left.svg similarity index 100% rename from client/src/static/icons/solid/arrow-left.svg rename to src/static/icons/solid/arrow-left.svg diff --git a/client/src/static/icons/solid/arrow-right.svg b/src/static/icons/solid/arrow-right.svg similarity index 100% rename from client/src/static/icons/solid/arrow-right.svg rename to src/static/icons/solid/arrow-right.svg diff --git a/client/src/static/icons/solid/arrow-square-down.svg b/src/static/icons/solid/arrow-square-down.svg similarity index 100% rename from client/src/static/icons/solid/arrow-square-down.svg rename to src/static/icons/solid/arrow-square-down.svg diff --git a/client/src/static/icons/solid/arrow-square-left.svg b/src/static/icons/solid/arrow-square-left.svg similarity index 100% rename from client/src/static/icons/solid/arrow-square-left.svg rename to src/static/icons/solid/arrow-square-left.svg diff --git a/client/src/static/icons/solid/arrow-square-right.svg b/src/static/icons/solid/arrow-square-right.svg similarity index 100% rename from client/src/static/icons/solid/arrow-square-right.svg rename to src/static/icons/solid/arrow-square-right.svg diff --git a/client/src/static/icons/solid/arrow-square-up.svg b/src/static/icons/solid/arrow-square-up.svg similarity index 100% rename from client/src/static/icons/solid/arrow-square-up.svg rename to src/static/icons/solid/arrow-square-up.svg diff --git a/client/src/static/icons/solid/arrow-to-bottom.svg b/src/static/icons/solid/arrow-to-bottom.svg similarity index 100% rename from client/src/static/icons/solid/arrow-to-bottom.svg rename to src/static/icons/solid/arrow-to-bottom.svg diff --git a/client/src/static/icons/solid/arrow-to-left.svg b/src/static/icons/solid/arrow-to-left.svg similarity index 100% rename from client/src/static/icons/solid/arrow-to-left.svg rename to src/static/icons/solid/arrow-to-left.svg diff --git a/client/src/static/icons/solid/arrow-to-right.svg b/src/static/icons/solid/arrow-to-right.svg similarity index 100% rename from client/src/static/icons/solid/arrow-to-right.svg rename to src/static/icons/solid/arrow-to-right.svg diff --git a/client/src/static/icons/solid/arrow-to-top.svg b/src/static/icons/solid/arrow-to-top.svg similarity index 100% rename from client/src/static/icons/solid/arrow-to-top.svg rename to src/static/icons/solid/arrow-to-top.svg diff --git a/client/src/static/icons/solid/arrow-up.svg b/src/static/icons/solid/arrow-up.svg similarity index 100% rename from client/src/static/icons/solid/arrow-up.svg rename to src/static/icons/solid/arrow-up.svg diff --git a/client/src/static/icons/solid/arrows-alt-h.svg b/src/static/icons/solid/arrows-alt-h.svg similarity index 100% rename from client/src/static/icons/solid/arrows-alt-h.svg rename to src/static/icons/solid/arrows-alt-h.svg diff --git a/client/src/static/icons/solid/arrows-alt-v.svg b/src/static/icons/solid/arrows-alt-v.svg similarity index 100% rename from client/src/static/icons/solid/arrows-alt-v.svg rename to src/static/icons/solid/arrows-alt-v.svg diff --git a/client/src/static/icons/solid/arrows-alt.svg b/src/static/icons/solid/arrows-alt.svg similarity index 100% rename from client/src/static/icons/solid/arrows-alt.svg rename to src/static/icons/solid/arrows-alt.svg diff --git a/client/src/static/icons/solid/arrows-h.svg b/src/static/icons/solid/arrows-h.svg similarity index 100% rename from client/src/static/icons/solid/arrows-h.svg rename to src/static/icons/solid/arrows-h.svg diff --git a/client/src/static/icons/solid/arrows-v.svg b/src/static/icons/solid/arrows-v.svg similarity index 100% rename from client/src/static/icons/solid/arrows-v.svg rename to src/static/icons/solid/arrows-v.svg diff --git a/client/src/static/icons/solid/arrows.svg b/src/static/icons/solid/arrows.svg similarity index 100% rename from client/src/static/icons/solid/arrows.svg rename to src/static/icons/solid/arrows.svg diff --git a/client/src/static/icons/solid/assistive-listening-systems.svg b/src/static/icons/solid/assistive-listening-systems.svg similarity index 100% rename from client/src/static/icons/solid/assistive-listening-systems.svg rename to src/static/icons/solid/assistive-listening-systems.svg diff --git a/client/src/static/icons/solid/asterisk.svg b/src/static/icons/solid/asterisk.svg similarity index 100% rename from client/src/static/icons/solid/asterisk.svg rename to src/static/icons/solid/asterisk.svg diff --git a/client/src/static/icons/solid/at.svg b/src/static/icons/solid/at.svg similarity index 100% rename from client/src/static/icons/solid/at.svg rename to src/static/icons/solid/at.svg diff --git a/client/src/static/icons/solid/atlas.svg b/src/static/icons/solid/atlas.svg similarity index 100% rename from client/src/static/icons/solid/atlas.svg rename to src/static/icons/solid/atlas.svg diff --git a/client/src/static/icons/solid/atom-alt.svg b/src/static/icons/solid/atom-alt.svg similarity index 100% rename from client/src/static/icons/solid/atom-alt.svg rename to src/static/icons/solid/atom-alt.svg diff --git a/client/src/static/icons/solid/atom.svg b/src/static/icons/solid/atom.svg similarity index 100% rename from client/src/static/icons/solid/atom.svg rename to src/static/icons/solid/atom.svg diff --git a/client/src/static/icons/solid/audio-description.svg b/src/static/icons/solid/audio-description.svg similarity index 100% rename from client/src/static/icons/solid/audio-description.svg rename to src/static/icons/solid/audio-description.svg diff --git a/client/src/static/icons/solid/award.svg b/src/static/icons/solid/award.svg similarity index 100% rename from client/src/static/icons/solid/award.svg rename to src/static/icons/solid/award.svg diff --git a/client/src/static/icons/solid/axe-battle.svg b/src/static/icons/solid/axe-battle.svg similarity index 100% rename from client/src/static/icons/solid/axe-battle.svg rename to src/static/icons/solid/axe-battle.svg diff --git a/client/src/static/icons/solid/axe.svg b/src/static/icons/solid/axe.svg similarity index 100% rename from client/src/static/icons/solid/axe.svg rename to src/static/icons/solid/axe.svg diff --git a/client/src/static/icons/solid/baby-carriage.svg b/src/static/icons/solid/baby-carriage.svg similarity index 100% rename from client/src/static/icons/solid/baby-carriage.svg rename to src/static/icons/solid/baby-carriage.svg diff --git a/client/src/static/icons/solid/baby.svg b/src/static/icons/solid/baby.svg similarity index 100% rename from client/src/static/icons/solid/baby.svg rename to src/static/icons/solid/baby.svg diff --git a/client/src/static/icons/solid/backpack.svg b/src/static/icons/solid/backpack.svg similarity index 100% rename from client/src/static/icons/solid/backpack.svg rename to src/static/icons/solid/backpack.svg diff --git a/client/src/static/icons/solid/backspace.svg b/src/static/icons/solid/backspace.svg similarity index 100% rename from client/src/static/icons/solid/backspace.svg rename to src/static/icons/solid/backspace.svg diff --git a/client/src/static/icons/solid/backward.svg b/src/static/icons/solid/backward.svg similarity index 100% rename from client/src/static/icons/solid/backward.svg rename to src/static/icons/solid/backward.svg diff --git a/client/src/static/icons/solid/bacon.svg b/src/static/icons/solid/bacon.svg similarity index 100% rename from client/src/static/icons/solid/bacon.svg rename to src/static/icons/solid/bacon.svg diff --git a/client/src/static/icons/solid/badge-check.svg b/src/static/icons/solid/badge-check.svg similarity index 100% rename from client/src/static/icons/solid/badge-check.svg rename to src/static/icons/solid/badge-check.svg diff --git a/client/src/static/icons/solid/badge-dollar.svg b/src/static/icons/solid/badge-dollar.svg similarity index 100% rename from client/src/static/icons/solid/badge-dollar.svg rename to src/static/icons/solid/badge-dollar.svg diff --git a/client/src/static/icons/solid/badge-percent.svg b/src/static/icons/solid/badge-percent.svg similarity index 100% rename from client/src/static/icons/solid/badge-percent.svg rename to src/static/icons/solid/badge-percent.svg diff --git a/client/src/static/icons/solid/badge-sheriff.svg b/src/static/icons/solid/badge-sheriff.svg similarity index 100% rename from client/src/static/icons/solid/badge-sheriff.svg rename to src/static/icons/solid/badge-sheriff.svg diff --git a/client/src/static/icons/solid/badge.svg b/src/static/icons/solid/badge.svg similarity index 100% rename from client/src/static/icons/solid/badge.svg rename to src/static/icons/solid/badge.svg diff --git a/client/src/static/icons/solid/badger-honey.svg b/src/static/icons/solid/badger-honey.svg similarity index 100% rename from client/src/static/icons/solid/badger-honey.svg rename to src/static/icons/solid/badger-honey.svg diff --git a/client/src/static/icons/solid/bags-shopping.svg b/src/static/icons/solid/bags-shopping.svg similarity index 100% rename from client/src/static/icons/solid/bags-shopping.svg rename to src/static/icons/solid/bags-shopping.svg diff --git a/client/src/static/icons/solid/bahai.svg b/src/static/icons/solid/bahai.svg similarity index 100% rename from client/src/static/icons/solid/bahai.svg rename to src/static/icons/solid/bahai.svg diff --git a/client/src/static/icons/solid/balance-scale-left.svg b/src/static/icons/solid/balance-scale-left.svg similarity index 100% rename from client/src/static/icons/solid/balance-scale-left.svg rename to src/static/icons/solid/balance-scale-left.svg diff --git a/client/src/static/icons/solid/balance-scale-right.svg b/src/static/icons/solid/balance-scale-right.svg similarity index 100% rename from client/src/static/icons/solid/balance-scale-right.svg rename to src/static/icons/solid/balance-scale-right.svg diff --git a/client/src/static/icons/solid/balance-scale.svg b/src/static/icons/solid/balance-scale.svg similarity index 100% rename from client/src/static/icons/solid/balance-scale.svg rename to src/static/icons/solid/balance-scale.svg diff --git a/client/src/static/icons/solid/ball-pile.svg b/src/static/icons/solid/ball-pile.svg similarity index 100% rename from client/src/static/icons/solid/ball-pile.svg rename to src/static/icons/solid/ball-pile.svg diff --git a/client/src/static/icons/solid/ballot-check.svg b/src/static/icons/solid/ballot-check.svg similarity index 100% rename from client/src/static/icons/solid/ballot-check.svg rename to src/static/icons/solid/ballot-check.svg diff --git a/client/src/static/icons/solid/ballot.svg b/src/static/icons/solid/ballot.svg similarity index 100% rename from client/src/static/icons/solid/ballot.svg rename to src/static/icons/solid/ballot.svg diff --git a/client/src/static/icons/solid/ban.svg b/src/static/icons/solid/ban.svg similarity index 100% rename from client/src/static/icons/solid/ban.svg rename to src/static/icons/solid/ban.svg diff --git a/client/src/static/icons/solid/band-aid.svg b/src/static/icons/solid/band-aid.svg similarity index 100% rename from client/src/static/icons/solid/band-aid.svg rename to src/static/icons/solid/band-aid.svg diff --git a/client/src/static/icons/solid/banjo.svg b/src/static/icons/solid/banjo.svg similarity index 100% rename from client/src/static/icons/solid/banjo.svg rename to src/static/icons/solid/banjo.svg diff --git a/client/src/static/icons/solid/barcode-alt.svg b/src/static/icons/solid/barcode-alt.svg similarity index 100% rename from client/src/static/icons/solid/barcode-alt.svg rename to src/static/icons/solid/barcode-alt.svg diff --git a/client/src/static/icons/solid/barcode-read.svg b/src/static/icons/solid/barcode-read.svg similarity index 100% rename from client/src/static/icons/solid/barcode-read.svg rename to src/static/icons/solid/barcode-read.svg diff --git a/client/src/static/icons/solid/barcode-scan.svg b/src/static/icons/solid/barcode-scan.svg similarity index 100% rename from client/src/static/icons/solid/barcode-scan.svg rename to src/static/icons/solid/barcode-scan.svg diff --git a/client/src/static/icons/solid/barcode.svg b/src/static/icons/solid/barcode.svg similarity index 100% rename from client/src/static/icons/solid/barcode.svg rename to src/static/icons/solid/barcode.svg diff --git a/client/src/static/icons/solid/bars.svg b/src/static/icons/solid/bars.svg similarity index 100% rename from client/src/static/icons/solid/bars.svg rename to src/static/icons/solid/bars.svg diff --git a/client/src/static/icons/solid/baseball-ball.svg b/src/static/icons/solid/baseball-ball.svg similarity index 100% rename from client/src/static/icons/solid/baseball-ball.svg rename to src/static/icons/solid/baseball-ball.svg diff --git a/client/src/static/icons/solid/baseball.svg b/src/static/icons/solid/baseball.svg similarity index 100% rename from client/src/static/icons/solid/baseball.svg rename to src/static/icons/solid/baseball.svg diff --git a/client/src/static/icons/solid/basketball-ball.svg b/src/static/icons/solid/basketball-ball.svg similarity index 100% rename from client/src/static/icons/solid/basketball-ball.svg rename to src/static/icons/solid/basketball-ball.svg diff --git a/client/src/static/icons/solid/basketball-hoop.svg b/src/static/icons/solid/basketball-hoop.svg similarity index 100% rename from client/src/static/icons/solid/basketball-hoop.svg rename to src/static/icons/solid/basketball-hoop.svg diff --git a/client/src/static/icons/solid/bat.svg b/src/static/icons/solid/bat.svg similarity index 100% rename from client/src/static/icons/solid/bat.svg rename to src/static/icons/solid/bat.svg diff --git a/client/src/static/icons/solid/bath.svg b/src/static/icons/solid/bath.svg similarity index 100% rename from client/src/static/icons/solid/bath.svg rename to src/static/icons/solid/bath.svg diff --git a/client/src/static/icons/solid/battery-bolt.svg b/src/static/icons/solid/battery-bolt.svg similarity index 100% rename from client/src/static/icons/solid/battery-bolt.svg rename to src/static/icons/solid/battery-bolt.svg diff --git a/client/src/static/icons/solid/battery-empty.svg b/src/static/icons/solid/battery-empty.svg similarity index 100% rename from client/src/static/icons/solid/battery-empty.svg rename to src/static/icons/solid/battery-empty.svg diff --git a/client/src/static/icons/solid/battery-full.svg b/src/static/icons/solid/battery-full.svg similarity index 100% rename from client/src/static/icons/solid/battery-full.svg rename to src/static/icons/solid/battery-full.svg diff --git a/client/src/static/icons/solid/battery-half.svg b/src/static/icons/solid/battery-half.svg similarity index 100% rename from client/src/static/icons/solid/battery-half.svg rename to src/static/icons/solid/battery-half.svg diff --git a/client/src/static/icons/solid/battery-quarter.svg b/src/static/icons/solid/battery-quarter.svg similarity index 100% rename from client/src/static/icons/solid/battery-quarter.svg rename to src/static/icons/solid/battery-quarter.svg diff --git a/client/src/static/icons/solid/battery-slash.svg b/src/static/icons/solid/battery-slash.svg similarity index 100% rename from client/src/static/icons/solid/battery-slash.svg rename to src/static/icons/solid/battery-slash.svg diff --git a/client/src/static/icons/solid/battery-three-quarters.svg b/src/static/icons/solid/battery-three-quarters.svg similarity index 100% rename from client/src/static/icons/solid/battery-three-quarters.svg rename to src/static/icons/solid/battery-three-quarters.svg diff --git a/client/src/static/icons/solid/bed-alt.svg b/src/static/icons/solid/bed-alt.svg similarity index 100% rename from client/src/static/icons/solid/bed-alt.svg rename to src/static/icons/solid/bed-alt.svg diff --git a/client/src/static/icons/solid/bed-bunk.svg b/src/static/icons/solid/bed-bunk.svg similarity index 100% rename from client/src/static/icons/solid/bed-bunk.svg rename to src/static/icons/solid/bed-bunk.svg diff --git a/client/src/static/icons/solid/bed-empty.svg b/src/static/icons/solid/bed-empty.svg similarity index 100% rename from client/src/static/icons/solid/bed-empty.svg rename to src/static/icons/solid/bed-empty.svg diff --git a/client/src/static/icons/solid/bed.svg b/src/static/icons/solid/bed.svg similarity index 100% rename from client/src/static/icons/solid/bed.svg rename to src/static/icons/solid/bed.svg diff --git a/client/src/static/icons/solid/beer.svg b/src/static/icons/solid/beer.svg similarity index 100% rename from client/src/static/icons/solid/beer.svg rename to src/static/icons/solid/beer.svg diff --git a/client/src/static/icons/solid/bell-exclamation.svg b/src/static/icons/solid/bell-exclamation.svg similarity index 100% rename from client/src/static/icons/solid/bell-exclamation.svg rename to src/static/icons/solid/bell-exclamation.svg diff --git a/client/src/static/icons/solid/bell-on.svg b/src/static/icons/solid/bell-on.svg similarity index 100% rename from client/src/static/icons/solid/bell-on.svg rename to src/static/icons/solid/bell-on.svg diff --git a/client/src/static/icons/solid/bell-plus.svg b/src/static/icons/solid/bell-plus.svg similarity index 100% rename from client/src/static/icons/solid/bell-plus.svg rename to src/static/icons/solid/bell-plus.svg diff --git a/client/src/static/icons/solid/bell-school-slash.svg b/src/static/icons/solid/bell-school-slash.svg similarity index 100% rename from client/src/static/icons/solid/bell-school-slash.svg rename to src/static/icons/solid/bell-school-slash.svg diff --git a/client/src/static/icons/solid/bell-school.svg b/src/static/icons/solid/bell-school.svg similarity index 100% rename from client/src/static/icons/solid/bell-school.svg rename to src/static/icons/solid/bell-school.svg diff --git a/client/src/static/icons/solid/bell-slash.svg b/src/static/icons/solid/bell-slash.svg similarity index 100% rename from client/src/static/icons/solid/bell-slash.svg rename to src/static/icons/solid/bell-slash.svg diff --git a/client/src/static/icons/solid/bell.svg b/src/static/icons/solid/bell.svg similarity index 100% rename from client/src/static/icons/solid/bell.svg rename to src/static/icons/solid/bell.svg diff --git a/client/src/static/icons/solid/bells.svg b/src/static/icons/solid/bells.svg similarity index 100% rename from client/src/static/icons/solid/bells.svg rename to src/static/icons/solid/bells.svg diff --git a/client/src/static/icons/solid/betamax.svg b/src/static/icons/solid/betamax.svg similarity index 100% rename from client/src/static/icons/solid/betamax.svg rename to src/static/icons/solid/betamax.svg diff --git a/client/src/static/icons/solid/bezier-curve.svg b/src/static/icons/solid/bezier-curve.svg similarity index 100% rename from client/src/static/icons/solid/bezier-curve.svg rename to src/static/icons/solid/bezier-curve.svg diff --git a/client/src/static/icons/solid/bible.svg b/src/static/icons/solid/bible.svg similarity index 100% rename from client/src/static/icons/solid/bible.svg rename to src/static/icons/solid/bible.svg diff --git a/client/src/static/icons/solid/bicycle.svg b/src/static/icons/solid/bicycle.svg similarity index 100% rename from client/src/static/icons/solid/bicycle.svg rename to src/static/icons/solid/bicycle.svg diff --git a/client/src/static/icons/solid/biking-mountain.svg b/src/static/icons/solid/biking-mountain.svg similarity index 100% rename from client/src/static/icons/solid/biking-mountain.svg rename to src/static/icons/solid/biking-mountain.svg diff --git a/client/src/static/icons/solid/biking.svg b/src/static/icons/solid/biking.svg similarity index 100% rename from client/src/static/icons/solid/biking.svg rename to src/static/icons/solid/biking.svg diff --git a/client/src/static/icons/solid/binoculars.svg b/src/static/icons/solid/binoculars.svg similarity index 100% rename from client/src/static/icons/solid/binoculars.svg rename to src/static/icons/solid/binoculars.svg diff --git a/client/src/static/icons/solid/biohazard.svg b/src/static/icons/solid/biohazard.svg similarity index 100% rename from client/src/static/icons/solid/biohazard.svg rename to src/static/icons/solid/biohazard.svg diff --git a/client/src/static/icons/solid/birthday-cake.svg b/src/static/icons/solid/birthday-cake.svg similarity index 100% rename from client/src/static/icons/solid/birthday-cake.svg rename to src/static/icons/solid/birthday-cake.svg diff --git a/client/src/static/icons/solid/blanket.svg b/src/static/icons/solid/blanket.svg similarity index 100% rename from client/src/static/icons/solid/blanket.svg rename to src/static/icons/solid/blanket.svg diff --git a/client/src/static/icons/solid/blender-phone.svg b/src/static/icons/solid/blender-phone.svg similarity index 100% rename from client/src/static/icons/solid/blender-phone.svg rename to src/static/icons/solid/blender-phone.svg diff --git a/client/src/static/icons/solid/blender.svg b/src/static/icons/solid/blender.svg similarity index 100% rename from client/src/static/icons/solid/blender.svg rename to src/static/icons/solid/blender.svg diff --git a/client/src/static/icons/solid/blind.svg b/src/static/icons/solid/blind.svg similarity index 100% rename from client/src/static/icons/solid/blind.svg rename to src/static/icons/solid/blind.svg diff --git a/client/src/static/icons/solid/blinds-open.svg b/src/static/icons/solid/blinds-open.svg similarity index 100% rename from client/src/static/icons/solid/blinds-open.svg rename to src/static/icons/solid/blinds-open.svg diff --git a/client/src/static/icons/solid/blinds-raised.svg b/src/static/icons/solid/blinds-raised.svg similarity index 100% rename from client/src/static/icons/solid/blinds-raised.svg rename to src/static/icons/solid/blinds-raised.svg diff --git a/client/src/static/icons/solid/blinds.svg b/src/static/icons/solid/blinds.svg similarity index 100% rename from client/src/static/icons/solid/blinds.svg rename to src/static/icons/solid/blinds.svg diff --git a/client/src/static/icons/solid/blog.svg b/src/static/icons/solid/blog.svg similarity index 100% rename from client/src/static/icons/solid/blog.svg rename to src/static/icons/solid/blog.svg diff --git a/client/src/static/icons/solid/bold.svg b/src/static/icons/solid/bold.svg similarity index 100% rename from client/src/static/icons/solid/bold.svg rename to src/static/icons/solid/bold.svg diff --git a/client/src/static/icons/solid/bolt.svg b/src/static/icons/solid/bolt.svg similarity index 100% rename from client/src/static/icons/solid/bolt.svg rename to src/static/icons/solid/bolt.svg diff --git a/client/src/static/icons/solid/bomb.svg b/src/static/icons/solid/bomb.svg similarity index 100% rename from client/src/static/icons/solid/bomb.svg rename to src/static/icons/solid/bomb.svg diff --git a/client/src/static/icons/solid/bone-break.svg b/src/static/icons/solid/bone-break.svg similarity index 100% rename from client/src/static/icons/solid/bone-break.svg rename to src/static/icons/solid/bone-break.svg diff --git a/client/src/static/icons/solid/bone.svg b/src/static/icons/solid/bone.svg similarity index 100% rename from client/src/static/icons/solid/bone.svg rename to src/static/icons/solid/bone.svg diff --git a/client/src/static/icons/solid/bong.svg b/src/static/icons/solid/bong.svg similarity index 100% rename from client/src/static/icons/solid/bong.svg rename to src/static/icons/solid/bong.svg diff --git a/client/src/static/icons/solid/book-alt.svg b/src/static/icons/solid/book-alt.svg similarity index 100% rename from client/src/static/icons/solid/book-alt.svg rename to src/static/icons/solid/book-alt.svg diff --git a/client/src/static/icons/solid/book-dead.svg b/src/static/icons/solid/book-dead.svg similarity index 100% rename from client/src/static/icons/solid/book-dead.svg rename to src/static/icons/solid/book-dead.svg diff --git a/client/src/static/icons/solid/book-heart.svg b/src/static/icons/solid/book-heart.svg similarity index 100% rename from client/src/static/icons/solid/book-heart.svg rename to src/static/icons/solid/book-heart.svg diff --git a/client/src/static/icons/solid/book-medical.svg b/src/static/icons/solid/book-medical.svg similarity index 100% rename from client/src/static/icons/solid/book-medical.svg rename to src/static/icons/solid/book-medical.svg diff --git a/client/src/static/icons/solid/book-open.svg b/src/static/icons/solid/book-open.svg similarity index 100% rename from client/src/static/icons/solid/book-open.svg rename to src/static/icons/solid/book-open.svg diff --git a/client/src/static/icons/solid/book-reader.svg b/src/static/icons/solid/book-reader.svg similarity index 100% rename from client/src/static/icons/solid/book-reader.svg rename to src/static/icons/solid/book-reader.svg diff --git a/client/src/static/icons/solid/book-spells.svg b/src/static/icons/solid/book-spells.svg similarity index 100% rename from client/src/static/icons/solid/book-spells.svg rename to src/static/icons/solid/book-spells.svg diff --git a/client/src/static/icons/solid/book-user.svg b/src/static/icons/solid/book-user.svg similarity index 100% rename from client/src/static/icons/solid/book-user.svg rename to src/static/icons/solid/book-user.svg diff --git a/client/src/static/icons/solid/book.svg b/src/static/icons/solid/book.svg similarity index 100% rename from client/src/static/icons/solid/book.svg rename to src/static/icons/solid/book.svg diff --git a/client/src/static/icons/solid/bookmark.svg b/src/static/icons/solid/bookmark.svg similarity index 100% rename from client/src/static/icons/solid/bookmark.svg rename to src/static/icons/solid/bookmark.svg diff --git a/client/src/static/icons/solid/books-medical.svg b/src/static/icons/solid/books-medical.svg similarity index 100% rename from client/src/static/icons/solid/books-medical.svg rename to src/static/icons/solid/books-medical.svg diff --git a/client/src/static/icons/solid/books.svg b/src/static/icons/solid/books.svg similarity index 100% rename from client/src/static/icons/solid/books.svg rename to src/static/icons/solid/books.svg diff --git a/client/src/static/icons/solid/boombox.svg b/src/static/icons/solid/boombox.svg similarity index 100% rename from client/src/static/icons/solid/boombox.svg rename to src/static/icons/solid/boombox.svg diff --git a/client/src/static/icons/solid/boot.svg b/src/static/icons/solid/boot.svg similarity index 100% rename from client/src/static/icons/solid/boot.svg rename to src/static/icons/solid/boot.svg diff --git a/client/src/static/icons/solid/booth-curtain.svg b/src/static/icons/solid/booth-curtain.svg similarity index 100% rename from client/src/static/icons/solid/booth-curtain.svg rename to src/static/icons/solid/booth-curtain.svg diff --git a/client/src/static/icons/solid/border-all.svg b/src/static/icons/solid/border-all.svg similarity index 100% rename from client/src/static/icons/solid/border-all.svg rename to src/static/icons/solid/border-all.svg diff --git a/client/src/static/icons/solid/border-bottom.svg b/src/static/icons/solid/border-bottom.svg similarity index 100% rename from client/src/static/icons/solid/border-bottom.svg rename to src/static/icons/solid/border-bottom.svg diff --git a/client/src/static/icons/solid/border-center-h.svg b/src/static/icons/solid/border-center-h.svg similarity index 100% rename from client/src/static/icons/solid/border-center-h.svg rename to src/static/icons/solid/border-center-h.svg diff --git a/client/src/static/icons/solid/border-center-v.svg b/src/static/icons/solid/border-center-v.svg similarity index 100% rename from client/src/static/icons/solid/border-center-v.svg rename to src/static/icons/solid/border-center-v.svg diff --git a/client/src/static/icons/solid/border-inner.svg b/src/static/icons/solid/border-inner.svg similarity index 100% rename from client/src/static/icons/solid/border-inner.svg rename to src/static/icons/solid/border-inner.svg diff --git a/client/src/static/icons/solid/border-left.svg b/src/static/icons/solid/border-left.svg similarity index 100% rename from client/src/static/icons/solid/border-left.svg rename to src/static/icons/solid/border-left.svg diff --git a/client/src/static/icons/solid/border-none.svg b/src/static/icons/solid/border-none.svg similarity index 100% rename from client/src/static/icons/solid/border-none.svg rename to src/static/icons/solid/border-none.svg diff --git a/client/src/static/icons/solid/border-outer.svg b/src/static/icons/solid/border-outer.svg similarity index 100% rename from client/src/static/icons/solid/border-outer.svg rename to src/static/icons/solid/border-outer.svg diff --git a/client/src/static/icons/solid/border-right.svg b/src/static/icons/solid/border-right.svg similarity index 100% rename from client/src/static/icons/solid/border-right.svg rename to src/static/icons/solid/border-right.svg diff --git a/client/src/static/icons/solid/border-style-alt.svg b/src/static/icons/solid/border-style-alt.svg similarity index 100% rename from client/src/static/icons/solid/border-style-alt.svg rename to src/static/icons/solid/border-style-alt.svg diff --git a/client/src/static/icons/solid/border-style.svg b/src/static/icons/solid/border-style.svg similarity index 100% rename from client/src/static/icons/solid/border-style.svg rename to src/static/icons/solid/border-style.svg diff --git a/client/src/static/icons/solid/border-top.svg b/src/static/icons/solid/border-top.svg similarity index 100% rename from client/src/static/icons/solid/border-top.svg rename to src/static/icons/solid/border-top.svg diff --git a/client/src/static/icons/solid/bow-arrow.svg b/src/static/icons/solid/bow-arrow.svg similarity index 100% rename from client/src/static/icons/solid/bow-arrow.svg rename to src/static/icons/solid/bow-arrow.svg diff --git a/client/src/static/icons/solid/bowling-ball.svg b/src/static/icons/solid/bowling-ball.svg similarity index 100% rename from client/src/static/icons/solid/bowling-ball.svg rename to src/static/icons/solid/bowling-ball.svg diff --git a/client/src/static/icons/solid/bowling-pins.svg b/src/static/icons/solid/bowling-pins.svg similarity index 100% rename from client/src/static/icons/solid/bowling-pins.svg rename to src/static/icons/solid/bowling-pins.svg diff --git a/client/src/static/icons/solid/box-alt.svg b/src/static/icons/solid/box-alt.svg similarity index 100% rename from client/src/static/icons/solid/box-alt.svg rename to src/static/icons/solid/box-alt.svg diff --git a/client/src/static/icons/solid/box-ballot.svg b/src/static/icons/solid/box-ballot.svg similarity index 100% rename from client/src/static/icons/solid/box-ballot.svg rename to src/static/icons/solid/box-ballot.svg diff --git a/client/src/static/icons/solid/box-check.svg b/src/static/icons/solid/box-check.svg similarity index 100% rename from client/src/static/icons/solid/box-check.svg rename to src/static/icons/solid/box-check.svg diff --git a/client/src/static/icons/solid/box-fragile.svg b/src/static/icons/solid/box-fragile.svg similarity index 100% rename from client/src/static/icons/solid/box-fragile.svg rename to src/static/icons/solid/box-fragile.svg diff --git a/client/src/static/icons/solid/box-full.svg b/src/static/icons/solid/box-full.svg similarity index 100% rename from client/src/static/icons/solid/box-full.svg rename to src/static/icons/solid/box-full.svg diff --git a/client/src/static/icons/solid/box-heart.svg b/src/static/icons/solid/box-heart.svg similarity index 100% rename from client/src/static/icons/solid/box-heart.svg rename to src/static/icons/solid/box-heart.svg diff --git a/client/src/static/icons/solid/box-open.svg b/src/static/icons/solid/box-open.svg similarity index 100% rename from client/src/static/icons/solid/box-open.svg rename to src/static/icons/solid/box-open.svg diff --git a/client/src/static/icons/solid/box-up.svg b/src/static/icons/solid/box-up.svg similarity index 100% rename from client/src/static/icons/solid/box-up.svg rename to src/static/icons/solid/box-up.svg diff --git a/client/src/static/icons/solid/box-usd.svg b/src/static/icons/solid/box-usd.svg similarity index 100% rename from client/src/static/icons/solid/box-usd.svg rename to src/static/icons/solid/box-usd.svg diff --git a/client/src/static/icons/solid/box.svg b/src/static/icons/solid/box.svg similarity index 100% rename from client/src/static/icons/solid/box.svg rename to src/static/icons/solid/box.svg diff --git a/client/src/static/icons/solid/boxes-alt.svg b/src/static/icons/solid/boxes-alt.svg similarity index 100% rename from client/src/static/icons/solid/boxes-alt.svg rename to src/static/icons/solid/boxes-alt.svg diff --git a/client/src/static/icons/solid/boxes.svg b/src/static/icons/solid/boxes.svg similarity index 100% rename from client/src/static/icons/solid/boxes.svg rename to src/static/icons/solid/boxes.svg diff --git a/client/src/static/icons/solid/boxing-glove.svg b/src/static/icons/solid/boxing-glove.svg similarity index 100% rename from client/src/static/icons/solid/boxing-glove.svg rename to src/static/icons/solid/boxing-glove.svg diff --git a/client/src/static/icons/solid/brackets-curly.svg b/src/static/icons/solid/brackets-curly.svg similarity index 100% rename from client/src/static/icons/solid/brackets-curly.svg rename to src/static/icons/solid/brackets-curly.svg diff --git a/client/src/static/icons/solid/brackets.svg b/src/static/icons/solid/brackets.svg similarity index 100% rename from client/src/static/icons/solid/brackets.svg rename to src/static/icons/solid/brackets.svg diff --git a/client/src/static/icons/solid/braille.svg b/src/static/icons/solid/braille.svg similarity index 100% rename from client/src/static/icons/solid/braille.svg rename to src/static/icons/solid/braille.svg diff --git a/client/src/static/icons/solid/brain.svg b/src/static/icons/solid/brain.svg similarity index 100% rename from client/src/static/icons/solid/brain.svg rename to src/static/icons/solid/brain.svg diff --git a/client/src/static/icons/solid/bread-loaf.svg b/src/static/icons/solid/bread-loaf.svg similarity index 100% rename from client/src/static/icons/solid/bread-loaf.svg rename to src/static/icons/solid/bread-loaf.svg diff --git a/client/src/static/icons/solid/bread-slice.svg b/src/static/icons/solid/bread-slice.svg similarity index 100% rename from client/src/static/icons/solid/bread-slice.svg rename to src/static/icons/solid/bread-slice.svg diff --git a/client/src/static/icons/solid/briefcase-medical.svg b/src/static/icons/solid/briefcase-medical.svg similarity index 100% rename from client/src/static/icons/solid/briefcase-medical.svg rename to src/static/icons/solid/briefcase-medical.svg diff --git a/client/src/static/icons/solid/briefcase.svg b/src/static/icons/solid/briefcase.svg similarity index 100% rename from client/src/static/icons/solid/briefcase.svg rename to src/static/icons/solid/briefcase.svg diff --git a/client/src/static/icons/solid/bring-forward.svg b/src/static/icons/solid/bring-forward.svg similarity index 100% rename from client/src/static/icons/solid/bring-forward.svg rename to src/static/icons/solid/bring-forward.svg diff --git a/client/src/static/icons/solid/bring-front.svg b/src/static/icons/solid/bring-front.svg similarity index 100% rename from client/src/static/icons/solid/bring-front.svg rename to src/static/icons/solid/bring-front.svg diff --git a/client/src/static/icons/solid/broadcast-tower.svg b/src/static/icons/solid/broadcast-tower.svg similarity index 100% rename from client/src/static/icons/solid/broadcast-tower.svg rename to src/static/icons/solid/broadcast-tower.svg diff --git a/client/src/static/icons/solid/broom.svg b/src/static/icons/solid/broom.svg similarity index 100% rename from client/src/static/icons/solid/broom.svg rename to src/static/icons/solid/broom.svg diff --git a/client/src/static/icons/solid/browser.svg b/src/static/icons/solid/browser.svg similarity index 100% rename from client/src/static/icons/solid/browser.svg rename to src/static/icons/solid/browser.svg diff --git a/client/src/static/icons/solid/brush.svg b/src/static/icons/solid/brush.svg similarity index 100% rename from client/src/static/icons/solid/brush.svg rename to src/static/icons/solid/brush.svg diff --git a/client/src/static/icons/solid/bug.svg b/src/static/icons/solid/bug.svg similarity index 100% rename from client/src/static/icons/solid/bug.svg rename to src/static/icons/solid/bug.svg diff --git a/client/src/static/icons/solid/building.svg b/src/static/icons/solid/building.svg similarity index 100% rename from client/src/static/icons/solid/building.svg rename to src/static/icons/solid/building.svg diff --git a/client/src/static/icons/solid/bullhorn.svg b/src/static/icons/solid/bullhorn.svg similarity index 100% rename from client/src/static/icons/solid/bullhorn.svg rename to src/static/icons/solid/bullhorn.svg diff --git a/client/src/static/icons/solid/bullseye-arrow.svg b/src/static/icons/solid/bullseye-arrow.svg similarity index 100% rename from client/src/static/icons/solid/bullseye-arrow.svg rename to src/static/icons/solid/bullseye-arrow.svg diff --git a/client/src/static/icons/solid/bullseye-pointer.svg b/src/static/icons/solid/bullseye-pointer.svg similarity index 100% rename from client/src/static/icons/solid/bullseye-pointer.svg rename to src/static/icons/solid/bullseye-pointer.svg diff --git a/client/src/static/icons/solid/bullseye.svg b/src/static/icons/solid/bullseye.svg similarity index 100% rename from client/src/static/icons/solid/bullseye.svg rename to src/static/icons/solid/bullseye.svg diff --git a/client/src/static/icons/solid/burger-soda.svg b/src/static/icons/solid/burger-soda.svg similarity index 100% rename from client/src/static/icons/solid/burger-soda.svg rename to src/static/icons/solid/burger-soda.svg diff --git a/client/src/static/icons/solid/burn.svg b/src/static/icons/solid/burn.svg similarity index 100% rename from client/src/static/icons/solid/burn.svg rename to src/static/icons/solid/burn.svg diff --git a/client/src/static/icons/solid/burrito.svg b/src/static/icons/solid/burrito.svg similarity index 100% rename from client/src/static/icons/solid/burrito.svg rename to src/static/icons/solid/burrito.svg diff --git a/client/src/static/icons/solid/bus-alt.svg b/src/static/icons/solid/bus-alt.svg similarity index 100% rename from client/src/static/icons/solid/bus-alt.svg rename to src/static/icons/solid/bus-alt.svg diff --git a/client/src/static/icons/solid/bus-school.svg b/src/static/icons/solid/bus-school.svg similarity index 100% rename from client/src/static/icons/solid/bus-school.svg rename to src/static/icons/solid/bus-school.svg diff --git a/client/src/static/icons/solid/bus.svg b/src/static/icons/solid/bus.svg similarity index 100% rename from client/src/static/icons/solid/bus.svg rename to src/static/icons/solid/bus.svg diff --git a/client/src/static/icons/solid/business-time.svg b/src/static/icons/solid/business-time.svg similarity index 100% rename from client/src/static/icons/solid/business-time.svg rename to src/static/icons/solid/business-time.svg diff --git a/client/src/static/icons/solid/cabinet-filing.svg b/src/static/icons/solid/cabinet-filing.svg similarity index 100% rename from client/src/static/icons/solid/cabinet-filing.svg rename to src/static/icons/solid/cabinet-filing.svg diff --git a/client/src/static/icons/solid/cactus.svg b/src/static/icons/solid/cactus.svg similarity index 100% rename from client/src/static/icons/solid/cactus.svg rename to src/static/icons/solid/cactus.svg diff --git a/client/src/static/icons/solid/calculator-alt.svg b/src/static/icons/solid/calculator-alt.svg similarity index 100% rename from client/src/static/icons/solid/calculator-alt.svg rename to src/static/icons/solid/calculator-alt.svg diff --git a/client/src/static/icons/solid/calculator.svg b/src/static/icons/solid/calculator.svg similarity index 100% rename from client/src/static/icons/solid/calculator.svg rename to src/static/icons/solid/calculator.svg diff --git a/client/src/static/icons/solid/calendar-alt.svg b/src/static/icons/solid/calendar-alt.svg similarity index 100% rename from client/src/static/icons/solid/calendar-alt.svg rename to src/static/icons/solid/calendar-alt.svg diff --git a/client/src/static/icons/solid/calendar-check.svg b/src/static/icons/solid/calendar-check.svg similarity index 100% rename from client/src/static/icons/solid/calendar-check.svg rename to src/static/icons/solid/calendar-check.svg diff --git a/client/src/static/icons/solid/calendar-day.svg b/src/static/icons/solid/calendar-day.svg similarity index 100% rename from client/src/static/icons/solid/calendar-day.svg rename to src/static/icons/solid/calendar-day.svg diff --git a/client/src/static/icons/solid/calendar-edit.svg b/src/static/icons/solid/calendar-edit.svg similarity index 100% rename from client/src/static/icons/solid/calendar-edit.svg rename to src/static/icons/solid/calendar-edit.svg diff --git a/client/src/static/icons/solid/calendar-exclamation.svg b/src/static/icons/solid/calendar-exclamation.svg similarity index 100% rename from client/src/static/icons/solid/calendar-exclamation.svg rename to src/static/icons/solid/calendar-exclamation.svg diff --git a/client/src/static/icons/solid/calendar-minus.svg b/src/static/icons/solid/calendar-minus.svg similarity index 100% rename from client/src/static/icons/solid/calendar-minus.svg rename to src/static/icons/solid/calendar-minus.svg diff --git a/client/src/static/icons/solid/calendar-plus.svg b/src/static/icons/solid/calendar-plus.svg similarity index 100% rename from client/src/static/icons/solid/calendar-plus.svg rename to src/static/icons/solid/calendar-plus.svg diff --git a/client/src/static/icons/solid/calendar-star.svg b/src/static/icons/solid/calendar-star.svg similarity index 100% rename from client/src/static/icons/solid/calendar-star.svg rename to src/static/icons/solid/calendar-star.svg diff --git a/client/src/static/icons/solid/calendar-times.svg b/src/static/icons/solid/calendar-times.svg similarity index 100% rename from client/src/static/icons/solid/calendar-times.svg rename to src/static/icons/solid/calendar-times.svg diff --git a/client/src/static/icons/solid/calendar-week.svg b/src/static/icons/solid/calendar-week.svg similarity index 100% rename from client/src/static/icons/solid/calendar-week.svg rename to src/static/icons/solid/calendar-week.svg diff --git a/client/src/static/icons/solid/calendar.svg b/src/static/icons/solid/calendar.svg similarity index 100% rename from client/src/static/icons/solid/calendar.svg rename to src/static/icons/solid/calendar.svg diff --git a/client/src/static/icons/solid/camcorder.svg b/src/static/icons/solid/camcorder.svg similarity index 100% rename from client/src/static/icons/solid/camcorder.svg rename to src/static/icons/solid/camcorder.svg diff --git a/client/src/static/icons/solid/camera-alt.svg b/src/static/icons/solid/camera-alt.svg similarity index 100% rename from client/src/static/icons/solid/camera-alt.svg rename to src/static/icons/solid/camera-alt.svg diff --git a/client/src/static/icons/solid/camera-home.svg b/src/static/icons/solid/camera-home.svg similarity index 100% rename from client/src/static/icons/solid/camera-home.svg rename to src/static/icons/solid/camera-home.svg diff --git a/client/src/static/icons/solid/camera-movie.svg b/src/static/icons/solid/camera-movie.svg similarity index 100% rename from client/src/static/icons/solid/camera-movie.svg rename to src/static/icons/solid/camera-movie.svg diff --git a/client/src/static/icons/solid/camera-polaroid.svg b/src/static/icons/solid/camera-polaroid.svg similarity index 100% rename from client/src/static/icons/solid/camera-polaroid.svg rename to src/static/icons/solid/camera-polaroid.svg diff --git a/client/src/static/icons/solid/camera-retro.svg b/src/static/icons/solid/camera-retro.svg similarity index 100% rename from client/src/static/icons/solid/camera-retro.svg rename to src/static/icons/solid/camera-retro.svg diff --git a/client/src/static/icons/solid/camera.svg b/src/static/icons/solid/camera.svg similarity index 100% rename from client/src/static/icons/solid/camera.svg rename to src/static/icons/solid/camera.svg diff --git a/client/src/static/icons/solid/campfire.svg b/src/static/icons/solid/campfire.svg similarity index 100% rename from client/src/static/icons/solid/campfire.svg rename to src/static/icons/solid/campfire.svg diff --git a/client/src/static/icons/solid/campground.svg b/src/static/icons/solid/campground.svg similarity index 100% rename from client/src/static/icons/solid/campground.svg rename to src/static/icons/solid/campground.svg diff --git a/client/src/static/icons/solid/candle-holder.svg b/src/static/icons/solid/candle-holder.svg similarity index 100% rename from client/src/static/icons/solid/candle-holder.svg rename to src/static/icons/solid/candle-holder.svg diff --git a/client/src/static/icons/solid/candy-cane.svg b/src/static/icons/solid/candy-cane.svg similarity index 100% rename from client/src/static/icons/solid/candy-cane.svg rename to src/static/icons/solid/candy-cane.svg diff --git a/client/src/static/icons/solid/candy-corn.svg b/src/static/icons/solid/candy-corn.svg similarity index 100% rename from client/src/static/icons/solid/candy-corn.svg rename to src/static/icons/solid/candy-corn.svg diff --git a/client/src/static/icons/solid/cannabis.svg b/src/static/icons/solid/cannabis.svg similarity index 100% rename from client/src/static/icons/solid/cannabis.svg rename to src/static/icons/solid/cannabis.svg diff --git a/client/src/static/icons/solid/capsules.svg b/src/static/icons/solid/capsules.svg similarity index 100% rename from client/src/static/icons/solid/capsules.svg rename to src/static/icons/solid/capsules.svg diff --git a/client/src/static/icons/solid/car-alt.svg b/src/static/icons/solid/car-alt.svg similarity index 100% rename from client/src/static/icons/solid/car-alt.svg rename to src/static/icons/solid/car-alt.svg diff --git a/client/src/static/icons/solid/car-battery.svg b/src/static/icons/solid/car-battery.svg similarity index 100% rename from client/src/static/icons/solid/car-battery.svg rename to src/static/icons/solid/car-battery.svg diff --git a/client/src/static/icons/solid/car-building.svg b/src/static/icons/solid/car-building.svg similarity index 100% rename from client/src/static/icons/solid/car-building.svg rename to src/static/icons/solid/car-building.svg diff --git a/client/src/static/icons/solid/car-bump.svg b/src/static/icons/solid/car-bump.svg similarity index 100% rename from client/src/static/icons/solid/car-bump.svg rename to src/static/icons/solid/car-bump.svg diff --git a/client/src/static/icons/solid/car-bus.svg b/src/static/icons/solid/car-bus.svg similarity index 100% rename from client/src/static/icons/solid/car-bus.svg rename to src/static/icons/solid/car-bus.svg diff --git a/client/src/static/icons/solid/car-crash.svg b/src/static/icons/solid/car-crash.svg similarity index 100% rename from client/src/static/icons/solid/car-crash.svg rename to src/static/icons/solid/car-crash.svg diff --git a/client/src/static/icons/solid/car-garage.svg b/src/static/icons/solid/car-garage.svg similarity index 100% rename from client/src/static/icons/solid/car-garage.svg rename to src/static/icons/solid/car-garage.svg diff --git a/client/src/static/icons/solid/car-mechanic.svg b/src/static/icons/solid/car-mechanic.svg similarity index 100% rename from client/src/static/icons/solid/car-mechanic.svg rename to src/static/icons/solid/car-mechanic.svg diff --git a/client/src/static/icons/solid/car-side.svg b/src/static/icons/solid/car-side.svg similarity index 100% rename from client/src/static/icons/solid/car-side.svg rename to src/static/icons/solid/car-side.svg diff --git a/client/src/static/icons/solid/car-tilt.svg b/src/static/icons/solid/car-tilt.svg similarity index 100% rename from client/src/static/icons/solid/car-tilt.svg rename to src/static/icons/solid/car-tilt.svg diff --git a/client/src/static/icons/solid/car-wash.svg b/src/static/icons/solid/car-wash.svg similarity index 100% rename from client/src/static/icons/solid/car-wash.svg rename to src/static/icons/solid/car-wash.svg diff --git a/client/src/static/icons/solid/car.svg b/src/static/icons/solid/car.svg similarity index 100% rename from client/src/static/icons/solid/car.svg rename to src/static/icons/solid/car.svg diff --git a/client/src/static/icons/solid/caravan-alt.svg b/src/static/icons/solid/caravan-alt.svg similarity index 100% rename from client/src/static/icons/solid/caravan-alt.svg rename to src/static/icons/solid/caravan-alt.svg diff --git a/client/src/static/icons/solid/caravan.svg b/src/static/icons/solid/caravan.svg similarity index 100% rename from client/src/static/icons/solid/caravan.svg rename to src/static/icons/solid/caravan.svg diff --git a/client/src/static/icons/solid/caret-circle-down.svg b/src/static/icons/solid/caret-circle-down.svg similarity index 100% rename from client/src/static/icons/solid/caret-circle-down.svg rename to src/static/icons/solid/caret-circle-down.svg diff --git a/client/src/static/icons/solid/caret-circle-left.svg b/src/static/icons/solid/caret-circle-left.svg similarity index 100% rename from client/src/static/icons/solid/caret-circle-left.svg rename to src/static/icons/solid/caret-circle-left.svg diff --git a/client/src/static/icons/solid/caret-circle-right.svg b/src/static/icons/solid/caret-circle-right.svg similarity index 100% rename from client/src/static/icons/solid/caret-circle-right.svg rename to src/static/icons/solid/caret-circle-right.svg diff --git a/client/src/static/icons/solid/caret-circle-up.svg b/src/static/icons/solid/caret-circle-up.svg similarity index 100% rename from client/src/static/icons/solid/caret-circle-up.svg rename to src/static/icons/solid/caret-circle-up.svg diff --git a/client/src/static/icons/solid/caret-down.svg b/src/static/icons/solid/caret-down.svg similarity index 100% rename from client/src/static/icons/solid/caret-down.svg rename to src/static/icons/solid/caret-down.svg diff --git a/client/src/static/icons/solid/caret-left.svg b/src/static/icons/solid/caret-left.svg similarity index 100% rename from client/src/static/icons/solid/caret-left.svg rename to src/static/icons/solid/caret-left.svg diff --git a/client/src/static/icons/solid/caret-right.svg b/src/static/icons/solid/caret-right.svg similarity index 100% rename from client/src/static/icons/solid/caret-right.svg rename to src/static/icons/solid/caret-right.svg diff --git a/client/src/static/icons/solid/caret-square-down.svg b/src/static/icons/solid/caret-square-down.svg similarity index 100% rename from client/src/static/icons/solid/caret-square-down.svg rename to src/static/icons/solid/caret-square-down.svg diff --git a/client/src/static/icons/solid/caret-square-left.svg b/src/static/icons/solid/caret-square-left.svg similarity index 100% rename from client/src/static/icons/solid/caret-square-left.svg rename to src/static/icons/solid/caret-square-left.svg diff --git a/client/src/static/icons/solid/caret-square-right.svg b/src/static/icons/solid/caret-square-right.svg similarity index 100% rename from client/src/static/icons/solid/caret-square-right.svg rename to src/static/icons/solid/caret-square-right.svg diff --git a/client/src/static/icons/solid/caret-square-up.svg b/src/static/icons/solid/caret-square-up.svg similarity index 100% rename from client/src/static/icons/solid/caret-square-up.svg rename to src/static/icons/solid/caret-square-up.svg diff --git a/client/src/static/icons/solid/caret-up.svg b/src/static/icons/solid/caret-up.svg similarity index 100% rename from client/src/static/icons/solid/caret-up.svg rename to src/static/icons/solid/caret-up.svg diff --git a/client/src/static/icons/solid/carrot.svg b/src/static/icons/solid/carrot.svg similarity index 100% rename from client/src/static/icons/solid/carrot.svg rename to src/static/icons/solid/carrot.svg diff --git a/client/src/static/icons/solid/cars.svg b/src/static/icons/solid/cars.svg similarity index 100% rename from client/src/static/icons/solid/cars.svg rename to src/static/icons/solid/cars.svg diff --git a/client/src/static/icons/solid/cart-arrow-down.svg b/src/static/icons/solid/cart-arrow-down.svg similarity index 100% rename from client/src/static/icons/solid/cart-arrow-down.svg rename to src/static/icons/solid/cart-arrow-down.svg diff --git a/client/src/static/icons/solid/cart-plus.svg b/src/static/icons/solid/cart-plus.svg similarity index 100% rename from client/src/static/icons/solid/cart-plus.svg rename to src/static/icons/solid/cart-plus.svg diff --git a/client/src/static/icons/solid/cash-register.svg b/src/static/icons/solid/cash-register.svg similarity index 100% rename from client/src/static/icons/solid/cash-register.svg rename to src/static/icons/solid/cash-register.svg diff --git a/client/src/static/icons/solid/cassette-tape.svg b/src/static/icons/solid/cassette-tape.svg similarity index 100% rename from client/src/static/icons/solid/cassette-tape.svg rename to src/static/icons/solid/cassette-tape.svg diff --git a/client/src/static/icons/solid/cat-space.svg b/src/static/icons/solid/cat-space.svg similarity index 100% rename from client/src/static/icons/solid/cat-space.svg rename to src/static/icons/solid/cat-space.svg diff --git a/client/src/static/icons/solid/cat.svg b/src/static/icons/solid/cat.svg similarity index 100% rename from client/src/static/icons/solid/cat.svg rename to src/static/icons/solid/cat.svg diff --git a/client/src/static/icons/solid/cauldron.svg b/src/static/icons/solid/cauldron.svg similarity index 100% rename from client/src/static/icons/solid/cauldron.svg rename to src/static/icons/solid/cauldron.svg diff --git a/client/src/static/icons/solid/cctv.svg b/src/static/icons/solid/cctv.svg similarity index 100% rename from client/src/static/icons/solid/cctv.svg rename to src/static/icons/solid/cctv.svg diff --git a/client/src/static/icons/solid/certificate.svg b/src/static/icons/solid/certificate.svg similarity index 100% rename from client/src/static/icons/solid/certificate.svg rename to src/static/icons/solid/certificate.svg diff --git a/client/src/static/icons/solid/chair-office.svg b/src/static/icons/solid/chair-office.svg similarity index 100% rename from client/src/static/icons/solid/chair-office.svg rename to src/static/icons/solid/chair-office.svg diff --git a/client/src/static/icons/solid/chair.svg b/src/static/icons/solid/chair.svg similarity index 100% rename from client/src/static/icons/solid/chair.svg rename to src/static/icons/solid/chair.svg diff --git a/client/src/static/icons/solid/chalkboard-teacher.svg b/src/static/icons/solid/chalkboard-teacher.svg similarity index 100% rename from client/src/static/icons/solid/chalkboard-teacher.svg rename to src/static/icons/solid/chalkboard-teacher.svg diff --git a/client/src/static/icons/solid/chalkboard.svg b/src/static/icons/solid/chalkboard.svg similarity index 100% rename from client/src/static/icons/solid/chalkboard.svg rename to src/static/icons/solid/chalkboard.svg diff --git a/client/src/static/icons/solid/charging-station.svg b/src/static/icons/solid/charging-station.svg similarity index 100% rename from client/src/static/icons/solid/charging-station.svg rename to src/static/icons/solid/charging-station.svg diff --git a/client/src/static/icons/solid/chart-area.svg b/src/static/icons/solid/chart-area.svg similarity index 100% rename from client/src/static/icons/solid/chart-area.svg rename to src/static/icons/solid/chart-area.svg diff --git a/client/src/static/icons/solid/chart-bar.svg b/src/static/icons/solid/chart-bar.svg similarity index 100% rename from client/src/static/icons/solid/chart-bar.svg rename to src/static/icons/solid/chart-bar.svg diff --git a/client/src/static/icons/solid/chart-line-down.svg b/src/static/icons/solid/chart-line-down.svg similarity index 100% rename from client/src/static/icons/solid/chart-line-down.svg rename to src/static/icons/solid/chart-line-down.svg diff --git a/client/src/static/icons/solid/chart-line.svg b/src/static/icons/solid/chart-line.svg similarity index 100% rename from client/src/static/icons/solid/chart-line.svg rename to src/static/icons/solid/chart-line.svg diff --git a/client/src/static/icons/solid/chart-network.svg b/src/static/icons/solid/chart-network.svg similarity index 100% rename from client/src/static/icons/solid/chart-network.svg rename to src/static/icons/solid/chart-network.svg diff --git a/client/src/static/icons/solid/chart-pie-alt.svg b/src/static/icons/solid/chart-pie-alt.svg similarity index 100% rename from client/src/static/icons/solid/chart-pie-alt.svg rename to src/static/icons/solid/chart-pie-alt.svg diff --git a/client/src/static/icons/solid/chart-pie.svg b/src/static/icons/solid/chart-pie.svg similarity index 100% rename from client/src/static/icons/solid/chart-pie.svg rename to src/static/icons/solid/chart-pie.svg diff --git a/client/src/static/icons/solid/chart-scatter.svg b/src/static/icons/solid/chart-scatter.svg similarity index 100% rename from client/src/static/icons/solid/chart-scatter.svg rename to src/static/icons/solid/chart-scatter.svg diff --git a/client/src/static/icons/solid/check-circle.svg b/src/static/icons/solid/check-circle.svg similarity index 100% rename from client/src/static/icons/solid/check-circle.svg rename to src/static/icons/solid/check-circle.svg diff --git a/client/src/static/icons/solid/check-double.svg b/src/static/icons/solid/check-double.svg similarity index 100% rename from client/src/static/icons/solid/check-double.svg rename to src/static/icons/solid/check-double.svg diff --git a/client/src/static/icons/solid/check-square.svg b/src/static/icons/solid/check-square.svg similarity index 100% rename from client/src/static/icons/solid/check-square.svg rename to src/static/icons/solid/check-square.svg diff --git a/client/src/static/icons/solid/check.svg b/src/static/icons/solid/check.svg similarity index 100% rename from client/src/static/icons/solid/check.svg rename to src/static/icons/solid/check.svg diff --git a/client/src/static/icons/solid/cheese-swiss.svg b/src/static/icons/solid/cheese-swiss.svg similarity index 100% rename from client/src/static/icons/solid/cheese-swiss.svg rename to src/static/icons/solid/cheese-swiss.svg diff --git a/client/src/static/icons/solid/cheese.svg b/src/static/icons/solid/cheese.svg similarity index 100% rename from client/src/static/icons/solid/cheese.svg rename to src/static/icons/solid/cheese.svg diff --git a/client/src/static/icons/solid/cheeseburger.svg b/src/static/icons/solid/cheeseburger.svg similarity index 100% rename from client/src/static/icons/solid/cheeseburger.svg rename to src/static/icons/solid/cheeseburger.svg diff --git a/client/src/static/icons/solid/chess-bishop-alt.svg b/src/static/icons/solid/chess-bishop-alt.svg similarity index 100% rename from client/src/static/icons/solid/chess-bishop-alt.svg rename to src/static/icons/solid/chess-bishop-alt.svg diff --git a/client/src/static/icons/solid/chess-bishop.svg b/src/static/icons/solid/chess-bishop.svg similarity index 100% rename from client/src/static/icons/solid/chess-bishop.svg rename to src/static/icons/solid/chess-bishop.svg diff --git a/client/src/static/icons/solid/chess-board.svg b/src/static/icons/solid/chess-board.svg similarity index 100% rename from client/src/static/icons/solid/chess-board.svg rename to src/static/icons/solid/chess-board.svg diff --git a/client/src/static/icons/solid/chess-clock-alt.svg b/src/static/icons/solid/chess-clock-alt.svg similarity index 100% rename from client/src/static/icons/solid/chess-clock-alt.svg rename to src/static/icons/solid/chess-clock-alt.svg diff --git a/client/src/static/icons/solid/chess-clock.svg b/src/static/icons/solid/chess-clock.svg similarity index 100% rename from client/src/static/icons/solid/chess-clock.svg rename to src/static/icons/solid/chess-clock.svg diff --git a/client/src/static/icons/solid/chess-king-alt.svg b/src/static/icons/solid/chess-king-alt.svg similarity index 100% rename from client/src/static/icons/solid/chess-king-alt.svg rename to src/static/icons/solid/chess-king-alt.svg diff --git a/client/src/static/icons/solid/chess-king.svg b/src/static/icons/solid/chess-king.svg similarity index 100% rename from client/src/static/icons/solid/chess-king.svg rename to src/static/icons/solid/chess-king.svg diff --git a/client/src/static/icons/solid/chess-knight-alt.svg b/src/static/icons/solid/chess-knight-alt.svg similarity index 100% rename from client/src/static/icons/solid/chess-knight-alt.svg rename to src/static/icons/solid/chess-knight-alt.svg diff --git a/client/src/static/icons/solid/chess-knight.svg b/src/static/icons/solid/chess-knight.svg similarity index 100% rename from client/src/static/icons/solid/chess-knight.svg rename to src/static/icons/solid/chess-knight.svg diff --git a/client/src/static/icons/solid/chess-pawn-alt.svg b/src/static/icons/solid/chess-pawn-alt.svg similarity index 100% rename from client/src/static/icons/solid/chess-pawn-alt.svg rename to src/static/icons/solid/chess-pawn-alt.svg diff --git a/client/src/static/icons/solid/chess-pawn.svg b/src/static/icons/solid/chess-pawn.svg similarity index 100% rename from client/src/static/icons/solid/chess-pawn.svg rename to src/static/icons/solid/chess-pawn.svg diff --git a/client/src/static/icons/solid/chess-queen-alt.svg b/src/static/icons/solid/chess-queen-alt.svg similarity index 100% rename from client/src/static/icons/solid/chess-queen-alt.svg rename to src/static/icons/solid/chess-queen-alt.svg diff --git a/client/src/static/icons/solid/chess-queen.svg b/src/static/icons/solid/chess-queen.svg similarity index 100% rename from client/src/static/icons/solid/chess-queen.svg rename to src/static/icons/solid/chess-queen.svg diff --git a/client/src/static/icons/solid/chess-rook-alt.svg b/src/static/icons/solid/chess-rook-alt.svg similarity index 100% rename from client/src/static/icons/solid/chess-rook-alt.svg rename to src/static/icons/solid/chess-rook-alt.svg diff --git a/client/src/static/icons/solid/chess-rook.svg b/src/static/icons/solid/chess-rook.svg similarity index 100% rename from client/src/static/icons/solid/chess-rook.svg rename to src/static/icons/solid/chess-rook.svg diff --git a/client/src/static/icons/solid/chess.svg b/src/static/icons/solid/chess.svg similarity index 100% rename from client/src/static/icons/solid/chess.svg rename to src/static/icons/solid/chess.svg diff --git a/client/src/static/icons/solid/chevron-circle-down.svg b/src/static/icons/solid/chevron-circle-down.svg similarity index 100% rename from client/src/static/icons/solid/chevron-circle-down.svg rename to src/static/icons/solid/chevron-circle-down.svg diff --git a/client/src/static/icons/solid/chevron-circle-left.svg b/src/static/icons/solid/chevron-circle-left.svg similarity index 100% rename from client/src/static/icons/solid/chevron-circle-left.svg rename to src/static/icons/solid/chevron-circle-left.svg diff --git a/client/src/static/icons/solid/chevron-circle-right.svg b/src/static/icons/solid/chevron-circle-right.svg similarity index 100% rename from client/src/static/icons/solid/chevron-circle-right.svg rename to src/static/icons/solid/chevron-circle-right.svg diff --git a/client/src/static/icons/solid/chevron-circle-up.svg b/src/static/icons/solid/chevron-circle-up.svg similarity index 100% rename from client/src/static/icons/solid/chevron-circle-up.svg rename to src/static/icons/solid/chevron-circle-up.svg diff --git a/client/src/static/icons/solid/chevron-double-down.svg b/src/static/icons/solid/chevron-double-down.svg similarity index 100% rename from client/src/static/icons/solid/chevron-double-down.svg rename to src/static/icons/solid/chevron-double-down.svg diff --git a/client/src/static/icons/solid/chevron-double-left.svg b/src/static/icons/solid/chevron-double-left.svg similarity index 100% rename from client/src/static/icons/solid/chevron-double-left.svg rename to src/static/icons/solid/chevron-double-left.svg diff --git a/client/src/static/icons/solid/chevron-double-right.svg b/src/static/icons/solid/chevron-double-right.svg similarity index 100% rename from client/src/static/icons/solid/chevron-double-right.svg rename to src/static/icons/solid/chevron-double-right.svg diff --git a/client/src/static/icons/solid/chevron-double-up.svg b/src/static/icons/solid/chevron-double-up.svg similarity index 100% rename from client/src/static/icons/solid/chevron-double-up.svg rename to src/static/icons/solid/chevron-double-up.svg diff --git a/client/src/static/icons/solid/chevron-down.svg b/src/static/icons/solid/chevron-down.svg similarity index 100% rename from client/src/static/icons/solid/chevron-down.svg rename to src/static/icons/solid/chevron-down.svg diff --git a/client/src/static/icons/solid/chevron-left.svg b/src/static/icons/solid/chevron-left.svg similarity index 100% rename from client/src/static/icons/solid/chevron-left.svg rename to src/static/icons/solid/chevron-left.svg diff --git a/client/src/static/icons/solid/chevron-right.svg b/src/static/icons/solid/chevron-right.svg similarity index 100% rename from client/src/static/icons/solid/chevron-right.svg rename to src/static/icons/solid/chevron-right.svg diff --git a/client/src/static/icons/solid/chevron-square-down.svg b/src/static/icons/solid/chevron-square-down.svg similarity index 100% rename from client/src/static/icons/solid/chevron-square-down.svg rename to src/static/icons/solid/chevron-square-down.svg diff --git a/client/src/static/icons/solid/chevron-square-left.svg b/src/static/icons/solid/chevron-square-left.svg similarity index 100% rename from client/src/static/icons/solid/chevron-square-left.svg rename to src/static/icons/solid/chevron-square-left.svg diff --git a/client/src/static/icons/solid/chevron-square-right.svg b/src/static/icons/solid/chevron-square-right.svg similarity index 100% rename from client/src/static/icons/solid/chevron-square-right.svg rename to src/static/icons/solid/chevron-square-right.svg diff --git a/client/src/static/icons/solid/chevron-square-up.svg b/src/static/icons/solid/chevron-square-up.svg similarity index 100% rename from client/src/static/icons/solid/chevron-square-up.svg rename to src/static/icons/solid/chevron-square-up.svg diff --git a/client/src/static/icons/solid/chevron-up.svg b/src/static/icons/solid/chevron-up.svg similarity index 100% rename from client/src/static/icons/solid/chevron-up.svg rename to src/static/icons/solid/chevron-up.svg diff --git a/client/src/static/icons/solid/child.svg b/src/static/icons/solid/child.svg similarity index 100% rename from client/src/static/icons/solid/child.svg rename to src/static/icons/solid/child.svg diff --git a/client/src/static/icons/solid/chimney.svg b/src/static/icons/solid/chimney.svg similarity index 100% rename from client/src/static/icons/solid/chimney.svg rename to src/static/icons/solid/chimney.svg diff --git a/client/src/static/icons/solid/church.svg b/src/static/icons/solid/church.svg similarity index 100% rename from client/src/static/icons/solid/church.svg rename to src/static/icons/solid/church.svg diff --git a/client/src/static/icons/solid/circle-notch.svg b/src/static/icons/solid/circle-notch.svg similarity index 100% rename from client/src/static/icons/solid/circle-notch.svg rename to src/static/icons/solid/circle-notch.svg diff --git a/client/src/static/icons/solid/circle.svg b/src/static/icons/solid/circle.svg similarity index 100% rename from client/src/static/icons/solid/circle.svg rename to src/static/icons/solid/circle.svg diff --git a/client/src/static/icons/solid/city.svg b/src/static/icons/solid/city.svg similarity index 100% rename from client/src/static/icons/solid/city.svg rename to src/static/icons/solid/city.svg diff --git a/client/src/static/icons/solid/clarinet.svg b/src/static/icons/solid/clarinet.svg similarity index 100% rename from client/src/static/icons/solid/clarinet.svg rename to src/static/icons/solid/clarinet.svg diff --git a/client/src/static/icons/solid/claw-marks.svg b/src/static/icons/solid/claw-marks.svg similarity index 100% rename from client/src/static/icons/solid/claw-marks.svg rename to src/static/icons/solid/claw-marks.svg diff --git a/client/src/static/icons/solid/clinic-medical.svg b/src/static/icons/solid/clinic-medical.svg similarity index 100% rename from client/src/static/icons/solid/clinic-medical.svg rename to src/static/icons/solid/clinic-medical.svg diff --git a/client/src/static/icons/solid/clipboard-check.svg b/src/static/icons/solid/clipboard-check.svg similarity index 100% rename from client/src/static/icons/solid/clipboard-check.svg rename to src/static/icons/solid/clipboard-check.svg diff --git a/client/src/static/icons/solid/clipboard-list-check.svg b/src/static/icons/solid/clipboard-list-check.svg similarity index 100% rename from client/src/static/icons/solid/clipboard-list-check.svg rename to src/static/icons/solid/clipboard-list-check.svg diff --git a/client/src/static/icons/solid/clipboard-list.svg b/src/static/icons/solid/clipboard-list.svg similarity index 100% rename from client/src/static/icons/solid/clipboard-list.svg rename to src/static/icons/solid/clipboard-list.svg diff --git a/client/src/static/icons/solid/clipboard-prescription.svg b/src/static/icons/solid/clipboard-prescription.svg similarity index 100% rename from client/src/static/icons/solid/clipboard-prescription.svg rename to src/static/icons/solid/clipboard-prescription.svg diff --git a/client/src/static/icons/solid/clipboard-user.svg b/src/static/icons/solid/clipboard-user.svg similarity index 100% rename from client/src/static/icons/solid/clipboard-user.svg rename to src/static/icons/solid/clipboard-user.svg diff --git a/client/src/static/icons/solid/clipboard.svg b/src/static/icons/solid/clipboard.svg similarity index 100% rename from client/src/static/icons/solid/clipboard.svg rename to src/static/icons/solid/clipboard.svg diff --git a/client/src/static/icons/solid/clock.svg b/src/static/icons/solid/clock.svg similarity index 100% rename from client/src/static/icons/solid/clock.svg rename to src/static/icons/solid/clock.svg diff --git a/client/src/static/icons/solid/clone.svg b/src/static/icons/solid/clone.svg similarity index 100% rename from client/src/static/icons/solid/clone.svg rename to src/static/icons/solid/clone.svg diff --git a/client/src/static/icons/solid/closed-captioning.svg b/src/static/icons/solid/closed-captioning.svg similarity index 100% rename from client/src/static/icons/solid/closed-captioning.svg rename to src/static/icons/solid/closed-captioning.svg diff --git a/client/src/static/icons/solid/cloud-download-alt.svg b/src/static/icons/solid/cloud-download-alt.svg similarity index 100% rename from client/src/static/icons/solid/cloud-download-alt.svg rename to src/static/icons/solid/cloud-download-alt.svg diff --git a/client/src/static/icons/solid/cloud-download.svg b/src/static/icons/solid/cloud-download.svg similarity index 100% rename from client/src/static/icons/solid/cloud-download.svg rename to src/static/icons/solid/cloud-download.svg diff --git a/client/src/static/icons/solid/cloud-drizzle.svg b/src/static/icons/solid/cloud-drizzle.svg similarity index 100% rename from client/src/static/icons/solid/cloud-drizzle.svg rename to src/static/icons/solid/cloud-drizzle.svg diff --git a/client/src/static/icons/solid/cloud-hail-mixed.svg b/src/static/icons/solid/cloud-hail-mixed.svg similarity index 100% rename from client/src/static/icons/solid/cloud-hail-mixed.svg rename to src/static/icons/solid/cloud-hail-mixed.svg diff --git a/client/src/static/icons/solid/cloud-hail.svg b/src/static/icons/solid/cloud-hail.svg similarity index 100% rename from client/src/static/icons/solid/cloud-hail.svg rename to src/static/icons/solid/cloud-hail.svg diff --git a/client/src/static/icons/solid/cloud-meatball.svg b/src/static/icons/solid/cloud-meatball.svg similarity index 100% rename from client/src/static/icons/solid/cloud-meatball.svg rename to src/static/icons/solid/cloud-meatball.svg diff --git a/client/src/static/icons/solid/cloud-moon-rain.svg b/src/static/icons/solid/cloud-moon-rain.svg similarity index 100% rename from client/src/static/icons/solid/cloud-moon-rain.svg rename to src/static/icons/solid/cloud-moon-rain.svg diff --git a/client/src/static/icons/solid/cloud-moon.svg b/src/static/icons/solid/cloud-moon.svg similarity index 100% rename from client/src/static/icons/solid/cloud-moon.svg rename to src/static/icons/solid/cloud-moon.svg diff --git a/client/src/static/icons/solid/cloud-music.svg b/src/static/icons/solid/cloud-music.svg similarity index 100% rename from client/src/static/icons/solid/cloud-music.svg rename to src/static/icons/solid/cloud-music.svg diff --git a/client/src/static/icons/solid/cloud-rain.svg b/src/static/icons/solid/cloud-rain.svg similarity index 100% rename from client/src/static/icons/solid/cloud-rain.svg rename to src/static/icons/solid/cloud-rain.svg diff --git a/client/src/static/icons/solid/cloud-rainbow.svg b/src/static/icons/solid/cloud-rainbow.svg similarity index 100% rename from client/src/static/icons/solid/cloud-rainbow.svg rename to src/static/icons/solid/cloud-rainbow.svg diff --git a/client/src/static/icons/solid/cloud-showers-heavy.svg b/src/static/icons/solid/cloud-showers-heavy.svg similarity index 100% rename from client/src/static/icons/solid/cloud-showers-heavy.svg rename to src/static/icons/solid/cloud-showers-heavy.svg diff --git a/client/src/static/icons/solid/cloud-showers.svg b/src/static/icons/solid/cloud-showers.svg similarity index 100% rename from client/src/static/icons/solid/cloud-showers.svg rename to src/static/icons/solid/cloud-showers.svg diff --git a/client/src/static/icons/solid/cloud-sleet.svg b/src/static/icons/solid/cloud-sleet.svg similarity index 100% rename from client/src/static/icons/solid/cloud-sleet.svg rename to src/static/icons/solid/cloud-sleet.svg diff --git a/client/src/static/icons/solid/cloud-snow.svg b/src/static/icons/solid/cloud-snow.svg similarity index 100% rename from client/src/static/icons/solid/cloud-snow.svg rename to src/static/icons/solid/cloud-snow.svg diff --git a/client/src/static/icons/solid/cloud-sun-rain.svg b/src/static/icons/solid/cloud-sun-rain.svg similarity index 100% rename from client/src/static/icons/solid/cloud-sun-rain.svg rename to src/static/icons/solid/cloud-sun-rain.svg diff --git a/client/src/static/icons/solid/cloud-sun.svg b/src/static/icons/solid/cloud-sun.svg similarity index 100% rename from client/src/static/icons/solid/cloud-sun.svg rename to src/static/icons/solid/cloud-sun.svg diff --git a/client/src/static/icons/solid/cloud-upload-alt.svg b/src/static/icons/solid/cloud-upload-alt.svg similarity index 100% rename from client/src/static/icons/solid/cloud-upload-alt.svg rename to src/static/icons/solid/cloud-upload-alt.svg diff --git a/client/src/static/icons/solid/cloud-upload.svg b/src/static/icons/solid/cloud-upload.svg similarity index 100% rename from client/src/static/icons/solid/cloud-upload.svg rename to src/static/icons/solid/cloud-upload.svg diff --git a/client/src/static/icons/solid/cloud.svg b/src/static/icons/solid/cloud.svg similarity index 100% rename from client/src/static/icons/solid/cloud.svg rename to src/static/icons/solid/cloud.svg diff --git a/client/src/static/icons/solid/clouds-moon.svg b/src/static/icons/solid/clouds-moon.svg similarity index 100% rename from client/src/static/icons/solid/clouds-moon.svg rename to src/static/icons/solid/clouds-moon.svg diff --git a/client/src/static/icons/solid/clouds-sun.svg b/src/static/icons/solid/clouds-sun.svg similarity index 100% rename from client/src/static/icons/solid/clouds-sun.svg rename to src/static/icons/solid/clouds-sun.svg diff --git a/client/src/static/icons/solid/clouds.svg b/src/static/icons/solid/clouds.svg similarity index 100% rename from client/src/static/icons/solid/clouds.svg rename to src/static/icons/solid/clouds.svg diff --git a/client/src/static/icons/solid/club.svg b/src/static/icons/solid/club.svg similarity index 100% rename from client/src/static/icons/solid/club.svg rename to src/static/icons/solid/club.svg diff --git a/client/src/static/icons/solid/cocktail.svg b/src/static/icons/solid/cocktail.svg similarity index 100% rename from client/src/static/icons/solid/cocktail.svg rename to src/static/icons/solid/cocktail.svg diff --git a/client/src/static/icons/solid/code-branch.svg b/src/static/icons/solid/code-branch.svg similarity index 100% rename from client/src/static/icons/solid/code-branch.svg rename to src/static/icons/solid/code-branch.svg diff --git a/client/src/static/icons/solid/code-commit.svg b/src/static/icons/solid/code-commit.svg similarity index 100% rename from client/src/static/icons/solid/code-commit.svg rename to src/static/icons/solid/code-commit.svg diff --git a/client/src/static/icons/solid/code-merge.svg b/src/static/icons/solid/code-merge.svg similarity index 100% rename from client/src/static/icons/solid/code-merge.svg rename to src/static/icons/solid/code-merge.svg diff --git a/client/src/static/icons/solid/code.svg b/src/static/icons/solid/code.svg similarity index 100% rename from client/src/static/icons/solid/code.svg rename to src/static/icons/solid/code.svg diff --git a/client/src/static/icons/solid/coffee-pot.svg b/src/static/icons/solid/coffee-pot.svg similarity index 100% rename from client/src/static/icons/solid/coffee-pot.svg rename to src/static/icons/solid/coffee-pot.svg diff --git a/client/src/static/icons/solid/coffee-togo.svg b/src/static/icons/solid/coffee-togo.svg similarity index 100% rename from client/src/static/icons/solid/coffee-togo.svg rename to src/static/icons/solid/coffee-togo.svg diff --git a/client/src/static/icons/solid/coffee.svg b/src/static/icons/solid/coffee.svg similarity index 100% rename from client/src/static/icons/solid/coffee.svg rename to src/static/icons/solid/coffee.svg diff --git a/client/src/static/icons/solid/coffin.svg b/src/static/icons/solid/coffin.svg similarity index 100% rename from client/src/static/icons/solid/coffin.svg rename to src/static/icons/solid/coffin.svg diff --git a/client/src/static/icons/solid/cog.svg b/src/static/icons/solid/cog.svg similarity index 100% rename from client/src/static/icons/solid/cog.svg rename to src/static/icons/solid/cog.svg diff --git a/client/src/static/icons/solid/cogs.svg b/src/static/icons/solid/cogs.svg similarity index 100% rename from client/src/static/icons/solid/cogs.svg rename to src/static/icons/solid/cogs.svg diff --git a/client/src/static/icons/solid/coin.svg b/src/static/icons/solid/coin.svg similarity index 100% rename from client/src/static/icons/solid/coin.svg rename to src/static/icons/solid/coin.svg diff --git a/client/src/static/icons/solid/coins.svg b/src/static/icons/solid/coins.svg similarity index 100% rename from client/src/static/icons/solid/coins.svg rename to src/static/icons/solid/coins.svg diff --git a/client/src/static/icons/solid/columns.svg b/src/static/icons/solid/columns.svg similarity index 100% rename from client/src/static/icons/solid/columns.svg rename to src/static/icons/solid/columns.svg diff --git a/client/src/static/icons/solid/comet.svg b/src/static/icons/solid/comet.svg similarity index 100% rename from client/src/static/icons/solid/comet.svg rename to src/static/icons/solid/comet.svg diff --git a/client/src/static/icons/solid/comment-alt-check.svg b/src/static/icons/solid/comment-alt-check.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-check.svg rename to src/static/icons/solid/comment-alt-check.svg diff --git a/client/src/static/icons/solid/comment-alt-dollar.svg b/src/static/icons/solid/comment-alt-dollar.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-dollar.svg rename to src/static/icons/solid/comment-alt-dollar.svg diff --git a/client/src/static/icons/solid/comment-alt-dots.svg b/src/static/icons/solid/comment-alt-dots.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-dots.svg rename to src/static/icons/solid/comment-alt-dots.svg diff --git a/client/src/static/icons/solid/comment-alt-edit.svg b/src/static/icons/solid/comment-alt-edit.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-edit.svg rename to src/static/icons/solid/comment-alt-edit.svg diff --git a/client/src/static/icons/solid/comment-alt-exclamation.svg b/src/static/icons/solid/comment-alt-exclamation.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-exclamation.svg rename to src/static/icons/solid/comment-alt-exclamation.svg diff --git a/client/src/static/icons/solid/comment-alt-lines.svg b/src/static/icons/solid/comment-alt-lines.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-lines.svg rename to src/static/icons/solid/comment-alt-lines.svg diff --git a/client/src/static/icons/solid/comment-alt-medical.svg b/src/static/icons/solid/comment-alt-medical.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-medical.svg rename to src/static/icons/solid/comment-alt-medical.svg diff --git a/client/src/static/icons/solid/comment-alt-minus.svg b/src/static/icons/solid/comment-alt-minus.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-minus.svg rename to src/static/icons/solid/comment-alt-minus.svg diff --git a/client/src/static/icons/solid/comment-alt-music.svg b/src/static/icons/solid/comment-alt-music.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-music.svg rename to src/static/icons/solid/comment-alt-music.svg diff --git a/client/src/static/icons/solid/comment-alt-plus.svg b/src/static/icons/solid/comment-alt-plus.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-plus.svg rename to src/static/icons/solid/comment-alt-plus.svg diff --git a/client/src/static/icons/solid/comment-alt-slash.svg b/src/static/icons/solid/comment-alt-slash.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-slash.svg rename to src/static/icons/solid/comment-alt-slash.svg diff --git a/client/src/static/icons/solid/comment-alt-smile.svg b/src/static/icons/solid/comment-alt-smile.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-smile.svg rename to src/static/icons/solid/comment-alt-smile.svg diff --git a/client/src/static/icons/solid/comment-alt-times.svg b/src/static/icons/solid/comment-alt-times.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt-times.svg rename to src/static/icons/solid/comment-alt-times.svg diff --git a/client/src/static/icons/solid/comment-alt.svg b/src/static/icons/solid/comment-alt.svg similarity index 100% rename from client/src/static/icons/solid/comment-alt.svg rename to src/static/icons/solid/comment-alt.svg diff --git a/client/src/static/icons/solid/comment-check.svg b/src/static/icons/solid/comment-check.svg similarity index 100% rename from client/src/static/icons/solid/comment-check.svg rename to src/static/icons/solid/comment-check.svg diff --git a/client/src/static/icons/solid/comment-dollar.svg b/src/static/icons/solid/comment-dollar.svg similarity index 100% rename from client/src/static/icons/solid/comment-dollar.svg rename to src/static/icons/solid/comment-dollar.svg diff --git a/client/src/static/icons/solid/comment-dots.svg b/src/static/icons/solid/comment-dots.svg similarity index 100% rename from client/src/static/icons/solid/comment-dots.svg rename to src/static/icons/solid/comment-dots.svg diff --git a/client/src/static/icons/solid/comment-edit.svg b/src/static/icons/solid/comment-edit.svg similarity index 100% rename from client/src/static/icons/solid/comment-edit.svg rename to src/static/icons/solid/comment-edit.svg diff --git a/client/src/static/icons/solid/comment-exclamation.svg b/src/static/icons/solid/comment-exclamation.svg similarity index 100% rename from client/src/static/icons/solid/comment-exclamation.svg rename to src/static/icons/solid/comment-exclamation.svg diff --git a/client/src/static/icons/solid/comment-lines.svg b/src/static/icons/solid/comment-lines.svg similarity index 100% rename from client/src/static/icons/solid/comment-lines.svg rename to src/static/icons/solid/comment-lines.svg diff --git a/client/src/static/icons/solid/comment-medical.svg b/src/static/icons/solid/comment-medical.svg similarity index 100% rename from client/src/static/icons/solid/comment-medical.svg rename to src/static/icons/solid/comment-medical.svg diff --git a/client/src/static/icons/solid/comment-minus.svg b/src/static/icons/solid/comment-minus.svg similarity index 100% rename from client/src/static/icons/solid/comment-minus.svg rename to src/static/icons/solid/comment-minus.svg diff --git a/client/src/static/icons/solid/comment-music.svg b/src/static/icons/solid/comment-music.svg similarity index 100% rename from client/src/static/icons/solid/comment-music.svg rename to src/static/icons/solid/comment-music.svg diff --git a/client/src/static/icons/solid/comment-plus.svg b/src/static/icons/solid/comment-plus.svg similarity index 100% rename from client/src/static/icons/solid/comment-plus.svg rename to src/static/icons/solid/comment-plus.svg diff --git a/client/src/static/icons/solid/comment-slash.svg b/src/static/icons/solid/comment-slash.svg similarity index 100% rename from client/src/static/icons/solid/comment-slash.svg rename to src/static/icons/solid/comment-slash.svg diff --git a/client/src/static/icons/solid/comment-smile.svg b/src/static/icons/solid/comment-smile.svg similarity index 100% rename from client/src/static/icons/solid/comment-smile.svg rename to src/static/icons/solid/comment-smile.svg diff --git a/client/src/static/icons/solid/comment-times.svg b/src/static/icons/solid/comment-times.svg similarity index 100% rename from client/src/static/icons/solid/comment-times.svg rename to src/static/icons/solid/comment-times.svg diff --git a/client/src/static/icons/solid/comment.svg b/src/static/icons/solid/comment.svg similarity index 100% rename from client/src/static/icons/solid/comment.svg rename to src/static/icons/solid/comment.svg diff --git a/client/src/static/icons/solid/comments-alt-dollar.svg b/src/static/icons/solid/comments-alt-dollar.svg similarity index 100% rename from client/src/static/icons/solid/comments-alt-dollar.svg rename to src/static/icons/solid/comments-alt-dollar.svg diff --git a/client/src/static/icons/solid/comments-alt.svg b/src/static/icons/solid/comments-alt.svg similarity index 100% rename from client/src/static/icons/solid/comments-alt.svg rename to src/static/icons/solid/comments-alt.svg diff --git a/client/src/static/icons/solid/comments-dollar.svg b/src/static/icons/solid/comments-dollar.svg similarity index 100% rename from client/src/static/icons/solid/comments-dollar.svg rename to src/static/icons/solid/comments-dollar.svg diff --git a/client/src/static/icons/solid/comments.svg b/src/static/icons/solid/comments.svg similarity index 100% rename from client/src/static/icons/solid/comments.svg rename to src/static/icons/solid/comments.svg diff --git a/client/src/static/icons/solid/compact-disc.svg b/src/static/icons/solid/compact-disc.svg similarity index 100% rename from client/src/static/icons/solid/compact-disc.svg rename to src/static/icons/solid/compact-disc.svg diff --git a/client/src/static/icons/solid/compass-slash.svg b/src/static/icons/solid/compass-slash.svg similarity index 100% rename from client/src/static/icons/solid/compass-slash.svg rename to src/static/icons/solid/compass-slash.svg diff --git a/client/src/static/icons/solid/compass.svg b/src/static/icons/solid/compass.svg similarity index 100% rename from client/src/static/icons/solid/compass.svg rename to src/static/icons/solid/compass.svg diff --git a/client/src/static/icons/solid/compress-alt.svg b/src/static/icons/solid/compress-alt.svg similarity index 100% rename from client/src/static/icons/solid/compress-alt.svg rename to src/static/icons/solid/compress-alt.svg diff --git a/client/src/static/icons/solid/compress-arrows-alt.svg b/src/static/icons/solid/compress-arrows-alt.svg similarity index 100% rename from client/src/static/icons/solid/compress-arrows-alt.svg rename to src/static/icons/solid/compress-arrows-alt.svg diff --git a/client/src/static/icons/solid/compress-wide.svg b/src/static/icons/solid/compress-wide.svg similarity index 100% rename from client/src/static/icons/solid/compress-wide.svg rename to src/static/icons/solid/compress-wide.svg diff --git a/client/src/static/icons/solid/compress.svg b/src/static/icons/solid/compress.svg similarity index 100% rename from client/src/static/icons/solid/compress.svg rename to src/static/icons/solid/compress.svg diff --git a/client/src/static/icons/solid/computer-classic.svg b/src/static/icons/solid/computer-classic.svg similarity index 100% rename from client/src/static/icons/solid/computer-classic.svg rename to src/static/icons/solid/computer-classic.svg diff --git a/client/src/static/icons/solid/computer-speaker.svg b/src/static/icons/solid/computer-speaker.svg similarity index 100% rename from client/src/static/icons/solid/computer-speaker.svg rename to src/static/icons/solid/computer-speaker.svg diff --git a/client/src/static/icons/solid/concierge-bell.svg b/src/static/icons/solid/concierge-bell.svg similarity index 100% rename from client/src/static/icons/solid/concierge-bell.svg rename to src/static/icons/solid/concierge-bell.svg diff --git a/client/src/static/icons/solid/construction.svg b/src/static/icons/solid/construction.svg similarity index 100% rename from client/src/static/icons/solid/construction.svg rename to src/static/icons/solid/construction.svg diff --git a/client/src/static/icons/solid/container-storage.svg b/src/static/icons/solid/container-storage.svg similarity index 100% rename from client/src/static/icons/solid/container-storage.svg rename to src/static/icons/solid/container-storage.svg diff --git a/client/src/static/icons/solid/conveyor-belt-alt.svg b/src/static/icons/solid/conveyor-belt-alt.svg similarity index 100% rename from client/src/static/icons/solid/conveyor-belt-alt.svg rename to src/static/icons/solid/conveyor-belt-alt.svg diff --git a/client/src/static/icons/solid/conveyor-belt.svg b/src/static/icons/solid/conveyor-belt.svg similarity index 100% rename from client/src/static/icons/solid/conveyor-belt.svg rename to src/static/icons/solid/conveyor-belt.svg diff --git a/client/src/static/icons/solid/cookie-bite.svg b/src/static/icons/solid/cookie-bite.svg similarity index 100% rename from client/src/static/icons/solid/cookie-bite.svg rename to src/static/icons/solid/cookie-bite.svg diff --git a/client/src/static/icons/solid/cookie.svg b/src/static/icons/solid/cookie.svg similarity index 100% rename from client/src/static/icons/solid/cookie.svg rename to src/static/icons/solid/cookie.svg diff --git a/client/src/static/icons/solid/copy.svg b/src/static/icons/solid/copy.svg similarity index 100% rename from client/src/static/icons/solid/copy.svg rename to src/static/icons/solid/copy.svg diff --git a/client/src/static/icons/solid/copyright.svg b/src/static/icons/solid/copyright.svg similarity index 100% rename from client/src/static/icons/solid/copyright.svg rename to src/static/icons/solid/copyright.svg diff --git a/client/src/static/icons/solid/corn.svg b/src/static/icons/solid/corn.svg similarity index 100% rename from client/src/static/icons/solid/corn.svg rename to src/static/icons/solid/corn.svg diff --git a/client/src/static/icons/solid/couch.svg b/src/static/icons/solid/couch.svg similarity index 100% rename from client/src/static/icons/solid/couch.svg rename to src/static/icons/solid/couch.svg diff --git a/client/src/static/icons/solid/cow.svg b/src/static/icons/solid/cow.svg similarity index 100% rename from client/src/static/icons/solid/cow.svg rename to src/static/icons/solid/cow.svg diff --git a/client/src/static/icons/solid/cowbell-more.svg b/src/static/icons/solid/cowbell-more.svg similarity index 100% rename from client/src/static/icons/solid/cowbell-more.svg rename to src/static/icons/solid/cowbell-more.svg diff --git a/client/src/static/icons/solid/cowbell.svg b/src/static/icons/solid/cowbell.svg similarity index 100% rename from client/src/static/icons/solid/cowbell.svg rename to src/static/icons/solid/cowbell.svg diff --git a/client/src/static/icons/solid/credit-card-blank.svg b/src/static/icons/solid/credit-card-blank.svg similarity index 100% rename from client/src/static/icons/solid/credit-card-blank.svg rename to src/static/icons/solid/credit-card-blank.svg diff --git a/client/src/static/icons/solid/credit-card-front.svg b/src/static/icons/solid/credit-card-front.svg similarity index 100% rename from client/src/static/icons/solid/credit-card-front.svg rename to src/static/icons/solid/credit-card-front.svg diff --git a/client/src/static/icons/solid/credit-card.svg b/src/static/icons/solid/credit-card.svg similarity index 100% rename from client/src/static/icons/solid/credit-card.svg rename to src/static/icons/solid/credit-card.svg diff --git a/client/src/static/icons/solid/cricket.svg b/src/static/icons/solid/cricket.svg similarity index 100% rename from client/src/static/icons/solid/cricket.svg rename to src/static/icons/solid/cricket.svg diff --git a/client/src/static/icons/solid/croissant.svg b/src/static/icons/solid/croissant.svg similarity index 100% rename from client/src/static/icons/solid/croissant.svg rename to src/static/icons/solid/croissant.svg diff --git a/client/src/static/icons/solid/crop-alt.svg b/src/static/icons/solid/crop-alt.svg similarity index 100% rename from client/src/static/icons/solid/crop-alt.svg rename to src/static/icons/solid/crop-alt.svg diff --git a/client/src/static/icons/solid/crop.svg b/src/static/icons/solid/crop.svg similarity index 100% rename from client/src/static/icons/solid/crop.svg rename to src/static/icons/solid/crop.svg diff --git a/client/src/static/icons/solid/cross.svg b/src/static/icons/solid/cross.svg similarity index 100% rename from client/src/static/icons/solid/cross.svg rename to src/static/icons/solid/cross.svg diff --git a/client/src/static/icons/solid/crosshairs.svg b/src/static/icons/solid/crosshairs.svg similarity index 100% rename from client/src/static/icons/solid/crosshairs.svg rename to src/static/icons/solid/crosshairs.svg diff --git a/client/src/static/icons/solid/crow.svg b/src/static/icons/solid/crow.svg similarity index 100% rename from client/src/static/icons/solid/crow.svg rename to src/static/icons/solid/crow.svg diff --git a/client/src/static/icons/solid/crown.svg b/src/static/icons/solid/crown.svg similarity index 100% rename from client/src/static/icons/solid/crown.svg rename to src/static/icons/solid/crown.svg diff --git a/client/src/static/icons/solid/crutch.svg b/src/static/icons/solid/crutch.svg similarity index 100% rename from client/src/static/icons/solid/crutch.svg rename to src/static/icons/solid/crutch.svg diff --git a/client/src/static/icons/solid/crutches.svg b/src/static/icons/solid/crutches.svg similarity index 100% rename from client/src/static/icons/solid/crutches.svg rename to src/static/icons/solid/crutches.svg diff --git a/client/src/static/icons/solid/cube.svg b/src/static/icons/solid/cube.svg similarity index 100% rename from client/src/static/icons/solid/cube.svg rename to src/static/icons/solid/cube.svg diff --git a/client/src/static/icons/solid/cubes.svg b/src/static/icons/solid/cubes.svg similarity index 100% rename from client/src/static/icons/solid/cubes.svg rename to src/static/icons/solid/cubes.svg diff --git a/client/src/static/icons/solid/curling.svg b/src/static/icons/solid/curling.svg similarity index 100% rename from client/src/static/icons/solid/curling.svg rename to src/static/icons/solid/curling.svg diff --git a/client/src/static/icons/solid/cut.svg b/src/static/icons/solid/cut.svg similarity index 100% rename from client/src/static/icons/solid/cut.svg rename to src/static/icons/solid/cut.svg diff --git a/client/src/static/icons/solid/dagger.svg b/src/static/icons/solid/dagger.svg similarity index 100% rename from client/src/static/icons/solid/dagger.svg rename to src/static/icons/solid/dagger.svg diff --git a/client/src/static/icons/solid/database.svg b/src/static/icons/solid/database.svg similarity index 100% rename from client/src/static/icons/solid/database.svg rename to src/static/icons/solid/database.svg diff --git a/client/src/static/icons/solid/deaf.svg b/src/static/icons/solid/deaf.svg similarity index 100% rename from client/src/static/icons/solid/deaf.svg rename to src/static/icons/solid/deaf.svg diff --git a/client/src/static/icons/solid/debug.svg b/src/static/icons/solid/debug.svg similarity index 100% rename from client/src/static/icons/solid/debug.svg rename to src/static/icons/solid/debug.svg diff --git a/client/src/static/icons/solid/deer-rudolph.svg b/src/static/icons/solid/deer-rudolph.svg similarity index 100% rename from client/src/static/icons/solid/deer-rudolph.svg rename to src/static/icons/solid/deer-rudolph.svg diff --git a/client/src/static/icons/solid/deer.svg b/src/static/icons/solid/deer.svg similarity index 100% rename from client/src/static/icons/solid/deer.svg rename to src/static/icons/solid/deer.svg diff --git a/client/src/static/icons/solid/democrat.svg b/src/static/icons/solid/democrat.svg similarity index 100% rename from client/src/static/icons/solid/democrat.svg rename to src/static/icons/solid/democrat.svg diff --git a/client/src/static/icons/solid/desktop-alt.svg b/src/static/icons/solid/desktop-alt.svg similarity index 100% rename from client/src/static/icons/solid/desktop-alt.svg rename to src/static/icons/solid/desktop-alt.svg diff --git a/client/src/static/icons/solid/desktop.svg b/src/static/icons/solid/desktop.svg similarity index 100% rename from client/src/static/icons/solid/desktop.svg rename to src/static/icons/solid/desktop.svg diff --git a/client/src/static/icons/solid/dewpoint.svg b/src/static/icons/solid/dewpoint.svg similarity index 100% rename from client/src/static/icons/solid/dewpoint.svg rename to src/static/icons/solid/dewpoint.svg diff --git a/client/src/static/icons/solid/dharmachakra.svg b/src/static/icons/solid/dharmachakra.svg similarity index 100% rename from client/src/static/icons/solid/dharmachakra.svg rename to src/static/icons/solid/dharmachakra.svg diff --git a/client/src/static/icons/solid/diagnoses.svg b/src/static/icons/solid/diagnoses.svg similarity index 100% rename from client/src/static/icons/solid/diagnoses.svg rename to src/static/icons/solid/diagnoses.svg diff --git a/client/src/static/icons/solid/diamond.svg b/src/static/icons/solid/diamond.svg similarity index 100% rename from client/src/static/icons/solid/diamond.svg rename to src/static/icons/solid/diamond.svg diff --git a/client/src/static/icons/solid/dice-d10.svg b/src/static/icons/solid/dice-d10.svg similarity index 100% rename from client/src/static/icons/solid/dice-d10.svg rename to src/static/icons/solid/dice-d10.svg diff --git a/client/src/static/icons/solid/dice-d12.svg b/src/static/icons/solid/dice-d12.svg similarity index 100% rename from client/src/static/icons/solid/dice-d12.svg rename to src/static/icons/solid/dice-d12.svg diff --git a/client/src/static/icons/solid/dice-d20.svg b/src/static/icons/solid/dice-d20.svg similarity index 100% rename from client/src/static/icons/solid/dice-d20.svg rename to src/static/icons/solid/dice-d20.svg diff --git a/client/src/static/icons/solid/dice-d4.svg b/src/static/icons/solid/dice-d4.svg similarity index 100% rename from client/src/static/icons/solid/dice-d4.svg rename to src/static/icons/solid/dice-d4.svg diff --git a/client/src/static/icons/solid/dice-d6.svg b/src/static/icons/solid/dice-d6.svg similarity index 100% rename from client/src/static/icons/solid/dice-d6.svg rename to src/static/icons/solid/dice-d6.svg diff --git a/client/src/static/icons/solid/dice-d8.svg b/src/static/icons/solid/dice-d8.svg similarity index 100% rename from client/src/static/icons/solid/dice-d8.svg rename to src/static/icons/solid/dice-d8.svg diff --git a/client/src/static/icons/solid/dice-five.svg b/src/static/icons/solid/dice-five.svg similarity index 100% rename from client/src/static/icons/solid/dice-five.svg rename to src/static/icons/solid/dice-five.svg diff --git a/client/src/static/icons/solid/dice-four.svg b/src/static/icons/solid/dice-four.svg similarity index 100% rename from client/src/static/icons/solid/dice-four.svg rename to src/static/icons/solid/dice-four.svg diff --git a/client/src/static/icons/solid/dice-one.svg b/src/static/icons/solid/dice-one.svg similarity index 100% rename from client/src/static/icons/solid/dice-one.svg rename to src/static/icons/solid/dice-one.svg diff --git a/client/src/static/icons/solid/dice-six.svg b/src/static/icons/solid/dice-six.svg similarity index 100% rename from client/src/static/icons/solid/dice-six.svg rename to src/static/icons/solid/dice-six.svg diff --git a/client/src/static/icons/solid/dice-three.svg b/src/static/icons/solid/dice-three.svg similarity index 100% rename from client/src/static/icons/solid/dice-three.svg rename to src/static/icons/solid/dice-three.svg diff --git a/client/src/static/icons/solid/dice-two.svg b/src/static/icons/solid/dice-two.svg similarity index 100% rename from client/src/static/icons/solid/dice-two.svg rename to src/static/icons/solid/dice-two.svg diff --git a/client/src/static/icons/solid/dice.svg b/src/static/icons/solid/dice.svg similarity index 100% rename from client/src/static/icons/solid/dice.svg rename to src/static/icons/solid/dice.svg diff --git a/client/src/static/icons/solid/digging.svg b/src/static/icons/solid/digging.svg similarity index 100% rename from client/src/static/icons/solid/digging.svg rename to src/static/icons/solid/digging.svg diff --git a/client/src/static/icons/solid/digital-tachograph.svg b/src/static/icons/solid/digital-tachograph.svg similarity index 100% rename from client/src/static/icons/solid/digital-tachograph.svg rename to src/static/icons/solid/digital-tachograph.svg diff --git a/client/src/static/icons/solid/diploma.svg b/src/static/icons/solid/diploma.svg similarity index 100% rename from client/src/static/icons/solid/diploma.svg rename to src/static/icons/solid/diploma.svg diff --git a/client/src/static/icons/solid/directions.svg b/src/static/icons/solid/directions.svg similarity index 100% rename from client/src/static/icons/solid/directions.svg rename to src/static/icons/solid/directions.svg diff --git a/client/src/static/icons/solid/disc-drive.svg b/src/static/icons/solid/disc-drive.svg similarity index 100% rename from client/src/static/icons/solid/disc-drive.svg rename to src/static/icons/solid/disc-drive.svg diff --git a/client/src/static/icons/solid/disease.svg b/src/static/icons/solid/disease.svg similarity index 100% rename from client/src/static/icons/solid/disease.svg rename to src/static/icons/solid/disease.svg diff --git a/client/src/static/icons/solid/divide.svg b/src/static/icons/solid/divide.svg similarity index 100% rename from client/src/static/icons/solid/divide.svg rename to src/static/icons/solid/divide.svg diff --git a/client/src/static/icons/solid/dizzy.svg b/src/static/icons/solid/dizzy.svg similarity index 100% rename from client/src/static/icons/solid/dizzy.svg rename to src/static/icons/solid/dizzy.svg diff --git a/client/src/static/icons/solid/dna.svg b/src/static/icons/solid/dna.svg similarity index 100% rename from client/src/static/icons/solid/dna.svg rename to src/static/icons/solid/dna.svg diff --git a/client/src/static/icons/solid/do-not-enter.svg b/src/static/icons/solid/do-not-enter.svg similarity index 100% rename from client/src/static/icons/solid/do-not-enter.svg rename to src/static/icons/solid/do-not-enter.svg diff --git a/client/src/static/icons/solid/dog-leashed.svg b/src/static/icons/solid/dog-leashed.svg similarity index 100% rename from client/src/static/icons/solid/dog-leashed.svg rename to src/static/icons/solid/dog-leashed.svg diff --git a/client/src/static/icons/solid/dog.svg b/src/static/icons/solid/dog.svg similarity index 100% rename from client/src/static/icons/solid/dog.svg rename to src/static/icons/solid/dog.svg diff --git a/client/src/static/icons/solid/dollar-sign.svg b/src/static/icons/solid/dollar-sign.svg similarity index 100% rename from client/src/static/icons/solid/dollar-sign.svg rename to src/static/icons/solid/dollar-sign.svg diff --git a/client/src/static/icons/solid/dolly-empty.svg b/src/static/icons/solid/dolly-empty.svg similarity index 100% rename from client/src/static/icons/solid/dolly-empty.svg rename to src/static/icons/solid/dolly-empty.svg diff --git a/client/src/static/icons/solid/dolly-flatbed-alt.svg b/src/static/icons/solid/dolly-flatbed-alt.svg similarity index 100% rename from client/src/static/icons/solid/dolly-flatbed-alt.svg rename to src/static/icons/solid/dolly-flatbed-alt.svg diff --git a/client/src/static/icons/solid/dolly-flatbed-empty.svg b/src/static/icons/solid/dolly-flatbed-empty.svg similarity index 100% rename from client/src/static/icons/solid/dolly-flatbed-empty.svg rename to src/static/icons/solid/dolly-flatbed-empty.svg diff --git a/client/src/static/icons/solid/dolly-flatbed.svg b/src/static/icons/solid/dolly-flatbed.svg similarity index 100% rename from client/src/static/icons/solid/dolly-flatbed.svg rename to src/static/icons/solid/dolly-flatbed.svg diff --git a/client/src/static/icons/solid/dolly.svg b/src/static/icons/solid/dolly.svg similarity index 100% rename from client/src/static/icons/solid/dolly.svg rename to src/static/icons/solid/dolly.svg diff --git a/client/src/static/icons/solid/donate.svg b/src/static/icons/solid/donate.svg similarity index 100% rename from client/src/static/icons/solid/donate.svg rename to src/static/icons/solid/donate.svg diff --git a/client/src/static/icons/solid/door-closed.svg b/src/static/icons/solid/door-closed.svg similarity index 100% rename from client/src/static/icons/solid/door-closed.svg rename to src/static/icons/solid/door-closed.svg diff --git a/client/src/static/icons/solid/door-open.svg b/src/static/icons/solid/door-open.svg similarity index 100% rename from client/src/static/icons/solid/door-open.svg rename to src/static/icons/solid/door-open.svg diff --git a/client/src/static/icons/solid/dot-circle.svg b/src/static/icons/solid/dot-circle.svg similarity index 100% rename from client/src/static/icons/solid/dot-circle.svg rename to src/static/icons/solid/dot-circle.svg diff --git a/client/src/static/icons/solid/dove.svg b/src/static/icons/solid/dove.svg similarity index 100% rename from client/src/static/icons/solid/dove.svg rename to src/static/icons/solid/dove.svg diff --git a/client/src/static/icons/solid/download.svg b/src/static/icons/solid/download.svg similarity index 100% rename from client/src/static/icons/solid/download.svg rename to src/static/icons/solid/download.svg diff --git a/client/src/static/icons/solid/drafting-compass.svg b/src/static/icons/solid/drafting-compass.svg similarity index 100% rename from client/src/static/icons/solid/drafting-compass.svg rename to src/static/icons/solid/drafting-compass.svg diff --git a/client/src/static/icons/solid/dragon.svg b/src/static/icons/solid/dragon.svg similarity index 100% rename from client/src/static/icons/solid/dragon.svg rename to src/static/icons/solid/dragon.svg diff --git a/client/src/static/icons/solid/draw-circle.svg b/src/static/icons/solid/draw-circle.svg similarity index 100% rename from client/src/static/icons/solid/draw-circle.svg rename to src/static/icons/solid/draw-circle.svg diff --git a/client/src/static/icons/solid/draw-polygon.svg b/src/static/icons/solid/draw-polygon.svg similarity index 100% rename from client/src/static/icons/solid/draw-polygon.svg rename to src/static/icons/solid/draw-polygon.svg diff --git a/client/src/static/icons/solid/draw-square.svg b/src/static/icons/solid/draw-square.svg similarity index 100% rename from client/src/static/icons/solid/draw-square.svg rename to src/static/icons/solid/draw-square.svg diff --git a/client/src/static/icons/solid/dreidel.svg b/src/static/icons/solid/dreidel.svg similarity index 100% rename from client/src/static/icons/solid/dreidel.svg rename to src/static/icons/solid/dreidel.svg diff --git a/client/src/static/icons/solid/drone-alt.svg b/src/static/icons/solid/drone-alt.svg similarity index 100% rename from client/src/static/icons/solid/drone-alt.svg rename to src/static/icons/solid/drone-alt.svg diff --git a/client/src/static/icons/solid/drone.svg b/src/static/icons/solid/drone.svg similarity index 100% rename from client/src/static/icons/solid/drone.svg rename to src/static/icons/solid/drone.svg diff --git a/client/src/static/icons/solid/drum-steelpan.svg b/src/static/icons/solid/drum-steelpan.svg similarity index 100% rename from client/src/static/icons/solid/drum-steelpan.svg rename to src/static/icons/solid/drum-steelpan.svg diff --git a/client/src/static/icons/solid/drum.svg b/src/static/icons/solid/drum.svg similarity index 100% rename from client/src/static/icons/solid/drum.svg rename to src/static/icons/solid/drum.svg diff --git a/client/src/static/icons/solid/drumstick-bite.svg b/src/static/icons/solid/drumstick-bite.svg similarity index 100% rename from client/src/static/icons/solid/drumstick-bite.svg rename to src/static/icons/solid/drumstick-bite.svg diff --git a/client/src/static/icons/solid/drumstick.svg b/src/static/icons/solid/drumstick.svg similarity index 100% rename from client/src/static/icons/solid/drumstick.svg rename to src/static/icons/solid/drumstick.svg diff --git a/client/src/static/icons/solid/dryer-alt.svg b/src/static/icons/solid/dryer-alt.svg similarity index 100% rename from client/src/static/icons/solid/dryer-alt.svg rename to src/static/icons/solid/dryer-alt.svg diff --git a/client/src/static/icons/solid/dryer.svg b/src/static/icons/solid/dryer.svg similarity index 100% rename from client/src/static/icons/solid/dryer.svg rename to src/static/icons/solid/dryer.svg diff --git a/client/src/static/icons/solid/duck.svg b/src/static/icons/solid/duck.svg similarity index 100% rename from client/src/static/icons/solid/duck.svg rename to src/static/icons/solid/duck.svg diff --git a/client/src/static/icons/solid/dumbbell.svg b/src/static/icons/solid/dumbbell.svg similarity index 100% rename from client/src/static/icons/solid/dumbbell.svg rename to src/static/icons/solid/dumbbell.svg diff --git a/client/src/static/icons/solid/dumpster-fire.svg b/src/static/icons/solid/dumpster-fire.svg similarity index 100% rename from client/src/static/icons/solid/dumpster-fire.svg rename to src/static/icons/solid/dumpster-fire.svg diff --git a/client/src/static/icons/solid/dumpster.svg b/src/static/icons/solid/dumpster.svg similarity index 100% rename from client/src/static/icons/solid/dumpster.svg rename to src/static/icons/solid/dumpster.svg diff --git a/client/src/static/icons/solid/dungeon.svg b/src/static/icons/solid/dungeon.svg similarity index 100% rename from client/src/static/icons/solid/dungeon.svg rename to src/static/icons/solid/dungeon.svg diff --git a/client/src/static/icons/solid/ear-muffs.svg b/src/static/icons/solid/ear-muffs.svg similarity index 100% rename from client/src/static/icons/solid/ear-muffs.svg rename to src/static/icons/solid/ear-muffs.svg diff --git a/client/src/static/icons/solid/ear.svg b/src/static/icons/solid/ear.svg similarity index 100% rename from client/src/static/icons/solid/ear.svg rename to src/static/icons/solid/ear.svg diff --git a/client/src/static/icons/solid/eclipse-alt.svg b/src/static/icons/solid/eclipse-alt.svg similarity index 100% rename from client/src/static/icons/solid/eclipse-alt.svg rename to src/static/icons/solid/eclipse-alt.svg diff --git a/client/src/static/icons/solid/eclipse.svg b/src/static/icons/solid/eclipse.svg similarity index 100% rename from client/src/static/icons/solid/eclipse.svg rename to src/static/icons/solid/eclipse.svg diff --git a/client/src/static/icons/solid/edit.svg b/src/static/icons/solid/edit.svg similarity index 100% rename from client/src/static/icons/solid/edit.svg rename to src/static/icons/solid/edit.svg diff --git a/client/src/static/icons/solid/egg-fried.svg b/src/static/icons/solid/egg-fried.svg similarity index 100% rename from client/src/static/icons/solid/egg-fried.svg rename to src/static/icons/solid/egg-fried.svg diff --git a/client/src/static/icons/solid/egg.svg b/src/static/icons/solid/egg.svg similarity index 100% rename from client/src/static/icons/solid/egg.svg rename to src/static/icons/solid/egg.svg diff --git a/client/src/static/icons/solid/eject.svg b/src/static/icons/solid/eject.svg similarity index 100% rename from client/src/static/icons/solid/eject.svg rename to src/static/icons/solid/eject.svg diff --git a/client/src/static/icons/solid/elephant.svg b/src/static/icons/solid/elephant.svg similarity index 100% rename from client/src/static/icons/solid/elephant.svg rename to src/static/icons/solid/elephant.svg diff --git a/client/src/static/icons/solid/ellipsis-h-alt.svg b/src/static/icons/solid/ellipsis-h-alt.svg similarity index 100% rename from client/src/static/icons/solid/ellipsis-h-alt.svg rename to src/static/icons/solid/ellipsis-h-alt.svg diff --git a/client/src/static/icons/solid/ellipsis-h.svg b/src/static/icons/solid/ellipsis-h.svg similarity index 100% rename from client/src/static/icons/solid/ellipsis-h.svg rename to src/static/icons/solid/ellipsis-h.svg diff --git a/client/src/static/icons/solid/ellipsis-v-alt.svg b/src/static/icons/solid/ellipsis-v-alt.svg similarity index 100% rename from client/src/static/icons/solid/ellipsis-v-alt.svg rename to src/static/icons/solid/ellipsis-v-alt.svg diff --git a/client/src/static/icons/solid/ellipsis-v.svg b/src/static/icons/solid/ellipsis-v.svg similarity index 100% rename from client/src/static/icons/solid/ellipsis-v.svg rename to src/static/icons/solid/ellipsis-v.svg diff --git a/client/src/static/icons/solid/empty-set.svg b/src/static/icons/solid/empty-set.svg similarity index 100% rename from client/src/static/icons/solid/empty-set.svg rename to src/static/icons/solid/empty-set.svg diff --git a/client/src/static/icons/solid/engine-warning.svg b/src/static/icons/solid/engine-warning.svg similarity index 100% rename from client/src/static/icons/solid/engine-warning.svg rename to src/static/icons/solid/engine-warning.svg diff --git a/client/src/static/icons/solid/envelope-open-dollar.svg b/src/static/icons/solid/envelope-open-dollar.svg similarity index 100% rename from client/src/static/icons/solid/envelope-open-dollar.svg rename to src/static/icons/solid/envelope-open-dollar.svg diff --git a/client/src/static/icons/solid/envelope-open-text.svg b/src/static/icons/solid/envelope-open-text.svg similarity index 100% rename from client/src/static/icons/solid/envelope-open-text.svg rename to src/static/icons/solid/envelope-open-text.svg diff --git a/client/src/static/icons/solid/envelope-open.svg b/src/static/icons/solid/envelope-open.svg similarity index 100% rename from client/src/static/icons/solid/envelope-open.svg rename to src/static/icons/solid/envelope-open.svg diff --git a/client/src/static/icons/solid/envelope-square.svg b/src/static/icons/solid/envelope-square.svg similarity index 100% rename from client/src/static/icons/solid/envelope-square.svg rename to src/static/icons/solid/envelope-square.svg diff --git a/client/src/static/icons/solid/envelope.svg b/src/static/icons/solid/envelope.svg similarity index 100% rename from client/src/static/icons/solid/envelope.svg rename to src/static/icons/solid/envelope.svg diff --git a/client/src/static/icons/solid/equals.svg b/src/static/icons/solid/equals.svg similarity index 100% rename from client/src/static/icons/solid/equals.svg rename to src/static/icons/solid/equals.svg diff --git a/client/src/static/icons/solid/eraser.svg b/src/static/icons/solid/eraser.svg similarity index 100% rename from client/src/static/icons/solid/eraser.svg rename to src/static/icons/solid/eraser.svg diff --git a/client/src/static/icons/solid/ethernet.svg b/src/static/icons/solid/ethernet.svg similarity index 100% rename from client/src/static/icons/solid/ethernet.svg rename to src/static/icons/solid/ethernet.svg diff --git a/client/src/static/icons/solid/euro-sign.svg b/src/static/icons/solid/euro-sign.svg similarity index 100% rename from client/src/static/icons/solid/euro-sign.svg rename to src/static/icons/solid/euro-sign.svg diff --git a/client/src/static/icons/solid/exchange-alt.svg b/src/static/icons/solid/exchange-alt.svg similarity index 100% rename from client/src/static/icons/solid/exchange-alt.svg rename to src/static/icons/solid/exchange-alt.svg diff --git a/client/src/static/icons/solid/exchange.svg b/src/static/icons/solid/exchange.svg similarity index 100% rename from client/src/static/icons/solid/exchange.svg rename to src/static/icons/solid/exchange.svg diff --git a/client/src/static/icons/solid/exclamation-circle.svg b/src/static/icons/solid/exclamation-circle.svg similarity index 100% rename from client/src/static/icons/solid/exclamation-circle.svg rename to src/static/icons/solid/exclamation-circle.svg diff --git a/client/src/static/icons/solid/exclamation-square.svg b/src/static/icons/solid/exclamation-square.svg similarity index 100% rename from client/src/static/icons/solid/exclamation-square.svg rename to src/static/icons/solid/exclamation-square.svg diff --git a/client/src/static/icons/solid/exclamation-triangle.svg b/src/static/icons/solid/exclamation-triangle.svg similarity index 100% rename from client/src/static/icons/solid/exclamation-triangle.svg rename to src/static/icons/solid/exclamation-triangle.svg diff --git a/client/src/static/icons/solid/exclamation.svg b/src/static/icons/solid/exclamation.svg similarity index 100% rename from client/src/static/icons/solid/exclamation.svg rename to src/static/icons/solid/exclamation.svg diff --git a/client/src/static/icons/solid/expand-alt.svg b/src/static/icons/solid/expand-alt.svg similarity index 100% rename from client/src/static/icons/solid/expand-alt.svg rename to src/static/icons/solid/expand-alt.svg diff --git a/client/src/static/icons/solid/expand-arrows-alt.svg b/src/static/icons/solid/expand-arrows-alt.svg similarity index 100% rename from client/src/static/icons/solid/expand-arrows-alt.svg rename to src/static/icons/solid/expand-arrows-alt.svg diff --git a/client/src/static/icons/solid/expand-arrows.svg b/src/static/icons/solid/expand-arrows.svg similarity index 100% rename from client/src/static/icons/solid/expand-arrows.svg rename to src/static/icons/solid/expand-arrows.svg diff --git a/client/src/static/icons/solid/expand-wide.svg b/src/static/icons/solid/expand-wide.svg similarity index 100% rename from client/src/static/icons/solid/expand-wide.svg rename to src/static/icons/solid/expand-wide.svg diff --git a/client/src/static/icons/solid/expand.svg b/src/static/icons/solid/expand.svg similarity index 100% rename from client/src/static/icons/solid/expand.svg rename to src/static/icons/solid/expand.svg diff --git a/client/src/static/icons/solid/external-link-alt.svg b/src/static/icons/solid/external-link-alt.svg similarity index 100% rename from client/src/static/icons/solid/external-link-alt.svg rename to src/static/icons/solid/external-link-alt.svg diff --git a/client/src/static/icons/solid/external-link-square-alt.svg b/src/static/icons/solid/external-link-square-alt.svg similarity index 100% rename from client/src/static/icons/solid/external-link-square-alt.svg rename to src/static/icons/solid/external-link-square-alt.svg diff --git a/client/src/static/icons/solid/external-link-square.svg b/src/static/icons/solid/external-link-square.svg similarity index 100% rename from client/src/static/icons/solid/external-link-square.svg rename to src/static/icons/solid/external-link-square.svg diff --git a/client/src/static/icons/solid/external-link.svg b/src/static/icons/solid/external-link.svg similarity index 100% rename from client/src/static/icons/solid/external-link.svg rename to src/static/icons/solid/external-link.svg diff --git a/client/src/static/icons/solid/eye-dropper.svg b/src/static/icons/solid/eye-dropper.svg similarity index 100% rename from client/src/static/icons/solid/eye-dropper.svg rename to src/static/icons/solid/eye-dropper.svg diff --git a/client/src/static/icons/solid/eye-evil.svg b/src/static/icons/solid/eye-evil.svg similarity index 100% rename from client/src/static/icons/solid/eye-evil.svg rename to src/static/icons/solid/eye-evil.svg diff --git a/client/src/static/icons/solid/eye-slash.svg b/src/static/icons/solid/eye-slash.svg similarity index 100% rename from client/src/static/icons/solid/eye-slash.svg rename to src/static/icons/solid/eye-slash.svg diff --git a/client/src/static/icons/solid/eye.svg b/src/static/icons/solid/eye.svg similarity index 100% rename from client/src/static/icons/solid/eye.svg rename to src/static/icons/solid/eye.svg diff --git a/client/src/static/icons/solid/fan-table.svg b/src/static/icons/solid/fan-table.svg similarity index 100% rename from client/src/static/icons/solid/fan-table.svg rename to src/static/icons/solid/fan-table.svg diff --git a/client/src/static/icons/solid/fan.svg b/src/static/icons/solid/fan.svg similarity index 100% rename from client/src/static/icons/solid/fan.svg rename to src/static/icons/solid/fan.svg diff --git a/client/src/static/icons/solid/farm.svg b/src/static/icons/solid/farm.svg similarity index 100% rename from client/src/static/icons/solid/farm.svg rename to src/static/icons/solid/farm.svg diff --git a/client/src/static/icons/solid/fast-backward.svg b/src/static/icons/solid/fast-backward.svg similarity index 100% rename from client/src/static/icons/solid/fast-backward.svg rename to src/static/icons/solid/fast-backward.svg diff --git a/client/src/static/icons/solid/fast-forward.svg b/src/static/icons/solid/fast-forward.svg similarity index 100% rename from client/src/static/icons/solid/fast-forward.svg rename to src/static/icons/solid/fast-forward.svg diff --git a/client/src/static/icons/solid/faucet-drip.svg b/src/static/icons/solid/faucet-drip.svg similarity index 100% rename from client/src/static/icons/solid/faucet-drip.svg rename to src/static/icons/solid/faucet-drip.svg diff --git a/client/src/static/icons/solid/faucet.svg b/src/static/icons/solid/faucet.svg similarity index 100% rename from client/src/static/icons/solid/faucet.svg rename to src/static/icons/solid/faucet.svg diff --git a/client/src/static/icons/solid/fax.svg b/src/static/icons/solid/fax.svg similarity index 100% rename from client/src/static/icons/solid/fax.svg rename to src/static/icons/solid/fax.svg diff --git a/client/src/static/icons/solid/feather-alt.svg b/src/static/icons/solid/feather-alt.svg similarity index 100% rename from client/src/static/icons/solid/feather-alt.svg rename to src/static/icons/solid/feather-alt.svg diff --git a/client/src/static/icons/solid/feather.svg b/src/static/icons/solid/feather.svg similarity index 100% rename from client/src/static/icons/solid/feather.svg rename to src/static/icons/solid/feather.svg diff --git a/client/src/static/icons/solid/female.svg b/src/static/icons/solid/female.svg similarity index 100% rename from client/src/static/icons/solid/female.svg rename to src/static/icons/solid/female.svg diff --git a/client/src/static/icons/solid/field-hockey.svg b/src/static/icons/solid/field-hockey.svg similarity index 100% rename from client/src/static/icons/solid/field-hockey.svg rename to src/static/icons/solid/field-hockey.svg diff --git a/client/src/static/icons/solid/fighter-jet.svg b/src/static/icons/solid/fighter-jet.svg similarity index 100% rename from client/src/static/icons/solid/fighter-jet.svg rename to src/static/icons/solid/fighter-jet.svg diff --git a/client/src/static/icons/solid/file-alt.svg b/src/static/icons/solid/file-alt.svg similarity index 100% rename from client/src/static/icons/solid/file-alt.svg rename to src/static/icons/solid/file-alt.svg diff --git a/client/src/static/icons/solid/file-archive.svg b/src/static/icons/solid/file-archive.svg similarity index 100% rename from client/src/static/icons/solid/file-archive.svg rename to src/static/icons/solid/file-archive.svg diff --git a/client/src/static/icons/solid/file-audio.svg b/src/static/icons/solid/file-audio.svg similarity index 100% rename from client/src/static/icons/solid/file-audio.svg rename to src/static/icons/solid/file-audio.svg diff --git a/client/src/static/icons/solid/file-certificate.svg b/src/static/icons/solid/file-certificate.svg similarity index 100% rename from client/src/static/icons/solid/file-certificate.svg rename to src/static/icons/solid/file-certificate.svg diff --git a/client/src/static/icons/solid/file-chart-line.svg b/src/static/icons/solid/file-chart-line.svg similarity index 100% rename from client/src/static/icons/solid/file-chart-line.svg rename to src/static/icons/solid/file-chart-line.svg diff --git a/client/src/static/icons/solid/file-chart-pie.svg b/src/static/icons/solid/file-chart-pie.svg similarity index 100% rename from client/src/static/icons/solid/file-chart-pie.svg rename to src/static/icons/solid/file-chart-pie.svg diff --git a/client/src/static/icons/solid/file-check.svg b/src/static/icons/solid/file-check.svg similarity index 100% rename from client/src/static/icons/solid/file-check.svg rename to src/static/icons/solid/file-check.svg diff --git a/client/src/static/icons/solid/file-code.svg b/src/static/icons/solid/file-code.svg similarity index 100% rename from client/src/static/icons/solid/file-code.svg rename to src/static/icons/solid/file-code.svg diff --git a/client/src/static/icons/solid/file-contract.svg b/src/static/icons/solid/file-contract.svg similarity index 100% rename from client/src/static/icons/solid/file-contract.svg rename to src/static/icons/solid/file-contract.svg diff --git a/client/src/static/icons/solid/file-csv.svg b/src/static/icons/solid/file-csv.svg similarity index 100% rename from client/src/static/icons/solid/file-csv.svg rename to src/static/icons/solid/file-csv.svg diff --git a/client/src/static/icons/solid/file-download.svg b/src/static/icons/solid/file-download.svg similarity index 100% rename from client/src/static/icons/solid/file-download.svg rename to src/static/icons/solid/file-download.svg diff --git a/client/src/static/icons/solid/file-edit.svg b/src/static/icons/solid/file-edit.svg similarity index 100% rename from client/src/static/icons/solid/file-edit.svg rename to src/static/icons/solid/file-edit.svg diff --git a/client/src/static/icons/solid/file-excel.svg b/src/static/icons/solid/file-excel.svg similarity index 100% rename from client/src/static/icons/solid/file-excel.svg rename to src/static/icons/solid/file-excel.svg diff --git a/client/src/static/icons/solid/file-exclamation.svg b/src/static/icons/solid/file-exclamation.svg similarity index 100% rename from client/src/static/icons/solid/file-exclamation.svg rename to src/static/icons/solid/file-exclamation.svg diff --git a/client/src/static/icons/solid/file-export.svg b/src/static/icons/solid/file-export.svg similarity index 100% rename from client/src/static/icons/solid/file-export.svg rename to src/static/icons/solid/file-export.svg diff --git a/client/src/static/icons/solid/file-image.svg b/src/static/icons/solid/file-image.svg similarity index 100% rename from client/src/static/icons/solid/file-image.svg rename to src/static/icons/solid/file-image.svg diff --git a/client/src/static/icons/solid/file-import.svg b/src/static/icons/solid/file-import.svg similarity index 100% rename from client/src/static/icons/solid/file-import.svg rename to src/static/icons/solid/file-import.svg diff --git a/client/src/static/icons/solid/file-invoice-dollar.svg b/src/static/icons/solid/file-invoice-dollar.svg similarity index 100% rename from client/src/static/icons/solid/file-invoice-dollar.svg rename to src/static/icons/solid/file-invoice-dollar.svg diff --git a/client/src/static/icons/solid/file-invoice.svg b/src/static/icons/solid/file-invoice.svg similarity index 100% rename from client/src/static/icons/solid/file-invoice.svg rename to src/static/icons/solid/file-invoice.svg diff --git a/client/src/static/icons/solid/file-medical-alt.svg b/src/static/icons/solid/file-medical-alt.svg similarity index 100% rename from client/src/static/icons/solid/file-medical-alt.svg rename to src/static/icons/solid/file-medical-alt.svg diff --git a/client/src/static/icons/solid/file-medical.svg b/src/static/icons/solid/file-medical.svg similarity index 100% rename from client/src/static/icons/solid/file-medical.svg rename to src/static/icons/solid/file-medical.svg diff --git a/client/src/static/icons/solid/file-minus.svg b/src/static/icons/solid/file-minus.svg similarity index 100% rename from client/src/static/icons/solid/file-minus.svg rename to src/static/icons/solid/file-minus.svg diff --git a/client/src/static/icons/solid/file-music.svg b/src/static/icons/solid/file-music.svg similarity index 100% rename from client/src/static/icons/solid/file-music.svg rename to src/static/icons/solid/file-music.svg diff --git a/client/src/static/icons/solid/file-pdf.svg b/src/static/icons/solid/file-pdf.svg similarity index 100% rename from client/src/static/icons/solid/file-pdf.svg rename to src/static/icons/solid/file-pdf.svg diff --git a/client/src/static/icons/solid/file-plus.svg b/src/static/icons/solid/file-plus.svg similarity index 100% rename from client/src/static/icons/solid/file-plus.svg rename to src/static/icons/solid/file-plus.svg diff --git a/client/src/static/icons/solid/file-powerpoint.svg b/src/static/icons/solid/file-powerpoint.svg similarity index 100% rename from client/src/static/icons/solid/file-powerpoint.svg rename to src/static/icons/solid/file-powerpoint.svg diff --git a/client/src/static/icons/solid/file-prescription.svg b/src/static/icons/solid/file-prescription.svg similarity index 100% rename from client/src/static/icons/solid/file-prescription.svg rename to src/static/icons/solid/file-prescription.svg diff --git a/client/src/static/icons/solid/file-search.svg b/src/static/icons/solid/file-search.svg similarity index 100% rename from client/src/static/icons/solid/file-search.svg rename to src/static/icons/solid/file-search.svg diff --git a/client/src/static/icons/solid/file-signature.svg b/src/static/icons/solid/file-signature.svg similarity index 100% rename from client/src/static/icons/solid/file-signature.svg rename to src/static/icons/solid/file-signature.svg diff --git a/client/src/static/icons/solid/file-spreadsheet.svg b/src/static/icons/solid/file-spreadsheet.svg similarity index 100% rename from client/src/static/icons/solid/file-spreadsheet.svg rename to src/static/icons/solid/file-spreadsheet.svg diff --git a/client/src/static/icons/solid/file-times.svg b/src/static/icons/solid/file-times.svg similarity index 100% rename from client/src/static/icons/solid/file-times.svg rename to src/static/icons/solid/file-times.svg diff --git a/client/src/static/icons/solid/file-upload.svg b/src/static/icons/solid/file-upload.svg similarity index 100% rename from client/src/static/icons/solid/file-upload.svg rename to src/static/icons/solid/file-upload.svg diff --git a/client/src/static/icons/solid/file-user.svg b/src/static/icons/solid/file-user.svg similarity index 100% rename from client/src/static/icons/solid/file-user.svg rename to src/static/icons/solid/file-user.svg diff --git a/client/src/static/icons/solid/file-video.svg b/src/static/icons/solid/file-video.svg similarity index 100% rename from client/src/static/icons/solid/file-video.svg rename to src/static/icons/solid/file-video.svg diff --git a/client/src/static/icons/solid/file-word.svg b/src/static/icons/solid/file-word.svg similarity index 100% rename from client/src/static/icons/solid/file-word.svg rename to src/static/icons/solid/file-word.svg diff --git a/client/src/static/icons/solid/file.svg b/src/static/icons/solid/file.svg similarity index 100% rename from client/src/static/icons/solid/file.svg rename to src/static/icons/solid/file.svg diff --git a/client/src/static/icons/solid/files-medical.svg b/src/static/icons/solid/files-medical.svg similarity index 100% rename from client/src/static/icons/solid/files-medical.svg rename to src/static/icons/solid/files-medical.svg diff --git a/client/src/static/icons/solid/fill-drip.svg b/src/static/icons/solid/fill-drip.svg similarity index 100% rename from client/src/static/icons/solid/fill-drip.svg rename to src/static/icons/solid/fill-drip.svg diff --git a/client/src/static/icons/solid/fill.svg b/src/static/icons/solid/fill.svg similarity index 100% rename from client/src/static/icons/solid/fill.svg rename to src/static/icons/solid/fill.svg diff --git a/client/src/static/icons/solid/film-alt.svg b/src/static/icons/solid/film-alt.svg similarity index 100% rename from client/src/static/icons/solid/film-alt.svg rename to src/static/icons/solid/film-alt.svg diff --git a/client/src/static/icons/solid/film-canister.svg b/src/static/icons/solid/film-canister.svg similarity index 100% rename from client/src/static/icons/solid/film-canister.svg rename to src/static/icons/solid/film-canister.svg diff --git a/client/src/static/icons/solid/film.svg b/src/static/icons/solid/film.svg similarity index 100% rename from client/src/static/icons/solid/film.svg rename to src/static/icons/solid/film.svg diff --git a/client/src/static/icons/solid/filter.svg b/src/static/icons/solid/filter.svg similarity index 100% rename from client/src/static/icons/solid/filter.svg rename to src/static/icons/solid/filter.svg diff --git a/client/src/static/icons/solid/fingerprint.svg b/src/static/icons/solid/fingerprint.svg similarity index 100% rename from client/src/static/icons/solid/fingerprint.svg rename to src/static/icons/solid/fingerprint.svg diff --git a/client/src/static/icons/solid/fire-alt.svg b/src/static/icons/solid/fire-alt.svg similarity index 100% rename from client/src/static/icons/solid/fire-alt.svg rename to src/static/icons/solid/fire-alt.svg diff --git a/client/src/static/icons/solid/fire-extinguisher.svg b/src/static/icons/solid/fire-extinguisher.svg similarity index 100% rename from client/src/static/icons/solid/fire-extinguisher.svg rename to src/static/icons/solid/fire-extinguisher.svg diff --git a/client/src/static/icons/solid/fire-smoke.svg b/src/static/icons/solid/fire-smoke.svg similarity index 100% rename from client/src/static/icons/solid/fire-smoke.svg rename to src/static/icons/solid/fire-smoke.svg diff --git a/client/src/static/icons/solid/fire.svg b/src/static/icons/solid/fire.svg similarity index 100% rename from client/src/static/icons/solid/fire.svg rename to src/static/icons/solid/fire.svg diff --git a/client/src/static/icons/solid/fireplace.svg b/src/static/icons/solid/fireplace.svg similarity index 100% rename from client/src/static/icons/solid/fireplace.svg rename to src/static/icons/solid/fireplace.svg diff --git a/client/src/static/icons/solid/first-aid.svg b/src/static/icons/solid/first-aid.svg similarity index 100% rename from client/src/static/icons/solid/first-aid.svg rename to src/static/icons/solid/first-aid.svg diff --git a/client/src/static/icons/solid/fish-cooked.svg b/src/static/icons/solid/fish-cooked.svg similarity index 100% rename from client/src/static/icons/solid/fish-cooked.svg rename to src/static/icons/solid/fish-cooked.svg diff --git a/client/src/static/icons/solid/fish.svg b/src/static/icons/solid/fish.svg similarity index 100% rename from client/src/static/icons/solid/fish.svg rename to src/static/icons/solid/fish.svg diff --git a/client/src/static/icons/solid/fist-raised.svg b/src/static/icons/solid/fist-raised.svg similarity index 100% rename from client/src/static/icons/solid/fist-raised.svg rename to src/static/icons/solid/fist-raised.svg diff --git a/client/src/static/icons/solid/flag-alt.svg b/src/static/icons/solid/flag-alt.svg similarity index 100% rename from client/src/static/icons/solid/flag-alt.svg rename to src/static/icons/solid/flag-alt.svg diff --git a/client/src/static/icons/solid/flag-checkered.svg b/src/static/icons/solid/flag-checkered.svg similarity index 100% rename from client/src/static/icons/solid/flag-checkered.svg rename to src/static/icons/solid/flag-checkered.svg diff --git a/client/src/static/icons/solid/flag-usa.svg b/src/static/icons/solid/flag-usa.svg similarity index 100% rename from client/src/static/icons/solid/flag-usa.svg rename to src/static/icons/solid/flag-usa.svg diff --git a/client/src/static/icons/solid/flag.svg b/src/static/icons/solid/flag.svg similarity index 100% rename from client/src/static/icons/solid/flag.svg rename to src/static/icons/solid/flag.svg diff --git a/client/src/static/icons/solid/flame.svg b/src/static/icons/solid/flame.svg similarity index 100% rename from client/src/static/icons/solid/flame.svg rename to src/static/icons/solid/flame.svg diff --git a/client/src/static/icons/solid/flashlight.svg b/src/static/icons/solid/flashlight.svg similarity index 100% rename from client/src/static/icons/solid/flashlight.svg rename to src/static/icons/solid/flashlight.svg diff --git a/client/src/static/icons/solid/flask-poison.svg b/src/static/icons/solid/flask-poison.svg similarity index 100% rename from client/src/static/icons/solid/flask-poison.svg rename to src/static/icons/solid/flask-poison.svg diff --git a/client/src/static/icons/solid/flask-potion.svg b/src/static/icons/solid/flask-potion.svg similarity index 100% rename from client/src/static/icons/solid/flask-potion.svg rename to src/static/icons/solid/flask-potion.svg diff --git a/client/src/static/icons/solid/flask.svg b/src/static/icons/solid/flask.svg similarity index 100% rename from client/src/static/icons/solid/flask.svg rename to src/static/icons/solid/flask.svg diff --git a/client/src/static/icons/solid/flower-daffodil.svg b/src/static/icons/solid/flower-daffodil.svg similarity index 100% rename from client/src/static/icons/solid/flower-daffodil.svg rename to src/static/icons/solid/flower-daffodil.svg diff --git a/client/src/static/icons/solid/flower-tulip.svg b/src/static/icons/solid/flower-tulip.svg similarity index 100% rename from client/src/static/icons/solid/flower-tulip.svg rename to src/static/icons/solid/flower-tulip.svg diff --git a/client/src/static/icons/solid/flower.svg b/src/static/icons/solid/flower.svg similarity index 100% rename from client/src/static/icons/solid/flower.svg rename to src/static/icons/solid/flower.svg diff --git a/client/src/static/icons/solid/flushed.svg b/src/static/icons/solid/flushed.svg similarity index 100% rename from client/src/static/icons/solid/flushed.svg rename to src/static/icons/solid/flushed.svg diff --git a/client/src/static/icons/solid/flute.svg b/src/static/icons/solid/flute.svg similarity index 100% rename from client/src/static/icons/solid/flute.svg rename to src/static/icons/solid/flute.svg diff --git a/client/src/static/icons/solid/flux-capacitor.svg b/src/static/icons/solid/flux-capacitor.svg similarity index 100% rename from client/src/static/icons/solid/flux-capacitor.svg rename to src/static/icons/solid/flux-capacitor.svg diff --git a/client/src/static/icons/solid/fog.svg b/src/static/icons/solid/fog.svg similarity index 100% rename from client/src/static/icons/solid/fog.svg rename to src/static/icons/solid/fog.svg diff --git a/client/src/static/icons/solid/folder-minus.svg b/src/static/icons/solid/folder-minus.svg similarity index 100% rename from client/src/static/icons/solid/folder-minus.svg rename to src/static/icons/solid/folder-minus.svg diff --git a/client/src/static/icons/solid/folder-open.svg b/src/static/icons/solid/folder-open.svg similarity index 100% rename from client/src/static/icons/solid/folder-open.svg rename to src/static/icons/solid/folder-open.svg diff --git a/client/src/static/icons/solid/folder-plus.svg b/src/static/icons/solid/folder-plus.svg similarity index 100% rename from client/src/static/icons/solid/folder-plus.svg rename to src/static/icons/solid/folder-plus.svg diff --git a/client/src/static/icons/solid/folder-times.svg b/src/static/icons/solid/folder-times.svg similarity index 100% rename from client/src/static/icons/solid/folder-times.svg rename to src/static/icons/solid/folder-times.svg diff --git a/client/src/static/icons/solid/folder-tree.svg b/src/static/icons/solid/folder-tree.svg similarity index 100% rename from client/src/static/icons/solid/folder-tree.svg rename to src/static/icons/solid/folder-tree.svg diff --git a/client/src/static/icons/solid/folder.svg b/src/static/icons/solid/folder.svg similarity index 100% rename from client/src/static/icons/solid/folder.svg rename to src/static/icons/solid/folder.svg diff --git a/client/src/static/icons/solid/folders.svg b/src/static/icons/solid/folders.svg similarity index 100% rename from client/src/static/icons/solid/folders.svg rename to src/static/icons/solid/folders.svg diff --git a/client/src/static/icons/solid/font-awesome-logo-full.svg b/src/static/icons/solid/font-awesome-logo-full.svg similarity index 100% rename from client/src/static/icons/solid/font-awesome-logo-full.svg rename to src/static/icons/solid/font-awesome-logo-full.svg diff --git a/client/src/static/icons/solid/font-case.svg b/src/static/icons/solid/font-case.svg similarity index 100% rename from client/src/static/icons/solid/font-case.svg rename to src/static/icons/solid/font-case.svg diff --git a/client/src/static/icons/solid/font.svg b/src/static/icons/solid/font.svg similarity index 100% rename from client/src/static/icons/solid/font.svg rename to src/static/icons/solid/font.svg diff --git a/client/src/static/icons/solid/football-ball.svg b/src/static/icons/solid/football-ball.svg similarity index 100% rename from client/src/static/icons/solid/football-ball.svg rename to src/static/icons/solid/football-ball.svg diff --git a/client/src/static/icons/solid/football-helmet.svg b/src/static/icons/solid/football-helmet.svg similarity index 100% rename from client/src/static/icons/solid/football-helmet.svg rename to src/static/icons/solid/football-helmet.svg diff --git a/client/src/static/icons/solid/forklift.svg b/src/static/icons/solid/forklift.svg similarity index 100% rename from client/src/static/icons/solid/forklift.svg rename to src/static/icons/solid/forklift.svg diff --git a/client/src/static/icons/solid/forward.svg b/src/static/icons/solid/forward.svg similarity index 100% rename from client/src/static/icons/solid/forward.svg rename to src/static/icons/solid/forward.svg diff --git a/client/src/static/icons/solid/fragile.svg b/src/static/icons/solid/fragile.svg similarity index 100% rename from client/src/static/icons/solid/fragile.svg rename to src/static/icons/solid/fragile.svg diff --git a/client/src/static/icons/solid/french-fries.svg b/src/static/icons/solid/french-fries.svg similarity index 100% rename from client/src/static/icons/solid/french-fries.svg rename to src/static/icons/solid/french-fries.svg diff --git a/client/src/static/icons/solid/frog.svg b/src/static/icons/solid/frog.svg similarity index 100% rename from client/src/static/icons/solid/frog.svg rename to src/static/icons/solid/frog.svg diff --git a/client/src/static/icons/solid/frosty-head.svg b/src/static/icons/solid/frosty-head.svg similarity index 100% rename from client/src/static/icons/solid/frosty-head.svg rename to src/static/icons/solid/frosty-head.svg diff --git a/client/src/static/icons/solid/frown-open.svg b/src/static/icons/solid/frown-open.svg similarity index 100% rename from client/src/static/icons/solid/frown-open.svg rename to src/static/icons/solid/frown-open.svg diff --git a/client/src/static/icons/solid/frown.svg b/src/static/icons/solid/frown.svg similarity index 100% rename from client/src/static/icons/solid/frown.svg rename to src/static/icons/solid/frown.svg diff --git a/client/src/static/icons/solid/function.svg b/src/static/icons/solid/function.svg similarity index 100% rename from client/src/static/icons/solid/function.svg rename to src/static/icons/solid/function.svg diff --git a/client/src/static/icons/solid/funnel-dollar.svg b/src/static/icons/solid/funnel-dollar.svg similarity index 100% rename from client/src/static/icons/solid/funnel-dollar.svg rename to src/static/icons/solid/funnel-dollar.svg diff --git a/client/src/static/icons/solid/futbol.svg b/src/static/icons/solid/futbol.svg similarity index 100% rename from client/src/static/icons/solid/futbol.svg rename to src/static/icons/solid/futbol.svg diff --git a/client/src/static/icons/solid/galaxy.svg b/src/static/icons/solid/galaxy.svg similarity index 100% rename from client/src/static/icons/solid/galaxy.svg rename to src/static/icons/solid/galaxy.svg diff --git a/client/src/static/icons/solid/game-board-alt.svg b/src/static/icons/solid/game-board-alt.svg similarity index 100% rename from client/src/static/icons/solid/game-board-alt.svg rename to src/static/icons/solid/game-board-alt.svg diff --git a/client/src/static/icons/solid/game-board.svg b/src/static/icons/solid/game-board.svg similarity index 100% rename from client/src/static/icons/solid/game-board.svg rename to src/static/icons/solid/game-board.svg diff --git a/client/src/static/icons/solid/game-console-handheld.svg b/src/static/icons/solid/game-console-handheld.svg similarity index 100% rename from client/src/static/icons/solid/game-console-handheld.svg rename to src/static/icons/solid/game-console-handheld.svg diff --git a/client/src/static/icons/solid/gamepad-alt.svg b/src/static/icons/solid/gamepad-alt.svg similarity index 100% rename from client/src/static/icons/solid/gamepad-alt.svg rename to src/static/icons/solid/gamepad-alt.svg diff --git a/client/src/static/icons/solid/gamepad.svg b/src/static/icons/solid/gamepad.svg similarity index 100% rename from client/src/static/icons/solid/gamepad.svg rename to src/static/icons/solid/gamepad.svg diff --git a/client/src/static/icons/solid/garage-car.svg b/src/static/icons/solid/garage-car.svg similarity index 100% rename from client/src/static/icons/solid/garage-car.svg rename to src/static/icons/solid/garage-car.svg diff --git a/client/src/static/icons/solid/garage-open.svg b/src/static/icons/solid/garage-open.svg similarity index 100% rename from client/src/static/icons/solid/garage-open.svg rename to src/static/icons/solid/garage-open.svg diff --git a/client/src/static/icons/solid/garage.svg b/src/static/icons/solid/garage.svg similarity index 100% rename from client/src/static/icons/solid/garage.svg rename to src/static/icons/solid/garage.svg diff --git a/client/src/static/icons/solid/gas-pump-slash.svg b/src/static/icons/solid/gas-pump-slash.svg similarity index 100% rename from client/src/static/icons/solid/gas-pump-slash.svg rename to src/static/icons/solid/gas-pump-slash.svg diff --git a/client/src/static/icons/solid/gas-pump.svg b/src/static/icons/solid/gas-pump.svg similarity index 100% rename from client/src/static/icons/solid/gas-pump.svg rename to src/static/icons/solid/gas-pump.svg diff --git a/client/src/static/icons/solid/gavel.svg b/src/static/icons/solid/gavel.svg similarity index 100% rename from client/src/static/icons/solid/gavel.svg rename to src/static/icons/solid/gavel.svg diff --git a/client/src/static/icons/solid/gem.svg b/src/static/icons/solid/gem.svg similarity index 100% rename from client/src/static/icons/solid/gem.svg rename to src/static/icons/solid/gem.svg diff --git a/client/src/static/icons/solid/genderless.svg b/src/static/icons/solid/genderless.svg similarity index 100% rename from client/src/static/icons/solid/genderless.svg rename to src/static/icons/solid/genderless.svg diff --git a/client/src/static/icons/solid/ghost.svg b/src/static/icons/solid/ghost.svg similarity index 100% rename from client/src/static/icons/solid/ghost.svg rename to src/static/icons/solid/ghost.svg diff --git a/client/src/static/icons/solid/gift-card.svg b/src/static/icons/solid/gift-card.svg similarity index 100% rename from client/src/static/icons/solid/gift-card.svg rename to src/static/icons/solid/gift-card.svg diff --git a/client/src/static/icons/solid/gift.svg b/src/static/icons/solid/gift.svg similarity index 100% rename from client/src/static/icons/solid/gift.svg rename to src/static/icons/solid/gift.svg diff --git a/client/src/static/icons/solid/gifts.svg b/src/static/icons/solid/gifts.svg similarity index 100% rename from client/src/static/icons/solid/gifts.svg rename to src/static/icons/solid/gifts.svg diff --git a/client/src/static/icons/solid/gingerbread-man.svg b/src/static/icons/solid/gingerbread-man.svg similarity index 100% rename from client/src/static/icons/solid/gingerbread-man.svg rename to src/static/icons/solid/gingerbread-man.svg diff --git a/client/src/static/icons/solid/glass-champagne.svg b/src/static/icons/solid/glass-champagne.svg similarity index 100% rename from client/src/static/icons/solid/glass-champagne.svg rename to src/static/icons/solid/glass-champagne.svg diff --git a/client/src/static/icons/solid/glass-cheers.svg b/src/static/icons/solid/glass-cheers.svg similarity index 100% rename from client/src/static/icons/solid/glass-cheers.svg rename to src/static/icons/solid/glass-cheers.svg diff --git a/client/src/static/icons/solid/glass-citrus.svg b/src/static/icons/solid/glass-citrus.svg similarity index 100% rename from client/src/static/icons/solid/glass-citrus.svg rename to src/static/icons/solid/glass-citrus.svg diff --git a/client/src/static/icons/solid/glass-martini-alt.svg b/src/static/icons/solid/glass-martini-alt.svg similarity index 100% rename from client/src/static/icons/solid/glass-martini-alt.svg rename to src/static/icons/solid/glass-martini-alt.svg diff --git a/client/src/static/icons/solid/glass-martini.svg b/src/static/icons/solid/glass-martini.svg similarity index 100% rename from client/src/static/icons/solid/glass-martini.svg rename to src/static/icons/solid/glass-martini.svg diff --git a/client/src/static/icons/solid/glass-whiskey-rocks.svg b/src/static/icons/solid/glass-whiskey-rocks.svg similarity index 100% rename from client/src/static/icons/solid/glass-whiskey-rocks.svg rename to src/static/icons/solid/glass-whiskey-rocks.svg diff --git a/client/src/static/icons/solid/glass-whiskey.svg b/src/static/icons/solid/glass-whiskey.svg similarity index 100% rename from client/src/static/icons/solid/glass-whiskey.svg rename to src/static/icons/solid/glass-whiskey.svg diff --git a/client/src/static/icons/solid/glass.svg b/src/static/icons/solid/glass.svg similarity index 100% rename from client/src/static/icons/solid/glass.svg rename to src/static/icons/solid/glass.svg diff --git a/client/src/static/icons/solid/glasses-alt.svg b/src/static/icons/solid/glasses-alt.svg similarity index 100% rename from client/src/static/icons/solid/glasses-alt.svg rename to src/static/icons/solid/glasses-alt.svg diff --git a/client/src/static/icons/solid/glasses.svg b/src/static/icons/solid/glasses.svg similarity index 100% rename from client/src/static/icons/solid/glasses.svg rename to src/static/icons/solid/glasses.svg diff --git a/client/src/static/icons/solid/globe-africa.svg b/src/static/icons/solid/globe-africa.svg similarity index 100% rename from client/src/static/icons/solid/globe-africa.svg rename to src/static/icons/solid/globe-africa.svg diff --git a/client/src/static/icons/solid/globe-americas.svg b/src/static/icons/solid/globe-americas.svg similarity index 100% rename from client/src/static/icons/solid/globe-americas.svg rename to src/static/icons/solid/globe-americas.svg diff --git a/client/src/static/icons/solid/globe-asia.svg b/src/static/icons/solid/globe-asia.svg similarity index 100% rename from client/src/static/icons/solid/globe-asia.svg rename to src/static/icons/solid/globe-asia.svg diff --git a/client/src/static/icons/solid/globe-europe.svg b/src/static/icons/solid/globe-europe.svg similarity index 100% rename from client/src/static/icons/solid/globe-europe.svg rename to src/static/icons/solid/globe-europe.svg diff --git a/client/src/static/icons/solid/globe-snow.svg b/src/static/icons/solid/globe-snow.svg similarity index 100% rename from client/src/static/icons/solid/globe-snow.svg rename to src/static/icons/solid/globe-snow.svg diff --git a/client/src/static/icons/solid/globe-stand.svg b/src/static/icons/solid/globe-stand.svg similarity index 100% rename from client/src/static/icons/solid/globe-stand.svg rename to src/static/icons/solid/globe-stand.svg diff --git a/client/src/static/icons/solid/globe.svg b/src/static/icons/solid/globe.svg similarity index 100% rename from client/src/static/icons/solid/globe.svg rename to src/static/icons/solid/globe.svg diff --git a/client/src/static/icons/solid/golf-ball.svg b/src/static/icons/solid/golf-ball.svg similarity index 100% rename from client/src/static/icons/solid/golf-ball.svg rename to src/static/icons/solid/golf-ball.svg diff --git a/client/src/static/icons/solid/golf-club.svg b/src/static/icons/solid/golf-club.svg similarity index 100% rename from client/src/static/icons/solid/golf-club.svg rename to src/static/icons/solid/golf-club.svg diff --git a/client/src/static/icons/solid/gopuram.svg b/src/static/icons/solid/gopuram.svg similarity index 100% rename from client/src/static/icons/solid/gopuram.svg rename to src/static/icons/solid/gopuram.svg diff --git a/client/src/static/icons/solid/graduation-cap.svg b/src/static/icons/solid/graduation-cap.svg similarity index 100% rename from client/src/static/icons/solid/graduation-cap.svg rename to src/static/icons/solid/graduation-cap.svg diff --git a/client/src/static/icons/solid/gramophone.svg b/src/static/icons/solid/gramophone.svg similarity index 100% rename from client/src/static/icons/solid/gramophone.svg rename to src/static/icons/solid/gramophone.svg diff --git a/client/src/static/icons/solid/greater-than-equal.svg b/src/static/icons/solid/greater-than-equal.svg similarity index 100% rename from client/src/static/icons/solid/greater-than-equal.svg rename to src/static/icons/solid/greater-than-equal.svg diff --git a/client/src/static/icons/solid/greater-than.svg b/src/static/icons/solid/greater-than.svg similarity index 100% rename from client/src/static/icons/solid/greater-than.svg rename to src/static/icons/solid/greater-than.svg diff --git a/client/src/static/icons/solid/grimace.svg b/src/static/icons/solid/grimace.svg similarity index 100% rename from client/src/static/icons/solid/grimace.svg rename to src/static/icons/solid/grimace.svg diff --git a/client/src/static/icons/solid/grin-alt.svg b/src/static/icons/solid/grin-alt.svg similarity index 100% rename from client/src/static/icons/solid/grin-alt.svg rename to src/static/icons/solid/grin-alt.svg diff --git a/client/src/static/icons/solid/grin-beam-sweat.svg b/src/static/icons/solid/grin-beam-sweat.svg similarity index 100% rename from client/src/static/icons/solid/grin-beam-sweat.svg rename to src/static/icons/solid/grin-beam-sweat.svg diff --git a/client/src/static/icons/solid/grin-beam.svg b/src/static/icons/solid/grin-beam.svg similarity index 100% rename from client/src/static/icons/solid/grin-beam.svg rename to src/static/icons/solid/grin-beam.svg diff --git a/client/src/static/icons/solid/grin-hearts.svg b/src/static/icons/solid/grin-hearts.svg similarity index 100% rename from client/src/static/icons/solid/grin-hearts.svg rename to src/static/icons/solid/grin-hearts.svg diff --git a/client/src/static/icons/solid/grin-squint-tears.svg b/src/static/icons/solid/grin-squint-tears.svg similarity index 100% rename from client/src/static/icons/solid/grin-squint-tears.svg rename to src/static/icons/solid/grin-squint-tears.svg diff --git a/client/src/static/icons/solid/grin-squint.svg b/src/static/icons/solid/grin-squint.svg similarity index 100% rename from client/src/static/icons/solid/grin-squint.svg rename to src/static/icons/solid/grin-squint.svg diff --git a/client/src/static/icons/solid/grin-stars.svg b/src/static/icons/solid/grin-stars.svg similarity index 100% rename from client/src/static/icons/solid/grin-stars.svg rename to src/static/icons/solid/grin-stars.svg diff --git a/client/src/static/icons/solid/grin-tears.svg b/src/static/icons/solid/grin-tears.svg similarity index 100% rename from client/src/static/icons/solid/grin-tears.svg rename to src/static/icons/solid/grin-tears.svg diff --git a/client/src/static/icons/solid/grin-tongue-squint.svg b/src/static/icons/solid/grin-tongue-squint.svg similarity index 100% rename from client/src/static/icons/solid/grin-tongue-squint.svg rename to src/static/icons/solid/grin-tongue-squint.svg diff --git a/client/src/static/icons/solid/grin-tongue-wink.svg b/src/static/icons/solid/grin-tongue-wink.svg similarity index 100% rename from client/src/static/icons/solid/grin-tongue-wink.svg rename to src/static/icons/solid/grin-tongue-wink.svg diff --git a/client/src/static/icons/solid/grin-tongue.svg b/src/static/icons/solid/grin-tongue.svg similarity index 100% rename from client/src/static/icons/solid/grin-tongue.svg rename to src/static/icons/solid/grin-tongue.svg diff --git a/client/src/static/icons/solid/grin-wink.svg b/src/static/icons/solid/grin-wink.svg similarity index 100% rename from client/src/static/icons/solid/grin-wink.svg rename to src/static/icons/solid/grin-wink.svg diff --git a/client/src/static/icons/solid/grin.svg b/src/static/icons/solid/grin.svg similarity index 100% rename from client/src/static/icons/solid/grin.svg rename to src/static/icons/solid/grin.svg diff --git a/client/src/static/icons/solid/grip-horizontal.svg b/src/static/icons/solid/grip-horizontal.svg similarity index 100% rename from client/src/static/icons/solid/grip-horizontal.svg rename to src/static/icons/solid/grip-horizontal.svg diff --git a/client/src/static/icons/solid/grip-lines-vertical.svg b/src/static/icons/solid/grip-lines-vertical.svg similarity index 100% rename from client/src/static/icons/solid/grip-lines-vertical.svg rename to src/static/icons/solid/grip-lines-vertical.svg diff --git a/client/src/static/icons/solid/grip-lines.svg b/src/static/icons/solid/grip-lines.svg similarity index 100% rename from client/src/static/icons/solid/grip-lines.svg rename to src/static/icons/solid/grip-lines.svg diff --git a/client/src/static/icons/solid/grip-vertical.svg b/src/static/icons/solid/grip-vertical.svg similarity index 100% rename from client/src/static/icons/solid/grip-vertical.svg rename to src/static/icons/solid/grip-vertical.svg diff --git a/client/src/static/icons/solid/guitar-electric.svg b/src/static/icons/solid/guitar-electric.svg similarity index 100% rename from client/src/static/icons/solid/guitar-electric.svg rename to src/static/icons/solid/guitar-electric.svg diff --git a/client/src/static/icons/solid/guitar.svg b/src/static/icons/solid/guitar.svg similarity index 100% rename from client/src/static/icons/solid/guitar.svg rename to src/static/icons/solid/guitar.svg diff --git a/client/src/static/icons/solid/guitars.svg b/src/static/icons/solid/guitars.svg similarity index 100% rename from client/src/static/icons/solid/guitars.svg rename to src/static/icons/solid/guitars.svg diff --git a/client/src/static/icons/solid/h-square.svg b/src/static/icons/solid/h-square.svg similarity index 100% rename from client/src/static/icons/solid/h-square.svg rename to src/static/icons/solid/h-square.svg diff --git a/client/src/static/icons/solid/h1.svg b/src/static/icons/solid/h1.svg similarity index 100% rename from client/src/static/icons/solid/h1.svg rename to src/static/icons/solid/h1.svg diff --git a/client/src/static/icons/solid/h2.svg b/src/static/icons/solid/h2.svg similarity index 100% rename from client/src/static/icons/solid/h2.svg rename to src/static/icons/solid/h2.svg diff --git a/client/src/static/icons/solid/h3.svg b/src/static/icons/solid/h3.svg similarity index 100% rename from client/src/static/icons/solid/h3.svg rename to src/static/icons/solid/h3.svg diff --git a/client/src/static/icons/solid/h4.svg b/src/static/icons/solid/h4.svg similarity index 100% rename from client/src/static/icons/solid/h4.svg rename to src/static/icons/solid/h4.svg diff --git a/client/src/static/icons/solid/hamburger.svg b/src/static/icons/solid/hamburger.svg similarity index 100% rename from client/src/static/icons/solid/hamburger.svg rename to src/static/icons/solid/hamburger.svg diff --git a/client/src/static/icons/solid/hammer-war.svg b/src/static/icons/solid/hammer-war.svg similarity index 100% rename from client/src/static/icons/solid/hammer-war.svg rename to src/static/icons/solid/hammer-war.svg diff --git a/client/src/static/icons/solid/hammer.svg b/src/static/icons/solid/hammer.svg similarity index 100% rename from client/src/static/icons/solid/hammer.svg rename to src/static/icons/solid/hammer.svg diff --git a/client/src/static/icons/solid/hamsa.svg b/src/static/icons/solid/hamsa.svg similarity index 100% rename from client/src/static/icons/solid/hamsa.svg rename to src/static/icons/solid/hamsa.svg diff --git a/client/src/static/icons/solid/hand-heart.svg b/src/static/icons/solid/hand-heart.svg similarity index 100% rename from client/src/static/icons/solid/hand-heart.svg rename to src/static/icons/solid/hand-heart.svg diff --git a/client/src/static/icons/solid/hand-holding-box.svg b/src/static/icons/solid/hand-holding-box.svg similarity index 100% rename from client/src/static/icons/solid/hand-holding-box.svg rename to src/static/icons/solid/hand-holding-box.svg diff --git a/client/src/static/icons/solid/hand-holding-heart.svg b/src/static/icons/solid/hand-holding-heart.svg similarity index 100% rename from client/src/static/icons/solid/hand-holding-heart.svg rename to src/static/icons/solid/hand-holding-heart.svg diff --git a/client/src/static/icons/solid/hand-holding-magic.svg b/src/static/icons/solid/hand-holding-magic.svg similarity index 100% rename from client/src/static/icons/solid/hand-holding-magic.svg rename to src/static/icons/solid/hand-holding-magic.svg diff --git a/client/src/static/icons/solid/hand-holding-seedling.svg b/src/static/icons/solid/hand-holding-seedling.svg similarity index 100% rename from client/src/static/icons/solid/hand-holding-seedling.svg rename to src/static/icons/solid/hand-holding-seedling.svg diff --git a/client/src/static/icons/solid/hand-holding-usd.svg b/src/static/icons/solid/hand-holding-usd.svg similarity index 100% rename from client/src/static/icons/solid/hand-holding-usd.svg rename to src/static/icons/solid/hand-holding-usd.svg diff --git a/client/src/static/icons/solid/hand-holding-water.svg b/src/static/icons/solid/hand-holding-water.svg similarity index 100% rename from client/src/static/icons/solid/hand-holding-water.svg rename to src/static/icons/solid/hand-holding-water.svg diff --git a/client/src/static/icons/solid/hand-holding.svg b/src/static/icons/solid/hand-holding.svg similarity index 100% rename from client/src/static/icons/solid/hand-holding.svg rename to src/static/icons/solid/hand-holding.svg diff --git a/client/src/static/icons/solid/hand-lizard.svg b/src/static/icons/solid/hand-lizard.svg similarity index 100% rename from client/src/static/icons/solid/hand-lizard.svg rename to src/static/icons/solid/hand-lizard.svg diff --git a/client/src/static/icons/solid/hand-middle-finger.svg b/src/static/icons/solid/hand-middle-finger.svg similarity index 100% rename from client/src/static/icons/solid/hand-middle-finger.svg rename to src/static/icons/solid/hand-middle-finger.svg diff --git a/client/src/static/icons/solid/hand-paper.svg b/src/static/icons/solid/hand-paper.svg similarity index 100% rename from client/src/static/icons/solid/hand-paper.svg rename to src/static/icons/solid/hand-paper.svg diff --git a/client/src/static/icons/solid/hand-peace.svg b/src/static/icons/solid/hand-peace.svg similarity index 100% rename from client/src/static/icons/solid/hand-peace.svg rename to src/static/icons/solid/hand-peace.svg diff --git a/client/src/static/icons/solid/hand-point-down.svg b/src/static/icons/solid/hand-point-down.svg similarity index 100% rename from client/src/static/icons/solid/hand-point-down.svg rename to src/static/icons/solid/hand-point-down.svg diff --git a/client/src/static/icons/solid/hand-point-left.svg b/src/static/icons/solid/hand-point-left.svg similarity index 100% rename from client/src/static/icons/solid/hand-point-left.svg rename to src/static/icons/solid/hand-point-left.svg diff --git a/client/src/static/icons/solid/hand-point-right.svg b/src/static/icons/solid/hand-point-right.svg similarity index 100% rename from client/src/static/icons/solid/hand-point-right.svg rename to src/static/icons/solid/hand-point-right.svg diff --git a/client/src/static/icons/solid/hand-point-up.svg b/src/static/icons/solid/hand-point-up.svg similarity index 100% rename from client/src/static/icons/solid/hand-point-up.svg rename to src/static/icons/solid/hand-point-up.svg diff --git a/client/src/static/icons/solid/hand-pointer.svg b/src/static/icons/solid/hand-pointer.svg similarity index 100% rename from client/src/static/icons/solid/hand-pointer.svg rename to src/static/icons/solid/hand-pointer.svg diff --git a/client/src/static/icons/solid/hand-receiving.svg b/src/static/icons/solid/hand-receiving.svg similarity index 100% rename from client/src/static/icons/solid/hand-receiving.svg rename to src/static/icons/solid/hand-receiving.svg diff --git a/client/src/static/icons/solid/hand-rock.svg b/src/static/icons/solid/hand-rock.svg similarity index 100% rename from client/src/static/icons/solid/hand-rock.svg rename to src/static/icons/solid/hand-rock.svg diff --git a/client/src/static/icons/solid/hand-scissors.svg b/src/static/icons/solid/hand-scissors.svg similarity index 100% rename from client/src/static/icons/solid/hand-scissors.svg rename to src/static/icons/solid/hand-scissors.svg diff --git a/client/src/static/icons/solid/hand-spock.svg b/src/static/icons/solid/hand-spock.svg similarity index 100% rename from client/src/static/icons/solid/hand-spock.svg rename to src/static/icons/solid/hand-spock.svg diff --git a/client/src/static/icons/solid/hands-heart.svg b/src/static/icons/solid/hands-heart.svg similarity index 100% rename from client/src/static/icons/solid/hands-heart.svg rename to src/static/icons/solid/hands-heart.svg diff --git a/client/src/static/icons/solid/hands-helping.svg b/src/static/icons/solid/hands-helping.svg similarity index 100% rename from client/src/static/icons/solid/hands-helping.svg rename to src/static/icons/solid/hands-helping.svg diff --git a/client/src/static/icons/solid/hands-usd.svg b/src/static/icons/solid/hands-usd.svg similarity index 100% rename from client/src/static/icons/solid/hands-usd.svg rename to src/static/icons/solid/hands-usd.svg diff --git a/client/src/static/icons/solid/hands.svg b/src/static/icons/solid/hands.svg similarity index 100% rename from client/src/static/icons/solid/hands.svg rename to src/static/icons/solid/hands.svg diff --git a/client/src/static/icons/solid/handshake-alt.svg b/src/static/icons/solid/handshake-alt.svg similarity index 100% rename from client/src/static/icons/solid/handshake-alt.svg rename to src/static/icons/solid/handshake-alt.svg diff --git a/client/src/static/icons/solid/handshake.svg b/src/static/icons/solid/handshake.svg similarity index 100% rename from client/src/static/icons/solid/handshake.svg rename to src/static/icons/solid/handshake.svg diff --git a/client/src/static/icons/solid/hanukiah.svg b/src/static/icons/solid/hanukiah.svg similarity index 100% rename from client/src/static/icons/solid/hanukiah.svg rename to src/static/icons/solid/hanukiah.svg diff --git a/client/src/static/icons/solid/hard-hat.svg b/src/static/icons/solid/hard-hat.svg similarity index 100% rename from client/src/static/icons/solid/hard-hat.svg rename to src/static/icons/solid/hard-hat.svg diff --git a/client/src/static/icons/solid/hashtag.svg b/src/static/icons/solid/hashtag.svg similarity index 100% rename from client/src/static/icons/solid/hashtag.svg rename to src/static/icons/solid/hashtag.svg diff --git a/client/src/static/icons/solid/hat-chef.svg b/src/static/icons/solid/hat-chef.svg similarity index 100% rename from client/src/static/icons/solid/hat-chef.svg rename to src/static/icons/solid/hat-chef.svg diff --git a/client/src/static/icons/solid/hat-cowboy-side.svg b/src/static/icons/solid/hat-cowboy-side.svg similarity index 100% rename from client/src/static/icons/solid/hat-cowboy-side.svg rename to src/static/icons/solid/hat-cowboy-side.svg diff --git a/client/src/static/icons/solid/hat-cowboy.svg b/src/static/icons/solid/hat-cowboy.svg similarity index 100% rename from client/src/static/icons/solid/hat-cowboy.svg rename to src/static/icons/solid/hat-cowboy.svg diff --git a/client/src/static/icons/solid/hat-santa.svg b/src/static/icons/solid/hat-santa.svg similarity index 100% rename from client/src/static/icons/solid/hat-santa.svg rename to src/static/icons/solid/hat-santa.svg diff --git a/client/src/static/icons/solid/hat-winter.svg b/src/static/icons/solid/hat-winter.svg similarity index 100% rename from client/src/static/icons/solid/hat-winter.svg rename to src/static/icons/solid/hat-winter.svg diff --git a/client/src/static/icons/solid/hat-witch.svg b/src/static/icons/solid/hat-witch.svg similarity index 100% rename from client/src/static/icons/solid/hat-witch.svg rename to src/static/icons/solid/hat-witch.svg diff --git a/client/src/static/icons/solid/hat-wizard.svg b/src/static/icons/solid/hat-wizard.svg similarity index 100% rename from client/src/static/icons/solid/hat-wizard.svg rename to src/static/icons/solid/hat-wizard.svg diff --git a/client/src/static/icons/solid/hdd.svg b/src/static/icons/solid/hdd.svg similarity index 100% rename from client/src/static/icons/solid/hdd.svg rename to src/static/icons/solid/hdd.svg diff --git a/client/src/static/icons/solid/head-side-brain.svg b/src/static/icons/solid/head-side-brain.svg similarity index 100% rename from client/src/static/icons/solid/head-side-brain.svg rename to src/static/icons/solid/head-side-brain.svg diff --git a/client/src/static/icons/solid/head-side-headphones.svg b/src/static/icons/solid/head-side-headphones.svg similarity index 100% rename from client/src/static/icons/solid/head-side-headphones.svg rename to src/static/icons/solid/head-side-headphones.svg diff --git a/client/src/static/icons/solid/head-side-medical.svg b/src/static/icons/solid/head-side-medical.svg similarity index 100% rename from client/src/static/icons/solid/head-side-medical.svg rename to src/static/icons/solid/head-side-medical.svg diff --git a/client/src/static/icons/solid/head-side.svg b/src/static/icons/solid/head-side.svg similarity index 100% rename from client/src/static/icons/solid/head-side.svg rename to src/static/icons/solid/head-side.svg diff --git a/client/src/static/icons/solid/head-vr.svg b/src/static/icons/solid/head-vr.svg similarity index 100% rename from client/src/static/icons/solid/head-vr.svg rename to src/static/icons/solid/head-vr.svg diff --git a/client/src/static/icons/solid/heading.svg b/src/static/icons/solid/heading.svg similarity index 100% rename from client/src/static/icons/solid/heading.svg rename to src/static/icons/solid/heading.svg diff --git a/client/src/static/icons/solid/headphones-alt.svg b/src/static/icons/solid/headphones-alt.svg similarity index 100% rename from client/src/static/icons/solid/headphones-alt.svg rename to src/static/icons/solid/headphones-alt.svg diff --git a/client/src/static/icons/solid/headphones.svg b/src/static/icons/solid/headphones.svg similarity index 100% rename from client/src/static/icons/solid/headphones.svg rename to src/static/icons/solid/headphones.svg diff --git a/client/src/static/icons/solid/headset.svg b/src/static/icons/solid/headset.svg similarity index 100% rename from client/src/static/icons/solid/headset.svg rename to src/static/icons/solid/headset.svg diff --git a/client/src/static/icons/solid/heart-broken.svg b/src/static/icons/solid/heart-broken.svg similarity index 100% rename from client/src/static/icons/solid/heart-broken.svg rename to src/static/icons/solid/heart-broken.svg diff --git a/client/src/static/icons/solid/heart-circle.svg b/src/static/icons/solid/heart-circle.svg similarity index 100% rename from client/src/static/icons/solid/heart-circle.svg rename to src/static/icons/solid/heart-circle.svg diff --git a/client/src/static/icons/solid/heart-rate.svg b/src/static/icons/solid/heart-rate.svg similarity index 100% rename from client/src/static/icons/solid/heart-rate.svg rename to src/static/icons/solid/heart-rate.svg diff --git a/client/src/static/icons/solid/heart-square.svg b/src/static/icons/solid/heart-square.svg similarity index 100% rename from client/src/static/icons/solid/heart-square.svg rename to src/static/icons/solid/heart-square.svg diff --git a/client/src/static/icons/solid/heart.svg b/src/static/icons/solid/heart.svg similarity index 100% rename from client/src/static/icons/solid/heart.svg rename to src/static/icons/solid/heart.svg diff --git a/client/src/static/icons/solid/heartbeat.svg b/src/static/icons/solid/heartbeat.svg similarity index 100% rename from client/src/static/icons/solid/heartbeat.svg rename to src/static/icons/solid/heartbeat.svg diff --git a/client/src/static/icons/solid/heat.svg b/src/static/icons/solid/heat.svg similarity index 100% rename from client/src/static/icons/solid/heat.svg rename to src/static/icons/solid/heat.svg diff --git a/client/src/static/icons/solid/helicopter.svg b/src/static/icons/solid/helicopter.svg similarity index 100% rename from client/src/static/icons/solid/helicopter.svg rename to src/static/icons/solid/helicopter.svg diff --git a/client/src/static/icons/solid/helmet-battle.svg b/src/static/icons/solid/helmet-battle.svg similarity index 100% rename from client/src/static/icons/solid/helmet-battle.svg rename to src/static/icons/solid/helmet-battle.svg diff --git a/client/src/static/icons/solid/hexagon.svg b/src/static/icons/solid/hexagon.svg similarity index 100% rename from client/src/static/icons/solid/hexagon.svg rename to src/static/icons/solid/hexagon.svg diff --git a/client/src/static/icons/solid/highlighter.svg b/src/static/icons/solid/highlighter.svg similarity index 100% rename from client/src/static/icons/solid/highlighter.svg rename to src/static/icons/solid/highlighter.svg diff --git a/client/src/static/icons/solid/hiking.svg b/src/static/icons/solid/hiking.svg similarity index 100% rename from client/src/static/icons/solid/hiking.svg rename to src/static/icons/solid/hiking.svg diff --git a/client/src/static/icons/solid/hippo.svg b/src/static/icons/solid/hippo.svg similarity index 100% rename from client/src/static/icons/solid/hippo.svg rename to src/static/icons/solid/hippo.svg diff --git a/client/src/static/icons/solid/history.svg b/src/static/icons/solid/history.svg similarity index 100% rename from client/src/static/icons/solid/history.svg rename to src/static/icons/solid/history.svg diff --git a/client/src/static/icons/solid/hockey-mask.svg b/src/static/icons/solid/hockey-mask.svg similarity index 100% rename from client/src/static/icons/solid/hockey-mask.svg rename to src/static/icons/solid/hockey-mask.svg diff --git a/client/src/static/icons/solid/hockey-puck.svg b/src/static/icons/solid/hockey-puck.svg similarity index 100% rename from client/src/static/icons/solid/hockey-puck.svg rename to src/static/icons/solid/hockey-puck.svg diff --git a/client/src/static/icons/solid/hockey-sticks.svg b/src/static/icons/solid/hockey-sticks.svg similarity index 100% rename from client/src/static/icons/solid/hockey-sticks.svg rename to src/static/icons/solid/hockey-sticks.svg diff --git a/client/src/static/icons/solid/holly-berry.svg b/src/static/icons/solid/holly-berry.svg similarity index 100% rename from client/src/static/icons/solid/holly-berry.svg rename to src/static/icons/solid/holly-berry.svg diff --git a/client/src/static/icons/solid/home-alt.svg b/src/static/icons/solid/home-alt.svg similarity index 100% rename from client/src/static/icons/solid/home-alt.svg rename to src/static/icons/solid/home-alt.svg diff --git a/client/src/static/icons/solid/home-heart.svg b/src/static/icons/solid/home-heart.svg similarity index 100% rename from client/src/static/icons/solid/home-heart.svg rename to src/static/icons/solid/home-heart.svg diff --git a/client/src/static/icons/solid/home-lg-alt.svg b/src/static/icons/solid/home-lg-alt.svg similarity index 100% rename from client/src/static/icons/solid/home-lg-alt.svg rename to src/static/icons/solid/home-lg-alt.svg diff --git a/client/src/static/icons/solid/home-lg.svg b/src/static/icons/solid/home-lg.svg similarity index 100% rename from client/src/static/icons/solid/home-lg.svg rename to src/static/icons/solid/home-lg.svg diff --git a/client/src/static/icons/solid/home.svg b/src/static/icons/solid/home.svg similarity index 100% rename from client/src/static/icons/solid/home.svg rename to src/static/icons/solid/home.svg diff --git a/client/src/static/icons/solid/hood-cloak.svg b/src/static/icons/solid/hood-cloak.svg similarity index 100% rename from client/src/static/icons/solid/hood-cloak.svg rename to src/static/icons/solid/hood-cloak.svg diff --git a/client/src/static/icons/solid/horizontal-rule.svg b/src/static/icons/solid/horizontal-rule.svg similarity index 100% rename from client/src/static/icons/solid/horizontal-rule.svg rename to src/static/icons/solid/horizontal-rule.svg diff --git a/client/src/static/icons/solid/horse-head.svg b/src/static/icons/solid/horse-head.svg similarity index 100% rename from client/src/static/icons/solid/horse-head.svg rename to src/static/icons/solid/horse-head.svg diff --git a/client/src/static/icons/solid/horse-saddle.svg b/src/static/icons/solid/horse-saddle.svg similarity index 100% rename from client/src/static/icons/solid/horse-saddle.svg rename to src/static/icons/solid/horse-saddle.svg diff --git a/client/src/static/icons/solid/horse.svg b/src/static/icons/solid/horse.svg similarity index 100% rename from client/src/static/icons/solid/horse.svg rename to src/static/icons/solid/horse.svg diff --git a/client/src/static/icons/solid/hospital-alt.svg b/src/static/icons/solid/hospital-alt.svg similarity index 100% rename from client/src/static/icons/solid/hospital-alt.svg rename to src/static/icons/solid/hospital-alt.svg diff --git a/client/src/static/icons/solid/hospital-symbol.svg b/src/static/icons/solid/hospital-symbol.svg similarity index 100% rename from client/src/static/icons/solid/hospital-symbol.svg rename to src/static/icons/solid/hospital-symbol.svg diff --git a/client/src/static/icons/solid/hospital-user.svg b/src/static/icons/solid/hospital-user.svg similarity index 100% rename from client/src/static/icons/solid/hospital-user.svg rename to src/static/icons/solid/hospital-user.svg diff --git a/client/src/static/icons/solid/hospital.svg b/src/static/icons/solid/hospital.svg similarity index 100% rename from client/src/static/icons/solid/hospital.svg rename to src/static/icons/solid/hospital.svg diff --git a/client/src/static/icons/solid/hospitals.svg b/src/static/icons/solid/hospitals.svg similarity index 100% rename from client/src/static/icons/solid/hospitals.svg rename to src/static/icons/solid/hospitals.svg diff --git a/client/src/static/icons/solid/hot-tub.svg b/src/static/icons/solid/hot-tub.svg similarity index 100% rename from client/src/static/icons/solid/hot-tub.svg rename to src/static/icons/solid/hot-tub.svg diff --git a/client/src/static/icons/solid/hotdog.svg b/src/static/icons/solid/hotdog.svg similarity index 100% rename from client/src/static/icons/solid/hotdog.svg rename to src/static/icons/solid/hotdog.svg diff --git a/client/src/static/icons/solid/hotel.svg b/src/static/icons/solid/hotel.svg similarity index 100% rename from client/src/static/icons/solid/hotel.svg rename to src/static/icons/solid/hotel.svg diff --git a/client/src/static/icons/solid/hourglass-end.svg b/src/static/icons/solid/hourglass-end.svg similarity index 100% rename from client/src/static/icons/solid/hourglass-end.svg rename to src/static/icons/solid/hourglass-end.svg diff --git a/client/src/static/icons/solid/hourglass-half.svg b/src/static/icons/solid/hourglass-half.svg similarity index 100% rename from client/src/static/icons/solid/hourglass-half.svg rename to src/static/icons/solid/hourglass-half.svg diff --git a/client/src/static/icons/solid/hourglass-start.svg b/src/static/icons/solid/hourglass-start.svg similarity index 100% rename from client/src/static/icons/solid/hourglass-start.svg rename to src/static/icons/solid/hourglass-start.svg diff --git a/client/src/static/icons/solid/hourglass.svg b/src/static/icons/solid/hourglass.svg similarity index 100% rename from client/src/static/icons/solid/hourglass.svg rename to src/static/icons/solid/hourglass.svg diff --git a/client/src/static/icons/solid/house-damage.svg b/src/static/icons/solid/house-damage.svg similarity index 100% rename from client/src/static/icons/solid/house-damage.svg rename to src/static/icons/solid/house-damage.svg diff --git a/client/src/static/icons/solid/house-day.svg b/src/static/icons/solid/house-day.svg similarity index 100% rename from client/src/static/icons/solid/house-day.svg rename to src/static/icons/solid/house-day.svg diff --git a/client/src/static/icons/solid/house-flood.svg b/src/static/icons/solid/house-flood.svg similarity index 100% rename from client/src/static/icons/solid/house-flood.svg rename to src/static/icons/solid/house-flood.svg diff --git a/client/src/static/icons/solid/house-leave.svg b/src/static/icons/solid/house-leave.svg similarity index 100% rename from client/src/static/icons/solid/house-leave.svg rename to src/static/icons/solid/house-leave.svg diff --git a/client/src/static/icons/solid/house-night.svg b/src/static/icons/solid/house-night.svg similarity index 100% rename from client/src/static/icons/solid/house-night.svg rename to src/static/icons/solid/house-night.svg diff --git a/client/src/static/icons/solid/house-return.svg b/src/static/icons/solid/house-return.svg similarity index 100% rename from client/src/static/icons/solid/house-return.svg rename to src/static/icons/solid/house-return.svg diff --git a/client/src/static/icons/solid/house-signal.svg b/src/static/icons/solid/house-signal.svg similarity index 100% rename from client/src/static/icons/solid/house-signal.svg rename to src/static/icons/solid/house-signal.svg diff --git a/client/src/static/icons/solid/house.svg b/src/static/icons/solid/house.svg similarity index 100% rename from client/src/static/icons/solid/house.svg rename to src/static/icons/solid/house.svg diff --git a/client/src/static/icons/solid/hryvnia.svg b/src/static/icons/solid/hryvnia.svg similarity index 100% rename from client/src/static/icons/solid/hryvnia.svg rename to src/static/icons/solid/hryvnia.svg diff --git a/client/src/static/icons/solid/humidity.svg b/src/static/icons/solid/humidity.svg similarity index 100% rename from client/src/static/icons/solid/humidity.svg rename to src/static/icons/solid/humidity.svg diff --git a/client/src/static/icons/solid/hurricane.svg b/src/static/icons/solid/hurricane.svg similarity index 100% rename from client/src/static/icons/solid/hurricane.svg rename to src/static/icons/solid/hurricane.svg diff --git a/client/src/static/icons/solid/i-cursor.svg b/src/static/icons/solid/i-cursor.svg similarity index 100% rename from client/src/static/icons/solid/i-cursor.svg rename to src/static/icons/solid/i-cursor.svg diff --git a/client/src/static/icons/solid/ice-cream.svg b/src/static/icons/solid/ice-cream.svg similarity index 100% rename from client/src/static/icons/solid/ice-cream.svg rename to src/static/icons/solid/ice-cream.svg diff --git a/client/src/static/icons/solid/ice-skate.svg b/src/static/icons/solid/ice-skate.svg similarity index 100% rename from client/src/static/icons/solid/ice-skate.svg rename to src/static/icons/solid/ice-skate.svg diff --git a/client/src/static/icons/solid/icicles.svg b/src/static/icons/solid/icicles.svg similarity index 100% rename from client/src/static/icons/solid/icicles.svg rename to src/static/icons/solid/icicles.svg diff --git a/client/src/static/icons/solid/icons-alt.svg b/src/static/icons/solid/icons-alt.svg similarity index 100% rename from client/src/static/icons/solid/icons-alt.svg rename to src/static/icons/solid/icons-alt.svg diff --git a/client/src/static/icons/solid/icons.svg b/src/static/icons/solid/icons.svg similarity index 100% rename from client/src/static/icons/solid/icons.svg rename to src/static/icons/solid/icons.svg diff --git a/client/src/static/icons/solid/id-badge.svg b/src/static/icons/solid/id-badge.svg similarity index 100% rename from client/src/static/icons/solid/id-badge.svg rename to src/static/icons/solid/id-badge.svg diff --git a/client/src/static/icons/solid/id-card-alt.svg b/src/static/icons/solid/id-card-alt.svg similarity index 100% rename from client/src/static/icons/solid/id-card-alt.svg rename to src/static/icons/solid/id-card-alt.svg diff --git a/client/src/static/icons/solid/id-card.svg b/src/static/icons/solid/id-card.svg similarity index 100% rename from client/src/static/icons/solid/id-card.svg rename to src/static/icons/solid/id-card.svg diff --git a/client/src/static/icons/solid/igloo.svg b/src/static/icons/solid/igloo.svg similarity index 100% rename from client/src/static/icons/solid/igloo.svg rename to src/static/icons/solid/igloo.svg diff --git a/client/src/static/icons/solid/image-polaroid.svg b/src/static/icons/solid/image-polaroid.svg similarity index 100% rename from client/src/static/icons/solid/image-polaroid.svg rename to src/static/icons/solid/image-polaroid.svg diff --git a/client/src/static/icons/solid/image.svg b/src/static/icons/solid/image.svg similarity index 100% rename from client/src/static/icons/solid/image.svg rename to src/static/icons/solid/image.svg diff --git a/client/src/static/icons/solid/images.svg b/src/static/icons/solid/images.svg similarity index 100% rename from client/src/static/icons/solid/images.svg rename to src/static/icons/solid/images.svg diff --git a/client/src/static/icons/solid/inbox-in.svg b/src/static/icons/solid/inbox-in.svg similarity index 100% rename from client/src/static/icons/solid/inbox-in.svg rename to src/static/icons/solid/inbox-in.svg diff --git a/client/src/static/icons/solid/inbox-out.svg b/src/static/icons/solid/inbox-out.svg similarity index 100% rename from client/src/static/icons/solid/inbox-out.svg rename to src/static/icons/solid/inbox-out.svg diff --git a/client/src/static/icons/solid/inbox.svg b/src/static/icons/solid/inbox.svg similarity index 100% rename from client/src/static/icons/solid/inbox.svg rename to src/static/icons/solid/inbox.svg diff --git a/client/src/static/icons/solid/indent.svg b/src/static/icons/solid/indent.svg similarity index 100% rename from client/src/static/icons/solid/indent.svg rename to src/static/icons/solid/indent.svg diff --git a/client/src/static/icons/solid/industry-alt.svg b/src/static/icons/solid/industry-alt.svg similarity index 100% rename from client/src/static/icons/solid/industry-alt.svg rename to src/static/icons/solid/industry-alt.svg diff --git a/client/src/static/icons/solid/industry.svg b/src/static/icons/solid/industry.svg similarity index 100% rename from client/src/static/icons/solid/industry.svg rename to src/static/icons/solid/industry.svg diff --git a/client/src/static/icons/solid/infinity.svg b/src/static/icons/solid/infinity.svg similarity index 100% rename from client/src/static/icons/solid/infinity.svg rename to src/static/icons/solid/infinity.svg diff --git a/client/src/static/icons/solid/info-circle.svg b/src/static/icons/solid/info-circle.svg similarity index 100% rename from client/src/static/icons/solid/info-circle.svg rename to src/static/icons/solid/info-circle.svg diff --git a/client/src/static/icons/solid/info-square.svg b/src/static/icons/solid/info-square.svg similarity index 100% rename from client/src/static/icons/solid/info-square.svg rename to src/static/icons/solid/info-square.svg diff --git a/client/src/static/icons/solid/info.svg b/src/static/icons/solid/info.svg similarity index 100% rename from client/src/static/icons/solid/info.svg rename to src/static/icons/solid/info.svg diff --git a/client/src/static/icons/solid/inhaler.svg b/src/static/icons/solid/inhaler.svg similarity index 100% rename from client/src/static/icons/solid/inhaler.svg rename to src/static/icons/solid/inhaler.svg diff --git a/client/src/static/icons/solid/integral.svg b/src/static/icons/solid/integral.svg similarity index 100% rename from client/src/static/icons/solid/integral.svg rename to src/static/icons/solid/integral.svg diff --git a/client/src/static/icons/solid/intersection.svg b/src/static/icons/solid/intersection.svg similarity index 100% rename from client/src/static/icons/solid/intersection.svg rename to src/static/icons/solid/intersection.svg diff --git a/client/src/static/icons/solid/inventory.svg b/src/static/icons/solid/inventory.svg similarity index 100% rename from client/src/static/icons/solid/inventory.svg rename to src/static/icons/solid/inventory.svg diff --git a/client/src/static/icons/solid/island-tropical.svg b/src/static/icons/solid/island-tropical.svg similarity index 100% rename from client/src/static/icons/solid/island-tropical.svg rename to src/static/icons/solid/island-tropical.svg diff --git a/client/src/static/icons/solid/italic.svg b/src/static/icons/solid/italic.svg similarity index 100% rename from client/src/static/icons/solid/italic.svg rename to src/static/icons/solid/italic.svg diff --git a/client/src/static/icons/solid/jack-o-lantern.svg b/src/static/icons/solid/jack-o-lantern.svg similarity index 100% rename from client/src/static/icons/solid/jack-o-lantern.svg rename to src/static/icons/solid/jack-o-lantern.svg diff --git a/client/src/static/icons/solid/jedi.svg b/src/static/icons/solid/jedi.svg similarity index 100% rename from client/src/static/icons/solid/jedi.svg rename to src/static/icons/solid/jedi.svg diff --git a/client/src/static/icons/solid/joint.svg b/src/static/icons/solid/joint.svg similarity index 100% rename from client/src/static/icons/solid/joint.svg rename to src/static/icons/solid/joint.svg diff --git a/client/src/static/icons/solid/journal-whills.svg b/src/static/icons/solid/journal-whills.svg similarity index 100% rename from client/src/static/icons/solid/journal-whills.svg rename to src/static/icons/solid/journal-whills.svg diff --git a/client/src/static/icons/solid/joystick.svg b/src/static/icons/solid/joystick.svg similarity index 100% rename from client/src/static/icons/solid/joystick.svg rename to src/static/icons/solid/joystick.svg diff --git a/client/src/static/icons/solid/jug.svg b/src/static/icons/solid/jug.svg similarity index 100% rename from client/src/static/icons/solid/jug.svg rename to src/static/icons/solid/jug.svg diff --git a/client/src/static/icons/solid/kaaba.svg b/src/static/icons/solid/kaaba.svg similarity index 100% rename from client/src/static/icons/solid/kaaba.svg rename to src/static/icons/solid/kaaba.svg diff --git a/client/src/static/icons/solid/kazoo.svg b/src/static/icons/solid/kazoo.svg similarity index 100% rename from client/src/static/icons/solid/kazoo.svg rename to src/static/icons/solid/kazoo.svg diff --git a/client/src/static/icons/solid/kerning.svg b/src/static/icons/solid/kerning.svg similarity index 100% rename from client/src/static/icons/solid/kerning.svg rename to src/static/icons/solid/kerning.svg diff --git a/client/src/static/icons/solid/key-skeleton.svg b/src/static/icons/solid/key-skeleton.svg similarity index 100% rename from client/src/static/icons/solid/key-skeleton.svg rename to src/static/icons/solid/key-skeleton.svg diff --git a/client/src/static/icons/solid/key.svg b/src/static/icons/solid/key.svg similarity index 100% rename from client/src/static/icons/solid/key.svg rename to src/static/icons/solid/key.svg diff --git a/client/src/static/icons/solid/keyboard.svg b/src/static/icons/solid/keyboard.svg similarity index 100% rename from client/src/static/icons/solid/keyboard.svg rename to src/static/icons/solid/keyboard.svg diff --git a/client/src/static/icons/solid/keynote.svg b/src/static/icons/solid/keynote.svg similarity index 100% rename from client/src/static/icons/solid/keynote.svg rename to src/static/icons/solid/keynote.svg diff --git a/client/src/static/icons/solid/khanda.svg b/src/static/icons/solid/khanda.svg similarity index 100% rename from client/src/static/icons/solid/khanda.svg rename to src/static/icons/solid/khanda.svg diff --git a/client/src/static/icons/solid/kidneys.svg b/src/static/icons/solid/kidneys.svg similarity index 100% rename from client/src/static/icons/solid/kidneys.svg rename to src/static/icons/solid/kidneys.svg diff --git a/client/src/static/icons/solid/kiss-beam.svg b/src/static/icons/solid/kiss-beam.svg similarity index 100% rename from client/src/static/icons/solid/kiss-beam.svg rename to src/static/icons/solid/kiss-beam.svg diff --git a/client/src/static/icons/solid/kiss-wink-heart.svg b/src/static/icons/solid/kiss-wink-heart.svg similarity index 100% rename from client/src/static/icons/solid/kiss-wink-heart.svg rename to src/static/icons/solid/kiss-wink-heart.svg diff --git a/client/src/static/icons/solid/kiss.svg b/src/static/icons/solid/kiss.svg similarity index 100% rename from client/src/static/icons/solid/kiss.svg rename to src/static/icons/solid/kiss.svg diff --git a/client/src/static/icons/solid/kite.svg b/src/static/icons/solid/kite.svg similarity index 100% rename from client/src/static/icons/solid/kite.svg rename to src/static/icons/solid/kite.svg diff --git a/client/src/static/icons/solid/kiwi-bird.svg b/src/static/icons/solid/kiwi-bird.svg similarity index 100% rename from client/src/static/icons/solid/kiwi-bird.svg rename to src/static/icons/solid/kiwi-bird.svg diff --git a/client/src/static/icons/solid/knife-kitchen.svg b/src/static/icons/solid/knife-kitchen.svg similarity index 100% rename from client/src/static/icons/solid/knife-kitchen.svg rename to src/static/icons/solid/knife-kitchen.svg diff --git a/client/src/static/icons/solid/lambda.svg b/src/static/icons/solid/lambda.svg similarity index 100% rename from client/src/static/icons/solid/lambda.svg rename to src/static/icons/solid/lambda.svg diff --git a/client/src/static/icons/solid/lamp-desk.svg b/src/static/icons/solid/lamp-desk.svg similarity index 100% rename from client/src/static/icons/solid/lamp-desk.svg rename to src/static/icons/solid/lamp-desk.svg diff --git a/client/src/static/icons/solid/lamp-floor.svg b/src/static/icons/solid/lamp-floor.svg similarity index 100% rename from client/src/static/icons/solid/lamp-floor.svg rename to src/static/icons/solid/lamp-floor.svg diff --git a/client/src/static/icons/solid/lamp.svg b/src/static/icons/solid/lamp.svg similarity index 100% rename from client/src/static/icons/solid/lamp.svg rename to src/static/icons/solid/lamp.svg diff --git a/client/src/static/icons/solid/landmark-alt.svg b/src/static/icons/solid/landmark-alt.svg similarity index 100% rename from client/src/static/icons/solid/landmark-alt.svg rename to src/static/icons/solid/landmark-alt.svg diff --git a/client/src/static/icons/solid/landmark.svg b/src/static/icons/solid/landmark.svg similarity index 100% rename from client/src/static/icons/solid/landmark.svg rename to src/static/icons/solid/landmark.svg diff --git a/client/src/static/icons/solid/language.svg b/src/static/icons/solid/language.svg similarity index 100% rename from client/src/static/icons/solid/language.svg rename to src/static/icons/solid/language.svg diff --git a/client/src/static/icons/solid/laptop-code.svg b/src/static/icons/solid/laptop-code.svg similarity index 100% rename from client/src/static/icons/solid/laptop-code.svg rename to src/static/icons/solid/laptop-code.svg diff --git a/client/src/static/icons/solid/laptop-medical.svg b/src/static/icons/solid/laptop-medical.svg similarity index 100% rename from client/src/static/icons/solid/laptop-medical.svg rename to src/static/icons/solid/laptop-medical.svg diff --git a/client/src/static/icons/solid/laptop.svg b/src/static/icons/solid/laptop.svg similarity index 100% rename from client/src/static/icons/solid/laptop.svg rename to src/static/icons/solid/laptop.svg diff --git a/client/src/static/icons/solid/lasso.svg b/src/static/icons/solid/lasso.svg similarity index 100% rename from client/src/static/icons/solid/lasso.svg rename to src/static/icons/solid/lasso.svg diff --git a/client/src/static/icons/solid/laugh-beam.svg b/src/static/icons/solid/laugh-beam.svg similarity index 100% rename from client/src/static/icons/solid/laugh-beam.svg rename to src/static/icons/solid/laugh-beam.svg diff --git a/client/src/static/icons/solid/laugh-squint.svg b/src/static/icons/solid/laugh-squint.svg similarity index 100% rename from client/src/static/icons/solid/laugh-squint.svg rename to src/static/icons/solid/laugh-squint.svg diff --git a/client/src/static/icons/solid/laugh-wink.svg b/src/static/icons/solid/laugh-wink.svg similarity index 100% rename from client/src/static/icons/solid/laugh-wink.svg rename to src/static/icons/solid/laugh-wink.svg diff --git a/client/src/static/icons/solid/laugh.svg b/src/static/icons/solid/laugh.svg similarity index 100% rename from client/src/static/icons/solid/laugh.svg rename to src/static/icons/solid/laugh.svg diff --git a/client/src/static/icons/solid/layer-group.svg b/src/static/icons/solid/layer-group.svg similarity index 100% rename from client/src/static/icons/solid/layer-group.svg rename to src/static/icons/solid/layer-group.svg diff --git a/client/src/static/icons/solid/layer-minus.svg b/src/static/icons/solid/layer-minus.svg similarity index 100% rename from client/src/static/icons/solid/layer-minus.svg rename to src/static/icons/solid/layer-minus.svg diff --git a/client/src/static/icons/solid/layer-plus.svg b/src/static/icons/solid/layer-plus.svg similarity index 100% rename from client/src/static/icons/solid/layer-plus.svg rename to src/static/icons/solid/layer-plus.svg diff --git a/client/src/static/icons/solid/leaf-heart.svg b/src/static/icons/solid/leaf-heart.svg similarity index 100% rename from client/src/static/icons/solid/leaf-heart.svg rename to src/static/icons/solid/leaf-heart.svg diff --git a/client/src/static/icons/solid/leaf-maple.svg b/src/static/icons/solid/leaf-maple.svg similarity index 100% rename from client/src/static/icons/solid/leaf-maple.svg rename to src/static/icons/solid/leaf-maple.svg diff --git a/client/src/static/icons/solid/leaf-oak.svg b/src/static/icons/solid/leaf-oak.svg similarity index 100% rename from client/src/static/icons/solid/leaf-oak.svg rename to src/static/icons/solid/leaf-oak.svg diff --git a/client/src/static/icons/solid/leaf.svg b/src/static/icons/solid/leaf.svg similarity index 100% rename from client/src/static/icons/solid/leaf.svg rename to src/static/icons/solid/leaf.svg diff --git a/client/src/static/icons/solid/lemon.svg b/src/static/icons/solid/lemon.svg similarity index 100% rename from client/src/static/icons/solid/lemon.svg rename to src/static/icons/solid/lemon.svg diff --git a/client/src/static/icons/solid/less-than-equal.svg b/src/static/icons/solid/less-than-equal.svg similarity index 100% rename from client/src/static/icons/solid/less-than-equal.svg rename to src/static/icons/solid/less-than-equal.svg diff --git a/client/src/static/icons/solid/less-than.svg b/src/static/icons/solid/less-than.svg similarity index 100% rename from client/src/static/icons/solid/less-than.svg rename to src/static/icons/solid/less-than.svg diff --git a/client/src/static/icons/solid/level-down-alt.svg b/src/static/icons/solid/level-down-alt.svg similarity index 100% rename from client/src/static/icons/solid/level-down-alt.svg rename to src/static/icons/solid/level-down-alt.svg diff --git a/client/src/static/icons/solid/level-down.svg b/src/static/icons/solid/level-down.svg similarity index 100% rename from client/src/static/icons/solid/level-down.svg rename to src/static/icons/solid/level-down.svg diff --git a/client/src/static/icons/solid/level-up-alt.svg b/src/static/icons/solid/level-up-alt.svg similarity index 100% rename from client/src/static/icons/solid/level-up-alt.svg rename to src/static/icons/solid/level-up-alt.svg diff --git a/client/src/static/icons/solid/level-up.svg b/src/static/icons/solid/level-up.svg similarity index 100% rename from client/src/static/icons/solid/level-up.svg rename to src/static/icons/solid/level-up.svg diff --git a/client/src/static/icons/solid/life-ring.svg b/src/static/icons/solid/life-ring.svg similarity index 100% rename from client/src/static/icons/solid/life-ring.svg rename to src/static/icons/solid/life-ring.svg diff --git a/client/src/static/icons/solid/light-ceiling.svg b/src/static/icons/solid/light-ceiling.svg similarity index 100% rename from client/src/static/icons/solid/light-ceiling.svg rename to src/static/icons/solid/light-ceiling.svg diff --git a/client/src/static/icons/solid/light-switch-off.svg b/src/static/icons/solid/light-switch-off.svg similarity index 100% rename from client/src/static/icons/solid/light-switch-off.svg rename to src/static/icons/solid/light-switch-off.svg diff --git a/client/src/static/icons/solid/light-switch-on.svg b/src/static/icons/solid/light-switch-on.svg similarity index 100% rename from client/src/static/icons/solid/light-switch-on.svg rename to src/static/icons/solid/light-switch-on.svg diff --git a/client/src/static/icons/solid/light-switch.svg b/src/static/icons/solid/light-switch.svg similarity index 100% rename from client/src/static/icons/solid/light-switch.svg rename to src/static/icons/solid/light-switch.svg diff --git a/client/src/static/icons/solid/lightbulb-dollar.svg b/src/static/icons/solid/lightbulb-dollar.svg similarity index 100% rename from client/src/static/icons/solid/lightbulb-dollar.svg rename to src/static/icons/solid/lightbulb-dollar.svg diff --git a/client/src/static/icons/solid/lightbulb-exclamation.svg b/src/static/icons/solid/lightbulb-exclamation.svg similarity index 100% rename from client/src/static/icons/solid/lightbulb-exclamation.svg rename to src/static/icons/solid/lightbulb-exclamation.svg diff --git a/client/src/static/icons/solid/lightbulb-on.svg b/src/static/icons/solid/lightbulb-on.svg similarity index 100% rename from client/src/static/icons/solid/lightbulb-on.svg rename to src/static/icons/solid/lightbulb-on.svg diff --git a/client/src/static/icons/solid/lightbulb-slash.svg b/src/static/icons/solid/lightbulb-slash.svg similarity index 100% rename from client/src/static/icons/solid/lightbulb-slash.svg rename to src/static/icons/solid/lightbulb-slash.svg diff --git a/client/src/static/icons/solid/lightbulb.svg b/src/static/icons/solid/lightbulb.svg similarity index 100% rename from client/src/static/icons/solid/lightbulb.svg rename to src/static/icons/solid/lightbulb.svg diff --git a/client/src/static/icons/solid/lights-holiday.svg b/src/static/icons/solid/lights-holiday.svg similarity index 100% rename from client/src/static/icons/solid/lights-holiday.svg rename to src/static/icons/solid/lights-holiday.svg diff --git a/client/src/static/icons/solid/line-columns.svg b/src/static/icons/solid/line-columns.svg similarity index 100% rename from client/src/static/icons/solid/line-columns.svg rename to src/static/icons/solid/line-columns.svg diff --git a/client/src/static/icons/solid/line-height.svg b/src/static/icons/solid/line-height.svg similarity index 100% rename from client/src/static/icons/solid/line-height.svg rename to src/static/icons/solid/line-height.svg diff --git a/client/src/static/icons/solid/link.svg b/src/static/icons/solid/link.svg similarity index 100% rename from client/src/static/icons/solid/link.svg rename to src/static/icons/solid/link.svg diff --git a/client/src/static/icons/solid/lips.svg b/src/static/icons/solid/lips.svg similarity index 100% rename from client/src/static/icons/solid/lips.svg rename to src/static/icons/solid/lips.svg diff --git a/client/src/static/icons/solid/lira-sign.svg b/src/static/icons/solid/lira-sign.svg similarity index 100% rename from client/src/static/icons/solid/lira-sign.svg rename to src/static/icons/solid/lira-sign.svg diff --git a/client/src/static/icons/solid/list-alt.svg b/src/static/icons/solid/list-alt.svg similarity index 100% rename from client/src/static/icons/solid/list-alt.svg rename to src/static/icons/solid/list-alt.svg diff --git a/client/src/static/icons/solid/list-music.svg b/src/static/icons/solid/list-music.svg similarity index 100% rename from client/src/static/icons/solid/list-music.svg rename to src/static/icons/solid/list-music.svg diff --git a/client/src/static/icons/solid/list-ol.svg b/src/static/icons/solid/list-ol.svg similarity index 100% rename from client/src/static/icons/solid/list-ol.svg rename to src/static/icons/solid/list-ol.svg diff --git a/client/src/static/icons/solid/list-ul.svg b/src/static/icons/solid/list-ul.svg similarity index 100% rename from client/src/static/icons/solid/list-ul.svg rename to src/static/icons/solid/list-ul.svg diff --git a/client/src/static/icons/solid/list.svg b/src/static/icons/solid/list.svg similarity index 100% rename from client/src/static/icons/solid/list.svg rename to src/static/icons/solid/list.svg diff --git a/client/src/static/icons/solid/location-arrow.svg b/src/static/icons/solid/location-arrow.svg similarity index 100% rename from client/src/static/icons/solid/location-arrow.svg rename to src/static/icons/solid/location-arrow.svg diff --git a/client/src/static/icons/solid/location-circle.svg b/src/static/icons/solid/location-circle.svg similarity index 100% rename from client/src/static/icons/solid/location-circle.svg rename to src/static/icons/solid/location-circle.svg diff --git a/client/src/static/icons/solid/location-slash.svg b/src/static/icons/solid/location-slash.svg similarity index 100% rename from client/src/static/icons/solid/location-slash.svg rename to src/static/icons/solid/location-slash.svg diff --git a/client/src/static/icons/solid/location.svg b/src/static/icons/solid/location.svg similarity index 100% rename from client/src/static/icons/solid/location.svg rename to src/static/icons/solid/location.svg diff --git a/client/src/static/icons/solid/lock-alt.svg b/src/static/icons/solid/lock-alt.svg similarity index 100% rename from client/src/static/icons/solid/lock-alt.svg rename to src/static/icons/solid/lock-alt.svg diff --git a/client/src/static/icons/solid/lock-open-alt.svg b/src/static/icons/solid/lock-open-alt.svg similarity index 100% rename from client/src/static/icons/solid/lock-open-alt.svg rename to src/static/icons/solid/lock-open-alt.svg diff --git a/client/src/static/icons/solid/lock-open.svg b/src/static/icons/solid/lock-open.svg similarity index 100% rename from client/src/static/icons/solid/lock-open.svg rename to src/static/icons/solid/lock-open.svg diff --git a/client/src/static/icons/solid/lock.svg b/src/static/icons/solid/lock.svg similarity index 100% rename from client/src/static/icons/solid/lock.svg rename to src/static/icons/solid/lock.svg diff --git a/client/src/static/icons/solid/long-arrow-alt-down.svg b/src/static/icons/solid/long-arrow-alt-down.svg similarity index 100% rename from client/src/static/icons/solid/long-arrow-alt-down.svg rename to src/static/icons/solid/long-arrow-alt-down.svg diff --git a/client/src/static/icons/solid/long-arrow-alt-left.svg b/src/static/icons/solid/long-arrow-alt-left.svg similarity index 100% rename from client/src/static/icons/solid/long-arrow-alt-left.svg rename to src/static/icons/solid/long-arrow-alt-left.svg diff --git a/client/src/static/icons/solid/long-arrow-alt-right.svg b/src/static/icons/solid/long-arrow-alt-right.svg similarity index 100% rename from client/src/static/icons/solid/long-arrow-alt-right.svg rename to src/static/icons/solid/long-arrow-alt-right.svg diff --git a/client/src/static/icons/solid/long-arrow-alt-up.svg b/src/static/icons/solid/long-arrow-alt-up.svg similarity index 100% rename from client/src/static/icons/solid/long-arrow-alt-up.svg rename to src/static/icons/solid/long-arrow-alt-up.svg diff --git a/client/src/static/icons/solid/long-arrow-down.svg b/src/static/icons/solid/long-arrow-down.svg similarity index 100% rename from client/src/static/icons/solid/long-arrow-down.svg rename to src/static/icons/solid/long-arrow-down.svg diff --git a/client/src/static/icons/solid/long-arrow-left.svg b/src/static/icons/solid/long-arrow-left.svg similarity index 100% rename from client/src/static/icons/solid/long-arrow-left.svg rename to src/static/icons/solid/long-arrow-left.svg diff --git a/client/src/static/icons/solid/long-arrow-right.svg b/src/static/icons/solid/long-arrow-right.svg similarity index 100% rename from client/src/static/icons/solid/long-arrow-right.svg rename to src/static/icons/solid/long-arrow-right.svg diff --git a/client/src/static/icons/solid/long-arrow-up.svg b/src/static/icons/solid/long-arrow-up.svg similarity index 100% rename from client/src/static/icons/solid/long-arrow-up.svg rename to src/static/icons/solid/long-arrow-up.svg diff --git a/client/src/static/icons/solid/loveseat.svg b/src/static/icons/solid/loveseat.svg similarity index 100% rename from client/src/static/icons/solid/loveseat.svg rename to src/static/icons/solid/loveseat.svg diff --git a/client/src/static/icons/solid/low-vision.svg b/src/static/icons/solid/low-vision.svg similarity index 100% rename from client/src/static/icons/solid/low-vision.svg rename to src/static/icons/solid/low-vision.svg diff --git a/client/src/static/icons/solid/luchador.svg b/src/static/icons/solid/luchador.svg similarity index 100% rename from client/src/static/icons/solid/luchador.svg rename to src/static/icons/solid/luchador.svg diff --git a/client/src/static/icons/solid/luggage-cart.svg b/src/static/icons/solid/luggage-cart.svg similarity index 100% rename from client/src/static/icons/solid/luggage-cart.svg rename to src/static/icons/solid/luggage-cart.svg diff --git a/client/src/static/icons/solid/lungs.svg b/src/static/icons/solid/lungs.svg similarity index 100% rename from client/src/static/icons/solid/lungs.svg rename to src/static/icons/solid/lungs.svg diff --git a/client/src/static/icons/solid/mace.svg b/src/static/icons/solid/mace.svg similarity index 100% rename from client/src/static/icons/solid/mace.svg rename to src/static/icons/solid/mace.svg diff --git a/client/src/static/icons/solid/magic.svg b/src/static/icons/solid/magic.svg similarity index 100% rename from client/src/static/icons/solid/magic.svg rename to src/static/icons/solid/magic.svg diff --git a/client/src/static/icons/solid/magnet.svg b/src/static/icons/solid/magnet.svg similarity index 100% rename from client/src/static/icons/solid/magnet.svg rename to src/static/icons/solid/magnet.svg diff --git a/client/src/static/icons/solid/mail-bulk.svg b/src/static/icons/solid/mail-bulk.svg similarity index 100% rename from client/src/static/icons/solid/mail-bulk.svg rename to src/static/icons/solid/mail-bulk.svg diff --git a/client/src/static/icons/solid/mailbox.svg b/src/static/icons/solid/mailbox.svg similarity index 100% rename from client/src/static/icons/solid/mailbox.svg rename to src/static/icons/solid/mailbox.svg diff --git a/client/src/static/icons/solid/male.svg b/src/static/icons/solid/male.svg similarity index 100% rename from client/src/static/icons/solid/male.svg rename to src/static/icons/solid/male.svg diff --git a/client/src/static/icons/solid/mandolin.svg b/src/static/icons/solid/mandolin.svg similarity index 100% rename from client/src/static/icons/solid/mandolin.svg rename to src/static/icons/solid/mandolin.svg diff --git a/client/src/static/icons/solid/map-marked-alt.svg b/src/static/icons/solid/map-marked-alt.svg similarity index 100% rename from client/src/static/icons/solid/map-marked-alt.svg rename to src/static/icons/solid/map-marked-alt.svg diff --git a/client/src/static/icons/solid/map-marked.svg b/src/static/icons/solid/map-marked.svg similarity index 100% rename from client/src/static/icons/solid/map-marked.svg rename to src/static/icons/solid/map-marked.svg diff --git a/client/src/static/icons/solid/map-marker-alt-slash.svg b/src/static/icons/solid/map-marker-alt-slash.svg similarity index 100% rename from client/src/static/icons/solid/map-marker-alt-slash.svg rename to src/static/icons/solid/map-marker-alt-slash.svg diff --git a/client/src/static/icons/solid/map-marker-alt.svg b/src/static/icons/solid/map-marker-alt.svg similarity index 100% rename from client/src/static/icons/solid/map-marker-alt.svg rename to src/static/icons/solid/map-marker-alt.svg diff --git a/client/src/static/icons/solid/map-marker-check.svg b/src/static/icons/solid/map-marker-check.svg similarity index 100% rename from client/src/static/icons/solid/map-marker-check.svg rename to src/static/icons/solid/map-marker-check.svg diff --git a/client/src/static/icons/solid/map-marker-edit.svg b/src/static/icons/solid/map-marker-edit.svg similarity index 100% rename from client/src/static/icons/solid/map-marker-edit.svg rename to src/static/icons/solid/map-marker-edit.svg diff --git a/client/src/static/icons/solid/map-marker-exclamation.svg b/src/static/icons/solid/map-marker-exclamation.svg similarity index 100% rename from client/src/static/icons/solid/map-marker-exclamation.svg rename to src/static/icons/solid/map-marker-exclamation.svg diff --git a/client/src/static/icons/solid/map-marker-minus.svg b/src/static/icons/solid/map-marker-minus.svg similarity index 100% rename from client/src/static/icons/solid/map-marker-minus.svg rename to src/static/icons/solid/map-marker-minus.svg diff --git a/client/src/static/icons/solid/map-marker-plus.svg b/src/static/icons/solid/map-marker-plus.svg similarity index 100% rename from client/src/static/icons/solid/map-marker-plus.svg rename to src/static/icons/solid/map-marker-plus.svg diff --git a/client/src/static/icons/solid/map-marker-question.svg b/src/static/icons/solid/map-marker-question.svg similarity index 100% rename from client/src/static/icons/solid/map-marker-question.svg rename to src/static/icons/solid/map-marker-question.svg diff --git a/client/src/static/icons/solid/map-marker-slash.svg b/src/static/icons/solid/map-marker-slash.svg similarity index 100% rename from client/src/static/icons/solid/map-marker-slash.svg rename to src/static/icons/solid/map-marker-slash.svg diff --git a/client/src/static/icons/solid/map-marker-smile.svg b/src/static/icons/solid/map-marker-smile.svg similarity index 100% rename from client/src/static/icons/solid/map-marker-smile.svg rename to src/static/icons/solid/map-marker-smile.svg diff --git a/client/src/static/icons/solid/map-marker-times.svg b/src/static/icons/solid/map-marker-times.svg similarity index 100% rename from client/src/static/icons/solid/map-marker-times.svg rename to src/static/icons/solid/map-marker-times.svg diff --git a/client/src/static/icons/solid/map-marker.svg b/src/static/icons/solid/map-marker.svg similarity index 100% rename from client/src/static/icons/solid/map-marker.svg rename to src/static/icons/solid/map-marker.svg diff --git a/client/src/static/icons/solid/map-pin.svg b/src/static/icons/solid/map-pin.svg similarity index 100% rename from client/src/static/icons/solid/map-pin.svg rename to src/static/icons/solid/map-pin.svg diff --git a/client/src/static/icons/solid/map-signs.svg b/src/static/icons/solid/map-signs.svg similarity index 100% rename from client/src/static/icons/solid/map-signs.svg rename to src/static/icons/solid/map-signs.svg diff --git a/client/src/static/icons/solid/map.svg b/src/static/icons/solid/map.svg similarity index 100% rename from client/src/static/icons/solid/map.svg rename to src/static/icons/solid/map.svg diff --git a/client/src/static/icons/solid/marker.svg b/src/static/icons/solid/marker.svg similarity index 100% rename from client/src/static/icons/solid/marker.svg rename to src/static/icons/solid/marker.svg diff --git a/client/src/static/icons/solid/mars-double.svg b/src/static/icons/solid/mars-double.svg similarity index 100% rename from client/src/static/icons/solid/mars-double.svg rename to src/static/icons/solid/mars-double.svg diff --git a/client/src/static/icons/solid/mars-stroke-h.svg b/src/static/icons/solid/mars-stroke-h.svg similarity index 100% rename from client/src/static/icons/solid/mars-stroke-h.svg rename to src/static/icons/solid/mars-stroke-h.svg diff --git a/client/src/static/icons/solid/mars-stroke-v.svg b/src/static/icons/solid/mars-stroke-v.svg similarity index 100% rename from client/src/static/icons/solid/mars-stroke-v.svg rename to src/static/icons/solid/mars-stroke-v.svg diff --git a/client/src/static/icons/solid/mars-stroke.svg b/src/static/icons/solid/mars-stroke.svg similarity index 100% rename from client/src/static/icons/solid/mars-stroke.svg rename to src/static/icons/solid/mars-stroke.svg diff --git a/client/src/static/icons/solid/mars.svg b/src/static/icons/solid/mars.svg similarity index 100% rename from client/src/static/icons/solid/mars.svg rename to src/static/icons/solid/mars.svg diff --git a/client/src/static/icons/solid/mask.svg b/src/static/icons/solid/mask.svg similarity index 100% rename from client/src/static/icons/solid/mask.svg rename to src/static/icons/solid/mask.svg diff --git a/client/src/static/icons/solid/meat.svg b/src/static/icons/solid/meat.svg similarity index 100% rename from client/src/static/icons/solid/meat.svg rename to src/static/icons/solid/meat.svg diff --git a/client/src/static/icons/solid/medal.svg b/src/static/icons/solid/medal.svg similarity index 100% rename from client/src/static/icons/solid/medal.svg rename to src/static/icons/solid/medal.svg diff --git a/client/src/static/icons/solid/medkit.svg b/src/static/icons/solid/medkit.svg similarity index 100% rename from client/src/static/icons/solid/medkit.svg rename to src/static/icons/solid/medkit.svg diff --git a/client/src/static/icons/solid/megaphone.svg b/src/static/icons/solid/megaphone.svg similarity index 100% rename from client/src/static/icons/solid/megaphone.svg rename to src/static/icons/solid/megaphone.svg diff --git a/client/src/static/icons/solid/meh-blank.svg b/src/static/icons/solid/meh-blank.svg similarity index 100% rename from client/src/static/icons/solid/meh-blank.svg rename to src/static/icons/solid/meh-blank.svg diff --git a/client/src/static/icons/solid/meh-rolling-eyes.svg b/src/static/icons/solid/meh-rolling-eyes.svg similarity index 100% rename from client/src/static/icons/solid/meh-rolling-eyes.svg rename to src/static/icons/solid/meh-rolling-eyes.svg diff --git a/client/src/static/icons/solid/meh.svg b/src/static/icons/solid/meh.svg similarity index 100% rename from client/src/static/icons/solid/meh.svg rename to src/static/icons/solid/meh.svg diff --git a/client/src/static/icons/solid/memory.svg b/src/static/icons/solid/memory.svg similarity index 100% rename from client/src/static/icons/solid/memory.svg rename to src/static/icons/solid/memory.svg diff --git a/client/src/static/icons/solid/menorah.svg b/src/static/icons/solid/menorah.svg similarity index 100% rename from client/src/static/icons/solid/menorah.svg rename to src/static/icons/solid/menorah.svg diff --git a/client/src/static/icons/solid/mercury.svg b/src/static/icons/solid/mercury.svg similarity index 100% rename from client/src/static/icons/solid/mercury.svg rename to src/static/icons/solid/mercury.svg diff --git a/client/src/static/icons/solid/meteor.svg b/src/static/icons/solid/meteor.svg similarity index 100% rename from client/src/static/icons/solid/meteor.svg rename to src/static/icons/solid/meteor.svg diff --git a/client/src/static/icons/solid/microchip.svg b/src/static/icons/solid/microchip.svg similarity index 100% rename from client/src/static/icons/solid/microchip.svg rename to src/static/icons/solid/microchip.svg diff --git a/client/src/static/icons/solid/microphone-alt-slash.svg b/src/static/icons/solid/microphone-alt-slash.svg similarity index 100% rename from client/src/static/icons/solid/microphone-alt-slash.svg rename to src/static/icons/solid/microphone-alt-slash.svg diff --git a/client/src/static/icons/solid/microphone-alt.svg b/src/static/icons/solid/microphone-alt.svg similarity index 100% rename from client/src/static/icons/solid/microphone-alt.svg rename to src/static/icons/solid/microphone-alt.svg diff --git a/client/src/static/icons/solid/microphone-slash.svg b/src/static/icons/solid/microphone-slash.svg similarity index 100% rename from client/src/static/icons/solid/microphone-slash.svg rename to src/static/icons/solid/microphone-slash.svg diff --git a/client/src/static/icons/solid/microphone-stand.svg b/src/static/icons/solid/microphone-stand.svg similarity index 100% rename from client/src/static/icons/solid/microphone-stand.svg rename to src/static/icons/solid/microphone-stand.svg diff --git a/client/src/static/icons/solid/microphone.svg b/src/static/icons/solid/microphone.svg similarity index 100% rename from client/src/static/icons/solid/microphone.svg rename to src/static/icons/solid/microphone.svg diff --git a/client/src/static/icons/solid/microscope.svg b/src/static/icons/solid/microscope.svg similarity index 100% rename from client/src/static/icons/solid/microscope.svg rename to src/static/icons/solid/microscope.svg diff --git a/client/src/static/icons/solid/microwave.svg b/src/static/icons/solid/microwave.svg similarity index 100% rename from client/src/static/icons/solid/microwave.svg rename to src/static/icons/solid/microwave.svg diff --git a/client/src/static/icons/solid/mind-share.svg b/src/static/icons/solid/mind-share.svg similarity index 100% rename from client/src/static/icons/solid/mind-share.svg rename to src/static/icons/solid/mind-share.svg diff --git a/client/src/static/icons/solid/minus-circle.svg b/src/static/icons/solid/minus-circle.svg similarity index 100% rename from client/src/static/icons/solid/minus-circle.svg rename to src/static/icons/solid/minus-circle.svg diff --git a/client/src/static/icons/solid/minus-hexagon.svg b/src/static/icons/solid/minus-hexagon.svg similarity index 100% rename from client/src/static/icons/solid/minus-hexagon.svg rename to src/static/icons/solid/minus-hexagon.svg diff --git a/client/src/static/icons/solid/minus-octagon.svg b/src/static/icons/solid/minus-octagon.svg similarity index 100% rename from client/src/static/icons/solid/minus-octagon.svg rename to src/static/icons/solid/minus-octagon.svg diff --git a/client/src/static/icons/solid/minus-square.svg b/src/static/icons/solid/minus-square.svg similarity index 100% rename from client/src/static/icons/solid/minus-square.svg rename to src/static/icons/solid/minus-square.svg diff --git a/client/src/static/icons/solid/minus.svg b/src/static/icons/solid/minus.svg similarity index 100% rename from client/src/static/icons/solid/minus.svg rename to src/static/icons/solid/minus.svg diff --git a/client/src/static/icons/solid/mistletoe.svg b/src/static/icons/solid/mistletoe.svg similarity index 100% rename from client/src/static/icons/solid/mistletoe.svg rename to src/static/icons/solid/mistletoe.svg diff --git a/client/src/static/icons/solid/mitten.svg b/src/static/icons/solid/mitten.svg similarity index 100% rename from client/src/static/icons/solid/mitten.svg rename to src/static/icons/solid/mitten.svg diff --git a/client/src/static/icons/solid/mobile-alt.svg b/src/static/icons/solid/mobile-alt.svg similarity index 100% rename from client/src/static/icons/solid/mobile-alt.svg rename to src/static/icons/solid/mobile-alt.svg diff --git a/client/src/static/icons/solid/mobile-android-alt.svg b/src/static/icons/solid/mobile-android-alt.svg similarity index 100% rename from client/src/static/icons/solid/mobile-android-alt.svg rename to src/static/icons/solid/mobile-android-alt.svg diff --git a/client/src/static/icons/solid/mobile-android.svg b/src/static/icons/solid/mobile-android.svg similarity index 100% rename from client/src/static/icons/solid/mobile-android.svg rename to src/static/icons/solid/mobile-android.svg diff --git a/client/src/static/icons/solid/mobile.svg b/src/static/icons/solid/mobile.svg similarity index 100% rename from client/src/static/icons/solid/mobile.svg rename to src/static/icons/solid/mobile.svg diff --git a/client/src/static/icons/solid/money-bill-alt.svg b/src/static/icons/solid/money-bill-alt.svg similarity index 100% rename from client/src/static/icons/solid/money-bill-alt.svg rename to src/static/icons/solid/money-bill-alt.svg diff --git a/client/src/static/icons/solid/money-bill-wave-alt.svg b/src/static/icons/solid/money-bill-wave-alt.svg similarity index 100% rename from client/src/static/icons/solid/money-bill-wave-alt.svg rename to src/static/icons/solid/money-bill-wave-alt.svg diff --git a/client/src/static/icons/solid/money-bill-wave.svg b/src/static/icons/solid/money-bill-wave.svg similarity index 100% rename from client/src/static/icons/solid/money-bill-wave.svg rename to src/static/icons/solid/money-bill-wave.svg diff --git a/client/src/static/icons/solid/money-bill.svg b/src/static/icons/solid/money-bill.svg similarity index 100% rename from client/src/static/icons/solid/money-bill.svg rename to src/static/icons/solid/money-bill.svg diff --git a/client/src/static/icons/solid/money-check-alt.svg b/src/static/icons/solid/money-check-alt.svg similarity index 100% rename from client/src/static/icons/solid/money-check-alt.svg rename to src/static/icons/solid/money-check-alt.svg diff --git a/client/src/static/icons/solid/money-check-edit-alt.svg b/src/static/icons/solid/money-check-edit-alt.svg similarity index 100% rename from client/src/static/icons/solid/money-check-edit-alt.svg rename to src/static/icons/solid/money-check-edit-alt.svg diff --git a/client/src/static/icons/solid/money-check-edit.svg b/src/static/icons/solid/money-check-edit.svg similarity index 100% rename from client/src/static/icons/solid/money-check-edit.svg rename to src/static/icons/solid/money-check-edit.svg diff --git a/client/src/static/icons/solid/money-check.svg b/src/static/icons/solid/money-check.svg similarity index 100% rename from client/src/static/icons/solid/money-check.svg rename to src/static/icons/solid/money-check.svg diff --git a/client/src/static/icons/solid/monitor-heart-rate.svg b/src/static/icons/solid/monitor-heart-rate.svg similarity index 100% rename from client/src/static/icons/solid/monitor-heart-rate.svg rename to src/static/icons/solid/monitor-heart-rate.svg diff --git a/client/src/static/icons/solid/monkey.svg b/src/static/icons/solid/monkey.svg similarity index 100% rename from client/src/static/icons/solid/monkey.svg rename to src/static/icons/solid/monkey.svg diff --git a/client/src/static/icons/solid/monument.svg b/src/static/icons/solid/monument.svg similarity index 100% rename from client/src/static/icons/solid/monument.svg rename to src/static/icons/solid/monument.svg diff --git a/client/src/static/icons/solid/moon-cloud.svg b/src/static/icons/solid/moon-cloud.svg similarity index 100% rename from client/src/static/icons/solid/moon-cloud.svg rename to src/static/icons/solid/moon-cloud.svg diff --git a/client/src/static/icons/solid/moon-stars.svg b/src/static/icons/solid/moon-stars.svg similarity index 100% rename from client/src/static/icons/solid/moon-stars.svg rename to src/static/icons/solid/moon-stars.svg diff --git a/client/src/static/icons/solid/moon.svg b/src/static/icons/solid/moon.svg similarity index 100% rename from client/src/static/icons/solid/moon.svg rename to src/static/icons/solid/moon.svg diff --git a/client/src/static/icons/solid/mortar-pestle.svg b/src/static/icons/solid/mortar-pestle.svg similarity index 100% rename from client/src/static/icons/solid/mortar-pestle.svg rename to src/static/icons/solid/mortar-pestle.svg diff --git a/client/src/static/icons/solid/mosque.svg b/src/static/icons/solid/mosque.svg similarity index 100% rename from client/src/static/icons/solid/mosque.svg rename to src/static/icons/solid/mosque.svg diff --git a/client/src/static/icons/solid/motorcycle.svg b/src/static/icons/solid/motorcycle.svg similarity index 100% rename from client/src/static/icons/solid/motorcycle.svg rename to src/static/icons/solid/motorcycle.svg diff --git a/client/src/static/icons/solid/mountain.svg b/src/static/icons/solid/mountain.svg similarity index 100% rename from client/src/static/icons/solid/mountain.svg rename to src/static/icons/solid/mountain.svg diff --git a/client/src/static/icons/solid/mountains.svg b/src/static/icons/solid/mountains.svg similarity index 100% rename from client/src/static/icons/solid/mountains.svg rename to src/static/icons/solid/mountains.svg diff --git a/client/src/static/icons/solid/mouse-alt.svg b/src/static/icons/solid/mouse-alt.svg similarity index 100% rename from client/src/static/icons/solid/mouse-alt.svg rename to src/static/icons/solid/mouse-alt.svg diff --git a/client/src/static/icons/solid/mouse-pointer.svg b/src/static/icons/solid/mouse-pointer.svg similarity index 100% rename from client/src/static/icons/solid/mouse-pointer.svg rename to src/static/icons/solid/mouse-pointer.svg diff --git a/client/src/static/icons/solid/mouse.svg b/src/static/icons/solid/mouse.svg similarity index 100% rename from client/src/static/icons/solid/mouse.svg rename to src/static/icons/solid/mouse.svg diff --git a/client/src/static/icons/solid/mp3-player.svg b/src/static/icons/solid/mp3-player.svg similarity index 100% rename from client/src/static/icons/solid/mp3-player.svg rename to src/static/icons/solid/mp3-player.svg diff --git a/client/src/static/icons/solid/mug-hot.svg b/src/static/icons/solid/mug-hot.svg similarity index 100% rename from client/src/static/icons/solid/mug-hot.svg rename to src/static/icons/solid/mug-hot.svg diff --git a/client/src/static/icons/solid/mug-marshmallows.svg b/src/static/icons/solid/mug-marshmallows.svg similarity index 100% rename from client/src/static/icons/solid/mug-marshmallows.svg rename to src/static/icons/solid/mug-marshmallows.svg diff --git a/client/src/static/icons/solid/mug-tea.svg b/src/static/icons/solid/mug-tea.svg similarity index 100% rename from client/src/static/icons/solid/mug-tea.svg rename to src/static/icons/solid/mug-tea.svg diff --git a/client/src/static/icons/solid/mug.svg b/src/static/icons/solid/mug.svg similarity index 100% rename from client/src/static/icons/solid/mug.svg rename to src/static/icons/solid/mug.svg diff --git a/client/src/static/icons/solid/music-alt-slash.svg b/src/static/icons/solid/music-alt-slash.svg similarity index 100% rename from client/src/static/icons/solid/music-alt-slash.svg rename to src/static/icons/solid/music-alt-slash.svg diff --git a/client/src/static/icons/solid/music-alt.svg b/src/static/icons/solid/music-alt.svg similarity index 100% rename from client/src/static/icons/solid/music-alt.svg rename to src/static/icons/solid/music-alt.svg diff --git a/client/src/static/icons/solid/music-slash.svg b/src/static/icons/solid/music-slash.svg similarity index 100% rename from client/src/static/icons/solid/music-slash.svg rename to src/static/icons/solid/music-slash.svg diff --git a/client/src/static/icons/solid/music.svg b/src/static/icons/solid/music.svg similarity index 100% rename from client/src/static/icons/solid/music.svg rename to src/static/icons/solid/music.svg diff --git a/client/src/static/icons/solid/narwhal.svg b/src/static/icons/solid/narwhal.svg similarity index 100% rename from client/src/static/icons/solid/narwhal.svg rename to src/static/icons/solid/narwhal.svg diff --git a/client/src/static/icons/solid/network-wired.svg b/src/static/icons/solid/network-wired.svg similarity index 100% rename from client/src/static/icons/solid/network-wired.svg rename to src/static/icons/solid/network-wired.svg diff --git a/client/src/static/icons/solid/neuter.svg b/src/static/icons/solid/neuter.svg similarity index 100% rename from client/src/static/icons/solid/neuter.svg rename to src/static/icons/solid/neuter.svg diff --git a/client/src/static/icons/solid/newspaper.svg b/src/static/icons/solid/newspaper.svg similarity index 100% rename from client/src/static/icons/solid/newspaper.svg rename to src/static/icons/solid/newspaper.svg diff --git a/client/src/static/icons/solid/not-equal.svg b/src/static/icons/solid/not-equal.svg similarity index 100% rename from client/src/static/icons/solid/not-equal.svg rename to src/static/icons/solid/not-equal.svg diff --git a/client/src/static/icons/solid/notes-medical.svg b/src/static/icons/solid/notes-medical.svg similarity index 100% rename from client/src/static/icons/solid/notes-medical.svg rename to src/static/icons/solid/notes-medical.svg diff --git a/client/src/static/icons/solid/object-group.svg b/src/static/icons/solid/object-group.svg similarity index 100% rename from client/src/static/icons/solid/object-group.svg rename to src/static/icons/solid/object-group.svg diff --git a/client/src/static/icons/solid/object-ungroup.svg b/src/static/icons/solid/object-ungroup.svg similarity index 100% rename from client/src/static/icons/solid/object-ungroup.svg rename to src/static/icons/solid/object-ungroup.svg diff --git a/client/src/static/icons/solid/octagon.svg b/src/static/icons/solid/octagon.svg similarity index 100% rename from client/src/static/icons/solid/octagon.svg rename to src/static/icons/solid/octagon.svg diff --git a/client/src/static/icons/solid/oil-can.svg b/src/static/icons/solid/oil-can.svg similarity index 100% rename from client/src/static/icons/solid/oil-can.svg rename to src/static/icons/solid/oil-can.svg diff --git a/client/src/static/icons/solid/oil-temp.svg b/src/static/icons/solid/oil-temp.svg similarity index 100% rename from client/src/static/icons/solid/oil-temp.svg rename to src/static/icons/solid/oil-temp.svg diff --git a/client/src/static/icons/solid/om.svg b/src/static/icons/solid/om.svg similarity index 100% rename from client/src/static/icons/solid/om.svg rename to src/static/icons/solid/om.svg diff --git a/client/src/static/icons/solid/omega.svg b/src/static/icons/solid/omega.svg similarity index 100% rename from client/src/static/icons/solid/omega.svg rename to src/static/icons/solid/omega.svg diff --git a/client/src/static/icons/solid/ornament.svg b/src/static/icons/solid/ornament.svg similarity index 100% rename from client/src/static/icons/solid/ornament.svg rename to src/static/icons/solid/ornament.svg diff --git a/client/src/static/icons/solid/otter.svg b/src/static/icons/solid/otter.svg similarity index 100% rename from client/src/static/icons/solid/otter.svg rename to src/static/icons/solid/otter.svg diff --git a/client/src/static/icons/solid/outdent.svg b/src/static/icons/solid/outdent.svg similarity index 100% rename from client/src/static/icons/solid/outdent.svg rename to src/static/icons/solid/outdent.svg diff --git a/client/src/static/icons/solid/outlet.svg b/src/static/icons/solid/outlet.svg similarity index 100% rename from client/src/static/icons/solid/outlet.svg rename to src/static/icons/solid/outlet.svg diff --git a/client/src/static/icons/solid/oven.svg b/src/static/icons/solid/oven.svg similarity index 100% rename from client/src/static/icons/solid/oven.svg rename to src/static/icons/solid/oven.svg diff --git a/client/src/static/icons/solid/overline.svg b/src/static/icons/solid/overline.svg similarity index 100% rename from client/src/static/icons/solid/overline.svg rename to src/static/icons/solid/overline.svg diff --git a/client/src/static/icons/solid/page-break.svg b/src/static/icons/solid/page-break.svg similarity index 100% rename from client/src/static/icons/solid/page-break.svg rename to src/static/icons/solid/page-break.svg diff --git a/client/src/static/icons/solid/pager.svg b/src/static/icons/solid/pager.svg similarity index 100% rename from client/src/static/icons/solid/pager.svg rename to src/static/icons/solid/pager.svg diff --git a/client/src/static/icons/solid/paint-brush-alt.svg b/src/static/icons/solid/paint-brush-alt.svg similarity index 100% rename from client/src/static/icons/solid/paint-brush-alt.svg rename to src/static/icons/solid/paint-brush-alt.svg diff --git a/client/src/static/icons/solid/paint-brush.svg b/src/static/icons/solid/paint-brush.svg similarity index 100% rename from client/src/static/icons/solid/paint-brush.svg rename to src/static/icons/solid/paint-brush.svg diff --git a/client/src/static/icons/solid/paint-roller.svg b/src/static/icons/solid/paint-roller.svg similarity index 100% rename from client/src/static/icons/solid/paint-roller.svg rename to src/static/icons/solid/paint-roller.svg diff --git a/client/src/static/icons/solid/palette.svg b/src/static/icons/solid/palette.svg similarity index 100% rename from client/src/static/icons/solid/palette.svg rename to src/static/icons/solid/palette.svg diff --git a/client/src/static/icons/solid/pallet-alt.svg b/src/static/icons/solid/pallet-alt.svg similarity index 100% rename from client/src/static/icons/solid/pallet-alt.svg rename to src/static/icons/solid/pallet-alt.svg diff --git a/client/src/static/icons/solid/pallet.svg b/src/static/icons/solid/pallet.svg similarity index 100% rename from client/src/static/icons/solid/pallet.svg rename to src/static/icons/solid/pallet.svg diff --git a/client/src/static/icons/solid/paper-plane.svg b/src/static/icons/solid/paper-plane.svg similarity index 100% rename from client/src/static/icons/solid/paper-plane.svg rename to src/static/icons/solid/paper-plane.svg diff --git a/client/src/static/icons/solid/paperclip.svg b/src/static/icons/solid/paperclip.svg similarity index 100% rename from client/src/static/icons/solid/paperclip.svg rename to src/static/icons/solid/paperclip.svg diff --git a/client/src/static/icons/solid/parachute-box.svg b/src/static/icons/solid/parachute-box.svg similarity index 100% rename from client/src/static/icons/solid/parachute-box.svg rename to src/static/icons/solid/parachute-box.svg diff --git a/client/src/static/icons/solid/paragraph-rtl.svg b/src/static/icons/solid/paragraph-rtl.svg similarity index 100% rename from client/src/static/icons/solid/paragraph-rtl.svg rename to src/static/icons/solid/paragraph-rtl.svg diff --git a/client/src/static/icons/solid/paragraph.svg b/src/static/icons/solid/paragraph.svg similarity index 100% rename from client/src/static/icons/solid/paragraph.svg rename to src/static/icons/solid/paragraph.svg diff --git a/client/src/static/icons/solid/parking-circle-slash.svg b/src/static/icons/solid/parking-circle-slash.svg similarity index 100% rename from client/src/static/icons/solid/parking-circle-slash.svg rename to src/static/icons/solid/parking-circle-slash.svg diff --git a/client/src/static/icons/solid/parking-circle.svg b/src/static/icons/solid/parking-circle.svg similarity index 100% rename from client/src/static/icons/solid/parking-circle.svg rename to src/static/icons/solid/parking-circle.svg diff --git a/client/src/static/icons/solid/parking-slash.svg b/src/static/icons/solid/parking-slash.svg similarity index 100% rename from client/src/static/icons/solid/parking-slash.svg rename to src/static/icons/solid/parking-slash.svg diff --git a/client/src/static/icons/solid/parking.svg b/src/static/icons/solid/parking.svg similarity index 100% rename from client/src/static/icons/solid/parking.svg rename to src/static/icons/solid/parking.svg diff --git a/client/src/static/icons/solid/passport.svg b/src/static/icons/solid/passport.svg similarity index 100% rename from client/src/static/icons/solid/passport.svg rename to src/static/icons/solid/passport.svg diff --git a/client/src/static/icons/solid/pastafarianism.svg b/src/static/icons/solid/pastafarianism.svg similarity index 100% rename from client/src/static/icons/solid/pastafarianism.svg rename to src/static/icons/solid/pastafarianism.svg diff --git a/client/src/static/icons/solid/paste.svg b/src/static/icons/solid/paste.svg similarity index 100% rename from client/src/static/icons/solid/paste.svg rename to src/static/icons/solid/paste.svg diff --git a/client/src/static/icons/solid/pause-circle.svg b/src/static/icons/solid/pause-circle.svg similarity index 100% rename from client/src/static/icons/solid/pause-circle.svg rename to src/static/icons/solid/pause-circle.svg diff --git a/client/src/static/icons/solid/pause.svg b/src/static/icons/solid/pause.svg similarity index 100% rename from client/src/static/icons/solid/pause.svg rename to src/static/icons/solid/pause.svg diff --git a/client/src/static/icons/solid/paw-alt.svg b/src/static/icons/solid/paw-alt.svg similarity index 100% rename from client/src/static/icons/solid/paw-alt.svg rename to src/static/icons/solid/paw-alt.svg diff --git a/client/src/static/icons/solid/paw-claws.svg b/src/static/icons/solid/paw-claws.svg similarity index 100% rename from client/src/static/icons/solid/paw-claws.svg rename to src/static/icons/solid/paw-claws.svg diff --git a/client/src/static/icons/solid/paw.svg b/src/static/icons/solid/paw.svg similarity index 100% rename from client/src/static/icons/solid/paw.svg rename to src/static/icons/solid/paw.svg diff --git a/client/src/static/icons/solid/peace.svg b/src/static/icons/solid/peace.svg similarity index 100% rename from client/src/static/icons/solid/peace.svg rename to src/static/icons/solid/peace.svg diff --git a/client/src/static/icons/solid/pegasus.svg b/src/static/icons/solid/pegasus.svg similarity index 100% rename from client/src/static/icons/solid/pegasus.svg rename to src/static/icons/solid/pegasus.svg diff --git a/client/src/static/icons/solid/pen-alt.svg b/src/static/icons/solid/pen-alt.svg similarity index 100% rename from client/src/static/icons/solid/pen-alt.svg rename to src/static/icons/solid/pen-alt.svg diff --git a/client/src/static/icons/solid/pen-fancy.svg b/src/static/icons/solid/pen-fancy.svg similarity index 100% rename from client/src/static/icons/solid/pen-fancy.svg rename to src/static/icons/solid/pen-fancy.svg diff --git a/client/src/static/icons/solid/pen-nib.svg b/src/static/icons/solid/pen-nib.svg similarity index 100% rename from client/src/static/icons/solid/pen-nib.svg rename to src/static/icons/solid/pen-nib.svg diff --git a/client/src/static/icons/solid/pen-square.svg b/src/static/icons/solid/pen-square.svg similarity index 100% rename from client/src/static/icons/solid/pen-square.svg rename to src/static/icons/solid/pen-square.svg diff --git a/client/src/static/icons/solid/pen.svg b/src/static/icons/solid/pen.svg similarity index 100% rename from client/src/static/icons/solid/pen.svg rename to src/static/icons/solid/pen.svg diff --git a/client/src/static/icons/solid/pencil-alt.svg b/src/static/icons/solid/pencil-alt.svg similarity index 100% rename from client/src/static/icons/solid/pencil-alt.svg rename to src/static/icons/solid/pencil-alt.svg diff --git a/client/src/static/icons/solid/pencil-paintbrush.svg b/src/static/icons/solid/pencil-paintbrush.svg similarity index 100% rename from client/src/static/icons/solid/pencil-paintbrush.svg rename to src/static/icons/solid/pencil-paintbrush.svg diff --git a/client/src/static/icons/solid/pencil-ruler.svg b/src/static/icons/solid/pencil-ruler.svg similarity index 100% rename from client/src/static/icons/solid/pencil-ruler.svg rename to src/static/icons/solid/pencil-ruler.svg diff --git a/client/src/static/icons/solid/pencil.svg b/src/static/icons/solid/pencil.svg similarity index 100% rename from client/src/static/icons/solid/pencil.svg rename to src/static/icons/solid/pencil.svg diff --git a/client/src/static/icons/solid/pennant.svg b/src/static/icons/solid/pennant.svg similarity index 100% rename from client/src/static/icons/solid/pennant.svg rename to src/static/icons/solid/pennant.svg diff --git a/client/src/static/icons/solid/people-carry.svg b/src/static/icons/solid/people-carry.svg similarity index 100% rename from client/src/static/icons/solid/people-carry.svg rename to src/static/icons/solid/people-carry.svg diff --git a/client/src/static/icons/solid/pepper-hot.svg b/src/static/icons/solid/pepper-hot.svg similarity index 100% rename from client/src/static/icons/solid/pepper-hot.svg rename to src/static/icons/solid/pepper-hot.svg diff --git a/client/src/static/icons/solid/percent.svg b/src/static/icons/solid/percent.svg similarity index 100% rename from client/src/static/icons/solid/percent.svg rename to src/static/icons/solid/percent.svg diff --git a/client/src/static/icons/solid/percentage.svg b/src/static/icons/solid/percentage.svg similarity index 100% rename from client/src/static/icons/solid/percentage.svg rename to src/static/icons/solid/percentage.svg diff --git a/client/src/static/icons/solid/person-booth.svg b/src/static/icons/solid/person-booth.svg similarity index 100% rename from client/src/static/icons/solid/person-booth.svg rename to src/static/icons/solid/person-booth.svg diff --git a/client/src/static/icons/solid/person-carry.svg b/src/static/icons/solid/person-carry.svg similarity index 100% rename from client/src/static/icons/solid/person-carry.svg rename to src/static/icons/solid/person-carry.svg diff --git a/client/src/static/icons/solid/person-dolly-empty.svg b/src/static/icons/solid/person-dolly-empty.svg similarity index 100% rename from client/src/static/icons/solid/person-dolly-empty.svg rename to src/static/icons/solid/person-dolly-empty.svg diff --git a/client/src/static/icons/solid/person-dolly.svg b/src/static/icons/solid/person-dolly.svg similarity index 100% rename from client/src/static/icons/solid/person-dolly.svg rename to src/static/icons/solid/person-dolly.svg diff --git a/client/src/static/icons/solid/person-sign.svg b/src/static/icons/solid/person-sign.svg similarity index 100% rename from client/src/static/icons/solid/person-sign.svg rename to src/static/icons/solid/person-sign.svg diff --git a/client/src/static/icons/solid/phone-alt.svg b/src/static/icons/solid/phone-alt.svg similarity index 100% rename from client/src/static/icons/solid/phone-alt.svg rename to src/static/icons/solid/phone-alt.svg diff --git a/client/src/static/icons/solid/phone-laptop.svg b/src/static/icons/solid/phone-laptop.svg similarity index 100% rename from client/src/static/icons/solid/phone-laptop.svg rename to src/static/icons/solid/phone-laptop.svg diff --git a/client/src/static/icons/solid/phone-office.svg b/src/static/icons/solid/phone-office.svg similarity index 100% rename from client/src/static/icons/solid/phone-office.svg rename to src/static/icons/solid/phone-office.svg diff --git a/client/src/static/icons/solid/phone-plus.svg b/src/static/icons/solid/phone-plus.svg similarity index 100% rename from client/src/static/icons/solid/phone-plus.svg rename to src/static/icons/solid/phone-plus.svg diff --git a/client/src/static/icons/solid/phone-rotary.svg b/src/static/icons/solid/phone-rotary.svg similarity index 100% rename from client/src/static/icons/solid/phone-rotary.svg rename to src/static/icons/solid/phone-rotary.svg diff --git a/client/src/static/icons/solid/phone-slash.svg b/src/static/icons/solid/phone-slash.svg similarity index 100% rename from client/src/static/icons/solid/phone-slash.svg rename to src/static/icons/solid/phone-slash.svg diff --git a/client/src/static/icons/solid/phone-square-alt.svg b/src/static/icons/solid/phone-square-alt.svg similarity index 100% rename from client/src/static/icons/solid/phone-square-alt.svg rename to src/static/icons/solid/phone-square-alt.svg diff --git a/client/src/static/icons/solid/phone-square.svg b/src/static/icons/solid/phone-square.svg similarity index 100% rename from client/src/static/icons/solid/phone-square.svg rename to src/static/icons/solid/phone-square.svg diff --git a/client/src/static/icons/solid/phone-volume.svg b/src/static/icons/solid/phone-volume.svg similarity index 100% rename from client/src/static/icons/solid/phone-volume.svg rename to src/static/icons/solid/phone-volume.svg diff --git a/client/src/static/icons/solid/phone.svg b/src/static/icons/solid/phone.svg similarity index 100% rename from client/src/static/icons/solid/phone.svg rename to src/static/icons/solid/phone.svg diff --git a/client/src/static/icons/solid/photo-video.svg b/src/static/icons/solid/photo-video.svg similarity index 100% rename from client/src/static/icons/solid/photo-video.svg rename to src/static/icons/solid/photo-video.svg diff --git a/client/src/static/icons/solid/pi.svg b/src/static/icons/solid/pi.svg similarity index 100% rename from client/src/static/icons/solid/pi.svg rename to src/static/icons/solid/pi.svg diff --git a/client/src/static/icons/solid/piano-keyboard.svg b/src/static/icons/solid/piano-keyboard.svg similarity index 100% rename from client/src/static/icons/solid/piano-keyboard.svg rename to src/static/icons/solid/piano-keyboard.svg diff --git a/client/src/static/icons/solid/piano.svg b/src/static/icons/solid/piano.svg similarity index 100% rename from client/src/static/icons/solid/piano.svg rename to src/static/icons/solid/piano.svg diff --git a/client/src/static/icons/solid/pie.svg b/src/static/icons/solid/pie.svg similarity index 100% rename from client/src/static/icons/solid/pie.svg rename to src/static/icons/solid/pie.svg diff --git a/client/src/static/icons/solid/pig.svg b/src/static/icons/solid/pig.svg similarity index 100% rename from client/src/static/icons/solid/pig.svg rename to src/static/icons/solid/pig.svg diff --git a/client/src/static/icons/solid/piggy-bank.svg b/src/static/icons/solid/piggy-bank.svg similarity index 100% rename from client/src/static/icons/solid/piggy-bank.svg rename to src/static/icons/solid/piggy-bank.svg diff --git a/client/src/static/icons/solid/pills.svg b/src/static/icons/solid/pills.svg similarity index 100% rename from client/src/static/icons/solid/pills.svg rename to src/static/icons/solid/pills.svg diff --git a/client/src/static/icons/solid/pizza-slice.svg b/src/static/icons/solid/pizza-slice.svg similarity index 100% rename from client/src/static/icons/solid/pizza-slice.svg rename to src/static/icons/solid/pizza-slice.svg diff --git a/client/src/static/icons/solid/pizza.svg b/src/static/icons/solid/pizza.svg similarity index 100% rename from client/src/static/icons/solid/pizza.svg rename to src/static/icons/solid/pizza.svg diff --git a/client/src/static/icons/solid/place-of-worship.svg b/src/static/icons/solid/place-of-worship.svg similarity index 100% rename from client/src/static/icons/solid/place-of-worship.svg rename to src/static/icons/solid/place-of-worship.svg diff --git a/client/src/static/icons/solid/plane-alt.svg b/src/static/icons/solid/plane-alt.svg similarity index 100% rename from client/src/static/icons/solid/plane-alt.svg rename to src/static/icons/solid/plane-alt.svg diff --git a/client/src/static/icons/solid/plane-arrival.svg b/src/static/icons/solid/plane-arrival.svg similarity index 100% rename from client/src/static/icons/solid/plane-arrival.svg rename to src/static/icons/solid/plane-arrival.svg diff --git a/client/src/static/icons/solid/plane-departure.svg b/src/static/icons/solid/plane-departure.svg similarity index 100% rename from client/src/static/icons/solid/plane-departure.svg rename to src/static/icons/solid/plane-departure.svg diff --git a/client/src/static/icons/solid/plane.svg b/src/static/icons/solid/plane.svg similarity index 100% rename from client/src/static/icons/solid/plane.svg rename to src/static/icons/solid/plane.svg diff --git a/client/src/static/icons/solid/planet-moon.svg b/src/static/icons/solid/planet-moon.svg similarity index 100% rename from client/src/static/icons/solid/planet-moon.svg rename to src/static/icons/solid/planet-moon.svg diff --git a/client/src/static/icons/solid/planet-ringed.svg b/src/static/icons/solid/planet-ringed.svg similarity index 100% rename from client/src/static/icons/solid/planet-ringed.svg rename to src/static/icons/solid/planet-ringed.svg diff --git a/client/src/static/icons/solid/play-circle.svg b/src/static/icons/solid/play-circle.svg similarity index 100% rename from client/src/static/icons/solid/play-circle.svg rename to src/static/icons/solid/play-circle.svg diff --git a/client/src/static/icons/solid/play.svg b/src/static/icons/solid/play.svg similarity index 100% rename from client/src/static/icons/solid/play.svg rename to src/static/icons/solid/play.svg diff --git a/client/src/static/icons/solid/plug.svg b/src/static/icons/solid/plug.svg similarity index 100% rename from client/src/static/icons/solid/plug.svg rename to src/static/icons/solid/plug.svg diff --git a/client/src/static/icons/solid/plus-circle.svg b/src/static/icons/solid/plus-circle.svg similarity index 100% rename from client/src/static/icons/solid/plus-circle.svg rename to src/static/icons/solid/plus-circle.svg diff --git a/client/src/static/icons/solid/plus-hexagon.svg b/src/static/icons/solid/plus-hexagon.svg similarity index 100% rename from client/src/static/icons/solid/plus-hexagon.svg rename to src/static/icons/solid/plus-hexagon.svg diff --git a/client/src/static/icons/solid/plus-octagon.svg b/src/static/icons/solid/plus-octagon.svg similarity index 100% rename from client/src/static/icons/solid/plus-octagon.svg rename to src/static/icons/solid/plus-octagon.svg diff --git a/client/src/static/icons/solid/plus-square.svg b/src/static/icons/solid/plus-square.svg similarity index 100% rename from client/src/static/icons/solid/plus-square.svg rename to src/static/icons/solid/plus-square.svg diff --git a/client/src/static/icons/solid/plus.svg b/src/static/icons/solid/plus.svg similarity index 100% rename from client/src/static/icons/solid/plus.svg rename to src/static/icons/solid/plus.svg diff --git a/client/src/static/icons/solid/podcast.svg b/src/static/icons/solid/podcast.svg similarity index 100% rename from client/src/static/icons/solid/podcast.svg rename to src/static/icons/solid/podcast.svg diff --git a/client/src/static/icons/solid/podium-star.svg b/src/static/icons/solid/podium-star.svg similarity index 100% rename from client/src/static/icons/solid/podium-star.svg rename to src/static/icons/solid/podium-star.svg diff --git a/client/src/static/icons/solid/podium.svg b/src/static/icons/solid/podium.svg similarity index 100% rename from client/src/static/icons/solid/podium.svg rename to src/static/icons/solid/podium.svg diff --git a/client/src/static/icons/solid/police-box.svg b/src/static/icons/solid/police-box.svg similarity index 100% rename from client/src/static/icons/solid/police-box.svg rename to src/static/icons/solid/police-box.svg diff --git a/client/src/static/icons/solid/poll-h.svg b/src/static/icons/solid/poll-h.svg similarity index 100% rename from client/src/static/icons/solid/poll-h.svg rename to src/static/icons/solid/poll-h.svg diff --git a/client/src/static/icons/solid/poll-people.svg b/src/static/icons/solid/poll-people.svg similarity index 100% rename from client/src/static/icons/solid/poll-people.svg rename to src/static/icons/solid/poll-people.svg diff --git a/client/src/static/icons/solid/poll.svg b/src/static/icons/solid/poll.svg similarity index 100% rename from client/src/static/icons/solid/poll.svg rename to src/static/icons/solid/poll.svg diff --git a/client/src/static/icons/solid/poo-storm.svg b/src/static/icons/solid/poo-storm.svg similarity index 100% rename from client/src/static/icons/solid/poo-storm.svg rename to src/static/icons/solid/poo-storm.svg diff --git a/client/src/static/icons/solid/poo.svg b/src/static/icons/solid/poo.svg similarity index 100% rename from client/src/static/icons/solid/poo.svg rename to src/static/icons/solid/poo.svg diff --git a/client/src/static/icons/solid/poop.svg b/src/static/icons/solid/poop.svg similarity index 100% rename from client/src/static/icons/solid/poop.svg rename to src/static/icons/solid/poop.svg diff --git a/client/src/static/icons/solid/popcorn.svg b/src/static/icons/solid/popcorn.svg similarity index 100% rename from client/src/static/icons/solid/popcorn.svg rename to src/static/icons/solid/popcorn.svg diff --git a/client/src/static/icons/solid/portal-enter.svg b/src/static/icons/solid/portal-enter.svg similarity index 100% rename from client/src/static/icons/solid/portal-enter.svg rename to src/static/icons/solid/portal-enter.svg diff --git a/client/src/static/icons/solid/portal-exit.svg b/src/static/icons/solid/portal-exit.svg similarity index 100% rename from client/src/static/icons/solid/portal-exit.svg rename to src/static/icons/solid/portal-exit.svg diff --git a/client/src/static/icons/solid/portrait.svg b/src/static/icons/solid/portrait.svg similarity index 100% rename from client/src/static/icons/solid/portrait.svg rename to src/static/icons/solid/portrait.svg diff --git a/client/src/static/icons/solid/pound-sign.svg b/src/static/icons/solid/pound-sign.svg similarity index 100% rename from client/src/static/icons/solid/pound-sign.svg rename to src/static/icons/solid/pound-sign.svg diff --git a/client/src/static/icons/solid/power-off.svg b/src/static/icons/solid/power-off.svg similarity index 100% rename from client/src/static/icons/solid/power-off.svg rename to src/static/icons/solid/power-off.svg diff --git a/client/src/static/icons/solid/pray.svg b/src/static/icons/solid/pray.svg similarity index 100% rename from client/src/static/icons/solid/pray.svg rename to src/static/icons/solid/pray.svg diff --git a/client/src/static/icons/solid/praying-hands.svg b/src/static/icons/solid/praying-hands.svg similarity index 100% rename from client/src/static/icons/solid/praying-hands.svg rename to src/static/icons/solid/praying-hands.svg diff --git a/client/src/static/icons/solid/prescription-bottle-alt.svg b/src/static/icons/solid/prescription-bottle-alt.svg similarity index 100% rename from client/src/static/icons/solid/prescription-bottle-alt.svg rename to src/static/icons/solid/prescription-bottle-alt.svg diff --git a/client/src/static/icons/solid/prescription-bottle.svg b/src/static/icons/solid/prescription-bottle.svg similarity index 100% rename from client/src/static/icons/solid/prescription-bottle.svg rename to src/static/icons/solid/prescription-bottle.svg diff --git a/client/src/static/icons/solid/prescription.svg b/src/static/icons/solid/prescription.svg similarity index 100% rename from client/src/static/icons/solid/prescription.svg rename to src/static/icons/solid/prescription.svg diff --git a/client/src/static/icons/solid/presentation.svg b/src/static/icons/solid/presentation.svg similarity index 100% rename from client/src/static/icons/solid/presentation.svg rename to src/static/icons/solid/presentation.svg diff --git a/client/src/static/icons/solid/print-search.svg b/src/static/icons/solid/print-search.svg similarity index 100% rename from client/src/static/icons/solid/print-search.svg rename to src/static/icons/solid/print-search.svg diff --git a/client/src/static/icons/solid/print-slash.svg b/src/static/icons/solid/print-slash.svg similarity index 100% rename from client/src/static/icons/solid/print-slash.svg rename to src/static/icons/solid/print-slash.svg diff --git a/client/src/static/icons/solid/print.svg b/src/static/icons/solid/print.svg similarity index 100% rename from client/src/static/icons/solid/print.svg rename to src/static/icons/solid/print.svg diff --git a/client/src/static/icons/solid/procedures.svg b/src/static/icons/solid/procedures.svg similarity index 100% rename from client/src/static/icons/solid/procedures.svg rename to src/static/icons/solid/procedures.svg diff --git a/client/src/static/icons/solid/project-diagram.svg b/src/static/icons/solid/project-diagram.svg similarity index 100% rename from client/src/static/icons/solid/project-diagram.svg rename to src/static/icons/solid/project-diagram.svg diff --git a/client/src/static/icons/solid/projector.svg b/src/static/icons/solid/projector.svg similarity index 100% rename from client/src/static/icons/solid/projector.svg rename to src/static/icons/solid/projector.svg diff --git a/client/src/static/icons/solid/pumpkin.svg b/src/static/icons/solid/pumpkin.svg similarity index 100% rename from client/src/static/icons/solid/pumpkin.svg rename to src/static/icons/solid/pumpkin.svg diff --git a/client/src/static/icons/solid/puzzle-piece.svg b/src/static/icons/solid/puzzle-piece.svg similarity index 100% rename from client/src/static/icons/solid/puzzle-piece.svg rename to src/static/icons/solid/puzzle-piece.svg diff --git a/client/src/static/icons/solid/qrcode.svg b/src/static/icons/solid/qrcode.svg similarity index 100% rename from client/src/static/icons/solid/qrcode.svg rename to src/static/icons/solid/qrcode.svg diff --git a/client/src/static/icons/solid/question-circle.svg b/src/static/icons/solid/question-circle.svg similarity index 100% rename from client/src/static/icons/solid/question-circle.svg rename to src/static/icons/solid/question-circle.svg diff --git a/client/src/static/icons/solid/question-square.svg b/src/static/icons/solid/question-square.svg similarity index 100% rename from client/src/static/icons/solid/question-square.svg rename to src/static/icons/solid/question-square.svg diff --git a/client/src/static/icons/solid/question.svg b/src/static/icons/solid/question.svg similarity index 100% rename from client/src/static/icons/solid/question.svg rename to src/static/icons/solid/question.svg diff --git a/client/src/static/icons/solid/quidditch.svg b/src/static/icons/solid/quidditch.svg similarity index 100% rename from client/src/static/icons/solid/quidditch.svg rename to src/static/icons/solid/quidditch.svg diff --git a/client/src/static/icons/solid/quote-left.svg b/src/static/icons/solid/quote-left.svg similarity index 100% rename from client/src/static/icons/solid/quote-left.svg rename to src/static/icons/solid/quote-left.svg diff --git a/client/src/static/icons/solid/quote-right.svg b/src/static/icons/solid/quote-right.svg similarity index 100% rename from client/src/static/icons/solid/quote-right.svg rename to src/static/icons/solid/quote-right.svg diff --git a/client/src/static/icons/solid/quran.svg b/src/static/icons/solid/quran.svg similarity index 100% rename from client/src/static/icons/solid/quran.svg rename to src/static/icons/solid/quran.svg diff --git a/client/src/static/icons/solid/rabbit-fast.svg b/src/static/icons/solid/rabbit-fast.svg similarity index 100% rename from client/src/static/icons/solid/rabbit-fast.svg rename to src/static/icons/solid/rabbit-fast.svg diff --git a/client/src/static/icons/solid/rabbit.svg b/src/static/icons/solid/rabbit.svg similarity index 100% rename from client/src/static/icons/solid/rabbit.svg rename to src/static/icons/solid/rabbit.svg diff --git a/client/src/static/icons/solid/racquet.svg b/src/static/icons/solid/racquet.svg similarity index 100% rename from client/src/static/icons/solid/racquet.svg rename to src/static/icons/solid/racquet.svg diff --git a/client/src/static/icons/solid/radar.svg b/src/static/icons/solid/radar.svg similarity index 100% rename from client/src/static/icons/solid/radar.svg rename to src/static/icons/solid/radar.svg diff --git a/client/src/static/icons/solid/radiation-alt.svg b/src/static/icons/solid/radiation-alt.svg similarity index 100% rename from client/src/static/icons/solid/radiation-alt.svg rename to src/static/icons/solid/radiation-alt.svg diff --git a/client/src/static/icons/solid/radiation.svg b/src/static/icons/solid/radiation.svg similarity index 100% rename from client/src/static/icons/solid/radiation.svg rename to src/static/icons/solid/radiation.svg diff --git a/client/src/static/icons/solid/radio-alt.svg b/src/static/icons/solid/radio-alt.svg similarity index 100% rename from client/src/static/icons/solid/radio-alt.svg rename to src/static/icons/solid/radio-alt.svg diff --git a/client/src/static/icons/solid/radio.svg b/src/static/icons/solid/radio.svg similarity index 100% rename from client/src/static/icons/solid/radio.svg rename to src/static/icons/solid/radio.svg diff --git a/client/src/static/icons/solid/rainbow.svg b/src/static/icons/solid/rainbow.svg similarity index 100% rename from client/src/static/icons/solid/rainbow.svg rename to src/static/icons/solid/rainbow.svg diff --git a/client/src/static/icons/solid/raindrops.svg b/src/static/icons/solid/raindrops.svg similarity index 100% rename from client/src/static/icons/solid/raindrops.svg rename to src/static/icons/solid/raindrops.svg diff --git a/client/src/static/icons/solid/ram.svg b/src/static/icons/solid/ram.svg similarity index 100% rename from client/src/static/icons/solid/ram.svg rename to src/static/icons/solid/ram.svg diff --git a/client/src/static/icons/solid/ramp-loading.svg b/src/static/icons/solid/ramp-loading.svg similarity index 100% rename from client/src/static/icons/solid/ramp-loading.svg rename to src/static/icons/solid/ramp-loading.svg diff --git a/client/src/static/icons/solid/random.svg b/src/static/icons/solid/random.svg similarity index 100% rename from client/src/static/icons/solid/random.svg rename to src/static/icons/solid/random.svg diff --git a/client/src/static/icons/solid/raygun.svg b/src/static/icons/solid/raygun.svg similarity index 100% rename from client/src/static/icons/solid/raygun.svg rename to src/static/icons/solid/raygun.svg diff --git a/client/src/static/icons/solid/receipt.svg b/src/static/icons/solid/receipt.svg similarity index 100% rename from client/src/static/icons/solid/receipt.svg rename to src/static/icons/solid/receipt.svg diff --git a/client/src/static/icons/solid/record-vinyl.svg b/src/static/icons/solid/record-vinyl.svg similarity index 100% rename from client/src/static/icons/solid/record-vinyl.svg rename to src/static/icons/solid/record-vinyl.svg diff --git a/client/src/static/icons/solid/rectangle-landscape.svg b/src/static/icons/solid/rectangle-landscape.svg similarity index 100% rename from client/src/static/icons/solid/rectangle-landscape.svg rename to src/static/icons/solid/rectangle-landscape.svg diff --git a/client/src/static/icons/solid/rectangle-portrait.svg b/src/static/icons/solid/rectangle-portrait.svg similarity index 100% rename from client/src/static/icons/solid/rectangle-portrait.svg rename to src/static/icons/solid/rectangle-portrait.svg diff --git a/client/src/static/icons/solid/rectangle-wide.svg b/src/static/icons/solid/rectangle-wide.svg similarity index 100% rename from client/src/static/icons/solid/rectangle-wide.svg rename to src/static/icons/solid/rectangle-wide.svg diff --git a/client/src/static/icons/solid/recycle.svg b/src/static/icons/solid/recycle.svg similarity index 100% rename from client/src/static/icons/solid/recycle.svg rename to src/static/icons/solid/recycle.svg diff --git a/client/src/static/icons/solid/redo-alt.svg b/src/static/icons/solid/redo-alt.svg similarity index 100% rename from client/src/static/icons/solid/redo-alt.svg rename to src/static/icons/solid/redo-alt.svg diff --git a/client/src/static/icons/solid/redo.svg b/src/static/icons/solid/redo.svg similarity index 100% rename from client/src/static/icons/solid/redo.svg rename to src/static/icons/solid/redo.svg diff --git a/client/src/static/icons/solid/refrigerator.svg b/src/static/icons/solid/refrigerator.svg similarity index 100% rename from client/src/static/icons/solid/refrigerator.svg rename to src/static/icons/solid/refrigerator.svg diff --git a/client/src/static/icons/solid/registered.svg b/src/static/icons/solid/registered.svg similarity index 100% rename from client/src/static/icons/solid/registered.svg rename to src/static/icons/solid/registered.svg diff --git a/client/src/static/icons/solid/remove-format.svg b/src/static/icons/solid/remove-format.svg similarity index 100% rename from client/src/static/icons/solid/remove-format.svg rename to src/static/icons/solid/remove-format.svg diff --git a/client/src/static/icons/solid/repeat-1-alt.svg b/src/static/icons/solid/repeat-1-alt.svg similarity index 100% rename from client/src/static/icons/solid/repeat-1-alt.svg rename to src/static/icons/solid/repeat-1-alt.svg diff --git a/client/src/static/icons/solid/repeat-1.svg b/src/static/icons/solid/repeat-1.svg similarity index 100% rename from client/src/static/icons/solid/repeat-1.svg rename to src/static/icons/solid/repeat-1.svg diff --git a/client/src/static/icons/solid/repeat-alt.svg b/src/static/icons/solid/repeat-alt.svg similarity index 100% rename from client/src/static/icons/solid/repeat-alt.svg rename to src/static/icons/solid/repeat-alt.svg diff --git a/client/src/static/icons/solid/repeat.svg b/src/static/icons/solid/repeat.svg similarity index 100% rename from client/src/static/icons/solid/repeat.svg rename to src/static/icons/solid/repeat.svg diff --git a/client/src/static/icons/solid/reply-all.svg b/src/static/icons/solid/reply-all.svg similarity index 100% rename from client/src/static/icons/solid/reply-all.svg rename to src/static/icons/solid/reply-all.svg diff --git a/client/src/static/icons/solid/reply.svg b/src/static/icons/solid/reply.svg similarity index 100% rename from client/src/static/icons/solid/reply.svg rename to src/static/icons/solid/reply.svg diff --git a/client/src/static/icons/solid/republican.svg b/src/static/icons/solid/republican.svg similarity index 100% rename from client/src/static/icons/solid/republican.svg rename to src/static/icons/solid/republican.svg diff --git a/client/src/static/icons/solid/restroom.svg b/src/static/icons/solid/restroom.svg similarity index 100% rename from client/src/static/icons/solid/restroom.svg rename to src/static/icons/solid/restroom.svg diff --git a/client/src/static/icons/solid/retweet-alt.svg b/src/static/icons/solid/retweet-alt.svg similarity index 100% rename from client/src/static/icons/solid/retweet-alt.svg rename to src/static/icons/solid/retweet-alt.svg diff --git a/client/src/static/icons/solid/retweet.svg b/src/static/icons/solid/retweet.svg similarity index 100% rename from client/src/static/icons/solid/retweet.svg rename to src/static/icons/solid/retweet.svg diff --git a/client/src/static/icons/solid/ribbon.svg b/src/static/icons/solid/ribbon.svg similarity index 100% rename from client/src/static/icons/solid/ribbon.svg rename to src/static/icons/solid/ribbon.svg diff --git a/client/src/static/icons/solid/ring.svg b/src/static/icons/solid/ring.svg similarity index 100% rename from client/src/static/icons/solid/ring.svg rename to src/static/icons/solid/ring.svg diff --git a/client/src/static/icons/solid/rings-wedding.svg b/src/static/icons/solid/rings-wedding.svg similarity index 100% rename from client/src/static/icons/solid/rings-wedding.svg rename to src/static/icons/solid/rings-wedding.svg diff --git a/client/src/static/icons/solid/road.svg b/src/static/icons/solid/road.svg similarity index 100% rename from client/src/static/icons/solid/road.svg rename to src/static/icons/solid/road.svg diff --git a/client/src/static/icons/solid/robot.svg b/src/static/icons/solid/robot.svg similarity index 100% rename from client/src/static/icons/solid/robot.svg rename to src/static/icons/solid/robot.svg diff --git a/client/src/static/icons/solid/rocket-launch.svg b/src/static/icons/solid/rocket-launch.svg similarity index 100% rename from client/src/static/icons/solid/rocket-launch.svg rename to src/static/icons/solid/rocket-launch.svg diff --git a/client/src/static/icons/solid/rocket.svg b/src/static/icons/solid/rocket.svg similarity index 100% rename from client/src/static/icons/solid/rocket.svg rename to src/static/icons/solid/rocket.svg diff --git a/client/src/static/icons/solid/route-highway.svg b/src/static/icons/solid/route-highway.svg similarity index 100% rename from client/src/static/icons/solid/route-highway.svg rename to src/static/icons/solid/route-highway.svg diff --git a/client/src/static/icons/solid/route-interstate.svg b/src/static/icons/solid/route-interstate.svg similarity index 100% rename from client/src/static/icons/solid/route-interstate.svg rename to src/static/icons/solid/route-interstate.svg diff --git a/client/src/static/icons/solid/route.svg b/src/static/icons/solid/route.svg similarity index 100% rename from client/src/static/icons/solid/route.svg rename to src/static/icons/solid/route.svg diff --git a/client/src/static/icons/solid/router.svg b/src/static/icons/solid/router.svg similarity index 100% rename from client/src/static/icons/solid/router.svg rename to src/static/icons/solid/router.svg diff --git a/client/src/static/icons/solid/rss-square.svg b/src/static/icons/solid/rss-square.svg similarity index 100% rename from client/src/static/icons/solid/rss-square.svg rename to src/static/icons/solid/rss-square.svg diff --git a/client/src/static/icons/solid/rss.svg b/src/static/icons/solid/rss.svg similarity index 100% rename from client/src/static/icons/solid/rss.svg rename to src/static/icons/solid/rss.svg diff --git a/client/src/static/icons/solid/ruble-sign.svg b/src/static/icons/solid/ruble-sign.svg similarity index 100% rename from client/src/static/icons/solid/ruble-sign.svg rename to src/static/icons/solid/ruble-sign.svg diff --git a/client/src/static/icons/solid/ruler-combined.svg b/src/static/icons/solid/ruler-combined.svg similarity index 100% rename from client/src/static/icons/solid/ruler-combined.svg rename to src/static/icons/solid/ruler-combined.svg diff --git a/client/src/static/icons/solid/ruler-horizontal.svg b/src/static/icons/solid/ruler-horizontal.svg similarity index 100% rename from client/src/static/icons/solid/ruler-horizontal.svg rename to src/static/icons/solid/ruler-horizontal.svg diff --git a/client/src/static/icons/solid/ruler-triangle.svg b/src/static/icons/solid/ruler-triangle.svg similarity index 100% rename from client/src/static/icons/solid/ruler-triangle.svg rename to src/static/icons/solid/ruler-triangle.svg diff --git a/client/src/static/icons/solid/ruler-vertical.svg b/src/static/icons/solid/ruler-vertical.svg similarity index 100% rename from client/src/static/icons/solid/ruler-vertical.svg rename to src/static/icons/solid/ruler-vertical.svg diff --git a/client/src/static/icons/solid/ruler.svg b/src/static/icons/solid/ruler.svg similarity index 100% rename from client/src/static/icons/solid/ruler.svg rename to src/static/icons/solid/ruler.svg diff --git a/client/src/static/icons/solid/running.svg b/src/static/icons/solid/running.svg similarity index 100% rename from client/src/static/icons/solid/running.svg rename to src/static/icons/solid/running.svg diff --git a/client/src/static/icons/solid/rupee-sign.svg b/src/static/icons/solid/rupee-sign.svg similarity index 100% rename from client/src/static/icons/solid/rupee-sign.svg rename to src/static/icons/solid/rupee-sign.svg diff --git a/client/src/static/icons/solid/rv.svg b/src/static/icons/solid/rv.svg similarity index 100% rename from client/src/static/icons/solid/rv.svg rename to src/static/icons/solid/rv.svg diff --git a/client/src/static/icons/solid/sack-dollar.svg b/src/static/icons/solid/sack-dollar.svg similarity index 100% rename from client/src/static/icons/solid/sack-dollar.svg rename to src/static/icons/solid/sack-dollar.svg diff --git a/client/src/static/icons/solid/sack.svg b/src/static/icons/solid/sack.svg similarity index 100% rename from client/src/static/icons/solid/sack.svg rename to src/static/icons/solid/sack.svg diff --git a/client/src/static/icons/solid/sad-cry.svg b/src/static/icons/solid/sad-cry.svg similarity index 100% rename from client/src/static/icons/solid/sad-cry.svg rename to src/static/icons/solid/sad-cry.svg diff --git a/client/src/static/icons/solid/sad-tear.svg b/src/static/icons/solid/sad-tear.svg similarity index 100% rename from client/src/static/icons/solid/sad-tear.svg rename to src/static/icons/solid/sad-tear.svg diff --git a/client/src/static/icons/solid/salad.svg b/src/static/icons/solid/salad.svg similarity index 100% rename from client/src/static/icons/solid/salad.svg rename to src/static/icons/solid/salad.svg diff --git a/client/src/static/icons/solid/sandwich.svg b/src/static/icons/solid/sandwich.svg similarity index 100% rename from client/src/static/icons/solid/sandwich.svg rename to src/static/icons/solid/sandwich.svg diff --git a/client/src/static/icons/solid/satellite-dish.svg b/src/static/icons/solid/satellite-dish.svg similarity index 100% rename from client/src/static/icons/solid/satellite-dish.svg rename to src/static/icons/solid/satellite-dish.svg diff --git a/client/src/static/icons/solid/satellite.svg b/src/static/icons/solid/satellite.svg similarity index 100% rename from client/src/static/icons/solid/satellite.svg rename to src/static/icons/solid/satellite.svg diff --git a/client/src/static/icons/solid/sausage.svg b/src/static/icons/solid/sausage.svg similarity index 100% rename from client/src/static/icons/solid/sausage.svg rename to src/static/icons/solid/sausage.svg diff --git a/client/src/static/icons/solid/save.svg b/src/static/icons/solid/save.svg similarity index 100% rename from client/src/static/icons/solid/save.svg rename to src/static/icons/solid/save.svg diff --git a/client/src/static/icons/solid/sax-hot.svg b/src/static/icons/solid/sax-hot.svg similarity index 100% rename from client/src/static/icons/solid/sax-hot.svg rename to src/static/icons/solid/sax-hot.svg diff --git a/client/src/static/icons/solid/saxophone.svg b/src/static/icons/solid/saxophone.svg similarity index 100% rename from client/src/static/icons/solid/saxophone.svg rename to src/static/icons/solid/saxophone.svg diff --git a/client/src/static/icons/solid/scalpel-path.svg b/src/static/icons/solid/scalpel-path.svg similarity index 100% rename from client/src/static/icons/solid/scalpel-path.svg rename to src/static/icons/solid/scalpel-path.svg diff --git a/client/src/static/icons/solid/scalpel.svg b/src/static/icons/solid/scalpel.svg similarity index 100% rename from client/src/static/icons/solid/scalpel.svg rename to src/static/icons/solid/scalpel.svg diff --git a/client/src/static/icons/solid/scanner-image.svg b/src/static/icons/solid/scanner-image.svg similarity index 100% rename from client/src/static/icons/solid/scanner-image.svg rename to src/static/icons/solid/scanner-image.svg diff --git a/client/src/static/icons/solid/scanner-keyboard.svg b/src/static/icons/solid/scanner-keyboard.svg similarity index 100% rename from client/src/static/icons/solid/scanner-keyboard.svg rename to src/static/icons/solid/scanner-keyboard.svg diff --git a/client/src/static/icons/solid/scanner-touchscreen.svg b/src/static/icons/solid/scanner-touchscreen.svg similarity index 100% rename from client/src/static/icons/solid/scanner-touchscreen.svg rename to src/static/icons/solid/scanner-touchscreen.svg diff --git a/client/src/static/icons/solid/scanner.svg b/src/static/icons/solid/scanner.svg similarity index 100% rename from client/src/static/icons/solid/scanner.svg rename to src/static/icons/solid/scanner.svg diff --git a/client/src/static/icons/solid/scarecrow.svg b/src/static/icons/solid/scarecrow.svg similarity index 100% rename from client/src/static/icons/solid/scarecrow.svg rename to src/static/icons/solid/scarecrow.svg diff --git a/client/src/static/icons/solid/scarf.svg b/src/static/icons/solid/scarf.svg similarity index 100% rename from client/src/static/icons/solid/scarf.svg rename to src/static/icons/solid/scarf.svg diff --git a/client/src/static/icons/solid/school.svg b/src/static/icons/solid/school.svg similarity index 100% rename from client/src/static/icons/solid/school.svg rename to src/static/icons/solid/school.svg diff --git a/client/src/static/icons/solid/screwdriver.svg b/src/static/icons/solid/screwdriver.svg similarity index 100% rename from client/src/static/icons/solid/screwdriver.svg rename to src/static/icons/solid/screwdriver.svg diff --git a/client/src/static/icons/solid/scroll-old.svg b/src/static/icons/solid/scroll-old.svg similarity index 100% rename from client/src/static/icons/solid/scroll-old.svg rename to src/static/icons/solid/scroll-old.svg diff --git a/client/src/static/icons/solid/scroll.svg b/src/static/icons/solid/scroll.svg similarity index 100% rename from client/src/static/icons/solid/scroll.svg rename to src/static/icons/solid/scroll.svg diff --git a/client/src/static/icons/solid/scrubber.svg b/src/static/icons/solid/scrubber.svg similarity index 100% rename from client/src/static/icons/solid/scrubber.svg rename to src/static/icons/solid/scrubber.svg diff --git a/client/src/static/icons/solid/scythe.svg b/src/static/icons/solid/scythe.svg similarity index 100% rename from client/src/static/icons/solid/scythe.svg rename to src/static/icons/solid/scythe.svg diff --git a/client/src/static/icons/solid/sd-card.svg b/src/static/icons/solid/sd-card.svg similarity index 100% rename from client/src/static/icons/solid/sd-card.svg rename to src/static/icons/solid/sd-card.svg diff --git a/client/src/static/icons/solid/search-dollar.svg b/src/static/icons/solid/search-dollar.svg similarity index 100% rename from client/src/static/icons/solid/search-dollar.svg rename to src/static/icons/solid/search-dollar.svg diff --git a/client/src/static/icons/solid/search-location.svg b/src/static/icons/solid/search-location.svg similarity index 100% rename from client/src/static/icons/solid/search-location.svg rename to src/static/icons/solid/search-location.svg diff --git a/client/src/static/icons/solid/search-minus.svg b/src/static/icons/solid/search-minus.svg similarity index 100% rename from client/src/static/icons/solid/search-minus.svg rename to src/static/icons/solid/search-minus.svg diff --git a/client/src/static/icons/solid/search-plus.svg b/src/static/icons/solid/search-plus.svg similarity index 100% rename from client/src/static/icons/solid/search-plus.svg rename to src/static/icons/solid/search-plus.svg diff --git a/client/src/static/icons/solid/search.svg b/src/static/icons/solid/search.svg similarity index 100% rename from client/src/static/icons/solid/search.svg rename to src/static/icons/solid/search.svg diff --git a/client/src/static/icons/solid/seedling.svg b/src/static/icons/solid/seedling.svg similarity index 100% rename from client/src/static/icons/solid/seedling.svg rename to src/static/icons/solid/seedling.svg diff --git a/client/src/static/icons/solid/send-back.svg b/src/static/icons/solid/send-back.svg similarity index 100% rename from client/src/static/icons/solid/send-back.svg rename to src/static/icons/solid/send-back.svg diff --git a/client/src/static/icons/solid/send-backward.svg b/src/static/icons/solid/send-backward.svg similarity index 100% rename from client/src/static/icons/solid/send-backward.svg rename to src/static/icons/solid/send-backward.svg diff --git a/client/src/static/icons/solid/sensor-alert.svg b/src/static/icons/solid/sensor-alert.svg similarity index 100% rename from client/src/static/icons/solid/sensor-alert.svg rename to src/static/icons/solid/sensor-alert.svg diff --git a/client/src/static/icons/solid/sensor-fire.svg b/src/static/icons/solid/sensor-fire.svg similarity index 100% rename from client/src/static/icons/solid/sensor-fire.svg rename to src/static/icons/solid/sensor-fire.svg diff --git a/client/src/static/icons/solid/sensor-on.svg b/src/static/icons/solid/sensor-on.svg similarity index 100% rename from client/src/static/icons/solid/sensor-on.svg rename to src/static/icons/solid/sensor-on.svg diff --git a/client/src/static/icons/solid/sensor-smoke.svg b/src/static/icons/solid/sensor-smoke.svg similarity index 100% rename from client/src/static/icons/solid/sensor-smoke.svg rename to src/static/icons/solid/sensor-smoke.svg diff --git a/client/src/static/icons/solid/sensor.svg b/src/static/icons/solid/sensor.svg similarity index 100% rename from client/src/static/icons/solid/sensor.svg rename to src/static/icons/solid/sensor.svg diff --git a/client/src/static/icons/solid/server.svg b/src/static/icons/solid/server.svg similarity index 100% rename from client/src/static/icons/solid/server.svg rename to src/static/icons/solid/server.svg diff --git a/client/src/static/icons/solid/shapes.svg b/src/static/icons/solid/shapes.svg similarity index 100% rename from client/src/static/icons/solid/shapes.svg rename to src/static/icons/solid/shapes.svg diff --git a/client/src/static/icons/solid/share-all.svg b/src/static/icons/solid/share-all.svg similarity index 100% rename from client/src/static/icons/solid/share-all.svg rename to src/static/icons/solid/share-all.svg diff --git a/client/src/static/icons/solid/share-alt-square.svg b/src/static/icons/solid/share-alt-square.svg similarity index 100% rename from client/src/static/icons/solid/share-alt-square.svg rename to src/static/icons/solid/share-alt-square.svg diff --git a/client/src/static/icons/solid/share-alt.svg b/src/static/icons/solid/share-alt.svg similarity index 100% rename from client/src/static/icons/solid/share-alt.svg rename to src/static/icons/solid/share-alt.svg diff --git a/client/src/static/icons/solid/share-square.svg b/src/static/icons/solid/share-square.svg similarity index 100% rename from client/src/static/icons/solid/share-square.svg rename to src/static/icons/solid/share-square.svg diff --git a/client/src/static/icons/solid/share.svg b/src/static/icons/solid/share.svg similarity index 100% rename from client/src/static/icons/solid/share.svg rename to src/static/icons/solid/share.svg diff --git a/client/src/static/icons/solid/sheep.svg b/src/static/icons/solid/sheep.svg similarity index 100% rename from client/src/static/icons/solid/sheep.svg rename to src/static/icons/solid/sheep.svg diff --git a/client/src/static/icons/solid/shekel-sign.svg b/src/static/icons/solid/shekel-sign.svg similarity index 100% rename from client/src/static/icons/solid/shekel-sign.svg rename to src/static/icons/solid/shekel-sign.svg diff --git a/client/src/static/icons/solid/shield-alt.svg b/src/static/icons/solid/shield-alt.svg similarity index 100% rename from client/src/static/icons/solid/shield-alt.svg rename to src/static/icons/solid/shield-alt.svg diff --git a/client/src/static/icons/solid/shield-check.svg b/src/static/icons/solid/shield-check.svg similarity index 100% rename from client/src/static/icons/solid/shield-check.svg rename to src/static/icons/solid/shield-check.svg diff --git a/client/src/static/icons/solid/shield-cross.svg b/src/static/icons/solid/shield-cross.svg similarity index 100% rename from client/src/static/icons/solid/shield-cross.svg rename to src/static/icons/solid/shield-cross.svg diff --git a/client/src/static/icons/solid/shield.svg b/src/static/icons/solid/shield.svg similarity index 100% rename from client/src/static/icons/solid/shield.svg rename to src/static/icons/solid/shield.svg diff --git a/client/src/static/icons/solid/ship.svg b/src/static/icons/solid/ship.svg similarity index 100% rename from client/src/static/icons/solid/ship.svg rename to src/static/icons/solid/ship.svg diff --git a/client/src/static/icons/solid/shipping-fast.svg b/src/static/icons/solid/shipping-fast.svg similarity index 100% rename from client/src/static/icons/solid/shipping-fast.svg rename to src/static/icons/solid/shipping-fast.svg diff --git a/client/src/static/icons/solid/shipping-timed.svg b/src/static/icons/solid/shipping-timed.svg similarity index 100% rename from client/src/static/icons/solid/shipping-timed.svg rename to src/static/icons/solid/shipping-timed.svg diff --git a/client/src/static/icons/solid/shish-kebab.svg b/src/static/icons/solid/shish-kebab.svg similarity index 100% rename from client/src/static/icons/solid/shish-kebab.svg rename to src/static/icons/solid/shish-kebab.svg diff --git a/client/src/static/icons/solid/shoe-prints.svg b/src/static/icons/solid/shoe-prints.svg similarity index 100% rename from client/src/static/icons/solid/shoe-prints.svg rename to src/static/icons/solid/shoe-prints.svg diff --git a/client/src/static/icons/solid/shopping-bag.svg b/src/static/icons/solid/shopping-bag.svg similarity index 100% rename from client/src/static/icons/solid/shopping-bag.svg rename to src/static/icons/solid/shopping-bag.svg diff --git a/client/src/static/icons/solid/shopping-basket.svg b/src/static/icons/solid/shopping-basket.svg similarity index 100% rename from client/src/static/icons/solid/shopping-basket.svg rename to src/static/icons/solid/shopping-basket.svg diff --git a/client/src/static/icons/solid/shopping-cart.svg b/src/static/icons/solid/shopping-cart.svg similarity index 100% rename from client/src/static/icons/solid/shopping-cart.svg rename to src/static/icons/solid/shopping-cart.svg diff --git a/client/src/static/icons/solid/shovel-snow.svg b/src/static/icons/solid/shovel-snow.svg similarity index 100% rename from client/src/static/icons/solid/shovel-snow.svg rename to src/static/icons/solid/shovel-snow.svg diff --git a/client/src/static/icons/solid/shovel.svg b/src/static/icons/solid/shovel.svg similarity index 100% rename from client/src/static/icons/solid/shovel.svg rename to src/static/icons/solid/shovel.svg diff --git a/client/src/static/icons/solid/shower.svg b/src/static/icons/solid/shower.svg similarity index 100% rename from client/src/static/icons/solid/shower.svg rename to src/static/icons/solid/shower.svg diff --git a/client/src/static/icons/solid/shredder.svg b/src/static/icons/solid/shredder.svg similarity index 100% rename from client/src/static/icons/solid/shredder.svg rename to src/static/icons/solid/shredder.svg diff --git a/client/src/static/icons/solid/shuttle-van.svg b/src/static/icons/solid/shuttle-van.svg similarity index 100% rename from client/src/static/icons/solid/shuttle-van.svg rename to src/static/icons/solid/shuttle-van.svg diff --git a/client/src/static/icons/solid/shuttlecock.svg b/src/static/icons/solid/shuttlecock.svg similarity index 100% rename from client/src/static/icons/solid/shuttlecock.svg rename to src/static/icons/solid/shuttlecock.svg diff --git a/client/src/static/icons/solid/sickle.svg b/src/static/icons/solid/sickle.svg similarity index 100% rename from client/src/static/icons/solid/sickle.svg rename to src/static/icons/solid/sickle.svg diff --git a/client/src/static/icons/solid/sigma.svg b/src/static/icons/solid/sigma.svg similarity index 100% rename from client/src/static/icons/solid/sigma.svg rename to src/static/icons/solid/sigma.svg diff --git a/client/src/static/icons/solid/sign-in-alt.svg b/src/static/icons/solid/sign-in-alt.svg similarity index 100% rename from client/src/static/icons/solid/sign-in-alt.svg rename to src/static/icons/solid/sign-in-alt.svg diff --git a/client/src/static/icons/solid/sign-in.svg b/src/static/icons/solid/sign-in.svg similarity index 100% rename from client/src/static/icons/solid/sign-in.svg rename to src/static/icons/solid/sign-in.svg diff --git a/client/src/static/icons/solid/sign-language.svg b/src/static/icons/solid/sign-language.svg similarity index 100% rename from client/src/static/icons/solid/sign-language.svg rename to src/static/icons/solid/sign-language.svg diff --git a/client/src/static/icons/solid/sign-out-alt.svg b/src/static/icons/solid/sign-out-alt.svg similarity index 100% rename from client/src/static/icons/solid/sign-out-alt.svg rename to src/static/icons/solid/sign-out-alt.svg diff --git a/client/src/static/icons/solid/sign-out.svg b/src/static/icons/solid/sign-out.svg similarity index 100% rename from client/src/static/icons/solid/sign-out.svg rename to src/static/icons/solid/sign-out.svg diff --git a/client/src/static/icons/solid/sign.svg b/src/static/icons/solid/sign.svg similarity index 100% rename from client/src/static/icons/solid/sign.svg rename to src/static/icons/solid/sign.svg diff --git a/client/src/static/icons/solid/signal-1.svg b/src/static/icons/solid/signal-1.svg similarity index 100% rename from client/src/static/icons/solid/signal-1.svg rename to src/static/icons/solid/signal-1.svg diff --git a/client/src/static/icons/solid/signal-2.svg b/src/static/icons/solid/signal-2.svg similarity index 100% rename from client/src/static/icons/solid/signal-2.svg rename to src/static/icons/solid/signal-2.svg diff --git a/client/src/static/icons/solid/signal-3.svg b/src/static/icons/solid/signal-3.svg similarity index 100% rename from client/src/static/icons/solid/signal-3.svg rename to src/static/icons/solid/signal-3.svg diff --git a/client/src/static/icons/solid/signal-4.svg b/src/static/icons/solid/signal-4.svg similarity index 100% rename from client/src/static/icons/solid/signal-4.svg rename to src/static/icons/solid/signal-4.svg diff --git a/client/src/static/icons/solid/signal-alt-1.svg b/src/static/icons/solid/signal-alt-1.svg similarity index 100% rename from client/src/static/icons/solid/signal-alt-1.svg rename to src/static/icons/solid/signal-alt-1.svg diff --git a/client/src/static/icons/solid/signal-alt-2.svg b/src/static/icons/solid/signal-alt-2.svg similarity index 100% rename from client/src/static/icons/solid/signal-alt-2.svg rename to src/static/icons/solid/signal-alt-2.svg diff --git a/client/src/static/icons/solid/signal-alt-3.svg b/src/static/icons/solid/signal-alt-3.svg similarity index 100% rename from client/src/static/icons/solid/signal-alt-3.svg rename to src/static/icons/solid/signal-alt-3.svg diff --git a/client/src/static/icons/solid/signal-alt-slash.svg b/src/static/icons/solid/signal-alt-slash.svg similarity index 100% rename from client/src/static/icons/solid/signal-alt-slash.svg rename to src/static/icons/solid/signal-alt-slash.svg diff --git a/client/src/static/icons/solid/signal-alt.svg b/src/static/icons/solid/signal-alt.svg similarity index 100% rename from client/src/static/icons/solid/signal-alt.svg rename to src/static/icons/solid/signal-alt.svg diff --git a/client/src/static/icons/solid/signal-slash.svg b/src/static/icons/solid/signal-slash.svg similarity index 100% rename from client/src/static/icons/solid/signal-slash.svg rename to src/static/icons/solid/signal-slash.svg diff --git a/client/src/static/icons/solid/signal-stream.svg b/src/static/icons/solid/signal-stream.svg similarity index 100% rename from client/src/static/icons/solid/signal-stream.svg rename to src/static/icons/solid/signal-stream.svg diff --git a/client/src/static/icons/solid/signal.svg b/src/static/icons/solid/signal.svg similarity index 100% rename from client/src/static/icons/solid/signal.svg rename to src/static/icons/solid/signal.svg diff --git a/client/src/static/icons/solid/signature.svg b/src/static/icons/solid/signature.svg similarity index 100% rename from client/src/static/icons/solid/signature.svg rename to src/static/icons/solid/signature.svg diff --git a/client/src/static/icons/solid/sim-card.svg b/src/static/icons/solid/sim-card.svg similarity index 100% rename from client/src/static/icons/solid/sim-card.svg rename to src/static/icons/solid/sim-card.svg diff --git a/client/src/static/icons/solid/siren-on.svg b/src/static/icons/solid/siren-on.svg similarity index 100% rename from client/src/static/icons/solid/siren-on.svg rename to src/static/icons/solid/siren-on.svg diff --git a/client/src/static/icons/solid/siren.svg b/src/static/icons/solid/siren.svg similarity index 100% rename from client/src/static/icons/solid/siren.svg rename to src/static/icons/solid/siren.svg diff --git a/client/src/static/icons/solid/sitemap.svg b/src/static/icons/solid/sitemap.svg similarity index 100% rename from client/src/static/icons/solid/sitemap.svg rename to src/static/icons/solid/sitemap.svg diff --git a/client/src/static/icons/solid/skating.svg b/src/static/icons/solid/skating.svg similarity index 100% rename from client/src/static/icons/solid/skating.svg rename to src/static/icons/solid/skating.svg diff --git a/client/src/static/icons/solid/skeleton.svg b/src/static/icons/solid/skeleton.svg similarity index 100% rename from client/src/static/icons/solid/skeleton.svg rename to src/static/icons/solid/skeleton.svg diff --git a/client/src/static/icons/solid/ski-jump.svg b/src/static/icons/solid/ski-jump.svg similarity index 100% rename from client/src/static/icons/solid/ski-jump.svg rename to src/static/icons/solid/ski-jump.svg diff --git a/client/src/static/icons/solid/ski-lift.svg b/src/static/icons/solid/ski-lift.svg similarity index 100% rename from client/src/static/icons/solid/ski-lift.svg rename to src/static/icons/solid/ski-lift.svg diff --git a/client/src/static/icons/solid/skiing-nordic.svg b/src/static/icons/solid/skiing-nordic.svg similarity index 100% rename from client/src/static/icons/solid/skiing-nordic.svg rename to src/static/icons/solid/skiing-nordic.svg diff --git a/client/src/static/icons/solid/skiing.svg b/src/static/icons/solid/skiing.svg similarity index 100% rename from client/src/static/icons/solid/skiing.svg rename to src/static/icons/solid/skiing.svg diff --git a/client/src/static/icons/solid/skull-cow.svg b/src/static/icons/solid/skull-cow.svg similarity index 100% rename from client/src/static/icons/solid/skull-cow.svg rename to src/static/icons/solid/skull-cow.svg diff --git a/client/src/static/icons/solid/skull-crossbones.svg b/src/static/icons/solid/skull-crossbones.svg similarity index 100% rename from client/src/static/icons/solid/skull-crossbones.svg rename to src/static/icons/solid/skull-crossbones.svg diff --git a/client/src/static/icons/solid/skull.svg b/src/static/icons/solid/skull.svg similarity index 100% rename from client/src/static/icons/solid/skull.svg rename to src/static/icons/solid/skull.svg diff --git a/client/src/static/icons/solid/slash.svg b/src/static/icons/solid/slash.svg similarity index 100% rename from client/src/static/icons/solid/slash.svg rename to src/static/icons/solid/slash.svg diff --git a/client/src/static/icons/solid/sledding.svg b/src/static/icons/solid/sledding.svg similarity index 100% rename from client/src/static/icons/solid/sledding.svg rename to src/static/icons/solid/sledding.svg diff --git a/client/src/static/icons/solid/sleigh.svg b/src/static/icons/solid/sleigh.svg similarity index 100% rename from client/src/static/icons/solid/sleigh.svg rename to src/static/icons/solid/sleigh.svg diff --git a/client/src/static/icons/solid/sliders-h-square.svg b/src/static/icons/solid/sliders-h-square.svg similarity index 100% rename from client/src/static/icons/solid/sliders-h-square.svg rename to src/static/icons/solid/sliders-h-square.svg diff --git a/client/src/static/icons/solid/sliders-h.svg b/src/static/icons/solid/sliders-h.svg similarity index 100% rename from client/src/static/icons/solid/sliders-h.svg rename to src/static/icons/solid/sliders-h.svg diff --git a/client/src/static/icons/solid/sliders-v-square.svg b/src/static/icons/solid/sliders-v-square.svg similarity index 100% rename from client/src/static/icons/solid/sliders-v-square.svg rename to src/static/icons/solid/sliders-v-square.svg diff --git a/client/src/static/icons/solid/sliders-v.svg b/src/static/icons/solid/sliders-v.svg similarity index 100% rename from client/src/static/icons/solid/sliders-v.svg rename to src/static/icons/solid/sliders-v.svg diff --git a/client/src/static/icons/solid/smile-beam.svg b/src/static/icons/solid/smile-beam.svg similarity index 100% rename from client/src/static/icons/solid/smile-beam.svg rename to src/static/icons/solid/smile-beam.svg diff --git a/client/src/static/icons/solid/smile-plus.svg b/src/static/icons/solid/smile-plus.svg similarity index 100% rename from client/src/static/icons/solid/smile-plus.svg rename to src/static/icons/solid/smile-plus.svg diff --git a/client/src/static/icons/solid/smile-wink.svg b/src/static/icons/solid/smile-wink.svg similarity index 100% rename from client/src/static/icons/solid/smile-wink.svg rename to src/static/icons/solid/smile-wink.svg diff --git a/client/src/static/icons/solid/smile.svg b/src/static/icons/solid/smile.svg similarity index 100% rename from client/src/static/icons/solid/smile.svg rename to src/static/icons/solid/smile.svg diff --git a/client/src/static/icons/solid/smog.svg b/src/static/icons/solid/smog.svg similarity index 100% rename from client/src/static/icons/solid/smog.svg rename to src/static/icons/solid/smog.svg diff --git a/client/src/static/icons/solid/smoke.svg b/src/static/icons/solid/smoke.svg similarity index 100% rename from client/src/static/icons/solid/smoke.svg rename to src/static/icons/solid/smoke.svg diff --git a/client/src/static/icons/solid/smoking-ban.svg b/src/static/icons/solid/smoking-ban.svg similarity index 100% rename from client/src/static/icons/solid/smoking-ban.svg rename to src/static/icons/solid/smoking-ban.svg diff --git a/client/src/static/icons/solid/smoking.svg b/src/static/icons/solid/smoking.svg similarity index 100% rename from client/src/static/icons/solid/smoking.svg rename to src/static/icons/solid/smoking.svg diff --git a/client/src/static/icons/solid/sms.svg b/src/static/icons/solid/sms.svg similarity index 100% rename from client/src/static/icons/solid/sms.svg rename to src/static/icons/solid/sms.svg diff --git a/client/src/static/icons/solid/snake.svg b/src/static/icons/solid/snake.svg similarity index 100% rename from client/src/static/icons/solid/snake.svg rename to src/static/icons/solid/snake.svg diff --git a/client/src/static/icons/solid/snooze.svg b/src/static/icons/solid/snooze.svg similarity index 100% rename from client/src/static/icons/solid/snooze.svg rename to src/static/icons/solid/snooze.svg diff --git a/client/src/static/icons/solid/snow-blowing.svg b/src/static/icons/solid/snow-blowing.svg similarity index 100% rename from client/src/static/icons/solid/snow-blowing.svg rename to src/static/icons/solid/snow-blowing.svg diff --git a/client/src/static/icons/solid/snowboarding.svg b/src/static/icons/solid/snowboarding.svg similarity index 100% rename from client/src/static/icons/solid/snowboarding.svg rename to src/static/icons/solid/snowboarding.svg diff --git a/client/src/static/icons/solid/snowflake.svg b/src/static/icons/solid/snowflake.svg similarity index 100% rename from client/src/static/icons/solid/snowflake.svg rename to src/static/icons/solid/snowflake.svg diff --git a/client/src/static/icons/solid/snowflakes.svg b/src/static/icons/solid/snowflakes.svg similarity index 100% rename from client/src/static/icons/solid/snowflakes.svg rename to src/static/icons/solid/snowflakes.svg diff --git a/client/src/static/icons/solid/snowman.svg b/src/static/icons/solid/snowman.svg similarity index 100% rename from client/src/static/icons/solid/snowman.svg rename to src/static/icons/solid/snowman.svg diff --git a/client/src/static/icons/solid/snowmobile.svg b/src/static/icons/solid/snowmobile.svg similarity index 100% rename from client/src/static/icons/solid/snowmobile.svg rename to src/static/icons/solid/snowmobile.svg diff --git a/client/src/static/icons/solid/snowplow.svg b/src/static/icons/solid/snowplow.svg similarity index 100% rename from client/src/static/icons/solid/snowplow.svg rename to src/static/icons/solid/snowplow.svg diff --git a/client/src/static/icons/solid/socks.svg b/src/static/icons/solid/socks.svg similarity index 100% rename from client/src/static/icons/solid/socks.svg rename to src/static/icons/solid/socks.svg diff --git a/client/src/static/icons/solid/solar-panel.svg b/src/static/icons/solid/solar-panel.svg similarity index 100% rename from client/src/static/icons/solid/solar-panel.svg rename to src/static/icons/solid/solar-panel.svg diff --git a/client/src/static/icons/solid/solar-system.svg b/src/static/icons/solid/solar-system.svg similarity index 100% rename from client/src/static/icons/solid/solar-system.svg rename to src/static/icons/solid/solar-system.svg diff --git a/client/src/static/icons/solid/sort-alpha-down-alt.svg b/src/static/icons/solid/sort-alpha-down-alt.svg similarity index 100% rename from client/src/static/icons/solid/sort-alpha-down-alt.svg rename to src/static/icons/solid/sort-alpha-down-alt.svg diff --git a/client/src/static/icons/solid/sort-alpha-down.svg b/src/static/icons/solid/sort-alpha-down.svg similarity index 100% rename from client/src/static/icons/solid/sort-alpha-down.svg rename to src/static/icons/solid/sort-alpha-down.svg diff --git a/client/src/static/icons/solid/sort-alpha-up-alt.svg b/src/static/icons/solid/sort-alpha-up-alt.svg similarity index 100% rename from client/src/static/icons/solid/sort-alpha-up-alt.svg rename to src/static/icons/solid/sort-alpha-up-alt.svg diff --git a/client/src/static/icons/solid/sort-alpha-up.svg b/src/static/icons/solid/sort-alpha-up.svg similarity index 100% rename from client/src/static/icons/solid/sort-alpha-up.svg rename to src/static/icons/solid/sort-alpha-up.svg diff --git a/client/src/static/icons/solid/sort-alt.svg b/src/static/icons/solid/sort-alt.svg similarity index 100% rename from client/src/static/icons/solid/sort-alt.svg rename to src/static/icons/solid/sort-alt.svg diff --git a/client/src/static/icons/solid/sort-amount-down-alt.svg b/src/static/icons/solid/sort-amount-down-alt.svg similarity index 100% rename from client/src/static/icons/solid/sort-amount-down-alt.svg rename to src/static/icons/solid/sort-amount-down-alt.svg diff --git a/client/src/static/icons/solid/sort-amount-down.svg b/src/static/icons/solid/sort-amount-down.svg similarity index 100% rename from client/src/static/icons/solid/sort-amount-down.svg rename to src/static/icons/solid/sort-amount-down.svg diff --git a/client/src/static/icons/solid/sort-amount-up-alt.svg b/src/static/icons/solid/sort-amount-up-alt.svg similarity index 100% rename from client/src/static/icons/solid/sort-amount-up-alt.svg rename to src/static/icons/solid/sort-amount-up-alt.svg diff --git a/client/src/static/icons/solid/sort-amount-up.svg b/src/static/icons/solid/sort-amount-up.svg similarity index 100% rename from client/src/static/icons/solid/sort-amount-up.svg rename to src/static/icons/solid/sort-amount-up.svg diff --git a/client/src/static/icons/solid/sort-circle-down.svg b/src/static/icons/solid/sort-circle-down.svg similarity index 100% rename from client/src/static/icons/solid/sort-circle-down.svg rename to src/static/icons/solid/sort-circle-down.svg diff --git a/client/src/static/icons/solid/sort-circle-up.svg b/src/static/icons/solid/sort-circle-up.svg similarity index 100% rename from client/src/static/icons/solid/sort-circle-up.svg rename to src/static/icons/solid/sort-circle-up.svg diff --git a/client/src/static/icons/solid/sort-circle.svg b/src/static/icons/solid/sort-circle.svg similarity index 100% rename from client/src/static/icons/solid/sort-circle.svg rename to src/static/icons/solid/sort-circle.svg diff --git a/client/src/static/icons/solid/sort-down.svg b/src/static/icons/solid/sort-down.svg similarity index 100% rename from client/src/static/icons/solid/sort-down.svg rename to src/static/icons/solid/sort-down.svg diff --git a/client/src/static/icons/solid/sort-numeric-down-alt.svg b/src/static/icons/solid/sort-numeric-down-alt.svg similarity index 100% rename from client/src/static/icons/solid/sort-numeric-down-alt.svg rename to src/static/icons/solid/sort-numeric-down-alt.svg diff --git a/client/src/static/icons/solid/sort-numeric-down.svg b/src/static/icons/solid/sort-numeric-down.svg similarity index 100% rename from client/src/static/icons/solid/sort-numeric-down.svg rename to src/static/icons/solid/sort-numeric-down.svg diff --git a/client/src/static/icons/solid/sort-numeric-up-alt.svg b/src/static/icons/solid/sort-numeric-up-alt.svg similarity index 100% rename from client/src/static/icons/solid/sort-numeric-up-alt.svg rename to src/static/icons/solid/sort-numeric-up-alt.svg diff --git a/client/src/static/icons/solid/sort-numeric-up.svg b/src/static/icons/solid/sort-numeric-up.svg similarity index 100% rename from client/src/static/icons/solid/sort-numeric-up.svg rename to src/static/icons/solid/sort-numeric-up.svg diff --git a/client/src/static/icons/solid/sort-shapes-down-alt.svg b/src/static/icons/solid/sort-shapes-down-alt.svg similarity index 100% rename from client/src/static/icons/solid/sort-shapes-down-alt.svg rename to src/static/icons/solid/sort-shapes-down-alt.svg diff --git a/client/src/static/icons/solid/sort-shapes-down.svg b/src/static/icons/solid/sort-shapes-down.svg similarity index 100% rename from client/src/static/icons/solid/sort-shapes-down.svg rename to src/static/icons/solid/sort-shapes-down.svg diff --git a/client/src/static/icons/solid/sort-shapes-up-alt.svg b/src/static/icons/solid/sort-shapes-up-alt.svg similarity index 100% rename from client/src/static/icons/solid/sort-shapes-up-alt.svg rename to src/static/icons/solid/sort-shapes-up-alt.svg diff --git a/client/src/static/icons/solid/sort-shapes-up.svg b/src/static/icons/solid/sort-shapes-up.svg similarity index 100% rename from client/src/static/icons/solid/sort-shapes-up.svg rename to src/static/icons/solid/sort-shapes-up.svg diff --git a/client/src/static/icons/solid/sort-size-down-alt.svg b/src/static/icons/solid/sort-size-down-alt.svg similarity index 100% rename from client/src/static/icons/solid/sort-size-down-alt.svg rename to src/static/icons/solid/sort-size-down-alt.svg diff --git a/client/src/static/icons/solid/sort-size-down.svg b/src/static/icons/solid/sort-size-down.svg similarity index 100% rename from client/src/static/icons/solid/sort-size-down.svg rename to src/static/icons/solid/sort-size-down.svg diff --git a/client/src/static/icons/solid/sort-size-up-alt.svg b/src/static/icons/solid/sort-size-up-alt.svg similarity index 100% rename from client/src/static/icons/solid/sort-size-up-alt.svg rename to src/static/icons/solid/sort-size-up-alt.svg diff --git a/client/src/static/icons/solid/sort-size-up.svg b/src/static/icons/solid/sort-size-up.svg similarity index 100% rename from client/src/static/icons/solid/sort-size-up.svg rename to src/static/icons/solid/sort-size-up.svg diff --git a/client/src/static/icons/solid/sort-up.svg b/src/static/icons/solid/sort-up.svg similarity index 100% rename from client/src/static/icons/solid/sort-up.svg rename to src/static/icons/solid/sort-up.svg diff --git a/client/src/static/icons/solid/sort.svg b/src/static/icons/solid/sort.svg similarity index 100% rename from client/src/static/icons/solid/sort.svg rename to src/static/icons/solid/sort.svg diff --git a/client/src/static/icons/solid/soup.svg b/src/static/icons/solid/soup.svg similarity index 100% rename from client/src/static/icons/solid/soup.svg rename to src/static/icons/solid/soup.svg diff --git a/client/src/static/icons/solid/spa.svg b/src/static/icons/solid/spa.svg similarity index 100% rename from client/src/static/icons/solid/spa.svg rename to src/static/icons/solid/spa.svg diff --git a/client/src/static/icons/solid/space-shuttle.svg b/src/static/icons/solid/space-shuttle.svg similarity index 100% rename from client/src/static/icons/solid/space-shuttle.svg rename to src/static/icons/solid/space-shuttle.svg diff --git a/client/src/static/icons/solid/space-station-moon-alt.svg b/src/static/icons/solid/space-station-moon-alt.svg similarity index 100% rename from client/src/static/icons/solid/space-station-moon-alt.svg rename to src/static/icons/solid/space-station-moon-alt.svg diff --git a/client/src/static/icons/solid/space-station-moon.svg b/src/static/icons/solid/space-station-moon.svg similarity index 100% rename from client/src/static/icons/solid/space-station-moon.svg rename to src/static/icons/solid/space-station-moon.svg diff --git a/client/src/static/icons/solid/spade.svg b/src/static/icons/solid/spade.svg similarity index 100% rename from client/src/static/icons/solid/spade.svg rename to src/static/icons/solid/spade.svg diff --git a/client/src/static/icons/solid/sparkles.svg b/src/static/icons/solid/sparkles.svg similarity index 100% rename from client/src/static/icons/solid/sparkles.svg rename to src/static/icons/solid/sparkles.svg diff --git a/client/src/static/icons/solid/speaker.svg b/src/static/icons/solid/speaker.svg similarity index 100% rename from client/src/static/icons/solid/speaker.svg rename to src/static/icons/solid/speaker.svg diff --git a/client/src/static/icons/solid/speakers.svg b/src/static/icons/solid/speakers.svg similarity index 100% rename from client/src/static/icons/solid/speakers.svg rename to src/static/icons/solid/speakers.svg diff --git a/client/src/static/icons/solid/spell-check.svg b/src/static/icons/solid/spell-check.svg similarity index 100% rename from client/src/static/icons/solid/spell-check.svg rename to src/static/icons/solid/spell-check.svg diff --git a/client/src/static/icons/solid/spider-black-widow.svg b/src/static/icons/solid/spider-black-widow.svg similarity index 100% rename from client/src/static/icons/solid/spider-black-widow.svg rename to src/static/icons/solid/spider-black-widow.svg diff --git a/client/src/static/icons/solid/spider-web.svg b/src/static/icons/solid/spider-web.svg similarity index 100% rename from client/src/static/icons/solid/spider-web.svg rename to src/static/icons/solid/spider-web.svg diff --git a/client/src/static/icons/solid/spider.svg b/src/static/icons/solid/spider.svg similarity index 100% rename from client/src/static/icons/solid/spider.svg rename to src/static/icons/solid/spider.svg diff --git a/client/src/static/icons/solid/spinner-third.svg b/src/static/icons/solid/spinner-third.svg similarity index 100% rename from client/src/static/icons/solid/spinner-third.svg rename to src/static/icons/solid/spinner-third.svg diff --git a/client/src/static/icons/solid/spinner.svg b/src/static/icons/solid/spinner.svg similarity index 100% rename from client/src/static/icons/solid/spinner.svg rename to src/static/icons/solid/spinner.svg diff --git a/client/src/static/icons/solid/splotch.svg b/src/static/icons/solid/splotch.svg similarity index 100% rename from client/src/static/icons/solid/splotch.svg rename to src/static/icons/solid/splotch.svg diff --git a/client/src/static/icons/solid/spray-can.svg b/src/static/icons/solid/spray-can.svg similarity index 100% rename from client/src/static/icons/solid/spray-can.svg rename to src/static/icons/solid/spray-can.svg diff --git a/client/src/static/icons/solid/sprinkler.svg b/src/static/icons/solid/sprinkler.svg similarity index 100% rename from client/src/static/icons/solid/sprinkler.svg rename to src/static/icons/solid/sprinkler.svg diff --git a/client/src/static/icons/solid/square-full.svg b/src/static/icons/solid/square-full.svg similarity index 100% rename from client/src/static/icons/solid/square-full.svg rename to src/static/icons/solid/square-full.svg diff --git a/client/src/static/icons/solid/square-root-alt.svg b/src/static/icons/solid/square-root-alt.svg similarity index 100% rename from client/src/static/icons/solid/square-root-alt.svg rename to src/static/icons/solid/square-root-alt.svg diff --git a/client/src/static/icons/solid/square-root.svg b/src/static/icons/solid/square-root.svg similarity index 100% rename from client/src/static/icons/solid/square-root.svg rename to src/static/icons/solid/square-root.svg diff --git a/client/src/static/icons/solid/square.svg b/src/static/icons/solid/square.svg similarity index 100% rename from client/src/static/icons/solid/square.svg rename to src/static/icons/solid/square.svg diff --git a/client/src/static/icons/solid/squirrel.svg b/src/static/icons/solid/squirrel.svg similarity index 100% rename from client/src/static/icons/solid/squirrel.svg rename to src/static/icons/solid/squirrel.svg diff --git a/client/src/static/icons/solid/staff.svg b/src/static/icons/solid/staff.svg similarity index 100% rename from client/src/static/icons/solid/staff.svg rename to src/static/icons/solid/staff.svg diff --git a/client/src/static/icons/solid/stamp.svg b/src/static/icons/solid/stamp.svg similarity index 100% rename from client/src/static/icons/solid/stamp.svg rename to src/static/icons/solid/stamp.svg diff --git a/client/src/static/icons/solid/star-and-crescent.svg b/src/static/icons/solid/star-and-crescent.svg similarity index 100% rename from client/src/static/icons/solid/star-and-crescent.svg rename to src/static/icons/solid/star-and-crescent.svg diff --git a/client/src/static/icons/solid/star-christmas.svg b/src/static/icons/solid/star-christmas.svg similarity index 100% rename from client/src/static/icons/solid/star-christmas.svg rename to src/static/icons/solid/star-christmas.svg diff --git a/client/src/static/icons/solid/star-exclamation.svg b/src/static/icons/solid/star-exclamation.svg similarity index 100% rename from client/src/static/icons/solid/star-exclamation.svg rename to src/static/icons/solid/star-exclamation.svg diff --git a/client/src/static/icons/solid/star-half-alt.svg b/src/static/icons/solid/star-half-alt.svg similarity index 100% rename from client/src/static/icons/solid/star-half-alt.svg rename to src/static/icons/solid/star-half-alt.svg diff --git a/client/src/static/icons/solid/star-half.svg b/src/static/icons/solid/star-half.svg similarity index 100% rename from client/src/static/icons/solid/star-half.svg rename to src/static/icons/solid/star-half.svg diff --git a/client/src/static/icons/solid/star-of-david.svg b/src/static/icons/solid/star-of-david.svg similarity index 100% rename from client/src/static/icons/solid/star-of-david.svg rename to src/static/icons/solid/star-of-david.svg diff --git a/client/src/static/icons/solid/star-of-life.svg b/src/static/icons/solid/star-of-life.svg similarity index 100% rename from client/src/static/icons/solid/star-of-life.svg rename to src/static/icons/solid/star-of-life.svg diff --git a/client/src/static/icons/solid/star-shooting.svg b/src/static/icons/solid/star-shooting.svg similarity index 100% rename from client/src/static/icons/solid/star-shooting.svg rename to src/static/icons/solid/star-shooting.svg diff --git a/client/src/static/icons/solid/star.svg b/src/static/icons/solid/star.svg similarity index 100% rename from client/src/static/icons/solid/star.svg rename to src/static/icons/solid/star.svg diff --git a/client/src/static/icons/solid/starfighter-alt.svg b/src/static/icons/solid/starfighter-alt.svg similarity index 100% rename from client/src/static/icons/solid/starfighter-alt.svg rename to src/static/icons/solid/starfighter-alt.svg diff --git a/client/src/static/icons/solid/starfighter.svg b/src/static/icons/solid/starfighter.svg similarity index 100% rename from client/src/static/icons/solid/starfighter.svg rename to src/static/icons/solid/starfighter.svg diff --git a/client/src/static/icons/solid/stars.svg b/src/static/icons/solid/stars.svg similarity index 100% rename from client/src/static/icons/solid/stars.svg rename to src/static/icons/solid/stars.svg diff --git a/client/src/static/icons/solid/starship-freighter.svg b/src/static/icons/solid/starship-freighter.svg similarity index 100% rename from client/src/static/icons/solid/starship-freighter.svg rename to src/static/icons/solid/starship-freighter.svg diff --git a/client/src/static/icons/solid/starship.svg b/src/static/icons/solid/starship.svg similarity index 100% rename from client/src/static/icons/solid/starship.svg rename to src/static/icons/solid/starship.svg diff --git a/client/src/static/icons/solid/steak.svg b/src/static/icons/solid/steak.svg similarity index 100% rename from client/src/static/icons/solid/steak.svg rename to src/static/icons/solid/steak.svg diff --git a/client/src/static/icons/solid/steering-wheel.svg b/src/static/icons/solid/steering-wheel.svg similarity index 100% rename from client/src/static/icons/solid/steering-wheel.svg rename to src/static/icons/solid/steering-wheel.svg diff --git a/client/src/static/icons/solid/step-backward.svg b/src/static/icons/solid/step-backward.svg similarity index 100% rename from client/src/static/icons/solid/step-backward.svg rename to src/static/icons/solid/step-backward.svg diff --git a/client/src/static/icons/solid/step-forward.svg b/src/static/icons/solid/step-forward.svg similarity index 100% rename from client/src/static/icons/solid/step-forward.svg rename to src/static/icons/solid/step-forward.svg diff --git a/client/src/static/icons/solid/stethoscope.svg b/src/static/icons/solid/stethoscope.svg similarity index 100% rename from client/src/static/icons/solid/stethoscope.svg rename to src/static/icons/solid/stethoscope.svg diff --git a/client/src/static/icons/solid/sticky-note.svg b/src/static/icons/solid/sticky-note.svg similarity index 100% rename from client/src/static/icons/solid/sticky-note.svg rename to src/static/icons/solid/sticky-note.svg diff --git a/client/src/static/icons/solid/stocking.svg b/src/static/icons/solid/stocking.svg similarity index 100% rename from client/src/static/icons/solid/stocking.svg rename to src/static/icons/solid/stocking.svg diff --git a/client/src/static/icons/solid/stomach.svg b/src/static/icons/solid/stomach.svg similarity index 100% rename from client/src/static/icons/solid/stomach.svg rename to src/static/icons/solid/stomach.svg diff --git a/client/src/static/icons/solid/stop-circle.svg b/src/static/icons/solid/stop-circle.svg similarity index 100% rename from client/src/static/icons/solid/stop-circle.svg rename to src/static/icons/solid/stop-circle.svg diff --git a/client/src/static/icons/solid/stop.svg b/src/static/icons/solid/stop.svg similarity index 100% rename from client/src/static/icons/solid/stop.svg rename to src/static/icons/solid/stop.svg diff --git a/client/src/static/icons/solid/stopwatch.svg b/src/static/icons/solid/stopwatch.svg similarity index 100% rename from client/src/static/icons/solid/stopwatch.svg rename to src/static/icons/solid/stopwatch.svg diff --git a/client/src/static/icons/solid/store-alt.svg b/src/static/icons/solid/store-alt.svg similarity index 100% rename from client/src/static/icons/solid/store-alt.svg rename to src/static/icons/solid/store-alt.svg diff --git a/client/src/static/icons/solid/store.svg b/src/static/icons/solid/store.svg similarity index 100% rename from client/src/static/icons/solid/store.svg rename to src/static/icons/solid/store.svg diff --git a/client/src/static/icons/solid/stream.svg b/src/static/icons/solid/stream.svg similarity index 100% rename from client/src/static/icons/solid/stream.svg rename to src/static/icons/solid/stream.svg diff --git a/client/src/static/icons/solid/street-view.svg b/src/static/icons/solid/street-view.svg similarity index 100% rename from client/src/static/icons/solid/street-view.svg rename to src/static/icons/solid/street-view.svg diff --git a/client/src/static/icons/solid/stretcher.svg b/src/static/icons/solid/stretcher.svg similarity index 100% rename from client/src/static/icons/solid/stretcher.svg rename to src/static/icons/solid/stretcher.svg diff --git a/client/src/static/icons/solid/strikethrough.svg b/src/static/icons/solid/strikethrough.svg similarity index 100% rename from client/src/static/icons/solid/strikethrough.svg rename to src/static/icons/solid/strikethrough.svg diff --git a/client/src/static/icons/solid/stroopwafel.svg b/src/static/icons/solid/stroopwafel.svg similarity index 100% rename from client/src/static/icons/solid/stroopwafel.svg rename to src/static/icons/solid/stroopwafel.svg diff --git a/client/src/static/icons/solid/subscript.svg b/src/static/icons/solid/subscript.svg similarity index 100% rename from client/src/static/icons/solid/subscript.svg rename to src/static/icons/solid/subscript.svg diff --git a/client/src/static/icons/solid/subway.svg b/src/static/icons/solid/subway.svg similarity index 100% rename from client/src/static/icons/solid/subway.svg rename to src/static/icons/solid/subway.svg diff --git a/client/src/static/icons/solid/suitcase-rolling.svg b/src/static/icons/solid/suitcase-rolling.svg similarity index 100% rename from client/src/static/icons/solid/suitcase-rolling.svg rename to src/static/icons/solid/suitcase-rolling.svg diff --git a/client/src/static/icons/solid/suitcase.svg b/src/static/icons/solid/suitcase.svg similarity index 100% rename from client/src/static/icons/solid/suitcase.svg rename to src/static/icons/solid/suitcase.svg diff --git a/client/src/static/icons/solid/sun-cloud.svg b/src/static/icons/solid/sun-cloud.svg similarity index 100% rename from client/src/static/icons/solid/sun-cloud.svg rename to src/static/icons/solid/sun-cloud.svg diff --git a/client/src/static/icons/solid/sun-dust.svg b/src/static/icons/solid/sun-dust.svg similarity index 100% rename from client/src/static/icons/solid/sun-dust.svg rename to src/static/icons/solid/sun-dust.svg diff --git a/client/src/static/icons/solid/sun-haze.svg b/src/static/icons/solid/sun-haze.svg similarity index 100% rename from client/src/static/icons/solid/sun-haze.svg rename to src/static/icons/solid/sun-haze.svg diff --git a/client/src/static/icons/solid/sun.svg b/src/static/icons/solid/sun.svg similarity index 100% rename from client/src/static/icons/solid/sun.svg rename to src/static/icons/solid/sun.svg diff --git a/client/src/static/icons/solid/sunglasses.svg b/src/static/icons/solid/sunglasses.svg similarity index 100% rename from client/src/static/icons/solid/sunglasses.svg rename to src/static/icons/solid/sunglasses.svg diff --git a/client/src/static/icons/solid/sunrise.svg b/src/static/icons/solid/sunrise.svg similarity index 100% rename from client/src/static/icons/solid/sunrise.svg rename to src/static/icons/solid/sunrise.svg diff --git a/client/src/static/icons/solid/sunset.svg b/src/static/icons/solid/sunset.svg similarity index 100% rename from client/src/static/icons/solid/sunset.svg rename to src/static/icons/solid/sunset.svg diff --git a/client/src/static/icons/solid/superscript.svg b/src/static/icons/solid/superscript.svg similarity index 100% rename from client/src/static/icons/solid/superscript.svg rename to src/static/icons/solid/superscript.svg diff --git a/client/src/static/icons/solid/surprise.svg b/src/static/icons/solid/surprise.svg similarity index 100% rename from client/src/static/icons/solid/surprise.svg rename to src/static/icons/solid/surprise.svg diff --git a/client/src/static/icons/solid/swatchbook.svg b/src/static/icons/solid/swatchbook.svg similarity index 100% rename from client/src/static/icons/solid/swatchbook.svg rename to src/static/icons/solid/swatchbook.svg diff --git a/client/src/static/icons/solid/swimmer.svg b/src/static/icons/solid/swimmer.svg similarity index 100% rename from client/src/static/icons/solid/swimmer.svg rename to src/static/icons/solid/swimmer.svg diff --git a/client/src/static/icons/solid/swimming-pool.svg b/src/static/icons/solid/swimming-pool.svg similarity index 100% rename from client/src/static/icons/solid/swimming-pool.svg rename to src/static/icons/solid/swimming-pool.svg diff --git a/client/src/static/icons/solid/sword-laser-alt.svg b/src/static/icons/solid/sword-laser-alt.svg similarity index 100% rename from client/src/static/icons/solid/sword-laser-alt.svg rename to src/static/icons/solid/sword-laser-alt.svg diff --git a/client/src/static/icons/solid/sword-laser.svg b/src/static/icons/solid/sword-laser.svg similarity index 100% rename from client/src/static/icons/solid/sword-laser.svg rename to src/static/icons/solid/sword-laser.svg diff --git a/client/src/static/icons/solid/sword.svg b/src/static/icons/solid/sword.svg similarity index 100% rename from client/src/static/icons/solid/sword.svg rename to src/static/icons/solid/sword.svg diff --git a/client/src/static/icons/solid/swords-laser.svg b/src/static/icons/solid/swords-laser.svg similarity index 100% rename from client/src/static/icons/solid/swords-laser.svg rename to src/static/icons/solid/swords-laser.svg diff --git a/client/src/static/icons/solid/swords.svg b/src/static/icons/solid/swords.svg similarity index 100% rename from client/src/static/icons/solid/swords.svg rename to src/static/icons/solid/swords.svg diff --git a/client/src/static/icons/solid/synagogue.svg b/src/static/icons/solid/synagogue.svg similarity index 100% rename from client/src/static/icons/solid/synagogue.svg rename to src/static/icons/solid/synagogue.svg diff --git a/client/src/static/icons/solid/sync-alt.svg b/src/static/icons/solid/sync-alt.svg similarity index 100% rename from client/src/static/icons/solid/sync-alt.svg rename to src/static/icons/solid/sync-alt.svg diff --git a/client/src/static/icons/solid/sync.svg b/src/static/icons/solid/sync.svg similarity index 100% rename from client/src/static/icons/solid/sync.svg rename to src/static/icons/solid/sync.svg diff --git a/client/src/static/icons/solid/syringe.svg b/src/static/icons/solid/syringe.svg similarity index 100% rename from client/src/static/icons/solid/syringe.svg rename to src/static/icons/solid/syringe.svg diff --git a/client/src/static/icons/solid/table-tennis.svg b/src/static/icons/solid/table-tennis.svg similarity index 100% rename from client/src/static/icons/solid/table-tennis.svg rename to src/static/icons/solid/table-tennis.svg diff --git a/client/src/static/icons/solid/table.svg b/src/static/icons/solid/table.svg similarity index 100% rename from client/src/static/icons/solid/table.svg rename to src/static/icons/solid/table.svg diff --git a/client/src/static/icons/solid/tablet-alt.svg b/src/static/icons/solid/tablet-alt.svg similarity index 100% rename from client/src/static/icons/solid/tablet-alt.svg rename to src/static/icons/solid/tablet-alt.svg diff --git a/client/src/static/icons/solid/tablet-android-alt.svg b/src/static/icons/solid/tablet-android-alt.svg similarity index 100% rename from client/src/static/icons/solid/tablet-android-alt.svg rename to src/static/icons/solid/tablet-android-alt.svg diff --git a/client/src/static/icons/solid/tablet-android.svg b/src/static/icons/solid/tablet-android.svg similarity index 100% rename from client/src/static/icons/solid/tablet-android.svg rename to src/static/icons/solid/tablet-android.svg diff --git a/client/src/static/icons/solid/tablet-rugged.svg b/src/static/icons/solid/tablet-rugged.svg similarity index 100% rename from client/src/static/icons/solid/tablet-rugged.svg rename to src/static/icons/solid/tablet-rugged.svg diff --git a/client/src/static/icons/solid/tablet.svg b/src/static/icons/solid/tablet.svg similarity index 100% rename from client/src/static/icons/solid/tablet.svg rename to src/static/icons/solid/tablet.svg diff --git a/client/src/static/icons/solid/tablets.svg b/src/static/icons/solid/tablets.svg similarity index 100% rename from client/src/static/icons/solid/tablets.svg rename to src/static/icons/solid/tablets.svg diff --git a/client/src/static/icons/solid/tachometer-alt-average.svg b/src/static/icons/solid/tachometer-alt-average.svg similarity index 100% rename from client/src/static/icons/solid/tachometer-alt-average.svg rename to src/static/icons/solid/tachometer-alt-average.svg diff --git a/client/src/static/icons/solid/tachometer-alt-fast.svg b/src/static/icons/solid/tachometer-alt-fast.svg similarity index 100% rename from client/src/static/icons/solid/tachometer-alt-fast.svg rename to src/static/icons/solid/tachometer-alt-fast.svg diff --git a/client/src/static/icons/solid/tachometer-alt-fastest.svg b/src/static/icons/solid/tachometer-alt-fastest.svg similarity index 100% rename from client/src/static/icons/solid/tachometer-alt-fastest.svg rename to src/static/icons/solid/tachometer-alt-fastest.svg diff --git a/client/src/static/icons/solid/tachometer-alt-slow.svg b/src/static/icons/solid/tachometer-alt-slow.svg similarity index 100% rename from client/src/static/icons/solid/tachometer-alt-slow.svg rename to src/static/icons/solid/tachometer-alt-slow.svg diff --git a/client/src/static/icons/solid/tachometer-alt-slowest.svg b/src/static/icons/solid/tachometer-alt-slowest.svg similarity index 100% rename from client/src/static/icons/solid/tachometer-alt-slowest.svg rename to src/static/icons/solid/tachometer-alt-slowest.svg diff --git a/client/src/static/icons/solid/tachometer-alt.svg b/src/static/icons/solid/tachometer-alt.svg similarity index 100% rename from client/src/static/icons/solid/tachometer-alt.svg rename to src/static/icons/solid/tachometer-alt.svg diff --git a/client/src/static/icons/solid/tachometer-average.svg b/src/static/icons/solid/tachometer-average.svg similarity index 100% rename from client/src/static/icons/solid/tachometer-average.svg rename to src/static/icons/solid/tachometer-average.svg diff --git a/client/src/static/icons/solid/tachometer-fast.svg b/src/static/icons/solid/tachometer-fast.svg similarity index 100% rename from client/src/static/icons/solid/tachometer-fast.svg rename to src/static/icons/solid/tachometer-fast.svg diff --git a/client/src/static/icons/solid/tachometer-fastest.svg b/src/static/icons/solid/tachometer-fastest.svg similarity index 100% rename from client/src/static/icons/solid/tachometer-fastest.svg rename to src/static/icons/solid/tachometer-fastest.svg diff --git a/client/src/static/icons/solid/tachometer-slow.svg b/src/static/icons/solid/tachometer-slow.svg similarity index 100% rename from client/src/static/icons/solid/tachometer-slow.svg rename to src/static/icons/solid/tachometer-slow.svg diff --git a/client/src/static/icons/solid/tachometer-slowest.svg b/src/static/icons/solid/tachometer-slowest.svg similarity index 100% rename from client/src/static/icons/solid/tachometer-slowest.svg rename to src/static/icons/solid/tachometer-slowest.svg diff --git a/client/src/static/icons/solid/tachometer.svg b/src/static/icons/solid/tachometer.svg similarity index 100% rename from client/src/static/icons/solid/tachometer.svg rename to src/static/icons/solid/tachometer.svg diff --git a/client/src/static/icons/solid/taco.svg b/src/static/icons/solid/taco.svg similarity index 100% rename from client/src/static/icons/solid/taco.svg rename to src/static/icons/solid/taco.svg diff --git a/client/src/static/icons/solid/tag.svg b/src/static/icons/solid/tag.svg similarity index 100% rename from client/src/static/icons/solid/tag.svg rename to src/static/icons/solid/tag.svg diff --git a/client/src/static/icons/solid/tags.svg b/src/static/icons/solid/tags.svg similarity index 100% rename from client/src/static/icons/solid/tags.svg rename to src/static/icons/solid/tags.svg diff --git a/client/src/static/icons/solid/tally.svg b/src/static/icons/solid/tally.svg similarity index 100% rename from client/src/static/icons/solid/tally.svg rename to src/static/icons/solid/tally.svg diff --git a/client/src/static/icons/solid/tanakh.svg b/src/static/icons/solid/tanakh.svg similarity index 100% rename from client/src/static/icons/solid/tanakh.svg rename to src/static/icons/solid/tanakh.svg diff --git a/client/src/static/icons/solid/tape.svg b/src/static/icons/solid/tape.svg similarity index 100% rename from client/src/static/icons/solid/tape.svg rename to src/static/icons/solid/tape.svg diff --git a/client/src/static/icons/solid/tasks-alt.svg b/src/static/icons/solid/tasks-alt.svg similarity index 100% rename from client/src/static/icons/solid/tasks-alt.svg rename to src/static/icons/solid/tasks-alt.svg diff --git a/client/src/static/icons/solid/tasks.svg b/src/static/icons/solid/tasks.svg similarity index 100% rename from client/src/static/icons/solid/tasks.svg rename to src/static/icons/solid/tasks.svg diff --git a/client/src/static/icons/solid/taxi.svg b/src/static/icons/solid/taxi.svg similarity index 100% rename from client/src/static/icons/solid/taxi.svg rename to src/static/icons/solid/taxi.svg diff --git a/client/src/static/icons/solid/teeth-open.svg b/src/static/icons/solid/teeth-open.svg similarity index 100% rename from client/src/static/icons/solid/teeth-open.svg rename to src/static/icons/solid/teeth-open.svg diff --git a/client/src/static/icons/solid/teeth.svg b/src/static/icons/solid/teeth.svg similarity index 100% rename from client/src/static/icons/solid/teeth.svg rename to src/static/icons/solid/teeth.svg diff --git a/client/src/static/icons/solid/telescope.svg b/src/static/icons/solid/telescope.svg similarity index 100% rename from client/src/static/icons/solid/telescope.svg rename to src/static/icons/solid/telescope.svg diff --git a/client/src/static/icons/solid/temperature-down.svg b/src/static/icons/solid/temperature-down.svg similarity index 100% rename from client/src/static/icons/solid/temperature-down.svg rename to src/static/icons/solid/temperature-down.svg diff --git a/client/src/static/icons/solid/temperature-frigid.svg b/src/static/icons/solid/temperature-frigid.svg similarity index 100% rename from client/src/static/icons/solid/temperature-frigid.svg rename to src/static/icons/solid/temperature-frigid.svg diff --git a/client/src/static/icons/solid/temperature-high.svg b/src/static/icons/solid/temperature-high.svg similarity index 100% rename from client/src/static/icons/solid/temperature-high.svg rename to src/static/icons/solid/temperature-high.svg diff --git a/client/src/static/icons/solid/temperature-hot.svg b/src/static/icons/solid/temperature-hot.svg similarity index 100% rename from client/src/static/icons/solid/temperature-hot.svg rename to src/static/icons/solid/temperature-hot.svg diff --git a/client/src/static/icons/solid/temperature-low.svg b/src/static/icons/solid/temperature-low.svg similarity index 100% rename from client/src/static/icons/solid/temperature-low.svg rename to src/static/icons/solid/temperature-low.svg diff --git a/client/src/static/icons/solid/temperature-up.svg b/src/static/icons/solid/temperature-up.svg similarity index 100% rename from client/src/static/icons/solid/temperature-up.svg rename to src/static/icons/solid/temperature-up.svg diff --git a/client/src/static/icons/solid/tenge.svg b/src/static/icons/solid/tenge.svg similarity index 100% rename from client/src/static/icons/solid/tenge.svg rename to src/static/icons/solid/tenge.svg diff --git a/client/src/static/icons/solid/tennis-ball.svg b/src/static/icons/solid/tennis-ball.svg similarity index 100% rename from client/src/static/icons/solid/tennis-ball.svg rename to src/static/icons/solid/tennis-ball.svg diff --git a/client/src/static/icons/solid/terminal.svg b/src/static/icons/solid/terminal.svg similarity index 100% rename from client/src/static/icons/solid/terminal.svg rename to src/static/icons/solid/terminal.svg diff --git a/client/src/static/icons/solid/text-height.svg b/src/static/icons/solid/text-height.svg similarity index 100% rename from client/src/static/icons/solid/text-height.svg rename to src/static/icons/solid/text-height.svg diff --git a/client/src/static/icons/solid/text-size.svg b/src/static/icons/solid/text-size.svg similarity index 100% rename from client/src/static/icons/solid/text-size.svg rename to src/static/icons/solid/text-size.svg diff --git a/client/src/static/icons/solid/text-width.svg b/src/static/icons/solid/text-width.svg similarity index 100% rename from client/src/static/icons/solid/text-width.svg rename to src/static/icons/solid/text-width.svg diff --git a/client/src/static/icons/solid/text.svg b/src/static/icons/solid/text.svg similarity index 100% rename from client/src/static/icons/solid/text.svg rename to src/static/icons/solid/text.svg diff --git a/client/src/static/icons/solid/th-large.svg b/src/static/icons/solid/th-large.svg similarity index 100% rename from client/src/static/icons/solid/th-large.svg rename to src/static/icons/solid/th-large.svg diff --git a/client/src/static/icons/solid/th-list.svg b/src/static/icons/solid/th-list.svg similarity index 100% rename from client/src/static/icons/solid/th-list.svg rename to src/static/icons/solid/th-list.svg diff --git a/client/src/static/icons/solid/th.svg b/src/static/icons/solid/th.svg similarity index 100% rename from client/src/static/icons/solid/th.svg rename to src/static/icons/solid/th.svg diff --git a/client/src/static/icons/solid/theater-masks.svg b/src/static/icons/solid/theater-masks.svg similarity index 100% rename from client/src/static/icons/solid/theater-masks.svg rename to src/static/icons/solid/theater-masks.svg diff --git a/client/src/static/icons/solid/thermometer-empty.svg b/src/static/icons/solid/thermometer-empty.svg similarity index 100% rename from client/src/static/icons/solid/thermometer-empty.svg rename to src/static/icons/solid/thermometer-empty.svg diff --git a/client/src/static/icons/solid/thermometer-full.svg b/src/static/icons/solid/thermometer-full.svg similarity index 100% rename from client/src/static/icons/solid/thermometer-full.svg rename to src/static/icons/solid/thermometer-full.svg diff --git a/client/src/static/icons/solid/thermometer-half.svg b/src/static/icons/solid/thermometer-half.svg similarity index 100% rename from client/src/static/icons/solid/thermometer-half.svg rename to src/static/icons/solid/thermometer-half.svg diff --git a/client/src/static/icons/solid/thermometer-quarter.svg b/src/static/icons/solid/thermometer-quarter.svg similarity index 100% rename from client/src/static/icons/solid/thermometer-quarter.svg rename to src/static/icons/solid/thermometer-quarter.svg diff --git a/client/src/static/icons/solid/thermometer-three-quarters.svg b/src/static/icons/solid/thermometer-three-quarters.svg similarity index 100% rename from client/src/static/icons/solid/thermometer-three-quarters.svg rename to src/static/icons/solid/thermometer-three-quarters.svg diff --git a/client/src/static/icons/solid/thermometer.svg b/src/static/icons/solid/thermometer.svg similarity index 100% rename from client/src/static/icons/solid/thermometer.svg rename to src/static/icons/solid/thermometer.svg diff --git a/client/src/static/icons/solid/theta.svg b/src/static/icons/solid/theta.svg similarity index 100% rename from client/src/static/icons/solid/theta.svg rename to src/static/icons/solid/theta.svg diff --git a/client/src/static/icons/solid/thumbs-down.svg b/src/static/icons/solid/thumbs-down.svg similarity index 100% rename from client/src/static/icons/solid/thumbs-down.svg rename to src/static/icons/solid/thumbs-down.svg diff --git a/client/src/static/icons/solid/thumbs-up.svg b/src/static/icons/solid/thumbs-up.svg similarity index 100% rename from client/src/static/icons/solid/thumbs-up.svg rename to src/static/icons/solid/thumbs-up.svg diff --git a/client/src/static/icons/solid/thumbtack.svg b/src/static/icons/solid/thumbtack.svg similarity index 100% rename from client/src/static/icons/solid/thumbtack.svg rename to src/static/icons/solid/thumbtack.svg diff --git a/client/src/static/icons/solid/thunderstorm-moon.svg b/src/static/icons/solid/thunderstorm-moon.svg similarity index 100% rename from client/src/static/icons/solid/thunderstorm-moon.svg rename to src/static/icons/solid/thunderstorm-moon.svg diff --git a/client/src/static/icons/solid/thunderstorm-sun.svg b/src/static/icons/solid/thunderstorm-sun.svg similarity index 100% rename from client/src/static/icons/solid/thunderstorm-sun.svg rename to src/static/icons/solid/thunderstorm-sun.svg diff --git a/client/src/static/icons/solid/thunderstorm.svg b/src/static/icons/solid/thunderstorm.svg similarity index 100% rename from client/src/static/icons/solid/thunderstorm.svg rename to src/static/icons/solid/thunderstorm.svg diff --git a/client/src/static/icons/solid/ticket-alt.svg b/src/static/icons/solid/ticket-alt.svg similarity index 100% rename from client/src/static/icons/solid/ticket-alt.svg rename to src/static/icons/solid/ticket-alt.svg diff --git a/client/src/static/icons/solid/ticket.svg b/src/static/icons/solid/ticket.svg similarity index 100% rename from client/src/static/icons/solid/ticket.svg rename to src/static/icons/solid/ticket.svg diff --git a/client/src/static/icons/solid/tilde.svg b/src/static/icons/solid/tilde.svg similarity index 100% rename from client/src/static/icons/solid/tilde.svg rename to src/static/icons/solid/tilde.svg diff --git a/client/src/static/icons/solid/times-circle.svg b/src/static/icons/solid/times-circle.svg similarity index 100% rename from client/src/static/icons/solid/times-circle.svg rename to src/static/icons/solid/times-circle.svg diff --git a/client/src/static/icons/solid/times-hexagon.svg b/src/static/icons/solid/times-hexagon.svg similarity index 100% rename from client/src/static/icons/solid/times-hexagon.svg rename to src/static/icons/solid/times-hexagon.svg diff --git a/client/src/static/icons/solid/times-octagon.svg b/src/static/icons/solid/times-octagon.svg similarity index 100% rename from client/src/static/icons/solid/times-octagon.svg rename to src/static/icons/solid/times-octagon.svg diff --git a/client/src/static/icons/solid/times-square.svg b/src/static/icons/solid/times-square.svg similarity index 100% rename from client/src/static/icons/solid/times-square.svg rename to src/static/icons/solid/times-square.svg diff --git a/client/src/static/icons/solid/times.svg b/src/static/icons/solid/times.svg similarity index 100% rename from client/src/static/icons/solid/times.svg rename to src/static/icons/solid/times.svg diff --git a/client/src/static/icons/solid/tint-slash.svg b/src/static/icons/solid/tint-slash.svg similarity index 100% rename from client/src/static/icons/solid/tint-slash.svg rename to src/static/icons/solid/tint-slash.svg diff --git a/client/src/static/icons/solid/tint.svg b/src/static/icons/solid/tint.svg similarity index 100% rename from client/src/static/icons/solid/tint.svg rename to src/static/icons/solid/tint.svg diff --git a/client/src/static/icons/solid/tire-flat.svg b/src/static/icons/solid/tire-flat.svg similarity index 100% rename from client/src/static/icons/solid/tire-flat.svg rename to src/static/icons/solid/tire-flat.svg diff --git a/client/src/static/icons/solid/tire-pressure-warning.svg b/src/static/icons/solid/tire-pressure-warning.svg similarity index 100% rename from client/src/static/icons/solid/tire-pressure-warning.svg rename to src/static/icons/solid/tire-pressure-warning.svg diff --git a/client/src/static/icons/solid/tire-rugged.svg b/src/static/icons/solid/tire-rugged.svg similarity index 100% rename from client/src/static/icons/solid/tire-rugged.svg rename to src/static/icons/solid/tire-rugged.svg diff --git a/client/src/static/icons/solid/tire.svg b/src/static/icons/solid/tire.svg similarity index 100% rename from client/src/static/icons/solid/tire.svg rename to src/static/icons/solid/tire.svg diff --git a/client/src/static/icons/solid/tired.svg b/src/static/icons/solid/tired.svg similarity index 100% rename from client/src/static/icons/solid/tired.svg rename to src/static/icons/solid/tired.svg diff --git a/client/src/static/icons/solid/toggle-off.svg b/src/static/icons/solid/toggle-off.svg similarity index 100% rename from client/src/static/icons/solid/toggle-off.svg rename to src/static/icons/solid/toggle-off.svg diff --git a/client/src/static/icons/solid/toggle-on.svg b/src/static/icons/solid/toggle-on.svg similarity index 100% rename from client/src/static/icons/solid/toggle-on.svg rename to src/static/icons/solid/toggle-on.svg diff --git a/client/src/static/icons/solid/toilet-paper-alt.svg b/src/static/icons/solid/toilet-paper-alt.svg similarity index 100% rename from client/src/static/icons/solid/toilet-paper-alt.svg rename to src/static/icons/solid/toilet-paper-alt.svg diff --git a/client/src/static/icons/solid/toilet-paper.svg b/src/static/icons/solid/toilet-paper.svg similarity index 100% rename from client/src/static/icons/solid/toilet-paper.svg rename to src/static/icons/solid/toilet-paper.svg diff --git a/client/src/static/icons/solid/toilet.svg b/src/static/icons/solid/toilet.svg similarity index 100% rename from client/src/static/icons/solid/toilet.svg rename to src/static/icons/solid/toilet.svg diff --git a/client/src/static/icons/solid/tombstone-alt.svg b/src/static/icons/solid/tombstone-alt.svg similarity index 100% rename from client/src/static/icons/solid/tombstone-alt.svg rename to src/static/icons/solid/tombstone-alt.svg diff --git a/client/src/static/icons/solid/tombstone.svg b/src/static/icons/solid/tombstone.svg similarity index 100% rename from client/src/static/icons/solid/tombstone.svg rename to src/static/icons/solid/tombstone.svg diff --git a/client/src/static/icons/solid/toolbox.svg b/src/static/icons/solid/toolbox.svg similarity index 100% rename from client/src/static/icons/solid/toolbox.svg rename to src/static/icons/solid/toolbox.svg diff --git a/client/src/static/icons/solid/tools.svg b/src/static/icons/solid/tools.svg similarity index 100% rename from client/src/static/icons/solid/tools.svg rename to src/static/icons/solid/tools.svg diff --git a/client/src/static/icons/solid/tooth.svg b/src/static/icons/solid/tooth.svg similarity index 100% rename from client/src/static/icons/solid/tooth.svg rename to src/static/icons/solid/tooth.svg diff --git a/client/src/static/icons/solid/toothbrush.svg b/src/static/icons/solid/toothbrush.svg similarity index 100% rename from client/src/static/icons/solid/toothbrush.svg rename to src/static/icons/solid/toothbrush.svg diff --git a/client/src/static/icons/solid/torah.svg b/src/static/icons/solid/torah.svg similarity index 100% rename from client/src/static/icons/solid/torah.svg rename to src/static/icons/solid/torah.svg diff --git a/client/src/static/icons/solid/torii-gate.svg b/src/static/icons/solid/torii-gate.svg similarity index 100% rename from client/src/static/icons/solid/torii-gate.svg rename to src/static/icons/solid/torii-gate.svg diff --git a/client/src/static/icons/solid/tornado.svg b/src/static/icons/solid/tornado.svg similarity index 100% rename from client/src/static/icons/solid/tornado.svg rename to src/static/icons/solid/tornado.svg diff --git a/client/src/static/icons/solid/tractor.svg b/src/static/icons/solid/tractor.svg similarity index 100% rename from client/src/static/icons/solid/tractor.svg rename to src/static/icons/solid/tractor.svg diff --git a/client/src/static/icons/solid/trademark.svg b/src/static/icons/solid/trademark.svg similarity index 100% rename from client/src/static/icons/solid/trademark.svg rename to src/static/icons/solid/trademark.svg diff --git a/client/src/static/icons/solid/traffic-cone.svg b/src/static/icons/solid/traffic-cone.svg similarity index 100% rename from client/src/static/icons/solid/traffic-cone.svg rename to src/static/icons/solid/traffic-cone.svg diff --git a/client/src/static/icons/solid/traffic-light-go.svg b/src/static/icons/solid/traffic-light-go.svg similarity index 100% rename from client/src/static/icons/solid/traffic-light-go.svg rename to src/static/icons/solid/traffic-light-go.svg diff --git a/client/src/static/icons/solid/traffic-light-slow.svg b/src/static/icons/solid/traffic-light-slow.svg similarity index 100% rename from client/src/static/icons/solid/traffic-light-slow.svg rename to src/static/icons/solid/traffic-light-slow.svg diff --git a/client/src/static/icons/solid/traffic-light-stop.svg b/src/static/icons/solid/traffic-light-stop.svg similarity index 100% rename from client/src/static/icons/solid/traffic-light-stop.svg rename to src/static/icons/solid/traffic-light-stop.svg diff --git a/client/src/static/icons/solid/traffic-light.svg b/src/static/icons/solid/traffic-light.svg similarity index 100% rename from client/src/static/icons/solid/traffic-light.svg rename to src/static/icons/solid/traffic-light.svg diff --git a/client/src/static/icons/solid/trailer.svg b/src/static/icons/solid/trailer.svg similarity index 100% rename from client/src/static/icons/solid/trailer.svg rename to src/static/icons/solid/trailer.svg diff --git a/client/src/static/icons/solid/train.svg b/src/static/icons/solid/train.svg similarity index 100% rename from client/src/static/icons/solid/train.svg rename to src/static/icons/solid/train.svg diff --git a/client/src/static/icons/solid/tram.svg b/src/static/icons/solid/tram.svg similarity index 100% rename from client/src/static/icons/solid/tram.svg rename to src/static/icons/solid/tram.svg diff --git a/client/src/static/icons/solid/transgender-alt.svg b/src/static/icons/solid/transgender-alt.svg similarity index 100% rename from client/src/static/icons/solid/transgender-alt.svg rename to src/static/icons/solid/transgender-alt.svg diff --git a/client/src/static/icons/solid/transgender.svg b/src/static/icons/solid/transgender.svg similarity index 100% rename from client/src/static/icons/solid/transgender.svg rename to src/static/icons/solid/transgender.svg diff --git a/client/src/static/icons/solid/transporter-1.svg b/src/static/icons/solid/transporter-1.svg similarity index 100% rename from client/src/static/icons/solid/transporter-1.svg rename to src/static/icons/solid/transporter-1.svg diff --git a/client/src/static/icons/solid/transporter-2.svg b/src/static/icons/solid/transporter-2.svg similarity index 100% rename from client/src/static/icons/solid/transporter-2.svg rename to src/static/icons/solid/transporter-2.svg diff --git a/client/src/static/icons/solid/transporter-3.svg b/src/static/icons/solid/transporter-3.svg similarity index 100% rename from client/src/static/icons/solid/transporter-3.svg rename to src/static/icons/solid/transporter-3.svg diff --git a/client/src/static/icons/solid/transporter-empty.svg b/src/static/icons/solid/transporter-empty.svg similarity index 100% rename from client/src/static/icons/solid/transporter-empty.svg rename to src/static/icons/solid/transporter-empty.svg diff --git a/client/src/static/icons/solid/transporter.svg b/src/static/icons/solid/transporter.svg similarity index 100% rename from client/src/static/icons/solid/transporter.svg rename to src/static/icons/solid/transporter.svg diff --git a/client/src/static/icons/solid/trash-alt.svg b/src/static/icons/solid/trash-alt.svg similarity index 100% rename from client/src/static/icons/solid/trash-alt.svg rename to src/static/icons/solid/trash-alt.svg diff --git a/client/src/static/icons/solid/trash-restore-alt.svg b/src/static/icons/solid/trash-restore-alt.svg similarity index 100% rename from client/src/static/icons/solid/trash-restore-alt.svg rename to src/static/icons/solid/trash-restore-alt.svg diff --git a/client/src/static/icons/solid/trash-restore.svg b/src/static/icons/solid/trash-restore.svg similarity index 100% rename from client/src/static/icons/solid/trash-restore.svg rename to src/static/icons/solid/trash-restore.svg diff --git a/client/src/static/icons/solid/trash-undo-alt.svg b/src/static/icons/solid/trash-undo-alt.svg similarity index 100% rename from client/src/static/icons/solid/trash-undo-alt.svg rename to src/static/icons/solid/trash-undo-alt.svg diff --git a/client/src/static/icons/solid/trash-undo.svg b/src/static/icons/solid/trash-undo.svg similarity index 100% rename from client/src/static/icons/solid/trash-undo.svg rename to src/static/icons/solid/trash-undo.svg diff --git a/client/src/static/icons/solid/trash.svg b/src/static/icons/solid/trash.svg similarity index 100% rename from client/src/static/icons/solid/trash.svg rename to src/static/icons/solid/trash.svg diff --git a/client/src/static/icons/solid/treasure-chest.svg b/src/static/icons/solid/treasure-chest.svg similarity index 100% rename from client/src/static/icons/solid/treasure-chest.svg rename to src/static/icons/solid/treasure-chest.svg diff --git a/client/src/static/icons/solid/tree-alt.svg b/src/static/icons/solid/tree-alt.svg similarity index 100% rename from client/src/static/icons/solid/tree-alt.svg rename to src/static/icons/solid/tree-alt.svg diff --git a/client/src/static/icons/solid/tree-christmas.svg b/src/static/icons/solid/tree-christmas.svg similarity index 100% rename from client/src/static/icons/solid/tree-christmas.svg rename to src/static/icons/solid/tree-christmas.svg diff --git a/client/src/static/icons/solid/tree-decorated.svg b/src/static/icons/solid/tree-decorated.svg similarity index 100% rename from client/src/static/icons/solid/tree-decorated.svg rename to src/static/icons/solid/tree-decorated.svg diff --git a/client/src/static/icons/solid/tree-large.svg b/src/static/icons/solid/tree-large.svg similarity index 100% rename from client/src/static/icons/solid/tree-large.svg rename to src/static/icons/solid/tree-large.svg diff --git a/client/src/static/icons/solid/tree-palm.svg b/src/static/icons/solid/tree-palm.svg similarity index 100% rename from client/src/static/icons/solid/tree-palm.svg rename to src/static/icons/solid/tree-palm.svg diff --git a/client/src/static/icons/solid/tree.svg b/src/static/icons/solid/tree.svg similarity index 100% rename from client/src/static/icons/solid/tree.svg rename to src/static/icons/solid/tree.svg diff --git a/client/src/static/icons/solid/trees.svg b/src/static/icons/solid/trees.svg similarity index 100% rename from client/src/static/icons/solid/trees.svg rename to src/static/icons/solid/trees.svg diff --git a/client/src/static/icons/solid/triangle-music.svg b/src/static/icons/solid/triangle-music.svg similarity index 100% rename from client/src/static/icons/solid/triangle-music.svg rename to src/static/icons/solid/triangle-music.svg diff --git a/client/src/static/icons/solid/triangle.svg b/src/static/icons/solid/triangle.svg similarity index 100% rename from client/src/static/icons/solid/triangle.svg rename to src/static/icons/solid/triangle.svg diff --git a/client/src/static/icons/solid/trophy-alt.svg b/src/static/icons/solid/trophy-alt.svg similarity index 100% rename from client/src/static/icons/solid/trophy-alt.svg rename to src/static/icons/solid/trophy-alt.svg diff --git a/client/src/static/icons/solid/trophy.svg b/src/static/icons/solid/trophy.svg similarity index 100% rename from client/src/static/icons/solid/trophy.svg rename to src/static/icons/solid/trophy.svg diff --git a/client/src/static/icons/solid/truck-container.svg b/src/static/icons/solid/truck-container.svg similarity index 100% rename from client/src/static/icons/solid/truck-container.svg rename to src/static/icons/solid/truck-container.svg diff --git a/client/src/static/icons/solid/truck-couch.svg b/src/static/icons/solid/truck-couch.svg similarity index 100% rename from client/src/static/icons/solid/truck-couch.svg rename to src/static/icons/solid/truck-couch.svg diff --git a/client/src/static/icons/solid/truck-loading.svg b/src/static/icons/solid/truck-loading.svg similarity index 100% rename from client/src/static/icons/solid/truck-loading.svg rename to src/static/icons/solid/truck-loading.svg diff --git a/client/src/static/icons/solid/truck-monster.svg b/src/static/icons/solid/truck-monster.svg similarity index 100% rename from client/src/static/icons/solid/truck-monster.svg rename to src/static/icons/solid/truck-monster.svg diff --git a/client/src/static/icons/solid/truck-moving.svg b/src/static/icons/solid/truck-moving.svg similarity index 100% rename from client/src/static/icons/solid/truck-moving.svg rename to src/static/icons/solid/truck-moving.svg diff --git a/client/src/static/icons/solid/truck-pickup.svg b/src/static/icons/solid/truck-pickup.svg similarity index 100% rename from client/src/static/icons/solid/truck-pickup.svg rename to src/static/icons/solid/truck-pickup.svg diff --git a/client/src/static/icons/solid/truck-plow.svg b/src/static/icons/solid/truck-plow.svg similarity index 100% rename from client/src/static/icons/solid/truck-plow.svg rename to src/static/icons/solid/truck-plow.svg diff --git a/client/src/static/icons/solid/truck-ramp.svg b/src/static/icons/solid/truck-ramp.svg similarity index 100% rename from client/src/static/icons/solid/truck-ramp.svg rename to src/static/icons/solid/truck-ramp.svg diff --git a/client/src/static/icons/solid/truck.svg b/src/static/icons/solid/truck.svg similarity index 100% rename from client/src/static/icons/solid/truck.svg rename to src/static/icons/solid/truck.svg diff --git a/client/src/static/icons/solid/trumpet.svg b/src/static/icons/solid/trumpet.svg similarity index 100% rename from client/src/static/icons/solid/trumpet.svg rename to src/static/icons/solid/trumpet.svg diff --git a/client/src/static/icons/solid/tshirt.svg b/src/static/icons/solid/tshirt.svg similarity index 100% rename from client/src/static/icons/solid/tshirt.svg rename to src/static/icons/solid/tshirt.svg diff --git a/client/src/static/icons/solid/tty.svg b/src/static/icons/solid/tty.svg similarity index 100% rename from client/src/static/icons/solid/tty.svg rename to src/static/icons/solid/tty.svg diff --git a/client/src/static/icons/solid/turkey.svg b/src/static/icons/solid/turkey.svg similarity index 100% rename from client/src/static/icons/solid/turkey.svg rename to src/static/icons/solid/turkey.svg diff --git a/client/src/static/icons/solid/turntable.svg b/src/static/icons/solid/turntable.svg similarity index 100% rename from client/src/static/icons/solid/turntable.svg rename to src/static/icons/solid/turntable.svg diff --git a/client/src/static/icons/solid/turtle.svg b/src/static/icons/solid/turtle.svg similarity index 100% rename from client/src/static/icons/solid/turtle.svg rename to src/static/icons/solid/turtle.svg diff --git a/client/src/static/icons/solid/tv-alt.svg b/src/static/icons/solid/tv-alt.svg similarity index 100% rename from client/src/static/icons/solid/tv-alt.svg rename to src/static/icons/solid/tv-alt.svg diff --git a/client/src/static/icons/solid/tv-music.svg b/src/static/icons/solid/tv-music.svg similarity index 100% rename from client/src/static/icons/solid/tv-music.svg rename to src/static/icons/solid/tv-music.svg diff --git a/client/src/static/icons/solid/tv-retro.svg b/src/static/icons/solid/tv-retro.svg similarity index 100% rename from client/src/static/icons/solid/tv-retro.svg rename to src/static/icons/solid/tv-retro.svg diff --git a/client/src/static/icons/solid/tv.svg b/src/static/icons/solid/tv.svg similarity index 100% rename from client/src/static/icons/solid/tv.svg rename to src/static/icons/solid/tv.svg diff --git a/client/src/static/icons/solid/typewriter.svg b/src/static/icons/solid/typewriter.svg similarity index 100% rename from client/src/static/icons/solid/typewriter.svg rename to src/static/icons/solid/typewriter.svg diff --git a/client/src/static/icons/solid/ufo-beam.svg b/src/static/icons/solid/ufo-beam.svg similarity index 100% rename from client/src/static/icons/solid/ufo-beam.svg rename to src/static/icons/solid/ufo-beam.svg diff --git a/client/src/static/icons/solid/ufo.svg b/src/static/icons/solid/ufo.svg similarity index 100% rename from client/src/static/icons/solid/ufo.svg rename to src/static/icons/solid/ufo.svg diff --git a/client/src/static/icons/solid/umbrella-beach.svg b/src/static/icons/solid/umbrella-beach.svg similarity index 100% rename from client/src/static/icons/solid/umbrella-beach.svg rename to src/static/icons/solid/umbrella-beach.svg diff --git a/client/src/static/icons/solid/umbrella.svg b/src/static/icons/solid/umbrella.svg similarity index 100% rename from client/src/static/icons/solid/umbrella.svg rename to src/static/icons/solid/umbrella.svg diff --git a/client/src/static/icons/solid/underline.svg b/src/static/icons/solid/underline.svg similarity index 100% rename from client/src/static/icons/solid/underline.svg rename to src/static/icons/solid/underline.svg diff --git a/client/src/static/icons/solid/undo-alt.svg b/src/static/icons/solid/undo-alt.svg similarity index 100% rename from client/src/static/icons/solid/undo-alt.svg rename to src/static/icons/solid/undo-alt.svg diff --git a/client/src/static/icons/solid/undo.svg b/src/static/icons/solid/undo.svg similarity index 100% rename from client/src/static/icons/solid/undo.svg rename to src/static/icons/solid/undo.svg diff --git a/client/src/static/icons/solid/unicorn.svg b/src/static/icons/solid/unicorn.svg similarity index 100% rename from client/src/static/icons/solid/unicorn.svg rename to src/static/icons/solid/unicorn.svg diff --git a/client/src/static/icons/solid/union.svg b/src/static/icons/solid/union.svg similarity index 100% rename from client/src/static/icons/solid/union.svg rename to src/static/icons/solid/union.svg diff --git a/client/src/static/icons/solid/universal-access.svg b/src/static/icons/solid/universal-access.svg similarity index 100% rename from client/src/static/icons/solid/universal-access.svg rename to src/static/icons/solid/universal-access.svg diff --git a/client/src/static/icons/solid/university.svg b/src/static/icons/solid/university.svg similarity index 100% rename from client/src/static/icons/solid/university.svg rename to src/static/icons/solid/university.svg diff --git a/client/src/static/icons/solid/unlink.svg b/src/static/icons/solid/unlink.svg similarity index 100% rename from client/src/static/icons/solid/unlink.svg rename to src/static/icons/solid/unlink.svg diff --git a/client/src/static/icons/solid/unlock-alt.svg b/src/static/icons/solid/unlock-alt.svg similarity index 100% rename from client/src/static/icons/solid/unlock-alt.svg rename to src/static/icons/solid/unlock-alt.svg diff --git a/client/src/static/icons/solid/unlock.svg b/src/static/icons/solid/unlock.svg similarity index 100% rename from client/src/static/icons/solid/unlock.svg rename to src/static/icons/solid/unlock.svg diff --git a/client/src/static/icons/solid/upload.svg b/src/static/icons/solid/upload.svg similarity index 100% rename from client/src/static/icons/solid/upload.svg rename to src/static/icons/solid/upload.svg diff --git a/client/src/static/icons/solid/usb-drive.svg b/src/static/icons/solid/usb-drive.svg similarity index 100% rename from client/src/static/icons/solid/usb-drive.svg rename to src/static/icons/solid/usb-drive.svg diff --git a/client/src/static/icons/solid/usd-circle.svg b/src/static/icons/solid/usd-circle.svg similarity index 100% rename from client/src/static/icons/solid/usd-circle.svg rename to src/static/icons/solid/usd-circle.svg diff --git a/client/src/static/icons/solid/usd-square.svg b/src/static/icons/solid/usd-square.svg similarity index 100% rename from client/src/static/icons/solid/usd-square.svg rename to src/static/icons/solid/usd-square.svg diff --git a/client/src/static/icons/solid/user-alien.svg b/src/static/icons/solid/user-alien.svg similarity index 100% rename from client/src/static/icons/solid/user-alien.svg rename to src/static/icons/solid/user-alien.svg diff --git a/client/src/static/icons/solid/user-alt-slash.svg b/src/static/icons/solid/user-alt-slash.svg similarity index 100% rename from client/src/static/icons/solid/user-alt-slash.svg rename to src/static/icons/solid/user-alt-slash.svg diff --git a/client/src/static/icons/solid/user-alt.svg b/src/static/icons/solid/user-alt.svg similarity index 100% rename from client/src/static/icons/solid/user-alt.svg rename to src/static/icons/solid/user-alt.svg diff --git a/client/src/static/icons/solid/user-astronaut.svg b/src/static/icons/solid/user-astronaut.svg similarity index 100% rename from client/src/static/icons/solid/user-astronaut.svg rename to src/static/icons/solid/user-astronaut.svg diff --git a/client/src/static/icons/solid/user-chart.svg b/src/static/icons/solid/user-chart.svg similarity index 100% rename from client/src/static/icons/solid/user-chart.svg rename to src/static/icons/solid/user-chart.svg diff --git a/client/src/static/icons/solid/user-check.svg b/src/static/icons/solid/user-check.svg similarity index 100% rename from client/src/static/icons/solid/user-check.svg rename to src/static/icons/solid/user-check.svg diff --git a/client/src/static/icons/solid/user-circle.svg b/src/static/icons/solid/user-circle.svg similarity index 100% rename from client/src/static/icons/solid/user-circle.svg rename to src/static/icons/solid/user-circle.svg diff --git a/client/src/static/icons/solid/user-clock.svg b/src/static/icons/solid/user-clock.svg similarity index 100% rename from client/src/static/icons/solid/user-clock.svg rename to src/static/icons/solid/user-clock.svg diff --git a/client/src/static/icons/solid/user-cog.svg b/src/static/icons/solid/user-cog.svg similarity index 100% rename from client/src/static/icons/solid/user-cog.svg rename to src/static/icons/solid/user-cog.svg diff --git a/client/src/static/icons/solid/user-cowboy.svg b/src/static/icons/solid/user-cowboy.svg similarity index 100% rename from client/src/static/icons/solid/user-cowboy.svg rename to src/static/icons/solid/user-cowboy.svg diff --git a/client/src/static/icons/solid/user-crown.svg b/src/static/icons/solid/user-crown.svg similarity index 100% rename from client/src/static/icons/solid/user-crown.svg rename to src/static/icons/solid/user-crown.svg diff --git a/client/src/static/icons/solid/user-edit.svg b/src/static/icons/solid/user-edit.svg similarity index 100% rename from client/src/static/icons/solid/user-edit.svg rename to src/static/icons/solid/user-edit.svg diff --git a/client/src/static/icons/solid/user-friends.svg b/src/static/icons/solid/user-friends.svg similarity index 100% rename from client/src/static/icons/solid/user-friends.svg rename to src/static/icons/solid/user-friends.svg diff --git a/client/src/static/icons/solid/user-graduate.svg b/src/static/icons/solid/user-graduate.svg similarity index 100% rename from client/src/static/icons/solid/user-graduate.svg rename to src/static/icons/solid/user-graduate.svg diff --git a/client/src/static/icons/solid/user-hard-hat.svg b/src/static/icons/solid/user-hard-hat.svg similarity index 100% rename from client/src/static/icons/solid/user-hard-hat.svg rename to src/static/icons/solid/user-hard-hat.svg diff --git a/client/src/static/icons/solid/user-headset.svg b/src/static/icons/solid/user-headset.svg similarity index 100% rename from client/src/static/icons/solid/user-headset.svg rename to src/static/icons/solid/user-headset.svg diff --git a/client/src/static/icons/solid/user-injured.svg b/src/static/icons/solid/user-injured.svg similarity index 100% rename from client/src/static/icons/solid/user-injured.svg rename to src/static/icons/solid/user-injured.svg diff --git a/client/src/static/icons/solid/user-lock.svg b/src/static/icons/solid/user-lock.svg similarity index 100% rename from client/src/static/icons/solid/user-lock.svg rename to src/static/icons/solid/user-lock.svg diff --git a/client/src/static/icons/solid/user-md-chat.svg b/src/static/icons/solid/user-md-chat.svg similarity index 100% rename from client/src/static/icons/solid/user-md-chat.svg rename to src/static/icons/solid/user-md-chat.svg diff --git a/client/src/static/icons/solid/user-md.svg b/src/static/icons/solid/user-md.svg similarity index 100% rename from client/src/static/icons/solid/user-md.svg rename to src/static/icons/solid/user-md.svg diff --git a/client/src/static/icons/solid/user-minus.svg b/src/static/icons/solid/user-minus.svg similarity index 100% rename from client/src/static/icons/solid/user-minus.svg rename to src/static/icons/solid/user-minus.svg diff --git a/client/src/static/icons/solid/user-music.svg b/src/static/icons/solid/user-music.svg similarity index 100% rename from client/src/static/icons/solid/user-music.svg rename to src/static/icons/solid/user-music.svg diff --git a/client/src/static/icons/solid/user-ninja.svg b/src/static/icons/solid/user-ninja.svg similarity index 100% rename from client/src/static/icons/solid/user-ninja.svg rename to src/static/icons/solid/user-ninja.svg diff --git a/client/src/static/icons/solid/user-nurse.svg b/src/static/icons/solid/user-nurse.svg similarity index 100% rename from client/src/static/icons/solid/user-nurse.svg rename to src/static/icons/solid/user-nurse.svg diff --git a/client/src/static/icons/solid/user-plus.svg b/src/static/icons/solid/user-plus.svg similarity index 100% rename from client/src/static/icons/solid/user-plus.svg rename to src/static/icons/solid/user-plus.svg diff --git a/client/src/static/icons/solid/user-robot.svg b/src/static/icons/solid/user-robot.svg similarity index 100% rename from client/src/static/icons/solid/user-robot.svg rename to src/static/icons/solid/user-robot.svg diff --git a/client/src/static/icons/solid/user-secret.svg b/src/static/icons/solid/user-secret.svg similarity index 100% rename from client/src/static/icons/solid/user-secret.svg rename to src/static/icons/solid/user-secret.svg diff --git a/client/src/static/icons/solid/user-shield.svg b/src/static/icons/solid/user-shield.svg similarity index 100% rename from client/src/static/icons/solid/user-shield.svg rename to src/static/icons/solid/user-shield.svg diff --git a/client/src/static/icons/solid/user-slash.svg b/src/static/icons/solid/user-slash.svg similarity index 100% rename from client/src/static/icons/solid/user-slash.svg rename to src/static/icons/solid/user-slash.svg diff --git a/client/src/static/icons/solid/user-tag.svg b/src/static/icons/solid/user-tag.svg similarity index 100% rename from client/src/static/icons/solid/user-tag.svg rename to src/static/icons/solid/user-tag.svg diff --git a/client/src/static/icons/solid/user-tie.svg b/src/static/icons/solid/user-tie.svg similarity index 100% rename from client/src/static/icons/solid/user-tie.svg rename to src/static/icons/solid/user-tie.svg diff --git a/client/src/static/icons/solid/user-times.svg b/src/static/icons/solid/user-times.svg similarity index 100% rename from client/src/static/icons/solid/user-times.svg rename to src/static/icons/solid/user-times.svg diff --git a/client/src/static/icons/solid/user-visor.svg b/src/static/icons/solid/user-visor.svg similarity index 100% rename from client/src/static/icons/solid/user-visor.svg rename to src/static/icons/solid/user-visor.svg diff --git a/client/src/static/icons/solid/user.svg b/src/static/icons/solid/user.svg similarity index 100% rename from client/src/static/icons/solid/user.svg rename to src/static/icons/solid/user.svg diff --git a/client/src/static/icons/solid/users-class.svg b/src/static/icons/solid/users-class.svg similarity index 100% rename from client/src/static/icons/solid/users-class.svg rename to src/static/icons/solid/users-class.svg diff --git a/client/src/static/icons/solid/users-cog.svg b/src/static/icons/solid/users-cog.svg similarity index 100% rename from client/src/static/icons/solid/users-cog.svg rename to src/static/icons/solid/users-cog.svg diff --git a/client/src/static/icons/solid/users-crown.svg b/src/static/icons/solid/users-crown.svg similarity index 100% rename from client/src/static/icons/solid/users-crown.svg rename to src/static/icons/solid/users-crown.svg diff --git a/client/src/static/icons/solid/users-medical.svg b/src/static/icons/solid/users-medical.svg similarity index 100% rename from client/src/static/icons/solid/users-medical.svg rename to src/static/icons/solid/users-medical.svg diff --git a/client/src/static/icons/solid/users.svg b/src/static/icons/solid/users.svg similarity index 100% rename from client/src/static/icons/solid/users.svg rename to src/static/icons/solid/users.svg diff --git a/client/src/static/icons/solid/utensil-fork.svg b/src/static/icons/solid/utensil-fork.svg similarity index 100% rename from client/src/static/icons/solid/utensil-fork.svg rename to src/static/icons/solid/utensil-fork.svg diff --git a/client/src/static/icons/solid/utensil-knife.svg b/src/static/icons/solid/utensil-knife.svg similarity index 100% rename from client/src/static/icons/solid/utensil-knife.svg rename to src/static/icons/solid/utensil-knife.svg diff --git a/client/src/static/icons/solid/utensil-spoon.svg b/src/static/icons/solid/utensil-spoon.svg similarity index 100% rename from client/src/static/icons/solid/utensil-spoon.svg rename to src/static/icons/solid/utensil-spoon.svg diff --git a/client/src/static/icons/solid/utensils-alt.svg b/src/static/icons/solid/utensils-alt.svg similarity index 100% rename from client/src/static/icons/solid/utensils-alt.svg rename to src/static/icons/solid/utensils-alt.svg diff --git a/client/src/static/icons/solid/utensils.svg b/src/static/icons/solid/utensils.svg similarity index 100% rename from client/src/static/icons/solid/utensils.svg rename to src/static/icons/solid/utensils.svg diff --git a/client/src/static/icons/solid/vacuum-robot.svg b/src/static/icons/solid/vacuum-robot.svg similarity index 100% rename from client/src/static/icons/solid/vacuum-robot.svg rename to src/static/icons/solid/vacuum-robot.svg diff --git a/client/src/static/icons/solid/vacuum.svg b/src/static/icons/solid/vacuum.svg similarity index 100% rename from client/src/static/icons/solid/vacuum.svg rename to src/static/icons/solid/vacuum.svg diff --git a/client/src/static/icons/solid/value-absolute.svg b/src/static/icons/solid/value-absolute.svg similarity index 100% rename from client/src/static/icons/solid/value-absolute.svg rename to src/static/icons/solid/value-absolute.svg diff --git a/client/src/static/icons/solid/vector-square.svg b/src/static/icons/solid/vector-square.svg similarity index 100% rename from client/src/static/icons/solid/vector-square.svg rename to src/static/icons/solid/vector-square.svg diff --git a/client/src/static/icons/solid/venus-double.svg b/src/static/icons/solid/venus-double.svg similarity index 100% rename from client/src/static/icons/solid/venus-double.svg rename to src/static/icons/solid/venus-double.svg diff --git a/client/src/static/icons/solid/venus-mars.svg b/src/static/icons/solid/venus-mars.svg similarity index 100% rename from client/src/static/icons/solid/venus-mars.svg rename to src/static/icons/solid/venus-mars.svg diff --git a/client/src/static/icons/solid/venus.svg b/src/static/icons/solid/venus.svg similarity index 100% rename from client/src/static/icons/solid/venus.svg rename to src/static/icons/solid/venus.svg diff --git a/client/src/static/icons/solid/vhs.svg b/src/static/icons/solid/vhs.svg similarity index 100% rename from client/src/static/icons/solid/vhs.svg rename to src/static/icons/solid/vhs.svg diff --git a/client/src/static/icons/solid/vial.svg b/src/static/icons/solid/vial.svg similarity index 100% rename from client/src/static/icons/solid/vial.svg rename to src/static/icons/solid/vial.svg diff --git a/client/src/static/icons/solid/vials.svg b/src/static/icons/solid/vials.svg similarity index 100% rename from client/src/static/icons/solid/vials.svg rename to src/static/icons/solid/vials.svg diff --git a/client/src/static/icons/solid/video-plus.svg b/src/static/icons/solid/video-plus.svg similarity index 100% rename from client/src/static/icons/solid/video-plus.svg rename to src/static/icons/solid/video-plus.svg diff --git a/client/src/static/icons/solid/video-slash.svg b/src/static/icons/solid/video-slash.svg similarity index 100% rename from client/src/static/icons/solid/video-slash.svg rename to src/static/icons/solid/video-slash.svg diff --git a/client/src/static/icons/solid/video.svg b/src/static/icons/solid/video.svg similarity index 100% rename from client/src/static/icons/solid/video.svg rename to src/static/icons/solid/video.svg diff --git a/client/src/static/icons/solid/vihara.svg b/src/static/icons/solid/vihara.svg similarity index 100% rename from client/src/static/icons/solid/vihara.svg rename to src/static/icons/solid/vihara.svg diff --git a/client/src/static/icons/solid/violin.svg b/src/static/icons/solid/violin.svg similarity index 100% rename from client/src/static/icons/solid/violin.svg rename to src/static/icons/solid/violin.svg diff --git a/client/src/static/icons/solid/voicemail.svg b/src/static/icons/solid/voicemail.svg similarity index 100% rename from client/src/static/icons/solid/voicemail.svg rename to src/static/icons/solid/voicemail.svg diff --git a/client/src/static/icons/solid/volcano.svg b/src/static/icons/solid/volcano.svg similarity index 100% rename from client/src/static/icons/solid/volcano.svg rename to src/static/icons/solid/volcano.svg diff --git a/client/src/static/icons/solid/volleyball-ball.svg b/src/static/icons/solid/volleyball-ball.svg similarity index 100% rename from client/src/static/icons/solid/volleyball-ball.svg rename to src/static/icons/solid/volleyball-ball.svg diff --git a/client/src/static/icons/solid/volume-down.svg b/src/static/icons/solid/volume-down.svg similarity index 100% rename from client/src/static/icons/solid/volume-down.svg rename to src/static/icons/solid/volume-down.svg diff --git a/client/src/static/icons/solid/volume-mute.svg b/src/static/icons/solid/volume-mute.svg similarity index 100% rename from client/src/static/icons/solid/volume-mute.svg rename to src/static/icons/solid/volume-mute.svg diff --git a/client/src/static/icons/solid/volume-off.svg b/src/static/icons/solid/volume-off.svg similarity index 100% rename from client/src/static/icons/solid/volume-off.svg rename to src/static/icons/solid/volume-off.svg diff --git a/client/src/static/icons/solid/volume-slash.svg b/src/static/icons/solid/volume-slash.svg similarity index 100% rename from client/src/static/icons/solid/volume-slash.svg rename to src/static/icons/solid/volume-slash.svg diff --git a/client/src/static/icons/solid/volume-up.svg b/src/static/icons/solid/volume-up.svg similarity index 100% rename from client/src/static/icons/solid/volume-up.svg rename to src/static/icons/solid/volume-up.svg diff --git a/client/src/static/icons/solid/volume.svg b/src/static/icons/solid/volume.svg similarity index 100% rename from client/src/static/icons/solid/volume.svg rename to src/static/icons/solid/volume.svg diff --git a/client/src/static/icons/solid/vote-nay.svg b/src/static/icons/solid/vote-nay.svg similarity index 100% rename from client/src/static/icons/solid/vote-nay.svg rename to src/static/icons/solid/vote-nay.svg diff --git a/client/src/static/icons/solid/vote-yea.svg b/src/static/icons/solid/vote-yea.svg similarity index 100% rename from client/src/static/icons/solid/vote-yea.svg rename to src/static/icons/solid/vote-yea.svg diff --git a/client/src/static/icons/solid/vr-cardboard.svg b/src/static/icons/solid/vr-cardboard.svg similarity index 100% rename from client/src/static/icons/solid/vr-cardboard.svg rename to src/static/icons/solid/vr-cardboard.svg diff --git a/client/src/static/icons/solid/wagon-covered.svg b/src/static/icons/solid/wagon-covered.svg similarity index 100% rename from client/src/static/icons/solid/wagon-covered.svg rename to src/static/icons/solid/wagon-covered.svg diff --git a/client/src/static/icons/solid/walker.svg b/src/static/icons/solid/walker.svg similarity index 100% rename from client/src/static/icons/solid/walker.svg rename to src/static/icons/solid/walker.svg diff --git a/client/src/static/icons/solid/walkie-talkie.svg b/src/static/icons/solid/walkie-talkie.svg similarity index 100% rename from client/src/static/icons/solid/walkie-talkie.svg rename to src/static/icons/solid/walkie-talkie.svg diff --git a/client/src/static/icons/solid/walking.svg b/src/static/icons/solid/walking.svg similarity index 100% rename from client/src/static/icons/solid/walking.svg rename to src/static/icons/solid/walking.svg diff --git a/client/src/static/icons/solid/wallet.svg b/src/static/icons/solid/wallet.svg similarity index 100% rename from client/src/static/icons/solid/wallet.svg rename to src/static/icons/solid/wallet.svg diff --git a/client/src/static/icons/solid/wand-magic.svg b/src/static/icons/solid/wand-magic.svg similarity index 100% rename from client/src/static/icons/solid/wand-magic.svg rename to src/static/icons/solid/wand-magic.svg diff --git a/client/src/static/icons/solid/wand.svg b/src/static/icons/solid/wand.svg similarity index 100% rename from client/src/static/icons/solid/wand.svg rename to src/static/icons/solid/wand.svg diff --git a/client/src/static/icons/solid/warehouse-alt.svg b/src/static/icons/solid/warehouse-alt.svg similarity index 100% rename from client/src/static/icons/solid/warehouse-alt.svg rename to src/static/icons/solid/warehouse-alt.svg diff --git a/client/src/static/icons/solid/warehouse.svg b/src/static/icons/solid/warehouse.svg similarity index 100% rename from client/src/static/icons/solid/warehouse.svg rename to src/static/icons/solid/warehouse.svg diff --git a/client/src/static/icons/solid/washer.svg b/src/static/icons/solid/washer.svg similarity index 100% rename from client/src/static/icons/solid/washer.svg rename to src/static/icons/solid/washer.svg diff --git a/client/src/static/icons/solid/watch-calculator.svg b/src/static/icons/solid/watch-calculator.svg similarity index 100% rename from client/src/static/icons/solid/watch-calculator.svg rename to src/static/icons/solid/watch-calculator.svg diff --git a/client/src/static/icons/solid/watch-fitness.svg b/src/static/icons/solid/watch-fitness.svg similarity index 100% rename from client/src/static/icons/solid/watch-fitness.svg rename to src/static/icons/solid/watch-fitness.svg diff --git a/client/src/static/icons/solid/watch.svg b/src/static/icons/solid/watch.svg similarity index 100% rename from client/src/static/icons/solid/watch.svg rename to src/static/icons/solid/watch.svg diff --git a/client/src/static/icons/solid/water-lower.svg b/src/static/icons/solid/water-lower.svg similarity index 100% rename from client/src/static/icons/solid/water-lower.svg rename to src/static/icons/solid/water-lower.svg diff --git a/client/src/static/icons/solid/water-rise.svg b/src/static/icons/solid/water-rise.svg similarity index 100% rename from client/src/static/icons/solid/water-rise.svg rename to src/static/icons/solid/water-rise.svg diff --git a/client/src/static/icons/solid/water.svg b/src/static/icons/solid/water.svg similarity index 100% rename from client/src/static/icons/solid/water.svg rename to src/static/icons/solid/water.svg diff --git a/client/src/static/icons/solid/wave-sine.svg b/src/static/icons/solid/wave-sine.svg similarity index 100% rename from client/src/static/icons/solid/wave-sine.svg rename to src/static/icons/solid/wave-sine.svg diff --git a/client/src/static/icons/solid/wave-square.svg b/src/static/icons/solid/wave-square.svg similarity index 100% rename from client/src/static/icons/solid/wave-square.svg rename to src/static/icons/solid/wave-square.svg diff --git a/client/src/static/icons/solid/wave-triangle.svg b/src/static/icons/solid/wave-triangle.svg similarity index 100% rename from client/src/static/icons/solid/wave-triangle.svg rename to src/static/icons/solid/wave-triangle.svg diff --git a/client/src/static/icons/solid/waveform-path.svg b/src/static/icons/solid/waveform-path.svg similarity index 100% rename from client/src/static/icons/solid/waveform-path.svg rename to src/static/icons/solid/waveform-path.svg diff --git a/client/src/static/icons/solid/waveform.svg b/src/static/icons/solid/waveform.svg similarity index 100% rename from client/src/static/icons/solid/waveform.svg rename to src/static/icons/solid/waveform.svg diff --git a/client/src/static/icons/solid/webcam-slash.svg b/src/static/icons/solid/webcam-slash.svg similarity index 100% rename from client/src/static/icons/solid/webcam-slash.svg rename to src/static/icons/solid/webcam-slash.svg diff --git a/client/src/static/icons/solid/webcam.svg b/src/static/icons/solid/webcam.svg similarity index 100% rename from client/src/static/icons/solid/webcam.svg rename to src/static/icons/solid/webcam.svg diff --git a/client/src/static/icons/solid/weight-hanging.svg b/src/static/icons/solid/weight-hanging.svg similarity index 100% rename from client/src/static/icons/solid/weight-hanging.svg rename to src/static/icons/solid/weight-hanging.svg diff --git a/client/src/static/icons/solid/weight.svg b/src/static/icons/solid/weight.svg similarity index 100% rename from client/src/static/icons/solid/weight.svg rename to src/static/icons/solid/weight.svg diff --git a/client/src/static/icons/solid/whale.svg b/src/static/icons/solid/whale.svg similarity index 100% rename from client/src/static/icons/solid/whale.svg rename to src/static/icons/solid/whale.svg diff --git a/client/src/static/icons/solid/wheat.svg b/src/static/icons/solid/wheat.svg similarity index 100% rename from client/src/static/icons/solid/wheat.svg rename to src/static/icons/solid/wheat.svg diff --git a/client/src/static/icons/solid/wheelchair.svg b/src/static/icons/solid/wheelchair.svg similarity index 100% rename from client/src/static/icons/solid/wheelchair.svg rename to src/static/icons/solid/wheelchair.svg diff --git a/client/src/static/icons/solid/whistle.svg b/src/static/icons/solid/whistle.svg similarity index 100% rename from client/src/static/icons/solid/whistle.svg rename to src/static/icons/solid/whistle.svg diff --git a/client/src/static/icons/solid/wifi-1.svg b/src/static/icons/solid/wifi-1.svg similarity index 100% rename from client/src/static/icons/solid/wifi-1.svg rename to src/static/icons/solid/wifi-1.svg diff --git a/client/src/static/icons/solid/wifi-2.svg b/src/static/icons/solid/wifi-2.svg similarity index 100% rename from client/src/static/icons/solid/wifi-2.svg rename to src/static/icons/solid/wifi-2.svg diff --git a/client/src/static/icons/solid/wifi-slash.svg b/src/static/icons/solid/wifi-slash.svg similarity index 100% rename from client/src/static/icons/solid/wifi-slash.svg rename to src/static/icons/solid/wifi-slash.svg diff --git a/client/src/static/icons/solid/wifi.svg b/src/static/icons/solid/wifi.svg similarity index 100% rename from client/src/static/icons/solid/wifi.svg rename to src/static/icons/solid/wifi.svg diff --git a/client/src/static/icons/solid/wind-turbine.svg b/src/static/icons/solid/wind-turbine.svg similarity index 100% rename from client/src/static/icons/solid/wind-turbine.svg rename to src/static/icons/solid/wind-turbine.svg diff --git a/client/src/static/icons/solid/wind-warning.svg b/src/static/icons/solid/wind-warning.svg similarity index 100% rename from client/src/static/icons/solid/wind-warning.svg rename to src/static/icons/solid/wind-warning.svg diff --git a/client/src/static/icons/solid/wind.svg b/src/static/icons/solid/wind.svg similarity index 100% rename from client/src/static/icons/solid/wind.svg rename to src/static/icons/solid/wind.svg diff --git a/client/src/static/icons/solid/window-alt.svg b/src/static/icons/solid/window-alt.svg similarity index 100% rename from client/src/static/icons/solid/window-alt.svg rename to src/static/icons/solid/window-alt.svg diff --git a/client/src/static/icons/solid/window-close.svg b/src/static/icons/solid/window-close.svg similarity index 100% rename from client/src/static/icons/solid/window-close.svg rename to src/static/icons/solid/window-close.svg diff --git a/client/src/static/icons/solid/window-frame-open.svg b/src/static/icons/solid/window-frame-open.svg similarity index 100% rename from client/src/static/icons/solid/window-frame-open.svg rename to src/static/icons/solid/window-frame-open.svg diff --git a/client/src/static/icons/solid/window-frame.svg b/src/static/icons/solid/window-frame.svg similarity index 100% rename from client/src/static/icons/solid/window-frame.svg rename to src/static/icons/solid/window-frame.svg diff --git a/client/src/static/icons/solid/window-maximize.svg b/src/static/icons/solid/window-maximize.svg similarity index 100% rename from client/src/static/icons/solid/window-maximize.svg rename to src/static/icons/solid/window-maximize.svg diff --git a/client/src/static/icons/solid/window-minimize.svg b/src/static/icons/solid/window-minimize.svg similarity index 100% rename from client/src/static/icons/solid/window-minimize.svg rename to src/static/icons/solid/window-minimize.svg diff --git a/client/src/static/icons/solid/window-restore.svg b/src/static/icons/solid/window-restore.svg similarity index 100% rename from client/src/static/icons/solid/window-restore.svg rename to src/static/icons/solid/window-restore.svg diff --git a/client/src/static/icons/solid/window.svg b/src/static/icons/solid/window.svg similarity index 100% rename from client/src/static/icons/solid/window.svg rename to src/static/icons/solid/window.svg diff --git a/client/src/static/icons/solid/windsock.svg b/src/static/icons/solid/windsock.svg similarity index 100% rename from client/src/static/icons/solid/windsock.svg rename to src/static/icons/solid/windsock.svg diff --git a/client/src/static/icons/solid/wine-bottle.svg b/src/static/icons/solid/wine-bottle.svg similarity index 100% rename from client/src/static/icons/solid/wine-bottle.svg rename to src/static/icons/solid/wine-bottle.svg diff --git a/client/src/static/icons/solid/wine-glass-alt.svg b/src/static/icons/solid/wine-glass-alt.svg similarity index 100% rename from client/src/static/icons/solid/wine-glass-alt.svg rename to src/static/icons/solid/wine-glass-alt.svg diff --git a/client/src/static/icons/solid/wine-glass.svg b/src/static/icons/solid/wine-glass.svg similarity index 100% rename from client/src/static/icons/solid/wine-glass.svg rename to src/static/icons/solid/wine-glass.svg diff --git a/client/src/static/icons/solid/won-sign.svg b/src/static/icons/solid/won-sign.svg similarity index 100% rename from client/src/static/icons/solid/won-sign.svg rename to src/static/icons/solid/won-sign.svg diff --git a/client/src/static/icons/solid/wreath.svg b/src/static/icons/solid/wreath.svg similarity index 100% rename from client/src/static/icons/solid/wreath.svg rename to src/static/icons/solid/wreath.svg diff --git a/client/src/static/icons/solid/wrench.svg b/src/static/icons/solid/wrench.svg similarity index 100% rename from client/src/static/icons/solid/wrench.svg rename to src/static/icons/solid/wrench.svg diff --git a/client/src/static/icons/solid/x-ray.svg b/src/static/icons/solid/x-ray.svg similarity index 100% rename from client/src/static/icons/solid/x-ray.svg rename to src/static/icons/solid/x-ray.svg diff --git a/client/src/static/icons/solid/yen-sign.svg b/src/static/icons/solid/yen-sign.svg similarity index 100% rename from client/src/static/icons/solid/yen-sign.svg rename to src/static/icons/solid/yen-sign.svg diff --git a/client/src/static/icons/solid/yin-yang.svg b/src/static/icons/solid/yin-yang.svg similarity index 100% rename from client/src/static/icons/solid/yin-yang.svg rename to src/static/icons/solid/yin-yang.svg diff --git a/client/src/static/json/icons.js b/src/static/json/icons.js similarity index 100% rename from client/src/static/json/icons.js rename to src/static/json/icons.js diff --git a/client/src/store/Bills/bills.actions.js b/src/store/Bills/bills.actions.js similarity index 100% rename from client/src/store/Bills/bills.actions.js rename to src/store/Bills/bills.actions.js diff --git a/client/src/store/Bills/bills.reducer.js b/src/store/Bills/bills.reducer.js similarity index 100% rename from client/src/store/Bills/bills.reducer.js rename to src/store/Bills/bills.reducer.js diff --git a/client/src/store/Bills/bills.selectors.js b/src/store/Bills/bills.selectors.js similarity index 100% rename from client/src/store/Bills/bills.selectors.js rename to src/store/Bills/bills.selectors.js diff --git a/client/src/store/Bills/bills.type.js b/src/store/Bills/bills.type.js similarity index 100% rename from client/src/store/Bills/bills.type.js rename to src/store/Bills/bills.type.js diff --git a/client/src/store/Estimate/estimates.actions.js b/src/store/Estimate/estimates.actions.js similarity index 100% rename from client/src/store/Estimate/estimates.actions.js rename to src/store/Estimate/estimates.actions.js diff --git a/client/src/store/Estimate/estimates.reducer.js b/src/store/Estimate/estimates.reducer.js similarity index 100% rename from client/src/store/Estimate/estimates.reducer.js rename to src/store/Estimate/estimates.reducer.js diff --git a/client/src/store/Estimate/estimates.selectors.js b/src/store/Estimate/estimates.selectors.js similarity index 100% rename from client/src/store/Estimate/estimates.selectors.js rename to src/store/Estimate/estimates.selectors.js diff --git a/client/src/store/Estimate/estimates.types.js b/src/store/Estimate/estimates.types.js similarity index 100% rename from client/src/store/Estimate/estimates.types.js rename to src/store/Estimate/estimates.types.js diff --git a/client/src/store/ExchangeRate/exchange.actions.js b/src/store/ExchangeRate/exchange.actions.js similarity index 100% rename from client/src/store/ExchangeRate/exchange.actions.js rename to src/store/ExchangeRate/exchange.actions.js diff --git a/client/src/store/ExchangeRate/exchange.reducer.js b/src/store/ExchangeRate/exchange.reducer.js similarity index 100% rename from client/src/store/ExchangeRate/exchange.reducer.js rename to src/store/ExchangeRate/exchange.reducer.js diff --git a/client/src/store/ExchangeRate/exchange.selector.js b/src/store/ExchangeRate/exchange.selector.js similarity index 100% rename from client/src/store/ExchangeRate/exchange.selector.js rename to src/store/ExchangeRate/exchange.selector.js diff --git a/client/src/store/ExchangeRate/exchange.type.js b/src/store/ExchangeRate/exchange.type.js similarity index 100% rename from client/src/store/ExchangeRate/exchange.type.js rename to src/store/ExchangeRate/exchange.type.js diff --git a/client/src/store/Invoice/invoices.actions.js b/src/store/Invoice/invoices.actions.js similarity index 100% rename from client/src/store/Invoice/invoices.actions.js rename to src/store/Invoice/invoices.actions.js diff --git a/client/src/store/Invoice/invoices.reducer.js b/src/store/Invoice/invoices.reducer.js similarity index 100% rename from client/src/store/Invoice/invoices.reducer.js rename to src/store/Invoice/invoices.reducer.js diff --git a/client/src/store/Invoice/invoices.selector.js b/src/store/Invoice/invoices.selector.js similarity index 100% rename from client/src/store/Invoice/invoices.selector.js rename to src/store/Invoice/invoices.selector.js diff --git a/client/src/store/Invoice/invoices.types.js b/src/store/Invoice/invoices.types.js similarity index 100% rename from client/src/store/Invoice/invoices.types.js rename to src/store/Invoice/invoices.types.js diff --git a/client/src/store/PaymentMades/paymentMades.actions.js b/src/store/PaymentMades/paymentMades.actions.js similarity index 100% rename from client/src/store/PaymentMades/paymentMades.actions.js rename to src/store/PaymentMades/paymentMades.actions.js diff --git a/client/src/store/PaymentMades/paymentMades.reducer.js b/src/store/PaymentMades/paymentMades.reducer.js similarity index 100% rename from client/src/store/PaymentMades/paymentMades.reducer.js rename to src/store/PaymentMades/paymentMades.reducer.js diff --git a/client/src/store/PaymentMades/paymentMades.selector.js b/src/store/PaymentMades/paymentMades.selector.js similarity index 100% rename from client/src/store/PaymentMades/paymentMades.selector.js rename to src/store/PaymentMades/paymentMades.selector.js diff --git a/client/src/store/PaymentMades/paymentMades.type.js b/src/store/PaymentMades/paymentMades.type.js similarity index 100% rename from client/src/store/PaymentMades/paymentMades.type.js rename to src/store/PaymentMades/paymentMades.type.js diff --git a/client/src/store/PaymentReceives/paymentReceives.actions.js b/src/store/PaymentReceives/paymentReceives.actions.js similarity index 100% rename from client/src/store/PaymentReceives/paymentReceives.actions.js rename to src/store/PaymentReceives/paymentReceives.actions.js diff --git a/client/src/store/PaymentReceives/paymentReceives.reducer.js b/src/store/PaymentReceives/paymentReceives.reducer.js similarity index 100% rename from client/src/store/PaymentReceives/paymentReceives.reducer.js rename to src/store/PaymentReceives/paymentReceives.reducer.js diff --git a/client/src/store/PaymentReceives/paymentReceives.selector.js b/src/store/PaymentReceives/paymentReceives.selector.js similarity index 100% rename from client/src/store/PaymentReceives/paymentReceives.selector.js rename to src/store/PaymentReceives/paymentReceives.selector.js diff --git a/client/src/store/PaymentReceives/paymentReceives.type.js b/src/store/PaymentReceives/paymentReceives.type.js similarity index 100% rename from client/src/store/PaymentReceives/paymentReceives.type.js rename to src/store/PaymentReceives/paymentReceives.type.js diff --git a/client/src/store/ResetMiddleware.js b/src/store/ResetMiddleware.js similarity index 100% rename from client/src/store/ResetMiddleware.js rename to src/store/ResetMiddleware.js diff --git a/client/src/store/accounts/accounts.actions.js b/src/store/accounts/accounts.actions.js similarity index 100% rename from client/src/store/accounts/accounts.actions.js rename to src/store/accounts/accounts.actions.js diff --git a/client/src/store/accounts/accounts.reducer.js b/src/store/accounts/accounts.reducer.js similarity index 100% rename from client/src/store/accounts/accounts.reducer.js rename to src/store/accounts/accounts.reducer.js diff --git a/client/src/store/accounts/accounts.selectors.js b/src/store/accounts/accounts.selectors.js similarity index 100% rename from client/src/store/accounts/accounts.selectors.js rename to src/store/accounts/accounts.selectors.js diff --git a/client/src/store/accounts/accounts.types.js b/src/store/accounts/accounts.types.js similarity index 100% rename from client/src/store/accounts/accounts.types.js rename to src/store/accounts/accounts.types.js diff --git a/client/src/store/authentication/authentication.actions.js b/src/store/authentication/authentication.actions.js similarity index 100% rename from client/src/store/authentication/authentication.actions.js rename to src/store/authentication/authentication.actions.js diff --git a/client/src/store/authentication/authentication.reducer.js b/src/store/authentication/authentication.reducer.js similarity index 100% rename from client/src/store/authentication/authentication.reducer.js rename to src/store/authentication/authentication.reducer.js diff --git a/client/src/store/authentication/authentication.selectors.js b/src/store/authentication/authentication.selectors.js similarity index 100% rename from client/src/store/authentication/authentication.selectors.js rename to src/store/authentication/authentication.selectors.js diff --git a/client/src/store/authentication/authentication.types.js b/src/store/authentication/authentication.types.js similarity index 100% rename from client/src/store/authentication/authentication.types.js rename to src/store/authentication/authentication.types.js diff --git a/client/src/store/billing/Billing.action.js b/src/store/billing/Billing.action.js similarity index 100% rename from client/src/store/billing/Billing.action.js rename to src/store/billing/Billing.action.js diff --git a/client/src/store/billing/Billing.type.js b/src/store/billing/Billing.type.js similarity index 100% rename from client/src/store/billing/Billing.type.js rename to src/store/billing/Billing.type.js diff --git a/client/src/store/createStore.js b/src/store/createStore.js similarity index 100% rename from client/src/store/createStore.js rename to src/store/createStore.js diff --git a/client/src/store/currencies/currencies.actions.js b/src/store/currencies/currencies.actions.js similarity index 100% rename from client/src/store/currencies/currencies.actions.js rename to src/store/currencies/currencies.actions.js diff --git a/client/src/store/currencies/currencies.reducer.js b/src/store/currencies/currencies.reducer.js similarity index 100% rename from client/src/store/currencies/currencies.reducer.js rename to src/store/currencies/currencies.reducer.js diff --git a/client/src/store/currencies/currencies.selector.js b/src/store/currencies/currencies.selector.js similarity index 100% rename from client/src/store/currencies/currencies.selector.js rename to src/store/currencies/currencies.selector.js diff --git a/client/src/store/currencies/currencies.types.js b/src/store/currencies/currencies.types.js similarity index 100% rename from client/src/store/currencies/currencies.types.js rename to src/store/currencies/currencies.types.js diff --git a/client/src/store/customFields/customFields.actions.js b/src/store/customFields/customFields.actions.js similarity index 100% rename from client/src/store/customFields/customFields.actions.js rename to src/store/customFields/customFields.actions.js diff --git a/client/src/store/customFields/customFields.reducer.js b/src/store/customFields/customFields.reducer.js similarity index 100% rename from client/src/store/customFields/customFields.reducer.js rename to src/store/customFields/customFields.reducer.js diff --git a/client/src/store/customFields/customFields.types.js b/src/store/customFields/customFields.types.js similarity index 100% rename from client/src/store/customFields/customFields.types.js rename to src/store/customFields/customFields.types.js diff --git a/client/src/store/customViews/customViews.actions.js b/src/store/customViews/customViews.actions.js similarity index 100% rename from client/src/store/customViews/customViews.actions.js rename to src/store/customViews/customViews.actions.js diff --git a/client/src/store/customViews/customViews.reducer.js b/src/store/customViews/customViews.reducer.js similarity index 100% rename from client/src/store/customViews/customViews.reducer.js rename to src/store/customViews/customViews.reducer.js diff --git a/client/src/store/customViews/customViews.selectors.js b/src/store/customViews/customViews.selectors.js similarity index 100% rename from client/src/store/customViews/customViews.selectors.js rename to src/store/customViews/customViews.selectors.js diff --git a/client/src/store/customViews/customViews.types.js b/src/store/customViews/customViews.types.js similarity index 100% rename from client/src/store/customViews/customViews.types.js rename to src/store/customViews/customViews.types.js diff --git a/client/src/store/customers/customers.actions.js b/src/store/customers/customers.actions.js similarity index 100% rename from client/src/store/customers/customers.actions.js rename to src/store/customers/customers.actions.js diff --git a/client/src/store/customers/customers.reducer.js b/src/store/customers/customers.reducer.js similarity index 100% rename from client/src/store/customers/customers.reducer.js rename to src/store/customers/customers.reducer.js diff --git a/client/src/store/customers/customers.selectors.js b/src/store/customers/customers.selectors.js similarity index 100% rename from client/src/store/customers/customers.selectors.js rename to src/store/customers/customers.selectors.js diff --git a/client/src/store/customers/customers.type.js b/src/store/customers/customers.type.js similarity index 100% rename from client/src/store/customers/customers.type.js rename to src/store/customers/customers.type.js diff --git a/client/src/store/dashboard/dashboard.actions.js b/src/store/dashboard/dashboard.actions.js similarity index 100% rename from client/src/store/dashboard/dashboard.actions.js rename to src/store/dashboard/dashboard.actions.js diff --git a/client/src/store/dashboard/dashboard.reducer.js b/src/store/dashboard/dashboard.reducer.js similarity index 100% rename from client/src/store/dashboard/dashboard.reducer.js rename to src/store/dashboard/dashboard.reducer.js diff --git a/client/src/store/dashboard/dashboard.selectors.js b/src/store/dashboard/dashboard.selectors.js similarity index 100% rename from client/src/store/dashboard/dashboard.selectors.js rename to src/store/dashboard/dashboard.selectors.js diff --git a/client/src/store/dashboard/dashboard.types.js b/src/store/dashboard/dashboard.types.js similarity index 100% rename from client/src/store/dashboard/dashboard.types.js rename to src/store/dashboard/dashboard.types.js diff --git a/client/src/store/enhancers/monitorReducer.js b/src/store/enhancers/monitorReducer.js similarity index 100% rename from client/src/store/enhancers/monitorReducer.js rename to src/store/enhancers/monitorReducer.js diff --git a/client/src/store/expenses/expenses.actions.js b/src/store/expenses/expenses.actions.js similarity index 100% rename from client/src/store/expenses/expenses.actions.js rename to src/store/expenses/expenses.actions.js diff --git a/client/src/store/expenses/expenses.reducer.js b/src/store/expenses/expenses.reducer.js similarity index 100% rename from client/src/store/expenses/expenses.reducer.js rename to src/store/expenses/expenses.reducer.js diff --git a/client/src/store/expenses/expenses.selectors.js b/src/store/expenses/expenses.selectors.js similarity index 100% rename from client/src/store/expenses/expenses.selectors.js rename to src/store/expenses/expenses.selectors.js diff --git a/client/src/store/expenses/expenses.types.js b/src/store/expenses/expenses.types.js similarity index 100% rename from client/src/store/expenses/expenses.types.js rename to src/store/expenses/expenses.types.js diff --git a/client/src/store/financialStatement/financialStatements.actions.js b/src/store/financialStatement/financialStatements.actions.js similarity index 100% rename from client/src/store/financialStatement/financialStatements.actions.js rename to src/store/financialStatement/financialStatements.actions.js diff --git a/client/src/store/financialStatement/financialStatements.mappers.js b/src/store/financialStatement/financialStatements.mappers.js similarity index 100% rename from client/src/store/financialStatement/financialStatements.mappers.js rename to src/store/financialStatement/financialStatements.mappers.js diff --git a/client/src/store/financialStatement/financialStatements.reducer.js b/src/store/financialStatement/financialStatements.reducer.js similarity index 100% rename from client/src/store/financialStatement/financialStatements.reducer.js rename to src/store/financialStatement/financialStatements.reducer.js diff --git a/client/src/store/financialStatement/financialStatements.selectors.js b/src/store/financialStatement/financialStatements.selectors.js similarity index 100% rename from client/src/store/financialStatement/financialStatements.selectors.js rename to src/store/financialStatement/financialStatements.selectors.js diff --git a/client/src/store/financialStatement/financialStatements.types.js b/src/store/financialStatement/financialStatements.types.js similarity index 100% rename from client/src/store/financialStatement/financialStatements.types.js rename to src/store/financialStatement/financialStatements.types.js diff --git a/client/src/store/globalErrors/globalErrors.actions.js b/src/store/globalErrors/globalErrors.actions.js similarity index 100% rename from client/src/store/globalErrors/globalErrors.actions.js rename to src/store/globalErrors/globalErrors.actions.js diff --git a/client/src/store/globalErrors/globalErrors.reducer.js b/src/store/globalErrors/globalErrors.reducer.js similarity index 100% rename from client/src/store/globalErrors/globalErrors.reducer.js rename to src/store/globalErrors/globalErrors.reducer.js diff --git a/client/src/store/inventoryAdjustments/inventoryAdjustment.actions.js b/src/store/inventoryAdjustments/inventoryAdjustment.actions.js similarity index 100% rename from client/src/store/inventoryAdjustments/inventoryAdjustment.actions.js rename to src/store/inventoryAdjustments/inventoryAdjustment.actions.js diff --git a/client/src/store/inventoryAdjustments/inventoryAdjustment.reducer.js b/src/store/inventoryAdjustments/inventoryAdjustment.reducer.js similarity index 100% rename from client/src/store/inventoryAdjustments/inventoryAdjustment.reducer.js rename to src/store/inventoryAdjustments/inventoryAdjustment.reducer.js diff --git a/client/src/store/inventoryAdjustments/inventoryAdjustment.selector.js b/src/store/inventoryAdjustments/inventoryAdjustment.selector.js similarity index 100% rename from client/src/store/inventoryAdjustments/inventoryAdjustment.selector.js rename to src/store/inventoryAdjustments/inventoryAdjustment.selector.js diff --git a/client/src/store/inventoryAdjustments/inventoryAdjustment.type.js b/src/store/inventoryAdjustments/inventoryAdjustment.type.js similarity index 100% rename from client/src/store/inventoryAdjustments/inventoryAdjustment.type.js rename to src/store/inventoryAdjustments/inventoryAdjustment.type.js diff --git a/client/src/store/itemCategories/ItemsCategories.selectors.js b/src/store/itemCategories/ItemsCategories.selectors.js similarity index 100% rename from client/src/store/itemCategories/ItemsCategories.selectors.js rename to src/store/itemCategories/ItemsCategories.selectors.js diff --git a/client/src/store/itemCategories/itemsCategory.actions.js b/src/store/itemCategories/itemsCategory.actions.js similarity index 100% rename from client/src/store/itemCategories/itemsCategory.actions.js rename to src/store/itemCategories/itemsCategory.actions.js diff --git a/client/src/store/itemCategories/itemsCategory.reducer.js b/src/store/itemCategories/itemsCategory.reducer.js similarity index 100% rename from client/src/store/itemCategories/itemsCategory.reducer.js rename to src/store/itemCategories/itemsCategory.reducer.js diff --git a/client/src/store/itemCategories/itemsCategory.type.js b/src/store/itemCategories/itemsCategory.type.js similarity index 100% rename from client/src/store/itemCategories/itemsCategory.type.js rename to src/store/itemCategories/itemsCategory.type.js diff --git a/client/src/store/itemCategories/itemsCateory.reducer.js b/src/store/itemCategories/itemsCateory.reducer.js similarity index 100% rename from client/src/store/itemCategories/itemsCateory.reducer.js rename to src/store/itemCategories/itemsCateory.reducer.js diff --git a/client/src/store/items/items.actions.js b/src/store/items/items.actions.js similarity index 100% rename from client/src/store/items/items.actions.js rename to src/store/items/items.actions.js diff --git a/client/src/store/items/items.reducer.js b/src/store/items/items.reducer.js similarity index 100% rename from client/src/store/items/items.reducer.js rename to src/store/items/items.reducer.js diff --git a/client/src/store/items/items.selectors.js b/src/store/items/items.selectors.js similarity index 100% rename from client/src/store/items/items.selectors.js rename to src/store/items/items.selectors.js diff --git a/client/src/store/items/items.types.js b/src/store/items/items.types.js similarity index 100% rename from client/src/store/items/items.types.js rename to src/store/items/items.types.js diff --git a/client/src/store/journalNumber.reducer.js b/src/store/journalNumber.reducer.js similarity index 100% rename from client/src/store/journalNumber.reducer.js rename to src/store/journalNumber.reducer.js diff --git a/client/src/store/localStorage.js b/src/store/localStorage.js similarity index 100% rename from client/src/store/localStorage.js rename to src/store/localStorage.js diff --git a/client/src/store/manualJournals/manualJournals.actions.js b/src/store/manualJournals/manualJournals.actions.js similarity index 100% rename from client/src/store/manualJournals/manualJournals.actions.js rename to src/store/manualJournals/manualJournals.actions.js diff --git a/client/src/store/manualJournals/manualJournals.reducers.js b/src/store/manualJournals/manualJournals.reducers.js similarity index 100% rename from client/src/store/manualJournals/manualJournals.reducers.js rename to src/store/manualJournals/manualJournals.reducers.js diff --git a/client/src/store/manualJournals/manualJournals.selectors.js b/src/store/manualJournals/manualJournals.selectors.js similarity index 100% rename from client/src/store/manualJournals/manualJournals.selectors.js rename to src/store/manualJournals/manualJournals.selectors.js diff --git a/client/src/store/manualJournals/manualJournals.types.js b/src/store/manualJournals/manualJournals.types.js similarity index 100% rename from client/src/store/manualJournals/manualJournals.types.js rename to src/store/manualJournals/manualJournals.types.js diff --git a/client/src/store/media/media.actions.js b/src/store/media/media.actions.js similarity index 100% rename from client/src/store/media/media.actions.js rename to src/store/media/media.actions.js diff --git a/client/src/store/media/media.reducers.js b/src/store/media/media.reducers.js similarity index 100% rename from client/src/store/media/media.reducers.js rename to src/store/media/media.reducers.js diff --git a/client/src/store/media/media.types.js b/src/store/media/media.types.js similarity index 100% rename from client/src/store/media/media.types.js rename to src/store/media/media.types.js diff --git a/client/src/store/organizations/organizations.actions.js b/src/store/organizations/organizations.actions.js similarity index 100% rename from client/src/store/organizations/organizations.actions.js rename to src/store/organizations/organizations.actions.js diff --git a/client/src/store/organizations/organizations.reducers.js b/src/store/organizations/organizations.reducers.js similarity index 100% rename from client/src/store/organizations/organizations.reducers.js rename to src/store/organizations/organizations.reducers.js diff --git a/client/src/store/organizations/organizations.selectors.js b/src/store/organizations/organizations.selectors.js similarity index 100% rename from client/src/store/organizations/organizations.selectors.js rename to src/store/organizations/organizations.selectors.js diff --git a/client/src/store/organizations/organizations.types.js b/src/store/organizations/organizations.types.js similarity index 100% rename from client/src/store/organizations/organizations.types.js rename to src/store/organizations/organizations.types.js diff --git a/client/src/store/organizations/withSetupWizard.js b/src/store/organizations/withSetupWizard.js similarity index 100% rename from client/src/store/organizations/withSetupWizard.js rename to src/store/organizations/withSetupWizard.js diff --git a/client/src/store/paginator.reducer.js b/src/store/paginator.reducer.js similarity index 100% rename from client/src/store/paginator.reducer.js rename to src/store/paginator.reducer.js diff --git a/client/src/store/plans/plans.actions.js b/src/store/plans/plans.actions.js similarity index 100% rename from client/src/store/plans/plans.actions.js rename to src/store/plans/plans.actions.js diff --git a/client/src/store/plans/plans.reducer.js b/src/store/plans/plans.reducer.js similarity index 100% rename from client/src/store/plans/plans.reducer.js rename to src/store/plans/plans.reducer.js diff --git a/client/src/store/plans/plans.selectors.js b/src/store/plans/plans.selectors.js similarity index 100% rename from client/src/store/plans/plans.selectors.js rename to src/store/plans/plans.selectors.js diff --git a/client/src/store/plans/plans.types.js b/src/store/plans/plans.types.js similarity index 100% rename from client/src/store/plans/plans.types.js rename to src/store/plans/plans.types.js diff --git a/client/src/store/preferences/preferences.actions.js b/src/store/preferences/preferences.actions.js similarity index 100% rename from client/src/store/preferences/preferences.actions.js rename to src/store/preferences/preferences.actions.js diff --git a/client/src/store/preferences/preferences.reducer.js b/src/store/preferences/preferences.reducer.js similarity index 100% rename from client/src/store/preferences/preferences.reducer.js rename to src/store/preferences/preferences.reducer.js diff --git a/client/src/store/preferences/preferences.types.js b/src/store/preferences/preferences.types.js similarity index 100% rename from client/src/store/preferences/preferences.types.js rename to src/store/preferences/preferences.types.js diff --git a/client/src/store/queryReducers.js b/src/store/queryReducers.js similarity index 100% rename from client/src/store/queryReducers.js rename to src/store/queryReducers.js diff --git a/client/src/store/receipts/receipts.actions.js b/src/store/receipts/receipts.actions.js similarity index 100% rename from client/src/store/receipts/receipts.actions.js rename to src/store/receipts/receipts.actions.js diff --git a/client/src/store/receipts/receipts.reducer.js b/src/store/receipts/receipts.reducer.js similarity index 100% rename from client/src/store/receipts/receipts.reducer.js rename to src/store/receipts/receipts.reducer.js diff --git a/client/src/store/receipts/receipts.selector.js b/src/store/receipts/receipts.selector.js similarity index 100% rename from client/src/store/receipts/receipts.selector.js rename to src/store/receipts/receipts.selector.js diff --git a/client/src/store/receipts/receipts.type.js b/src/store/receipts/receipts.type.js similarity index 100% rename from client/src/store/receipts/receipts.type.js rename to src/store/receipts/receipts.type.js diff --git a/client/src/store/reducers.js b/src/store/reducers.js similarity index 100% rename from client/src/store/reducers.js rename to src/store/reducers.js diff --git a/client/src/store/registers/register.action.js b/src/store/registers/register.action.js similarity index 100% rename from client/src/store/registers/register.action.js rename to src/store/registers/register.action.js diff --git a/client/src/store/registers/register.reducer.js b/src/store/registers/register.reducer.js similarity index 100% rename from client/src/store/registers/register.reducer.js rename to src/store/registers/register.reducer.js diff --git a/client/src/store/registers/register.type.js b/src/store/registers/register.type.js similarity index 100% rename from client/src/store/registers/register.type.js rename to src/store/registers/register.type.js diff --git a/client/src/store/resetPassword/resetPassword.action.js b/src/store/resetPassword/resetPassword.action.js similarity index 100% rename from client/src/store/resetPassword/resetPassword.action.js rename to src/store/resetPassword/resetPassword.action.js diff --git a/client/src/store/resources/resource.types.js b/src/store/resources/resource.types.js similarity index 100% rename from client/src/store/resources/resource.types.js rename to src/store/resources/resource.types.js diff --git a/client/src/store/resources/resources.actions.js b/src/store/resources/resources.actions.js similarity index 100% rename from client/src/store/resources/resources.actions.js rename to src/store/resources/resources.actions.js diff --git a/client/src/store/resources/resources.reducer.js b/src/store/resources/resources.reducer.js similarity index 100% rename from client/src/store/resources/resources.reducer.js rename to src/store/resources/resources.reducer.js diff --git a/client/src/store/resources/resources.selectors.js b/src/store/resources/resources.selectors.js similarity index 100% rename from client/src/store/resources/resources.selectors.js rename to src/store/resources/resources.selectors.js diff --git a/client/src/store/search/search.actions.js b/src/store/search/search.actions.js similarity index 100% rename from client/src/store/search/search.actions.js rename to src/store/search/search.actions.js diff --git a/client/src/store/search/search.reducer.js b/src/store/search/search.reducer.js similarity index 100% rename from client/src/store/search/search.reducer.js rename to src/store/search/search.reducer.js diff --git a/client/src/store/search/search.type.js b/src/store/search/search.type.js similarity index 100% rename from client/src/store/search/search.type.js rename to src/store/search/search.type.js diff --git a/client/src/store/selectors.js b/src/store/selectors.js similarity index 100% rename from client/src/store/selectors.js rename to src/store/selectors.js diff --git a/client/src/store/settings/settings.actions.js b/src/store/settings/settings.actions.js similarity index 100% rename from client/src/store/settings/settings.actions.js rename to src/store/settings/settings.actions.js diff --git a/client/src/store/settings/settings.reducer.js b/src/store/settings/settings.reducer.js similarity index 100% rename from client/src/store/settings/settings.reducer.js rename to src/store/settings/settings.reducer.js diff --git a/client/src/store/settings/settings.selectors.js b/src/store/settings/settings.selectors.js similarity index 100% rename from client/src/store/settings/settings.selectors.js rename to src/store/settings/settings.selectors.js diff --git a/client/src/store/settings/settings.type.js b/src/store/settings/settings.type.js similarity index 100% rename from client/src/store/settings/settings.type.js rename to src/store/settings/settings.type.js diff --git a/client/src/store/subscription/subscription.actions.js b/src/store/subscription/subscription.actions.js similarity index 100% rename from client/src/store/subscription/subscription.actions.js rename to src/store/subscription/subscription.actions.js diff --git a/client/src/store/subscription/subscription.reducer.js b/src/store/subscription/subscription.reducer.js similarity index 100% rename from client/src/store/subscription/subscription.reducer.js rename to src/store/subscription/subscription.reducer.js diff --git a/client/src/store/subscription/subscription.selectors.js b/src/store/subscription/subscription.selectors.js similarity index 100% rename from client/src/store/subscription/subscription.selectors.js rename to src/store/subscription/subscription.selectors.js diff --git a/client/src/store/subscription/subscription.types.js b/src/store/subscription/subscription.types.js similarity index 100% rename from client/src/store/subscription/subscription.types.js rename to src/store/subscription/subscription.types.js diff --git a/client/src/store/tableState.reducer.js b/src/store/tableState.reducer.js similarity index 100% rename from client/src/store/tableState.reducer.js rename to src/store/tableState.reducer.js diff --git a/client/src/store/types.js b/src/store/types.js similarity index 100% rename from client/src/store/types.js rename to src/store/types.js diff --git a/client/src/store/users/users.actions.js b/src/store/users/users.actions.js similarity index 100% rename from client/src/store/users/users.actions.js rename to src/store/users/users.actions.js diff --git a/client/src/store/users/users.reducer.js b/src/store/users/users.reducer.js similarity index 100% rename from client/src/store/users/users.reducer.js rename to src/store/users/users.reducer.js diff --git a/client/src/store/users/users.selectors.js b/src/store/users/users.selectors.js similarity index 100% rename from client/src/store/users/users.selectors.js rename to src/store/users/users.selectors.js diff --git a/client/src/store/users/users.types.js b/src/store/users/users.types.js similarity index 100% rename from client/src/store/users/users.types.js rename to src/store/users/users.types.js diff --git a/client/src/store/vendors/vendors.actions.js b/src/store/vendors/vendors.actions.js similarity index 100% rename from client/src/store/vendors/vendors.actions.js rename to src/store/vendors/vendors.actions.js diff --git a/client/src/store/vendors/vendors.reducer.js b/src/store/vendors/vendors.reducer.js similarity index 100% rename from client/src/store/vendors/vendors.reducer.js rename to src/store/vendors/vendors.reducer.js diff --git a/client/src/store/vendors/vendors.selectors.js b/src/store/vendors/vendors.selectors.js similarity index 100% rename from client/src/store/vendors/vendors.selectors.js rename to src/store/vendors/vendors.selectors.js diff --git a/client/src/store/vendors/vendors.types.js b/src/store/vendors/vendors.types.js similarity index 100% rename from client/src/store/vendors/vendors.types.js rename to src/store/vendors/vendors.types.js diff --git a/client/src/style/App.scss b/src/style/App.scss similarity index 100% rename from client/src/style/App.scss rename to src/style/App.scss diff --git a/client/src/style/Base.scss b/src/style/Base.scss similarity index 100% rename from client/src/style/Base.scss rename to src/style/Base.scss diff --git a/client/src/style/components/Alert.scss b/src/style/components/Alert.scss similarity index 100% rename from client/src/style/components/Alert.scss rename to src/style/components/Alert.scss diff --git a/client/src/style/components/BigAmount.scss b/src/style/components/BigAmount.scss similarity index 100% rename from client/src/style/components/BigAmount.scss rename to src/style/components/BigAmount.scss diff --git a/client/src/style/components/BigcapitalLoading.scss b/src/style/components/BigcapitalLoading.scss similarity index 100% rename from client/src/style/components/BigcapitalLoading.scss rename to src/style/components/BigcapitalLoading.scss diff --git a/client/src/style/components/Card.scss b/src/style/components/Card.scss similarity index 100% rename from client/src/style/components/Card.scss rename to src/style/components/Card.scss diff --git a/client/src/style/components/CloudSpinner.scss b/src/style/components/CloudSpinner.scss similarity index 100% rename from client/src/style/components/CloudSpinner.scss rename to src/style/components/CloudSpinner.scss diff --git a/client/src/style/components/CustomScrollbar.scss b/src/style/components/CustomScrollbar.scss similarity index 100% rename from client/src/style/components/CustomScrollbar.scss rename to src/style/components/CustomScrollbar.scss diff --git a/client/src/style/components/DataTable/DataTable.scss b/src/style/components/DataTable/DataTable.scss similarity index 100% rename from client/src/style/components/DataTable/DataTable.scss rename to src/style/components/DataTable/DataTable.scss diff --git a/client/src/style/components/DataTable/DataTableEditable.scss b/src/style/components/DataTable/DataTableEditable.scss similarity index 100% rename from client/src/style/components/DataTable/DataTableEditable.scss rename to src/style/components/DataTable/DataTableEditable.scss diff --git a/client/src/style/components/DataTable/DataTableEmptyStatus.module.scss b/src/style/components/DataTable/DataTableEmptyStatus.module.scss similarity index 100% rename from client/src/style/components/DataTable/DataTableEmptyStatus.module.scss rename to src/style/components/DataTable/DataTableEmptyStatus.module.scss diff --git a/client/src/style/components/DataTable/Pagination.scss b/src/style/components/DataTable/Pagination.scss similarity index 100% rename from client/src/style/components/DataTable/Pagination.scss rename to src/style/components/DataTable/Pagination.scss diff --git a/client/src/style/components/Details.scss b/src/style/components/Details.scss similarity index 100% rename from client/src/style/components/Details.scss rename to src/style/components/Details.scss diff --git a/client/src/style/components/Dialog/Dialog.scss b/src/style/components/Dialog/Dialog.scss similarity index 100% rename from client/src/style/components/Dialog/Dialog.scss rename to src/style/components/Dialog/Dialog.scss diff --git a/client/src/style/components/Drawer.scss b/src/style/components/Drawer.scss similarity index 100% rename from client/src/style/components/Drawer.scss rename to src/style/components/Drawer.scss diff --git a/client/src/style/components/Drawers/AccountDrawer.scss b/src/style/components/Drawers/AccountDrawer.scss similarity index 100% rename from client/src/style/components/Drawers/AccountDrawer.scss rename to src/style/components/Drawers/AccountDrawer.scss diff --git a/client/src/style/components/Drawers/BillDrawer.module.scss b/src/style/components/Drawers/BillDrawer.module.scss similarity index 100% rename from client/src/style/components/Drawers/BillDrawer.module.scss rename to src/style/components/Drawers/BillDrawer.module.scss diff --git a/client/src/style/components/Drawers/DrawerTemplate.scss b/src/style/components/Drawers/DrawerTemplate.scss similarity index 100% rename from client/src/style/components/Drawers/DrawerTemplate.scss rename to src/style/components/Drawers/DrawerTemplate.scss diff --git a/client/src/style/components/Drawers/EstimateDetails.module.scss b/src/style/components/Drawers/EstimateDetails.module.scss similarity index 100% rename from client/src/style/components/Drawers/EstimateDetails.module.scss rename to src/style/components/Drawers/EstimateDetails.module.scss diff --git a/client/src/style/components/Drawers/ExpenseDrawer.scss b/src/style/components/Drawers/ExpenseDrawer.scss similarity index 100% rename from client/src/style/components/Drawers/ExpenseDrawer.scss rename to src/style/components/Drawers/ExpenseDrawer.scss diff --git a/client/src/style/components/Drawers/InventoryAdjustmentDrawer.module.scss b/src/style/components/Drawers/InventoryAdjustmentDrawer.module.scss similarity index 100% rename from client/src/style/components/Drawers/InventoryAdjustmentDrawer.module.scss rename to src/style/components/Drawers/InventoryAdjustmentDrawer.module.scss diff --git a/client/src/style/components/Drawers/InvoiceDrawer.module.scss b/src/style/components/Drawers/InvoiceDrawer.module.scss similarity index 100% rename from client/src/style/components/Drawers/InvoiceDrawer.module.scss rename to src/style/components/Drawers/InvoiceDrawer.module.scss diff --git a/client/src/style/components/Drawers/ItemDrawer.scss b/src/style/components/Drawers/ItemDrawer.scss similarity index 100% rename from client/src/style/components/Drawers/ItemDrawer.scss rename to src/style/components/Drawers/ItemDrawer.scss diff --git a/client/src/style/components/Drawers/ManualJournalDrawer.scss b/src/style/components/Drawers/ManualJournalDrawer.scss similarity index 100% rename from client/src/style/components/Drawers/ManualJournalDrawer.scss rename to src/style/components/Drawers/ManualJournalDrawer.scss diff --git a/client/src/style/components/Drawers/ReceiptDrawer.module.scss b/src/style/components/Drawers/ReceiptDrawer.module.scss similarity index 100% rename from client/src/style/components/Drawers/ReceiptDrawer.module.scss rename to src/style/components/Drawers/ReceiptDrawer.module.scss diff --git a/client/src/style/components/Drawers/ViewDetail/ViewDetail.scss b/src/style/components/Drawers/ViewDetail/ViewDetail.scss similarity index 100% rename from client/src/style/components/Drawers/ViewDetail/ViewDetail.scss rename to src/style/components/Drawers/ViewDetail/ViewDetail.scss diff --git a/client/src/style/components/Hint.scss b/src/style/components/Hint.scss similarity index 100% rename from client/src/style/components/Hint.scss rename to src/style/components/Hint.scss diff --git a/client/src/style/components/MaterialProgressBar.scss b/src/style/components/MaterialProgressBar.scss similarity index 100% rename from client/src/style/components/MaterialProgressBar.scss rename to src/style/components/MaterialProgressBar.scss diff --git a/client/src/style/components/Menu.scss b/src/style/components/Menu.scss similarity index 100% rename from client/src/style/components/Menu.scss rename to src/style/components/Menu.scss diff --git a/client/src/style/components/Overlay.scss b/src/style/components/Overlay.scss similarity index 100% rename from client/src/style/components/Overlay.scss rename to src/style/components/Overlay.scss diff --git a/client/src/style/components/PageForm.scss b/src/style/components/PageForm.scss similarity index 100% rename from client/src/style/components/PageForm.scss rename to src/style/components/PageForm.scss diff --git a/client/src/style/components/Postbox.scss b/src/style/components/Postbox.scss similarity index 100% rename from client/src/style/components/Postbox.scss rename to src/style/components/Postbox.scss diff --git a/client/src/style/components/SidebarOverlay.scss b/src/style/components/SidebarOverlay.scss similarity index 100% rename from client/src/style/components/SidebarOverlay.scss rename to src/style/components/SidebarOverlay.scss diff --git a/client/src/style/components/Skeleton.scss b/src/style/components/Skeleton.scss similarity index 100% rename from client/src/style/components/Skeleton.scss rename to src/style/components/Skeleton.scss diff --git a/client/src/style/components/Toast.scss b/src/style/components/Toast.scss similarity index 100% rename from client/src/style/components/Toast.scss rename to src/style/components/Toast.scss diff --git a/client/src/style/components/Tooltip.scss b/src/style/components/Tooltip.scss similarity index 100% rename from client/src/style/components/Tooltip.scss rename to src/style/components/Tooltip.scss diff --git a/client/src/style/components/UniversalSearch.scss b/src/style/components/UniversalSearch.scss similarity index 100% rename from client/src/style/components/UniversalSearch.scss rename to src/style/components/UniversalSearch.scss diff --git a/client/src/style/components/dragzone.scss b/src/style/components/dragzone.scss similarity index 100% rename from client/src/style/components/dragzone.scss rename to src/style/components/dragzone.scss diff --git a/client/src/style/components/resizer.scss b/src/style/components/resizer.scss similarity index 100% rename from client/src/style/components/resizer.scss rename to src/style/components/resizer.scss diff --git a/client/src/style/components/tabs.scss b/src/style/components/tabs.scss similarity index 100% rename from client/src/style/components/tabs.scss rename to src/style/components/tabs.scss diff --git a/client/src/style/containers/Dashboard/Sidebar.scss b/src/style/containers/Dashboard/Sidebar.scss similarity index 100% rename from client/src/style/containers/Dashboard/Sidebar.scss rename to src/style/containers/Dashboard/Sidebar.scss diff --git a/client/src/style/containers/FinancialStatements/DrawerHeader.scss b/src/style/containers/FinancialStatements/DrawerHeader.scss similarity index 100% rename from client/src/style/containers/FinancialStatements/DrawerHeader.scss rename to src/style/containers/FinancialStatements/DrawerHeader.scss diff --git a/client/src/style/containers/FinancialStatements/FinancialSheet.scss b/src/style/containers/FinancialStatements/FinancialSheet.scss similarity index 100% rename from client/src/style/containers/FinancialStatements/FinancialSheet.scss rename to src/style/containers/FinancialStatements/FinancialSheet.scss diff --git a/client/src/style/fonts/NotoSans-Black.woff b/src/style/fonts/NotoSans-Black.woff similarity index 100% rename from client/src/style/fonts/NotoSans-Black.woff rename to src/style/fonts/NotoSans-Black.woff diff --git a/client/src/style/fonts/NotoSans-Medium.woff b/src/style/fonts/NotoSans-Medium.woff similarity index 100% rename from client/src/style/fonts/NotoSans-Medium.woff rename to src/style/fonts/NotoSans-Medium.woff diff --git a/client/src/style/fonts/NotoSans-Regular.woff b/src/style/fonts/NotoSans-Regular.woff similarity index 100% rename from client/src/style/fonts/NotoSans-Regular.woff rename to src/style/fonts/NotoSans-Regular.woff diff --git a/client/src/style/fonts/NotoSans-SemiBold.woff b/src/style/fonts/NotoSans-SemiBold.woff similarity index 100% rename from client/src/style/fonts/NotoSans-SemiBold.woff rename to src/style/fonts/NotoSans-SemiBold.woff diff --git a/client/src/style/fonts/NotoSansArabicUI-SemiCondensed.woff b/src/style/fonts/NotoSansArabicUI-SemiCondensed.woff similarity index 100% rename from client/src/style/fonts/NotoSansArabicUI-SemiCondensed.woff rename to src/style/fonts/NotoSansArabicUI-SemiCondensed.woff diff --git a/client/src/style/fonts/NotoSansArabicUI-SemiCondensedBlack.woff b/src/style/fonts/NotoSansArabicUI-SemiCondensedBlack.woff similarity index 100% rename from client/src/style/fonts/NotoSansArabicUI-SemiCondensedBlack.woff rename to src/style/fonts/NotoSansArabicUI-SemiCondensedBlack.woff diff --git a/client/src/style/fonts/NotoSansArabicUI-SemiCondensedMedium.woff b/src/style/fonts/NotoSansArabicUI-SemiCondensedMedium.woff similarity index 100% rename from client/src/style/fonts/NotoSansArabicUI-SemiCondensedMedium.woff rename to src/style/fonts/NotoSansArabicUI-SemiCondensedMedium.woff diff --git a/client/src/style/fonts/NotoSansArabicUI-SemiCondensedSemiBold.woff b/src/style/fonts/NotoSansArabicUI-SemiCondensedSemiBold.woff similarity index 100% rename from client/src/style/fonts/NotoSansArabicUI-SemiCondensedSemiBold.woff rename to src/style/fonts/NotoSansArabicUI-SemiCondensedSemiBold.woff diff --git a/client/src/style/fonts/SegoeArabicUI-Bold.woff2 b/src/style/fonts/SegoeArabicUI-Bold.woff2 similarity index 100% rename from client/src/style/fonts/SegoeArabicUI-Bold.woff2 rename to src/style/fonts/SegoeArabicUI-Bold.woff2 diff --git a/client/src/style/fonts/SegoeArabicUI-Light.woff2 b/src/style/fonts/SegoeArabicUI-Light.woff2 similarity index 100% rename from client/src/style/fonts/SegoeArabicUI-Light.woff2 rename to src/style/fonts/SegoeArabicUI-Light.woff2 diff --git a/client/src/style/fonts/SegoeArabicUI-Regular.woff2 b/src/style/fonts/SegoeArabicUI-Regular.woff2 similarity index 100% rename from client/src/style/fonts/SegoeArabicUI-Regular.woff2 rename to src/style/fonts/SegoeArabicUI-Regular.woff2 diff --git a/client/src/style/fonts/SegoeArabicUI-SemiBold.woff2 b/src/style/fonts/SegoeArabicUI-SemiBold.woff2 similarity index 100% rename from client/src/style/fonts/SegoeArabicUI-SemiBold.woff2 rename to src/style/fonts/SegoeArabicUI-SemiBold.woff2 diff --git a/client/src/style/functions.scss b/src/style/functions.scss similarity index 100% rename from client/src/style/functions.scss rename to src/style/functions.scss diff --git a/client/src/style/normalize.scss b/src/style/normalize.scss similarity index 100% rename from client/src/style/normalize.scss rename to src/style/normalize.scss diff --git a/client/src/style/objects/Bigcapital.scss b/src/style/objects/Bigcapital.scss similarity index 100% rename from client/src/style/objects/Bigcapital.scss rename to src/style/objects/Bigcapital.scss diff --git a/client/src/style/objects/buttons.scss b/src/style/objects/buttons.scss similarity index 100% rename from client/src/style/objects/buttons.scss rename to src/style/objects/buttons.scss diff --git a/client/src/style/objects/form.scss b/src/style/objects/form.scss similarity index 100% rename from client/src/style/objects/form.scss rename to src/style/objects/form.scss diff --git a/client/src/style/objects/typography.scss b/src/style/objects/typography.scss similarity index 100% rename from client/src/style/objects/typography.scss rename to src/style/objects/typography.scss diff --git a/client/src/style/pages/Accounts/AccountFormDialog.scss b/src/style/pages/Accounts/AccountFormDialog.scss similarity index 100% rename from client/src/style/pages/Accounts/AccountFormDialog.scss rename to src/style/pages/Accounts/AccountFormDialog.scss diff --git a/client/src/style/pages/Accounts/List.scss b/src/style/pages/Accounts/List.scss similarity index 100% rename from client/src/style/pages/Accounts/List.scss rename to src/style/pages/Accounts/List.scss diff --git a/client/src/style/pages/AllocateLandedCost/AllocateLandedCostForm.scss b/src/style/pages/AllocateLandedCost/AllocateLandedCostForm.scss similarity index 100% rename from client/src/style/pages/AllocateLandedCost/AllocateLandedCostForm.scss rename to src/style/pages/AllocateLandedCost/AllocateLandedCostForm.scss diff --git a/client/src/style/pages/Authentication/Auth.scss b/src/style/pages/Authentication/Auth.scss similarity index 100% rename from client/src/style/pages/Authentication/Auth.scss rename to src/style/pages/Authentication/Auth.scss diff --git a/client/src/style/pages/Billing/BillingPage.scss b/src/style/pages/Billing/BillingPage.scss similarity index 100% rename from client/src/style/pages/Billing/BillingPage.scss rename to src/style/pages/Billing/BillingPage.scss diff --git a/client/src/style/pages/Bills/List.scss b/src/style/pages/Bills/List.scss similarity index 100% rename from client/src/style/pages/Bills/List.scss rename to src/style/pages/Bills/List.scss diff --git a/client/src/style/pages/Bills/PageForm.scss b/src/style/pages/Bills/PageForm.scss similarity index 100% rename from client/src/style/pages/Bills/PageForm.scss rename to src/style/pages/Bills/PageForm.scss diff --git a/client/src/style/pages/ContactDuplicate/ContactDuplicateDialog.scss b/src/style/pages/ContactDuplicate/ContactDuplicateDialog.scss similarity index 100% rename from client/src/style/pages/ContactDuplicate/ContactDuplicateDialog.scss rename to src/style/pages/ContactDuplicate/ContactDuplicateDialog.scss diff --git a/client/src/style/pages/Currency/CurrencyFormDialog.scss b/src/style/pages/Currency/CurrencyFormDialog.scss similarity index 100% rename from client/src/style/pages/Currency/CurrencyFormDialog.scss rename to src/style/pages/Currency/CurrencyFormDialog.scss diff --git a/client/src/style/pages/Customers/List.scss b/src/style/pages/Customers/List.scss similarity index 100% rename from client/src/style/pages/Customers/List.scss rename to src/style/pages/Customers/List.scss diff --git a/client/src/style/pages/Customers/PageForm.scss b/src/style/pages/Customers/PageForm.scss similarity index 100% rename from client/src/style/pages/Customers/PageForm.scss rename to src/style/pages/Customers/PageForm.scss diff --git a/client/src/style/pages/Dashboard/Dashboard.scss b/src/style/pages/Dashboard/Dashboard.scss similarity index 100% rename from client/src/style/pages/Dashboard/Dashboard.scss rename to src/style/pages/Dashboard/Dashboard.scss diff --git a/client/src/style/pages/ExchangeRate/ExchangeRateDialog.scss b/src/style/pages/ExchangeRate/ExchangeRateDialog.scss similarity index 100% rename from client/src/style/pages/ExchangeRate/ExchangeRateDialog.scss rename to src/style/pages/ExchangeRate/ExchangeRateDialog.scss diff --git a/client/src/style/pages/Expense/List.scss b/src/style/pages/Expense/List.scss similarity index 100% rename from client/src/style/pages/Expense/List.scss rename to src/style/pages/Expense/List.scss diff --git a/client/src/style/pages/Expense/PageForm.scss b/src/style/pages/Expense/PageForm.scss similarity index 100% rename from client/src/style/pages/Expense/PageForm.scss rename to src/style/pages/Expense/PageForm.scss diff --git a/client/src/style/pages/FinancialStatements/APAgingSummary.scss b/src/style/pages/FinancialStatements/APAgingSummary.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/APAgingSummary.scss rename to src/style/pages/FinancialStatements/APAgingSummary.scss diff --git a/client/src/style/pages/FinancialStatements/ARAgingSummary.scss b/src/style/pages/FinancialStatements/ARAgingSummary.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/ARAgingSummary.scss rename to src/style/pages/FinancialStatements/ARAgingSummary.scss diff --git a/client/src/style/pages/FinancialStatements/BalanceSheet.scss b/src/style/pages/FinancialStatements/BalanceSheet.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/BalanceSheet.scss rename to src/style/pages/FinancialStatements/BalanceSheet.scss diff --git a/client/src/style/pages/FinancialStatements/CashFlowStatement.scss b/src/style/pages/FinancialStatements/CashFlowStatement.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/CashFlowStatement.scss rename to src/style/pages/FinancialStatements/CashFlowStatement.scss diff --git a/client/src/style/pages/FinancialStatements/ContactsBalanceSummary.scss b/src/style/pages/FinancialStatements/ContactsBalanceSummary.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/ContactsBalanceSummary.scss rename to src/style/pages/FinancialStatements/ContactsBalanceSummary.scss diff --git a/client/src/style/pages/FinancialStatements/ContactsTransactions.scss b/src/style/pages/FinancialStatements/ContactsTransactions.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/ContactsTransactions.scss rename to src/style/pages/FinancialStatements/ContactsTransactions.scss diff --git a/client/src/style/pages/FinancialStatements/FinancialReportPage.scss b/src/style/pages/FinancialStatements/FinancialReportPage.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/FinancialReportPage.scss rename to src/style/pages/FinancialStatements/FinancialReportPage.scss diff --git a/client/src/style/pages/FinancialStatements/FinancialSheet.scss b/src/style/pages/FinancialStatements/FinancialSheet.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/FinancialSheet.scss rename to src/style/pages/FinancialStatements/FinancialSheet.scss diff --git a/client/src/style/pages/FinancialStatements/FinancialSheets.scss b/src/style/pages/FinancialStatements/FinancialSheets.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/FinancialSheets.scss rename to src/style/pages/FinancialStatements/FinancialSheets.scss diff --git a/client/src/style/pages/FinancialStatements/GeneralLedger.scss b/src/style/pages/FinancialStatements/GeneralLedger.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/GeneralLedger.scss rename to src/style/pages/FinancialStatements/GeneralLedger.scss diff --git a/client/src/style/pages/FinancialStatements/InventoryItemDetails.scss b/src/style/pages/FinancialStatements/InventoryItemDetails.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/InventoryItemDetails.scss rename to src/style/pages/FinancialStatements/InventoryItemDetails.scss diff --git a/client/src/style/pages/FinancialStatements/Journal.scss b/src/style/pages/FinancialStatements/Journal.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/Journal.scss rename to src/style/pages/FinancialStatements/Journal.scss diff --git a/client/src/style/pages/FinancialStatements/NumberFormatDropdown.scss b/src/style/pages/FinancialStatements/NumberFormatDropdown.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/NumberFormatDropdown.scss rename to src/style/pages/FinancialStatements/NumberFormatDropdown.scss diff --git a/client/src/style/pages/FinancialStatements/ProfitLossSheet.scss b/src/style/pages/FinancialStatements/ProfitLossSheet.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/ProfitLossSheet.scss rename to src/style/pages/FinancialStatements/ProfitLossSheet.scss diff --git a/client/src/style/pages/FinancialStatements/SalesAndPurchasesSheet.scss b/src/style/pages/FinancialStatements/SalesAndPurchasesSheet.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/SalesAndPurchasesSheet.scss rename to src/style/pages/FinancialStatements/SalesAndPurchasesSheet.scss diff --git a/client/src/style/pages/FinancialStatements/TrialBalanceSheet.scss b/src/style/pages/FinancialStatements/TrialBalanceSheet.scss similarity index 100% rename from client/src/style/pages/FinancialStatements/TrialBalanceSheet.scss rename to src/style/pages/FinancialStatements/TrialBalanceSheet.scss diff --git a/client/src/style/pages/HomePage/HomePage.scss b/src/style/pages/HomePage/HomePage.scss similarity index 100% rename from client/src/style/pages/HomePage/HomePage.scss rename to src/style/pages/HomePage/HomePage.scss diff --git a/client/src/style/pages/InventoryAdjustments/List.scss b/src/style/pages/InventoryAdjustments/List.scss similarity index 100% rename from client/src/style/pages/InventoryAdjustments/List.scss rename to src/style/pages/InventoryAdjustments/List.scss diff --git a/client/src/style/pages/ItemCategory/ItemCategoryDialog.scss b/src/style/pages/ItemCategory/ItemCategoryDialog.scss similarity index 100% rename from client/src/style/pages/ItemCategory/ItemCategoryDialog.scss rename to src/style/pages/ItemCategory/ItemCategoryDialog.scss diff --git a/client/src/style/pages/Items/ItemAdjustmentDialog.scss b/src/style/pages/Items/ItemAdjustmentDialog.scss similarity index 100% rename from client/src/style/pages/Items/ItemAdjustmentDialog.scss rename to src/style/pages/Items/ItemAdjustmentDialog.scss diff --git a/client/src/style/pages/Items/List.scss b/src/style/pages/Items/List.scss similarity index 100% rename from client/src/style/pages/Items/List.scss rename to src/style/pages/Items/List.scss diff --git a/client/src/style/pages/Items/PageForm.scss b/src/style/pages/Items/PageForm.scss similarity index 100% rename from client/src/style/pages/Items/PageForm.scss rename to src/style/pages/Items/PageForm.scss diff --git a/client/src/style/pages/ItemsCategories/List.scss b/src/style/pages/ItemsCategories/List.scss similarity index 100% rename from client/src/style/pages/ItemsCategories/List.scss rename to src/style/pages/ItemsCategories/List.scss diff --git a/client/src/style/pages/JournalEntries/List.scss b/src/style/pages/JournalEntries/List.scss similarity index 100% rename from client/src/style/pages/JournalEntries/List.scss rename to src/style/pages/JournalEntries/List.scss diff --git a/client/src/style/pages/ManualJournal/JournalNumberDialog.scss b/src/style/pages/ManualJournal/JournalNumberDialog.scss similarity index 100% rename from client/src/style/pages/ManualJournal/JournalNumberDialog.scss rename to src/style/pages/ManualJournal/JournalNumberDialog.scss diff --git a/client/src/style/pages/ManualJournal/List.scss b/src/style/pages/ManualJournal/List.scss similarity index 100% rename from client/src/style/pages/ManualJournal/List.scss rename to src/style/pages/ManualJournal/List.scss diff --git a/client/src/style/pages/ManualJournal/MakeJournal.scss b/src/style/pages/ManualJournal/MakeJournal.scss similarity index 100% rename from client/src/style/pages/ManualJournal/MakeJournal.scss rename to src/style/pages/ManualJournal/MakeJournal.scss diff --git a/client/src/style/pages/PaymentMade/List.scss b/src/style/pages/PaymentMade/List.scss similarity index 100% rename from client/src/style/pages/PaymentMade/List.scss rename to src/style/pages/PaymentMade/List.scss diff --git a/client/src/style/pages/PaymentMade/PageForm.scss b/src/style/pages/PaymentMade/PageForm.scss similarity index 100% rename from client/src/style/pages/PaymentMade/PageForm.scss rename to src/style/pages/PaymentMade/PageForm.scss diff --git a/client/src/style/pages/PaymentReceive/List.scss b/src/style/pages/PaymentReceive/List.scss similarity index 100% rename from client/src/style/pages/PaymentReceive/List.scss rename to src/style/pages/PaymentReceive/List.scss diff --git a/client/src/style/pages/PaymentReceive/PageForm.scss b/src/style/pages/PaymentReceive/PageForm.scss similarity index 100% rename from client/src/style/pages/PaymentReceive/PageForm.scss rename to src/style/pages/PaymentReceive/PageForm.scss diff --git a/client/src/style/pages/PaymentReceive/QuickPaymentReceiveDialog.scss b/src/style/pages/PaymentReceive/QuickPaymentReceiveDialog.scss similarity index 100% rename from client/src/style/pages/PaymentReceive/QuickPaymentReceiveDialog.scss rename to src/style/pages/PaymentReceive/QuickPaymentReceiveDialog.scss diff --git a/client/src/style/pages/Preferences/Accounting.scss b/src/style/pages/Preferences/Accounting.scss similarity index 100% rename from client/src/style/pages/Preferences/Accounting.scss rename to src/style/pages/Preferences/Accounting.scss diff --git a/client/src/style/pages/Preferences/CurrenciesList.scss b/src/style/pages/Preferences/CurrenciesList.scss similarity index 100% rename from client/src/style/pages/Preferences/CurrenciesList.scss rename to src/style/pages/Preferences/CurrenciesList.scss diff --git a/client/src/style/pages/Preferences/GeneralForm.scss b/src/style/pages/Preferences/GeneralForm.scss similarity index 100% rename from client/src/style/pages/Preferences/GeneralForm.scss rename to src/style/pages/Preferences/GeneralForm.scss diff --git a/client/src/style/pages/Preferences/Page.scss b/src/style/pages/Preferences/Page.scss similarity index 100% rename from client/src/style/pages/Preferences/Page.scss rename to src/style/pages/Preferences/Page.scss diff --git a/client/src/style/pages/Preferences/Sidebar.scss b/src/style/pages/Preferences/Sidebar.scss similarity index 100% rename from client/src/style/pages/Preferences/Sidebar.scss rename to src/style/pages/Preferences/Sidebar.scss diff --git a/client/src/style/pages/Preferences/Topbar.scss b/src/style/pages/Preferences/Topbar.scss similarity index 100% rename from client/src/style/pages/Preferences/Topbar.scss rename to src/style/pages/Preferences/Topbar.scss diff --git a/client/src/style/pages/Preferences/Users.scss b/src/style/pages/Preferences/Users.scss similarity index 100% rename from client/src/style/pages/Preferences/Users.scss rename to src/style/pages/Preferences/Users.scss diff --git a/client/src/style/pages/ReferenceNumber/ReferenceNumber.scss b/src/style/pages/ReferenceNumber/ReferenceNumber.scss similarity index 100% rename from client/src/style/pages/ReferenceNumber/ReferenceNumber.scss rename to src/style/pages/ReferenceNumber/ReferenceNumber.scss diff --git a/client/src/style/pages/SaleEstimate/List.scss b/src/style/pages/SaleEstimate/List.scss similarity index 100% rename from client/src/style/pages/SaleEstimate/List.scss rename to src/style/pages/SaleEstimate/List.scss diff --git a/client/src/style/pages/SaleEstimate/PageForm.scss b/src/style/pages/SaleEstimate/PageForm.scss similarity index 100% rename from client/src/style/pages/SaleEstimate/PageForm.scss rename to src/style/pages/SaleEstimate/PageForm.scss diff --git a/client/src/style/pages/SaleInvoice/List.scss b/src/style/pages/SaleInvoice/List.scss similarity index 100% rename from client/src/style/pages/SaleInvoice/List.scss rename to src/style/pages/SaleInvoice/List.scss diff --git a/client/src/style/pages/SaleInvoice/PageForm.scss b/src/style/pages/SaleInvoice/PageForm.scss similarity index 100% rename from client/src/style/pages/SaleInvoice/PageForm.scss rename to src/style/pages/SaleInvoice/PageForm.scss diff --git a/client/src/style/pages/SaleReceipt/List.scss b/src/style/pages/SaleReceipt/List.scss similarity index 100% rename from client/src/style/pages/SaleReceipt/List.scss rename to src/style/pages/SaleReceipt/List.scss diff --git a/client/src/style/pages/SaleReceipt/PageForm.scss b/src/style/pages/SaleReceipt/PageForm.scss similarity index 100% rename from client/src/style/pages/SaleReceipt/PageForm.scss rename to src/style/pages/SaleReceipt/PageForm.scss diff --git a/client/src/style/pages/Setup/Congrats.scss b/src/style/pages/Setup/Congrats.scss similarity index 100% rename from client/src/style/pages/Setup/Congrats.scss rename to src/style/pages/Setup/Congrats.scss diff --git a/client/src/style/pages/Setup/Initializing.scss b/src/style/pages/Setup/Initializing.scss similarity index 100% rename from client/src/style/pages/Setup/Initializing.scss rename to src/style/pages/Setup/Initializing.scss diff --git a/client/src/style/pages/Setup/Organization.scss b/src/style/pages/Setup/Organization.scss similarity index 100% rename from client/src/style/pages/Setup/Organization.scss rename to src/style/pages/Setup/Organization.scss diff --git a/client/src/style/pages/Setup/PaymentViaVoucherDialog.scss b/src/style/pages/Setup/PaymentViaVoucherDialog.scss similarity index 100% rename from client/src/style/pages/Setup/PaymentViaVoucherDialog.scss rename to src/style/pages/Setup/PaymentViaVoucherDialog.scss diff --git a/client/src/style/pages/Setup/SetupPage.scss b/src/style/pages/Setup/SetupPage.scss similarity index 100% rename from client/src/style/pages/Setup/SetupPage.scss rename to src/style/pages/Setup/SetupPage.scss diff --git a/client/src/style/pages/Setup/Subscription.scss b/src/style/pages/Setup/Subscription.scss similarity index 100% rename from client/src/style/pages/Setup/Subscription.scss rename to src/style/pages/Setup/Subscription.scss diff --git a/client/src/style/pages/Subscription/BillingPlans.scss b/src/style/pages/Subscription/BillingPlans.scss similarity index 100% rename from client/src/style/pages/Subscription/BillingPlans.scss rename to src/style/pages/Subscription/BillingPlans.scss diff --git a/client/src/style/pages/Subscription/PlanPeriodRadio.scss b/src/style/pages/Subscription/PlanPeriodRadio.scss similarity index 100% rename from client/src/style/pages/Subscription/PlanPeriodRadio.scss rename to src/style/pages/Subscription/PlanPeriodRadio.scss diff --git a/client/src/style/pages/Subscription/PlanRadio.scss b/src/style/pages/Subscription/PlanRadio.scss similarity index 100% rename from client/src/style/pages/Subscription/PlanRadio.scss rename to src/style/pages/Subscription/PlanRadio.scss diff --git a/client/src/style/pages/Users/InviteFormDialog.scss b/src/style/pages/Users/InviteFormDialog.scss similarity index 100% rename from client/src/style/pages/Users/InviteFormDialog.scss rename to src/style/pages/Users/InviteFormDialog.scss diff --git a/client/src/style/pages/Users/UserFormDialog.scss b/src/style/pages/Users/UserFormDialog.scss similarity index 100% rename from client/src/style/pages/Users/UserFormDialog.scss rename to src/style/pages/Users/UserFormDialog.scss diff --git a/client/src/style/pages/Vendors/List.scss b/src/style/pages/Vendors/List.scss similarity index 100% rename from client/src/style/pages/Vendors/List.scss rename to src/style/pages/Vendors/List.scss diff --git a/client/src/style/pages/Vendors/PageForm.scss b/src/style/pages/Vendors/PageForm.scss similarity index 100% rename from client/src/style/pages/Vendors/PageForm.scss rename to src/style/pages/Vendors/PageForm.scss diff --git a/client/src/style/pages/authentication.scss b/src/style/pages/authentication.scss similarity index 100% rename from client/src/style/pages/authentication.scss rename to src/style/pages/authentication.scss diff --git a/client/src/style/pages/fonts.scss b/src/style/pages/fonts.scss similarity index 100% rename from client/src/style/pages/fonts.scss rename to src/style/pages/fonts.scss diff --git a/client/src/style/pages/keyboardShortcuts/KeyboardShortcutDialog.scss b/src/style/pages/keyboardShortcuts/KeyboardShortcutDialog.scss similarity index 100% rename from client/src/style/pages/keyboardShortcuts/KeyboardShortcutDialog.scss rename to src/style/pages/keyboardShortcuts/KeyboardShortcutDialog.scss diff --git a/client/src/style/pages/register-organizaton.scss b/src/style/pages/register-organizaton.scss similarity index 100% rename from client/src/style/pages/register-organizaton.scss rename to src/style/pages/register-organizaton.scss diff --git a/client/src/style/pages/view-form.scss b/src/style/pages/view-form.scss similarity index 100% rename from client/src/style/pages/view-form.scss rename to src/style/pages/view-form.scss diff --git a/client/src/style/variables.scss b/src/style/variables.scss similarity index 100% rename from client/src/style/variables.scss rename to src/style/variables.scss diff --git a/client/src/style/views/filter-dropdown.scss b/src/style/views/filter-dropdown.scss similarity index 100% rename from client/src/style/views/filter-dropdown.scss rename to src/style/views/filter-dropdown.scss diff --git a/client/src/utils.js b/src/utils.js similarity index 100% rename from client/src/utils.js rename to src/utils.js diff --git a/client/tsconfig.json b/tsconfig.json similarity index 100% rename from client/tsconfig.json rename to tsconfig.json