commit 896ecdcfe050ea3b5216f58aaf5f24a44c3d98cd Author: mrNikto9 Date: Sat Jul 13 15:57:07 2024 +0500 first commit diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..71464e1 --- /dev/null +++ b/.babelrc @@ -0,0 +1,13 @@ +{ + "presets": ["@babel/preset-env"], + "plugins": [ + [ + "module-resolver", { + "root": ["."], + "alias": { + "helpers": "./tests/js/helpers" + } + } + ] + ] +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6af90e1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..9ac4f69 --- /dev/null +++ b/.env.example @@ -0,0 +1,48 @@ +APP_NAME="October CMS" +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost +APP_LOCALE=en + +ACTIVE_THEME=demo +BACKEND_URI=/admin +BACKEND_TURBO_ROUTER=false +CMS_ROUTE_CACHE=false +CMS_ASSET_CACHE=false +CMS_SAFE_MODE=false +LINK_POLICY=detect +DEFAULT_FILE_MASK=775 +DEFAULT_FOLDER_MASK=775 + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=database +DB_USERNAME=root +DB_PASSWORD= + +LOG_CHANNEL=single +BROADCAST_DRIVER=log +CACHE_DRIVER=file +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=log +MAIL_HOST=mailpit +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=noreply@octobercms.tld +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..2125666 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..958248c --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Common +composer.phar +.DS_Store +.idea +.env +.env.*.php +.env.php +auth.json +php_errors.log +nginx-error.log +nginx-access.log +nginx-ssl.access.log +nginx-ssl.error.log +php-errors.log +sftp-config.json +.ftpconfig +.vscode/ +selenium.php +composer.lock +package-lock.json +/node_modules +_ide_helper.php +.phpunit.result.cache +nbproject +.phpstorm.meta.php + +# Project +/bootstrap/compiled.php +/vendor +/modules diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..bb22ad8 --- /dev/null +++ b/.htaccess @@ -0,0 +1,78 @@ + + + + Options -MultiViews + + + RewriteEngine On + + ## + ## You may need to uncomment the following line for some hosting environments, + ## if you have installed to a subdirectory, enter the name here also. + ## + # RewriteBase / + + ## + ## Uncomment following lines to force HTTPS. + ## + # RewriteCond %{HTTPS} off + # RewriteRule (.*) https://%{SERVER_NAME}/$1 [L,R=301] + + ## + ## Uncomment to redirect trailing slashes in URLs. + ## + # RewriteCond %{REQUEST_FILENAME} !-d + # RewriteRule ^(.*)/$ /$1 [L,R=301] + + ## + ## Uncomment to redirect /index.php/path to /path + ## + # RewriteRule ^index\.php/(.*)$ /$1 [L,R=301] + + ## + ## Handle Authorization Header + ## + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + ## + ## Blocked folders + ## + RewriteRule ^bootstrap/.* index.php [L,NC] + RewriteRule ^config/.* index.php [L,NC] + RewriteRule ^vendor/.* index.php [L,NC] + RewriteRule ^storage/cms/.* index.php [L,NC] + RewriteRule ^storage/logs/.* index.php [L,NC] + RewriteRule ^storage/framework/.* index.php [L,NC] + RewriteRule ^storage/temp/protected/.* index.php [L,NC] + RewriteRule ^storage/app/uploads/protected/.* index.php [L,NC] + + ## + ## Allowed folders + ## + RewriteCond %{REQUEST_FILENAME} -f + RewriteCond %{REQUEST_FILENAME} !/.well-known/* + RewriteCond %{REQUEST_FILENAME} !/app/(assets|resources)/.* + RewriteCond %{REQUEST_FILENAME} !/storage/app/media/.* + RewriteCond %{REQUEST_FILENAME} !/storage/app/resources/.* + RewriteCond %{REQUEST_FILENAME} !/storage/app/uploads/public/.* + RewriteCond %{REQUEST_FILENAME} !/storage/temp/public/.* + RewriteCond %{REQUEST_FILENAME} !/themes/.*/(assets|resources)/.* + RewriteCond %{REQUEST_FILENAME} !/plugins/.*/(assets|resources)/.* + RewriteCond %{REQUEST_FILENAME} !/modules/.*/(assets|resources)/.* + RewriteRule !^index.php index.php [L,NC] + + ## + ## Block all PHP files, except index + ## + RewriteCond %{REQUEST_FILENAME} -f + RewriteCond %{REQUEST_FILENAME} \.php$ + RewriteRule !^index.php index.php [L,NC] + + ## + ## Standard routes + ## + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + + diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..bb55890 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,5 @@ +{ + "esversion": 6, + "curly": true, + "asi": true +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a954327 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1 @@ +View the changelog on the [October CMS website](https://octobercms.com/changelog) diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..63962f5 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,305 @@ +Copyright (c) 2013-2022 Responsiv Pty Ltd + +This End User License Agreement (“EULA”) constitutes a binding agreement between you (the “Licensee”, “you” or “your”) and Responsiv Pty Ltd - ACN 159 492 823 (the “Company”, “we”, “us” or “our”) with respect to your use of the October CMS software (“Licensed Software” or “October CMS Software”). The Company and the Licensee are each individually referred to as “Party” and collectively as “Parties”. + +Please carefully read the terms and conditions of this EULA before installing and using the Licensed Software. By using the Licensed Software, you represent that you have read this EULA, and you agree to be bound by all the terms and conditions of this EULA, including any other agreements and policies referenced in this EULA. If you do not agree with any provisions of this EULA, please do not install the October CMS Software. + +The Company reserves the right to modify or discontinue the October CMS Software or any portion thereof, temporarily or permanently, with or without notice to you. The Company will not be under any obligation to support or update the Licensed Software, except as described in this EULA. + +YOU AGREE THAT THE COMPANY SHALL NOT BE LIABLE TO YOU OR ANY THIRD PARTY IN THE EVENT THAT WE EXERCISE OUR RIGHT TO MODIFY OR DISCONTINUE THE LICENSED SOFTWARE OR ANY PORTION THEREOF. + +## Summary + +This section outlines some of the key provisions covered in this EULA. Please note that this summary is provided for your convenience only, and it does not relieve you of your obligation to read the full EULA before installing/using the October CMS Software. + +By proceeding to use the October CMS Software, you understand and agree that: + +- You must be at least 18 years of age to enter into this EULA; + +- You will only use the October CMS Software in compliance with applicable laws; + +- October CMS Software licenses are only issued for Projects created through the website. To acquire/renew your Project licence, you need to sign in to your October CMS Account, and select/create the Project for which you wish to acquire/renew the licence; + +- You will be responsible for paying the full License Fee prior to installing the October CMS Software; + +- All License Fee Payments are non-refundable; + +- Upon full payment of the License Fee, you will receive a License Key that allows you to install the Licensed Software to create a single production or non-production website and ancillary installations needed to support that single production or non-production website; + +- Each new/renewed Project licence comes with one year of Updates. You may continue to use your expired Project license in perpetuity, but if you wish to continue receiving all the Updates, you will be required to keep your Project licence active by renewing it every year; + +- Subject to the payment of full License Fee and compliance with this EULA, the Company and its third party licensors grant you a limited, non-exclusive, non-transferable, non-assignable, perpetual and worldwide license to install and/or use the October CMS Software; + +- The Company and its licensors retain all rights, title and interest in the October CMS Software, Documentation and other similar proprietary materials made available to you; + +- You will not sublicense, resell, distribute, or transfer the Licensed Software to any third party without the Company’s prior written consent; + +- You will not remove, obscure or otherwise modify any copyright notices from the October CMS Software files or this EULA; + +- You will not modify, disassemble, or reverse engineer any part of the October CMS Software; + +- You will take all required steps to prevent unauthorised installation/use of the October CMS Software and prevent any breach of this EULA; + +- The Company may terminate this EULA if you are in breach of any provision of this EULA or if we discontinue the October CMS Software; + +- SUBJECT TO YOUR STATUTORY RIGHTS, THE COMPANY PROVIDES THE OCTOBER CMS SOFTWARE TO YOU “AS IS” AND “WITH ALL FAULTS”. THE COMPANY DOES NOT OFFER ANY WARRANTIES, WHETHER EXPRESS OR IMPLIED. IN NO EVENT WILL THE COMPANY’S AGGREGATE LIABILITY TO YOU FOR ANY CLAIMS CONNECTED WITH THIS EULA OR THE OCTOBER CMS SOFTWARE EXCEED THE AMOUNT ACTUALLY PAID BY YOU TO THE COMPANY FOR THE OCTOBER CMS SOFTWARE IN THE TWELVE MONTHS PRECEDING THE DATE WHEN THE CLAIM FIRST AROSE; + +- This EULA shall be governed by and construed in accordance with the laws of the state of New South Wales, Australia, without giving effect to any principles of conflict of laws. + +## Table of Contents + +- [1. Definitions](#Definitions) +- [2. Authorisation](#Authorisation) +- [3. License Grant](#License-Grant) +- [4. License Purchase and Renewal](#License-Purchase-and-Renewal) +- [5. License Fees, Payments and Refunds](#License-Fees-Payments-and-Refunds) +- [6. Ownership](#Ownership) +- [7. Use and Restrictions](#Use-and-Restrictions) +- [8. Technical Support](#Technical-Support) +- [9. Termination](#Termination) +- [10. Statutory Consumer Rights](#Statutory-Consumer-Rights) +- [11. Disclaimer of Warranties](#Disclaimer-of-Warranties) +- [12. Limitation of Liability](#Limitation-of-Liability) +- [13. Waiver](#Waiver) +- [14. Indemnification](#Indemnification) +- [15. Compliance with the Laws](#Compliance-with-the-Laws) +- [16. Data Protection](#Data-Protection) +- [17. Delivery](#Delivery) +- [18. General](#General) + + +## 1. Definitions + +The following words shall have the meaning given hereunder whenever they appear in this EULA: + +Term | Definition +---- | ----------- +Account | refers to a user account registered on the Website by an individual or entity. +Active Term | means the period commencing from the date of License purchase/renewal until the License expiry date as specified on the Project page in your Account. +Documentation | means the current version of the documentation relating to the October CMS Software available at https://docs.octobercms.com or otherwise made available by the Company in electronic format. Documentation includes but is not limited to installation instructions, user guides and help documents regarding the use of the October CMS Software. +License Fee | means the fee payable by the Licensee for the use of the October CMS Software in accordance with the provisions of this EULA and any other applicable agreements referenced in this EULA. +License Key | means a unique string of characters provided by the Company that enables users to install the October CMS Software for a specific Project. +Modifications | means any changes to the original code or files of the October CMS Software by the Licensee or any third party. For the avoidance of any doubt, the term “Modifications” does not include any Updates furnished by the Company. +October CMS Software | refers to the collection of proprietary code and graphics in various file formats provided by the Company to the Licensee. +Project | means a collection of extensions and themes to be used in a single production website. +Updates | means all new releases of the October CMS Software, including but not limited to new features and fixes which are provided by the Company to a Licensee during the Active Term of the License. +The Website | refers to the Company website located at www.octobercms.com. + + +## 2. Authorisation + +You must be at least 18 years of age and have the legal capacity to enter into this EULA. If you are accepting this EULA on behalf of a corporation, organisation, or other legal entity (‘corporate entity’), you warrant that you have the authority to enter into this EULA on behalf of such corporate entity and to bind the former to this EULA. + + +## 3. License Grant + +Subject to your compliance with all the terms and conditions of this EULA and the payment of the full License Fee, the Company and its third party licensors grant you a limited, non-exclusive, non-transferable, non-assignable, perpetual and worldwide license to install and/or use the October CMS Software. + +You shall be solely responsible for ensuring that all your authorised employees, contractors or other users of the Licensed Software comply with all the terms and conditions of this EULA, and any failure to comply with this EULA will be deemed as a breach of this EULA by you. + +The Company and its third party licensors may make changes to the Licensed Software, which are provided to you through Updates. You will only receive all such Updates during the Active Term of your license. You will not have any right to receive Updates after the expiration of your license. Please note that if you terminate your Account, you will not be able to access your Projects and renew your license/receive any future Updates. + +UNLESS EXPRESSLY PROVIDED IN THIS EULA, YOU MAY NOT COPY OR MODIFY THE OCTOBER CMS SOFTWARE. + + +## 4. License Purchase and Renewal + +October CMS Software licenses are only issued for Projects created through the Website. To acquire a new Project licence or to renew an existing Project licence, you must sign in to your October CMS Account and select/create the Project for which you wish to acquire/renew the licence. + +Upon full payment of the License Fee, you will receive a License Key that allows you to install the Licensed Software to create a single production or non-production website and ancillary installations needed to support that single production or non-production website. + +Each new/renewed Project licence comes with one year of Updates starting from the date on which you pay the License Fee. You are not under any legal obligation to renew your Project licence, and you can continue to use your expired Project license for your website in perpetuity. Please note that expired Project licenses do not receive any Updates. If you wish to continue receiving all the Updates, you will be required to keep your Project licence active by renewing it every year. + +By installing and using the October CMS Software, you assume full responsibility for your selection of the Licensed Software, its installation, and the results obtained from the use of the October CMS Software. + + +## 5. License Fees, Payments and Refunds + +The current License Fee for the October CMS Software is published on the Website, and the amount is specified in United States Dollars (USD). The License fee as specified on the Website does not include any taxes which shall be payable by the Licensee in addition to the License Fee. + +The License fee becomes due and payable in full at the time the Licensee purchases a new Project license or renews an existing Project license. + +All Project licenses are issued/renewed subject to the payment of the License Fee by the Licensee as outlined in Section 7 of our [Website Terms of Use](https://octobercms.com/help/terms/website#fees-payments-refunds-policy) and incorporated into this EULA by reference. The Company reserves the right to refuse issuance of a new Project license or renewal of an existing license until the Company receives the full payment. + +To the extent permitted by law, all License Fee payments are non-refundable. + + +## 6. Ownership + +Nothing in this EULA constitutes the sale of October CMS Software to you. The Company and its licensors retain all rights, title and interest in the October CMS Software, Documentation and other similar proprietary materials made available to you (collectively “Proprietary Material”). All Proprietary Material is protected by copyright and other intellectual property laws of Australia and international conventions. You acknowledge that the October CMS Software may contain some open source software that is not owned by the Company and which shall be governed by its own license terms. + +Except where authorised by the Company in writing, any use of the October CMS trademark, trade name, or logo is strictly prohibited. The Company reserves all rights that are not expressly granted in and to the Proprietary Material. + + +## 7. Use and Restrictions + +You hereby agree that: + +1. A License Key may only be used to create a single production or non-production website as provided in Section 4 (License Purchase and Renewal) of this EULA. If you wish to create another website, you will need to create a new Project and acquire a new License for that Project; + +2. Unless expressly provided otherwise in this EULA or other applicable agreements referenced herein, you will not sublicense, resell, distribute, or transfer the Licensed Software to any third party without the Company’s prior written consent; + +3. You will not remove, obscure or otherwise modify any copyright notices from the October CMS Software files or this EULA; + +4. You will not modify, disassemble, or reverse engineer any part of the October CMS Software; + +5. You will take all required steps to prevent unauthorised installation/use of the October CMS Software and prevent any breach of this EULA; + +6. You do not receive any rights, interests or titles in the “October CMS” trademark, trade name or service mark (“Marks”), and you will not use any of these Marks without our express consent. + + +## 8. Technical Support + +The Company does not offer any technical support except as described in our Premium Support Policy. The Company reserves the right to deny any and all technical support for any Modifications of the October CMS Software or in the event of any breach of this EULA. + + +## 9. Termination + +This EULA shall remain effective until terminated by either Party as described below. + +### 9.1 Termination by Licensee + +You may terminate this EULA by uninstalling the October CMS Software and deleting all files and your Account. Please note that once you delete your Account, you will not be able to reactivate it to restore your Projects and access your License Key. + +### 9.2 Termination by the Company + +The Company may terminate this EULA if you are in breach of any provision of this EULA or if we discontinue the October CMS Software. + +### 9.3 Survival + +Section 11 (Disclaimer of Warranties), Section 12 (Limitation of Liability), Section 13 (Waiver), Section 14 (Indemnification) and other sections of this EULA that by their nature are intended to survive the termination of this EULA shall survive. + +Unless expressly specified otherwise in this EULA, any termination of this EULA either by you or the Company does not create any obligation on the Company to issue a full or partial refund of the License Fee paid by you. + + +## 10. Statutory Consumer Rights + +### 10.1 CONSUMERS IN AUSTRALIA + +If you acquire the October CMS Software license as a “consumer”, nothing in this EULA will exclude, limit or modify any rights and guarantees conferred on you by legislation, including the Australian Consumer Law (ACL) in the Competition and Consumer Act 2010 (Cth) (‘Statutory Rights’). If the Company is in breach of any such Statutory Rights, then the Company’s liability shall be limited (at the Company’s option) to: + +10.1.1 In case of products supplied to you, to resupplying, replacing or paying the cost of resupplying or replacing the product in respect of which the breach occurred; + +10.1.2 In case of services supplied to you, to resupply the service or to pay the cost of resupplying the service in respect of which the breach occurred. + +Unless expressly specified otherwise in this EULA, you agree that the Company’s liability for the October CMS Software is governed solely by this EULA and the Australian Consumer Law. + +### 10.1 CONSUMERS OUTSIDE OF AUSTRALIA + +If you are deemed a “consumer” by statutory law in your country of residence, you may enjoy some legal rights under your local law which prohibit the exclusions, modification or limitations of certain liabilities from applying to you, and where such prohibition exists in your country of residence, any such limitations or exclusions will only apply to you to the extent it is permitted by your local law. + +You agree that apart from the application of your statutory consumer rights, the Company’s liability for the October CMS Software is governed solely by this EULA. + + +## 11. Disclaimer of Warranties + +SUBJECT TO YOUR STATUTORY RIGHTS AS PROVIDED IN SECTION 10 ABOVE, THE COMPANY PROVIDES THE OCTOBER CMS SOFTWARE TO YOU “AS IS” AND “WITH ALL FAULTS”. + +EXCLUDING ANY EXPRESS WARRANTIES OFFERED IN THIS EULA, TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE COMPANY, ITS EMPLOYEES, DIRECTORS, CONTRACTORS, AFFILIATES (“THE COMPANY AND ITS OFFICERS”) DISCLAIM ANY EXPRESS OR IMPLIED WARRANTIES WITH RESPECT TO THE OCTOBER CMS SOFTWARE, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, RELIABILITY, COURSE OF PERFORMANCE OR USAGE IN TRADE. THE COMPANY DOES NOT WARRANT THAT THE OCTOBER CMS SOFTWARE: WILL MEET YOUR REQUIREMENTS; WILL BE UNINTERRUPTED, ERROR-FREE, OR SECURE; OR THAT THE COMPANY WILL BE ABLE TO RECTIFY ANY ERRORS, BUGS, SECURITY VULNERABILITIES. NO OBLIGATION, WARRANTIES OR LIABILITY SHALL ARISE OUT OF ANY TECHNICAL SUPPORT SERVICES PROVIDED BY THE COMPANY AND ITS OFFICERS IN CONNECTION WITH THE OCTOBER CMS SOFTWARE. NO VERBAL OR WRITTEN COMMUNICATION RECEIVED FROM THE COMPANY AND ITS OFFICERS, WHETHER MARKETING, PROMOTIONAL OR TECHNICAL SUPPORT, SHALL CREATE ANY WARRANTIES THAT ARE NOT EXPRESSLY PROVIDED IN THIS EULA. + +ALTHOUGH THE COMPANY PERIODICALLY RELEASES UPDATES FOR THE OCTOBER CMS SOFTWARE THAT MAY INCLUDE FIXES FOR KNOWN VULNERABILITIES, YOU ACKNOWLEDGE AND AGREE THAT THERE MAY BE VULNERABILITIES THAT THE COMPANY HAS NOT YET IDENTIFIED AND THEREFORE CANNOT ADDRESS. YOU ACKNOWLEDGE AND AGREE THAT YOU ARE SOLELY RESPONSIBLE FOR TAKING ALL THE PRECAUTIONS AND SAFEGUARDS NECESSARY TO PROTECT YOUR WEBSITE AND DATA FROM ANY EXTERNAL ATTACKS, INCLUDING BUT NOT LIMITED TO KEEPING YOUR OCTOBER CMS SOFTWARE INSTALLATION CURRENT AND UP TO DATE. + +SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO YOU. + + +## 12. Limitation of Liability + +IN NO EVENT SHALL THE COMPANY BE LIABLE TO YOU OR ANY THIRD-PARTY FOR ANY LOSS OF REVENUE, LOSS OF PROFITS (ACTUAL OR ANTICIPATED), LOSS OF SAVINGS (ACTUAL OR ANTICIPATED), LOSS OF OPPORTUNITY, LOSS OF REPUTATION, LOSS OF GOODWILL OR FOR ANY INDIRECT, INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES RESULTING FROM THE INSTALLATION, USE OR INABILITY TO USE THE OCTOBER CMS SOFTWARE, WHETHER ARISING FROM ANY BREACH OF CONTRACT, NEGLIGENCE OR ANY OTHER THEORY OF LIABILITY, EVEN IF THE COMPANY WAS PREVIOUSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE LICENSEE SHALL BE SOLELY RESPONSIBLE FOR DETERMINING THE SUITABILITY OF THE LICENSED SOFTWARE AND ALL RISKS ASSOCIATED WITH ITS USE. + +IN NO EVENT WILL THE COMPANY’S AGGREGATE LIABILITY TO YOU FOR ANY CLAIMS CONNECTED WITH THIS EULA OR THE OCTOBER CMS SOFTWARE, INCLUDING THOSE ARISING FROM ANY BREACH OF CONTRACT OR NEGLIGENCE, EXCEED THE AMOUNT ACTUALLY PAID BY YOU TO THE COMPANY FOR THE OCTOBER CMS SOFTWARE IN THE TWELVE MONTHS PRECEDING THE DATE WHEN THE CLAIM FIRST AROSE. + +NOTWITHSTANDING ANYTHING TO THE FOREGOING, NOTHING IN THIS PROVISION SHALL LIMIT EITHER PARTY’S LIABILITY FOR ANY FRAUD OR LIABILITY THAT CANNOT BE LIMITED BY LAW. + + +## 13. Waiver + +YOU HEREBY RELEASE THE COMPANY AND ITS OFFICERS FROM ALL UNKNOWN RISKS ARISING OUT OF OR ASSOCIATED WITH THE USE OF THE OCTOBER CMS SOFTWARE. IF YOU ARE A RESIDENT IN THE STATE OF CALIFORNIA, U.S.A., YOU EXPRESSLY WAIVE CALIFORNIA CIVIL CODE SECTION 1542, OR OTHER SIMILAR LAW APPLICABLE TO YOU, WHICH STATES: “A GENERAL RELEASE DOES NOT EXTEND TO CLAIMS WHICH THE CREDITOR DOES NOT KNOW OR SUSPECT TO EXIST IN HIS OR HER FAVOR AT THE TIME OF EXECUTING THE RELEASE, WHICH IF KNOWN BY HIM OR HER MUST HAVE MATERIALLY AFFECTED HIS OR HER SETTLEMENT WITH THE DEBTOR OR RELEASED PARTY. ” + +**YOU ACKNOWLEDGE AND AGREE THAT THE LIMITATION OF LIABILITY AND THE WAIVER SET FORTH ABOVE REFLECT A REASONABLE AND FAIR ALLOCATION OF RISK BETWEEN YOU AND THE COMPANY AND THAT THESE PROVISIONS FORM AN ESSENTIAL BASIS OF THE BARGAIN BETWEEN YOU AND THE COMPANY. THE COMPANY WOULD NOT BE ABLE TO PROVIDE THE OCTOBER CMS SOFTWARE TO YOU ON AN ECONOMICALLY REASONABLE BASIS WITHOUT THESE LIMITATIONS.** + + +## 14. Indemnification + +14.1 The Company will defend or settle any claims against you that allege that the October CMS Software as supplied to you for installation and use in accordance with this EULA and Documentation infringes the intellectual property rights of a third party provided that: + +14.1.1 You immediately notify the Company of any such claim that relates to this indemnity; + +14.1.2 The Company has the sole right to control the defence or settlement of such claim; and + +14.1.3 You provide the Company with all reasonable assistance in relation to the defence. + +14.2 For any claims of infringement of intellectual property mentioned in Section 14.1, the Company reserves the right to: + +14.2.1 Modify or replace the Licensed Software to make it non-infringing provided such modification or replacement does not substantively change the functionality of the Licensed Software; or + +14.2.2 Acquire at its own expense the right for you to continue the use of the Licensed Software; or + +14.2.3 Terminate the Project license and direct you to cease the use of the Licensed Software. In such cases, the Company will provide you with a full refund of the License Fees paid by you for the Licensed Software in the preceding 12 months. Please note that where the Company directs you to cease the use of the October CMS Software due to a third party claim of infringement, you are under a legal obligation to immediately cease such use. + +Unless otherwise provided by law, this Section 14 sets out your exclusive remedies for any infringement of intellectual property claims made by a third party against you and nothing in this EULA will create any obligations on the Company to offer greater indemnity. The Company does not have any obligation to defend or indemnify any other third party. + +14.3 The Company shall not have any obligation to indemnify you if: + +14.3.1 The infringement arises out of any Modification of the October CMS Software; + +14.3.2 The infringement arises from any combination, operation, or use of the Licensed Software with any other third party software; + +14.3.3 The infringement arises from the use of the Licensed Software in breach of this EULA; + +14.3.4 The infringement arises from the use of the Licensed Software after the Company has informed you to cease the use of the Licensed Software due to possible claims. + +14.4 You will indemnify the Company against any third party claims, damages, losses and costs, including reasonable attorney fees arising from: + +14.4.1 Your actions or omissions (actual or alleged), including without limitation, claims that your actions or omission infringe any third party’s intellectual property rights; or + +14.4.2 Your violation of any applicable laws; or + +14.4.3 Your breach of this EULA. + + +## 15. Compliance with the Laws + +You will only install/use the October CMS Software and fulfil all your obligations under this EULA in compliance with all applicable laws. You hereby confirm that neither you nor the corporate entity that you represent is subject or target of any government Sanctions, and your use of the October CMS Software would not result in violation of any Sanctions by the Company. + +You further confirm that the Licensed Software will not be used by any individual or entity engaged in any of the following activities: (i) Terrorist activities; (ii) design, development or production of any weapons of mass destruction; or (iii) any other illegal activity. + + +## 16. Data Protection + +The Company only collects minimal personal data from the Licensee, as described in our Privacy Policy. The Company does not process any data on behalf of the Licensee, and the Licensee shall be solely responsible for compliance with applicable data protection laws for any data it controls or processes. + + +## 17. Delivery + +The Company will deliver the October CMS Software and this EULA to you by electronic download. + + +## 18. General + +### 18.1 Amendments + +The Company reserves the right to amend the terms and conditions of this EULA at any time and without giving any prior notice to you. You acknowledge that you are responsible for periodically reviewing this EULA to familiarise yourself with any changes. Your continued use of the October CMS Software after any changes to the EULA shall constitute your consent to such change. You can access the latest version of the EULA by visiting https://octobercms.com/eula + +### 18.2 Assignment + +You may not assign any rights and obligations under this EULA, in whole or in part, without an authorised Company representative's written consent. Any attempt to assign any rights and obligations without the Company's consent shall be void. The Company reserves the right to assign any of its rights and obligations under this EULA to a third party without requiring your consent. + +### 18.3 Notices + +You hereby consent to receive all notices and communication from the Company electronically. + +All notices to the Company under this EULA shall be sent to: + +PO Box 47
+Queanbeyan NSW 2620
+Australia + +For any other questions relating to this EULA, please contact us at https://octobercms.com/contact + +### 18.4 Governing Law and Jurisdiction + +This EULA shall be governed by and construed in accordance with the laws of the state of New South Wales, Australia, without giving effect to any principles of conflict of laws. The parties hereby agree to submit to the non-exclusive jurisdiction of the courts of New South Wales to decide any matter arising out of these Terms. Both Parties hereby agree that the United Nations Convention on Contracts for the International Sale of Goods will not apply to this EULA. + +### 18.5 Force Majeure + +Neither Party will be liable to the other for any failure or delay in the performance of its obligations to the extent that such failure or delay is caused by any unforeseen events which are beyond the reasonable control of the obligated Party such as an act of God, strike, war, terrorism, epidemic, internet or telecommunication outage or other similar events, and the obligated Party is not able to avoid or remove the force measure by taking reasonable measures. diff --git a/README.md b/README.md new file mode 100644 index 0000000..972b38b --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +

+ October +

+ +[October](https://octobercms.com) is a Content Management System (CMS) and web platform whose sole purpose is to make your development workflow simple again. It was born out of frustration with existing systems. We feel building websites has become a convoluted and confusing process that leaves developers unsatisfied. We want to turn you around to the simpler side and get back to basics. + +October's mission is to show the world that web development is not rocket science. + +[![Build Status](https://github.com/octobercms/library/actions/workflows/tests.yml/badge.svg)](https://octobercms.com/) +[![Downloads](https://img.shields.io/packagist/dt/october/rain)](https://docs.octobercms.com/) +[![Version](https://img.shields.io/packagist/v/october/october)](https://octobercms.com/changelog) +[![License](https://poser.pugx.org/october/october/license.svg)](./LICENSE.md) + +> *Please note*: October is open source but it is not free software. A license with a small fee is required for each website you build with October CMS. + +## Installing October + +Instructions on how to install October can be found at the [installation guide](https://docs.octobercms.com/3.x/setup/installation.html). + +### Quick Start Installation + +If you have composer installed, run this in your terminal to install October CMS from command line. This will place the files in a directory named **myoctober**. + + composer create-project october/october myoctober + +If you plan on using a database, run this command inside the application directory. + + php artisan october:install + +## Learning October + +The best place to learn October CMS is by [reading the documentation](https://docs.octobercms.com) or [following some tutorials](https://octobercms.com/support/articles/tutorials). + +You may also watch this [introductory video](https://www.youtube.com/watch?v=yLZTOeOS7wI). Make sure to check out our [official YouTube channel](https://www.youtube.com/c/OctoberCMSOfficial). There is also the excellent video series by [Watch & Learn](https://watch-learn.com/series/making-websites-with-october-cms). + +For code examples of building with October CMS, visit the [RainLab Plugin Suite](https://github.com/rainlab) or the [October Demos Repo](https://github.com/octoberdemos). + +## Coding Standards + +Please follow the following guides and code standards: + +* [PSR 4 Coding Standards](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md) +* [PSR 2 Coding Style Guide](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) +* [PSR 1 Coding Standards](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md) + +## Security Vulnerabilities + +Please review [our security policy](https://github.com/octobercms/october/security/policy) on how to report security vulnerabilities. + +## Development Team + +October CMS was created by [Alexey Bobkov](https://www.linkedin.com/in/alexey-bobkov-232ba02b/) and [Samuel Georges](https://www.linkedin.com/in/samuel-georges-0a964131/), who both continue to develop the platform. + +## Foundation library + +The CMS uses [Laravel](https://laravel.com) as a foundation PHP framework. + +## Contact + +For announcements and updates: + +* [Contact Us Page](http://octoberdev.test/contact) +* [Follow us on Twitter](https://twitter.com/octobercms) +* [Like us on Facebook](https://facebook.com/octobercms) + +To chat or hang out: + +* [Join us on Slack](https://octobercms.slack.com) +* [Join us on Discord](https://discord.gg/gEKgwSZ) +* [Join us on Telegram](https://t.me/octoberchat) + +## License + +The October CMS platform is licensed software, see [End User License Agreement](./LICENSE.md) (EULA) for more details. diff --git a/app/Provider.php b/app/Provider.php new file mode 100644 index 0000000..b34c2b4 --- /dev/null +++ b/app/Provider.php @@ -0,0 +1,29 @@ +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running. We will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..1364df4 --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + October\Rain\Foundation\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + October\Rain\Foundation\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + October\Rain\Foundation\Exception\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/autoload.php b/bootstrap/autoload.php new file mode 100644 index 0000000..99bf82c --- /dev/null +++ b/bootstrap/autoload.php @@ -0,0 +1,53 @@ + env('APP_NAME', 'October CMS'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + | You can create a CMS page with route "/error" to set the contents + | of this page. Otherwise a default error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL'), + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => env('APP_LOCALE', 'en'), + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => array_merge(include(base_path('modules/system/providers.php')), [ + + // Core Service Provider + System\ServiceProvider::class, + + // Package Service Providers... + // Illuminate\Html\HtmlServiceProvider::class, // Example + + ]), + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => array_merge(include(base_path('modules/system/aliases.php')), [ + + // 'Str' => Illuminate\Support\Str::class, // Example + + ]), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + |-------------------------------- WARNING! -------------------------------- + | + | Before you change this value, consider carefully if that is actually + | what you want to do. It is highly recommended that this is always set + | to UTC (as your server & DB timezone should be as well) and instead + | you can use backend.timezone or cms.timezone to set the default + | timezone used to display dates & times. + | + */ + + 'timezone' => 'UTC', + +]; diff --git a/config/backend.php b/config/backend.php new file mode 100644 index 0000000..99b4441 --- /dev/null +++ b/config/backend.php @@ -0,0 +1,211 @@ + http://localhost/admin + | + */ + + 'uri' => env('BACKEND_URI', 'admin'), + + /* + |-------------------------------------------------------------------------- + | Backend Skin + |-------------------------------------------------------------------------- + | + | Specifies the backend skin class to use. + | + */ + + 'skin' => Backend\Skins\Standard::class, + + /* + |-------------------------------------------------------------------------- + | Default Branding + |-------------------------------------------------------------------------- + | + | The default backend customization settings. These values are all optional + | and remember to set the enabled value to true. Supported values: + | + | - menu_mode: inline, text, tile, collapse, icons, left + | - color_mode: light, dark, auto + | - color_palette: default, classic, oxford, console, valentino, punch + | - login_background_type: color, wallpaper, october_ai_images + | - login_background_wallpaper_size: auto, cover + | - login_image_type: autumn_images, custom + | + */ + + 'brand' => [ + 'enabled' => false, + 'app_name' => env('APP_NAME', 'October CMS'), + 'tagline' => 'Administration Panel', + 'menu_mode' => 'icons', + 'color_mode' => 'light', + 'color_palette' => 'default', + 'logo_path' => '~/app/assets/images/logo.png', + 'favicon_path' => '~/app/assets/images/favicon.png', + 'menu_logo_path' => '~/app/assets/images/menu_logo.png', + 'dashboard_icon_path' => '~/app/assets/images/dashboard_icon.png', + 'stylesheet_path' => '~/app/assets/css/brand_styles.css', + 'login_background_type' => 'color', + 'login_background_color' => '#fef6eb', + 'login_background_wallpaper' => '~/app/assets/images/login_wallpaper.png', + 'login_background_wallpaper_size' => 'auto', + 'login_image_type' => 'autumn_images', + 'login_custom_image' => '~/app/assets/images/loginimage.png', + ], + + /* + |-------------------------------------------------------------------------- + | Turbo Router + |-------------------------------------------------------------------------- + | + | Enhance the backend experience using PJAX (push state and AJAX) so when + | you click a link, the page is automatically swapped client-side without + | the cost of a full page load. + | + */ + + 'turbo_router' => env('BACKEND_TURBO_ROUTER', false), + + /* + |-------------------------------------------------------------------------- + | Force HTTPS security + |-------------------------------------------------------------------------- + | + | Use this setting to force a secure protocol when accessing any backend + | pages, including the authentication pages. This is usually handled by + | web server config, but can be handled by the app for added security. + | + */ + + 'force_secure' => false, + + /* + |-------------------------------------------------------------------------- + | Remember Login + |-------------------------------------------------------------------------- + | + | Define live duration of backend sessions: + | + | true - session never expires (cookie expiration in 5 years) + | false - session has a limited time (see session.lifetime) + | null - the form login displays a checkbox that allow user to choose + | + */ + + 'force_remember' => null, + + /* + |-------------------------------------------------------------------------- + | Force Single Session + |-------------------------------------------------------------------------- + | + | Use this setting to prevent concurrent sessions. When enabled, backend + | users cannot sign in to multiple devices at the same time. When a new + | sign in occurs, all other sessions for that user are invalidated. + | + */ + + 'force_single_session' => false, + + /* + |-------------------------------------------------------------------------- + | Force Mail Setting + |-------------------------------------------------------------------------- + | + | Use this setting to remove the option to configure the mail settings + | via the backend. This can be used in developer environments to prevent + | accidentally sending mail via the configured database. + | + */ + + 'force_mail_setting' => false, + + /* + |-------------------------------------------------------------------------- + | Password Policy + |-------------------------------------------------------------------------- + | + | Specify the password policy for backend administrators. + | + | allow_reset - Allow administrators to reset their own passwords via self service + | min_length - Password minimum length between 4 - 128 chars + | require_uppercase - Require at least one uppercase letter (A–Z) + | require_lowercase - Require at least one lowercase letter (a–z) + | require_number - Require at least one number + | require_nonalpha - Require at least one non-alphanumeric character + | expire_days - Enable password expiration after number of days, false to disable + | + */ + + 'password_policy' => [ + 'allow_reset' => true, + 'min_length' => 4, + 'require_uppercase' => false, + 'require_lowercase' => false, + 'require_number' => false, + 'require_nonalpha' => false, + 'expire_days' => false, + ], + + /* + |-------------------------------------------------------------------------- + | Default Avatar + |-------------------------------------------------------------------------- + | + | The default avatar used for backend accounts that have no avatar defined. + | + | local - Use a local default image of a user + | gravatar - Use the Gravatar service to generate a unique image + | - Specify a custom URL to a default avatar + | + */ + + 'default_avatar' => 'gravatar', + + /* + |-------------------------------------------------------------------------- + | Backend Locale + |-------------------------------------------------------------------------- + | + | This acts as the default setting for a backend user's locale. This can + | be changed by the user at any time using the backend preferences. + | + */ + + 'locale' => env('APP_LOCALE', 'en'), + + /* + |-------------------------------------------------------------------------- + | Backend Timezone + |-------------------------------------------------------------------------- + | + | This acts as the default setting for a backend user's timezone. This can + | be changed by the user at any time using the backend preferences. All + | dates displayed in the backend will be converted to this timezone. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Middleware Group + |-------------------------------------------------------------------------- + | + | The name of the middleware group to apply to all backend application routes. + | You may use this to apply your own middleware definition. + | + */ + + 'middleware_group' => 'web', + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 0000000..e4d5204 --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,53 @@ + env('BROADCASTING_DEFAULT', 'pusher'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_KEY'), + 'secret' => env('PUSHER_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => 'eu', + 'encrypted' => true, + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..8bc0312 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,99 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'october'), '_').'_cache_'), + +]; diff --git a/config/cms.php b/config/cms.php new file mode 100644 index 0000000..46b9906 --- /dev/null +++ b/config/cms.php @@ -0,0 +1,253 @@ + env('ACTIVE_THEME', 'demo'), + + /* + |-------------------------------------------------------------------------- + | Database Themes + |-------------------------------------------------------------------------- + | + | Globally forces all themes to store template changes in the database, + | instead of the file system. If this feature is enabled, changes will + | not be stored in the file system. + | + | false - All theme templates are sourced from the filesystem. + | true - Source theme templates from the database with fallback to the filesystem. + | + */ + + 'database_templates' => env('CMS_DB_TEMPLATES', false), + + /* + |-------------------------------------------------------------------------- + | Template Strictness + |-------------------------------------------------------------------------- + | + | When enabled, an error is thrown when a component, variable, or attribute + | used does not exist. When disabled, a null value is returned instead. + | + */ + + 'strict_variables' => env('CMS_STRICT_VARIABLES', false), + + 'strict_components' => env('CMS_STRICT_COMPONENTS', false), + + /* + |-------------------------------------------------------------------------- + | Frontend Timezone + |-------------------------------------------------------------------------- + | + | This acts as the default setting for a frontend user's timezone used when + | converting dates from the system setting, typically set to UTC. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Template Caching + |-------------------------------------------------------------------------- + | + | Specifies the number of minutes the CMS object cache lives. After the interval + | is expired item are re-cached. Note that items are re-cached automatically when + | the corresponding template file is modified. + | + */ + + 'template_cache_ttl' => 1440, + + /* + |-------------------------------------------------------------------------- + | Twig Cache + |-------------------------------------------------------------------------- + | + | Store a temporary cache of parsed Twig templates in the local filesystem. + | + */ + + 'enable_twig_cache' => env('CMS_TWIG_CACHE', true), + + /* + |-------------------------------------------------------------------------- + | Determines if the routing caching is enabled. + |-------------------------------------------------------------------------- + | + | If the caching is enabled, the page URL map is saved in the cache. If a page + | URL was changed on the disk, the old URL value could be still saved in the cache. + | To update the cache the clear:cache command should be used. It is recommended + | to disable the caching during the development, and enable it in the production mode. + | + */ + + 'enable_route_cache' => env('CMS_ROUTE_CACHE', true), + + /* + |-------------------------------------------------------------------------- + | Page URL Exceptions (Beta) + |-------------------------------------------------------------------------- + | + | This configuration can be used to bypass CMS routing logic, such as the + | maintenance mode page and site definition prefix. The key matches a page + | URL match with support for wildcards. The following exception values can + | be configured separated by the pipe character (|). + | + | maintenance - Skip maintenance mode and always allow access to this page + | site - Skip the multisite definition matching engine + | + */ + + 'url_exceptions' => [ + // '/api/*' => 'maintenance', + // '/sitemap.xml' => 'site|maintenance', + ], + + /* + |-------------------------------------------------------------------------- + | Time to live for the URL map. + |-------------------------------------------------------------------------- + | + | The URL map used in the CMS page routing process. By default + | the map is updated every time when a page is saved in the backend or when the + | interval, in minutes, specified with the url_cache_ttl parameter expires. + | + */ + + 'url_cache_ttl' => 60, + + /* + |-------------------------------------------------------------------------- + | Determines if the asset caching is enabled. + |-------------------------------------------------------------------------- + | + | If the caching is enabled, combined assets are cached. If a asset file + | is changed on the disk, the old file contents could be still saved in the cache. + | To update the cache the clear cache command should be used. It is recommended + | to disable the caching during the development, and enable it in the production mode. + | + */ + + 'enable_asset_cache' => env('CMS_ASSET_CACHE', true), + + /* + |-------------------------------------------------------------------------- + | Determines if the asset minification is enabled. + |-------------------------------------------------------------------------- + | + | If the minification is enabled, combined assets are compressed (minified). + | It is recommended to disable the minification during development, and + | enable it in production mode. + | + */ + + 'enable_asset_minify' => env('CMS_ASSET_MINIFY', false), + + /* + |-------------------------------------------------------------------------- + | Check Import Timestamps When Combining Assets + |-------------------------------------------------------------------------- + | + | If deep hashing is enabled, the combiner cache will be reset when a change + | is detected on imported files, in addition to those referenced directly. + | This will cause slower page performance. If set to null, deep hashing + | is used when debug mode (app.debug) is enabled. + | + */ + + 'enable_asset_deep_hashing' => env('CMS_ASSET_DEEP_HASHING', null), + + /* + |-------------------------------------------------------------------------- + | Site Redirect Policy + |-------------------------------------------------------------------------- + | + | Controls the behavior when the root URL is opened without a matched site. + | + | detect - detect the site based on the browser language + | primary - use the primary site + | - use a specific site identifier (id) + | + */ + + 'redirect_policy' => env('CMS_REDIRECT_POLICY', 'detect'), + + /* + |-------------------------------------------------------------------------- + | Force Bytecode Invalidation + |-------------------------------------------------------------------------- + | + | When using Opcache with opcache.validate_timestamps set to 0 or APC + | with apc.stat set to 0 and Twig cache enabled, clearing the template + | cache won't update the cache, set to true to get around this. + | + */ + + 'force_bytecode_invalidation' => true, + + /* + |-------------------------------------------------------------------------- + | Safe Mode + |-------------------------------------------------------------------------- + | + | If safe mode is enabled, the PHP code section is disabled in the CMS + | for security reasons. If set to null, safe mode is enabled when + | debug mode (app.debug) is disabled. + | + */ + + 'safe_mode' => env('CMS_SAFE_MODE', null), + + /* + |-------------------------------------------------------------------------- + | Middleware Group + |-------------------------------------------------------------------------- + | + | The name of the middleware group to apply to all CMS application routes. + | You may use this to apply your own middleware definition, or use some + | of the defaults: web, api + | + */ + + 'middleware_group' => 'web', + + /* + |-------------------------------------------------------------------------- + | V1 Security Policy + |-------------------------------------------------------------------------- + | + | When using safe mode configuration, the Twig sandbox becomes very strict and + | uses an allow-list to protect calling unapproved methods. Instead, you may + | use V1, which is a more relaxed policy that uses a block-list, it blocks + | most of the unsecure methods but is not as secure as an allow-list. + | + */ + + 'security_policy_v1' => env('CMS_SECURITY_POLICY_V1', false), + + /* + |-------------------------------------------------------------------------- + | V1 Exception Policy + |-------------------------------------------------------------------------- + | + | When debug mode is off, throwing exceptions in AJAX will display a generic + | message, except for specific exception types such as ApplicationException + | and ValidationException (allow-list). Instead, you may use V1, which is + | a more relaxed policy that allows all messages and blocks common exception + | types (block-list) but may still leak information in rare cases. + | + */ + + 'exception_policy_v1' => env('CMS_EXCEPTION_POLICY_V1', false), + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..c53e0a6 --- /dev/null +++ b/config/database.php @@ -0,0 +1,158 @@ + PDO::FETCH_CLASS, + + /* + |-------------------------------------------------------------------------- + | Default Database Connection Name + |-------------------------------------------------------------------------- + | + | Here you may specify which of the database connections below you wish + | to use as your default connection for all database work. Of course + | you may use many connections at once using the Database library. + | + */ + + 'default' => env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'database'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => 'InnoDB', + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'database'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'schema' => 'public', + 'sslmode' => env('DB_SSLMODE', 'prefer'), + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'database'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk have not actually be run in the databases. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer set of commands than a typical key-value systems + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', 'october_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', 6379), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/editor.php b/config/editor.php new file mode 100644 index 0000000..8c4a9ff --- /dev/null +++ b/config/editor.php @@ -0,0 +1,61 @@ + [ + 'enabled' => false, + 'stylesheet_path' => '~/app/assets/css/editor_styles.css', + 'toolbar_buttons' => 'paragraphFormat, paragraphStyle, quote, bold, italic, align, formatOL, formatUL, insertTable, insertSnippet, insertPageLink, insertImage, insertVideo, insertAudio, insertFile, insertHR, fullscreen, html', + 'allow_tags' => 'a, abbr, address, area, article, aside, audio, b, base, bdi, bdo, blockquote, br, button, canvas, caption, cite, code, col, colgroup, datalist, dd, del, details, dfn, dialog, div, dl, dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, i, iframe, img, input, ins, kbd, keygen, label, legend, li, link, main, map, mark, menu, menuitem, meter, nav, noscript, object, ol, optgroup, option, output, p, param, pre, progress, queue, rp, rt, ruby, s, samp, script, style, section, select, small, source, span, strike, strong, sub, summary, sup, table, tbody, td, textarea, tfoot, th, thead, time, title, tr, track, u, ul, var, video, wbr', + 'allow_empty_tags' => 'textarea, a, i, iframe, object, video, style, script, .icon, .bi, .fa, .fr-emoticon, .fr-inner, path, line', + 'no_wrap_tags' => 'figure, script, style', + 'remove_tags' => 'script, style', + 'line_breaker_tags' => 'figure, table, hr, iframe, form, dl', + 'allow_attrs' => '', + 'paragraph_formats' => [ + 'N' => 'Normal', + 'H1' => 'Heading 1', + 'H2' => 'Heading 2', + 'H3' => 'Heading 3', + 'H4' => 'Heading 4', + 'PRE' => 'Code', + ], + 'style_paragraph' => [ + 'oc-text-bordered' => 'Bordered', + 'oc-text-gray' => 'Gray', + 'oc-text-spaced' => 'Spaced', + 'oc-text-uppercase' => 'Uppercase', + ], + 'style_link' => [ + 'oc-link-green' => 'Green', + 'oc-link-strong' => 'Strong', + ], + 'style_table' => [ + 'oc-dashed-borders' => 'Dashed Borders', + 'oc-alternate-rows' => 'Alternate Rows', + ], + 'style_table_cell' => [ + 'oc-cell-highlighted' => 'Highlighted', + 'oc-cell-thick-border' => 'Thick Border', + ], + 'style_image' => [ + 'oc-img-rounded' => 'Rounded', + 'oc-img-bordered' => 'Bordered', + ], + 'editor_options' => [], + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..8e21ebf --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,77 @@ + env('FILESYSTEM_DRIVER', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been setup for each driver as an example of the required options. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + 'throw' => false, + ], + + 'uploads' => [ + 'driver' => 'local', + 'root' => storage_path('app/uploads'), + 'url' => '/storage/app/uploads', + 'visibility' => 'public', + 'throw' => false, + ], + + 'media' => [ + 'driver' => 'local', + 'root' => storage_path('app/media'), + 'url' => '/storage/app/media', + 'visibility' => 'public', + 'throw' => false, + ], + + 'resources' => [ + 'driver' => 'local', + 'root' => storage_path('app/resources'), + 'url' => '/storage/app/resources', + 'visibility' => 'public', + 'throw' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + ], + + ], + +]; diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 0000000..8425770 --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 1024, + 'threads' => 2, + 'time' => 2, + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..62ce5e2 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,93 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['daily'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/system.log'), + 'level' => 'debug' + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/system.log'), + 'level' => 'debug', + 'days' => 14 + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'October CMS Log', + 'emoji' => ':boom:', + 'level' => 'critical', + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => 'debug', + 'handler' => Monolog\Handler\SyslogUdpHandler::class, + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'handler' => Monolog\Handler\StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => 'debug', + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => 'debug', + ], + + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..19defe9 --- /dev/null +++ b/config/mail.php @@ -0,0 +1,99 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", + | "postmark", "log", "array" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'auth_mode' => null, + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + ], + + 'postmark' => [ + 'transport' => 'postmark', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'noreply@example.tld'), + 'name' => env('MAIL_FROM_NAME', 'October CMS'), + ], + +]; diff --git a/config/media.php b/config/media.php new file mode 100644 index 0000000..90b0d14 --- /dev/null +++ b/config/media.php @@ -0,0 +1,102 @@ + 10, + + /* + |-------------------------------------------------------------------------- + | Automatically Rename Filenames + |-------------------------------------------------------------------------- + | + | When a media file is uploaded, automatically transform its filename to + | something consistent. The "slug" mode will slug the file name for all + | uploads. + | + | Supported: "null", "slug" + | + */ + + 'auto_rename' => null, + + /* + |-------------------------------------------------------------------------- + | Clean Vector Files + |-------------------------------------------------------------------------- + | + | When a vector file (SVG) file is uploaded, automatically process its + | contents to remove scripts and other potentially dangerous content. + | + */ + + 'clean_vectors' => true, + + /* + |-------------------------------------------------------------------------- + | Ignored Files and Patterns + |-------------------------------------------------------------------------- + | + | The media manager wil ignore file names and patterns specified here + | + */ + + 'ignore_files' => ['.svn', '.git', '.DS_Store', '.AppleDouble'], + + 'ignore_patterns' => ['^\..*'], + + /* + |-------------------------------------------------------------------------- + | Allowed Extensions + |-------------------------------------------------------------------------- + | + | Only allow the following extensions to be uploaded and stored. + | + */ + + 'default_extensions' => ['jpg', 'jpeg', 'bmp', 'png', 'webp', 'gif', 'svg', 'js', 'map', 'ico', 'css', 'less', 'scss', 'ics', 'odt', 'doc', 'docx', 'ppt', 'pptx', 'pdf', 'swf', 'txt', 'ods', 'xls', 'xlsx', 'eot', 'woff', 'woff2', 'ttf', 'flv', 'wmv', 'mp3', 'ogg', 'wav', 'avi', 'mov', 'mp4', 'mpeg', 'webm', 'mkv', 'rar', 'zip'], + + /* + |-------------------------------------------------------------------------- + | Image Extensions + |-------------------------------------------------------------------------- + | + | File extensions corresponding to the Image document type + | + */ + + 'image_extensions' => ['jpg', 'jpeg', 'bmp', 'png', 'webp', 'gif', 'svg'], + + /* + |-------------------------------------------------------------------------- + | Video Extensions + |-------------------------------------------------------------------------- + | + | File extensions corresponding to the Video document type + | + */ + + 'video_extensions' => ['mp4', 'avi', 'mov', 'mpg', 'mpeg', 'mkv', 'webm'], + + /* + |-------------------------------------------------------------------------- + | Audio Extensions + |-------------------------------------------------------------------------- + | + | File extensions corresponding to the Audio document type + | + */ + + 'audio_extensions' => ['mp3', 'wav', 'wma', 'm4a', 'ogg'], + +]; diff --git a/config/multisite.php b/config/multisite.php new file mode 100644 index 0000000..4dd8322 --- /dev/null +++ b/config/multisite.php @@ -0,0 +1,37 @@ + true, + + /* + |-------------------------------------------------------------------------- + | Multisite Features + |-------------------------------------------------------------------------- + | + | Use multisite for the features defined below. Be sure to clear the application + | cache after modifying these settings. + | + | - cms_maintenance_setting - Maintenance Mode Settings are unique for each site + | - backend_mail_setting - Mail Settings are unique for each site + | - system_asset_combiner - Asset combiner cache keys are unique to the site + | + */ + + 'features' => [ + 'cms_maintenance_setting' => false, + 'backend_mail_setting' => false, + 'system_asset_combiner' => false, + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..7fa995c --- /dev/null +++ b/config/queue.php @@ -0,0 +1,90 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'your-queue-name'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..b89f02c --- /dev/null +++ b/config/services.php @@ -0,0 +1,34 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + 'scheme' => 'https', + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..ce64bbf --- /dev/null +++ b/config/session.php @@ -0,0 +1,200 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle for it is expired. If you want them + | to immediately expire when the browser closes, set it to zero. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env('SESSION_COOKIE', 'october_session'), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application, but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you if it can not be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | do not enable this as other CSRF protection services are in place. + | + | In the strict mode, the cookie is not sent with any cross-site usage + | even if the user follows a link to another website. Lax cookies are + | only sent with a top-level get request. + | + | Supported: "lax", "strict" + | + */ + + 'same_site' => 'lax', + +]; diff --git a/config/system.php b/config/system.php new file mode 100644 index 0000000..1184fed --- /dev/null +++ b/config/system.php @@ -0,0 +1,181 @@ + env('LOAD_MODULES'), + + /* + |-------------------------------------------------------------------------- + | Disable Specified Plugins + |-------------------------------------------------------------------------- + | + | Specify plugin codes which will always be disabled in the application. + | + | DISABLE_PLUGINS="October.Demo,RainLab.Blog" + | + */ + + 'disable_plugins' => env('DISABLE_PLUGINS'), + + /* + |-------------------------------------------------------------------------- + | Link Policy + |-------------------------------------------------------------------------- + | + | Controls how URL links are generated throughout the application. + | + | detect - detect hostname and use the current schema + | secure - detect hostname and force HTTPS schema + | insecure - detect hostname and force HTTP schema + | force - force hostname and schema using app.url config value + | + | By default most links use their fully qualified URLs or reference their + | CDN location. In some cases you may prefer relative links where possible + | if so, set the relative_links value to true. + | + */ + + 'link_policy' => env('LINK_POLICY', 'detect'), + + 'relative_links' => env('RELATIVE_LINKS', false), + + /* + |-------------------------------------------------------------------------- + | System Paths + |-------------------------------------------------------------------------- + | + | Specify location to core system paths. Local paths are relative if they + | do not have a leading slash. URLs can be relative to the base application + | URL or you can specify a full path URL. + | + | PLUGINS_PATH="plugins" + | PLUGINS_ASSET_URL="/plugins" + | + | THEMES_PATH="/absolute/path/to/themes" + | THEMES_ASSET_URL="http://localhost/themes" + | + */ + + 'plugins_path' => env('PLUGINS_PATH'), + + 'plugins_asset_url' => env('PLUGINS_ASSET_URL'), + + 'themes_path' => env('THEMES_PATH'), + + 'themes_asset_url' => env('THEMES_ASSET_URL'), + + 'storage_path' => env('STORAGE_PATH'), + + 'cache_path' => env('CACHE_PATH'), + + /* + |-------------------------------------------------------------------------- + | Default Permission Masks + |-------------------------------------------------------------------------- + | + | Specifies a default file and folder permission as a string (eg: "755") for + | created files and directories in the system paths. It is recommended + | to use file as "644" and folder as "755". + | + */ + + 'default_mask' => [ + 'file' => env('DEFAULT_FILE_MASK'), + 'folder' => env('DEFAULT_FOLDER_MASK'), + ], + + /* + |-------------------------------------------------------------------------- + | Cross Site Request Forgery (CSRF) Protection + |-------------------------------------------------------------------------- + | + | If the CSRF protection is enabled, all "postback" & AJAX requests are + | checked for a valid security token. + | + */ + + 'enable_csrf_protection' => env('ENABLE_CSRF', true), + + /* + |-------------------------------------------------------------------------- + | Convert Line Endings + |-------------------------------------------------------------------------- + | + | Determines if October CMS should convert line endings from the Windows + | style \r\n to the Unix style \n. + | + */ + + 'convert_line_endings' => env('CONVERT_LINE_ENDINGS', false), + + /* + |-------------------------------------------------------------------------- + | Cookie Encryption + |-------------------------------------------------------------------------- + | + | October CMS encrypts/decrypts cookies by default. You can specify cookies + | that should not be encrypted or decrypted here. This is useful, for + | example, when you want to pass data from frontend to server side backend + | via cookies, and vice versa. + | + */ + + 'unencrypt_cookies' => env('UNENCRYPT_COOKIES', [ + // 'my_cookie', + ]), + + /* + |-------------------------------------------------------------------------- + | Automatically Mirror to Public Directory + |-------------------------------------------------------------------------- + | + | Performed after a composer update. + | + | true - automatically mirror asset to the public directory + | false - never mirror assets to public directory + | null - only mirror assets when debug mode is OFF (in production) + | + */ + + 'auto_mirror_public' => env('AUTO_MIRROR_PUBLIC', false), + + /* + |-------------------------------------------------------------------------- + | Automatically Rollback Plugins + |-------------------------------------------------------------------------- + | + | Attempt to automatically reverse database migrations for a plugin when + | they are uninstalled using composer. This is disabled by default + | to prevent data loss. + | + */ + + 'auto_rollback_plugins' => env('AUTO_ROLLBACK_PLUGINS', false), + + /* + |-------------------------------------------------------------------------- + | Base Directory Restriction + |-------------------------------------------------------------------------- + | + | Restricts loading backend template and config files to within the base + | directory of the application. For example, when using the symlink option + | in composer for local packages. + | + | Warning: This should never be disabled in production for security reasons. + | + */ + + 'restrict_base_dir' => env('RESTRICT_BASE_DIR', true), + +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 0000000..d9dee4c --- /dev/null +++ b/config/view.php @@ -0,0 +1,36 @@ + [ + app_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/database/data.txt b/database/data.txt new file mode 100644 index 0000000..a86f9e9 --- /dev/null +++ b/database/data.txt @@ -0,0 +1,25 @@ +fleet_october.txt +SZA88-XKBPD-4ZCXD-0LCLK + + + +root + +86.105.18.208 + +X1qRs03Iw2Fe2E4Zho + + +https://www.figma.com/file/esgl1AlY11kk32WpsvTaz6/Untitled?type=design&node-id=0%3A1&mode=dev + + + +auth.json +{ + "http-basic": { + "gateway.octobercms.com": { + "username": "laskttt@proton.me", + "password": "1AQNlBQVgH1cOBQu8JRgPHRE8AScQJRE8ZRkQGRfgBTZlBTVmZQWwZGEyAzR1AzHkMJRlAJRmZmt0BQAxAwD" + } + } +} diff --git a/database/database.sql b/database/database.sql new file mode 100644 index 0000000..904c45f --- /dev/null +++ b/database/database.sql @@ -0,0 +1,1913 @@ +-- MySQL dump 10.13 Distrib 8.0.37, for Linux (x86_64) +-- +-- Host: localhost Database: test1 +-- ------------------------------------------------------ +-- Server version 8.0.37-0ubuntu0.20.04.3 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!50503 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `backend_access_log` +-- + +DROP TABLE IF EXISTS `backend_access_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `backend_access_log` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `user_id` int unsigned NOT NULL, + `ip_address` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `backend_access_log` +-- + +LOCK TABLES `backend_access_log` WRITE; +/*!40000 ALTER TABLE `backend_access_log` DISABLE KEYS */; +/*!40000 ALTER TABLE `backend_access_log` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `backend_dashboards` +-- + +DROP TABLE IF EXISTS `backend_dashboards`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `backend_dashboards` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `definition` mediumtext COLLATE utf8mb4_unicode_ci, + `icon` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `global_access` tinyint(1) NOT NULL DEFAULT '0', + `updated_user_id` bigint unsigned DEFAULT NULL, + `created_user_id` bigint unsigned DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `dashboard_slug_unique` (`slug`), + KEY `dashboard_name_index` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `backend_dashboards` +-- + +LOCK TABLES `backend_dashboards` WRITE; +/*!40000 ALTER TABLE `backend_dashboards` DISABLE KEYS */; +/*!40000 ALTER TABLE `backend_dashboards` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `backend_report_data_cache` +-- + +DROP TABLE IF EXISTS `backend_report_data_cache`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `backend_report_data_cache` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `value` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `value_date` date NOT NULL, + PRIMARY KEY (`id`), + KEY `backend_report_data_cache_created_at_index` (`created_at`), + KEY `backend_report_data_cache_key_value_date_index` (`key`,`value_date`), + KEY `backend_report_data_cache_key_index` (`key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `backend_report_data_cache` +-- + +LOCK TABLES `backend_report_data_cache` WRITE; +/*!40000 ALTER TABLE `backend_report_data_cache` DISABLE KEYS */; +/*!40000 ALTER TABLE `backend_report_data_cache` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `backend_user_groups` +-- + +DROP TABLE IF EXISTS `backend_user_groups`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `backend_user_groups` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb4_unicode_ci, + `is_new_user_default` tinyint(1) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name_unique` (`name`), + KEY `code_index` (`code`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `backend_user_groups` +-- + +LOCK TABLES `backend_user_groups` WRITE; +/*!40000 ALTER TABLE `backend_user_groups` DISABLE KEYS */; +INSERT INTO `backend_user_groups` VALUES (1,'Owners','owners','Default group for website owners.',0,'2024-07-13 10:43:46','2024-07-13 10:43:46'); +/*!40000 ALTER TABLE `backend_user_groups` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `backend_user_preferences` +-- + +DROP TABLE IF EXISTS `backend_user_preferences`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `backend_user_preferences` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `user_id` int unsigned NOT NULL, + `namespace` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL, + `group` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `item` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL, + `value` text COLLATE utf8mb4_unicode_ci, + `site_id` int unsigned DEFAULT NULL, + `site_root_id` int unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `user_item_index` (`user_id`,`namespace`,`group`,`item`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `backend_user_preferences` +-- + +LOCK TABLES `backend_user_preferences` WRITE; +/*!40000 ALTER TABLE `backend_user_preferences` DISABLE KEYS */; +/*!40000 ALTER TABLE `backend_user_preferences` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `backend_user_roles` +-- + +DROP TABLE IF EXISTS `backend_user_roles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `backend_user_roles` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `color_background` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb4_unicode_ci, + `permissions` mediumtext COLLATE utf8mb4_unicode_ci, + `is_system` tinyint(1) NOT NULL DEFAULT '0', + `sort_order` int DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `role_unique` (`name`), + KEY `role_code_index` (`code`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `backend_user_roles` +-- + +LOCK TABLES `backend_user_roles` WRITE; +/*!40000 ALTER TABLE `backend_user_roles` DISABLE KEYS */; +INSERT INTO `backend_user_roles` VALUES (1,'Developer','developer','#3498db','Site administrator with access to developer tools.','',1,1,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(2,'Publisher','publisher','#1abc9c','Site editor with access to publishing tools.','',1,2,'2024-07-13 10:43:46','2024-07-13 10:43:46'); +/*!40000 ALTER TABLE `backend_user_roles` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `backend_user_throttle` +-- + +DROP TABLE IF EXISTS `backend_user_throttle`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `backend_user_throttle` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `user_id` int unsigned DEFAULT NULL, + `ip_address` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `attempts` int NOT NULL DEFAULT '0', + `last_attempt_at` timestamp NULL DEFAULT NULL, + `is_suspended` tinyint(1) NOT NULL DEFAULT '0', + `suspended_at` timestamp NULL DEFAULT NULL, + `is_banned` tinyint(1) NOT NULL DEFAULT '0', + `banned_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `backend_user_throttle_user_id_index` (`user_id`), + KEY `backend_user_throttle_ip_address_index` (`ip_address`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `backend_user_throttle` +-- + +LOCK TABLES `backend_user_throttle` WRITE; +/*!40000 ALTER TABLE `backend_user_throttle` DISABLE KEYS */; +/*!40000 ALTER TABLE `backend_user_throttle` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `backend_users` +-- + +DROP TABLE IF EXISTS `backend_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `backend_users` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `first_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `last_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `login` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `activation_code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `persist_code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `reset_password_code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `permissions` mediumtext COLLATE utf8mb4_unicode_ci, + `is_activated` tinyint(1) NOT NULL DEFAULT '0', + `is_superuser` tinyint(1) NOT NULL DEFAULT '0', + `activated_at` timestamp NULL DEFAULT NULL, + `last_login` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `role_id` int unsigned DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `is_password_expired` tinyint(1) NOT NULL DEFAULT '0', + `password_changed_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `login_unique` (`login`), + UNIQUE KEY `email_unique` (`email`), + KEY `act_code_index` (`activation_code`), + KEY `reset_code_index` (`reset_password_code`), + KEY `admin_role_index` (`role_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `backend_users` +-- + +LOCK TABLES `backend_users` WRITE; +/*!40000 ALTER TABLE `backend_users` DISABLE KEYS */; +/*!40000 ALTER TABLE `backend_users` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `backend_users_groups` +-- + +DROP TABLE IF EXISTS `backend_users_groups`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `backend_users_groups` ( + `user_id` int unsigned NOT NULL, + `user_group_id` int unsigned NOT NULL, + PRIMARY KEY (`user_id`,`user_group_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `backend_users_groups` +-- + +LOCK TABLES `backend_users_groups` WRITE; +/*!40000 ALTER TABLE `backend_users_groups` DISABLE KEYS */; +/*!40000 ALTER TABLE `backend_users_groups` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `cache` +-- + +DROP TABLE IF EXISTS `cache`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `cache` ( + `key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `value` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `expiration` int NOT NULL, + UNIQUE KEY `cache_key_unique` (`key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `cache` +-- + +LOCK TABLES `cache` WRITE; +/*!40000 ALTER TABLE `cache` DISABLE KEYS */; +/*!40000 ALTER TABLE `cache` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `cms_theme_data` +-- + +DROP TABLE IF EXISTS `cms_theme_data`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `cms_theme_data` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `theme` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `data` mediumtext COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `cms_theme_data_theme_index` (`theme`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `cms_theme_data` +-- + +LOCK TABLES `cms_theme_data` WRITE; +/*!40000 ALTER TABLE `cms_theme_data` DISABLE KEYS */; +/*!40000 ALTER TABLE `cms_theme_data` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `cms_theme_logs` +-- + +DROP TABLE IF EXISTS `cms_theme_logs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `cms_theme_logs` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, + `theme` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `template` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `old_template` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content` longtext COLLATE utf8mb4_unicode_ci, + `old_content` longtext COLLATE utf8mb4_unicode_ci, + `user_id` int DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `cms_theme_logs_type_index` (`type`), + KEY `cms_theme_logs_theme_index` (`theme`), + KEY `cms_theme_logs_user_id_index` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `cms_theme_logs` +-- + +LOCK TABLES `cms_theme_logs` WRITE; +/*!40000 ALTER TABLE `cms_theme_logs` DISABLE KEYS */; +/*!40000 ALTER TABLE `cms_theme_logs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `cms_theme_templates` +-- + +DROP TABLE IF EXISTS `cms_theme_templates`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `cms_theme_templates` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `source` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `content` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `file_size` int unsigned NOT NULL, + `updated_at` datetime DEFAULT NULL, + `deleted_at` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `cms_theme_templates_source_index` (`source`), + KEY `cms_theme_templates_path_index` (`path`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `cms_theme_templates` +-- + +LOCK TABLES `cms_theme_templates` WRITE; +/*!40000 ALTER TABLE `cms_theme_templates` DISABLE KEYS */; +/*!40000 ALTER TABLE `cms_theme_templates` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `cms_traffic_stats_pageviews` +-- + +DROP TABLE IF EXISTS `cms_traffic_stats_pageviews`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `cms_traffic_stats_pageviews` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `ev_datetime` datetime DEFAULT NULL, + `ev_date` date DEFAULT NULL, + `ev_year_month_day` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `ev_year_month` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `ev_year_quarter` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `ev_year_week` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `ev_year` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `ev_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `user_authenticated` tinyint(1) DEFAULT NULL, + `client_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `first_time_visit` tinyint(1) NOT NULL DEFAULT '0', + `user_agent` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `page_path` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `ip` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `city` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `country` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `referral_domain` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `cms_traffic_stats_pageviews_ev_datetime_index` (`ev_datetime`), + KEY `cms_traffic_stats_pageviews_ev_date_index` (`ev_date`), + KEY `cms_traffic_stats_pageviews_ev_year_month_day_index` (`ev_year_month_day`), + KEY `cms_traffic_stats_pageviews_ev_year_month_index` (`ev_year_month`), + KEY `cms_traffic_stats_pageviews_ev_year_quarter_index` (`ev_year_quarter`), + KEY `cms_traffic_stats_pageviews_ev_year_week_index` (`ev_year_week`), + KEY `cms_traffic_stats_pageviews_ev_year_index` (`ev_year`), + KEY `cms_traffic_stats_pageviews_ev_timestamp_index` (`ev_timestamp`), + KEY `cms_traffic_stats_pageviews_user_authenticated_index` (`user_authenticated`), + KEY `cms_traffic_stats_pageviews_client_id_index` (`client_id`), + KEY `cms_traffic_stats_pageviews_first_time_visit_index` (`first_time_visit`), + KEY `cms_traffic_stats_pageviews_user_agent_index` (`user_agent`), + KEY `cms_traffic_stats_pageviews_page_path_index` (`page_path`), + KEY `cms_traffic_stats_pageviews_city_index` (`city`), + KEY `cms_traffic_stats_pageviews_country_index` (`country`), + KEY `cms_traffic_stats_pageviews_referral_domain_index` (`referral_domain`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `cms_traffic_stats_pageviews` +-- + +LOCK TABLES `cms_traffic_stats_pageviews` WRITE; +/*!40000 ALTER TABLE `cms_traffic_stats_pageviews` DISABLE KEYS */; +/*!40000 ALTER TABLE `cms_traffic_stats_pageviews` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `deferred_bindings` +-- + +DROP TABLE IF EXISTS `deferred_bindings`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `deferred_bindings` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `master_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `master_field` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `slave_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `slave_id` int NOT NULL, + `session_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `pivot_data` mediumtext COLLATE utf8mb4_unicode_ci, + `is_bind` tinyint(1) NOT NULL DEFAULT '1', + `sort_order` int DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `deferred_bindings` +-- + +LOCK TABLES `deferred_bindings` WRITE; +/*!40000 ALTER TABLE `deferred_bindings` DISABLE KEYS */; +/*!40000 ALTER TABLE `deferred_bindings` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `failed_jobs` +-- + +DROP TABLE IF EXISTS `failed_jobs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `failed_jobs` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `connection` text COLLATE utf8mb4_unicode_ci NOT NULL, + `queue` text COLLATE utf8mb4_unicode_ci NOT NULL, + `payload` text COLLATE utf8mb4_unicode_ci NOT NULL, + `exception` longtext COLLATE utf8mb4_unicode_ci, + `failed_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `failed_jobs` +-- + +LOCK TABLES `failed_jobs` WRITE; +/*!40000 ALTER TABLE `failed_jobs` DISABLE KEYS */; +/*!40000 ALTER TABLE `failed_jobs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `jobs` +-- + +DROP TABLE IF EXISTS `jobs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `jobs` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `queue` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `payload` text COLLATE utf8mb4_unicode_ci NOT NULL, + `attempts` tinyint unsigned NOT NULL, + `reserved_at` int unsigned DEFAULT NULL, + `available_at` int unsigned NOT NULL, + `created_at` int unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `jobs_queue_reserved_at_index` (`queue`,`reserved_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `jobs` +-- + +LOCK TABLES `jobs` WRITE; +/*!40000 ALTER TABLE `jobs` DISABLE KEYS */; +/*!40000 ALTER TABLE `jobs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `migrations` +-- + +DROP TABLE IF EXISTS `migrations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `migrations` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `batch` int NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `migrations` +-- + +LOCK TABLES `migrations` WRITE; +/*!40000 ALTER TABLE `migrations` DISABLE KEYS */; +INSERT INTO `migrations` VALUES (1,'2013_10_01_000001_Db_Deferred_Bindings',1),(2,'2013_10_01_000002_Db_System_Files',1),(3,'2013_10_01_000003_Db_System_Plugin_Versions',1),(4,'2013_10_01_000004_Db_System_Plugin_History',1),(5,'2013_10_01_000005_Db_System_Settings',1),(6,'2013_10_01_000006_Db_System_Parameters',1),(7,'2013_10_01_000008_Db_System_Mail_Templates',1),(8,'2013_10_01_000009_Db_System_Mail_Layouts',1),(9,'2014_10_01_000010_Db_Jobs',1),(10,'2014_10_01_000011_Db_System_Event_Logs',1),(11,'2014_10_01_000012_Db_System_Request_Logs',1),(12,'2014_10_01_000013_Db_System_Sessions',1),(13,'2015_10_01_000016_Db_Cache',1),(14,'2015_10_01_000017_Db_System_Revisions',1),(15,'2015_10_01_000018_Db_FailedJobs',1),(16,'2017_10_01_000023_Db_System_Mail_Partials',1),(17,'2021_10_01_000025_Db_Add_Pivot_Data_To_Deferred_Bindings',1),(18,'2022_10_01_000026_Db_System_Site_Definitions',1),(19,'2023_10_01_000027_Db_Add_Site_To_Settings',1),(20,'2023_10_01_000028_Db_Add_Restrict_Roles_To_Sites',1),(21,'2023_10_01_000029_Db_System_Site_Groups',1),(22,'2023_10_01_000030_Db_Add_Group_To_Sites',1),(23,'2024_10_01_000031_Db_Add_Sort_Order_To_Deferred_Bindings',1),(24,'2013_10_01_000001_Db_Backend_Users',2),(25,'2013_10_01_000002_Db_Backend_User_Groups',2),(26,'2013_10_01_000003_Db_Backend_Users_Groups',2),(27,'2013_10_01_000004_Db_Backend_User_Throttle',2),(28,'2014_01_04_000005_Db_Backend_User_Preferences',2),(29,'2014_10_01_000006_Db_Backend_Access_Log',2),(30,'2017_10_01_000010_Db_Backend_User_Roles',2),(31,'2018_12_16_000011_Db_Backend_Add_Deleted_At',2),(32,'2022_10_01_000012_Db_Backend_User_Roles_Sortable',2),(33,'2023_10_01_000013_Db_Add_Site_To_Preferences',2),(34,'2023_10_01_000014_Db_Add_User_Expired_Password',2),(35,'2023_10_01_000015_Db_Backend_Dashboards',2),(36,'2023_10_01_000016_Db_Backend_Report_Data_Cache',2),(37,'2014_10_01_000001_Db_Cms_Theme_Data',3),(38,'2017_10_01_000003_Db_Cms_Theme_Logs',3),(39,'2018_11_01_000001_Db_Cms_Theme_Templates',3),(40,'2023_10_01_000004_Db_Cms_Traffic_Stats_Pageviews',3),(41,'2021_05_01_000001_Db_Tailor_Globals',4),(42,'2021_05_01_000002_Db_Tailor_Content',4),(43,'2021_06_01_000003_Db_Tailor_PreviewToken',4),(44,'2023_10_01_000004_Db_Tailor_Content_Joins',4),(45,'2024_10_01_000005_Db_Add_Parent_To_Repeaters',4); +/*!40000 ALTER TABLE `migrations` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sessions` +-- + +DROP TABLE IF EXISTS `sessions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sessions` ( + `id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `payload` text COLLATE utf8mb4_unicode_ci, + `last_activity` int DEFAULT NULL, + `user_id` int unsigned DEFAULT NULL, + `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `user_agent` text COLLATE utf8mb4_unicode_ci, + UNIQUE KEY `sessions_id_unique` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sessions` +-- + +LOCK TABLES `sessions` WRITE; +/*!40000 ALTER TABLE `sessions` DISABLE KEYS */; +/*!40000 ALTER TABLE `sessions` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_event_logs` +-- + +DROP TABLE IF EXISTS `system_event_logs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_event_logs` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `level` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `message` text COLLATE utf8mb4_unicode_ci, + `details` mediumtext COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `system_event_logs_level_index` (`level`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_event_logs` +-- + +LOCK TABLES `system_event_logs` WRITE; +/*!40000 ALTER TABLE `system_event_logs` DISABLE KEYS */; +/*!40000 ALTER TABLE `system_event_logs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_files` +-- + +DROP TABLE IF EXISTS `system_files`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_files` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `disk_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `file_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `file_size` int NOT NULL, + `content_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb4_unicode_ci, + `field` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `attachment_id` int DEFAULT NULL, + `attachment_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_public` tinyint(1) NOT NULL DEFAULT '1', + `sort_order` int DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `system_files_master_index` (`attachment_type`,`attachment_id`,`field`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_files` +-- + +LOCK TABLES `system_files` WRITE; +/*!40000 ALTER TABLE `system_files` DISABLE KEYS */; +/*!40000 ALTER TABLE `system_files` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_mail_layouts` +-- + +DROP TABLE IF EXISTS `system_mail_layouts`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_mail_layouts` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_html` text COLLATE utf8mb4_unicode_ci, + `content_text` text COLLATE utf8mb4_unicode_ci, + `content_css` text COLLATE utf8mb4_unicode_ci, + `is_locked` tinyint(1) NOT NULL DEFAULT '0', + `options` text COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_mail_layouts` +-- + +LOCK TABLES `system_mail_layouts` WRITE; +/*!40000 ALTER TABLE `system_mail_layouts` DISABLE KEYS */; +INSERT INTO `system_mail_layouts` VALUES (1,'Default layout','default','\n\n\n \n \n\n\n \n\n \n\n \n {% partial \'header\' body %}\n {{ subject|raw }}\n {% endpartial %}\n\n \n \n \n\n \n {% partial \'footer\' body %}\n © {{ \"now\"|date(\"Y\") }} {{ appName }}. All rights reserved.\n {% endpartial %}\n\n
\n \n \n \n \n \n
\n \n \n \n \n \n
\n {{ content|raw }}\n
\n
\n
\n\n\n','{{ content|raw }}','@media only screen and (max-width: 600px) {\n .inner-body {\n width: 100% !important;\n }\n\n .footer {\n width: 100% !important;\n }\n}\n\n@media only screen and (max-width: 500px) {\n .button {\n width: 100% !important;\n }\n}',1,NULL,'2024-07-13 10:43:42','2024-07-13 10:43:42'),(2,'System layout','system','\n\n\n \n \n\n\n \n\n \n \n \n \n
\n \n \n \n \n \n
\n \n \n \n \n \n
\n {{ content|raw }}\n\n \n {% partial \'subcopy\' body %}\n **This is an automatic message. Please do not reply to it.**\n {% endpartial %}\n
\n
\n
\n\n\n','{{ content|raw }}\n\n\n---\nThis is an automatic message. Please do not reply to it.','@media only screen and (max-width: 600px) {\n .inner-body {\n width: 100% !important;\n }\n\n .footer {\n width: 100% !important;\n }\n}\n\n@media only screen and (max-width: 500px) {\n .button {\n width: 100% !important;\n }\n}',1,NULL,'2024-07-13 10:43:42','2024-07-13 10:43:42'); +/*!40000 ALTER TABLE `system_mail_layouts` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_mail_partials` +-- + +DROP TABLE IF EXISTS `system_mail_partials`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_mail_partials` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_html` text COLLATE utf8mb4_unicode_ci, + `content_text` text COLLATE utf8mb4_unicode_ci, + `is_custom` tinyint(1) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_mail_partials` +-- + +LOCK TABLES `system_mail_partials` WRITE; +/*!40000 ALTER TABLE `system_mail_partials` DISABLE KEYS */; +/*!40000 ALTER TABLE `system_mail_partials` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_mail_templates` +-- + +DROP TABLE IF EXISTS `system_mail_templates`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_mail_templates` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `subject` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb4_unicode_ci, + `content_html` text COLLATE utf8mb4_unicode_ci, + `content_text` text COLLATE utf8mb4_unicode_ci, + `layout_id` int DEFAULT NULL, + `is_custom` tinyint(1) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `system_mail_templates_layout_id_index` (`layout_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_mail_templates` +-- + +LOCK TABLES `system_mail_templates` WRITE; +/*!40000 ALTER TABLE `system_mail_templates` DISABLE KEYS */; +/*!40000 ALTER TABLE `system_mail_templates` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_parameters` +-- + +DROP TABLE IF EXISTS `system_parameters`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_parameters` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `namespace` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL, + `group` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `item` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL, + `value` mediumtext COLLATE utf8mb4_unicode_ci, + PRIMARY KEY (`id`), + KEY `item_index` (`namespace`,`group`,`item`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_parameters` +-- + +LOCK TABLES `system_parameters` WRITE; +/*!40000 ALTER TABLE `system_parameters` DISABLE KEYS */; +INSERT INTO `system_parameters` VALUES (1,'system','update','count','0'),(2,'system','core','build','\"26\"'),(3,'system','update','retry',NULL); +/*!40000 ALTER TABLE `system_parameters` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_plugin_history` +-- + +DROP TABLE IF EXISTS `system_plugin_history`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_plugin_history` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `code` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, + `version` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `detail` mediumtext COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `system_plugin_history_code_index` (`code`), + KEY `system_plugin_history_type_index` (`type`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_plugin_history` +-- + +LOCK TABLES `system_plugin_history` WRITE; +/*!40000 ALTER TABLE `system_plugin_history` DISABLE KEYS */; +INSERT INTO `system_plugin_history` VALUES (1,'October.Demo','comment','1.0.1','First version of Demo','2024-07-13 10:43:42'); +/*!40000 ALTER TABLE `system_plugin_history` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_plugin_versions` +-- + +DROP TABLE IF EXISTS `system_plugin_versions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_plugin_versions` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `code` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `version` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `is_frozen` tinyint(1) NOT NULL DEFAULT '0', + `is_disabled` tinyint(1) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `system_plugin_versions_code_index` (`code`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_plugin_versions` +-- + +LOCK TABLES `system_plugin_versions` WRITE; +/*!40000 ALTER TABLE `system_plugin_versions` DISABLE KEYS */; +INSERT INTO `system_plugin_versions` VALUES (1,'October.Demo','1.0.1',0,0,'2024-07-13 10:43:42'); +/*!40000 ALTER TABLE `system_plugin_versions` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_request_logs` +-- + +DROP TABLE IF EXISTS `system_request_logs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_request_logs` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `status_code` int DEFAULT NULL, + `url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `referer` text COLLATE utf8mb4_unicode_ci, + `count` int NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_request_logs` +-- + +LOCK TABLES `system_request_logs` WRITE; +/*!40000 ALTER TABLE `system_request_logs` DISABLE KEYS */; +/*!40000 ALTER TABLE `system_request_logs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_revisions` +-- + +DROP TABLE IF EXISTS `system_revisions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_revisions` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `revisionable_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `revisionable_id` int NOT NULL, + `user_id` int unsigned DEFAULT NULL, + `field` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `cast` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `old_value` text COLLATE utf8mb4_unicode_ci, + `new_value` text COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `system_revisions_revisionable_id_revisionable_type_index` (`revisionable_id`,`revisionable_type`), + KEY `system_revisions_user_id_index` (`user_id`), + KEY `system_revisions_field_index` (`field`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_revisions` +-- + +LOCK TABLES `system_revisions` WRITE; +/*!40000 ALTER TABLE `system_revisions` DISABLE KEYS */; +/*!40000 ALTER TABLE `system_revisions` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_settings` +-- + +DROP TABLE IF EXISTS `system_settings`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_settings` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `item` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `value` mediumtext COLLATE utf8mb4_unicode_ci, + `site_id` int unsigned DEFAULT NULL, + `site_root_id` int unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `system_settings_item_index` (`item`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_settings` +-- + +LOCK TABLES `system_settings` WRITE; +/*!40000 ALTER TABLE `system_settings` DISABLE KEYS */; +/*!40000 ALTER TABLE `system_settings` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_site_definitions` +-- + +DROP TABLE IF EXISTS `system_site_definitions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_site_definitions` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `sort_order` int DEFAULT NULL, + `is_custom_url` tinyint(1) NOT NULL DEFAULT '0', + `app_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `theme` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `locale` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `timezone` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_host_restricted` tinyint(1) NOT NULL DEFAULT '0', + `allow_hosts` mediumtext COLLATE utf8mb4_unicode_ci, + `is_prefixed` tinyint(1) NOT NULL DEFAULT '0', + `route_prefix` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_styled` tinyint(1) NOT NULL DEFAULT '0', + `color_foreground` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `color_background` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_role_restricted` tinyint(1) NOT NULL DEFAULT '0', + `allow_roles` mediumtext COLLATE utf8mb4_unicode_ci, + `is_primary` tinyint(1) NOT NULL DEFAULT '0', + `is_enabled` tinyint(1) NOT NULL DEFAULT '0', + `is_enabled_edit` tinyint(1) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `group_id` int DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `system_site_definitions_code_index` (`code`), + KEY `system_site_definitions_group_id_index` (`group_id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_site_definitions` +-- + +LOCK TABLES `system_site_definitions` WRITE; +/*!40000 ALTER TABLE `system_site_definitions` DISABLE KEYS */; +INSERT INTO `system_site_definitions` VALUES (1,'Primary Site','primary',1,0,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,NULL,NULL,0,NULL,1,1,1,'2024-07-13 10:43:38','2024-07-13 10:43:38',NULL); +/*!40000 ALTER TABLE `system_site_definitions` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_site_groups` +-- + +DROP TABLE IF EXISTS `system_site_groups`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_site_groups` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `system_site_groups_code_index` (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_site_groups` +-- + +LOCK TABLES `system_site_groups` WRITE; +/*!40000 ALTER TABLE `system_site_groups` DISABLE KEYS */; +/*!40000 ALTER TABLE `system_site_groups` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tailor_content_joins` +-- + +DROP TABLE IF EXISTS `tailor_content_joins`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `tailor_content_joins` ( + `parent_id` int DEFAULT NULL, + `parent_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `relation_id` int DEFAULT NULL, + `relation_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `field_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + KEY `tailor_content_joins_pidx` (`parent_id`,`parent_type`,`field_name`), + KEY `tailor_content_joins_ridx` (`relation_id`,`relation_type`,`field_name`), + KEY `tailor_content_joins_field_name_index` (`field_name`), + KEY `tailor_content_joins_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tailor_content_joins` +-- + +LOCK TABLES `tailor_content_joins` WRITE; +/*!40000 ALTER TABLE `tailor_content_joins` DISABLE KEYS */; +/*!40000 ALTER TABLE `tailor_content_joins` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tailor_content_schema` +-- + +DROP TABLE IF EXISTS `tailor_content_schema`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `tailor_content_schema` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `table_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `meta` mediumtext COLLATE utf8mb4_unicode_ci, + `fields` mediumtext COLLATE utf8mb4_unicode_ci, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `tailor_content_schema_table_name_index` (`table_name`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tailor_content_schema` +-- + +LOCK TABLES `tailor_content_schema` WRITE; +/*!40000 ALTER TABLE `tailor_content_schema` DISABLE KEYS */; +INSERT INTO `tailor_content_schema` VALUES (1,'xc_85e471d209b94f3da63b1ae9d92d2879c','{\"blueprint_uuid\":\"85e471d2-09b9-4f3d-a63b-1ae9d92d2879\",\"blueprint_type\":\"entry\",\"multisite_sync\":false}','{\"active\":{\"slug\":{\"type\":\"text\",\"name\":\"slug\",\"nullable\":true}},\"dropped\":[]}',NULL,'2024-07-13 10:43:42','2024-07-13 10:43:43'),(2,'xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c','{\"blueprint_uuid\":\"a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1\",\"blueprint_type\":\"single\",\"multisite_sync\":false}','{\"active\":[],\"dropped\":[]}',NULL,'2024-07-13 10:43:43','2024-07-13 10:43:43'),(3,'xc_339b11b769ad43c49be16953e7738827c','{\"blueprint_uuid\":\"339b11b7-69ad-43c4-9be1-6953e7738827\",\"blueprint_type\":\"structure\",\"multisite_sync\":false}','{\"active\":{\"content\":{\"type\":\"mediumText\",\"name\":\"content\",\"nullable\":true},\"show_in_toc\":{\"type\":\"boolean\",\"name\":\"show_in_toc\",\"nullable\":true},\"summary_text\":{\"type\":\"mediumText\",\"name\":\"summary_text\",\"nullable\":true}},\"dropped\":[]}',NULL,'2024-07-13 10:43:43','2024-07-13 10:43:44'),(4,'xc_edcd102e05254e4db07e633ae6c18db6c','{\"blueprint_uuid\":\"edcd102e-0525-4e4d-b07e-633ae6c18db6\",\"blueprint_type\":\"stream\",\"multisite_sync\":false}','{\"active\":{\"content\":{\"type\":\"mediumText\",\"name\":\"content\",\"nullable\":true},\"author_id\":{\"type\":\"integer\",\"name\":\"author_id\",\"autoIncrement\":false,\"unsigned\":true,\"nullable\":true},\"featured_text\":{\"type\":\"mediumText\",\"name\":\"featured_text\",\"nullable\":true},\"gallery_media\":{\"type\":\"mediumText\",\"name\":\"gallery_media\",\"nullable\":true}},\"dropped\":[]}',NULL,'2024-07-13 10:43:44','2024-07-13 10:43:44'),(5,'xc_b022a74b15e64c6b9eb917efc5103543c','{\"blueprint_uuid\":\"b022a74b-15e6-4c6b-9eb9-17efc5103543\",\"blueprint_type\":\"structure\",\"multisite_sync\":false}','{\"active\":{\"description\":{\"type\":\"text\",\"name\":\"description\",\"nullable\":true}},\"dropped\":[]}',NULL,'2024-07-13 10:43:44','2024-07-13 10:43:45'),(6,'xc_6947ff28b66047d7924024ca6d58aeaec','{\"blueprint_uuid\":\"6947ff28-b660-47d7-9240-24ca6d58aeae\",\"blueprint_type\":\"entry\",\"multisite_sync\":false}','{\"active\":{\"avatar\":{\"type\":\"mediumText\",\"name\":\"avatar\",\"nullable\":true},\"role\":{\"type\":\"text\",\"name\":\"role\",\"nullable\":true},\"about\":{\"type\":\"mediumText\",\"name\":\"about\",\"nullable\":true}},\"dropped\":[]}',NULL,'2024-07-13 10:43:45','2024-07-13 10:43:46'); +/*!40000 ALTER TABLE `tailor_content_schema` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tailor_global_joins` +-- + +DROP TABLE IF EXISTS `tailor_global_joins`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `tailor_global_joins` ( + `parent_id` int DEFAULT NULL, + `relation_id` int DEFAULT NULL, + `relation_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `field_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + KEY `tailor_global_joins_idx` (`relation_id`,`relation_type`), + KEY `tailor_global_joins_field_name_index` (`field_name`), + KEY `tailor_global_joins_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tailor_global_joins` +-- + +LOCK TABLES `tailor_global_joins` WRITE; +/*!40000 ALTER TABLE `tailor_global_joins` DISABLE KEYS */; +/*!40000 ALTER TABLE `tailor_global_joins` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tailor_global_repeaters` +-- + +DROP TABLE IF EXISTS `tailor_global_repeaters`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `tailor_global_repeaters` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `host_id` int DEFAULT NULL, + `host_field` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_value` mediumtext COLLATE utf8mb4_unicode_ci, + `content_spawn_path` text COLLATE utf8mb4_unicode_ci, + `parent_id` int DEFAULT NULL, + `sort_order` int DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `tailor_global_repeaters_idx` (`host_id`,`host_field`), + KEY `tailor_global_repeaters_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tailor_global_repeaters` +-- + +LOCK TABLES `tailor_global_repeaters` WRITE; +/*!40000 ALTER TABLE `tailor_global_repeaters` DISABLE KEYS */; +/*!40000 ALTER TABLE `tailor_global_repeaters` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tailor_globals` +-- + +DROP TABLE IF EXISTS `tailor_globals`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `tailor_globals` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `site_id` int DEFAULT NULL, + `site_root_id` int DEFAULT NULL, + `blueprint_uuid` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content` longtext COLLATE utf8mb4_unicode_ci, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `tailor_globals_site_id_index` (`site_id`), + KEY `tailor_globals_site_root_id_index` (`site_root_id`), + KEY `tailor_globals_blueprint_uuid_index` (`blueprint_uuid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tailor_globals` +-- + +LOCK TABLES `tailor_globals` WRITE; +/*!40000 ALTER TABLE `tailor_globals` DISABLE KEYS */; +/*!40000 ALTER TABLE `tailor_globals` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tailor_preview_tokens` +-- + +DROP TABLE IF EXISTS `tailor_preview_tokens`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `tailor_preview_tokens` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `site_id` int DEFAULT NULL, + `route` mediumtext COLLATE utf8mb4_unicode_ci, + `token` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `count_use` int NOT NULL DEFAULT '0', + `count_limit` int NOT NULL DEFAULT '0', + `created_user_id` int unsigned DEFAULT NULL, + `expired_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `tailor_preview_tokens_site_id_index` (`site_id`), + KEY `tailor_preview_tokens_token_index` (`token`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tailor_preview_tokens` +-- + +LOCK TABLES `tailor_preview_tokens` WRITE; +/*!40000 ALTER TABLE `tailor_preview_tokens` DISABLE KEYS */; +/*!40000 ALTER TABLE `tailor_preview_tokens` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_339b11b769ad43c49be16953e7738827c` +-- + +DROP TABLE IF EXISTS `xc_339b11b769ad43c49be16953e7738827c`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_339b11b769ad43c49be16953e7738827c` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `site_id` int DEFAULT NULL, + `site_root_id` int DEFAULT NULL, + `blueprint_uuid` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `slug` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_enabled` tinyint(1) DEFAULT NULL, + `published_at` timestamp NULL DEFAULT NULL, + `published_at_date` timestamp NULL DEFAULT NULL, + `expired_at` timestamp NULL DEFAULT NULL, + `draft_mode` int NOT NULL DEFAULT '1', + `primary_id` int unsigned DEFAULT NULL, + `primary_attrs` mediumtext COLLATE utf8mb4_unicode_ci, + `is_version` tinyint(1) NOT NULL DEFAULT '0', + `fullslug` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `parent_id` int DEFAULT NULL, + `nest_left` int DEFAULT NULL, + `nest_right` int DEFAULT NULL, + `nest_depth` int DEFAULT NULL, + `content` mediumtext COLLATE utf8mb4_unicode_ci, + `show_in_toc` tinyint(1) DEFAULT NULL, + `summary_text` mediumtext COLLATE utf8mb4_unicode_ci, + `created_user_id` int unsigned DEFAULT NULL, + `updated_user_id` int unsigned DEFAULT NULL, + `deleted_user_id` int unsigned DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_339b11b769ad43c49be16953e7738827c_site_id_index` (`site_id`), + KEY `xc_339b11b769ad43c49be16953e7738827c_site_root_id_index` (`site_root_id`), + KEY `xc_339b11b769ad43c49be16953e7738827c_blueprint_uuid_index` (`blueprint_uuid`), + KEY `xc_339b11b769ad43c49be16953e7738827c_content_group_index` (`content_group`), + KEY `xc_339b11b769ad43c49be16953e7738827c_slug_index` (`slug`), + KEY `xc_339b11b769ad43c49be16953e7738827c_primary_id_index` (`primary_id`), + KEY `xc_339b11b769ad43c49be16953e7738827c_fullslug_index` (`fullslug`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Content for Article [Page\\Article].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_339b11b769ad43c49be16953e7738827c` +-- + +LOCK TABLES `xc_339b11b769ad43c49be16953e7738827c` WRITE; +/*!40000 ALTER TABLE `xc_339b11b769ad43c49be16953e7738827c` DISABLE KEYS */; +INSERT INTO `xc_339b11b769ad43c49be16953e7738827c` VALUES (1,1,1,'339b11b7-69ad-43c4-9be1-6953e7738827',NULL,'Our Locations','our-locations',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,'our-locations',NULL,1,8,0,'

The term location generally implies a higher degree of certainty than place, the latter often indicating an entity with an ambiguous boundary, relying more on human or social attributes of place identity and sense of place than on geometry. An absolute location can be designated using a specific pairing of latitude and longitude in a Cartesian coordinate grid (for example, a spherical coordinate system or an ellipsoid-based system such as the World Geodetic System) or similar methods. For instance, the position of Lake Maracaibo in Venezuela can be expressed using the coordinate system as the location 9.80°N (latitude), 71.56°W (longitude).

',1,'In geography, location or place are used to denote a region (point, line, or area) on Earth\'s surface or elsewhere.',NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(2,1,2,'339b11b7-69ad-43c4-9be1-6953e7738827',NULL,'Canberra','canberra',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,'our-locations/canberra',1,2,3,1,'

Unusual among Australian cities, it is an entirely planned city. The city is located at the northern end of the Australian Capital Territory[11] at the northern tip of the Australian Alps, the country\'s highest mountain range. As of June 2020, Canberra\'s estimated population was 431,380.[12]

The area chosen for the capital had been inhabited by Indigenous Australians for up to 21,000 years,[13] with the principal group being the Ngunnawal people. European settlement commenced in the first half of the 19th century, as evidenced by surviving landmarks such as St John\'s Anglican Church and Blundells Cottage. On 1 January 1901, federation of the colonies of Australia was achieved. Following a long dispute over whether Sydney or Melbourne should be the national capital,[14] a compromise was reached: the new capital would be built in New South Wales, so long as it was at least 100 miles (160 km) from Sydney. The capital city was founded and formally named as Canberra in 1913. A blueprint by American architects Walter Burley Griffin and Marion Mahony Griffin was selected after an international design contest, and construction commenced in 1913.[15] The Griffins\' plan featured geometric motifs and was centred on axes aligned with significant topographical landmarks such as Black Mountain, Mount Ainslie, Capital Hill and City Hill. Canberra\'s mountainous location makes it the only mainland Australian city where snow-capped mountains can be seen in winter; although snow in the city itself is rare.

As the seat of the Government of Australia, Canberra is home to many important institutions of the federal government, national monuments and museums. This includes Parliament House, Government House, the High Court and the headquarters of numerous government agencies. It is the location of many social and cultural institutions of national significance such as the Australian War Memorial, the Australian National University, the Royal Australian Mint, the Australian Institute of Sport, the National Gallery, the National Museum and the National Library. The city is home to many important institutions of the Australian Defence Force including the Royal Military College Duntroon and the Australian Defence Force Academy. It hosts all foreign embassies in Australia as well as regional headquarters of many international organisations, not-for-profit groups, lobbying groups and professional associations.

',1,'Canberra (/ˈkænbərə/ KAN-bə-rə) is the capital city of Australia. Founded following the federation of the colonies of Australia as the seat of government for the new nation, it is Australia\'s largest inland city and the eighth-largest city overall.',NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(3,1,3,'339b11b7-69ad-43c4-9be1-6953e7738827',NULL,'Sydney','sydney',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,'our-locations/sydney',1,4,5,1,'

Located on Australia\'s east coast, the metropolis surrounds Port Jackson and extends about 70 km (43.5 mi) on its periphery towards the Blue Mountains to the west, Hawkesbury to the north, the Royal National Park to the south and Macarthur to the south-west. Sydney is made up of 658 suburbs, spread across 33 local government areas. Residents of the city are known as \"Sydneysiders\". As of June 2020, Sydney\'s estimated metropolitan population was 5,361,466, meaning the city is home to approximately 66% of the state\'s population. Nicknames of the city include the \'Emerald City\' and the \'Harbour City\'.

Indigenous Australians have inhabited the Sydney area for at least 30,000 years, and thousands of Aboriginal engravings remain throughout the region. During his first Pacific voyage in 1770, Lieutenant James Cook and his crew became the first Europeans to chart the eastern coast of Australia, making landfall at Botany Bay. In 1788, the First Fleet of convicts, led by Arthur Phillip, founded Sydney as a British penal colony, the first European settlement in Australia. After World War II, it experienced mass migration and became one of the most multicultural cities in the world. Furthermore, 45.4% of the population reported having been born overseas, and the city has the third-largest foreign-born population of any city in the world after London and New York City.

Despite being one of the most expensive cities in the world, Sydney frequently ranks in the top ten most liveable cities in the world. It is classified as an Alpha global city by the Globalization and World Cities Research Network, indicating its influence in the region and throughout the world. Ranked eleventh in the world for economic opportunity, Sydney has an advanced market economy with strengths in finance, manufacturing and tourism. Established in 1850, the University of Sydney was Australia\'s first university and is regarded as one of the world\'s leading universities.

',1,'Sydney is the capital city of the state of New South Wales, and the most populous city in Australia and Oceania.',NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(4,1,4,'339b11b7-69ad-43c4-9be1-6953e7738827',NULL,'Vancouver','vancouver',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,'our-locations/vancouver',1,6,7,1,'

As the most populous city in the province, the 2021 census recorded 662,248 people in the city, up from 631,486 in 2016. The Greater Vancouver area had a population of 2,642,825 in 2021, making it the third-largest metropolitan area in Canada. Vancouver has the highest population density in Canada, with over 5,400 people per square kilometre. Vancouver is one of the most ethnically and linguistically diverse cities in Canada: 52 percent of its residents are not native English speakers, 48.9 percent are native speakers of neither English nor French, and 50.6 percent of residents belong to visible minority groups.

Vancouver is one of the most livable cities in Canada and in the world. In terms of housing affordability, Vancouver is also one of the most expensive cities in Canada and in the world. Vancouver plans to become the greenest city in the world. Vancouverism is the city\'s urban planning design philosophy.

Indigenous settlement of Vancouver began more than 10,000 years ago, and the city is on the traditional and unceded territories of the Squamish, Musqueam, and Tsleil-Waututh (Burrard) peoples. The beginnings of the modern city, which was originally named Gastown, grew around the site of a makeshift tavern on the western edges of Hastings Mill that was built on July 1, 1867, and owned by proprietor Gassy Jack. The original site is marked by the Gastown steam clock. Gastown then formally registered as a townsite dubbed Granville, Burrard Inlet. The city was renamed \"Vancouver\" in 1886, through a deal with the Canadian Pacific Railway (CPR). The Canadian Pacific transcontinental railway was extended to the city by 1887. The city\'s large natural seaport on the Pacific Ocean became a vital link in the trade between Asia-Pacific, East Asia, Europe, and Eastern Canada.

',1,'Vancouver is a major city in western Canada, located in the Lower Mainland region of British Columbia.',NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(5,1,5,'339b11b7-69ad-43c4-9be1-6953e7738827',NULL,'Knowledge Base','knowledge-base',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,'our-locations/knowledge-base',NULL,9,10,0,'

Knowledge Base

',1,'',NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'); +/*!40000 ALTER TABLE `xc_339b11b769ad43c49be16953e7738827c` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_339b11b769ad43c49be16953e7738827j` +-- + +DROP TABLE IF EXISTS `xc_339b11b769ad43c49be16953e7738827j`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_339b11b769ad43c49be16953e7738827j` ( + `parent_id` int DEFAULT NULL, + `relation_id` int DEFAULT NULL, + `relation_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `field_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + KEY `xc_339b11b769ad43c49be16953e7738827j_idx` (`parent_id`,`relation_type`,`field_name`), + KEY `xc_339b11b769ad43c49be16953e7738827j_field_name_index` (`field_name`), + KEY `xc_339b11b769ad43c49be16953e7738827j_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Joins for Article [Page\\Article].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_339b11b769ad43c49be16953e7738827j` +-- + +LOCK TABLES `xc_339b11b769ad43c49be16953e7738827j` WRITE; +/*!40000 ALTER TABLE `xc_339b11b769ad43c49be16953e7738827j` DISABLE KEYS */; +/*!40000 ALTER TABLE `xc_339b11b769ad43c49be16953e7738827j` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_339b11b769ad43c49be16953e7738827r` +-- + +DROP TABLE IF EXISTS `xc_339b11b769ad43c49be16953e7738827r`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_339b11b769ad43c49be16953e7738827r` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `host_id` int DEFAULT NULL, + `host_field` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_value` mediumtext COLLATE utf8mb4_unicode_ci, + `content_spawn_path` text COLLATE utf8mb4_unicode_ci, + `parent_id` int DEFAULT NULL, + `sort_order` int DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_339b11b769ad43c49be16953e7738827r_idx` (`host_id`,`host_field`), + KEY `xc_339b11b769ad43c49be16953e7738827r_site_id_index` (`site_id`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Repeaters for Article [Page\\Article].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_339b11b769ad43c49be16953e7738827r` +-- + +LOCK TABLES `xc_339b11b769ad43c49be16953e7738827r` WRITE; +/*!40000 ALTER TABLE `xc_339b11b769ad43c49be16953e7738827r` DISABLE KEYS */; +INSERT INTO `xc_339b11b769ad43c49be16953e7738827r` VALUES (1,2,'external_links',NULL,NULL,'{\"link_text\":\"Canberra travel guide from Wikivoyage\",\"link_url\":\"https:\\/\\/en.wikivoyage.org\\/wiki\\/Canberra\"}','Tailor\\Models\\EntryRecord@339b11b7-69ad-43c4-9be1-6953e7738827.external_links',NULL,1,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(2,2,'external_links',NULL,NULL,'{\"link_text\":\"Official Tourism Website\",\"link_url\":\"https:\\/\\/visitcanberra.com.au\\/\"}','Tailor\\Models\\EntryRecord@339b11b7-69ad-43c4-9be1-6953e7738827.external_links',NULL,2,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(3,2,'external_links',NULL,NULL,'{\"link_text\":\"Canberra 100 – Celebrating Canberra\'s 100th anniversary\",\"link_url\":\"https:\\/\\/www.canberra100.com.au\\/\"}','Tailor\\Models\\EntryRecord@339b11b7-69ad-43c4-9be1-6953e7738827.external_links',NULL,3,'2024-07-13 10:43:46','2024-07-13 10:43:46'); +/*!40000 ALTER TABLE `xc_339b11b769ad43c49be16953e7738827r` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_6947ff28b66047d7924024ca6d58aeaec` +-- + +DROP TABLE IF EXISTS `xc_6947ff28b66047d7924024ca6d58aeaec`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_6947ff28b66047d7924024ca6d58aeaec` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `site_id` int DEFAULT NULL, + `site_root_id` int DEFAULT NULL, + `blueprint_uuid` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `slug` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_enabled` tinyint(1) DEFAULT NULL, + `published_at` timestamp NULL DEFAULT NULL, + `published_at_date` timestamp NULL DEFAULT NULL, + `expired_at` timestamp NULL DEFAULT NULL, + `draft_mode` int NOT NULL DEFAULT '1', + `primary_id` int unsigned DEFAULT NULL, + `primary_attrs` mediumtext COLLATE utf8mb4_unicode_ci, + `is_version` tinyint(1) NOT NULL DEFAULT '0', + `avatar` mediumtext COLLATE utf8mb4_unicode_ci, + `role` text COLLATE utf8mb4_unicode_ci, + `about` mediumtext COLLATE utf8mb4_unicode_ci, + `created_user_id` int unsigned DEFAULT NULL, + `updated_user_id` int unsigned DEFAULT NULL, + `deleted_user_id` int unsigned DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_6947ff28b66047d7924024ca6d58aeaec_site_id_index` (`site_id`), + KEY `xc_6947ff28b66047d7924024ca6d58aeaec_site_root_id_index` (`site_root_id`), + KEY `xc_6947ff28b66047d7924024ca6d58aeaec_blueprint_uuid_index` (`blueprint_uuid`), + KEY `xc_6947ff28b66047d7924024ca6d58aeaec_content_group_index` (`content_group`), + KEY `xc_6947ff28b66047d7924024ca6d58aeaec_slug_index` (`slug`), + KEY `xc_6947ff28b66047d7924024ca6d58aeaec_primary_id_index` (`primary_id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Content for Author [Blog\\Author].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_6947ff28b66047d7924024ca6d58aeaec` +-- + +LOCK TABLES `xc_6947ff28b66047d7924024ca6d58aeaec` WRITE; +/*!40000 ALTER TABLE `xc_6947ff28b66047d7924024ca6d58aeaec` DISABLE KEYS */; +INSERT INTO `xc_6947ff28b66047d7924024ca6d58aeaec` VALUES (1,1,1,'6947ff28-b660-47d7-9240-24ca6d58aeae',NULL,'John Smith','john-smith',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,NULL,'Manager','Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'); +/*!40000 ALTER TABLE `xc_6947ff28b66047d7924024ca6d58aeaec` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_6947ff28b66047d7924024ca6d58aeaej` +-- + +DROP TABLE IF EXISTS `xc_6947ff28b66047d7924024ca6d58aeaej`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_6947ff28b66047d7924024ca6d58aeaej` ( + `parent_id` int DEFAULT NULL, + `relation_id` int DEFAULT NULL, + `relation_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `field_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + KEY `xc_6947ff28b66047d7924024ca6d58aeaej_idx` (`parent_id`,`relation_type`,`field_name`), + KEY `xc_6947ff28b66047d7924024ca6d58aeaej_field_name_index` (`field_name`), + KEY `xc_6947ff28b66047d7924024ca6d58aeaej_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Joins for Author [Blog\\Author].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_6947ff28b66047d7924024ca6d58aeaej` +-- + +LOCK TABLES `xc_6947ff28b66047d7924024ca6d58aeaej` WRITE; +/*!40000 ALTER TABLE `xc_6947ff28b66047d7924024ca6d58aeaej` DISABLE KEYS */; +/*!40000 ALTER TABLE `xc_6947ff28b66047d7924024ca6d58aeaej` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_6947ff28b66047d7924024ca6d58aeaer` +-- + +DROP TABLE IF EXISTS `xc_6947ff28b66047d7924024ca6d58aeaer`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_6947ff28b66047d7924024ca6d58aeaer` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `host_id` int DEFAULT NULL, + `host_field` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_value` mediumtext COLLATE utf8mb4_unicode_ci, + `content_spawn_path` text COLLATE utf8mb4_unicode_ci, + `parent_id` int DEFAULT NULL, + `sort_order` int DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_6947ff28b66047d7924024ca6d58aeaer_idx` (`host_id`,`host_field`), + KEY `xc_6947ff28b66047d7924024ca6d58aeaer_site_id_index` (`site_id`) +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Repeaters for Author [Blog\\Author].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_6947ff28b66047d7924024ca6d58aeaer` +-- + +LOCK TABLES `xc_6947ff28b66047d7924024ca6d58aeaer` WRITE; +/*!40000 ALTER TABLE `xc_6947ff28b66047d7924024ca6d58aeaer` DISABLE KEYS */; +INSERT INTO `xc_6947ff28b66047d7924024ca6d58aeaer` VALUES (1,1,'social_links',NULL,NULL,'{\"platform\":\"twitter\",\"url\":\"https:\\/\\/twitter.com\\/octobercms\"}','Tailor\\Models\\EntryRecord@6947ff28-b660-47d7-9240-24ca6d58aeae.social_links',NULL,1,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(2,1,'social_links',NULL,NULL,'{\"platform\":\"youtube\",\"url\":\"https:\\/\\/www.youtube.com\\/c\\/OctoberCMSOfficial\"}','Tailor\\Models\\EntryRecord@6947ff28-b660-47d7-9240-24ca6d58aeae.social_links',NULL,2,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(3,1,'social_links',NULL,NULL,'{\"platform\":\"facebook\",\"url\":\"https:\\/\\/facebook.com\\/octobercms\"}','Tailor\\Models\\EntryRecord@6947ff28-b660-47d7-9240-24ca6d58aeae.social_links',NULL,3,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(4,1,'social_links',NULL,NULL,'{\"platform\":\"linkedin\",\"url\":\"https:\\/\\/www.linkedin.com\\/company\\/october-cms\\/\"}','Tailor\\Models\\EntryRecord@6947ff28-b660-47d7-9240-24ca6d58aeae.social_links',NULL,4,'2024-07-13 10:43:46','2024-07-13 10:43:46'); +/*!40000 ALTER TABLE `xc_6947ff28b66047d7924024ca6d58aeaer` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_85e471d209b94f3da63b1ae9d92d2879c` +-- + +DROP TABLE IF EXISTS `xc_85e471d209b94f3da63b1ae9d92d2879c`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_85e471d209b94f3da63b1ae9d92d2879c` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `site_id` int DEFAULT NULL, + `site_root_id` int DEFAULT NULL, + `blueprint_uuid` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `slug` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_enabled` tinyint(1) DEFAULT NULL, + `published_at` timestamp NULL DEFAULT NULL, + `published_at_date` timestamp NULL DEFAULT NULL, + `expired_at` timestamp NULL DEFAULT NULL, + `draft_mode` int NOT NULL DEFAULT '1', + `primary_id` int unsigned DEFAULT NULL, + `primary_attrs` mediumtext COLLATE utf8mb4_unicode_ci, + `is_version` tinyint(1) NOT NULL DEFAULT '0', + `created_user_id` int unsigned DEFAULT NULL, + `updated_user_id` int unsigned DEFAULT NULL, + `deleted_user_id` int unsigned DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_85e471d209b94f3da63b1ae9d92d2879c_site_id_index` (`site_id`), + KEY `xc_85e471d209b94f3da63b1ae9d92d2879c_site_root_id_index` (`site_root_id`), + KEY `xc_85e471d209b94f3da63b1ae9d92d2879c_blueprint_uuid_index` (`blueprint_uuid`), + KEY `xc_85e471d209b94f3da63b1ae9d92d2879c_content_group_index` (`content_group`), + KEY `xc_85e471d209b94f3da63b1ae9d92d2879c_slug_index` (`slug`), + KEY `xc_85e471d209b94f3da63b1ae9d92d2879c_primary_id_index` (`primary_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Content for Menu [Site\\Menus].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_85e471d209b94f3da63b1ae9d92d2879c` +-- + +LOCK TABLES `xc_85e471d209b94f3da63b1ae9d92d2879c` WRITE; +/*!40000 ALTER TABLE `xc_85e471d209b94f3da63b1ae9d92d2879c` DISABLE KEYS */; +/*!40000 ALTER TABLE `xc_85e471d209b94f3da63b1ae9d92d2879c` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_85e471d209b94f3da63b1ae9d92d2879j` +-- + +DROP TABLE IF EXISTS `xc_85e471d209b94f3da63b1ae9d92d2879j`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_85e471d209b94f3da63b1ae9d92d2879j` ( + `parent_id` int DEFAULT NULL, + `relation_id` int DEFAULT NULL, + `relation_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `field_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + KEY `xc_85e471d209b94f3da63b1ae9d92d2879j_idx` (`parent_id`,`relation_type`,`field_name`), + KEY `xc_85e471d209b94f3da63b1ae9d92d2879j_field_name_index` (`field_name`), + KEY `xc_85e471d209b94f3da63b1ae9d92d2879j_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Joins for Menu [Site\\Menus].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_85e471d209b94f3da63b1ae9d92d2879j` +-- + +LOCK TABLES `xc_85e471d209b94f3da63b1ae9d92d2879j` WRITE; +/*!40000 ALTER TABLE `xc_85e471d209b94f3da63b1ae9d92d2879j` DISABLE KEYS */; +/*!40000 ALTER TABLE `xc_85e471d209b94f3da63b1ae9d92d2879j` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_85e471d209b94f3da63b1ae9d92d2879r` +-- + +DROP TABLE IF EXISTS `xc_85e471d209b94f3da63b1ae9d92d2879r`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_85e471d209b94f3da63b1ae9d92d2879r` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `host_id` int DEFAULT NULL, + `host_field` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_value` mediumtext COLLATE utf8mb4_unicode_ci, + `content_spawn_path` text COLLATE utf8mb4_unicode_ci, + `parent_id` int DEFAULT NULL, + `sort_order` int DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_85e471d209b94f3da63b1ae9d92d2879r_idx` (`host_id`,`host_field`), + KEY `xc_85e471d209b94f3da63b1ae9d92d2879r_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Repeaters for Menu [Site\\Menus].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_85e471d209b94f3da63b1ae9d92d2879r` +-- + +LOCK TABLES `xc_85e471d209b94f3da63b1ae9d92d2879r` WRITE; +/*!40000 ALTER TABLE `xc_85e471d209b94f3da63b1ae9d92d2879r` DISABLE KEYS */; +/*!40000 ALTER TABLE `xc_85e471d209b94f3da63b1ae9d92d2879r` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c` +-- + +DROP TABLE IF EXISTS `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `site_id` int DEFAULT NULL, + `site_root_id` int DEFAULT NULL, + `blueprint_uuid` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `slug` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_enabled` tinyint(1) DEFAULT NULL, + `published_at` timestamp NULL DEFAULT NULL, + `published_at_date` timestamp NULL DEFAULT NULL, + `expired_at` timestamp NULL DEFAULT NULL, + `draft_mode` int NOT NULL DEFAULT '1', + `primary_id` int unsigned DEFAULT NULL, + `primary_attrs` mediumtext COLLATE utf8mb4_unicode_ci, + `is_version` tinyint(1) NOT NULL DEFAULT '0', + `created_user_id` int unsigned DEFAULT NULL, + `updated_user_id` int unsigned DEFAULT NULL, + `deleted_user_id` int unsigned DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c_site_id_index` (`site_id`), + KEY `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c_site_root_id_index` (`site_root_id`), + KEY `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c_blueprint_uuid_index` (`blueprint_uuid`), + KEY `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c_content_group_index` (`content_group`), + KEY `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c_slug_index` (`slug`), + KEY `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c_primary_id_index` (`primary_id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Content for About Page [Page\\About].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c` +-- + +LOCK TABLES `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c` WRITE; +/*!40000 ALTER TABLE `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c` DISABLE KEYS */; +INSERT INTO `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c` VALUES (1,1,1,'a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1',NULL,'About Us','about-us',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'); +/*!40000 ALTER TABLE `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1c` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1j` +-- + +DROP TABLE IF EXISTS `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1j`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1j` ( + `parent_id` int DEFAULT NULL, + `relation_id` int DEFAULT NULL, + `relation_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `field_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + KEY `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1j_idx` (`parent_id`,`relation_type`,`field_name`), + KEY `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1j_field_name_index` (`field_name`), + KEY `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1j_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Joins for About Page [Page\\About].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1j` +-- + +LOCK TABLES `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1j` WRITE; +/*!40000 ALTER TABLE `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1j` DISABLE KEYS */; +/*!40000 ALTER TABLE `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1j` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1r` +-- + +DROP TABLE IF EXISTS `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1r`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1r` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `host_id` int DEFAULT NULL, + `host_field` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_value` mediumtext COLLATE utf8mb4_unicode_ci, + `content_spawn_path` text COLLATE utf8mb4_unicode_ci, + `parent_id` int DEFAULT NULL, + `sort_order` int DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1r_idx` (`host_id`,`host_field`), + KEY `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1r_site_id_index` (`site_id`) +) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Repeaters for About Page [Page\\About].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1r` +-- + +LOCK TABLES `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1r` WRITE; +/*!40000 ALTER TABLE `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1r` DISABLE KEYS */; +INSERT INTO `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1r` VALUES (1,1,'blocks',NULL,'image_slice','{\"image\":\"\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:image_slice',NULL,1,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(2,1,'blocks',NULL,'paragraph_block','{\"title\":\"Outstanding performance\",\"content\":\"

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.<\\/p>\",\"image\":\"\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:paragraph_block',NULL,2,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(3,1,'blocks',NULL,'detailed_block','{\"title\":\"Why work with us\",\"content\":\"

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<\\/p>\",\"list_items\":\"[{\\\"text\\\":\\\"Doloremque\\\"},{\\\"text\\\":\\\"Beatae vitae\\\"},{\\\"text\\\":\\\"Totam rem aperiam\\\"}]\",\"button_text\":\"Learn more about our process\",\"button_url\":\"https:\\/\\/octobercms.com\\/features\",\"image\":\"\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:detailed_block',NULL,3,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(4,1,'blocks',NULL,'scoreboard_metrics','[]','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:scoreboard_metrics',NULL,4,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(5,4,'metrics',NULL,NULL,'{\"number\":3912,\"description\":\"Sed ut perspiciatis\",\"icon\":\"notepad\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:scoreboard_metrics.metrics',NULL,1,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(6,4,'metrics',NULL,NULL,'{\"number\":223,\"description\":\"Nemo enim ipsam\",\"icon\":\"shield\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:scoreboard_metrics.metrics',NULL,2,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(7,4,'metrics',NULL,NULL,'{\"number\":863,\"description\":\"Nam libero tempore\",\"icon\":\"basket\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:scoreboard_metrics.metrics',NULL,3,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(8,4,'metrics',NULL,NULL,'{\"number\":865,\"description\":\"Et harum quidem rerum\",\"icon\":\"briefcase\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:scoreboard_metrics.metrics',NULL,4,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(9,1,'blocks',NULL,'team_leaders','[]','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders',NULL,5,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(10,9,'members',NULL,NULL,'{\"title\":\"Andy Anderson\",\"role\":\"Sales Manager\",\"description\":\"Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam.\",\"avatar\":\"\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members',NULL,1,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(11,10,'social_links',NULL,NULL,'{\"platform\":\"twitter\",\"url\":\"https:\\/\\/twitter.com\\/octobercms\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,1,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(12,10,'social_links',NULL,NULL,'{\"platform\":\"linkedin\",\"url\":\"https:\\/\\/www.linkedin.com\\/company\\/october-cms\\/\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,2,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(13,10,'social_links',NULL,NULL,'{\"platform\":\"facebook\",\"url\":\"https:\\/\\/facebook.com\\/octobercms\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,3,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(14,9,'members',NULL,NULL,'{\"title\":\"Bob Harris\",\"role\":\"Product Designer\",\"description\":\"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque.\",\"avatar\":\"\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members',NULL,2,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(15,14,'social_links',NULL,NULL,'{\"platform\":\"twitter\",\"url\":\"https:\\/\\/twitter.com\\/octobercms\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,1,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(16,14,'social_links',NULL,NULL,'{\"platform\":\"youtube\",\"url\":\"https:\\/\\/www.youtube.com\\/c\\/OctoberCMSOfficial\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,2,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(17,14,'social_links',NULL,NULL,'{\"platform\":\"dribbble\",\"url\":\"https:\\/\\/www.dribbble.com\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,3,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(18,14,'social_links',NULL,NULL,'{\"platform\":\"facebook\",\"url\":\"https:\\/\\/facebook.com\\/octobercms\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,4,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(19,9,'members',NULL,NULL,'{\"title\":\"Ann Lewis\",\"role\":\"Marketing Manager\",\"description\":\"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla.\",\"avatar\":\"\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members',NULL,3,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(20,19,'social_links',NULL,NULL,'{\"platform\":\"twitter\",\"url\":\"https:\\/\\/twitter.com\\/octobercms\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,1,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(21,19,'social_links',NULL,NULL,'{\"platform\":\"linkedin\",\"url\":\"https:\\/\\/www.linkedin.com\\/company\\/october-cms\\/\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,2,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(22,19,'social_links',NULL,NULL,'{\"platform\":\"facebook\",\"url\":\"https:\\/\\/facebook.com\\/octobercms\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,3,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(23,9,'members',NULL,NULL,'{\"title\":\"Christina Thompson\",\"role\":\"System Analyst\",\"description\":\"Et harum quidem rerum facilis est et expedita distinctio.\",\"avatar\":\"\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members',NULL,4,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(24,23,'social_links',NULL,NULL,'{\"platform\":\"twitter\",\"url\":\"https:\\/\\/twitter.com\\/octobercms\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,1,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(25,23,'social_links',NULL,NULL,'{\"platform\":\"youtube\",\"url\":\"https:\\/\\/www.youtube.com\\/c\\/OctoberCMSOfficial\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,2,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(26,23,'social_links',NULL,NULL,'{\"platform\":\"dribbble\",\"url\":\"https:\\/\\/www.dribbble.com\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,3,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(27,23,'social_links',NULL,NULL,'{\"platform\":\"facebook\",\"url\":\"https:\\/\\/facebook.com\\/octobercms\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,4,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(28,9,'members',NULL,NULL,'{\"title\":\"John Smith\",\"role\":\"President\",\"description\":\"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.\",\"avatar\":\"\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members',NULL,5,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(29,28,'social_links',NULL,NULL,'{\"platform\":\"dribbble\",\"url\":\"https:\\/\\/www.dribbble.com\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,1,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(30,28,'social_links',NULL,NULL,'{\"platform\":\"linkedin\",\"url\":\"https:\\/\\/www.linkedin.com\\/company\\/october-cms\\/\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,2,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(31,28,'social_links',NULL,NULL,'{\"platform\":\"youtube\",\"url\":\"https:\\/\\/www.youtube.com\\/c\\/OctoberCMSOfficial\"}','Tailor\\Models\\EntryRecord@a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1.blocks:team_leaders.members.social_links',NULL,3,'2024-07-13 10:43:46','2024-07-13 10:43:46'); +/*!40000 ALTER TABLE `xc_a63fabaf7c0b4c74b36f7abf1a3ad1c1r` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_b022a74b15e64c6b9eb917efc5103543c` +-- + +DROP TABLE IF EXISTS `xc_b022a74b15e64c6b9eb917efc5103543c`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_b022a74b15e64c6b9eb917efc5103543c` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `site_id` int DEFAULT NULL, + `site_root_id` int DEFAULT NULL, + `blueprint_uuid` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `slug` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_enabled` tinyint(1) DEFAULT NULL, + `published_at` timestamp NULL DEFAULT NULL, + `published_at_date` timestamp NULL DEFAULT NULL, + `expired_at` timestamp NULL DEFAULT NULL, + `draft_mode` int NOT NULL DEFAULT '1', + `primary_id` int unsigned DEFAULT NULL, + `primary_attrs` mediumtext COLLATE utf8mb4_unicode_ci, + `is_version` tinyint(1) NOT NULL DEFAULT '0', + `fullslug` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `parent_id` int DEFAULT NULL, + `nest_left` int DEFAULT NULL, + `nest_right` int DEFAULT NULL, + `nest_depth` int DEFAULT NULL, + `description` text COLLATE utf8mb4_unicode_ci, + `created_user_id` int unsigned DEFAULT NULL, + `updated_user_id` int unsigned DEFAULT NULL, + `deleted_user_id` int unsigned DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_b022a74b15e64c6b9eb917efc5103543c_site_id_index` (`site_id`), + KEY `xc_b022a74b15e64c6b9eb917efc5103543c_site_root_id_index` (`site_root_id`), + KEY `xc_b022a74b15e64c6b9eb917efc5103543c_blueprint_uuid_index` (`blueprint_uuid`), + KEY `xc_b022a74b15e64c6b9eb917efc5103543c_content_group_index` (`content_group`), + KEY `xc_b022a74b15e64c6b9eb917efc5103543c_slug_index` (`slug`), + KEY `xc_b022a74b15e64c6b9eb917efc5103543c_primary_id_index` (`primary_id`), + KEY `xc_b022a74b15e64c6b9eb917efc5103543c_fullslug_index` (`fullslug`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Content for Category [Blog\\Category].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_b022a74b15e64c6b9eb917efc5103543c` +-- + +LOCK TABLES `xc_b022a74b15e64c6b9eb917efc5103543c` WRITE; +/*!40000 ALTER TABLE `xc_b022a74b15e64c6b9eb917efc5103543c` DISABLE KEYS */; +INSERT INTO `xc_b022a74b15e64c6b9eb917efc5103543c` VALUES (1,1,1,'b022a74b-15e6-4c6b-9eb9-17efc5103543',NULL,'Announcements','announcements',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,NULL,NULL,1,2,0,'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt molliti',NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(2,1,2,'b022a74b-15e6-4c6b-9eb9-17efc5103543',NULL,'News','news',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,NULL,NULL,3,4,0,'Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.',NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(3,1,3,'b022a74b-15e6-4c6b-9eb9-17efc5103543',NULL,'Startup Ideas','startup-ideas',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,NULL,NULL,5,6,0,'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proide',NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(4,1,4,'b022a74b-15e6-4c6b-9eb9-17efc5103543',NULL,'Updates','updates',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,NULL,NULL,7,8,0,'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt molliti',NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(5,1,5,'b022a74b-15e6-4c6b-9eb9-17efc5103543',NULL,'Automation','automation',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,NULL,NULL,9,10,0,'Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.',NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'); +/*!40000 ALTER TABLE `xc_b022a74b15e64c6b9eb917efc5103543c` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_b022a74b15e64c6b9eb917efc5103543j` +-- + +DROP TABLE IF EXISTS `xc_b022a74b15e64c6b9eb917efc5103543j`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_b022a74b15e64c6b9eb917efc5103543j` ( + `parent_id` int DEFAULT NULL, + `relation_id` int DEFAULT NULL, + `relation_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `field_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + KEY `xc_b022a74b15e64c6b9eb917efc5103543j_idx` (`parent_id`,`relation_type`,`field_name`), + KEY `xc_b022a74b15e64c6b9eb917efc5103543j_field_name_index` (`field_name`), + KEY `xc_b022a74b15e64c6b9eb917efc5103543j_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Joins for Category [Blog\\Category].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_b022a74b15e64c6b9eb917efc5103543j` +-- + +LOCK TABLES `xc_b022a74b15e64c6b9eb917efc5103543j` WRITE; +/*!40000 ALTER TABLE `xc_b022a74b15e64c6b9eb917efc5103543j` DISABLE KEYS */; +/*!40000 ALTER TABLE `xc_b022a74b15e64c6b9eb917efc5103543j` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_b022a74b15e64c6b9eb917efc5103543r` +-- + +DROP TABLE IF EXISTS `xc_b022a74b15e64c6b9eb917efc5103543r`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_b022a74b15e64c6b9eb917efc5103543r` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `host_id` int DEFAULT NULL, + `host_field` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_value` mediumtext COLLATE utf8mb4_unicode_ci, + `content_spawn_path` text COLLATE utf8mb4_unicode_ci, + `parent_id` int DEFAULT NULL, + `sort_order` int DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_b022a74b15e64c6b9eb917efc5103543r_idx` (`host_id`,`host_field`), + KEY `xc_b022a74b15e64c6b9eb917efc5103543r_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Repeaters for Category [Blog\\Category].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_b022a74b15e64c6b9eb917efc5103543r` +-- + +LOCK TABLES `xc_b022a74b15e64c6b9eb917efc5103543r` WRITE; +/*!40000 ALTER TABLE `xc_b022a74b15e64c6b9eb917efc5103543r` DISABLE KEYS */; +/*!40000 ALTER TABLE `xc_b022a74b15e64c6b9eb917efc5103543r` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_edcd102e05254e4db07e633ae6c18db6c` +-- + +DROP TABLE IF EXISTS `xc_edcd102e05254e4db07e633ae6c18db6c`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_edcd102e05254e4db07e633ae6c18db6c` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `site_id` int DEFAULT NULL, + `site_root_id` int DEFAULT NULL, + `blueprint_uuid` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `slug` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_enabled` tinyint(1) DEFAULT NULL, + `published_at` timestamp NULL DEFAULT NULL, + `published_at_date` timestamp NULL DEFAULT NULL, + `expired_at` timestamp NULL DEFAULT NULL, + `draft_mode` int NOT NULL DEFAULT '1', + `primary_id` int unsigned DEFAULT NULL, + `primary_attrs` mediumtext COLLATE utf8mb4_unicode_ci, + `is_version` tinyint(1) NOT NULL DEFAULT '0', + `published_at_day` int DEFAULT NULL, + `published_at_month` int DEFAULT NULL, + `published_at_year` int DEFAULT NULL, + `content` mediumtext COLLATE utf8mb4_unicode_ci, + `author_id` int unsigned DEFAULT NULL, + `featured_text` mediumtext COLLATE utf8mb4_unicode_ci, + `gallery_media` mediumtext COLLATE utf8mb4_unicode_ci, + `created_user_id` int unsigned DEFAULT NULL, + `updated_user_id` int unsigned DEFAULT NULL, + `deleted_user_id` int unsigned DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_edcd102e05254e4db07e633ae6c18db6c_site_id_index` (`site_id`), + KEY `xc_edcd102e05254e4db07e633ae6c18db6c_site_root_id_index` (`site_root_id`), + KEY `xc_edcd102e05254e4db07e633ae6c18db6c_blueprint_uuid_index` (`blueprint_uuid`), + KEY `xc_edcd102e05254e4db07e633ae6c18db6c_content_group_index` (`content_group`), + KEY `xc_edcd102e05254e4db07e633ae6c18db6c_slug_index` (`slug`), + KEY `xc_edcd102e05254e4db07e633ae6c18db6c_primary_id_index` (`primary_id`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Content for Post [Blog\\Post].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_edcd102e05254e4db07e633ae6c18db6c` +-- + +LOCK TABLES `xc_edcd102e05254e4db07e633ae6c18db6c` WRITE; +/*!40000 ALTER TABLE `xc_edcd102e05254e4db07e633ae6c18db6c` DISABLE KEYS */; +INSERT INTO `xc_edcd102e05254e4db07e633ae6c18db6c` VALUES (1,1,1,'edcd102e-0525-4e4d-b07e-633ae6c18db6','regular_post','Consectetur adipiscing elit','consectetur-adipiscing-elit',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,13,7,2024,'

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

',1,'Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.',NULL,NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'),(2,1,2,'edcd102e-0525-4e4d-b07e-633ae6c18db6','regular_post','Nemo enim ipsam','nemo-enim-ipsam',1,NULL,'2024-07-13 10:43:46',NULL,1,NULL,NULL,0,13,7,2024,'

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

',1,'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.',NULL,NULL,NULL,NULL,NULL,'2024-07-13 10:43:46','2024-07-13 10:43:46'); +/*!40000 ALTER TABLE `xc_edcd102e05254e4db07e633ae6c18db6c` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_edcd102e05254e4db07e633ae6c18db6j` +-- + +DROP TABLE IF EXISTS `xc_edcd102e05254e4db07e633ae6c18db6j`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_edcd102e05254e4db07e633ae6c18db6j` ( + `parent_id` int DEFAULT NULL, + `relation_id` int DEFAULT NULL, + `relation_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `field_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + KEY `xc_edcd102e05254e4db07e633ae6c18db6j_idx` (`parent_id`,`relation_type`,`field_name`), + KEY `xc_edcd102e05254e4db07e633ae6c18db6j_field_name_index` (`field_name`), + KEY `xc_edcd102e05254e4db07e633ae6c18db6j_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Joins for Post [Blog\\Post].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_edcd102e05254e4db07e633ae6c18db6j` +-- + +LOCK TABLES `xc_edcd102e05254e4db07e633ae6c18db6j` WRITE; +/*!40000 ALTER TABLE `xc_edcd102e05254e4db07e633ae6c18db6j` DISABLE KEYS */; +INSERT INTO `xc_edcd102e05254e4db07e633ae6c18db6j` VALUES (1,1,'Tailor\\Models\\EntryRecord@xc_b022a74b15e64c6b9eb917efc5103543c','categories',NULL),(2,2,'Tailor\\Models\\EntryRecord@xc_b022a74b15e64c6b9eb917efc5103543c','categories',NULL); +/*!40000 ALTER TABLE `xc_edcd102e05254e4db07e633ae6c18db6j` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `xc_edcd102e05254e4db07e633ae6c18db6r` +-- + +DROP TABLE IF EXISTS `xc_edcd102e05254e4db07e633ae6c18db6r`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `xc_edcd102e05254e4db07e633ae6c18db6r` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `host_id` int DEFAULT NULL, + `host_field` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `site_id` int DEFAULT NULL, + `content_group` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `content_value` mediumtext COLLATE utf8mb4_unicode_ci, + `content_spawn_path` text COLLATE utf8mb4_unicode_ci, + `parent_id` int DEFAULT NULL, + `sort_order` int DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `xc_edcd102e05254e4db07e633ae6c18db6r_idx` (`host_id`,`host_field`), + KEY `xc_edcd102e05254e4db07e633ae6c18db6r_site_id_index` (`site_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Repeaters for Post [Blog\\Post].'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `xc_edcd102e05254e4db07e633ae6c18db6r` +-- + +LOCK TABLES `xc_edcd102e05254e4db07e633ae6c18db6r` WRITE; +/*!40000 ALTER TABLE `xc_edcd102e05254e4db07e633ae6c18db6r` DISABLE KEYS */; +/*!40000 ALTER TABLE `xc_edcd102e05254e4db07e633ae6c18db6r` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2024-07-13 10:45:50 diff --git a/index.php b/index.php new file mode 100644 index 0000000..65eab1d --- /dev/null +++ b/index.php @@ -0,0 +1,48 @@ +make(\Illuminate\Contracts\Http\Kernel::class); + +$response = $kernel->handle( + $request = Illuminate\Http\Request::capture() +); + +$response->send(); + +$kernel->terminate($request, $response); diff --git a/package.json b/package.json new file mode 100644 index 0000000..0da09af --- /dev/null +++ b/package.json @@ -0,0 +1,40 @@ +{ + "name": "octobercms", + "homepage": "https://octobercms.com/", + "description": "October CMS is a self-hosted CMS platform based on the Laravel PHP Framework.", + "scripts": { + "dev": "npm run development", + "development": "mix", + "watch": "mix watch", + "watch-poll": "mix watch -- --watch-options-poll=1000", + "hot": "mix watch --hot", + "prod": "npm run production", + "production": "mix --production" + }, + "devDependencies": { + "babel-plugin-module-resolver": "^4.1.0", + "laravel-mix": "^6.0.39", + "less": "^4.1.2", + "less-loader": "^10.2.0", + "sass": "^1.45.0", + "sass-loader": "^12.1.0" + }, + "dependencies": { + "@popperjs/core": "^2.11.7", + "bluebird": "^3.7.2", + "bootstrap": "^5.3.0", + "bootstrap-icons": "^1.10", + "chart.js": "^4.3.2", + "chartjs-adapter-moment": "^1.0.1", + "dropzone": "^6.0.0-beta.2", + "emmet-monaco-es": "^5.3", + "jquery": "^3.6.0", + "js-cookie": "^3.0.1", + "monaco-editor": "^0.46.0", + "monaco-yaml": "^5.1.1", + "popper.js": "^1.16.1", + "sortablejs": "^1.15.0", + "vue": "^2.6.14", + "vue-router": "^3.5.3" + } +} diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..fcdc873 --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,44 @@ + + + The coding standard for October CMS. + + + + + + + + + + + + */database/migrations/*\.php + + + app/ + config/ + modules/ + plugins/october/demo/ + + + */vendor/* + + + */modules/*/tests/* + + + */modules/*/views/* + + + */modules/*/elements/* + + + */modules/*/layouts/* + */modules/*/controllers/*/* + + + */modules/**/_* + diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..2865e0b --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,34 @@ + + + + + ./modules/*/tests + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/october/demo/Plugin.php b/plugins/october/demo/Plugin.php new file mode 100644 index 0000000..c24f1ab --- /dev/null +++ b/plugins/october/demo/Plugin.php @@ -0,0 +1,28 @@ + 'October Demo', + 'description' => 'Provides features used by the provided demonstration theme.', + 'author' => 'Alexey Bobkov, Samuel Georges', + 'icon' => 'icon-leaf' + ]; + } + + public function registerComponents() + { + return [ + \October\Demo\Components\Todo::class => 'demoTodo', + \October\Demo\Components\BackendLink::class => 'backendLink' + ]; + } +} diff --git a/plugins/october/demo/components/BackendLink.php b/plugins/october/demo/components/BackendLink.php new file mode 100644 index 0000000..58c71b8 --- /dev/null +++ b/plugins/october/demo/components/BackendLink.php @@ -0,0 +1,24 @@ + 'Backend Link', + 'description' => 'Makes the backend area link available.' + ]; + } + + public function onRun() + { + $this->page['backendUrl'] = System::checkDebugMode() ? Backend::url('/') : null; + } +} diff --git a/plugins/october/demo/components/Todo.php b/plugins/october/demo/components/Todo.php new file mode 100644 index 0000000..ff49e75 --- /dev/null +++ b/plugins/october/demo/components/Todo.php @@ -0,0 +1,60 @@ + 'To Do List', + 'description' => 'Implements a simple to-do list.' + ]; + } + + public function defineProperties() + { + return [ + 'max' => [ + 'description' => 'The most amount of To Do items allowed', + 'title' => 'Max items', + 'default' => 10, + 'type' => 'string', + 'validationPattern' => '^[0-9]+$', + 'validationMessage' => 'The Max Items value is required and should be integer.' + ], + 'addDefault' => [ + 'description' => 'Determines if default items must be added to the To Do list', + 'title' => 'Add default items', + 'type' => 'checkbox', + 'default' => 0 + ] + ]; + } + + public function onRun() + { + if ($this->property('addDefault')) { + $this->page['items'] = ['Learn October CMS']; + } + } + + public function onAddItem() + { + $items = post('items', []); + + if (count($items) >= $this->property('max')) { + throw new ApplicationException(sprintf('Sorry only %s items are allowed.', $this->property('max'))); + } + + if (($newItem = post('newItem')) != '') { + $items[] = $newItem; + } + + $this->page['items'] = $items; + } +} diff --git a/plugins/october/demo/components/todo/default.htm b/plugins/october/demo/components/todo/default.htm new file mode 100644 index 0000000..2140248 --- /dev/null +++ b/plugins/october/demo/components/todo/default.htm @@ -0,0 +1,23 @@ +
+
+
+

To Do List

+
+
+
+ + + + +
+
+
    + {% partial __SELF__ ~ '::list' %} +
+
+
diff --git a/plugins/october/demo/components/todo/list.htm b/plugins/october/demo/components/todo/list.htm new file mode 100644 index 0000000..4d2e392 --- /dev/null +++ b/plugins/october/demo/components/todo/list.htm @@ -0,0 +1,12 @@ +{% for item in items %} +
  • + + + {{ item }} + + +
  • +{% endfor %} \ No newline at end of file diff --git a/plugins/october/demo/composer.json b/plugins/october/demo/composer.json new file mode 100644 index 0000000..de62aff --- /dev/null +++ b/plugins/october/demo/composer.json @@ -0,0 +1,22 @@ +{ + "name": "october/demo-plugin", + "type": "october-plugin", + "description": "Demo OctoberCMS plugin", + "keywords": ["october", "cms", "demo", "plugin"], + "authors": [ + { + "name": "Alexey Bobkov", + "email": "aleksey.bobkov@gmail.com", + "role": "Co-founder" + }, + { + "name": "Samuel Georges", + "email": "daftspunky@gmail.com", + "role": "Co-founder" + } + ], + "require": { + "php": ">=7.2.9", + "composer/installers": "~1.0" + } +} diff --git a/plugins/october/demo/updates/version.yaml b/plugins/october/demo/updates/version.yaml new file mode 100644 index 0000000..867bbe8 --- /dev/null +++ b/plugins/october/demo/updates/version.yaml @@ -0,0 +1 @@ +1.0.1: First version of Demo \ No newline at end of file diff --git a/storage/.gitignore b/storage/.gitignore new file mode 100644 index 0000000..9b1dffd --- /dev/null +++ b/storage/.gitignore @@ -0,0 +1 @@ +*.sqlite diff --git a/storage/app/.gitignore b/storage/app/.gitignore new file mode 100644 index 0000000..8dcd22f --- /dev/null +++ b/storage/app/.gitignore @@ -0,0 +1,5 @@ +* +!.gitignore +!media +!uploads +!resources diff --git a/storage/app/media/.gitignore b/storage/app/media/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/media/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/app/resources/.gitignore b/storage/app/resources/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/resources/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/app/uploads/.gitignore b/storage/app/uploads/.gitignore new file mode 100644 index 0000000..3984efe --- /dev/null +++ b/storage/app/uploads/.gitignore @@ -0,0 +1,3 @@ +* +!.gitignore +!public diff --git a/storage/app/uploads/public/.gitignore b/storage/app/uploads/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/uploads/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/cms/.gitignore b/storage/cms/.gitignore new file mode 100644 index 0000000..cde8069 --- /dev/null +++ b/storage/cms/.gitignore @@ -0,0 +1 @@ +*.php diff --git a/storage/cms/cache/.gitignore b/storage/cms/cache/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/storage/cms/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/storage/cms/combiner/.gitignore b/storage/cms/combiner/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/storage/cms/combiner/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/storage/cms/project.json b/storage/cms/project.json new file mode 100644 index 0000000..c0a0cd8 --- /dev/null +++ b/storage/cms/project.json @@ -0,0 +1,3 @@ +{ + "project": "1AQNlBQVgH1cOBQu8JRgPHRE8AScQJRE8ZRkQGRfgBTZlBTVmZQWwZGEyAzR1AzHkMJRlAJRmZmt0BQAxAwD" +} \ No newline at end of file diff --git a/storage/cms/twig/.gitignore b/storage/cms/twig/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/storage/cms/twig/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore new file mode 100644 index 0000000..cde8069 --- /dev/null +++ b/storage/framework/.gitignore @@ -0,0 +1 @@ +*.php diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/temp/.gitignore b/storage/temp/.gitignore new file mode 100644 index 0000000..3984efe --- /dev/null +++ b/storage/temp/.gitignore @@ -0,0 +1,3 @@ +* +!.gitignore +!public diff --git a/storage/temp/public/.gitignore b/storage/temp/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/temp/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..1828e6c --- /dev/null +++ b/tests/README.md @@ -0,0 +1,99 @@ +# Plugin testing + +Plugin unit tests can be performed by running `phpunit` in the base plugin directory. + +### Creating plugin tests + +Plugins can be tested by creating a file called `phpunit.xml` in the base directory with the following content, for example, in a file **/plugins/acme/blog/phpunit.xml**: + + + + + + ./tests + + + + + + + + + +Then a **tests/** directory can be created to contain the test classes. The file structure should mimic the base directory with classes having a `Test` suffix. Using a namespace for the class is also recommended. + + 'Hi!']); + $this->assertEquals(1, $post->id); + } + } + +The test class should extend the base class `PluginTestCase` and this is a special class that will set up the October database stored in memory, as part of the `setUp` method. It will also refresh the plugin being tested, along with any of the defined dependencies in the plugin registration file. This is the equivalent of running the following before each test: + + php artisan october:up + php artisan plugin:refresh Acme.Blog + [php artisan plugin:refresh , ...] + +> **Note:** If your plugin uses [configuration files](../plugin/settings#file-configuration), then you will need to run `System\Classes\PluginManager::instance()->registerAll(true);` in the `setUp` method of your tests. Below is an example of a base test case class that should be used if you need to test your plugin working with other plugins instead of in isolation. + + use System\Classes\PluginManager; + + class BaseTestCase extends PluginTestCase + { + public function setUp(): void + { + parent::setUp(); + + // Get the plugin manager + $pluginManager = PluginManager::instance(); + + // Register the plugins to make features like file configuration available + $pluginManager->registerAll(true); + + // Boot all the plugins to test with dependencies of this plugin + $pluginManager->bootAll(true); + } + + public function tearDown(): void + { + parent::tearDown(); + + // Get the plugin manager + $pluginManager = PluginManager::instance(); + + // Ensure that plugins are registered again for the next test + $pluginManager->unregisterAll(); + } + } + +#### Changing database engine for plugins tests + +By default OctoberCMS uses SQLite stored in memory for the plugin testing environment. If you want to override the default behavior set the `useConfigForTesting` config to `true` in your `/config/database.php` file. When the `APP_ENV` is `testing` and the `useConfigForTesting` is `true` database parameters will be taken from `/config/database.php`. + +You can override the `/config/database.php` file by creating `/config/testing/database.php`. In this case variables from the latter file will be taken. + +## System testing + +To perform unit testing on the core October files, you should download a development copy using composer or cloning the git repo. This will ensure you have the `tests/` directory. + +### Unit tests + +Unit tests can be performed by running `phpunit` in the root directory or inside `/tests/unit`. diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..4fe5ab5 --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,3 @@ + + +``` + +Combined stylesheets: + +```twig + +``` + +> **Note**: October also includes an SCSS compiler, if you prefer. + +Uncombined JavaScript: + +```twig + + + +{% framework extras turbo %} +``` + +Combined JavaScript: + +```twig + +``` + +> **Important**: Make sure you keep the `{% styles %}` and `{% scripts %}` placeholder tags as these are used by plugins for injecting assets. diff --git a/themes/demo/assets/images/avatars/avatar-1.png b/themes/demo/assets/images/avatars/avatar-1.png new file mode 100644 index 0000000..75fcbe7 Binary files /dev/null and b/themes/demo/assets/images/avatars/avatar-1.png differ diff --git a/themes/demo/assets/images/avatars/avatar-2.png b/themes/demo/assets/images/avatars/avatar-2.png new file mode 100644 index 0000000..1e22634 Binary files /dev/null and b/themes/demo/assets/images/avatars/avatar-2.png differ diff --git a/themes/demo/assets/images/avatars/avatar-3.png b/themes/demo/assets/images/avatars/avatar-3.png new file mode 100644 index 0000000..af348b1 Binary files /dev/null and b/themes/demo/assets/images/avatars/avatar-3.png differ diff --git a/themes/demo/assets/images/avatars/avatar-4.png b/themes/demo/assets/images/avatars/avatar-4.png new file mode 100644 index 0000000..7b66771 Binary files /dev/null and b/themes/demo/assets/images/avatars/avatar-4.png differ diff --git a/themes/demo/assets/images/avatars/avatar-5.png b/themes/demo/assets/images/avatars/avatar-5.png new file mode 100644 index 0000000..c5977f0 Binary files /dev/null and b/themes/demo/assets/images/avatars/avatar-5.png differ diff --git a/themes/demo/assets/images/blocks/chart.png b/themes/demo/assets/images/blocks/chart.png new file mode 100644 index 0000000..afdfe18 Binary files /dev/null and b/themes/demo/assets/images/blocks/chart.png differ diff --git a/themes/demo/assets/images/blocks/landing-page-slice.svg b/themes/demo/assets/images/blocks/landing-page-slice.svg new file mode 100644 index 0000000..552cd8b --- /dev/null +++ b/themes/demo/assets/images/blocks/landing-page-slice.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/demo/assets/images/blocks/team.png b/themes/demo/assets/images/blocks/team.png new file mode 100644 index 0000000..92092f7 Binary files /dev/null and b/themes/demo/assets/images/blocks/team.png differ diff --git a/themes/demo/assets/images/contact/team.png b/themes/demo/assets/images/contact/team.png new file mode 100644 index 0000000..fea1796 Binary files /dev/null and b/themes/demo/assets/images/contact/team.png differ diff --git a/themes/demo/assets/images/default-avatar.png b/themes/demo/assets/images/default-avatar.png new file mode 100644 index 0000000..4cafcf2 Binary files /dev/null and b/themes/demo/assets/images/default-avatar.png differ diff --git a/themes/demo/assets/images/default-post.png b/themes/demo/assets/images/default-post.png new file mode 100644 index 0000000..b8c902e Binary files /dev/null and b/themes/demo/assets/images/default-post.png differ diff --git a/themes/demo/assets/images/favicon.png b/themes/demo/assets/images/favicon.png new file mode 100644 index 0000000..bb6415d Binary files /dev/null and b/themes/demo/assets/images/favicon.png differ diff --git a/themes/demo/assets/images/homepage/about-page.png b/themes/demo/assets/images/homepage/about-page.png new file mode 100644 index 0000000..bb056b0 Binary files /dev/null and b/themes/demo/assets/images/homepage/about-page.png differ diff --git a/themes/demo/assets/images/homepage/header-image.png b/themes/demo/assets/images/homepage/header-image.png new file mode 100644 index 0000000..351458c Binary files /dev/null and b/themes/demo/assets/images/homepage/header-image.png differ diff --git a/themes/demo/assets/images/homepage/layouts-image.png b/themes/demo/assets/images/homepage/layouts-image.png new file mode 100644 index 0000000..25ccec8 Binary files /dev/null and b/themes/demo/assets/images/homepage/layouts-image.png differ diff --git a/themes/demo/assets/images/homepage/pages-image.png b/themes/demo/assets/images/homepage/pages-image.png new file mode 100644 index 0000000..9488ffd Binary files /dev/null and b/themes/demo/assets/images/homepage/pages-image.png differ diff --git a/themes/demo/assets/images/homepage/partials-image.png b/themes/demo/assets/images/homepage/partials-image.png new file mode 100644 index 0000000..aa1923b Binary files /dev/null and b/themes/demo/assets/images/homepage/partials-image.png differ diff --git a/themes/demo/assets/images/icons/icon-address.png b/themes/demo/assets/images/icons/icon-address.png new file mode 100644 index 0000000..fedd5cf Binary files /dev/null and b/themes/demo/assets/images/icons/icon-address.png differ diff --git a/themes/demo/assets/images/icons/icon-assets.png b/themes/demo/assets/images/icons/icon-assets.png new file mode 100644 index 0000000..941434a Binary files /dev/null and b/themes/demo/assets/images/icons/icon-assets.png differ diff --git a/themes/demo/assets/images/icons/icon-basket.png b/themes/demo/assets/images/icons/icon-basket.png new file mode 100644 index 0000000..33b95ea Binary files /dev/null and b/themes/demo/assets/images/icons/icon-basket.png differ diff --git a/themes/demo/assets/images/icons/icon-briefcase.png b/themes/demo/assets/images/icons/icon-briefcase.png new file mode 100644 index 0000000..6e02183 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-briefcase.png differ diff --git a/themes/demo/assets/images/icons/icon-calendar.png b/themes/demo/assets/images/icons/icon-calendar.png new file mode 100644 index 0000000..8cf5bb7 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-calendar.png differ diff --git a/themes/demo/assets/images/icons/icon-check.png b/themes/demo/assets/images/icons/icon-check.png new file mode 100644 index 0000000..cc7520e Binary files /dev/null and b/themes/demo/assets/images/icons/icon-check.png differ diff --git a/themes/demo/assets/images/icons/icon-collapse.png b/themes/demo/assets/images/icons/icon-collapse.png new file mode 100644 index 0000000..3811b00 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-collapse.png differ diff --git a/themes/demo/assets/images/icons/icon-contentblocks.png b/themes/demo/assets/images/icons/icon-contentblocks.png new file mode 100644 index 0000000..e1d71c8 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-contentblocks.png differ diff --git a/themes/demo/assets/images/icons/icon-email.png b/themes/demo/assets/images/icons/icon-email.png new file mode 100644 index 0000000..c5cd353 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-email.png differ diff --git a/themes/demo/assets/images/icons/icon-keyboard-return.png b/themes/demo/assets/images/icons/icon-keyboard-return.png new file mode 100644 index 0000000..09777f3 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-keyboard-return.png differ diff --git a/themes/demo/assets/images/icons/icon-layouts.png b/themes/demo/assets/images/icons/icon-layouts.png new file mode 100644 index 0000000..07d2d93 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-layouts.png differ diff --git a/themes/demo/assets/images/icons/icon-notepad.png b/themes/demo/assets/images/icons/icon-notepad.png new file mode 100644 index 0000000..553d8b7 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-notepad.png differ diff --git a/themes/demo/assets/images/icons/icon-pages.png b/themes/demo/assets/images/icons/icon-pages.png new file mode 100644 index 0000000..f7a5743 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-pages.png differ diff --git a/themes/demo/assets/images/icons/icon-pagination-arrow.png b/themes/demo/assets/images/icons/icon-pagination-arrow.png new file mode 100644 index 0000000..e58b4f1 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-pagination-arrow.png differ diff --git a/themes/demo/assets/images/icons/icon-partials.png b/themes/demo/assets/images/icons/icon-partials.png new file mode 100644 index 0000000..b40ffdf Binary files /dev/null and b/themes/demo/assets/images/icons/icon-partials.png differ diff --git a/themes/demo/assets/images/icons/icon-phone.png b/themes/demo/assets/images/icons/icon-phone.png new file mode 100644 index 0000000..7566bbd Binary files /dev/null and b/themes/demo/assets/images/icons/icon-phone.png differ diff --git a/themes/demo/assets/images/icons/icon-placeholders.png b/themes/demo/assets/images/icons/icon-placeholders.png new file mode 100644 index 0000000..b705d64 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-placeholders.png differ diff --git a/themes/demo/assets/images/icons/icon-search.png b/themes/demo/assets/images/icons/icon-search.png new file mode 100644 index 0000000..94464d6 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-search.png differ diff --git a/themes/demo/assets/images/icons/icon-share.png b/themes/demo/assets/images/icons/icon-share.png new file mode 100644 index 0000000..fe6cc78 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-share.png differ diff --git a/themes/demo/assets/images/icons/icon-shield.png b/themes/demo/assets/images/icons/icon-shield.png new file mode 100644 index 0000000..57e1c8d Binary files /dev/null and b/themes/demo/assets/images/icons/icon-shield.png differ diff --git a/themes/demo/assets/images/icons/icon-tick.png b/themes/demo/assets/images/icons/icon-tick.png new file mode 100644 index 0000000..68d4152 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-tick.png differ diff --git a/themes/demo/assets/images/icons/icon-todo.png b/themes/demo/assets/images/icons/icon-todo.png new file mode 100644 index 0000000..bf2045e Binary files /dev/null and b/themes/demo/assets/images/icons/icon-todo.png differ diff --git a/themes/demo/assets/images/icons/icon-user.png b/themes/demo/assets/images/icons/icon-user.png new file mode 100644 index 0000000..a8e4908 Binary files /dev/null and b/themes/demo/assets/images/icons/icon-user.png differ diff --git a/themes/demo/assets/images/logo-leaf.png b/themes/demo/assets/images/logo-leaf.png new file mode 100644 index 0000000..0410d20 Binary files /dev/null and b/themes/demo/assets/images/logo-leaf.png differ diff --git a/themes/demo/assets/images/logo.svg b/themes/demo/assets/images/logo.svg new file mode 100644 index 0000000..1687240 --- /dev/null +++ b/themes/demo/assets/images/logo.svg @@ -0,0 +1,27 @@ + + + logo + + + + + + + + + \ No newline at end of file diff --git a/themes/demo/assets/images/social-icons-share/facebook.png b/themes/demo/assets/images/social-icons-share/facebook.png new file mode 100644 index 0000000..4b1ad83 Binary files /dev/null and b/themes/demo/assets/images/social-icons-share/facebook.png differ diff --git a/themes/demo/assets/images/social-icons-share/linkedin.png b/themes/demo/assets/images/social-icons-share/linkedin.png new file mode 100644 index 0000000..c8ccbff Binary files /dev/null and b/themes/demo/assets/images/social-icons-share/linkedin.png differ diff --git a/themes/demo/assets/images/social-icons-share/twitter.png b/themes/demo/assets/images/social-icons-share/twitter.png new file mode 100644 index 0000000..f54d47a Binary files /dev/null and b/themes/demo/assets/images/social-icons-share/twitter.png differ diff --git a/themes/demo/assets/images/social-icons-white/dribbble-white.png b/themes/demo/assets/images/social-icons-white/dribbble-white.png new file mode 100644 index 0000000..50327bc Binary files /dev/null and b/themes/demo/assets/images/social-icons-white/dribbble-white.png differ diff --git a/themes/demo/assets/images/social-icons-white/facebook-white.png b/themes/demo/assets/images/social-icons-white/facebook-white.png new file mode 100644 index 0000000..d4bc8dd Binary files /dev/null and b/themes/demo/assets/images/social-icons-white/facebook-white.png differ diff --git a/themes/demo/assets/images/social-icons-white/linkedin-white.png b/themes/demo/assets/images/social-icons-white/linkedin-white.png new file mode 100644 index 0000000..0a3dc4d Binary files /dev/null and b/themes/demo/assets/images/social-icons-white/linkedin-white.png differ diff --git a/themes/demo/assets/images/social-icons-white/twitter-white.png b/themes/demo/assets/images/social-icons-white/twitter-white.png new file mode 100644 index 0000000..098bc09 Binary files /dev/null and b/themes/demo/assets/images/social-icons-white/twitter-white.png differ diff --git a/themes/demo/assets/images/social-icons/dribbble.png b/themes/demo/assets/images/social-icons/dribbble.png new file mode 100644 index 0000000..8b31568 Binary files /dev/null and b/themes/demo/assets/images/social-icons/dribbble.png differ diff --git a/themes/demo/assets/images/social-icons/facebook.png b/themes/demo/assets/images/social-icons/facebook.png new file mode 100644 index 0000000..9679340 Binary files /dev/null and b/themes/demo/assets/images/social-icons/facebook.png differ diff --git a/themes/demo/assets/images/social-icons/linkedin.png b/themes/demo/assets/images/social-icons/linkedin.png new file mode 100644 index 0000000..c54df29 Binary files /dev/null and b/themes/demo/assets/images/social-icons/linkedin.png differ diff --git a/themes/demo/assets/images/social-icons/rss.png b/themes/demo/assets/images/social-icons/rss.png new file mode 100644 index 0000000..5f21240 Binary files /dev/null and b/themes/demo/assets/images/social-icons/rss.png differ diff --git a/themes/demo/assets/images/social-icons/twitter.png b/themes/demo/assets/images/social-icons/twitter.png new file mode 100644 index 0000000..d36e0c5 Binary files /dev/null and b/themes/demo/assets/images/social-icons/twitter.png differ diff --git a/themes/demo/assets/images/social-icons/youtube.png b/themes/demo/assets/images/social-icons/youtube.png new file mode 100644 index 0000000..fa6cdf6 Binary files /dev/null and b/themes/demo/assets/images/social-icons/youtube.png differ diff --git a/themes/demo/assets/images/stock/desks-cropped.png b/themes/demo/assets/images/stock/desks-cropped.png new file mode 100644 index 0000000..266a636 Binary files /dev/null and b/themes/demo/assets/images/stock/desks-cropped.png differ diff --git a/themes/demo/assets/images/stock/desks.png b/themes/demo/assets/images/stock/desks.png new file mode 100644 index 0000000..3c3143e Binary files /dev/null and b/themes/demo/assets/images/stock/desks.png differ diff --git a/themes/demo/assets/images/stock/desktop.png b/themes/demo/assets/images/stock/desktop.png new file mode 100644 index 0000000..79c3bae Binary files /dev/null and b/themes/demo/assets/images/stock/desktop.png differ diff --git a/themes/demo/assets/images/stock/doughnuts.png b/themes/demo/assets/images/stock/doughnuts.png new file mode 100644 index 0000000..8742b7a Binary files /dev/null and b/themes/demo/assets/images/stock/doughnuts.png differ diff --git a/themes/demo/assets/images/stock/pancakes.png b/themes/demo/assets/images/stock/pancakes.png new file mode 100644 index 0000000..b50dc9f Binary files /dev/null and b/themes/demo/assets/images/stock/pancakes.png differ diff --git a/themes/demo/assets/images/stock/workspace.png b/themes/demo/assets/images/stock/workspace.png new file mode 100644 index 0000000..fe61889 Binary files /dev/null and b/themes/demo/assets/images/stock/workspace.png differ diff --git a/themes/demo/assets/images/theme-preview.png b/themes/demo/assets/images/theme-preview.png new file mode 100644 index 0000000..5af698a Binary files /dev/null and b/themes/demo/assets/images/theme-preview.png differ diff --git a/themes/demo/assets/images/waves/footer-blue-wave.svg b/themes/demo/assets/images/waves/footer-blue-wave.svg new file mode 100644 index 0000000..b8e8e50 --- /dev/null +++ b/themes/demo/assets/images/waves/footer-blue-wave.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/themes/demo/assets/images/waves/footer-wave.svg b/themes/demo/assets/images/waves/footer-wave.svg new file mode 100644 index 0000000..a5b0cf7 --- /dev/null +++ b/themes/demo/assets/images/waves/footer-wave.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/themes/demo/assets/images/waves/header-wave.svg b/themes/demo/assets/images/waves/header-wave.svg new file mode 100644 index 0000000..9ac7319 --- /dev/null +++ b/themes/demo/assets/images/waves/header-wave.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/demo/assets/js/app.js b/themes/demo/assets/js/app.js new file mode 100644 index 0000000..84d7cf6 --- /dev/null +++ b/themes/demo/assets/js/app.js @@ -0,0 +1,36 @@ +addEventListener('render', function() { + + // Auto Collapsed List + $('ul.bullet-list li.active:first').each(function() { + $(this).parents('ul.collapse').each(function() { + $(this).addClass('show').prevAll('.collapse-caret:first').removeClass('collapsed'); + }); + }); + + // Tooltips + $('[data-bs-toggle="tooltip"]').each(function() { + $(this).tooltip(); + }); + + // Popovers + $('[data-bs-toggle="popover"]').each(function() { + var $el = $(this); + if ($el.data('content-target')) { + $el + .popover({ html: true, content: $($el.data('content-target')).get(0) }) + .on('shown.bs.popover', function() { + $('input:first', $($el.data('content-target'))).focus(); + }) + ; + } + else { + $el.popover(); + } + }); + + // How it is made + setTimeout(function() { + $('.how-its-made').removeClass('init'); + }, 1); + +}); diff --git a/themes/demo/assets/js/blocks/team-leaders.js b/themes/demo/assets/js/blocks/team-leaders.js new file mode 100644 index 0000000..4949074 --- /dev/null +++ b/themes/demo/assets/js/blocks/team-leaders.js @@ -0,0 +1,46 @@ +oc.registerControl('team-leaders', class extends oc.ControlBase { + connect() { + this.$el = $(this.element); + this.connectSlick(); + } + + disconnect() { + this.$el.slick('unslick'); + this.$el = null; + } + + connectSlick() { + this.$el.slick({ + dots: true, + infinite: false, + speed: 300, + slidesToShow: 4, + slidesToScroll: 4, + responsive: [ + { + breakpoint: 1200, + settings: { + slidesToShow: 3, + slidesToScroll: 3, + infinite: true, + dots: true + } + }, + { + breakpoint: 992, + settings: { + slidesToShow: 2, + slidesToScroll: 2 + } + }, + { + breakpoint: 576, + settings: { + slidesToShow: 1, + slidesToScroll: 1 + } + } + ] + }); + } +}); diff --git a/themes/demo/assets/js/controls/alert-dialog.js b/themes/demo/assets/js/controls/alert-dialog.js new file mode 100644 index 0000000..7e4ef6a --- /dev/null +++ b/themes/demo/assets/js/controls/alert-dialog.js @@ -0,0 +1,128 @@ +;(function(){ + + /** + * AlertDialog implements fancy alert and confirm dialog windows. + * + * - alertMessage(message) + * - confirmMessage(message, function(ok)) + */ + class AlertDialog extends oc.ControlBase + { + connect() { + addEventListener('ajax:error-message', this.proxy(this.onErrorMessage)); + addEventListener('ajax:confirm-message', this.proxy(this.onConfirmMessage)); + } + + disconnect() { + removeEventListener('ajax:error-message', this.proxy(this.onErrorMessage)); + removeEventListener('ajax:confirm-message', this.proxy(this.onConfirmMessage)); + } + + onErrorMessage(event) { + const { message } = event.detail; + if (!message) { + return; + } + + this.alertMessage(message); + + // Prevent the default alert() message + event.preventDefault(); + } + + onConfirmMessage(event) { + const { message, promise } = event.detail; + if (!message) { + return; + } + + this.confirmMessage(message, isConfirm => { + if (isConfirm) { + promise.resolve(); + } + else { + promise.reject(); + } + }); + + // Prevent the default confirm() message + event.preventDefault(); + } + + alertMessage(message) { + var popup = this.getDialogElement(); + document.body.appendChild(popup); + + popup.querySelector('[data-cancel]').remove(); + popup.querySelector('[data-message]').innerText = message; + + var modal = new bootstrap.Modal(popup); + modal.show(); + + popup.querySelector('[data-ok]').addEventListener('click', () => { + modal.hide(); + }, { once: true }); + + popup.addEventListener('hidden.bs.modal', () => { + modal.dispose(); + popup.remove(); + }, { once: true }); + + popup.querySelector('[data-ok]').focus(); + } + + confirmMessage(message, callback) { + var popup = this.getDialogElement(); + document.body.appendChild(popup); + + popup.querySelector('[data-message]').innerText = message; + + var modal = new bootstrap.Modal(popup); + modal.show(); + + popup.querySelector('[data-ok]').addEventListener('click', () => { + callback && callback(true); + modal.hide(); + }, { once: true }); + + popup.querySelector('[data-cancel]').addEventListener('click', () => { + callback && callback(false); + modal.hide(); + }, { once: true }); + + popup.addEventListener('hidden.bs.modal', () => { + modal.dispose(); + popup.remove(); + }, { once: true }); + + popup.querySelector('[data-cancel]').focus(); + } + + getDialogElement() { + var template = document.createElement('template'); + template.innerHTML = this.element.innerHTML.trim(); + return template.content.firstChild; + } + + static alertMessageGlobal(message) { + const alertDialog = oc.fetchControl('[data-control=alert-dialog]'); + if (alertDialog) { + alertDialog.alertMessage(message); + } + } + + static confirmMessageGlobal(message, callback) { + const alertDialog = oc.fetchControl('[data-control=alert-dialog]'); + if (alertDialog) { + alertDialog.confirmMessage(message, callback); + } + } + } + + oc.registerControl('alert-dialog', AlertDialog); + + window.alertMessage = AlertDialog.alertMessageGlobal; + + window.confirmMessage = AlertDialog.confirmMessageGlobal; + +})(); diff --git a/themes/demo/assets/js/controls/card-slider.js b/themes/demo/assets/js/controls/card-slider.js new file mode 100644 index 0000000..2a332b0 --- /dev/null +++ b/themes/demo/assets/js/controls/card-slider.js @@ -0,0 +1,122 @@ +;(function(){ + + oc.registerControl('card-slider', class extends oc.ControlBase { + init() { + this.$el = $(this.element); + this.sliderType = this.config.sliderType || 'hero'; + this.element.classList.add('type-' + this.sliderType); + } + + connect() { + this.connectSlick(); + } + + disconnect() { + this.$el.slick('unslick'); + this.$el = null; + } + + connectSlick() { + this.$el.slick(this.getSlickOptions()); + } + + getSlickOptions() { + if (this.sliderType === 'hero') { + return this.getHeroTypeOptions(); + } + + if (this.sliderType === 'team') { + return this.getTeamTypeOptions(); + } + + if (this.sliderType === 'category') { + return this.getCategoryTypeOptions(); + } + + return {}; + } + + getHeroTypeOptions() { + return { + infinite: true, + slidesToShow: 1, + slidesToScroll: 1, + autoplay: true, + dots: true, + arrows: false, + }; + } + + getTeamTypeOptions() { + return { + dots: true, + infinite: false, + speed: 300, + slidesToShow: 4, + slidesToScroll: 4, + responsive: [ + { + breakpoint: 1200, + settings: { + slidesToShow: 3, + slidesToScroll: 3, + infinite: true, + dots: true + } + }, + { + breakpoint: 992, + settings: { + slidesToShow: 2, + slidesToScroll: 2 + } + }, + { + breakpoint: 576, + settings: { + slidesToShow: 1, + slidesToScroll: 1 + } + } + ] + }; + } + + getCategoryTypeOptions() { + return { + dots: false, + infinite: true, + slidesToShow: 6, + slidesToScroll: 1, + autoplay: true, + arrows: true, + prevArrow: '', + nextArrow: '', + responsive: [ + { + breakpoint: 1400, + settings: { + slidesToShow: 4, + slidesToScroll: 4 + } + }, + { + breakpoint: 820, + settings: { + slidesToShow: 2, + slidesToScroll: 1 + } + }, + { + breakpoint: 480, + settings: { + slidesToShow: 2, + slidesToScroll: 1 + } + } + ] + }; + } + }); + +})(); diff --git a/themes/demo/assets/js/controls/gallery-slider.js b/themes/demo/assets/js/controls/gallery-slider.js new file mode 100644 index 0000000..d77439c --- /dev/null +++ b/themes/demo/assets/js/controls/gallery-slider.js @@ -0,0 +1,103 @@ +;(function(){ + + oc.registerControl('gallery-slider', class extends oc.ControlBase { + init() { + this.$thumbs = this.element.querySelector('[data-slider-thumbs]') || this.element; + this.$previews = this.element.querySelector('[data-slider-previews]'); + } + + connect() { + this.connectSlickThumbs(); + if (this.$previews) { + this.connectSlickPreviews(); + } + + this.connectLightbox(); + setTimeout(() => { + this.prepareLightbox(); + }, 1); + } + + disconnect() { + if (this.lightbox) { + this.lightbox.destroy(); + this.lightbox = null; + } + + $(this.$thumbs).slick('unslick'); + this.$thumbs = null; + + if (this.$previews) { + $(this.$previews).slick('unslick'); + this.$previews = null; + } + } + + connectSlickPreviews() { + $(this.$previews).slick({ + slidesToShow: 1, + slidesToScroll: 1, + arrows: false, + fade: true, + asNavFor: this.$thumbs + }); + } + + connectSlickThumbs() { + $(this.$thumbs).slick({ + dots: true, + infinite: false, + speed: 300, + slidesToShow: 3, + slidesToScroll: 3, + focusOnSelect: !!this.$previews, + asNavFor: this.$previews, + responsive: [ + { + breakpoint: 992, + settings: { + slidesToShow: 2, + slidesToScroll: 2 + } + }, + { + breakpoint: 576, + settings: { + slidesToShow: 1, + slidesToScroll: 1 + } + } + ] + }); + } + + connectLightbox() { + this.lightbox = new PhotoSwipeLightbox({ + gallery: this.$previews || this.$thumbs, + children: '.slick-slide', + pswpModule: PhotoSwipeModule, + showHideAnimationType: 'none' + }); + + new PhotoSwipeDynamicCaption(this.lightbox, { + type: 'auto' + }); + + this.lightbox.init(); + } + + prepareLightbox() { + $('.slick-slide a', this.$el).each(function () { + var image = new Image(), + link = this; + + image.src = this.getAttribute('href'); + image.onload = function () { + link.setAttribute('data-pswp-width', image.naturalWidth); + link.setAttribute('data-pswp-height', image.naturalHeight); + }; + }); + } + }); + +})(); diff --git a/themes/demo/assets/js/controls/password-dialog.js b/themes/demo/assets/js/controls/password-dialog.js new file mode 100644 index 0000000..247145d --- /dev/null +++ b/themes/demo/assets/js/controls/password-dialog.js @@ -0,0 +1,69 @@ +;(function(){ + + /** + * PasswordDialog implements a password confirmation screen for sensitive actions + */ + class PasswordDialog extends oc.ControlBase { + connect() { + addEventListener('app:password-confirming', this.proxy(this.onShowPasswordPrompt)); + } + + disconnect() { + removeEventListener('app:password-confirming', this.proxy(this.onShowPasswordPrompt)); + } + + onShowPasswordPrompt(event) { + this.target = event.target; + this.popup = this.getDialogElement(); + this.form = this.popup.querySelector('form'); + + document.body.appendChild(this.popup); + + // Create a new modal + this.modal = new bootstrap.Modal(this.popup); + this.modal.show(); + + // Focus the input + this.popup.querySelector('input[name=confirmable_password]').focus(); + + // Bind events + this.popup.querySelector('[data-cancel]').addEventListener('click', () => this.modal.hide(), { once: true }); + this.popup.addEventListener('hidden.bs.modal', () => this.disposeDialog(), { once: true }); + this.form.addEventListener('ajax:done', this.proxy(this.onPasswordConfirmed), { once: true }); + + // Prevent the update workflow + event.preventDefault(); + } + + onPasswordConfirmed(event) { + const { data } = event.detail; + + // Resubmit original AJAX event, skipping confirmation prompts + if (data.passwordConfirmed) { + oc.request(this.target, null, { confirm: false }); + } + + this.modal.hide(); + } + + disposeDialog() { + this.modal.dispose(); + this.form.removeEventListener('ajax:done', this.proxy(this.onPasswordConfirmed), { once: true }); + this.popup.remove(); + + this.form = null; + this.popup = null; + this.modal = null; + this.target = null; + } + + getDialogElement() { + var template = document.createElement('template'); + template.innerHTML = this.element.innerHTML.trim(); + return template.content.firstChild; + } + } + + oc.registerControl('password-dialog', PasswordDialog); + +})(); diff --git a/themes/demo/assets/js/controls/quantity-input.js b/themes/demo/assets/js/controls/quantity-input.js new file mode 100644 index 0000000..076f875 --- /dev/null +++ b/themes/demo/assets/js/controls/quantity-input.js @@ -0,0 +1,36 @@ +;(function(){ + + oc.registerControl('quantity-input', class extends oc.ControlBase { + connect() { + this.$qty = this.element.querySelector('input.quantity-field'); + this.listen('click', '.button-plus', this.onIncrementValue); + this.listen('click', '.button-minus', this.onDecrementValue); + } + + disconnect() { + this.$qty = null; + } + + onIncrementValue(ev) { + ev.preventDefault(); + var value = parseInt(this.$qty.value, 10); + if (isNaN(value)) { + value = 0; + } + + this.$qty.value = Math.max(++value, 0); + } + + onDecrementValue(ev) { + ev.preventDefault(); + var value = parseInt(this.$qty.value, 10); + if (isNaN(value)) { + value = 0; + } + + this.$qty.value = Math.max(--value, 0); + } + + }); + +})(); diff --git a/themes/demo/assets/less/blocks/hero-image.less b/themes/demo/assets/less/blocks/hero-image.less new file mode 100644 index 0000000..716170c --- /dev/null +++ b/themes/demo/assets/less/blocks/hero-image.less @@ -0,0 +1,21 @@ +.block-hero-image { + background-size: 125%; + background-position: 45% 25%; + background-repeat: no-repeat; + height: 520px; + position: relative; + + &:after { + content: ''; + position: absolute; + left: 0; + bottom: -3px; + height: 120px; + width: 100%; + z-index: 1; + background-image: url('../../images/blocks/landing-page-slice.svg'); + background-repeat: no-repeat; + background-position: left bottom; + background-size: 100%; + } +} diff --git a/themes/demo/assets/less/blocks/scoreboard-metrics.less b/themes/demo/assets/less/blocks/scoreboard-metrics.less new file mode 100644 index 0000000..34f35f1 --- /dev/null +++ b/themes/demo/assets/less/blocks/scoreboard-metrics.less @@ -0,0 +1,16 @@ +.block-scoreboard-metrics { + background: linear-gradient(102.01deg, #eff4fd 0.3%, #f6f2ff 106.31%); + + .metrics { + .metric { + padding: 60px 0; + h3 { + font-weight: 700; + font-size: 40px; + margin-bottom: 5px; + } + + text-align: center; + } + } +} diff --git a/themes/demo/assets/less/blocks/team-leaders.less b/themes/demo/assets/less/blocks/team-leaders.less new file mode 100644 index 0000000..fcf8736 --- /dev/null +++ b/themes/demo/assets/less/blocks/team-leaders.less @@ -0,0 +1,33 @@ +.block-team-leaders { + position: relative; + + .team-leaders { + white-space: nowrap; + + .slick-list { + padding: 30px; + margin-top: -30px; + margin-bottom: -30px; + margin-left: -30px; + margin-right: -30px; + } + + .slick-arrow { + display: none!important; + } + + .team-member-container { + padding: 0 15px; + + .team-member { + white-space: normal; + } + } + + .slick-dots { + li.slick-active button:before { + font-size: 10px; + } + } + } +} diff --git a/themes/demo/assets/less/controls/card-slider.less b/themes/demo/assets/less/controls/card-slider.less new file mode 100644 index 0000000..485af38 --- /dev/null +++ b/themes/demo/assets/less/controls/card-slider.less @@ -0,0 +1,105 @@ +.control-card-slider { + position: relative; + + &.type-hero { + .slide-item { + width: 100%; + height: 391px; + background-position: center center; + background-size: cover; + border-radius: 6px; + } + + .slick-slide { + margin-right: 0rem !important; + } + + .slick-dots { + position: absolute; + bottom: 18px; + display: block; + li { + margin: 0rem; + } + } + } + + &.type-category { + margin-left: -.5rem; + margin-right: -.5rem; + + .slick-slide { + margin-left: .5rem; + margin-right: .5rem; + + img { + display: inline-block; + } + } + + .slick-prev, + .slick-next { + position: absolute; + top: 0; + left: 97%; + padding: 0; + transform: translate(0, -50%); + cursor: pointer; + + font-size: 18px; + height: 32px; + width: 32px; + display: inline-flex; + flex-shrink: 0; + justify-content: center; + align-items: center; + background-color: var(--bs-gray-200); + border: 1px solid var(--bs-gray-200); + border-radius: 50px; + color: var(--bs-gray-500); + transition: 0.3s ease-in-out; + + &:before { + display: none; + } + + &:hover { + background-color: var(--bs-primary); + border-color: var(--bs-primary); + color: var(--bs-white); + } + + @media (max-width: 1024px) { + left: 94%; + } + @media (max-width: 390px) { + left: 87%; + } + } + + .slick-prev { + margin-top: -38px; + margin-left: -40px; + &:hover { + color: var(--bs-white); + outline: none; + background: var(--bs-primary); + } + &:focus { + display: none; + } + } + + .slick-next { + margin-top: -38px; + &:hover { + color: var(--bs-white); + outline: none; + background: var(--bs-primary); + } + &:focus { + display: none; + } + } + } +} diff --git a/themes/demo/assets/less/controls/gallery-slider.less b/themes/demo/assets/less/controls/gallery-slider.less new file mode 100644 index 0000000..a8bd4dd --- /dev/null +++ b/themes/demo/assets/less/controls/gallery-slider.less @@ -0,0 +1,29 @@ +.control-gallery-slider { + margin-left: -10px; + margin-right: -10px; + + .slick-slide { + padding: 10px; + outline: none; + + .image-container { + a { + display: block; + overflow: hidden; + border-radius: 6px; + box-shadow: 0 0 10px rgba(129, 138, 166, 0.21); + outline: none; + + img { + max-width: 100%; + } + } + } + } + + .slider-nav { + .slick-slide.slick-current img { + border: 2px solid var(--bs-primary); + } + } +} diff --git a/themes/demo/assets/less/controls/quantity-input.less b/themes/demo/assets/less/controls/quantity-input.less new file mode 100644 index 0000000..6ffca6d --- /dev/null +++ b/themes/demo/assets/less/controls/quantity-input.less @@ -0,0 +1,22 @@ +.control-quantity-input { + .button-minus, + .button-plus { + height: 2rem; + width: 1.8rem; + border-color: var(--bs-gray-200); + background-color: transparent; + &:hover { + background-color: var(--bs-gray-200); + border-color: var(--bs-gray-200); + } + } + + .quantity-field { + height: 100%; + width: 2.2rem; + background: none; + min-height: 2rem; + text-align: center; + border: 1px solid var(--bs-gray-200); + } +} diff --git a/themes/demo/assets/less/elements/buttons.less b/themes/demo/assets/less/elements/buttons.less new file mode 100644 index 0000000..f54bbbc --- /dev/null +++ b/themes/demo/assets/less/elements/buttons.less @@ -0,0 +1,72 @@ +.btn:hover, .btn:focus, .btn.focus { + text-decoration: none; +} + +.btn { + &.btn-pill { + border-radius: 100px; + padding-left: 25px; + padding-right: 25px; + } + + &.btn-primary { + &:not(:hover):not(:active) { + border-color: transparent; + background-image: linear-gradient(102.01deg, #5799EB 0.3%, #9F74FB 106.31%); + } + } +} + +.share-button { + display: inline-block; + + .btn { + position: relative; + padding-left: 47px; + padding-right: 25px; + + &:before { + content: ""; + position: absolute; + left: 17px; + top: 12px; + width: 14px; + height: 14px; + background-repeat: no-repeat; + background-size: 14px 14px; + background-image: url('@{assets-url}/images/icons/icon-share.png'); + } + + &.btn-sm { + padding-left: 37px; + padding-right: 15px; + + &:before { + left: 12px; + top: 7px; + } + } + } +} + +.share-button-popover { + padding: 0; + margin: -1rem; + overflow: hidden; + border-radius: 8px; + + .nav-link { + padding: 10px 15px; + + color: #343F52; + text-decoration: none; + > i { + margin-right: 5px; + } + + &:hover { + color: #fff; + background: @brand-primary; + } + } +} diff --git a/themes/demo/assets/less/elements/callouts.less b/themes/demo/assets/less/elements/callouts.less new file mode 100644 index 0000000..0ee5734 --- /dev/null +++ b/themes/demo/assets/less/elements/callouts.less @@ -0,0 +1,48 @@ +// +// Callouts +// -------------------------------------------------- + +.callout { + margin-bottom: 20px; + padding: @callout-padding; + border-left: 3px solid @callout-border; + h4 { + margin-top: 0; + margin-bottom: 5px; + } + p:last-child { + margin-bottom: 0; + } +} + +.callout-danger { + background-color: @callout-danger-bg; + border-color: @callout-danger-border; + h4 { + color: @callout-danger-text; + } +} + +.callout-warning { + background-color: @callout-warning-bg; + border-color: @callout-warning-border; + h4 { + color: @callout-warning-text; + } +} + +.callout-info { + background-color: @callout-info-bg; + border-color: @callout-info-border; + h4 { + color: @callout-info-text; + } +} + +.callout-success { + background-color: @callout-success-bg; + border-color: @callout-success-border; + h4 { + color: @callout-success-text; + } +} diff --git a/themes/demo/assets/less/elements/card.less b/themes/demo/assets/less/elements/card.less new file mode 100644 index 0000000..c226300 --- /dev/null +++ b/themes/demo/assets/less/elements/card.less @@ -0,0 +1,92 @@ +.card { + border-radius: 13px; + box-shadow: 0px 0px 22px rgba(0, 0, 0, 0.07); + border-color: #EBEBEB; + overflow: hidden; + + .card-banner { + width: 100%; + height: 191px; + background-position: center center; + background-size: cover; + + &.banner-sm { + height: 120px; + } + + &.banner-lg { + height: 268px; + } + } + + .card-divider { + padding: 1.5rem; + + &:after { + content: ''; + border-bottom: 1px solid #EBEBEB; + display: block; + } + } + + .card-body { + padding: 1.5rem; + + &.card-lg { + padding-right: 2.5rem; + padding-left: 2.5rem; + } + } + + .card-footer { + background-color: #fff; + padding: 1rem 1.5rem; + border-bottom-left-radius: 13px; + border-bottom-right-radius: 13px; + } + + .card-title { + a { + color: #000; + text-decoration: none; + } + } + + .card-links { + position: relative; + z-index: 2; + } +} + +.card-post { + &.card-primary { + margin-bottom: -25px; + position: relative; + z-index: 3; + } + + .featured-text { + p:last-child { + margin-bottom: 0; + } + } + + .share-button { + margin-top: -5px; + } + + .card-meta { + .meta-item { + display: inline-block; + position: relative; + color: #A2A2A2; + font-size: 14px; + } + + .meta-divider { + width: 20px; + text-align: center; + } + } +} + diff --git a/themes/demo/assets/less/elements/code.less b/themes/demo/assets/less/elements/code.less new file mode 100644 index 0000000..d8606f3 --- /dev/null +++ b/themes/demo/assets/less/elements/code.less @@ -0,0 +1,69 @@ +pre { + padding: 0; + background-color: white; + border: 1px solid #ECF0F1; + border-radius: 6px; + + .CodeMirror { + height: auto; + color: #2C3E4F; + } + + .CodeMirror-gutters { + background: transparent; + border-right: 1px solid #ECF0F1; + } + + .CodeMirror-linenumber { + padding-right: 15px; + background: white; + } + + .CodeMirror-lines { + padding: 10px 0; + } + + .CodeMirror pre.CodeMirror-line { + padding-left: 20px; + } +} + +.collapsed-code-block { + position: relative; + + .expand-code { + display: none; + } + + &.collapsed { + margin-bottom: 36px; + + > pre { + height: 143px; + overflow: hidden; + position: relative; + } + + .expand-code { + border-radius: 20px; + user-select: none; + cursor: pointer; + display: block; + position: absolute; + bottom: -15px; + left: 50%; + font-size: 14px; + background-color: white; + border: 1px solid #ECF0F1; + z-index: 5; + transform: translateX(-50%); + padding: 4px 18px; + box-shadow: 0 0 0 3px white; + + &:hover { + color: white; + background-color: #7F8C8D; + } + } + } +} diff --git a/themes/demo/assets/less/elements/footer.less b/themes/demo/assets/less/elements/footer.less new file mode 100644 index 0000000..5ef877e --- /dev/null +++ b/themes/demo/assets/less/elements/footer.less @@ -0,0 +1,104 @@ +// Extend footer to the entire page +body, .element-footer { + background: linear-gradient(97.23deg, #2D8BFF -7.32%, #9F74FB 106.79%); +} + +.element-footer { + position: relative; + overflow: hidden; + min-height: 298px; + padding-top: 70px; + z-index: 1; + + &:before { + content: ''; + position: absolute; + width: 100%; + height: 106px; + background: url('@{assets-url}/images/waves/footer-wave.svg') repeat-x 0 0; + background-repeat: repeat-x; + z-index: 1; + top: -1px; + } + + &.footer-bluezone:before { + background: url('@{assets-url}/images/waves/footer-blue-wave.svg') repeat-x 0 0; + } + + > .container { + position: relative; + padding: 30px 0; + color: #fff; + z-index: 2; + } + + // Decorations + .footer-decoration-1 { + .decoration-circle(); + width: 524px; + height: 524px; + left: -42px; + top: 120px; + opacity: .02; + } + + .footer-decoration-2 { + .decoration-circle(); + width: 524px; + height: 524px; + right: -150px; + top: -160px; + opacity: .05; + } + + .footer-nav { + padding-bottom: 22px; + + .nav { + padding-right: 50px; + + .nav-item { + font-size: 16px; + + &.nav-item-header > a { + font-weight: 700; + } + + > a { + color: #fff; + padding: 4px 0; + } + } + } + } + + .footer-brand { + padding: 32px 0; + } + + .footer-social .nav { + .nav-item { + &:first-child > a { + padding-left: 0; + } + + img { + height: 28px; + } + } + } + + .footer-copyright { + text-align: right; + p { + margin: 0; + padding: 0; + line-height: 28px; + } + } + + @media (max-width: @screen-sm-max) { + padding-left: 20px; + padding-right: 20px; + } +} diff --git a/themes/demo/assets/less/elements/form.less b/themes/demo/assets/less/elements/form.less new file mode 100644 index 0000000..6a51257 --- /dev/null +++ b/themes/demo/assets/less/elements/form.less @@ -0,0 +1,31 @@ +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + appearance: none; + margin: 0; +} + +.form-control { + border-color: @input-border-color; + box-shadow: 0px 0px 23px rgba(129, 138, 166, 0.1); + border-radius: 0.7rem; +} + +.form-control-search { + width: 100%; + + input { + padding: 8px 38px 8px 18px; + border-radius: 100px; + } + + .search-icon { + position: absolute; + right: 18px; + top: 8px; + width: 24px; + height: 24px; + display: block; + background-image: url('@{assets-url}/images/icons/icon-search.png'); + background-size: 24px 24px; + } +} diff --git a/themes/demo/assets/less/elements/how-its-made.less b/themes/demo/assets/less/elements/how-its-made.less new file mode 100644 index 0000000..a03ab27 --- /dev/null +++ b/themes/demo/assets/less/elements/how-its-made.less @@ -0,0 +1,41 @@ +div.how-its-made { + position: fixed; + bottom: 50px; + width: 800px; + max-width: 100%; + z-index: 3; + padding: 0 30px; + margin: 0 0 0 50%; + transform: translateX(-50%) scale(1); + background-color: transparent; + transition: all 0.4s cubic-bezier(.25,-0.59,.35,1.58); + + &.init { + opacity: 0; + transform: translateX(-50%) scale(0.3); + } + + > div { + background-color: #FFE297; + box-shadow: 14px -8px 52px rgba(129, 138, 166, 0.42); + text-align: center; + padding: 10px 20px; + border-radius: 14px; + + p { + margin-bottom: 0; + + a { + color: inherit; + text-decoration: underline; + } + } + } +} + +html[data-turbo-preview] { + div.how-its-made { + opacity: 0; + transform: translateX(-50%) scale(0.3); + } +} diff --git a/themes/demo/assets/less/elements/jumbotron.less b/themes/demo/assets/less/elements/jumbotron.less new file mode 100644 index 0000000..faf7a96 --- /dev/null +++ b/themes/demo/assets/less/elements/jumbotron.less @@ -0,0 +1,62 @@ +// +// Jumbotron +// -------------------------------------------------- + +.jumbotron { + padding-top: @jumbotron-padding; + padding-bottom: @jumbotron-padding; + margin-bottom: @jumbotron-padding; + color: @jumbotron-color; + background-color: @jumbotron-bg; + + h1, + .h1 { + color: @jumbotron-heading-color; + position: relative; + padding-top: 66px; + + &:before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 46px; + height: 46px; + background-size: 46px 46px!important; + } + } + + p { + margin-top: 60px; + margin-bottom: (@jumbotron-padding / 2); + font-size: @jumbotron-font-size; + font-weight: normal; + } + + > hr { + border-top-color: darken(@jumbotron-bg, 10%); + } + + .container &, + .container-fluid & { + border-radius: @border-radius-base; + padding-left: 15px; + padding-right: 15px; + } + + @media screen and (min-width: @screen-sm-min) { + padding-top: (@jumbotron-padding * 1.6); + padding-bottom: (@jumbotron-padding * 1.6); + + .container &, + .container-fluid & { + padding-left: (@jumbotron-padding * 2); + padding-right: (@jumbotron-padding * 2); + } + + h1, + .h1 { + font-size: @jumbotron-heading-font-size; + } + } +} diff --git a/themes/demo/assets/less/elements/lists.less b/themes/demo/assets/less/elements/lists.less new file mode 100644 index 0000000..15d1c2e --- /dev/null +++ b/themes/demo/assets/less/elements/lists.less @@ -0,0 +1,67 @@ + +ul.bullet-list { + &, ul { + list-style: none; + padding: 0; + } + + li { + position: relative; + padding: 0 0 0 20px; + > a { + color: #6B7482; + } + &.active > a { + color: #8284F8; + } + } + + li:before { + content: ""; + position: absolute; + background-color: #7B61FF; + border-radius: 5px; + width: 5px; + height: 5px; + top: 11px; + left: 6px; + } + + li.collapsible { + &:before { + display: none; + } + + > .collapse-caret { + position: absolute; + display: block; + width: 20px; + height: 16px; + background-image: url('@{assets-url}/images/icons/icon-collapse.png'); + background-size: 10px 6px; + background-repeat: no-repeat; + background-position: center center; + top: 6px; + left: -1px; + &.collapsed { + transform: rotate(270deg) translate(0, 0); + } + } + } + + &.list-content { + &, ul { + padding-left: 10px; + } + + a { + color: #3097d1; + text-decoration: none; + } + + a:hover, a:focus { + color: #216a94; + text-decoration: underline; + } + } +} diff --git a/themes/demo/assets/less/elements/modals.less b/themes/demo/assets/less/elements/modals.less new file mode 100644 index 0000000..a10449c --- /dev/null +++ b/themes/demo/assets/less/elements/modals.less @@ -0,0 +1,4 @@ +.modal-dialog[data-ajax-updating], +.modal-dialog:not([data-ajax-updating]) + .modal-loading { + display: none; +} diff --git a/themes/demo/assets/less/elements/nav.less b/themes/demo/assets/less/elements/nav.less new file mode 100644 index 0000000..2a1b980 --- /dev/null +++ b/themes/demo/assets/less/elements/nav.less @@ -0,0 +1,36 @@ +.nav-line-pills { + border-bottom: 1px solid var(--bs-gray-300); + + .nav-item { + margin-right: 2rem; + + .nav-link { + font-weight: 500; + color: var(--bs-gray-600); + white-space: nowrap; + padding: 16px 0px; + margin-bottom: -1px; + border-bottom: 2px solid transparent; + border-radius: 0px; + &.active { + color: var(--bs-primary); + background-color: transparent; + border-bottom: 2px solid var(--bs-primary); + } + &:hover { + color: var(--bs-primary); + background-color: transparent; + border-bottom: 2px solid var(--bs-primary); + } + } + } + + @media (max-width: 576px) { + overflow-x: scroll; + flex-wrap: nowrap; + overflow-y: hidden; + &::-webkit-scrollbar { + display: none; + } + } +} diff --git a/themes/demo/assets/less/elements/navbar.less b/themes/demo/assets/less/elements/navbar.less new file mode 100644 index 0000000..2aa439d --- /dev/null +++ b/themes/demo/assets/less/elements/navbar.less @@ -0,0 +1,127 @@ +.navbar { + padding-top: 15px; + padding-bottom: 15px; + + &.navbar-dark { + background-color: transparent; + } + + .navbar-brand { + margin-top: -5px; + } + + a:hover, a:focus, a.focus { + text-decoration: none; + } + + .dropdown-item.active, .dropdown-item:active { + background-color: #6bc48d; + } +} + +@media screen and (min-width: @screen-md-min) { + .navbar { + .navbar-nav > li.nav-item { + padding: 0 8px; + + > a.btn { + padding: 3px 22px; + border-radius: 100px; + font-size: 14px; + margin-top: 7px; + } + + > a.nav-link { + position: relative; + transition: color 0.2s ease 0.05s; + color: #fff; + + &:before { + position: absolute; + height: 4px; + bottom: 2px; + content: ''; + border-radius: 4px; + z-index: 5; + width: 20px; + left: 50%; + transform: translateX(-50%); + transition: all 0.2s ease 0.05s; + } + + &.active:before, + &.active:hover:before { + background: #fff; + } + + &:hover:before { + background: #fff; + } + } + } + } +} + +// Mobile Nav +.navbar-mobile { + display: none; +} + +@media (max-width: @screen-sm-max) { + .navbar-mobile { + display: block; + + .navbar-collapse { + background: #2d3134; + position: fixed; + z-index: 10001; + right: -260px; + top: 0; + bottom: 0; + width: 260px; + padding: 20px; + height: 100% !important; + box-sizing: border-box; + overflow-x: hidden; + overflow-y: auto; + text-align: left; + backface-visibility: hidden; + transform: translate3d(0, 0, 0); + transform-origin: 0 10%; + transform: perspective(1000px) scale(1.3); + transition: all 0.4s 0s ease-in; + + &.collapsing { + transition-duration: 0.1s; + } + + &.show { + transition: all 0.3s 0s ease-out; + transform: perspective(1000px) scale(1) translate3d(-260px, 0, 0); + } + } + + .navbar-toggler { + color: #fff; + padding: 10px; + opacity: .8; + + &:hover, &:focus { + opacity: 1; + } + } + + .nav-item { + .nav-link { + color: #e0e0e0; + &:hover { + color: #fff; + } + } + .btn { + margin-top: 1rem; + margin-left: 1rem; + } + } + } +} diff --git a/themes/demo/assets/less/elements/pagination.less b/themes/demo/assets/less/elements/pagination.less new file mode 100644 index 0000000..e5b48c3 --- /dev/null +++ b/themes/demo/assets/less/elements/pagination.less @@ -0,0 +1,118 @@ +// +// Base Styles +// -------------------------------------------------- + +.pagination { + display: flex; + padding-left: 0; + list-style: none; + + > .page-item { + > .page-link { + margin-left: -1px; + padding: 5px 15px; + color: #666666; + background-color: #FFFFFF; + border: 1px solid #EBEBEB; + text-decoration: none; + + &:hover { + background-color: #f0f0f0; + } + } + + &.active > .page-link { + color: #000000; + font-weight: bold; + + &:hover { + background-color: #FFFFFF; + } + } + + &.disabled > .page-link { + color: #A1A1A1; + + &:hover { + background-color: #FFFFFF; + } + } + } +} + +// +// Custom Styles +// -------------------------------------------------- + +.blog-pagination { + display: inline-block; + .oc-pagination { + box-shadow: 0px 0px 22px rgba(0, 0, 0, 0.07); + } +} + +ul.pagination { + > li.page-item > .page-link { + padding: 8px 15px; + color: #A1A1A1; + background: #fff; + border-color: #EBEBEB; + text-decoration: none; + + &:focus { + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + } + } + + > li.page-item { + &.active > .page-link { + font-weight: 700; + color: #343F52; + background: #fff; + } + + &.first { + > .page-link { + border-bottom-left-radius: 0.25rem; + border-top-left-radius: 0.25rem; + } + .render-pagination-arrow(); + + > .page-link:before { + transform: scaleX(-1); + } + } + + &.last { + > .page-link { + border-bottom-right-radius: 0.25rem; + border-top-right-radius: 0.25rem; + } + .render-pagination-arrow(); + } + } +} + +.render-pagination-arrow() { + > .page-link { + position: relative; + color: #fff; + width: 44px; + + &:before { + content: ''; + display: block; + width: 15px; + height: 12.5px; + background: url('@{assets-url}/images/icons/icon-pagination-arrow.png') no-repeat 0 0; + background-size: 15px 12.5px; + position: absolute; + top: 16px; + left: 14px; + } + } + + &.disabled > .page-link:before { + opacity: .5; + } +} diff --git a/themes/demo/assets/less/elements/popover.less b/themes/demo/assets/less/elements/popover.less new file mode 100644 index 0000000..8b17a46 --- /dev/null +++ b/themes/demo/assets/less/elements/popover.less @@ -0,0 +1,9 @@ +.popover { + border: none; + box-shadow: 0px 0px 22px rgba(0, 0, 0, 0.1); + border-radius: 8px; + + .popover-arrow { + display: none; + } +} \ No newline at end of file diff --git a/themes/demo/assets/less/elements/social-links.less b/themes/demo/assets/less/elements/social-links.less new file mode 100644 index 0000000..d0b3f89 --- /dev/null +++ b/themes/demo/assets/less/elements/social-links.less @@ -0,0 +1,23 @@ +.element-social-links { + .nav { + .nav-item { + &:first-child > a { + padding-left: 0; + } + + > a { + padding-right: 8px; + padding-left: 8px; + } + + img { + height: 20px; + } + + i { + position: relative; + top: 2px; + } + } + } +} diff --git a/themes/demo/assets/less/elements/text.less b/themes/demo/assets/less/elements/text.less new file mode 100644 index 0000000..0a90fbe --- /dev/null +++ b/themes/demo/assets/less/elements/text.less @@ -0,0 +1,45 @@ +.text-muted { + color: #A2A2A2; +} + +.text-icon { + position: relative; + display: inline-block; + padding-left: 24px; + line-height: 16px; + + &:before { + content: ""; + position: absolute; + left: 0px; + top: -1px; + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-size: 16px 16px; + } + + &.text-icon-date { + &:before { + background-image: url('@{assets-url}/images/icons/icon-calendar.png'); + } + } + + &.text-icon-author { + &:before { + background-image: url('@{assets-url}/images/icons/icon-user.png'); + } + } +} + +.text-banner { + border-radius: 13px; + width: 100%; + height: 191px; + background-position: center center; + background-size: cover; + + &.banner-lg { + height: 268px; + } +} diff --git a/themes/demo/assets/less/elements/user-panel.less b/themes/demo/assets/less/elements/user-panel.less new file mode 100644 index 0000000..93bea67 --- /dev/null +++ b/themes/demo/assets/less/elements/user-panel.less @@ -0,0 +1,41 @@ +.element-user-panel { + .user-avatar { + padding: 0 25px 20px 0; + + img { + width: 85px; + height: 85px; + border-radius: 100px; + } + } + + .user-details { + padding: 15px 0 0 0; + + p { + color: #A1A1A1; + } + + p:last-child { + margin-bottom: 0; + } + } + + .user-profile { + color: #6B7482; + + p:last-child { + margin-bottom: 0; + } + } + + &.team-panel { + .user-avatar { + padding-bottom: 0; + } + + .user-social { + padding-bottom: 15px; + } + } +} diff --git a/themes/demo/assets/less/layouts/blog.less b/themes/demo/assets/less/layouts/blog.less new file mode 100644 index 0000000..7f6f135 --- /dev/null +++ b/themes/demo/assets/less/layouts/blog.less @@ -0,0 +1,28 @@ +@import "../theme/boot"; + +// +// Blog Layout Stylesheet +// + +body.layout-blog { + .sidebar-search { + padding-bottom: 40px; + } + + .sidebar-about { + font-size: 16px; + padding-bottom: 20px; + + p:last-child { + margin-bottom: 0; + } + } + + .sidebar-social { + padding-bottom: 20px; + } + + .sidebar-categories { + padding-bottom: 20px; + } +} diff --git a/themes/demo/assets/less/layouts/default.less b/themes/demo/assets/less/layouts/default.less new file mode 100644 index 0000000..e881cc9 --- /dev/null +++ b/themes/demo/assets/less/layouts/default.less @@ -0,0 +1,124 @@ +@import "../theme/boot"; + +// +// Default Layout (All pages) +// + +#layout-header { + &, &.navbar { + background: linear-gradient(102.01deg, #DB6A26 0.3%, #DBB326 106.31%); + } + + .header-extra { + color: #fff; + padding-top: 40px; + padding-bottom: 50px; + + h1 { + font-size: 60px; + } + p.lead { + font-size: 22px; + } + } +} + +#layout-header .navbar { + min-height: 155px; + + > .navbar-container.container { + position: relative; + z-index: 2; + } +} + +#layout-nav-decorations { + position: absolute; + z-index: 1; + top: 0; + left: 0; + right: 0; + overflow: hidden; + height: 150px; + + // Decorations + .navbar-decorations { + position: absolute; + z-index: 1; + top: 0; + bottom: 0; + left: 0; + right: 0; + } + + .navbar-decoration-1 { + .decoration-circle(); + width: 524px; + height: 524px; + left: -105px; + top: -420px; + opacity: .04; + } + + .navbar-decoration-2 { + .decoration-circle(); + width: 524px; + height: 524px; + left: 548px; + top: -385px; + opacity: .05; + } +} + +#layout-content { + padding-top: 30px; + background: #fff; + + header { + padding: 0 0 30px 0; + } + + main.header-flush { + margin-top: -30px; + } +} + +ul.list-with-ticks { + padding: 0; + + li { + list-style: none; + position: relative; + padding-left: 23px; + + &:before { + content: ''; + display: block; + width: 15px; + height: 15px; + background: url('@{assets-url}/images/icons/icon-tick.png') no-repeat 0 0; + background-size: 15px 15px; + position: absolute; + left: 0; + top: 6px; + } + } +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +html[data-turbo-preview] .fade-in-content { + opacity: 0; +} + +html:not([data-turbo-preview]) .fade-in-content { + animation: fadeIn 0.15s ease-in-out; +} diff --git a/themes/demo/assets/less/layouts/home.less b/themes/demo/assets/less/layouts/home.less new file mode 100644 index 0000000..826cb6e --- /dev/null +++ b/themes/demo/assets/less/layouts/home.less @@ -0,0 +1,23 @@ +@import "../theme/boot"; + +// +// Home Layout Stylesheet +// + +body.layout-home { + #layout-nav.navbar { + padding-top: 30px; + padding-bottom: 30px; + + // Fixed top + position: absolute; + left: 0; + right: 0; + top: 0; + z-index: 1030; + } + + #layout-content { + padding-top: 0; + } +} diff --git a/themes/demo/assets/less/layouts/wiki.less b/themes/demo/assets/less/layouts/wiki.less new file mode 100644 index 0000000..5c4e92a --- /dev/null +++ b/themes/demo/assets/less/layouts/wiki.less @@ -0,0 +1,11 @@ +@import "../theme/boot"; + +// +// Wiki Layout Stylesheet +// + +body.layout-wiki { + .sidebar-search { + padding-bottom: 40px; + } +} diff --git a/themes/demo/assets/less/pages/404.less b/themes/demo/assets/less/pages/404.less new file mode 100644 index 0000000..79a39cc --- /dev/null +++ b/themes/demo/assets/less/pages/404.less @@ -0,0 +1,5 @@ +.page-404 { + .banner-404 { + padding: 40px 0; + } +} diff --git a/themes/demo/assets/less/pages/ajax.less b/themes/demo/assets/less/pages/ajax.less new file mode 100644 index 0000000..9cbddaf --- /dev/null +++ b/themes/demo/assets/less/pages/ajax.less @@ -0,0 +1,162 @@ +@import "../theme/boot"; + +.page-ajax { + // + // Calculator form + // + .panel { + border: none; + overflow: hidden; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.16); + margin-bottom: 27px; + border-radius: 4px; + + @media (min-width: @screen-md-min) { + .control-panel { + padding-right: 0!important; + } + } + } + + .panel-body { + padding: 25px; + display: table; + width: 100%; + + form { + display: table-row; + + .form-group { + display: table-cell; + vertical-align: top; + padding-right: 10px; + margin-bottom: 15px; + white-space: nowrap; + + &:last-child { + padding-right: 0; + width: 41px; + + button { + width: 41px; + height: 41px; + background: @brand-accent; + } + } + + &.operation-buttons { + width: 100px; + text-align: center; + + label { + display: inline-block; + cursor: pointer; + width: 41px; + height: 41px; + line-height: 41px; + position: relative; + margin: 0 10px 0 0; + vertical-align: top; + text-align: center; + + &:last-child { + margin-right: 0; + } + + span { + display: block; + position: absolute; + width: 100%; + height: 100%; + border-radius: @border-radius-base; + background: #ECF0F1; + } + + input { + display: none; + + &:checked + span { + background-color: @brand-accent; + color: white; + } + } + } + } + } + + @media (max-width: @screen-xs-max) { + .form-group { + display: block; + padding-right: 0; + width: 100%!important; + + &:last-child button { + width: 100%; + } + } + } + } + + input.form-control { + border: none; + display: block; + width: 100%; + background-color: #ECF0F1; + font-size: 14px; + text-align: right; + border: none; + box-shadow: none; + height: 41px; + } + } + + #result { + background: @brand-accent; + color: white; + font-size: 54px; + padding: 0 15px; + + font-weight: bold; + text-align: center; + overflow: hidden; + text-overflow: ellipsis; + } + + .explanation { + background: #f6f2ff; + padding: 50px 0 70px; + position: relative; + overflow: hidden; + z-index: 1; + + > .container { + position: relative; + } + + h3 { + font-size: 26px; + margin: 60px 0 20px; + } + + // Decorations + .explanation-decoration-1 { + .decoration-circle(); + background-color: #fff; + width: 321px; + height: 321px; + left: -140px; + top: -140px; + opacity: .5; + } + + .explanation-decoration-2 { + .decoration-circle(); + background-color: #fff; + width: 380px; + height: 380px; + right: -165px; + top: -180px; + opacity: .5; + } + } +} diff --git a/themes/demo/assets/less/pages/components.less b/themes/demo/assets/less/pages/components.less new file mode 100644 index 0000000..463bfec --- /dev/null +++ b/themes/demo/assets/less/pages/components.less @@ -0,0 +1,155 @@ +@import "../theme/boot"; + +.page-components { + // + // TODO list + // + .panel { + margin-bottom: 27px; + background-color: #fff; + } + + .panel.panel-default { + border: 2px solid @brand-accent; + overflow: hidden; + margin-top: 40px; + border-radius: 9px; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.16); + + .panel-heading { + background: transparent; + padding: 15px; + border-bottom: 1px solid #ddd; + color: #333333; + + h3 { + position: relative; + padding-left: 32px; + margin-top: 0; + margin-bottom: 0; + font-size: 18px; + + &:before { + content: ''; + position: absolute; + top: -1px; + left: 0; + width: 24px; + height: 24px; + background: url('@{assets-url}/images/icons/icon-todo.png') no-repeat 0 0; + background-size: 24px 24px !important; + } + } + } + + .panel-body { + padding: 0; + + input.form-control { + border: none; + padding-left: 17px; + box-shadow: none; + } + + input.form-control, button.btn { + height: 41px; + } + + .input-group-btn { + margin-left: 0 !important; + } + + button.btn.btn-primary { + background: transparent; + border: none; + outline: none; + box-shadow: none; + color: @text-color; + padding-left: 20px; + padding-right: 45px; + + &:before { + content: ''; + position: absolute; + top: 9px; + right: 9px; + width: 23px; + height: 23px; + background: url('@{assets-url}/images/icons/icon-keyboard-return.png') no-repeat 0 0; + background-size: 23px 23px !important; + } + } + } + + .list-group { + border-radius: 0; + li { + padding: 10px 15px 10px 37px; + position: relative; + border-left: none; + border-right: none; + + &:last-child { + border-bottom: none; + } + + button { + .text-hide(); + position: absolute; + left: 15px; + top: 16px; + width: 15px; + height: 15px; + opacity: 1; + outline: none!important; + border: 1px solid #BDC3C7; + border-radius: 100%; + } + } + } + } + + .explanation { + background: #f6f2ff; + padding: 90px 0 70px; + position: relative; + overflow: hidden; + z-index: 1; + + > .container { + position: relative; + } + + h3 { + font-size: 26px; + margin-bottom: 45px; + } + + p.lead { + font-weight: 400; + font-size: 20px; + margin-bottom: 40px; + } + + // Decorations + .explanation-decoration-1 { + .decoration-circle(); + background-color: #fff; + width: 321px; + height: 321px; + left: -140px; + top: -140px; + opacity: .5; + } + + .explanation-decoration-2 { + .decoration-circle(); + background-color: #fff; + width: 380px; + height: 380px; + right: -165px; + top: -180px; + opacity: .5; + } + } +} diff --git a/themes/demo/assets/less/pages/contact.less b/themes/demo/assets/less/pages/contact.less new file mode 100644 index 0000000..85ac247 --- /dev/null +++ b/themes/demo/assets/less/pages/contact.less @@ -0,0 +1,49 @@ +@import "../theme/boot"; + +.page-contact { + .contactform { + text-align: center; + background: #f6f2ff; + padding: 70px 0; + position: relative; + overflow: hidden; + z-index: 1; + + > .container { + position: relative; + } + + h3 { + font-weight: 700; + font-size: 26px; + margin-bottom: 45px; + } + + p.lead { + font-weight: 400; + font-size: 20px; + margin-bottom: 40px; + } + + // Decorations + .contactform-decoration-1 { + .decoration-circle(); + background-color: #fff; + width: 321px; + height: 321px; + left: -140px; + top: -140px; + opacity: .5; + } + + .contactform-decoration-2 { + .decoration-circle(); + background-color: #fff; + width: 380px; + height: 380px; + right: -165px; + top: -180px; + opacity: .5; + } + } +} diff --git a/themes/demo/assets/less/pages/index.less b/themes/demo/assets/less/pages/index.less new file mode 100644 index 0000000..5419b91 --- /dev/null +++ b/themes/demo/assets/less/pages/index.less @@ -0,0 +1,250 @@ +@import "../theme/boot"; + +.page-index { + .jumbotron { + background: linear-gradient(102.01deg, #DB6A26 0.3%, #DBB326 106.31%); + padding-bottom: 0; + position: relative; + overflow: hidden; + z-index: 1; + + &:before { + content: ''; + position: absolute; + width: 100%; + height: 186px; + background-image: url('@{assets-url}/images/waves/header-wave.svg'); + background-repeat: repeat-x; + z-index: 1; + bottom: -1px; + } + + > .container { + position: relative; + z-index: 2; + } + + // Decorations + .jumbotron-decoration-1 { + .decoration-circle(); + width: 524px; + height: 524px; + left: -10px; + top: -84px; + opacity: .04; + } + + .jumbotron-decoration-2 { + .decoration-circle(); + width: 524px; + height: 524px; + left: 648px; + top: 260px; + opacity: .05; + } + + .jumbotron-intro { + padding: 70px 100px; + h1 { + color: #fff; + font-weight: 700; + } + p { + color: #fff; + margin-top: 30px; + } + .btn { + &:not(:hover):not(:active) { + border-color: transparent; + background: rgba(255, 216, 170, 0.46); + } + } + } + + .jumbotron-product { + padding: 90px 0 35px 0; + margin-right: -40px; + margin-left: -100px; + + img { + position: relative; + z-index: 2; + } + } + + @media (max-width: @screen-lg-max) { + .jumbotron-intro { + h1 { font-size: 45px; } + } + } + + @media (max-width: @screen-md-max) { + .jumbotron-intro { + padding-left: 0; + h1 { font-size: 45px; } + } + } + + @media (max-width: @screen-sm-max) { + .jumbotron-intro { + padding: 20px 0 0; + h1 { font-size: 35px; } + } + .jumbotron-product { + padding-top: 20px; + } + } + } + + .intro { + background-image: url('@{assets-url}/images/homepage/about-page.png'); + background-repeat: no-repeat; + background-position: bottom center; + background-size: 1427px auto; + padding: 25px 0 568px; + text-align: center; + + .img-leaf { + width: 49px; + margin: 35px 0; + } + + h2 { + font-weight: 700; + font-size: 40px; + margin: 0; + padding-bottom: 40px; + } + + p.lead { + max-width: 850px; + margin: 0 auto; + display: block; + font-weight: 400; + font-size: 20px; + } + } + + .feature { + .feature-content { + padding: 50px 0 0; + } + + .feature-pill { + display: inline-block; + background: #FFE9B4; + border-radius: 100px; + padding: 3px 20px; + > span { + opacity: 0.45; + color: #000; + font-weight: 400; + font-size: 16px; + line-height: 28px; + } + } + + .feature-image { + padding: 0 20px; + } + + h3 { + font-weight: 700; + font-size: 26px; + margin-bottom: 30px; + } + + p { + line-height: 28px; + margin-bottom: 30px; + } + + @media (max-width: @screen-md-max) { + .feature-content { + padding-top: 0; + padding-bottom: 50px; + } + } + + @media (max-width: @screen-sm-max) { + .feature-image { + display: none; + } + } + } + + .actioncall { + text-align: center; + background: linear-gradient(102.01deg, #eff4fd 0.3%, #f6f2ff 106.31%); + padding: 70px 0; + position: relative; + overflow: hidden; + z-index: 1; + + > .container { + position: relative; + } + + h3 { + font-weight: 700; + font-size: 60px; + margin-bottom: 45px; + } + + p.lead { + font-weight: 400; + font-size: 20px; + margin-bottom: 40px; + color: #586667; + } + + // Decorations + .actioncall-decoration-1 { + .decoration-circle(); + background-color: #fff; + width: 321px; + height: 321px; + left: -140px; + top: -140px; + opacity: .5; + } + + .actioncall-decoration-2 { + .decoration-circle(); + background-color: #fff; + width: 380px; + height: 380px; + right: -165px; + top: -180px; + opacity: .5; + } + + .actioncall-decoration-3 { + .decoration-circle(); + background-color: #fff; + width: 493px; + height: 493px; + left: 235px; + bottom: -380px; + opacity: .3; + } + + @media (max-width: @screen-md-max) { + h3 { font-size: 50px; } + } + + @media (max-width: @screen-sm-max) { + h3 { font-size: 40px; } + } + } + + .latestnews { + h3 { + margin: 50px 0; + text-align: center; + color: #000; + font-weight: 700; + font-size: 40px; + } + } +} diff --git a/themes/demo/assets/less/theme.less b/themes/demo/assets/less/theme.less new file mode 100644 index 0000000..d66cb26 --- /dev/null +++ b/themes/demo/assets/less/theme.less @@ -0,0 +1,58 @@ +@import "theme/boot"; + +// For first level entry path +@assets-url: "../../assets"; + +// +// Common Styles +// +// These are styles that apply everywhere +// + +@import "theme/common"; + +// +// Layouts +// +// These are layout specific stylesheets +// + +@import "layouts/default"; +@import "layouts/home"; +@import "layouts/blog"; +@import "layouts/wiki"; + +// +// Controls +// +// These are reusable controls used in the site. +// + +@import "controls/gallery-slider"; +@import "controls/card-slider"; +@import "controls/quantity-input"; + +// +// Elements +// +// These are reusable elements used in the site. +// + +@import "elements/text"; +@import "elements/card"; +@import "elements/callouts"; +@import "elements/nav"; +@import "elements/navbar"; +@import "elements/jumbotron"; +@import "elements/pagination"; +@import "elements/code"; +@import "elements/buttons"; +@import "elements/footer"; +@import "elements/social-links"; +@import "elements/user-panel"; +@import "elements/lists"; +@import "elements/form"; +@import "elements/popover"; +@import "elements/modals"; +@import "elements/how-its-made"; + diff --git a/themes/demo/assets/less/theme/boot.less b/themes/demo/assets/less/theme/boot.less new file mode 100644 index 0000000..ab2b2fa --- /dev/null +++ b/themes/demo/assets/less/theme/boot.less @@ -0,0 +1,8 @@ +// +// Boot file +// +// Includes non-output LESS files such as mixins and variables +// + +@import "mixins.less"; +@import "variables.less"; diff --git a/themes/demo/assets/less/theme/common.less b/themes/demo/assets/less/theme/common.less new file mode 100644 index 0000000..0bbf0ef --- /dev/null +++ b/themes/demo/assets/less/theme/common.less @@ -0,0 +1,64 @@ +// +// Common Styles +// + +// BS vars +:root { + --bs-body-line-height: 1.7; + --bs-body-color: #343F52; +} + +a { + color: #3097d1; + text-decoration: none; +} + +a:hover, a:focus { + color: #216a94; + text-decoration: underline; +} + +h1, .h1 { + font-size: 40px; +} +h2, .h2 { + font-size: 26px; +} +h3, .h3 { + font-size: 22px; +} +h4, .h4 { + font-size: 19px; +} +h5, .h5 { + font-size: 16px; +} +h6, .h6 { + font-size: 14px; +} + +h1, .h1, h2, .h2 { + font-weight: 700; +} + +h1, .h1, h2, .h2, h3, .h3 { + margin-bottom: 13.5px; +} + +p.lead { + font-size: 20px; + font-weight: 400; +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #D35400; + background-color: #ECF0F1; + border-radius: 4px; +} + +// Disable collapse animation +.collapsing { + transition: none; +} diff --git a/themes/demo/assets/less/theme/mixins.less b/themes/demo/assets/less/theme/mixins.less new file mode 100644 index 0000000..5739a11 --- /dev/null +++ b/themes/demo/assets/less/theme/mixins.less @@ -0,0 +1,22 @@ +// +// Mixins file +// +// Space for any custom mixins used by this application +// + +.decoration-circle() { + content: ''; + border-radius: 100%; + background-color: #F4F7F8; + display: block; + position: absolute; + z-index: -1; +} + +.text-hide() { + font: ~"0/0" a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} diff --git a/themes/demo/assets/less/theme/variables.less b/themes/demo/assets/less/theme/variables.less new file mode 100644 index 0000000..25bb3fd --- /dev/null +++ b/themes/demo/assets/less/theme/variables.less @@ -0,0 +1,121 @@ +// +// Variables file +// +// Space for any custom variables used by this application +// + +// Assets +// -------------------------------------------------- +// For second level entry paths (pages, layouts, etc.) +@assets-url: "../../../assets"; + +// Brands +// -------------------------------------------------- +@brand-primary: #3097d1; +@brand-info: #8eb4cb; +@brand-success: #4eb76e; +@brand-warning: #cbb956; +@brand-danger: #bf5329; +@brand-accent: #6A6CF7; + +@gray-base: #000; +@gray-darker: lighten(@gray-base, 13.5%); // #222 +@gray-dark: lighten(@gray-base, 20%); // #333 +@gray: lighten(@gray-base, 33.5%); // #555 +@gray-light: lighten(@gray-base, 46.7%); // #777 +@gray-lighter: lighten(@gray-base, 93.5%); // #eee + +// Typography +// -------------------------------------------------- +@font-family-sans-serif: "lato", sans-serif; +@line-height-base: 1.7; +@font-size-base: 16px; +@font-size-h3: 18px; +@text-color: #586667; +@headings-color: #2C3E4F; +@headings-font-weight: bold; +@jumbotron-heading-color: @headings-color; +@border-radius-base: 4px; + +@code-color: #D35400; +@code-bg: #ECF0F1; + +// Breakpoints +// -------------------------------------------------- + +// Extra small screen +@screen-xs-min: 576px; + +// Small screen / tablet +@screen-sm-min: 768px; + +// Medium screen / desktop +@screen-md-min: 992px; + +// Large screen / wide desktop +@screen-lg-min: 1200px; + +// Extra large screen +@screen-xl-min: 1400px; + +// So media queries don't overlap when required, provide a maximum +@screen-xs-max: (@screen-sm-min - 1); +@screen-sm-max: (@screen-md-min - 1); +@screen-md-max: (@screen-lg-min - 1); +@screen-lg-max: (@screen-xl-min - 1); + +// Jumbotron +// -------------------------------------------------- + +@jumbotron-padding: 40px; +@jumbotron-bg: transparent; +@jumbotron-color: #34495E; +@jumbotron-heading-color: @headings-color; +@jumbotron-font-size: 20px; +@jumbotron-heading-font-size: 65px; + +// Spacing +// -------------------------------------------------- +@spacer: 20px; +@spacer-y: @spacer; +@spacer-x: @spacer; + +// Navbar +// -------------------------------------------------- +@navbar-inverse-bg: #DB6A26; +@navbar-inverse-link-color: rgba(255,255,255,0.6); + +@navbar-inverse-stripe-color-active: #ffffff; +@navbar-inverse-stripe-color-hover: #e67e22; +@navbar-default-stripe-color-active: #64ae5b; +@navbar-default-stripe-color-hover: #93dc8a; +@navbar-inverse-toggle-border-color: #ffffff; +@navbar-inverse-toggle-hover-bg: rgba(255, 255, 255, 0.3); + +@navbar-padding-horizontal: 0; + +// Callouts +// -------------------------------------------------- +@callout-padding: 20px; +@callout-border-radius: @border-radius-base; +@callout-border: @gray-lighter; + +@callout-info-bg: #f4f8fa; +@callout-info-text: #31708f; +@callout-info-border: darken(spin(@callout-info-bg, -10), 7%); + +@callout-warning-bg: #faf8f0; +@callout-warning-text: #8a6d3b; +@callout-warning-border: darken(spin(@callout-warning-bg, -10), 5%); + +@callout-danger-bg: #fdf7f7; +@callout-danger-text: #a94442; +@callout-danger-border: darken(spin(@callout-danger-bg, -10), 5%); + +@callout-success-bg: #f9fdf7; +@callout-success-text: #3c763d; +@callout-success-border: darken(spin(@callout-success-bg, -10), 5%); + +// Forms +// -------------------------------------------------- +@input-border-color: #D7D7D7; diff --git a/themes/demo/assets/vendor/bootstrap-icons/bootstrap-icons.css b/themes/demo/assets/vendor/bootstrap-icons/bootstrap-icons.css new file mode 100644 index 0000000..702ec4e --- /dev/null +++ b/themes/demo/assets/vendor/bootstrap-icons/bootstrap-icons.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap Icons v1.10.5 (https://icons.getbootstrap.com/) + * Copyright 2019-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */@font-face{font-display:block;font-family:bootstrap-icons;src:url(fonts/bootstrap-icons.woff2?24e3eb84d0bcaf83d77f904c78ac1f47) format("woff2"),url(fonts/bootstrap-icons.woff?24e3eb84d0bcaf83d77f904c78ac1f47) format("woff")}.bi:before,[class*=" bi-"]:before,[class^=bi-]:before{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-variant:normal;font-weight:400!important;line-height:1;text-transform:none;vertical-align:-.125em}.bi-123:before{content:"\f67f"}.bi-alarm-fill:before{content:"\f101"}.bi-alarm:before{content:"\f102"}.bi-align-bottom:before{content:"\f103"}.bi-align-center:before{content:"\f104"}.bi-align-end:before{content:"\f105"}.bi-align-middle:before{content:"\f106"}.bi-align-start:before{content:"\f107"}.bi-align-top:before{content:"\f108"}.bi-alt:before{content:"\f109"}.bi-app-indicator:before{content:"\f10a"}.bi-app:before{content:"\f10b"}.bi-archive-fill:before{content:"\f10c"}.bi-archive:before{content:"\f10d"}.bi-arrow-90deg-down:before{content:"\f10e"}.bi-arrow-90deg-left:before{content:"\f10f"}.bi-arrow-90deg-right:before{content:"\f110"}.bi-arrow-90deg-up:before{content:"\f111"}.bi-arrow-bar-down:before{content:"\f112"}.bi-arrow-bar-left:before{content:"\f113"}.bi-arrow-bar-right:before{content:"\f114"}.bi-arrow-bar-up:before{content:"\f115"}.bi-arrow-clockwise:before{content:"\f116"}.bi-arrow-counterclockwise:before{content:"\f117"}.bi-arrow-down-circle-fill:before{content:"\f118"}.bi-arrow-down-circle:before{content:"\f119"}.bi-arrow-down-left-circle-fill:before{content:"\f11a"}.bi-arrow-down-left-circle:before{content:"\f11b"}.bi-arrow-down-left-square-fill:before{content:"\f11c"}.bi-arrow-down-left-square:before{content:"\f11d"}.bi-arrow-down-left:before{content:"\f11e"}.bi-arrow-down-right-circle-fill:before{content:"\f11f"}.bi-arrow-down-right-circle:before{content:"\f120"}.bi-arrow-down-right-square-fill:before{content:"\f121"}.bi-arrow-down-right-square:before{content:"\f122"}.bi-arrow-down-right:before{content:"\f123"}.bi-arrow-down-short:before{content:"\f124"}.bi-arrow-down-square-fill:before{content:"\f125"}.bi-arrow-down-square:before{content:"\f126"}.bi-arrow-down-up:before{content:"\f127"}.bi-arrow-down:before{content:"\f128"}.bi-arrow-left-circle-fill:before{content:"\f129"}.bi-arrow-left-circle:before{content:"\f12a"}.bi-arrow-left-right:before{content:"\f12b"}.bi-arrow-left-short:before{content:"\f12c"}.bi-arrow-left-square-fill:before{content:"\f12d"}.bi-arrow-left-square:before{content:"\f12e"}.bi-arrow-left:before{content:"\f12f"}.bi-arrow-repeat:before{content:"\f130"}.bi-arrow-return-left:before{content:"\f131"}.bi-arrow-return-right:before{content:"\f132"}.bi-arrow-right-circle-fill:before{content:"\f133"}.bi-arrow-right-circle:before{content:"\f134"}.bi-arrow-right-short:before{content:"\f135"}.bi-arrow-right-square-fill:before{content:"\f136"}.bi-arrow-right-square:before{content:"\f137"}.bi-arrow-right:before{content:"\f138"}.bi-arrow-up-circle-fill:before{content:"\f139"}.bi-arrow-up-circle:before{content:"\f13a"}.bi-arrow-up-left-circle-fill:before{content:"\f13b"}.bi-arrow-up-left-circle:before{content:"\f13c"}.bi-arrow-up-left-square-fill:before{content:"\f13d"}.bi-arrow-up-left-square:before{content:"\f13e"}.bi-arrow-up-left:before{content:"\f13f"}.bi-arrow-up-right-circle-fill:before{content:"\f140"}.bi-arrow-up-right-circle:before{content:"\f141"}.bi-arrow-up-right-square-fill:before{content:"\f142"}.bi-arrow-up-right-square:before{content:"\f143"}.bi-arrow-up-right:before{content:"\f144"}.bi-arrow-up-short:before{content:"\f145"}.bi-arrow-up-square-fill:before{content:"\f146"}.bi-arrow-up-square:before{content:"\f147"}.bi-arrow-up:before{content:"\f148"}.bi-arrows-angle-contract:before{content:"\f149"}.bi-arrows-angle-expand:before{content:"\f14a"}.bi-arrows-collapse:before{content:"\f14b"}.bi-arrows-expand:before{content:"\f14c"}.bi-arrows-fullscreen:before{content:"\f14d"}.bi-arrows-move:before{content:"\f14e"}.bi-aspect-ratio-fill:before{content:"\f14f"}.bi-aspect-ratio:before{content:"\f150"}.bi-asterisk:before{content:"\f151"}.bi-at:before{content:"\f152"}.bi-award-fill:before{content:"\f153"}.bi-award:before{content:"\f154"}.bi-back:before{content:"\f155"}.bi-backspace-fill:before{content:"\f156"}.bi-backspace-reverse-fill:before{content:"\f157"}.bi-backspace-reverse:before{content:"\f158"}.bi-backspace:before{content:"\f159"}.bi-badge-3d-fill:before{content:"\f15a"}.bi-badge-3d:before{content:"\f15b"}.bi-badge-4k-fill:before{content:"\f15c"}.bi-badge-4k:before{content:"\f15d"}.bi-badge-8k-fill:before{content:"\f15e"}.bi-badge-8k:before{content:"\f15f"}.bi-badge-ad-fill:before{content:"\f160"}.bi-badge-ad:before{content:"\f161"}.bi-badge-ar-fill:before{content:"\f162"}.bi-badge-ar:before{content:"\f163"}.bi-badge-cc-fill:before{content:"\f164"}.bi-badge-cc:before{content:"\f165"}.bi-badge-hd-fill:before{content:"\f166"}.bi-badge-hd:before{content:"\f167"}.bi-badge-tm-fill:before{content:"\f168"}.bi-badge-tm:before{content:"\f169"}.bi-badge-vo-fill:before{content:"\f16a"}.bi-badge-vo:before{content:"\f16b"}.bi-badge-vr-fill:before{content:"\f16c"}.bi-badge-vr:before{content:"\f16d"}.bi-badge-wc-fill:before{content:"\f16e"}.bi-badge-wc:before{content:"\f16f"}.bi-bag-check-fill:before{content:"\f170"}.bi-bag-check:before{content:"\f171"}.bi-bag-dash-fill:before{content:"\f172"}.bi-bag-dash:before{content:"\f173"}.bi-bag-fill:before{content:"\f174"}.bi-bag-plus-fill:before{content:"\f175"}.bi-bag-plus:before{content:"\f176"}.bi-bag-x-fill:before{content:"\f177"}.bi-bag-x:before{content:"\f178"}.bi-bag:before{content:"\f179"}.bi-bar-chart-fill:before{content:"\f17a"}.bi-bar-chart-line-fill:before{content:"\f17b"}.bi-bar-chart-line:before{content:"\f17c"}.bi-bar-chart-steps:before{content:"\f17d"}.bi-bar-chart:before{content:"\f17e"}.bi-basket-fill:before{content:"\f17f"}.bi-basket:before{content:"\f180"}.bi-basket2-fill:before{content:"\f181"}.bi-basket2:before{content:"\f182"}.bi-basket3-fill:before{content:"\f183"}.bi-basket3:before{content:"\f184"}.bi-battery-charging:before{content:"\f185"}.bi-battery-full:before{content:"\f186"}.bi-battery-half:before{content:"\f187"}.bi-battery:before{content:"\f188"}.bi-bell-fill:before{content:"\f189"}.bi-bell:before{content:"\f18a"}.bi-bezier:before{content:"\f18b"}.bi-bezier2:before{content:"\f18c"}.bi-bicycle:before{content:"\f18d"}.bi-binoculars-fill:before{content:"\f18e"}.bi-binoculars:before{content:"\f18f"}.bi-blockquote-left:before{content:"\f190"}.bi-blockquote-right:before{content:"\f191"}.bi-book-fill:before{content:"\f192"}.bi-book-half:before{content:"\f193"}.bi-book:before{content:"\f194"}.bi-bookmark-check-fill:before{content:"\f195"}.bi-bookmark-check:before{content:"\f196"}.bi-bookmark-dash-fill:before{content:"\f197"}.bi-bookmark-dash:before{content:"\f198"}.bi-bookmark-fill:before{content:"\f199"}.bi-bookmark-heart-fill:before{content:"\f19a"}.bi-bookmark-heart:before{content:"\f19b"}.bi-bookmark-plus-fill:before{content:"\f19c"}.bi-bookmark-plus:before{content:"\f19d"}.bi-bookmark-star-fill:before{content:"\f19e"}.bi-bookmark-star:before{content:"\f19f"}.bi-bookmark-x-fill:before{content:"\f1a0"}.bi-bookmark-x:before{content:"\f1a1"}.bi-bookmark:before{content:"\f1a2"}.bi-bookmarks-fill:before{content:"\f1a3"}.bi-bookmarks:before{content:"\f1a4"}.bi-bookshelf:before{content:"\f1a5"}.bi-bootstrap-fill:before{content:"\f1a6"}.bi-bootstrap-reboot:before{content:"\f1a7"}.bi-bootstrap:before{content:"\f1a8"}.bi-border-all:before{content:"\f1a9"}.bi-border-bottom:before{content:"\f1aa"}.bi-border-center:before{content:"\f1ab"}.bi-border-inner:before{content:"\f1ac"}.bi-border-left:before{content:"\f1ad"}.bi-border-middle:before{content:"\f1ae"}.bi-border-outer:before{content:"\f1af"}.bi-border-right:before{content:"\f1b0"}.bi-border-style:before{content:"\f1b1"}.bi-border-top:before{content:"\f1b2"}.bi-border-width:before{content:"\f1b3"}.bi-border:before{content:"\f1b4"}.bi-bounding-box-circles:before{content:"\f1b5"}.bi-bounding-box:before{content:"\f1b6"}.bi-box-arrow-down-left:before{content:"\f1b7"}.bi-box-arrow-down-right:before{content:"\f1b8"}.bi-box-arrow-down:before{content:"\f1b9"}.bi-box-arrow-in-down-left:before{content:"\f1ba"}.bi-box-arrow-in-down-right:before{content:"\f1bb"}.bi-box-arrow-in-down:before{content:"\f1bc"}.bi-box-arrow-in-left:before{content:"\f1bd"}.bi-box-arrow-in-right:before{content:"\f1be"}.bi-box-arrow-in-up-left:before{content:"\f1bf"}.bi-box-arrow-in-up-right:before{content:"\f1c0"}.bi-box-arrow-in-up:before{content:"\f1c1"}.bi-box-arrow-left:before{content:"\f1c2"}.bi-box-arrow-right:before{content:"\f1c3"}.bi-box-arrow-up-left:before{content:"\f1c4"}.bi-box-arrow-up-right:before{content:"\f1c5"}.bi-box-arrow-up:before{content:"\f1c6"}.bi-box-seam:before{content:"\f1c7"}.bi-box:before{content:"\f1c8"}.bi-braces:before{content:"\f1c9"}.bi-bricks:before{content:"\f1ca"}.bi-briefcase-fill:before{content:"\f1cb"}.bi-briefcase:before{content:"\f1cc"}.bi-brightness-alt-high-fill:before{content:"\f1cd"}.bi-brightness-alt-high:before{content:"\f1ce"}.bi-brightness-alt-low-fill:before{content:"\f1cf"}.bi-brightness-alt-low:before{content:"\f1d0"}.bi-brightness-high-fill:before{content:"\f1d1"}.bi-brightness-high:before{content:"\f1d2"}.bi-brightness-low-fill:before{content:"\f1d3"}.bi-brightness-low:before{content:"\f1d4"}.bi-broadcast-pin:before{content:"\f1d5"}.bi-broadcast:before{content:"\f1d6"}.bi-brush-fill:before{content:"\f1d7"}.bi-brush:before{content:"\f1d8"}.bi-bucket-fill:before{content:"\f1d9"}.bi-bucket:before{content:"\f1da"}.bi-bug-fill:before{content:"\f1db"}.bi-bug:before{content:"\f1dc"}.bi-building:before{content:"\f1dd"}.bi-bullseye:before{content:"\f1de"}.bi-calculator-fill:before{content:"\f1df"}.bi-calculator:before{content:"\f1e0"}.bi-calendar-check-fill:before{content:"\f1e1"}.bi-calendar-check:before{content:"\f1e2"}.bi-calendar-date-fill:before{content:"\f1e3"}.bi-calendar-date:before{content:"\f1e4"}.bi-calendar-day-fill:before{content:"\f1e5"}.bi-calendar-day:before{content:"\f1e6"}.bi-calendar-event-fill:before{content:"\f1e7"}.bi-calendar-event:before{content:"\f1e8"}.bi-calendar-fill:before{content:"\f1e9"}.bi-calendar-minus-fill:before{content:"\f1ea"}.bi-calendar-minus:before{content:"\f1eb"}.bi-calendar-month-fill:before{content:"\f1ec"}.bi-calendar-month:before{content:"\f1ed"}.bi-calendar-plus-fill:before{content:"\f1ee"}.bi-calendar-plus:before{content:"\f1ef"}.bi-calendar-range-fill:before{content:"\f1f0"}.bi-calendar-range:before{content:"\f1f1"}.bi-calendar-week-fill:before{content:"\f1f2"}.bi-calendar-week:before{content:"\f1f3"}.bi-calendar-x-fill:before{content:"\f1f4"}.bi-calendar-x:before{content:"\f1f5"}.bi-calendar:before{content:"\f1f6"}.bi-calendar2-check-fill:before{content:"\f1f7"}.bi-calendar2-check:before{content:"\f1f8"}.bi-calendar2-date-fill:before{content:"\f1f9"}.bi-calendar2-date:before{content:"\f1fa"}.bi-calendar2-day-fill:before{content:"\f1fb"}.bi-calendar2-day:before{content:"\f1fc"}.bi-calendar2-event-fill:before{content:"\f1fd"}.bi-calendar2-event:before{content:"\f1fe"}.bi-calendar2-fill:before{content:"\f1ff"}.bi-calendar2-minus-fill:before{content:"\f200"}.bi-calendar2-minus:before{content:"\f201"}.bi-calendar2-month-fill:before{content:"\f202"}.bi-calendar2-month:before{content:"\f203"}.bi-calendar2-plus-fill:before{content:"\f204"}.bi-calendar2-plus:before{content:"\f205"}.bi-calendar2-range-fill:before{content:"\f206"}.bi-calendar2-range:before{content:"\f207"}.bi-calendar2-week-fill:before{content:"\f208"}.bi-calendar2-week:before{content:"\f209"}.bi-calendar2-x-fill:before{content:"\f20a"}.bi-calendar2-x:before{content:"\f20b"}.bi-calendar2:before{content:"\f20c"}.bi-calendar3-event-fill:before{content:"\f20d"}.bi-calendar3-event:before{content:"\f20e"}.bi-calendar3-fill:before{content:"\f20f"}.bi-calendar3-range-fill:before{content:"\f210"}.bi-calendar3-range:before{content:"\f211"}.bi-calendar3-week-fill:before{content:"\f212"}.bi-calendar3-week:before{content:"\f213"}.bi-calendar3:before{content:"\f214"}.bi-calendar4-event:before{content:"\f215"}.bi-calendar4-range:before{content:"\f216"}.bi-calendar4-week:before{content:"\f217"}.bi-calendar4:before{content:"\f218"}.bi-camera-fill:before{content:"\f219"}.bi-camera-reels-fill:before{content:"\f21a"}.bi-camera-reels:before{content:"\f21b"}.bi-camera-video-fill:before{content:"\f21c"}.bi-camera-video-off-fill:before{content:"\f21d"}.bi-camera-video-off:before{content:"\f21e"}.bi-camera-video:before{content:"\f21f"}.bi-camera:before{content:"\f220"}.bi-camera2:before{content:"\f221"}.bi-capslock-fill:before{content:"\f222"}.bi-capslock:before{content:"\f223"}.bi-card-checklist:before{content:"\f224"}.bi-card-heading:before{content:"\f225"}.bi-card-image:before{content:"\f226"}.bi-card-list:before{content:"\f227"}.bi-card-text:before{content:"\f228"}.bi-caret-down-fill:before{content:"\f229"}.bi-caret-down-square-fill:before{content:"\f22a"}.bi-caret-down-square:before{content:"\f22b"}.bi-caret-down:before{content:"\f22c"}.bi-caret-left-fill:before{content:"\f22d"}.bi-caret-left-square-fill:before{content:"\f22e"}.bi-caret-left-square:before{content:"\f22f"}.bi-caret-left:before{content:"\f230"}.bi-caret-right-fill:before{content:"\f231"}.bi-caret-right-square-fill:before{content:"\f232"}.bi-caret-right-square:before{content:"\f233"}.bi-caret-right:before{content:"\f234"}.bi-caret-up-fill:before{content:"\f235"}.bi-caret-up-square-fill:before{content:"\f236"}.bi-caret-up-square:before{content:"\f237"}.bi-caret-up:before{content:"\f238"}.bi-cart-check-fill:before{content:"\f239"}.bi-cart-check:before{content:"\f23a"}.bi-cart-dash-fill:before{content:"\f23b"}.bi-cart-dash:before{content:"\f23c"}.bi-cart-fill:before{content:"\f23d"}.bi-cart-plus-fill:before{content:"\f23e"}.bi-cart-plus:before{content:"\f23f"}.bi-cart-x-fill:before{content:"\f240"}.bi-cart-x:before{content:"\f241"}.bi-cart:before{content:"\f242"}.bi-cart2:before{content:"\f243"}.bi-cart3:before{content:"\f244"}.bi-cart4:before{content:"\f245"}.bi-cash-stack:before{content:"\f246"}.bi-cash:before{content:"\f247"}.bi-cast:before{content:"\f248"}.bi-chat-dots-fill:before{content:"\f249"}.bi-chat-dots:before{content:"\f24a"}.bi-chat-fill:before{content:"\f24b"}.bi-chat-left-dots-fill:before{content:"\f24c"}.bi-chat-left-dots:before{content:"\f24d"}.bi-chat-left-fill:before{content:"\f24e"}.bi-chat-left-quote-fill:before{content:"\f24f"}.bi-chat-left-quote:before{content:"\f250"}.bi-chat-left-text-fill:before{content:"\f251"}.bi-chat-left-text:before{content:"\f252"}.bi-chat-left:before{content:"\f253"}.bi-chat-quote-fill:before{content:"\f254"}.bi-chat-quote:before{content:"\f255"}.bi-chat-right-dots-fill:before{content:"\f256"}.bi-chat-right-dots:before{content:"\f257"}.bi-chat-right-fill:before{content:"\f258"}.bi-chat-right-quote-fill:before{content:"\f259"}.bi-chat-right-quote:before{content:"\f25a"}.bi-chat-right-text-fill:before{content:"\f25b"}.bi-chat-right-text:before{content:"\f25c"}.bi-chat-right:before{content:"\f25d"}.bi-chat-square-dots-fill:before{content:"\f25e"}.bi-chat-square-dots:before{content:"\f25f"}.bi-chat-square-fill:before{content:"\f260"}.bi-chat-square-quote-fill:before{content:"\f261"}.bi-chat-square-quote:before{content:"\f262"}.bi-chat-square-text-fill:before{content:"\f263"}.bi-chat-square-text:before{content:"\f264"}.bi-chat-square:before{content:"\f265"}.bi-chat-text-fill:before{content:"\f266"}.bi-chat-text:before{content:"\f267"}.bi-chat:before{content:"\f268"}.bi-check-all:before{content:"\f269"}.bi-check-circle-fill:before{content:"\f26a"}.bi-check-circle:before{content:"\f26b"}.bi-check-square-fill:before{content:"\f26c"}.bi-check-square:before{content:"\f26d"}.bi-check:before{content:"\f26e"}.bi-check2-all:before{content:"\f26f"}.bi-check2-circle:before{content:"\f270"}.bi-check2-square:before{content:"\f271"}.bi-check2:before{content:"\f272"}.bi-chevron-bar-contract:before{content:"\f273"}.bi-chevron-bar-down:before{content:"\f274"}.bi-chevron-bar-expand:before{content:"\f275"}.bi-chevron-bar-left:before{content:"\f276"}.bi-chevron-bar-right:before{content:"\f277"}.bi-chevron-bar-up:before{content:"\f278"}.bi-chevron-compact-down:before{content:"\f279"}.bi-chevron-compact-left:before{content:"\f27a"}.bi-chevron-compact-right:before{content:"\f27b"}.bi-chevron-compact-up:before{content:"\f27c"}.bi-chevron-contract:before{content:"\f27d"}.bi-chevron-double-down:before{content:"\f27e"}.bi-chevron-double-left:before{content:"\f27f"}.bi-chevron-double-right:before{content:"\f280"}.bi-chevron-double-up:before{content:"\f281"}.bi-chevron-down:before{content:"\f282"}.bi-chevron-expand:before{content:"\f283"}.bi-chevron-left:before{content:"\f284"}.bi-chevron-right:before{content:"\f285"}.bi-chevron-up:before{content:"\f286"}.bi-circle-fill:before{content:"\f287"}.bi-circle-half:before{content:"\f288"}.bi-circle-square:before{content:"\f289"}.bi-circle:before{content:"\f28a"}.bi-clipboard-check:before{content:"\f28b"}.bi-clipboard-data:before{content:"\f28c"}.bi-clipboard-minus:before{content:"\f28d"}.bi-clipboard-plus:before{content:"\f28e"}.bi-clipboard-x:before{content:"\f28f"}.bi-clipboard:before{content:"\f290"}.bi-clock-fill:before{content:"\f291"}.bi-clock-history:before{content:"\f292"}.bi-clock:before{content:"\f293"}.bi-cloud-arrow-down-fill:before{content:"\f294"}.bi-cloud-arrow-down:before{content:"\f295"}.bi-cloud-arrow-up-fill:before{content:"\f296"}.bi-cloud-arrow-up:before{content:"\f297"}.bi-cloud-check-fill:before{content:"\f298"}.bi-cloud-check:before{content:"\f299"}.bi-cloud-download-fill:before{content:"\f29a"}.bi-cloud-download:before{content:"\f29b"}.bi-cloud-drizzle-fill:before{content:"\f29c"}.bi-cloud-drizzle:before{content:"\f29d"}.bi-cloud-fill:before{content:"\f29e"}.bi-cloud-fog-fill:before{content:"\f29f"}.bi-cloud-fog:before{content:"\f2a0"}.bi-cloud-fog2-fill:before{content:"\f2a1"}.bi-cloud-fog2:before{content:"\f2a2"}.bi-cloud-hail-fill:before{content:"\f2a3"}.bi-cloud-hail:before{content:"\f2a4"}.bi-cloud-haze-fill:before{content:"\f2a6"}.bi-cloud-haze:before{content:"\f2a7"}.bi-cloud-haze2-fill:before{content:"\f2a8"}.bi-cloud-lightning-fill:before{content:"\f2a9"}.bi-cloud-lightning-rain-fill:before{content:"\f2aa"}.bi-cloud-lightning-rain:before{content:"\f2ab"}.bi-cloud-lightning:before{content:"\f2ac"}.bi-cloud-minus-fill:before{content:"\f2ad"}.bi-cloud-minus:before{content:"\f2ae"}.bi-cloud-moon-fill:before{content:"\f2af"}.bi-cloud-moon:before{content:"\f2b0"}.bi-cloud-plus-fill:before{content:"\f2b1"}.bi-cloud-plus:before{content:"\f2b2"}.bi-cloud-rain-fill:before{content:"\f2b3"}.bi-cloud-rain-heavy-fill:before{content:"\f2b4"}.bi-cloud-rain-heavy:before{content:"\f2b5"}.bi-cloud-rain:before{content:"\f2b6"}.bi-cloud-slash-fill:before{content:"\f2b7"}.bi-cloud-slash:before{content:"\f2b8"}.bi-cloud-sleet-fill:before{content:"\f2b9"}.bi-cloud-sleet:before{content:"\f2ba"}.bi-cloud-snow-fill:before{content:"\f2bb"}.bi-cloud-snow:before{content:"\f2bc"}.bi-cloud-sun-fill:before{content:"\f2bd"}.bi-cloud-sun:before{content:"\f2be"}.bi-cloud-upload-fill:before{content:"\f2bf"}.bi-cloud-upload:before{content:"\f2c0"}.bi-cloud:before{content:"\f2c1"}.bi-clouds-fill:before{content:"\f2c2"}.bi-clouds:before{content:"\f2c3"}.bi-cloudy-fill:before{content:"\f2c4"}.bi-cloudy:before{content:"\f2c5"}.bi-code-slash:before{content:"\f2c6"}.bi-code-square:before{content:"\f2c7"}.bi-code:before{content:"\f2c8"}.bi-collection-fill:before{content:"\f2c9"}.bi-collection-play-fill:before{content:"\f2ca"}.bi-collection-play:before{content:"\f2cb"}.bi-collection:before{content:"\f2cc"}.bi-columns-gap:before{content:"\f2cd"}.bi-columns:before{content:"\f2ce"}.bi-command:before{content:"\f2cf"}.bi-compass-fill:before{content:"\f2d0"}.bi-compass:before{content:"\f2d1"}.bi-cone-striped:before{content:"\f2d2"}.bi-cone:before{content:"\f2d3"}.bi-controller:before{content:"\f2d4"}.bi-cpu-fill:before{content:"\f2d5"}.bi-cpu:before{content:"\f2d6"}.bi-credit-card-2-back-fill:before{content:"\f2d7"}.bi-credit-card-2-back:before{content:"\f2d8"}.bi-credit-card-2-front-fill:before{content:"\f2d9"}.bi-credit-card-2-front:before{content:"\f2da"}.bi-credit-card-fill:before{content:"\f2db"}.bi-credit-card:before{content:"\f2dc"}.bi-crop:before{content:"\f2dd"}.bi-cup-fill:before{content:"\f2de"}.bi-cup-straw:before{content:"\f2df"}.bi-cup:before{content:"\f2e0"}.bi-cursor-fill:before{content:"\f2e1"}.bi-cursor-text:before{content:"\f2e2"}.bi-cursor:before{content:"\f2e3"}.bi-dash-circle-dotted:before{content:"\f2e4"}.bi-dash-circle-fill:before{content:"\f2e5"}.bi-dash-circle:before{content:"\f2e6"}.bi-dash-square-dotted:before{content:"\f2e7"}.bi-dash-square-fill:before{content:"\f2e8"}.bi-dash-square:before{content:"\f2e9"}.bi-dash:before{content:"\f2ea"}.bi-diagram-2-fill:before{content:"\f2eb"}.bi-diagram-2:before{content:"\f2ec"}.bi-diagram-3-fill:before{content:"\f2ed"}.bi-diagram-3:before{content:"\f2ee"}.bi-diamond-fill:before{content:"\f2ef"}.bi-diamond-half:before{content:"\f2f0"}.bi-diamond:before{content:"\f2f1"}.bi-dice-1-fill:before{content:"\f2f2"}.bi-dice-1:before{content:"\f2f3"}.bi-dice-2-fill:before{content:"\f2f4"}.bi-dice-2:before{content:"\f2f5"}.bi-dice-3-fill:before{content:"\f2f6"}.bi-dice-3:before{content:"\f2f7"}.bi-dice-4-fill:before{content:"\f2f8"}.bi-dice-4:before{content:"\f2f9"}.bi-dice-5-fill:before{content:"\f2fa"}.bi-dice-5:before{content:"\f2fb"}.bi-dice-6-fill:before{content:"\f2fc"}.bi-dice-6:before{content:"\f2fd"}.bi-disc-fill:before{content:"\f2fe"}.bi-disc:before{content:"\f2ff"}.bi-discord:before{content:"\f300"}.bi-display-fill:before{content:"\f301"}.bi-display:before{content:"\f302"}.bi-distribute-horizontal:before{content:"\f303"}.bi-distribute-vertical:before{content:"\f304"}.bi-door-closed-fill:before{content:"\f305"}.bi-door-closed:before{content:"\f306"}.bi-door-open-fill:before{content:"\f307"}.bi-door-open:before{content:"\f308"}.bi-dot:before{content:"\f309"}.bi-download:before{content:"\f30a"}.bi-droplet-fill:before{content:"\f30b"}.bi-droplet-half:before{content:"\f30c"}.bi-droplet:before{content:"\f30d"}.bi-earbuds:before{content:"\f30e"}.bi-easel-fill:before{content:"\f30f"}.bi-easel:before{content:"\f310"}.bi-egg-fill:before{content:"\f311"}.bi-egg-fried:before{content:"\f312"}.bi-egg:before{content:"\f313"}.bi-eject-fill:before{content:"\f314"}.bi-eject:before{content:"\f315"}.bi-emoji-angry-fill:before{content:"\f316"}.bi-emoji-angry:before{content:"\f317"}.bi-emoji-dizzy-fill:before{content:"\f318"}.bi-emoji-dizzy:before{content:"\f319"}.bi-emoji-expressionless-fill:before{content:"\f31a"}.bi-emoji-expressionless:before{content:"\f31b"}.bi-emoji-frown-fill:before{content:"\f31c"}.bi-emoji-frown:before{content:"\f31d"}.bi-emoji-heart-eyes-fill:before{content:"\f31e"}.bi-emoji-heart-eyes:before{content:"\f31f"}.bi-emoji-laughing-fill:before{content:"\f320"}.bi-emoji-laughing:before{content:"\f321"}.bi-emoji-neutral-fill:before{content:"\f322"}.bi-emoji-neutral:before{content:"\f323"}.bi-emoji-smile-fill:before{content:"\f324"}.bi-emoji-smile-upside-down-fill:before{content:"\f325"}.bi-emoji-smile-upside-down:before{content:"\f326"}.bi-emoji-smile:before{content:"\f327"}.bi-emoji-sunglasses-fill:before{content:"\f328"}.bi-emoji-sunglasses:before{content:"\f329"}.bi-emoji-wink-fill:before{content:"\f32a"}.bi-emoji-wink:before{content:"\f32b"}.bi-envelope-fill:before{content:"\f32c"}.bi-envelope-open-fill:before{content:"\f32d"}.bi-envelope-open:before{content:"\f32e"}.bi-envelope:before{content:"\f32f"}.bi-eraser-fill:before{content:"\f330"}.bi-eraser:before{content:"\f331"}.bi-exclamation-circle-fill:before{content:"\f332"}.bi-exclamation-circle:before{content:"\f333"}.bi-exclamation-diamond-fill:before{content:"\f334"}.bi-exclamation-diamond:before{content:"\f335"}.bi-exclamation-octagon-fill:before{content:"\f336"}.bi-exclamation-octagon:before{content:"\f337"}.bi-exclamation-square-fill:before{content:"\f338"}.bi-exclamation-square:before{content:"\f339"}.bi-exclamation-triangle-fill:before{content:"\f33a"}.bi-exclamation-triangle:before{content:"\f33b"}.bi-exclamation:before{content:"\f33c"}.bi-exclude:before{content:"\f33d"}.bi-eye-fill:before{content:"\f33e"}.bi-eye-slash-fill:before{content:"\f33f"}.bi-eye-slash:before{content:"\f340"}.bi-eye:before{content:"\f341"}.bi-eyedropper:before{content:"\f342"}.bi-eyeglasses:before{content:"\f343"}.bi-facebook:before{content:"\f344"}.bi-file-arrow-down-fill:before{content:"\f345"}.bi-file-arrow-down:before{content:"\f346"}.bi-file-arrow-up-fill:before{content:"\f347"}.bi-file-arrow-up:before{content:"\f348"}.bi-file-bar-graph-fill:before{content:"\f349"}.bi-file-bar-graph:before{content:"\f34a"}.bi-file-binary-fill:before{content:"\f34b"}.bi-file-binary:before{content:"\f34c"}.bi-file-break-fill:before{content:"\f34d"}.bi-file-break:before{content:"\f34e"}.bi-file-check-fill:before{content:"\f34f"}.bi-file-check:before{content:"\f350"}.bi-file-code-fill:before{content:"\f351"}.bi-file-code:before{content:"\f352"}.bi-file-diff-fill:before{content:"\f353"}.bi-file-diff:before{content:"\f354"}.bi-file-earmark-arrow-down-fill:before{content:"\f355"}.bi-file-earmark-arrow-down:before{content:"\f356"}.bi-file-earmark-arrow-up-fill:before{content:"\f357"}.bi-file-earmark-arrow-up:before{content:"\f358"}.bi-file-earmark-bar-graph-fill:before{content:"\f359"}.bi-file-earmark-bar-graph:before{content:"\f35a"}.bi-file-earmark-binary-fill:before{content:"\f35b"}.bi-file-earmark-binary:before{content:"\f35c"}.bi-file-earmark-break-fill:before{content:"\f35d"}.bi-file-earmark-break:before{content:"\f35e"}.bi-file-earmark-check-fill:before{content:"\f35f"}.bi-file-earmark-check:before{content:"\f360"}.bi-file-earmark-code-fill:before{content:"\f361"}.bi-file-earmark-code:before{content:"\f362"}.bi-file-earmark-diff-fill:before{content:"\f363"}.bi-file-earmark-diff:before{content:"\f364"}.bi-file-earmark-easel-fill:before{content:"\f365"}.bi-file-earmark-easel:before{content:"\f366"}.bi-file-earmark-excel-fill:before{content:"\f367"}.bi-file-earmark-excel:before{content:"\f368"}.bi-file-earmark-fill:before{content:"\f369"}.bi-file-earmark-font-fill:before{content:"\f36a"}.bi-file-earmark-font:before{content:"\f36b"}.bi-file-earmark-image-fill:before{content:"\f36c"}.bi-file-earmark-image:before{content:"\f36d"}.bi-file-earmark-lock-fill:before{content:"\f36e"}.bi-file-earmark-lock:before{content:"\f36f"}.bi-file-earmark-lock2-fill:before{content:"\f370"}.bi-file-earmark-lock2:before{content:"\f371"}.bi-file-earmark-medical-fill:before{content:"\f372"}.bi-file-earmark-medical:before{content:"\f373"}.bi-file-earmark-minus-fill:before{content:"\f374"}.bi-file-earmark-minus:before{content:"\f375"}.bi-file-earmark-music-fill:before{content:"\f376"}.bi-file-earmark-music:before{content:"\f377"}.bi-file-earmark-person-fill:before{content:"\f378"}.bi-file-earmark-person:before{content:"\f379"}.bi-file-earmark-play-fill:before{content:"\f37a"}.bi-file-earmark-play:before{content:"\f37b"}.bi-file-earmark-plus-fill:before{content:"\f37c"}.bi-file-earmark-plus:before{content:"\f37d"}.bi-file-earmark-post-fill:before{content:"\f37e"}.bi-file-earmark-post:before{content:"\f37f"}.bi-file-earmark-ppt-fill:before{content:"\f380"}.bi-file-earmark-ppt:before{content:"\f381"}.bi-file-earmark-richtext-fill:before{content:"\f382"}.bi-file-earmark-richtext:before{content:"\f383"}.bi-file-earmark-ruled-fill:before{content:"\f384"}.bi-file-earmark-ruled:before{content:"\f385"}.bi-file-earmark-slides-fill:before{content:"\f386"}.bi-file-earmark-slides:before{content:"\f387"}.bi-file-earmark-spreadsheet-fill:before{content:"\f388"}.bi-file-earmark-spreadsheet:before{content:"\f389"}.bi-file-earmark-text-fill:before{content:"\f38a"}.bi-file-earmark-text:before{content:"\f38b"}.bi-file-earmark-word-fill:before{content:"\f38c"}.bi-file-earmark-word:before{content:"\f38d"}.bi-file-earmark-x-fill:before{content:"\f38e"}.bi-file-earmark-x:before{content:"\f38f"}.bi-file-earmark-zip-fill:before{content:"\f390"}.bi-file-earmark-zip:before{content:"\f391"}.bi-file-earmark:before{content:"\f392"}.bi-file-easel-fill:before{content:"\f393"}.bi-file-easel:before{content:"\f394"}.bi-file-excel-fill:before{content:"\f395"}.bi-file-excel:before{content:"\f396"}.bi-file-fill:before{content:"\f397"}.bi-file-font-fill:before{content:"\f398"}.bi-file-font:before{content:"\f399"}.bi-file-image-fill:before{content:"\f39a"}.bi-file-image:before{content:"\f39b"}.bi-file-lock-fill:before{content:"\f39c"}.bi-file-lock:before{content:"\f39d"}.bi-file-lock2-fill:before{content:"\f39e"}.bi-file-lock2:before{content:"\f39f"}.bi-file-medical-fill:before{content:"\f3a0"}.bi-file-medical:before{content:"\f3a1"}.bi-file-minus-fill:before{content:"\f3a2"}.bi-file-minus:before{content:"\f3a3"}.bi-file-music-fill:before{content:"\f3a4"}.bi-file-music:before{content:"\f3a5"}.bi-file-person-fill:before{content:"\f3a6"}.bi-file-person:before{content:"\f3a7"}.bi-file-play-fill:before{content:"\f3a8"}.bi-file-play:before{content:"\f3a9"}.bi-file-plus-fill:before{content:"\f3aa"}.bi-file-plus:before{content:"\f3ab"}.bi-file-post-fill:before{content:"\f3ac"}.bi-file-post:before{content:"\f3ad"}.bi-file-ppt-fill:before{content:"\f3ae"}.bi-file-ppt:before{content:"\f3af"}.bi-file-richtext-fill:before{content:"\f3b0"}.bi-file-richtext:before{content:"\f3b1"}.bi-file-ruled-fill:before{content:"\f3b2"}.bi-file-ruled:before{content:"\f3b3"}.bi-file-slides-fill:before{content:"\f3b4"}.bi-file-slides:before{content:"\f3b5"}.bi-file-spreadsheet-fill:before{content:"\f3b6"}.bi-file-spreadsheet:before{content:"\f3b7"}.bi-file-text-fill:before{content:"\f3b8"}.bi-file-text:before{content:"\f3b9"}.bi-file-word-fill:before{content:"\f3ba"}.bi-file-word:before{content:"\f3bb"}.bi-file-x-fill:before{content:"\f3bc"}.bi-file-x:before{content:"\f3bd"}.bi-file-zip-fill:before{content:"\f3be"}.bi-file-zip:before{content:"\f3bf"}.bi-file:before{content:"\f3c0"}.bi-files-alt:before{content:"\f3c1"}.bi-files:before{content:"\f3c2"}.bi-film:before{content:"\f3c3"}.bi-filter-circle-fill:before{content:"\f3c4"}.bi-filter-circle:before{content:"\f3c5"}.bi-filter-left:before{content:"\f3c6"}.bi-filter-right:before{content:"\f3c7"}.bi-filter-square-fill:before{content:"\f3c8"}.bi-filter-square:before{content:"\f3c9"}.bi-filter:before{content:"\f3ca"}.bi-flag-fill:before{content:"\f3cb"}.bi-flag:before{content:"\f3cc"}.bi-flower1:before{content:"\f3cd"}.bi-flower2:before{content:"\f3ce"}.bi-flower3:before{content:"\f3cf"}.bi-folder-check:before{content:"\f3d0"}.bi-folder-fill:before{content:"\f3d1"}.bi-folder-minus:before{content:"\f3d2"}.bi-folder-plus:before{content:"\f3d3"}.bi-folder-symlink-fill:before{content:"\f3d4"}.bi-folder-symlink:before{content:"\f3d5"}.bi-folder-x:before{content:"\f3d6"}.bi-folder:before{content:"\f3d7"}.bi-folder2-open:before{content:"\f3d8"}.bi-folder2:before{content:"\f3d9"}.bi-fonts:before{content:"\f3da"}.bi-forward-fill:before{content:"\f3db"}.bi-forward:before{content:"\f3dc"}.bi-front:before{content:"\f3dd"}.bi-fullscreen-exit:before{content:"\f3de"}.bi-fullscreen:before{content:"\f3df"}.bi-funnel-fill:before{content:"\f3e0"}.bi-funnel:before{content:"\f3e1"}.bi-gear-fill:before{content:"\f3e2"}.bi-gear-wide-connected:before{content:"\f3e3"}.bi-gear-wide:before{content:"\f3e4"}.bi-gear:before{content:"\f3e5"}.bi-gem:before{content:"\f3e6"}.bi-geo-alt-fill:before{content:"\f3e7"}.bi-geo-alt:before{content:"\f3e8"}.bi-geo-fill:before{content:"\f3e9"}.bi-geo:before{content:"\f3ea"}.bi-gift-fill:before{content:"\f3eb"}.bi-gift:before{content:"\f3ec"}.bi-github:before{content:"\f3ed"}.bi-globe:before{content:"\f3ee"}.bi-globe2:before{content:"\f3ef"}.bi-google:before{content:"\f3f0"}.bi-graph-down:before{content:"\f3f1"}.bi-graph-up:before{content:"\f3f2"}.bi-grid-1x2-fill:before{content:"\f3f3"}.bi-grid-1x2:before{content:"\f3f4"}.bi-grid-3x2-gap-fill:before{content:"\f3f5"}.bi-grid-3x2-gap:before{content:"\f3f6"}.bi-grid-3x2:before{content:"\f3f7"}.bi-grid-3x3-gap-fill:before{content:"\f3f8"}.bi-grid-3x3-gap:before{content:"\f3f9"}.bi-grid-3x3:before{content:"\f3fa"}.bi-grid-fill:before{content:"\f3fb"}.bi-grid:before{content:"\f3fc"}.bi-grip-horizontal:before{content:"\f3fd"}.bi-grip-vertical:before{content:"\f3fe"}.bi-hammer:before{content:"\f3ff"}.bi-hand-index-fill:before{content:"\f400"}.bi-hand-index-thumb-fill:before{content:"\f401"}.bi-hand-index-thumb:before{content:"\f402"}.bi-hand-index:before{content:"\f403"}.bi-hand-thumbs-down-fill:before{content:"\f404"}.bi-hand-thumbs-down:before{content:"\f405"}.bi-hand-thumbs-up-fill:before{content:"\f406"}.bi-hand-thumbs-up:before{content:"\f407"}.bi-handbag-fill:before{content:"\f408"}.bi-handbag:before{content:"\f409"}.bi-hash:before{content:"\f40a"}.bi-hdd-fill:before{content:"\f40b"}.bi-hdd-network-fill:before{content:"\f40c"}.bi-hdd-network:before{content:"\f40d"}.bi-hdd-rack-fill:before{content:"\f40e"}.bi-hdd-rack:before{content:"\f40f"}.bi-hdd-stack-fill:before{content:"\f410"}.bi-hdd-stack:before{content:"\f411"}.bi-hdd:before{content:"\f412"}.bi-headphones:before{content:"\f413"}.bi-headset:before{content:"\f414"}.bi-heart-fill:before{content:"\f415"}.bi-heart-half:before{content:"\f416"}.bi-heart:before{content:"\f417"}.bi-heptagon-fill:before{content:"\f418"}.bi-heptagon-half:before{content:"\f419"}.bi-heptagon:before{content:"\f41a"}.bi-hexagon-fill:before{content:"\f41b"}.bi-hexagon-half:before{content:"\f41c"}.bi-hexagon:before{content:"\f41d"}.bi-hourglass-bottom:before{content:"\f41e"}.bi-hourglass-split:before{content:"\f41f"}.bi-hourglass-top:before{content:"\f420"}.bi-hourglass:before{content:"\f421"}.bi-house-door-fill:before{content:"\f422"}.bi-house-door:before{content:"\f423"}.bi-house-fill:before{content:"\f424"}.bi-house:before{content:"\f425"}.bi-hr:before{content:"\f426"}.bi-hurricane:before{content:"\f427"}.bi-image-alt:before{content:"\f428"}.bi-image-fill:before{content:"\f429"}.bi-image:before{content:"\f42a"}.bi-images:before{content:"\f42b"}.bi-inbox-fill:before{content:"\f42c"}.bi-inbox:before{content:"\f42d"}.bi-inboxes-fill:before{content:"\f42e"}.bi-inboxes:before{content:"\f42f"}.bi-info-circle-fill:before{content:"\f430"}.bi-info-circle:before{content:"\f431"}.bi-info-square-fill:before{content:"\f432"}.bi-info-square:before{content:"\f433"}.bi-info:before{content:"\f434"}.bi-input-cursor-text:before{content:"\f435"}.bi-input-cursor:before{content:"\f436"}.bi-instagram:before{content:"\f437"}.bi-intersect:before{content:"\f438"}.bi-journal-album:before{content:"\f439"}.bi-journal-arrow-down:before{content:"\f43a"}.bi-journal-arrow-up:before{content:"\f43b"}.bi-journal-bookmark-fill:before{content:"\f43c"}.bi-journal-bookmark:before{content:"\f43d"}.bi-journal-check:before{content:"\f43e"}.bi-journal-code:before{content:"\f43f"}.bi-journal-medical:before{content:"\f440"}.bi-journal-minus:before{content:"\f441"}.bi-journal-plus:before{content:"\f442"}.bi-journal-richtext:before{content:"\f443"}.bi-journal-text:before{content:"\f444"}.bi-journal-x:before{content:"\f445"}.bi-journal:before{content:"\f446"}.bi-journals:before{content:"\f447"}.bi-joystick:before{content:"\f448"}.bi-justify-left:before{content:"\f449"}.bi-justify-right:before{content:"\f44a"}.bi-justify:before{content:"\f44b"}.bi-kanban-fill:before{content:"\f44c"}.bi-kanban:before{content:"\f44d"}.bi-key-fill:before{content:"\f44e"}.bi-key:before{content:"\f44f"}.bi-keyboard-fill:before{content:"\f450"}.bi-keyboard:before{content:"\f451"}.bi-ladder:before{content:"\f452"}.bi-lamp-fill:before{content:"\f453"}.bi-lamp:before{content:"\f454"}.bi-laptop-fill:before{content:"\f455"}.bi-laptop:before{content:"\f456"}.bi-layer-backward:before{content:"\f457"}.bi-layer-forward:before{content:"\f458"}.bi-layers-fill:before{content:"\f459"}.bi-layers-half:before{content:"\f45a"}.bi-layers:before{content:"\f45b"}.bi-layout-sidebar-inset-reverse:before{content:"\f45c"}.bi-layout-sidebar-inset:before{content:"\f45d"}.bi-layout-sidebar-reverse:before{content:"\f45e"}.bi-layout-sidebar:before{content:"\f45f"}.bi-layout-split:before{content:"\f460"}.bi-layout-text-sidebar-reverse:before{content:"\f461"}.bi-layout-text-sidebar:before{content:"\f462"}.bi-layout-text-window-reverse:before{content:"\f463"}.bi-layout-text-window:before{content:"\f464"}.bi-layout-three-columns:before{content:"\f465"}.bi-layout-wtf:before{content:"\f466"}.bi-life-preserver:before{content:"\f467"}.bi-lightbulb-fill:before{content:"\f468"}.bi-lightbulb-off-fill:before{content:"\f469"}.bi-lightbulb-off:before{content:"\f46a"}.bi-lightbulb:before{content:"\f46b"}.bi-lightning-charge-fill:before{content:"\f46c"}.bi-lightning-charge:before{content:"\f46d"}.bi-lightning-fill:before{content:"\f46e"}.bi-lightning:before{content:"\f46f"}.bi-link-45deg:before{content:"\f470"}.bi-link:before{content:"\f471"}.bi-linkedin:before{content:"\f472"}.bi-list-check:before{content:"\f473"}.bi-list-nested:before{content:"\f474"}.bi-list-ol:before{content:"\f475"}.bi-list-stars:before{content:"\f476"}.bi-list-task:before{content:"\f477"}.bi-list-ul:before{content:"\f478"}.bi-list:before{content:"\f479"}.bi-lock-fill:before{content:"\f47a"}.bi-lock:before{content:"\f47b"}.bi-mailbox:before{content:"\f47c"}.bi-mailbox2:before{content:"\f47d"}.bi-map-fill:before{content:"\f47e"}.bi-map:before{content:"\f47f"}.bi-markdown-fill:before{content:"\f480"}.bi-markdown:before{content:"\f481"}.bi-mask:before{content:"\f482"}.bi-megaphone-fill:before{content:"\f483"}.bi-megaphone:before{content:"\f484"}.bi-menu-app-fill:before{content:"\f485"}.bi-menu-app:before{content:"\f486"}.bi-menu-button-fill:before{content:"\f487"}.bi-menu-button-wide-fill:before{content:"\f488"}.bi-menu-button-wide:before{content:"\f489"}.bi-menu-button:before{content:"\f48a"}.bi-menu-down:before{content:"\f48b"}.bi-menu-up:before{content:"\f48c"}.bi-mic-fill:before{content:"\f48d"}.bi-mic-mute-fill:before{content:"\f48e"}.bi-mic-mute:before{content:"\f48f"}.bi-mic:before{content:"\f490"}.bi-minecart-loaded:before{content:"\f491"}.bi-minecart:before{content:"\f492"}.bi-moisture:before{content:"\f493"}.bi-moon-fill:before{content:"\f494"}.bi-moon-stars-fill:before{content:"\f495"}.bi-moon-stars:before{content:"\f496"}.bi-moon:before{content:"\f497"}.bi-mouse-fill:before{content:"\f498"}.bi-mouse:before{content:"\f499"}.bi-mouse2-fill:before{content:"\f49a"}.bi-mouse2:before{content:"\f49b"}.bi-mouse3-fill:before{content:"\f49c"}.bi-mouse3:before{content:"\f49d"}.bi-music-note-beamed:before{content:"\f49e"}.bi-music-note-list:before{content:"\f49f"}.bi-music-note:before{content:"\f4a0"}.bi-music-player-fill:before{content:"\f4a1"}.bi-music-player:before{content:"\f4a2"}.bi-newspaper:before{content:"\f4a3"}.bi-node-minus-fill:before{content:"\f4a4"}.bi-node-minus:before{content:"\f4a5"}.bi-node-plus-fill:before{content:"\f4a6"}.bi-node-plus:before{content:"\f4a7"}.bi-nut-fill:before{content:"\f4a8"}.bi-nut:before{content:"\f4a9"}.bi-octagon-fill:before{content:"\f4aa"}.bi-octagon-half:before{content:"\f4ab"}.bi-octagon:before{content:"\f4ac"}.bi-option:before{content:"\f4ad"}.bi-outlet:before{content:"\f4ae"}.bi-paint-bucket:before{content:"\f4af"}.bi-palette-fill:before{content:"\f4b0"}.bi-palette:before{content:"\f4b1"}.bi-palette2:before{content:"\f4b2"}.bi-paperclip:before{content:"\f4b3"}.bi-paragraph:before{content:"\f4b4"}.bi-patch-check-fill:before{content:"\f4b5"}.bi-patch-check:before{content:"\f4b6"}.bi-patch-exclamation-fill:before{content:"\f4b7"}.bi-patch-exclamation:before{content:"\f4b8"}.bi-patch-minus-fill:before{content:"\f4b9"}.bi-patch-minus:before{content:"\f4ba"}.bi-patch-plus-fill:before{content:"\f4bb"}.bi-patch-plus:before{content:"\f4bc"}.bi-patch-question-fill:before{content:"\f4bd"}.bi-patch-question:before{content:"\f4be"}.bi-pause-btn-fill:before{content:"\f4bf"}.bi-pause-btn:before{content:"\f4c0"}.bi-pause-circle-fill:before{content:"\f4c1"}.bi-pause-circle:before{content:"\f4c2"}.bi-pause-fill:before{content:"\f4c3"}.bi-pause:before{content:"\f4c4"}.bi-peace-fill:before{content:"\f4c5"}.bi-peace:before{content:"\f4c6"}.bi-pen-fill:before{content:"\f4c7"}.bi-pen:before{content:"\f4c8"}.bi-pencil-fill:before{content:"\f4c9"}.bi-pencil-square:before{content:"\f4ca"}.bi-pencil:before{content:"\f4cb"}.bi-pentagon-fill:before{content:"\f4cc"}.bi-pentagon-half:before{content:"\f4cd"}.bi-pentagon:before{content:"\f4ce"}.bi-people-fill:before{content:"\f4cf"}.bi-people:before{content:"\f4d0"}.bi-percent:before{content:"\f4d1"}.bi-person-badge-fill:before{content:"\f4d2"}.bi-person-badge:before{content:"\f4d3"}.bi-person-bounding-box:before{content:"\f4d4"}.bi-person-check-fill:before{content:"\f4d5"}.bi-person-check:before{content:"\f4d6"}.bi-person-circle:before{content:"\f4d7"}.bi-person-dash-fill:before{content:"\f4d8"}.bi-person-dash:before{content:"\f4d9"}.bi-person-fill:before{content:"\f4da"}.bi-person-lines-fill:before{content:"\f4db"}.bi-person-plus-fill:before{content:"\f4dc"}.bi-person-plus:before{content:"\f4dd"}.bi-person-square:before{content:"\f4de"}.bi-person-x-fill:before{content:"\f4df"}.bi-person-x:before{content:"\f4e0"}.bi-person:before{content:"\f4e1"}.bi-phone-fill:before{content:"\f4e2"}.bi-phone-landscape-fill:before{content:"\f4e3"}.bi-phone-landscape:before{content:"\f4e4"}.bi-phone-vibrate-fill:before{content:"\f4e5"}.bi-phone-vibrate:before{content:"\f4e6"}.bi-phone:before{content:"\f4e7"}.bi-pie-chart-fill:before{content:"\f4e8"}.bi-pie-chart:before{content:"\f4e9"}.bi-pin-angle-fill:before{content:"\f4ea"}.bi-pin-angle:before{content:"\f4eb"}.bi-pin-fill:before{content:"\f4ec"}.bi-pin:before{content:"\f4ed"}.bi-pip-fill:before{content:"\f4ee"}.bi-pip:before{content:"\f4ef"}.bi-play-btn-fill:before{content:"\f4f0"}.bi-play-btn:before{content:"\f4f1"}.bi-play-circle-fill:before{content:"\f4f2"}.bi-play-circle:before{content:"\f4f3"}.bi-play-fill:before{content:"\f4f4"}.bi-play:before{content:"\f4f5"}.bi-plug-fill:before{content:"\f4f6"}.bi-plug:before{content:"\f4f7"}.bi-plus-circle-dotted:before{content:"\f4f8"}.bi-plus-circle-fill:before{content:"\f4f9"}.bi-plus-circle:before{content:"\f4fa"}.bi-plus-square-dotted:before{content:"\f4fb"}.bi-plus-square-fill:before{content:"\f4fc"}.bi-plus-square:before{content:"\f4fd"}.bi-plus:before{content:"\f4fe"}.bi-power:before{content:"\f4ff"}.bi-printer-fill:before{content:"\f500"}.bi-printer:before{content:"\f501"}.bi-puzzle-fill:before{content:"\f502"}.bi-puzzle:before{content:"\f503"}.bi-question-circle-fill:before{content:"\f504"}.bi-question-circle:before{content:"\f505"}.bi-question-diamond-fill:before{content:"\f506"}.bi-question-diamond:before{content:"\f507"}.bi-question-octagon-fill:before{content:"\f508"}.bi-question-octagon:before{content:"\f509"}.bi-question-square-fill:before{content:"\f50a"}.bi-question-square:before{content:"\f50b"}.bi-question:before{content:"\f50c"}.bi-rainbow:before{content:"\f50d"}.bi-receipt-cutoff:before{content:"\f50e"}.bi-receipt:before{content:"\f50f"}.bi-reception-0:before{content:"\f510"}.bi-reception-1:before{content:"\f511"}.bi-reception-2:before{content:"\f512"}.bi-reception-3:before{content:"\f513"}.bi-reception-4:before{content:"\f514"}.bi-record-btn-fill:before{content:"\f515"}.bi-record-btn:before{content:"\f516"}.bi-record-circle-fill:before{content:"\f517"}.bi-record-circle:before{content:"\f518"}.bi-record-fill:before{content:"\f519"}.bi-record:before{content:"\f51a"}.bi-record2-fill:before{content:"\f51b"}.bi-record2:before{content:"\f51c"}.bi-reply-all-fill:before{content:"\f51d"}.bi-reply-all:before{content:"\f51e"}.bi-reply-fill:before{content:"\f51f"}.bi-reply:before{content:"\f520"}.bi-rss-fill:before{content:"\f521"}.bi-rss:before{content:"\f522"}.bi-rulers:before{content:"\f523"}.bi-save-fill:before{content:"\f524"}.bi-save:before{content:"\f525"}.bi-save2-fill:before{content:"\f526"}.bi-save2:before{content:"\f527"}.bi-scissors:before{content:"\f528"}.bi-screwdriver:before{content:"\f529"}.bi-search:before{content:"\f52a"}.bi-segmented-nav:before{content:"\f52b"}.bi-server:before{content:"\f52c"}.bi-share-fill:before{content:"\f52d"}.bi-share:before{content:"\f52e"}.bi-shield-check:before{content:"\f52f"}.bi-shield-exclamation:before{content:"\f530"}.bi-shield-fill-check:before{content:"\f531"}.bi-shield-fill-exclamation:before{content:"\f532"}.bi-shield-fill-minus:before{content:"\f533"}.bi-shield-fill-plus:before{content:"\f534"}.bi-shield-fill-x:before{content:"\f535"}.bi-shield-fill:before{content:"\f536"}.bi-shield-lock-fill:before{content:"\f537"}.bi-shield-lock:before{content:"\f538"}.bi-shield-minus:before{content:"\f539"}.bi-shield-plus:before{content:"\f53a"}.bi-shield-shaded:before{content:"\f53b"}.bi-shield-slash-fill:before{content:"\f53c"}.bi-shield-slash:before{content:"\f53d"}.bi-shield-x:before{content:"\f53e"}.bi-shield:before{content:"\f53f"}.bi-shift-fill:before{content:"\f540"}.bi-shift:before{content:"\f541"}.bi-shop-window:before{content:"\f542"}.bi-shop:before{content:"\f543"}.bi-shuffle:before{content:"\f544"}.bi-signpost-2-fill:before{content:"\f545"}.bi-signpost-2:before{content:"\f546"}.bi-signpost-fill:before{content:"\f547"}.bi-signpost-split-fill:before{content:"\f548"}.bi-signpost-split:before{content:"\f549"}.bi-signpost:before{content:"\f54a"}.bi-sim-fill:before{content:"\f54b"}.bi-sim:before{content:"\f54c"}.bi-skip-backward-btn-fill:before{content:"\f54d"}.bi-skip-backward-btn:before{content:"\f54e"}.bi-skip-backward-circle-fill:before{content:"\f54f"}.bi-skip-backward-circle:before{content:"\f550"}.bi-skip-backward-fill:before{content:"\f551"}.bi-skip-backward:before{content:"\f552"}.bi-skip-end-btn-fill:before{content:"\f553"}.bi-skip-end-btn:before{content:"\f554"}.bi-skip-end-circle-fill:before{content:"\f555"}.bi-skip-end-circle:before{content:"\f556"}.bi-skip-end-fill:before{content:"\f557"}.bi-skip-end:before{content:"\f558"}.bi-skip-forward-btn-fill:before{content:"\f559"}.bi-skip-forward-btn:before{content:"\f55a"}.bi-skip-forward-circle-fill:before{content:"\f55b"}.bi-skip-forward-circle:before{content:"\f55c"}.bi-skip-forward-fill:before{content:"\f55d"}.bi-skip-forward:before{content:"\f55e"}.bi-skip-start-btn-fill:before{content:"\f55f"}.bi-skip-start-btn:before{content:"\f560"}.bi-skip-start-circle-fill:before{content:"\f561"}.bi-skip-start-circle:before{content:"\f562"}.bi-skip-start-fill:before{content:"\f563"}.bi-skip-start:before{content:"\f564"}.bi-slack:before{content:"\f565"}.bi-slash-circle-fill:before{content:"\f566"}.bi-slash-circle:before{content:"\f567"}.bi-slash-square-fill:before{content:"\f568"}.bi-slash-square:before{content:"\f569"}.bi-slash:before{content:"\f56a"}.bi-sliders:before{content:"\f56b"}.bi-smartwatch:before{content:"\f56c"}.bi-snow:before{content:"\f56d"}.bi-snow2:before{content:"\f56e"}.bi-snow3:before{content:"\f56f"}.bi-sort-alpha-down-alt:before{content:"\f570"}.bi-sort-alpha-down:before{content:"\f571"}.bi-sort-alpha-up-alt:before{content:"\f572"}.bi-sort-alpha-up:before{content:"\f573"}.bi-sort-down-alt:before{content:"\f574"}.bi-sort-down:before{content:"\f575"}.bi-sort-numeric-down-alt:before{content:"\f576"}.bi-sort-numeric-down:before{content:"\f577"}.bi-sort-numeric-up-alt:before{content:"\f578"}.bi-sort-numeric-up:before{content:"\f579"}.bi-sort-up-alt:before{content:"\f57a"}.bi-sort-up:before{content:"\f57b"}.bi-soundwave:before{content:"\f57c"}.bi-speaker-fill:before{content:"\f57d"}.bi-speaker:before{content:"\f57e"}.bi-speedometer:before{content:"\f57f"}.bi-speedometer2:before{content:"\f580"}.bi-spellcheck:before{content:"\f581"}.bi-square-fill:before{content:"\f582"}.bi-square-half:before{content:"\f583"}.bi-square:before{content:"\f584"}.bi-stack:before{content:"\f585"}.bi-star-fill:before{content:"\f586"}.bi-star-half:before{content:"\f587"}.bi-star:before{content:"\f588"}.bi-stars:before{content:"\f589"}.bi-stickies-fill:before{content:"\f58a"}.bi-stickies:before{content:"\f58b"}.bi-sticky-fill:before{content:"\f58c"}.bi-sticky:before{content:"\f58d"}.bi-stop-btn-fill:before{content:"\f58e"}.bi-stop-btn:before{content:"\f58f"}.bi-stop-circle-fill:before{content:"\f590"}.bi-stop-circle:before{content:"\f591"}.bi-stop-fill:before{content:"\f592"}.bi-stop:before{content:"\f593"}.bi-stoplights-fill:before{content:"\f594"}.bi-stoplights:before{content:"\f595"}.bi-stopwatch-fill:before{content:"\f596"}.bi-stopwatch:before{content:"\f597"}.bi-subtract:before{content:"\f598"}.bi-suit-club-fill:before{content:"\f599"}.bi-suit-club:before{content:"\f59a"}.bi-suit-diamond-fill:before{content:"\f59b"}.bi-suit-diamond:before{content:"\f59c"}.bi-suit-heart-fill:before{content:"\f59d"}.bi-suit-heart:before{content:"\f59e"}.bi-suit-spade-fill:before{content:"\f59f"}.bi-suit-spade:before{content:"\f5a0"}.bi-sun-fill:before{content:"\f5a1"}.bi-sun:before{content:"\f5a2"}.bi-sunglasses:before{content:"\f5a3"}.bi-sunrise-fill:before{content:"\f5a4"}.bi-sunrise:before{content:"\f5a5"}.bi-sunset-fill:before{content:"\f5a6"}.bi-sunset:before{content:"\f5a7"}.bi-symmetry-horizontal:before{content:"\f5a8"}.bi-symmetry-vertical:before{content:"\f5a9"}.bi-table:before{content:"\f5aa"}.bi-tablet-fill:before{content:"\f5ab"}.bi-tablet-landscape-fill:before{content:"\f5ac"}.bi-tablet-landscape:before{content:"\f5ad"}.bi-tablet:before{content:"\f5ae"}.bi-tag-fill:before{content:"\f5af"}.bi-tag:before{content:"\f5b0"}.bi-tags-fill:before{content:"\f5b1"}.bi-tags:before{content:"\f5b2"}.bi-telegram:before{content:"\f5b3"}.bi-telephone-fill:before{content:"\f5b4"}.bi-telephone-forward-fill:before{content:"\f5b5"}.bi-telephone-forward:before{content:"\f5b6"}.bi-telephone-inbound-fill:before{content:"\f5b7"}.bi-telephone-inbound:before{content:"\f5b8"}.bi-telephone-minus-fill:before{content:"\f5b9"}.bi-telephone-minus:before{content:"\f5ba"}.bi-telephone-outbound-fill:before{content:"\f5bb"}.bi-telephone-outbound:before{content:"\f5bc"}.bi-telephone-plus-fill:before{content:"\f5bd"}.bi-telephone-plus:before{content:"\f5be"}.bi-telephone-x-fill:before{content:"\f5bf"}.bi-telephone-x:before{content:"\f5c0"}.bi-telephone:before{content:"\f5c1"}.bi-terminal-fill:before{content:"\f5c2"}.bi-terminal:before{content:"\f5c3"}.bi-text-center:before{content:"\f5c4"}.bi-text-indent-left:before{content:"\f5c5"}.bi-text-indent-right:before{content:"\f5c6"}.bi-text-left:before{content:"\f5c7"}.bi-text-paragraph:before{content:"\f5c8"}.bi-text-right:before{content:"\f5c9"}.bi-textarea-resize:before{content:"\f5ca"}.bi-textarea-t:before{content:"\f5cb"}.bi-textarea:before{content:"\f5cc"}.bi-thermometer-half:before{content:"\f5cd"}.bi-thermometer-high:before{content:"\f5ce"}.bi-thermometer-low:before{content:"\f5cf"}.bi-thermometer-snow:before{content:"\f5d0"}.bi-thermometer-sun:before{content:"\f5d1"}.bi-thermometer:before{content:"\f5d2"}.bi-three-dots-vertical:before{content:"\f5d3"}.bi-three-dots:before{content:"\f5d4"}.bi-toggle-off:before{content:"\f5d5"}.bi-toggle-on:before{content:"\f5d6"}.bi-toggle2-off:before{content:"\f5d7"}.bi-toggle2-on:before{content:"\f5d8"}.bi-toggles:before{content:"\f5d9"}.bi-toggles2:before{content:"\f5da"}.bi-tools:before{content:"\f5db"}.bi-tornado:before{content:"\f5dc"}.bi-trash-fill:before{content:"\f5dd"}.bi-trash:before{content:"\f5de"}.bi-trash2-fill:before{content:"\f5df"}.bi-trash2:before{content:"\f5e0"}.bi-tree-fill:before{content:"\f5e1"}.bi-tree:before{content:"\f5e2"}.bi-triangle-fill:before{content:"\f5e3"}.bi-triangle-half:before{content:"\f5e4"}.bi-triangle:before{content:"\f5e5"}.bi-trophy-fill:before{content:"\f5e6"}.bi-trophy:before{content:"\f5e7"}.bi-tropical-storm:before{content:"\f5e8"}.bi-truck-flatbed:before{content:"\f5e9"}.bi-truck:before{content:"\f5ea"}.bi-tsunami:before{content:"\f5eb"}.bi-tv-fill:before{content:"\f5ec"}.bi-tv:before{content:"\f5ed"}.bi-twitch:before{content:"\f5ee"}.bi-twitter:before{content:"\f5ef"}.bi-type-bold:before{content:"\f5f0"}.bi-type-h1:before{content:"\f5f1"}.bi-type-h2:before{content:"\f5f2"}.bi-type-h3:before{content:"\f5f3"}.bi-type-italic:before{content:"\f5f4"}.bi-type-strikethrough:before{content:"\f5f5"}.bi-type-underline:before{content:"\f5f6"}.bi-type:before{content:"\f5f7"}.bi-ui-checks-grid:before{content:"\f5f8"}.bi-ui-checks:before{content:"\f5f9"}.bi-ui-radios-grid:before{content:"\f5fa"}.bi-ui-radios:before{content:"\f5fb"}.bi-umbrella-fill:before{content:"\f5fc"}.bi-umbrella:before{content:"\f5fd"}.bi-union:before{content:"\f5fe"}.bi-unlock-fill:before{content:"\f5ff"}.bi-unlock:before{content:"\f600"}.bi-upc-scan:before{content:"\f601"}.bi-upc:before{content:"\f602"}.bi-upload:before{content:"\f603"}.bi-vector-pen:before{content:"\f604"}.bi-view-list:before{content:"\f605"}.bi-view-stacked:before{content:"\f606"}.bi-vinyl-fill:before{content:"\f607"}.bi-vinyl:before{content:"\f608"}.bi-voicemail:before{content:"\f609"}.bi-volume-down-fill:before{content:"\f60a"}.bi-volume-down:before{content:"\f60b"}.bi-volume-mute-fill:before{content:"\f60c"}.bi-volume-mute:before{content:"\f60d"}.bi-volume-off-fill:before{content:"\f60e"}.bi-volume-off:before{content:"\f60f"}.bi-volume-up-fill:before{content:"\f610"}.bi-volume-up:before{content:"\f611"}.bi-vr:before{content:"\f612"}.bi-wallet-fill:before{content:"\f613"}.bi-wallet:before{content:"\f614"}.bi-wallet2:before{content:"\f615"}.bi-watch:before{content:"\f616"}.bi-water:before{content:"\f617"}.bi-whatsapp:before{content:"\f618"}.bi-wifi-1:before{content:"\f619"}.bi-wifi-2:before{content:"\f61a"}.bi-wifi-off:before{content:"\f61b"}.bi-wifi:before{content:"\f61c"}.bi-wind:before{content:"\f61d"}.bi-window-dock:before{content:"\f61e"}.bi-window-sidebar:before{content:"\f61f"}.bi-window:before{content:"\f620"}.bi-wrench:before{content:"\f621"}.bi-x-circle-fill:before{content:"\f622"}.bi-x-circle:before{content:"\f623"}.bi-x-diamond-fill:before{content:"\f624"}.bi-x-diamond:before{content:"\f625"}.bi-x-octagon-fill:before{content:"\f626"}.bi-x-octagon:before{content:"\f627"}.bi-x-square-fill:before{content:"\f628"}.bi-x-square:before{content:"\f629"}.bi-x:before{content:"\f62a"}.bi-youtube:before{content:"\f62b"}.bi-zoom-in:before{content:"\f62c"}.bi-zoom-out:before{content:"\f62d"}.bi-bank:before{content:"\f62e"}.bi-bank2:before{content:"\f62f"}.bi-bell-slash-fill:before{content:"\f630"}.bi-bell-slash:before{content:"\f631"}.bi-cash-coin:before{content:"\f632"}.bi-check-lg:before{content:"\f633"}.bi-coin:before{content:"\f634"}.bi-currency-bitcoin:before{content:"\f635"}.bi-currency-dollar:before{content:"\f636"}.bi-currency-euro:before{content:"\f637"}.bi-currency-exchange:before{content:"\f638"}.bi-currency-pound:before{content:"\f639"}.bi-currency-yen:before{content:"\f63a"}.bi-dash-lg:before{content:"\f63b"}.bi-exclamation-lg:before{content:"\f63c"}.bi-file-earmark-pdf-fill:before{content:"\f63d"}.bi-file-earmark-pdf:before{content:"\f63e"}.bi-file-pdf-fill:before{content:"\f63f"}.bi-file-pdf:before{content:"\f640"}.bi-gender-ambiguous:before{content:"\f641"}.bi-gender-female:before{content:"\f642"}.bi-gender-male:before{content:"\f643"}.bi-gender-trans:before{content:"\f644"}.bi-headset-vr:before{content:"\f645"}.bi-info-lg:before{content:"\f646"}.bi-mastodon:before{content:"\f647"}.bi-messenger:before{content:"\f648"}.bi-piggy-bank-fill:before{content:"\f649"}.bi-piggy-bank:before{content:"\f64a"}.bi-pin-map-fill:before{content:"\f64b"}.bi-pin-map:before{content:"\f64c"}.bi-plus-lg:before{content:"\f64d"}.bi-question-lg:before{content:"\f64e"}.bi-recycle:before{content:"\f64f"}.bi-reddit:before{content:"\f650"}.bi-safe-fill:before{content:"\f651"}.bi-safe2-fill:before{content:"\f652"}.bi-safe2:before{content:"\f653"}.bi-sd-card-fill:before{content:"\f654"}.bi-sd-card:before{content:"\f655"}.bi-skype:before{content:"\f656"}.bi-slash-lg:before{content:"\f657"}.bi-translate:before{content:"\f658"}.bi-x-lg:before{content:"\f659"}.bi-safe:before{content:"\f65a"}.bi-apple:before{content:"\f65b"}.bi-microsoft:before{content:"\f65d"}.bi-windows:before{content:"\f65e"}.bi-behance:before{content:"\f65c"}.bi-dribbble:before{content:"\f65f"}.bi-line:before{content:"\f660"}.bi-medium:before{content:"\f661"}.bi-paypal:before{content:"\f662"}.bi-pinterest:before{content:"\f663"}.bi-signal:before{content:"\f664"}.bi-snapchat:before{content:"\f665"}.bi-spotify:before{content:"\f666"}.bi-stack-overflow:before{content:"\f667"}.bi-strava:before{content:"\f668"}.bi-wordpress:before{content:"\f669"}.bi-vimeo:before{content:"\f66a"}.bi-activity:before{content:"\f66b"}.bi-easel2-fill:before{content:"\f66c"}.bi-easel2:before{content:"\f66d"}.bi-easel3-fill:before{content:"\f66e"}.bi-easel3:before{content:"\f66f"}.bi-fan:before{content:"\f670"}.bi-fingerprint:before{content:"\f671"}.bi-graph-down-arrow:before{content:"\f672"}.bi-graph-up-arrow:before{content:"\f673"}.bi-hypnotize:before{content:"\f674"}.bi-magic:before{content:"\f675"}.bi-person-rolodex:before{content:"\f676"}.bi-person-video:before{content:"\f677"}.bi-person-video2:before{content:"\f678"}.bi-person-video3:before{content:"\f679"}.bi-person-workspace:before{content:"\f67a"}.bi-radioactive:before{content:"\f67b"}.bi-webcam-fill:before{content:"\f67c"}.bi-webcam:before{content:"\f67d"}.bi-yin-yang:before{content:"\f67e"}.bi-bandaid-fill:before{content:"\f680"}.bi-bandaid:before{content:"\f681"}.bi-bluetooth:before{content:"\f682"}.bi-body-text:before{content:"\f683"}.bi-boombox:before{content:"\f684"}.bi-boxes:before{content:"\f685"}.bi-dpad-fill:before{content:"\f686"}.bi-dpad:before{content:"\f687"}.bi-ear-fill:before{content:"\f688"}.bi-ear:before{content:"\f689"}.bi-envelope-check-fill:before{content:"\f68b"}.bi-envelope-check:before{content:"\f68c"}.bi-envelope-dash-fill:before{content:"\f68e"}.bi-envelope-dash:before{content:"\f68f"}.bi-envelope-exclamation-fill:before{content:"\f691"}.bi-envelope-exclamation:before{content:"\f692"}.bi-envelope-plus-fill:before{content:"\f693"}.bi-envelope-plus:before{content:"\f694"}.bi-envelope-slash-fill:before{content:"\f696"}.bi-envelope-slash:before{content:"\f697"}.bi-envelope-x-fill:before{content:"\f699"}.bi-envelope-x:before{content:"\f69a"}.bi-explicit-fill:before{content:"\f69b"}.bi-explicit:before{content:"\f69c"}.bi-git:before{content:"\f69d"}.bi-infinity:before{content:"\f69e"}.bi-list-columns-reverse:before{content:"\f69f"}.bi-list-columns:before{content:"\f6a0"}.bi-meta:before{content:"\f6a1"}.bi-nintendo-switch:before{content:"\f6a4"}.bi-pc-display-horizontal:before{content:"\f6a5"}.bi-pc-display:before{content:"\f6a6"}.bi-pc-horizontal:before{content:"\f6a7"}.bi-pc:before{content:"\f6a8"}.bi-playstation:before{content:"\f6a9"}.bi-plus-slash-minus:before{content:"\f6aa"}.bi-projector-fill:before{content:"\f6ab"}.bi-projector:before{content:"\f6ac"}.bi-qr-code-scan:before{content:"\f6ad"}.bi-qr-code:before{content:"\f6ae"}.bi-quora:before{content:"\f6af"}.bi-quote:before{content:"\f6b0"}.bi-robot:before{content:"\f6b1"}.bi-send-check-fill:before{content:"\f6b2"}.bi-send-check:before{content:"\f6b3"}.bi-send-dash-fill:before{content:"\f6b4"}.bi-send-dash:before{content:"\f6b5"}.bi-send-exclamation-fill:before{content:"\f6b7"}.bi-send-exclamation:before{content:"\f6b8"}.bi-send-fill:before{content:"\f6b9"}.bi-send-plus-fill:before{content:"\f6ba"}.bi-send-plus:before{content:"\f6bb"}.bi-send-slash-fill:before{content:"\f6bc"}.bi-send-slash:before{content:"\f6bd"}.bi-send-x-fill:before{content:"\f6be"}.bi-send-x:before{content:"\f6bf"}.bi-send:before{content:"\f6c0"}.bi-steam:before{content:"\f6c1"}.bi-terminal-dash:before{content:"\f6c3"}.bi-terminal-plus:before{content:"\f6c4"}.bi-terminal-split:before{content:"\f6c5"}.bi-ticket-detailed-fill:before{content:"\f6c6"}.bi-ticket-detailed:before{content:"\f6c7"}.bi-ticket-fill:before{content:"\f6c8"}.bi-ticket-perforated-fill:before{content:"\f6c9"}.bi-ticket-perforated:before{content:"\f6ca"}.bi-ticket:before{content:"\f6cb"}.bi-tiktok:before{content:"\f6cc"}.bi-window-dash:before{content:"\f6cd"}.bi-window-desktop:before{content:"\f6ce"}.bi-window-fullscreen:before{content:"\f6cf"}.bi-window-plus:before{content:"\f6d0"}.bi-window-split:before{content:"\f6d1"}.bi-window-stack:before{content:"\f6d2"}.bi-window-x:before{content:"\f6d3"}.bi-xbox:before{content:"\f6d4"}.bi-ethernet:before{content:"\f6d5"}.bi-hdmi-fill:before{content:"\f6d6"}.bi-hdmi:before{content:"\f6d7"}.bi-usb-c-fill:before{content:"\f6d8"}.bi-usb-c:before{content:"\f6d9"}.bi-usb-fill:before{content:"\f6da"}.bi-usb-plug-fill:before{content:"\f6db"}.bi-usb-plug:before{content:"\f6dc"}.bi-usb-symbol:before{content:"\f6dd"}.bi-usb:before{content:"\f6de"}.bi-boombox-fill:before{content:"\f6df"}.bi-displayport:before{content:"\f6e1"}.bi-gpu-card:before{content:"\f6e2"}.bi-memory:before{content:"\f6e3"}.bi-modem-fill:before{content:"\f6e4"}.bi-modem:before{content:"\f6e5"}.bi-motherboard-fill:before{content:"\f6e6"}.bi-motherboard:before{content:"\f6e7"}.bi-optical-audio-fill:before{content:"\f6e8"}.bi-optical-audio:before{content:"\f6e9"}.bi-pci-card:before{content:"\f6ea"}.bi-router-fill:before{content:"\f6eb"}.bi-router:before{content:"\f6ec"}.bi-thunderbolt-fill:before{content:"\f6ef"}.bi-thunderbolt:before{content:"\f6f0"}.bi-usb-drive-fill:before{content:"\f6f1"}.bi-usb-drive:before{content:"\f6f2"}.bi-usb-micro-fill:before{content:"\f6f3"}.bi-usb-micro:before{content:"\f6f4"}.bi-usb-mini-fill:before{content:"\f6f5"}.bi-usb-mini:before{content:"\f6f6"}.bi-cloud-haze2:before{content:"\f6f7"}.bi-device-hdd-fill:before{content:"\f6f8"}.bi-device-hdd:before{content:"\f6f9"}.bi-device-ssd-fill:before{content:"\f6fa"}.bi-device-ssd:before{content:"\f6fb"}.bi-displayport-fill:before{content:"\f6fc"}.bi-mortarboard-fill:before{content:"\f6fd"}.bi-mortarboard:before{content:"\f6fe"}.bi-terminal-x:before{content:"\f6ff"}.bi-arrow-through-heart-fill:before{content:"\f700"}.bi-arrow-through-heart:before{content:"\f701"}.bi-badge-sd-fill:before{content:"\f702"}.bi-badge-sd:before{content:"\f703"}.bi-bag-heart-fill:before{content:"\f704"}.bi-bag-heart:before{content:"\f705"}.bi-balloon-fill:before{content:"\f706"}.bi-balloon-heart-fill:before{content:"\f707"}.bi-balloon-heart:before{content:"\f708"}.bi-balloon:before{content:"\f709"}.bi-box2-fill:before{content:"\f70a"}.bi-box2-heart-fill:before{content:"\f70b"}.bi-box2-heart:before{content:"\f70c"}.bi-box2:before{content:"\f70d"}.bi-braces-asterisk:before{content:"\f70e"}.bi-calendar-heart-fill:before{content:"\f70f"}.bi-calendar-heart:before{content:"\f710"}.bi-calendar2-heart-fill:before{content:"\f711"}.bi-calendar2-heart:before{content:"\f712"}.bi-chat-heart-fill:before{content:"\f713"}.bi-chat-heart:before{content:"\f714"}.bi-chat-left-heart-fill:before{content:"\f715"}.bi-chat-left-heart:before{content:"\f716"}.bi-chat-right-heart-fill:before{content:"\f717"}.bi-chat-right-heart:before{content:"\f718"}.bi-chat-square-heart-fill:before{content:"\f719"}.bi-chat-square-heart:before{content:"\f71a"}.bi-clipboard-check-fill:before{content:"\f71b"}.bi-clipboard-data-fill:before{content:"\f71c"}.bi-clipboard-fill:before{content:"\f71d"}.bi-clipboard-heart-fill:before{content:"\f71e"}.bi-clipboard-heart:before{content:"\f71f"}.bi-clipboard-minus-fill:before{content:"\f720"}.bi-clipboard-plus-fill:before{content:"\f721"}.bi-clipboard-pulse:before{content:"\f722"}.bi-clipboard-x-fill:before{content:"\f723"}.bi-clipboard2-check-fill:before{content:"\f724"}.bi-clipboard2-check:before{content:"\f725"}.bi-clipboard2-data-fill:before{content:"\f726"}.bi-clipboard2-data:before{content:"\f727"}.bi-clipboard2-fill:before{content:"\f728"}.bi-clipboard2-heart-fill:before{content:"\f729"}.bi-clipboard2-heart:before{content:"\f72a"}.bi-clipboard2-minus-fill:before{content:"\f72b"}.bi-clipboard2-minus:before{content:"\f72c"}.bi-clipboard2-plus-fill:before{content:"\f72d"}.bi-clipboard2-plus:before{content:"\f72e"}.bi-clipboard2-pulse-fill:before{content:"\f72f"}.bi-clipboard2-pulse:before{content:"\f730"}.bi-clipboard2-x-fill:before{content:"\f731"}.bi-clipboard2-x:before{content:"\f732"}.bi-clipboard2:before{content:"\f733"}.bi-emoji-kiss-fill:before{content:"\f734"}.bi-emoji-kiss:before{content:"\f735"}.bi-envelope-heart-fill:before{content:"\f736"}.bi-envelope-heart:before{content:"\f737"}.bi-envelope-open-heart-fill:before{content:"\f738"}.bi-envelope-open-heart:before{content:"\f739"}.bi-envelope-paper-fill:before{content:"\f73a"}.bi-envelope-paper-heart-fill:before{content:"\f73b"}.bi-envelope-paper-heart:before{content:"\f73c"}.bi-envelope-paper:before{content:"\f73d"}.bi-filetype-aac:before{content:"\f73e"}.bi-filetype-ai:before{content:"\f73f"}.bi-filetype-bmp:before{content:"\f740"}.bi-filetype-cs:before{content:"\f741"}.bi-filetype-css:before{content:"\f742"}.bi-filetype-csv:before{content:"\f743"}.bi-filetype-doc:before{content:"\f744"}.bi-filetype-docx:before{content:"\f745"}.bi-filetype-exe:before{content:"\f746"}.bi-filetype-gif:before{content:"\f747"}.bi-filetype-heic:before{content:"\f748"}.bi-filetype-html:before{content:"\f749"}.bi-filetype-java:before{content:"\f74a"}.bi-filetype-jpg:before{content:"\f74b"}.bi-filetype-js:before{content:"\f74c"}.bi-filetype-jsx:before{content:"\f74d"}.bi-filetype-key:before{content:"\f74e"}.bi-filetype-m4p:before{content:"\f74f"}.bi-filetype-md:before{content:"\f750"}.bi-filetype-mdx:before{content:"\f751"}.bi-filetype-mov:before{content:"\f752"}.bi-filetype-mp3:before{content:"\f753"}.bi-filetype-mp4:before{content:"\f754"}.bi-filetype-otf:before{content:"\f755"}.bi-filetype-pdf:before{content:"\f756"}.bi-filetype-php:before{content:"\f757"}.bi-filetype-png:before{content:"\f758"}.bi-filetype-ppt:before{content:"\f75a"}.bi-filetype-psd:before{content:"\f75b"}.bi-filetype-py:before{content:"\f75c"}.bi-filetype-raw:before{content:"\f75d"}.bi-filetype-rb:before{content:"\f75e"}.bi-filetype-sass:before{content:"\f75f"}.bi-filetype-scss:before{content:"\f760"}.bi-filetype-sh:before{content:"\f761"}.bi-filetype-svg:before{content:"\f762"}.bi-filetype-tiff:before{content:"\f763"}.bi-filetype-tsx:before{content:"\f764"}.bi-filetype-ttf:before{content:"\f765"}.bi-filetype-txt:before{content:"\f766"}.bi-filetype-wav:before{content:"\f767"}.bi-filetype-woff:before{content:"\f768"}.bi-filetype-xls:before{content:"\f76a"}.bi-filetype-xml:before{content:"\f76b"}.bi-filetype-yml:before{content:"\f76c"}.bi-heart-arrow:before{content:"\f76d"}.bi-heart-pulse-fill:before{content:"\f76e"}.bi-heart-pulse:before{content:"\f76f"}.bi-heartbreak-fill:before{content:"\f770"}.bi-heartbreak:before{content:"\f771"}.bi-hearts:before{content:"\f772"}.bi-hospital-fill:before{content:"\f773"}.bi-hospital:before{content:"\f774"}.bi-house-heart-fill:before{content:"\f775"}.bi-house-heart:before{content:"\f776"}.bi-incognito:before{content:"\f777"}.bi-magnet-fill:before{content:"\f778"}.bi-magnet:before{content:"\f779"}.bi-person-heart:before{content:"\f77a"}.bi-person-hearts:before{content:"\f77b"}.bi-phone-flip:before{content:"\f77c"}.bi-plugin:before{content:"\f77d"}.bi-postage-fill:before{content:"\f77e"}.bi-postage-heart-fill:before{content:"\f77f"}.bi-postage-heart:before{content:"\f780"}.bi-postage:before{content:"\f781"}.bi-postcard-fill:before{content:"\f782"}.bi-postcard-heart-fill:before{content:"\f783"}.bi-postcard-heart:before{content:"\f784"}.bi-postcard:before{content:"\f785"}.bi-search-heart-fill:before{content:"\f786"}.bi-search-heart:before{content:"\f787"}.bi-sliders2-vertical:before{content:"\f788"}.bi-sliders2:before{content:"\f789"}.bi-trash3-fill:before{content:"\f78a"}.bi-trash3:before{content:"\f78b"}.bi-valentine:before{content:"\f78c"}.bi-valentine2:before{content:"\f78d"}.bi-wrench-adjustable-circle-fill:before{content:"\f78e"}.bi-wrench-adjustable-circle:before{content:"\f78f"}.bi-wrench-adjustable:before{content:"\f790"}.bi-filetype-json:before{content:"\f791"}.bi-filetype-pptx:before{content:"\f792"}.bi-filetype-xlsx:before{content:"\f793"}.bi-1-circle-fill:before{content:"\f796"}.bi-1-circle:before{content:"\f797"}.bi-1-square-fill:before{content:"\f798"}.bi-1-square:before{content:"\f799"}.bi-2-circle-fill:before{content:"\f79c"}.bi-2-circle:before{content:"\f79d"}.bi-2-square-fill:before{content:"\f79e"}.bi-2-square:before{content:"\f79f"}.bi-3-circle-fill:before{content:"\f7a2"}.bi-3-circle:before{content:"\f7a3"}.bi-3-square-fill:before{content:"\f7a4"}.bi-3-square:before{content:"\f7a5"}.bi-4-circle-fill:before{content:"\f7a8"}.bi-4-circle:before{content:"\f7a9"}.bi-4-square-fill:before{content:"\f7aa"}.bi-4-square:before{content:"\f7ab"}.bi-5-circle-fill:before{content:"\f7ae"}.bi-5-circle:before{content:"\f7af"}.bi-5-square-fill:before{content:"\f7b0"}.bi-5-square:before{content:"\f7b1"}.bi-6-circle-fill:before{content:"\f7b4"}.bi-6-circle:before{content:"\f7b5"}.bi-6-square-fill:before{content:"\f7b6"}.bi-6-square:before{content:"\f7b7"}.bi-7-circle-fill:before{content:"\f7ba"}.bi-7-circle:before{content:"\f7bb"}.bi-7-square-fill:before{content:"\f7bc"}.bi-7-square:before{content:"\f7bd"}.bi-8-circle-fill:before{content:"\f7c0"}.bi-8-circle:before{content:"\f7c1"}.bi-8-square-fill:before{content:"\f7c2"}.bi-8-square:before{content:"\f7c3"}.bi-9-circle-fill:before{content:"\f7c6"}.bi-9-circle:before{content:"\f7c7"}.bi-9-square-fill:before{content:"\f7c8"}.bi-9-square:before{content:"\f7c9"}.bi-airplane-engines-fill:before{content:"\f7ca"}.bi-airplane-engines:before{content:"\f7cb"}.bi-airplane-fill:before{content:"\f7cc"}.bi-airplane:before{content:"\f7cd"}.bi-alexa:before{content:"\f7ce"}.bi-alipay:before{content:"\f7cf"}.bi-android:before{content:"\f7d0"}.bi-android2:before{content:"\f7d1"}.bi-box-fill:before{content:"\f7d2"}.bi-box-seam-fill:before{content:"\f7d3"}.bi-browser-chrome:before{content:"\f7d4"}.bi-browser-edge:before{content:"\f7d5"}.bi-browser-firefox:before{content:"\f7d6"}.bi-browser-safari:before{content:"\f7d7"}.bi-c-circle-fill:before{content:"\f7da"}.bi-c-circle:before{content:"\f7db"}.bi-c-square-fill:before{content:"\f7dc"}.bi-c-square:before{content:"\f7dd"}.bi-capsule-pill:before{content:"\f7de"}.bi-capsule:before{content:"\f7df"}.bi-car-front-fill:before{content:"\f7e0"}.bi-car-front:before{content:"\f7e1"}.bi-cassette-fill:before{content:"\f7e2"}.bi-cassette:before{content:"\f7e3"}.bi-cc-circle-fill:before{content:"\f7e6"}.bi-cc-circle:before{content:"\f7e7"}.bi-cc-square-fill:before{content:"\f7e8"}.bi-cc-square:before{content:"\f7e9"}.bi-cup-hot-fill:before{content:"\f7ea"}.bi-cup-hot:before{content:"\f7eb"}.bi-currency-rupee:before{content:"\f7ec"}.bi-dropbox:before{content:"\f7ed"}.bi-escape:before{content:"\f7ee"}.bi-fast-forward-btn-fill:before{content:"\f7ef"}.bi-fast-forward-btn:before{content:"\f7f0"}.bi-fast-forward-circle-fill:before{content:"\f7f1"}.bi-fast-forward-circle:before{content:"\f7f2"}.bi-fast-forward-fill:before{content:"\f7f3"}.bi-fast-forward:before{content:"\f7f4"}.bi-filetype-sql:before{content:"\f7f5"}.bi-fire:before{content:"\f7f6"}.bi-google-play:before{content:"\f7f7"}.bi-h-circle-fill:before{content:"\f7fa"}.bi-h-circle:before{content:"\f7fb"}.bi-h-square-fill:before{content:"\f7fc"}.bi-h-square:before{content:"\f7fd"}.bi-indent:before{content:"\f7fe"}.bi-lungs-fill:before{content:"\f7ff"}.bi-lungs:before{content:"\f800"}.bi-microsoft-teams:before{content:"\f801"}.bi-p-circle-fill:before{content:"\f804"}.bi-p-circle:before{content:"\f805"}.bi-p-square-fill:before{content:"\f806"}.bi-p-square:before{content:"\f807"}.bi-pass-fill:before{content:"\f808"}.bi-pass:before{content:"\f809"}.bi-prescription:before{content:"\f80a"}.bi-prescription2:before{content:"\f80b"}.bi-r-circle-fill:before{content:"\f80e"}.bi-r-circle:before{content:"\f80f"}.bi-r-square-fill:before{content:"\f810"}.bi-r-square:before{content:"\f811"}.bi-repeat-1:before{content:"\f812"}.bi-repeat:before{content:"\f813"}.bi-rewind-btn-fill:before{content:"\f814"}.bi-rewind-btn:before{content:"\f815"}.bi-rewind-circle-fill:before{content:"\f816"}.bi-rewind-circle:before{content:"\f817"}.bi-rewind-fill:before{content:"\f818"}.bi-rewind:before{content:"\f819"}.bi-train-freight-front-fill:before{content:"\f81a"}.bi-train-freight-front:before{content:"\f81b"}.bi-train-front-fill:before{content:"\f81c"}.bi-train-front:before{content:"\f81d"}.bi-train-lightrail-front-fill:before{content:"\f81e"}.bi-train-lightrail-front:before{content:"\f81f"}.bi-truck-front-fill:before{content:"\f820"}.bi-truck-front:before{content:"\f821"}.bi-ubuntu:before{content:"\f822"}.bi-unindent:before{content:"\f823"}.bi-unity:before{content:"\f824"}.bi-universal-access-circle:before{content:"\f825"}.bi-universal-access:before{content:"\f826"}.bi-virus:before{content:"\f827"}.bi-virus2:before{content:"\f828"}.bi-wechat:before{content:"\f829"}.bi-yelp:before{content:"\f82a"}.bi-sign-stop-fill:before{content:"\f82b"}.bi-sign-stop-lights-fill:before{content:"\f82c"}.bi-sign-stop-lights:before{content:"\f82d"}.bi-sign-stop:before{content:"\f82e"}.bi-sign-turn-left-fill:before{content:"\f82f"}.bi-sign-turn-left:before{content:"\f830"}.bi-sign-turn-right-fill:before{content:"\f831"}.bi-sign-turn-right:before{content:"\f832"}.bi-sign-turn-slight-left-fill:before{content:"\f833"}.bi-sign-turn-slight-left:before{content:"\f834"}.bi-sign-turn-slight-right-fill:before{content:"\f835"}.bi-sign-turn-slight-right:before{content:"\f836"}.bi-sign-yield-fill:before{content:"\f837"}.bi-sign-yield:before{content:"\f838"}.bi-ev-station-fill:before{content:"\f839"}.bi-ev-station:before{content:"\f83a"}.bi-fuel-pump-diesel-fill:before{content:"\f83b"}.bi-fuel-pump-diesel:before{content:"\f83c"}.bi-fuel-pump-fill:before{content:"\f83d"}.bi-fuel-pump:before{content:"\f83e"}.bi-0-circle-fill:before{content:"\f83f"}.bi-0-circle:before{content:"\f840"}.bi-0-square-fill:before{content:"\f841"}.bi-0-square:before{content:"\f842"}.bi-rocket-fill:before{content:"\f843"}.bi-rocket-takeoff-fill:before{content:"\f844"}.bi-rocket-takeoff:before{content:"\f845"}.bi-rocket:before{content:"\f846"}.bi-stripe:before{content:"\f847"}.bi-subscript:before{content:"\f848"}.bi-superscript:before{content:"\f849"}.bi-trello:before{content:"\f84a"}.bi-envelope-at-fill:before{content:"\f84b"}.bi-envelope-at:before{content:"\f84c"}.bi-regex:before{content:"\f84d"}.bi-text-wrap:before{content:"\f84e"}.bi-sign-dead-end-fill:before{content:"\f84f"}.bi-sign-dead-end:before{content:"\f850"}.bi-sign-do-not-enter-fill:before{content:"\f851"}.bi-sign-do-not-enter:before{content:"\f852"}.bi-sign-intersection-fill:before{content:"\f853"}.bi-sign-intersection-side-fill:before{content:"\f854"}.bi-sign-intersection-side:before{content:"\f855"}.bi-sign-intersection-t-fill:before{content:"\f856"}.bi-sign-intersection-t:before{content:"\f857"}.bi-sign-intersection-y-fill:before{content:"\f858"}.bi-sign-intersection-y:before{content:"\f859"}.bi-sign-intersection:before{content:"\f85a"}.bi-sign-merge-left-fill:before{content:"\f85b"}.bi-sign-merge-left:before{content:"\f85c"}.bi-sign-merge-right-fill:before{content:"\f85d"}.bi-sign-merge-right:before{content:"\f85e"}.bi-sign-no-left-turn-fill:before{content:"\f85f"}.bi-sign-no-left-turn:before{content:"\f860"}.bi-sign-no-parking-fill:before{content:"\f861"}.bi-sign-no-parking:before{content:"\f862"}.bi-sign-no-right-turn-fill:before{content:"\f863"}.bi-sign-no-right-turn:before{content:"\f864"}.bi-sign-railroad-fill:before{content:"\f865"}.bi-sign-railroad:before{content:"\f866"}.bi-building-add:before{content:"\f867"}.bi-building-check:before{content:"\f868"}.bi-building-dash:before{content:"\f869"}.bi-building-down:before{content:"\f86a"}.bi-building-exclamation:before{content:"\f86b"}.bi-building-fill-add:before{content:"\f86c"}.bi-building-fill-check:before{content:"\f86d"}.bi-building-fill-dash:before{content:"\f86e"}.bi-building-fill-down:before{content:"\f86f"}.bi-building-fill-exclamation:before{content:"\f870"}.bi-building-fill-gear:before{content:"\f871"}.bi-building-fill-lock:before{content:"\f872"}.bi-building-fill-slash:before{content:"\f873"}.bi-building-fill-up:before{content:"\f874"}.bi-building-fill-x:before{content:"\f875"}.bi-building-fill:before{content:"\f876"}.bi-building-gear:before{content:"\f877"}.bi-building-lock:before{content:"\f878"}.bi-building-slash:before{content:"\f879"}.bi-building-up:before{content:"\f87a"}.bi-building-x:before{content:"\f87b"}.bi-buildings-fill:before{content:"\f87c"}.bi-buildings:before{content:"\f87d"}.bi-bus-front-fill:before{content:"\f87e"}.bi-bus-front:before{content:"\f87f"}.bi-ev-front-fill:before{content:"\f880"}.bi-ev-front:before{content:"\f881"}.bi-globe-americas:before{content:"\f882"}.bi-globe-asia-australia:before{content:"\f883"}.bi-globe-central-south-asia:before{content:"\f884"}.bi-globe-europe-africa:before{content:"\f885"}.bi-house-add-fill:before{content:"\f886"}.bi-house-add:before{content:"\f887"}.bi-house-check-fill:before{content:"\f888"}.bi-house-check:before{content:"\f889"}.bi-house-dash-fill:before{content:"\f88a"}.bi-house-dash:before{content:"\f88b"}.bi-house-down-fill:before{content:"\f88c"}.bi-house-down:before{content:"\f88d"}.bi-house-exclamation-fill:before{content:"\f88e"}.bi-house-exclamation:before{content:"\f88f"}.bi-house-gear-fill:before{content:"\f890"}.bi-house-gear:before{content:"\f891"}.bi-house-lock-fill:before{content:"\f892"}.bi-house-lock:before{content:"\f893"}.bi-house-slash-fill:before{content:"\f894"}.bi-house-slash:before{content:"\f895"}.bi-house-up-fill:before{content:"\f896"}.bi-house-up:before{content:"\f897"}.bi-house-x-fill:before{content:"\f898"}.bi-house-x:before{content:"\f899"}.bi-person-add:before{content:"\f89a"}.bi-person-down:before{content:"\f89b"}.bi-person-exclamation:before{content:"\f89c"}.bi-person-fill-add:before{content:"\f89d"}.bi-person-fill-check:before{content:"\f89e"}.bi-person-fill-dash:before{content:"\f89f"}.bi-person-fill-down:before{content:"\f8a0"}.bi-person-fill-exclamation:before{content:"\f8a1"}.bi-person-fill-gear:before{content:"\f8a2"}.bi-person-fill-lock:before{content:"\f8a3"}.bi-person-fill-slash:before{content:"\f8a4"}.bi-person-fill-up:before{content:"\f8a5"}.bi-person-fill-x:before{content:"\f8a6"}.bi-person-gear:before{content:"\f8a7"}.bi-person-lock:before{content:"\f8a8"}.bi-person-slash:before{content:"\f8a9"}.bi-person-up:before{content:"\f8aa"}.bi-scooter:before{content:"\f8ab"}.bi-taxi-front-fill:before{content:"\f8ac"}.bi-taxi-front:before{content:"\f8ad"}.bi-amd:before{content:"\f8ae"}.bi-database-add:before{content:"\f8af"}.bi-database-check:before{content:"\f8b0"}.bi-database-dash:before{content:"\f8b1"}.bi-database-down:before{content:"\f8b2"}.bi-database-exclamation:before{content:"\f8b3"}.bi-database-fill-add:before{content:"\f8b4"}.bi-database-fill-check:before{content:"\f8b5"}.bi-database-fill-dash:before{content:"\f8b6"}.bi-database-fill-down:before{content:"\f8b7"}.bi-database-fill-exclamation:before{content:"\f8b8"}.bi-database-fill-gear:before{content:"\f8b9"}.bi-database-fill-lock:before{content:"\f8ba"}.bi-database-fill-slash:before{content:"\f8bb"}.bi-database-fill-up:before{content:"\f8bc"}.bi-database-fill-x:before{content:"\f8bd"}.bi-database-fill:before{content:"\f8be"}.bi-database-gear:before{content:"\f8bf"}.bi-database-lock:before{content:"\f8c0"}.bi-database-slash:before{content:"\f8c1"}.bi-database-up:before{content:"\f8c2"}.bi-database-x:before{content:"\f8c3"}.bi-database:before{content:"\f8c4"}.bi-houses-fill:before{content:"\f8c5"}.bi-houses:before{content:"\f8c6"}.bi-nvidia:before{content:"\f8c7"}.bi-person-vcard-fill:before{content:"\f8c8"}.bi-person-vcard:before{content:"\f8c9"}.bi-sina-weibo:before{content:"\f8ca"}.bi-tencent-qq:before{content:"\f8cb"}.bi-wikipedia:before{content:"\f8cc"} diff --git a/themes/demo/assets/vendor/bootstrap-icons/bootstrap-icons.scss b/themes/demo/assets/vendor/bootstrap-icons/bootstrap-icons.scss new file mode 100644 index 0000000..e041b04 --- /dev/null +++ b/themes/demo/assets/vendor/bootstrap-icons/bootstrap-icons.scss @@ -0,0 +1,5 @@ +// +// Bring in Bootstrap Icons +// + +@import "bootstrap-icons/font/bootstrap-icons"; diff --git a/themes/demo/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff b/themes/demo/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff new file mode 100644 index 0000000..6e72a59 Binary files /dev/null and b/themes/demo/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff differ diff --git a/themes/demo/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 b/themes/demo/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 new file mode 100644 index 0000000..3b957d5 Binary files /dev/null and b/themes/demo/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 differ diff --git a/themes/demo/assets/vendor/bootstrap/bootstrap.css b/themes/demo/assets/vendor/bootstrap/bootstrap.css new file mode 100644 index 0000000..53ea22f --- /dev/null +++ b/themes/demo/assets/vendor/bootstrap/bootstrap.css @@ -0,0 +1,6 @@ +@charset "UTF-8"; +/*! + * Bootstrap v5.3.0 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg,hsla(0,0%,100%,.15),hsla(0,0%,100%,0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33,37,41,.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33,37,41,.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0,0,0,.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0,0,0,.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0,0,0,.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0,0,0,.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0,0,0,.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13,110,253,.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{--bs-body-color:#adb5bd;--bs-body-color-rgb:173,181,189;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(173,181,189,.75);--bs-secondary-color-rgb:173,181,189;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(173,181,189,.5);--bs-tertiary-color-rgb:173,181,189;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-border-color:#495057;--bs-border-color-translucent:hsla(0,0%,100%,.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f;color-scheme:dark}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--bs-body-bg);color:var(--bs-body-color);font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);margin:0;text-align:var(--bs-body-text-align)}hr{border:0;border-top:var(--bs-border-width) solid;color:inherit;margin:1rem 0;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:var(--bs-heading-color);font-weight:500;line-height:1.2;margin-bottom:.5rem;margin-top:0}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-bottom:1rem;margin-top:0}abbr[title]{cursor:help;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-left:2rem}dl,ol,ul{margin-bottom:1rem;margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{background-color:var(--bs-highlight-bg);padding:.1875em}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;font-size:.875em;margin-bottom:1rem;margin-top:0;overflow:auto}pre code{color:inherit;font-size:inherit;word-break:normal}code{word-wrap:break-word;color:var(--bs-code-color);font-size:.875em}a>code{color:inherit}kbd{background-color:var(--bs-body-color);border-radius:.25rem;color:var(--bs-body-bg);font-size:.875em;padding:.1875rem .375rem}kbd kbd{font-size:1em;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{border-collapse:collapse;caption-side:bottom}caption{color:var(--bs-secondary-color);padding-bottom:.5rem;padding-top:.5rem;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border:0 solid;border-color:inherit}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;margin:0;min-width:0;padding:0}legend{float:left;font-size:calc(1.275rem + .3vw);line-height:inherit;margin-bottom:.5rem;padding:0;width:100%}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::file-selector-button{-webkit-appearance:button;font:inherit}output{display:inline-block}iframe{border:0}summary{cursor:pointer;display:list-item}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{font-size:1.25rem;margin-bottom:1rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{color:#6c757d;font-size:.875em;margin-bottom:1rem;margin-top:-1rem}.blockquote-footer:before{content:"— "}.img-fluid,.img-thumbnail{height:auto;max-width:100%}.img-thumbnail{background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);padding:.25rem}.figure{display:inline-block}.figure-img{line-height:1;margin-bottom:.5rem}.figure-caption{color:var(--bs-secondary-color);font-size:.875em}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;margin-left:auto;margin-right:auto;padding-left:calc(var(--bs-gutter-x)*.5);padding-right:calc(var(--bs-gutter-x)*.5);width:100%}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-left:calc(var(--bs-gutter-x)*-.5);margin-right:calc(var(--bs-gutter-x)*-.5);margin-top:calc(var(--bs-gutter-y)*-1)}.row>*{flex-shrink:0;margin-top:var(--bs-gutter-y);max-width:100%;padding-left:calc(var(--bs-gutter-x)*.5);padding-right:calc(var(--bs-gutter-x)*.5);width:100%}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-body-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:rgba(0,0,0,.05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0,0,0,.1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(0,0,0,.075);border-color:var(--bs-table-border-color);margin-bottom:1rem;vertical-align:top;width:100%}.table>:not(caption)>*>*{background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)));color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));padding:.5rem}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width)*2) solid}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped-columns>:not(caption)>tr>:nth-child(2n),.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#bacbe6;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000}.table-primary,.table-secondary{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#cbccce;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#bcd0c7;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000}.table-info,.table-success{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#badce3;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#e6dbb9;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000}.table-danger,.table-warning{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#dfc2c4;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#dfe0e1;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000}.table-dark,.table-light{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#373b3e;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (max-width:575.98px){.table-responsive-sm{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:767.98px){.table-responsive-md{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:991.98px){.table-responsive-lg{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1199.98px){.table-responsive-xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1399.98px){.table-responsive-xxl{-webkit-overflow-scrolling:touch;overflow-x:auto}}.form-label{margin-bottom:.5rem}.col-form-label{font-size:inherit;line-height:1.5;margin-bottom:0;padding-bottom:calc(.375rem + var(--bs-border-width));padding-top:calc(.375rem + var(--bs-border-width))}.col-form-label-lg{font-size:1.25rem;padding-bottom:calc(.5rem + var(--bs-border-width));padding-top:calc(.5rem + var(--bs-border-width))}.col-form-label-sm{font-size:.875rem;padding-bottom:calc(.25rem + var(--bs-border-width));padding-top:calc(.25rem + var(--bs-border-width))}.form-text{color:var(--bs-secondary-color);font-size:.875em;margin-top:.25rem}.form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-clip:padding-box;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);color:var(--bs-body-color);display:block;font-size:1rem;font-weight:400;line-height:1.5;padding:.375rem .75rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{background-color:var(--bs-body-bg);border-color:#86b7fe;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);color:var(--bs-body-color);outline:0}.form-control::-webkit-date-and-time-value{height:1.5em;margin:0;min-width:85px}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:-ms-input-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{-webkit-margin-end:.75rem;background-color:var(--bs-tertiary-bg);border:0 solid;border-color:inherit;border-inline-end-width:var(--bs-border-width);border-radius:0;color:var(--bs-body-color);margin:-.375rem -.75rem;margin-inline-end:.75rem;padding:.375rem .75rem;pointer-events:none;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{-webkit-margin-end:.75rem;background-color:var(--bs-tertiary-bg);border:0 solid;border-color:inherit;border-inline-end-width:var(--bs-border-width);border-radius:0;color:var(--bs-body-color);margin:-.375rem -.75rem;margin-inline-end:.75rem;padding:.375rem .75rem;pointer-events:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0;color:var(--bs-body-color);display:block;line-height:1.5;margin-bottom:0;padding:.375rem 0;width:100%}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-left:0;padding-right:0}.form-control-sm{border-radius:var(--bs-border-radius-sm);font-size:.875rem;min-height:calc(1.5em + .5rem + var(--bs-border-width)*2);padding:.25rem .5rem}.form-control-sm::-webkit-file-upload-button{-webkit-margin-end:.5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem;padding:.25rem .5rem}.form-control-sm::file-selector-button{-webkit-margin-end:.5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem;padding:.25rem .5rem}.form-control-lg{border-radius:var(--bs-border-radius-lg);font-size:1.25rem;min-height:calc(1.5em + 1rem + var(--bs-border-width)*2);padding:.5rem 1rem}.form-control-lg::-webkit-file-upload-button{-webkit-margin-end:1rem;margin:-.5rem -1rem;margin-inline-end:1rem;padding:.5rem 1rem}.form-control-lg::file-selector-button{-webkit-margin-end:1rem;margin:-.5rem -1rem;margin-inline-end:1rem;padding:.5rem 1rem}textarea.form-control{min-height:calc(1.5em + .75rem + var(--bs-border-width)*2)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + var(--bs-border-width)*2)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + var(--bs-border-width)*2)}.form-control-color{height:calc(1.5em + .75rem + var(--bs-border-width)*2);padding:.375rem;width:3rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + var(--bs-border-width)*2)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + var(--bs-border-width)*2)}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-position:right .75rem center;background-repeat:no-repeat;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);color:var(--bs-body-color);display:block;font-size:1rem;font-weight:400;line-height:1.5;padding:.375rem 2.25rem .375rem .75rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);outline:0}.form-select[multiple],.form-select[size]:not([size="1"]){background-image:none;padding-right:.75rem}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{border-radius:var(--bs-border-radius-sm);font-size:.875rem;padding-bottom:.25rem;padding-left:.5rem;padding-top:.25rem}.form-select-lg{border-radius:var(--bs-border-radius-lg);font-size:1.25rem;padding-bottom:.5rem;padding-left:1rem;padding-top:.5rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23adb5bd' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E")}.form-check{display:block;margin-bottom:.125rem;min-height:1.5rem;padding-left:1.5em}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-left:0;padding-right:1.5em;text-align:right}.form-check-reverse .form-check-input{float:right;margin-left:0;margin-right:-1.5em}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);color-adjust:exact;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-position:50%;background-repeat:no-repeat;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);height:1em;margin-top:.25em;-webkit-print-color-adjust:exact;print-color-adjust:exact;vertical-align:top;width:1em}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);outline:0}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='2' fill='%23fff'/%3E%3C/svg%3E")}.form-check-input[type=checkbox]:indeterminate{--bs-form-check-bg-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3E%3C/svg%3E");background-color:#0d6efd;border-color:#0d6efd}.form-check-input:disabled{filter:none;opacity:.5;pointer-events:none}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(0, 0, 0, 0.25)'/%3E%3C/svg%3E");background-image:var(--bs-form-switch-bg);background-position:0;border-radius:2em;margin-left:-2.5em;transition:background-position .15s ease-in-out;width:2em}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%2386b7fe'/%3E%3C/svg%3E")}.form-switch .form-check-input:checked{--bs-form-switch-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E");background-position:100%}.form-switch.form-check-reverse{padding-left:0;padding-right:2.5em}.form-switch.form-check-reverse .form-check-input{margin-left:0;margin-right:-2.5em}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{clip:rect(0,0,0,0);pointer-events:none;position:absolute}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{filter:none;opacity:.65;pointer-events:none}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(255, 255, 255, 0.25)'/%3E%3C/svg%3E")}.form-range{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;height:1.5rem;padding:0;width:100%}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;height:1rem;margin-top:-.25rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1rem}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem;color:transparent;cursor:pointer;height:.5rem;width:100%}.form-range::-moz-range-thumb{-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;height:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1rem}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem;color:transparent;cursor:pointer;height:.5rem;width:100%}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + var(--bs-border-width)*2);line-height:1.25;min-height:calc(3.5rem + var(--bs-border-width)*2)}.form-floating>label{border:var(--bs-border-width) solid transparent;height:100%;left:0;overflow:hidden;padding:1rem .75rem;pointer-events:none;position:absolute;text-align:start;text-overflow:ellipsis;top:0;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out;white-space:nowrap;z-index:2}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext:-ms-input-placeholder,.form-floating>.form-control:-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-control-plaintext:not(:-ms-input-placeholder),.form-floating>.form-control:not(:-ms-input-placeholder){padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-select{padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-ms-input-placeholder)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label:after{background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius);content:"";height:1.5em;inset:1rem .375rem;position:absolute;z-index:-1}.form-floating>.form-control:not(:-ms-input-placeholder)~label:after{background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius);content:"";height:1.5em;inset:1rem .375rem;position:absolute;z-index:-1}.form-floating>.form-control-plaintext~label:after,.form-floating>.form-control:focus~label:after,.form-floating>.form-control:not(:placeholder-shown)~label:after,.form-floating>.form-select~label:after{background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius);content:"";height:1.5em;inset:1rem .375rem;position:absolute;z-index:-1}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label{color:#6c757d}.form-floating>:disabled~label:after{background-color:var(--bs-secondary-bg)}.input-group{align-items:stretch;display:flex;flex-wrap:wrap;position:relative;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{flex:1 1 auto;min-width:0;position:relative;width:1%}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{align-items:center;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);color:var(--bs-body-color);display:flex;font-size:1rem;font-weight:400;line-height:1.5;padding:.375rem .75rem;text-align:center;white-space:nowrap}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{border-radius:var(--bs-border-radius-lg);font-size:1.25rem;padding:.5rem 1rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{border-radius:var(--bs-border-radius-sm);font-size:.875rem;padding:.25rem .5rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-bottom-right-radius:0;border-top-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:calc(var(--bs-border-width)*-1)}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-bottom-left-radius:0;border-top-left-radius:0}.valid-feedback{color:var(--bs-form-valid-color);display:none;font-size:.875em;margin-top:.25rem;width:100%}.valid-tooltip{background-color:var(--bs-success);border-radius:var(--bs-border-radius);color:#fff;display:none;font-size:.875rem;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);padding-right:4.125rem}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3.75rem + 1.5em)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{color:var(--bs-form-invalid-color);display:none;font-size:.875em;margin-top:.25rem;width:100%}.invalid-tooltip{background-color:var(--bs-danger);border-radius:var(--bs-border-radius);color:#fff;display:none;font-size:.875rem;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);padding-right:4.125rem}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3.75rem + 1.5em)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb),.5);background-color:var(--bs-btn-bg);border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);color:var(--bs-btn-color);cursor:pointer;display:inline-block;font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);color:var(--bs-btn-hover-color)}.btn-check+.btn:hover{background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);color:var(--bs-btn-color)}.btn:focus-visible{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-focus-box-shadow);color:var(--bs-btn-hover-color);outline:0}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-focus-box-shadow);outline:0}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color);color:var(--bs-btn-active-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);color:var(--bs-btn-disabled-color);opacity:var(--bs-btn-disabled-opacity);pointer-events:none}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{height:auto;transition:width .35s ease;width:0}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{border-bottom:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.3em solid;content:"";display:inline-block;margin-left:.255em;vertical-align:.255em}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0,0,0,.15);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;background-clip:padding-box;background-color:var(--bs-dropdown-bg);border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius);color:var(--bs-dropdown-color);display:none;font-size:var(--bs-dropdown-font-size);list-style:none;margin:0;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);position:absolute;text-align:left;z-index:var(--bs-dropdown-zindex)}.dropdown-menu[data-bs-popper]{left:0;margin-top:var(--bs-dropdown-spacer);top:100%}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:auto;right:0}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:auto;right:0}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:auto;right:0}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:auto;right:0}}.dropup .dropdown-menu[data-bs-popper]{bottom:100%;margin-bottom:var(--bs-dropdown-spacer);margin-top:0;top:auto}.dropup .dropdown-toggle:after{border-bottom:.3em solid;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:0;content:"";display:inline-block;margin-left:.255em;vertical-align:.255em}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{left:100%;margin-left:var(--bs-dropdown-spacer);margin-top:0;right:auto;top:0}.dropend .dropdown-toggle:after{border-bottom:.3em solid transparent;border-left:.3em solid;border-right:0;border-top:.3em solid transparent;content:"";display:inline-block;margin-left:.255em;vertical-align:.255em}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{left:auto;margin-right:var(--bs-dropdown-spacer);margin-top:0;right:100%;top:0}.dropstart .dropdown-toggle:after{content:"";display:inline-block;display:none;margin-left:.255em;vertical-align:.255em}.dropstart .dropdown-toggle:before{border-bottom:.3em solid transparent;border-right:.3em solid;border-top:.3em solid transparent;content:"";display:inline-block;margin-right:.255em;vertical-align:.255em}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{border-top:1px solid var(--bs-dropdown-divider-bg);height:0;margin:var(--bs-dropdown-divider-margin-y) 0;opacity:1;overflow:hidden}.dropdown-item{background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0);clear:both;color:var(--bs-dropdown-link-color);display:block;font-weight:400;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);text-align:inherit;text-decoration:none;white-space:nowrap;width:100%}.dropdown-item:focus,.dropdown-item:hover{background-color:var(--bs-dropdown-link-hover-bg);color:var(--bs-dropdown-link-hover-color)}.dropdown-item.active,.dropdown-item:active{background-color:var(--bs-dropdown-link-active-bg);color:var(--bs-dropdown-link-active-color);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{background-color:transparent;color:var(--bs-dropdown-link-disabled-color);pointer-events:none}.dropdown-menu.show{display:block}.dropdown-header{color:var(--bs-dropdown-header-color);display:block;font-size:.875rem;margin-bottom:0;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);white-space:nowrap}.dropdown-item-text{color:var(--bs-dropdown-link-color);display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:hsla(0,0%,100%,.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{display:inline-flex;position:relative;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{flex:1 1 auto;position:relative}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width)*-1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-bottom-left-radius:0;border-top-left-radius:0}.dropdown-toggle-split{padding-left:.5625rem;padding-right:.5625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-left:.375rem;padding-right:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-left:.75rem;padding-right:.75rem}.btn-group-vertical{align-items:flex-start;flex-direction:column;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width)*-1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.nav-link{background:none;border:0;color:var(--bs-nav-link-color);display:block;font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{box-shadow:0 0 0 .25rem rgba(13,110,253,.25);outline:0}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);cursor:default;pointer-events:none}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius);margin-bottom:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:var(--bs-nav-tabs-link-hover-border-color);isolation:isolate}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{background-color:transparent;border-color:transparent;color:var(--bs-nav-link-disabled-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color);color:var(--bs-nav-tabs-link-active-color)}.nav-tabs .dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{background-color:transparent;border-color:transparent;color:var(--bs-nav-link-disabled-color)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{background-color:var(--bs-nav-pills-link-active-bg);color:var(--bs-nav-pills-link-active-color)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{border-bottom:var(--bs-nav-underline-border-width) solid transparent;padding-left:0;padding-right:0}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{border-bottom-color:currentcolor;color:var(--bs-nav-underline-link-active-color);font-weight:700}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb),0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb),0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb),0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(33, 37, 41, 0.75)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb),0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);position:relative}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{align-items:center;display:flex;flex-wrap:inherit;justify-content:space-between}.navbar-brand{color:var(--bs-navbar-brand-color);font-size:var(--bs-navbar-brand-font-size);margin-right:var(--bs-navbar-brand-margin-end);padding-bottom:var(--bs-navbar-brand-padding-y);padding-top:var(--bs-navbar-brand-padding-y);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;list-style:none;margin-bottom:0;padding-left:0}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{color:var(--bs-navbar-color);padding-bottom:.5rem;padding-top:.5rem}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);color:var(--bs-navbar-color);font-size:var(--bs-navbar-toggler-font-size);line-height:1;padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width);outline:0;text-decoration:none}.navbar-toggler-icon{background-image:var(--bs-navbar-toggler-icon-bg);background-position:50%;background-repeat:no-repeat;background-size:100%;display:inline-block;height:1.5em;vertical-align:middle;width:1.5em}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:hsla(0,0%,100%,.55);--bs-navbar-hover-color:hsla(0,0%,100%,.75);--bs-navbar-disabled-color:hsla(0,0%,100%,.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:hsla(0,0%,100%,.1)}.navbar-dark,.navbar[data-bs-theme=dark],[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb),0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;word-wrap:break-word;background-clip:border-box;background-color:var(--bs-card-bg);border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius);color:var(--bs-body-color);display:flex;flex-direction:column;height:var(--bs-card-height);min-width:0;position:relative}.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-bottom:inherit;border-top:inherit}.card>.list-group:first-child{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius);border-top-width:0}.card>.list-group:last-child{border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{color:var(--bs-card-color);flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}.card-title{color:var(--bs-card-title-color);margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{color:var(--bs-card-subtitle-color);margin-top:calc(var(--bs-card-title-spacer-y)*-.5)}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color);color:var(--bs-card-cap-color);margin-bottom:0;padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color);color:var(--bs-card-cap-color);padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{border-bottom:0;margin-bottom:calc(var(--bs-card-cap-padding-y)*-1);margin-left:calc(var(--bs-card-cap-padding-x)*-.5);margin-right:calc(var(--bs-card-cap-padding-x)*-.5)}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-left:calc(var(--bs-card-cap-padding-x)*-.5);margin-right:calc(var(--bs-card-cap-padding-x)*-.5)}.card-img-overlay{border-radius:var(--bs-card-inner-border-radius);bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);position:absolute;right:0;top:0}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-right-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{border-left:0;margin-left:0}.card-group>.card:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13,110,253,.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{align-items:center;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;color:var(--bs-accordion-btn-color);display:flex;font-size:1rem;overflow-anchor:none;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);position:relative;text-align:left;transition:var(--bs-accordion-transition);width:100%}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(var(--bs-accordion-border-width)*-1) 0 var(--bs-accordion-border-color);color:var(--bs-accordion-active-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);content:"";flex-shrink:0;height:var(--bs-accordion-btn-icon-width);margin-left:auto;transition:var(--bs-accordion-btn-icon-transition);width:var(--bs-accordion-btn-icon-width)}@media (prefers-reduced-motion:reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{border-color:var(--bs-accordion-btn-focus-border-color);box-shadow:var(--bs-accordion-btn-focus-box-shadow);outline:0;z-index:3}.accordion-header{margin-bottom:0}.accordion-item{background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);color:var(--bs-accordion-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-left-radius:var(--bs-accordion-border-radius);border-bottom-right-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-left-radius:var(--bs-accordion-inner-border-radius);border-bottom-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-left-radius:var(--bs-accordion-border-radius);border-bottom-right-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-left:0;border-radius:0;border-right:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");--bs-accordion-btn-active-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius);display:flex;flex-wrap:wrap;font-size:var(--bs-breadcrumb-font-size);list-style:none;margin-bottom:var(--bs-breadcrumb-margin-bottom);padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider,"/");float:left;padding-right:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13,110,253,.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;list-style:none;padding-left:0}.page-link{background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);color:var(--bs-pagination-color);display:block;font-size:var(--bs-pagination-font-size);padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);position:relative;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color);color:var(--bs-pagination-hover-color);z-index:2}.page-link:focus{background-color:var(--bs-pagination-focus-bg);box-shadow:var(--bs-pagination-focus-box-shadow);color:var(--bs-pagination-focus-color);outline:0;z-index:3}.active>.page-link,.page-link.active{background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color);color:var(--bs-pagination-active-color);z-index:3}.disabled>.page-link,.page-link.disabled{background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color);color:var(--bs-pagination-disabled-color);pointer-events:none}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width)*-1)}.page-item:first-child .page-link{border-bottom-left-radius:var(--bs-pagination-border-radius);border-top-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-bottom-right-radius:var(--bs-pagination-border-radius);border-top-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);border-radius:var(--bs-badge-border-radius);color:var(--bs-badge-color);display:inline-block;font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);text-align:center;vertical-align:baseline;white-space:nowrap}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius);color:var(--bs-alert-color);margin-bottom:var(--bs-alert-margin-bottom);padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);position:relative}.alert-heading{color:inherit}.alert-link{color:var(--bs-alert-link-color);font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{padding:1.25rem 1rem;position:absolute;right:0;top:0;z-index:2}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius);display:flex;font-size:var(--bs-progress-font-size);height:var(--bs-progress-height);overflow:hidden}.progress-bar{background-color:var(--bs-progress-bar-bg);color:var(--bs-progress-bar-color);display:flex;flex-direction:column;justify-content:center;overflow:hidden;text-align:center;transition:var(--bs-progress-bar-transition);white-space:nowrap}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;border-radius:var(--bs-list-group-border-radius);display:flex;flex-direction:column;margin-bottom:0;padding-left:0}.list-group-numbered{counter-reset:section;list-style-type:none}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{color:var(--bs-list-group-action-color);text-align:inherit;width:100%}.list-group-item-action:focus,.list-group-item-action:hover{background-color:var(--bs-list-group-action-hover-bg);color:var(--bs-list-group-action-hover-color);text-decoration:none;z-index:1}.list-group-item-action:active{background-color:var(--bs-list-group-action-active-bg);color:var(--bs-list-group-action-active-color)}.list-group-item{background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);color:var(--bs-list-group-color);display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);position:relative;text-decoration:none}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{background-color:var(--bs-list-group-disabled-bg);color:var(--bs-list-group-disabled-color);pointer-events:none}.list-group-item.active{background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color);color:var(--bs-list-group-active-color);z-index:2}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{border-top-width:var(--bs-list-group-border-width);margin-top:calc(var(--bs-list-group-border-width)*-1)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-md>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3E%3C/svg%3E");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13,110,253,.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;box-sizing:content-box;height:1em;opacity:var(--bs-btn-close-opacity);padding:.25em;width:1em}.btn-close,.btn-close:hover{color:var(--bs-btn-close-color)}.btn-close:hover{opacity:var(--bs-btn-close-hover-opacity);text-decoration:none}.btn-close:focus{box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity);outline:0}.btn-close.disabled,.btn-close:disabled{opacity:var(--bs-btn-close-disabled-opacity);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn-close-white,[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb),0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb),0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);background-clip:padding-box;background-color:var(--bs-toast-bg);border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);border-radius:var(--bs-toast-border-radius);box-shadow:var(--bs-toast-box-shadow);color:var(--bs-toast-color);font-size:var(--bs-toast-font-size);max-width:100%;pointer-events:auto;width:var(--bs-toast-max-width)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;max-width:100%;pointer-events:none;position:absolute;width:-webkit-max-content;width:-moz-max-content;width:max-content;z-index:var(--bs-toast-zindex)}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{align-items:center;background-clip:padding-box;background-color:var(--bs-toast-header-bg);border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));color:var(--bs-toast-header-color);display:flex;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x)}.toast-header .btn-close{margin-left:var(--bs-toast-padding-x);margin-right:calc(var(--bs-toast-padding-x)*-.5)}.toast-body{word-wrap:break-word;padding:var(--bs-toast-padding-x)}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,.075);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);display:none;height:100%;left:0;outline:0;overflow-x:hidden;overflow-y:auto;position:fixed;top:0;width:100%;z-index:var(--bs-modal-zindex)}.modal-dialog{margin:var(--bs-modal-margin);pointer-events:none;position:relative;width:auto}.modal.fade .modal-dialog{transform:translateY(-50px);transition:transform .3s ease-out}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{align-items:center;display:flex;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{background-clip:padding-box;background-color:var(--bs-modal-bg);border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);color:var(--bs-modal-color);display:flex;flex-direction:column;outline:0;pointer-events:auto;position:relative;width:100%}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;background-color:var(--bs-backdrop-bg);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:var(--bs-backdrop-zindex)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{align-items:center;border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius);display:flex;flex-shrink:0;justify-content:space-between;padding:var(--bs-modal-header-padding)}.modal-header .btn-close{margin:calc(var(--bs-modal-header-padding-y)*-.5) calc(var(--bs-modal-header-padding-x)*-.5) calc(var(--bs-modal-header-padding-y)*-.5) auto;padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5)}.modal-title{line-height:var(--bs-modal-title-line-height);margin-bottom:0}.modal-body{flex:1 1 auto;padding:var(--bs-modal-padding);position:relative}.modal-footer{align-items:center;background-color:var(--bs-modal-footer-bg);border-bottom-left-radius:var(--bs-modal-inner-border-radius);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 0.5rem 1rem rgba(0,0,0,.15)}.modal-dialog{margin-left:auto;margin-right:auto;max-width:var(--bs-modal-width)}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-sm-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-md-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-lg-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-xl-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-xxl-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;word-wrap:break-word;display:block;font-family:var(--bs-font-sans-serif);font-size:var(--bs-tooltip-font-size);font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;margin:var(--bs-tooltip-margin);opacity:0;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;z-index:var(--bs-tooltip-zindex)}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;height:var(--bs-tooltip-arrow-height);width:var(--bs-tooltip-arrow-width)}.tooltip .tooltip-arrow:before{border-color:transparent;border-style:solid;content:"";position:absolute}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(var(--bs-tooltip-arrow-height)*-1)}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{border-top-color:var(--bs-tooltip-bg);border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;top:-1px}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{height:var(--bs-tooltip-arrow-width);left:calc(var(--bs-tooltip-arrow-height)*-1);width:var(--bs-tooltip-arrow-height)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .tooltip-arrow:before{border-right-color:var(--bs-tooltip-bg);border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;right:-1px}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(var(--bs-tooltip-arrow-height)*-1)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{border-bottom-color:var(--bs-tooltip-bg);border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);bottom:-1px}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{height:var(--bs-tooltip-arrow-width);right:calc(var(--bs-tooltip-arrow-height)*-1);width:var(--bs-tooltip-arrow-height)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .tooltip-arrow:before{border-left-color:var(--bs-tooltip-bg);border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);left:-1px}.tooltip-inner{background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius);color:var(--bs-tooltip-color);max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);text-align:center}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:0 0.5rem 1rem rgba(0,0,0,.15);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);word-wrap:break-word;background-clip:padding-box;background-color:var(--bs-popover-bg);border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius);display:block;font-family:var(--bs-font-sans-serif);font-size:var(--bs-popover-font-size);font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;max-width:var(--bs-popover-max-width);text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;z-index:var(--bs-popover-zindex)}.popover .popover-arrow{display:block;height:var(--bs-popover-arrow-height);width:var(--bs-popover-arrow-width)}.popover .popover-arrow:after,.popover .popover-arrow:before{border:0 solid transparent;content:"";display:block;position:absolute}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc((var(--bs-popover-arrow-height))*-1 - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-top>.popover-arrow:before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{border-top-color:var(--bs-popover-arrow-border);bottom:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{border-top-color:var(--bs-popover-bg);bottom:var(--bs-popover-border-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{height:var(--bs-popover-arrow-width);left:calc((var(--bs-popover-arrow-height))*-1 - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-end>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{border-right-color:var(--bs-popover-arrow-border);left:0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{border-right-color:var(--bs-popover-bg);left:var(--bs-popover-border-width)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc((var(--bs-popover-arrow-height))*-1 - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:before{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{border-bottom-color:var(--bs-popover-arrow-border);top:0}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{border-bottom-color:var(--bs-popover-bg);top:var(--bs-popover-border-width)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg);content:"";display:block;left:50%;margin-left:calc(var(--bs-popover-arrow-width)*-.5);position:absolute;top:0;width:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{height:var(--bs-popover-arrow-width);right:calc((var(--bs-popover-arrow-height))*-1 - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-start>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{border-left-color:var(--bs-popover-arrow-border);right:0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{border-left-color:var(--bs-popover-bg);right:var(--bs-popover-border-width)}.popover-header{background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius);color:var(--bs-popover-header-color);font-size:var(--bs-popover-header-font-size);margin-bottom:0;padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x)}.popover-header:empty{display:none}.popover-body{color:var(--bs-popover-body-color);padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{overflow:hidden;position:relative;width:100%}.carousel-inner:after{clear:both;content:"";display:block}.carousel-item{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:none;float:left;margin-right:-100%;position:relative;transition:transform .6s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transform:none;transition-property:opacity}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{opacity:1;z-index:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{opacity:0;transition:opacity 0s .6s;z-index:0}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{align-items:center;background:none;border:0;bottom:0;color:#fff;display:flex;justify-content:center;opacity:.5;padding:0;position:absolute;text-align:center;top:0;transition:opacity .15s ease;width:15%;z-index:1}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;opacity:.9;outline:0;text-decoration:none}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{background-position:50%;background-repeat:no-repeat;background-size:100% 100%;display:inline-block;height:2rem;width:2rem}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3E%3Cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3E%3Cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E")}.carousel-indicators{bottom:0;display:flex;justify-content:center;left:0;margin-bottom:1rem;margin-left:15%;margin-right:15%;padding:0;position:absolute;right:0;z-index:2}.carousel-indicators [data-bs-target]{background-clip:padding-box;background-color:#fff;border:0;border-bottom:10px solid transparent;border-top:10px solid transparent;box-sizing:content-box;cursor:pointer;flex:0 1 auto;height:3px;margin-left:3px;margin-right:3px;opacity:.5;padding:0;text-indent:-999px;transition:opacity .6s ease;width:30px}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{bottom:1.25rem;color:#fff;left:15%;padding-bottom:1.25rem;padding-top:1.25rem;position:absolute;right:15%;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{-webkit-animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);border-radius:50%;display:inline-block;height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);width:var(--bs-spinner-width)}@-webkit-keyframes spinner-border{to{transform:rotate(1turn)}}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border-right-color:currentcolor;border:var(--bs-spinner-border-width) solid;border-right:var(--bs-spinner-border-width) solid transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,.075);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:var(--bs-offcanvas-transition);visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-sm.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-sm.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom,.offcanvas-sm.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-sm.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:767.98px){.offcanvas-md{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:var(--bs-offcanvas-transition);visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-md.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-md.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom,.offcanvas-md.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-md.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:991.98px){.offcanvas-lg{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:var(--bs-offcanvas-transition);visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-lg.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-lg.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom,.offcanvas-lg.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-lg.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:1199.98px){.offcanvas-xl{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:var(--bs-offcanvas-transition);visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-xl.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-xl.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom,.offcanvas-xl.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-xl.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:1399.98px){.offcanvas-xxl{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:var(--bs-offcanvas-transition);visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-xxl.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-xxl.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom,.offcanvas-xxl.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-xxl.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}.offcanvas{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:var(--bs-offcanvas-transition);visibility:hidden;z-index:var(--bs-offcanvas-zindex)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas.offcanvas-bottom,.offcanvas.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{background-color:#000;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:1040}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{align-items:center;display:flex;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{margin-bottom:calc(var(--bs-offcanvas-padding-y)*-.5);margin-right:calc(var(--bs-offcanvas-padding-x)*-.5);margin-top:calc(var(--bs-offcanvas-padding-y)*-.5);padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5)}.offcanvas-title{line-height:var(--bs-offcanvas-title-line-height);margin-bottom:0}.offcanvas-body{flex-grow:1;overflow-y:auto;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.placeholder{background-color:currentcolor;cursor:wait;display:inline-block;min-height:1em;opacity:.5;vertical-align:middle}.placeholder.btn:before{content:"";display:inline-block}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite;-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%}@-webkit-keyframes placeholder-wave{to{-webkit-mask-position:-200% 0;mask-position:-200% 0}}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0;mask-position:-200% 0}}.clearfix:after{clear:both;content:"";display:block}.text-bg-primary{background-color:RGBA(13,110,253,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-secondary{background-color:RGBA(108,117,125,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-success{background-color:RGBA(25,135,84,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-info{background-color:RGBA(13,202,240,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-warning{background-color:RGBA(255,193,7,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-danger{background-color:RGBA(220,53,69,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-light{background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-dark{background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important;color:#fff!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important}.focus-ring:focus{box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);outline:0}.icon-link{align-items:center;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:inline-flex;gap:.375rem;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-underline-offset:.25em}.icon-link>.bi{fill:currentcolor;flex-shrink:0;height:1em;transition:transform .2s ease-in-out;width:1em}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio:before{content:"";display:block;padding-top:var(--bs-aspect-ratio)}.ratio>*{height:100%;left:0;position:absolute;top:0;width:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{top:0}.fixed-bottom,.fixed-top{left:0;position:fixed;right:0;z-index:1030}.fixed-bottom{bottom:0}.sticky-top{top:0}.sticky-bottom,.sticky-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-bottom{bottom:0}@media (min-width:576px){.sticky-sm-top{top:0}.sticky-sm-bottom,.sticky-sm-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-sm-bottom{bottom:0}}@media (min-width:768px){.sticky-md-top{top:0}.sticky-md-bottom,.sticky-md-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-md-bottom{bottom:0}}@media (min-width:992px){.sticky-lg-top{top:0}.sticky-lg-bottom,.sticky-lg-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-lg-bottom{bottom:0}}@media (min-width:1200px){.sticky-xl-top{top:0}.sticky-xl-bottom,.sticky-xl-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-xl-bottom{bottom:0}}@media (min-width:1400px){.sticky-xxl-top{top:0}.sticky-xxl-bottom,.sticky-xxl-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-xxl-bottom{bottom:0}}.hstack{align-items:center;flex-direction:row}.hstack,.vstack{align-self:stretch;display:flex}.vstack{flex:1 1 auto;flex-direction:column}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;white-space:nowrap!important;width:1px!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{align-self:stretch;background-color:currentcolor;display:inline-block;min-height:1em;opacity:.25;width:1px}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb),var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb),var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb),var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb),var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb),var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb),var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb),var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb),var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-bottom:0!important;margin-top:0!important}.my-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-bottom:0!important;padding-top:0!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:hsla(0,0%,100%,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-bottom-right-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.rounded-end-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-bottom-right-radius:50%!important;border-top-right-radius:50%!important}.rounded-end-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-left-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.rounded-bottom-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-left-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-bottom-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-bottom:0!important;margin-top:0!important}.my-sm-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-sm-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-sm-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-sm-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-sm-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-sm-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-bottom:0!important;padding-top:0!important}.py-sm-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-sm-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-sm-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-sm-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-sm-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-bottom:0!important;margin-top:0!important}.my-md-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-md-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-md-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-md-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-md-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-md-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-bottom:0!important;padding-top:0!important}.py-md-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-md-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-md-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-md-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-md-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-bottom:0!important;margin-top:0!important}.my-lg-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-lg-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-lg-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-lg-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-lg-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-lg-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-bottom:0!important;padding-top:0!important}.py-lg-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-lg-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-lg-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-lg-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-lg-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-bottom:0!important;margin-top:0!important}.my-xl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-bottom:0!important;padding-top:0!important}.py-xl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-bottom:0!important;margin-top:0!important}.my-xxl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xxl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xxl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xxl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xxl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xxl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-bottom:0!important;padding-top:0!important}.py-xxl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xxl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xxl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xxl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xxl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} diff --git a/themes/demo/assets/vendor/bootstrap/bootstrap.js b/themes/demo/assets/vendor/bootstrap/bootstrap.js new file mode 100644 index 0000000..0868155 --- /dev/null +++ b/themes/demo/assets/vendor/bootstrap/bootstrap.js @@ -0,0 +1,31 @@ +// Importing JavaScript +// +// You have two choices for including Bootstrap's JS files—the whole thing, +// or just the bits that you need. + + +// Option 1 +// +// Import Bootstrap's bundle (all of Bootstrap's JS + Popper.js dependency) + +// import "../../../node_modules/bootstrap/dist/js/bootstrap.bundle.js"; + + +// Option 2 +// +// Import just what we need + +// If you're importing tooltips or popovers, be sure to include our Popper.js dependency +// import "../../../node_modules/popper.js/dist/popper.min.js"; + +// import "../../../node_modules/bootstrap/js/dist/util.js"; +// import "../../../node_modules/bootstrap/js/dist/modal.js"; + + +// Option 3 +// +// Import Bootstrap as ESM module + +import * as Bootstrap from "../../../node_modules/bootstrap/dist/js/bootstrap.esm.js"; + +window.bootstrap = Bootstrap; diff --git a/themes/demo/assets/vendor/bootstrap/bootstrap.min.js b/themes/demo/assets/vendor/bootstrap/bootstrap.min.js new file mode 100644 index 0000000..7fd661c --- /dev/null +++ b/themes/demo/assets/vendor/bootstrap/bootstrap.min.js @@ -0,0 +1,2 @@ +/*! For license information please see bootstrap.min.js.LICENSE.txt */ +(()=>{"use strict";var t={311:t=>{t.exports=jQuery}},e={};function i(n){var s=e[n];if(void 0!==s)return s.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,i),o.exports}i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t={};i.r(t),i.d(t,{afterMain:()=>A,afterRead:()=>v,afterWrite:()=>C,applyStyles:()=>$,arrow:()=>J,auto:()=>a,basePlacements:()=>l,beforeMain:()=>y,beforeRead:()=>_,beforeWrite:()=>E,bottom:()=>s,clippingParents:()=>u,computeStyles:()=>it,createPopper:()=>$t,createPopperBase:()=>Dt,createPopperLite:()=>It,detectOverflow:()=>bt,end:()=>h,eventListeners:()=>st,flip:()=>vt,hide:()=>At,left:()=>r,main:()=>w,modifierPhases:()=>O,offset:()=>Et,placements:()=>m,popper:()=>f,popperGenerator:()=>St,popperOffsets:()=>Tt,preventOverflow:()=>Ct,read:()=>b,reference:()=>p,right:()=>o,start:()=>c,top:()=>n,variationPlacements:()=>g,viewport:()=>d,write:()=>T});var e={};i.r(e),i.d(e,{Alert:()=>ke,Button:()=>Se,Carousel:()=>li,Collapse:()=>Ai,Dropdown:()=>Xi,Modal:()=>Ln,Offcanvas:()=>Xn,Popover:()=>gs,ScrollSpy:()=>Os,Tab:()=>Ks,Toast:()=>ao,Tooltip:()=>ds});var n="top",s="bottom",o="right",r="left",a="auto",l=[n,s,o,r],c="start",h="end",u="clippingParents",d="viewport",f="popper",p="reference",g=l.reduce((function(t,e){return t.concat([e+"-"+c,e+"-"+h])}),[]),m=[].concat(l,[a]).reduce((function(t,e){return t.concat([e,e+"-"+c,e+"-"+h])}),[]),_="beforeRead",b="read",v="afterRead",y="beforeMain",w="main",A="afterMain",E="beforeWrite",T="write",C="afterWrite",O=[_,b,v,y,w,A,E,T,C];function x(t){return t?(t.nodeName||"").toLowerCase():null}function k(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function L(t){return t instanceof k(t).Element||t instanceof Element}function S(t){return t instanceof k(t).HTMLElement||t instanceof HTMLElement}function D(t){return"undefined"!=typeof ShadowRoot&&(t instanceof k(t).ShadowRoot||t instanceof ShadowRoot)}const $={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];S(s)&&x(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});S(n)&&x(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function I(t){return t.split("-")[0]}var N=Math.max,P=Math.min,M=Math.round;function j(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function F(){return!/^((?!chrome|android).)*safari/i.test(j())}function H(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&S(t)&&(s=t.offsetWidth>0&&M(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&M(n.height)/t.offsetHeight||1);var r=(L(t)?k(t):window).visualViewport,a=!F()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,u=n.height/o;return{width:h,height:u,top:c,right:l+h,bottom:c+u,left:l,x:l,y:c}}function W(t){var e=H(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function B(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&D(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function z(t){return k(t).getComputedStyle(t)}function R(t){return["table","td","th"].indexOf(x(t))>=0}function q(t){return((L(t)?t.ownerDocument:t.document)||window.document).documentElement}function V(t){return"html"===x(t)?t:t.assignedSlot||t.parentNode||(D(t)?t.host:null)||q(t)}function K(t){return S(t)&&"fixed"!==z(t).position?t.offsetParent:null}function X(t){for(var e=k(t),i=K(t);i&&R(i)&&"static"===z(i).position;)i=K(i);return i&&("html"===x(i)||"body"===x(i)&&"static"===z(i).position)?e:i||function(t){var e=/firefox/i.test(j());if(/Trident/i.test(j())&&S(t)&&"fixed"===z(t).position)return null;var i=V(t);for(D(i)&&(i=i.host);S(i)&&["html","body"].indexOf(x(i))<0;){var n=z(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Y(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Q(t,e,i){return N(t,P(e,i))}function U(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function G(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const J={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,a=t.name,c=t.options,h=i.elements.arrow,u=i.modifiersData.popperOffsets,d=I(i.placement),f=Y(d),p=[r,o].indexOf(d)>=0?"height":"width";if(h&&u){var g=function(t,e){return U("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:G(t,l))}(c.padding,i),m=W(h),_="y"===f?n:r,b="y"===f?s:o,v=i.rects.reference[p]+i.rects.reference[f]-u[f]-i.rects.popper[p],y=u[f]-i.rects.reference[f],w=X(h),A=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,E=v/2-y/2,T=g[_],C=A-m[p]-g[b],O=A/2-m[p]/2+E,x=Q(T,O,C),k=f;i.modifiersData[a]=((e={})[k]=x,e.centerOffset=x-O,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&B(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Z(t){return t.split("-")[1]}var tt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function et(t){var e,i=t.popper,a=t.popperRect,l=t.placement,c=t.variation,u=t.offsets,d=t.position,f=t.gpuAcceleration,p=t.adaptive,g=t.roundOffsets,m=t.isFixed,_=u.x,b=void 0===_?0:_,v=u.y,y=void 0===v?0:v,w="function"==typeof g?g({x:b,y}):{x:b,y};b=w.x,y=w.y;var A=u.hasOwnProperty("x"),E=u.hasOwnProperty("y"),T=r,C=n,O=window;if(p){var x=X(i),L="clientHeight",S="clientWidth";if(x===k(i)&&"static"!==z(x=q(i)).position&&"absolute"===d&&(L="scrollHeight",S="scrollWidth"),l===n||(l===r||l===o)&&c===h)C=s,y-=(m&&x===O&&O.visualViewport?O.visualViewport.height:x[L])-a.height,y*=f?1:-1;if(l===r||(l===n||l===s)&&c===h)T=o,b-=(m&&x===O&&O.visualViewport?O.visualViewport.width:x[S])-a.width,b*=f?1:-1}var D,$=Object.assign({position:d},p&&tt),I=!0===g?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:M(i*s)/s||0,y:M(n*s)/s||0}}({x:b,y},k(i)):{x:b,y};return b=I.x,y=I.y,f?Object.assign({},$,((D={})[C]=E?"0":"",D[T]=A?"0":"",D.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",D)):Object.assign({},$,((e={})[C]=E?y+"px":"",e[T]=A?b+"px":"",e.transform="",e))}const it={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:I(e.placement),variation:Z(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,et(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,et(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var nt={passive:!0};const st={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=k(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,nt)})),a&&l.addEventListener("resize",i.update,nt),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,nt)})),a&&l.removeEventListener("resize",i.update,nt)}},data:{}};var ot={left:"right",right:"left",bottom:"top",top:"bottom"};function rt(t){return t.replace(/left|right|bottom|top/g,(function(t){return ot[t]}))}var at={start:"end",end:"start"};function lt(t){return t.replace(/start|end/g,(function(t){return at[t]}))}function ct(t){var e=k(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ht(t){return H(q(t)).left+ct(t).scrollLeft}function ut(t){var e=z(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function dt(t){return["html","body","#document"].indexOf(x(t))>=0?t.ownerDocument.body:S(t)&&ut(t)?t:dt(V(t))}function ft(t,e){var i;void 0===e&&(e=[]);var n=dt(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=k(n),r=s?[o].concat(o.visualViewport||[],ut(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(ft(V(r)))}function pt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function gt(t,e,i){return e===d?pt(function(t,e){var i=k(t),n=q(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=F();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ht(t),y:l}}(t,i)):L(e)?function(t,e){var i=H(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):pt(function(t){var e,i=q(t),n=ct(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=N(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=N(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ht(t),l=-n.scrollTop;return"rtl"===z(s||i).direction&&(a+=N(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(q(t)))}function mt(t,e,i,n){var s="clippingParents"===e?function(t){var e=ft(V(t)),i=["absolute","fixed"].indexOf(z(t).position)>=0&&S(t)?X(t):t;return L(i)?e.filter((function(t){return L(t)&&B(t,i)&&"body"!==x(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=gt(t,i,n);return e.top=N(s.top,e.top),e.right=P(s.right,e.right),e.bottom=P(s.bottom,e.bottom),e.left=N(s.left,e.left),e}),gt(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function _t(t){var e,i=t.reference,a=t.element,l=t.placement,u=l?I(l):null,d=l?Z(l):null,f=i.x+i.width/2-a.width/2,p=i.y+i.height/2-a.height/2;switch(u){case n:e={x:f,y:i.y-a.height};break;case s:e={x:f,y:i.y+i.height};break;case o:e={x:i.x+i.width,y:p};break;case r:e={x:i.x-a.width,y:p};break;default:e={x:i.x,y:i.y}}var g=u?Y(u):null;if(null!=g){var m="y"===g?"height":"width";switch(d){case c:e[g]=e[g]-(i[m]/2-a[m]/2);break;case h:e[g]=e[g]+(i[m]/2-a[m]/2)}}return e}function bt(t,e){void 0===e&&(e={});var i=e,r=i.placement,a=void 0===r?t.placement:r,c=i.strategy,h=void 0===c?t.strategy:c,g=i.boundary,m=void 0===g?u:g,_=i.rootBoundary,b=void 0===_?d:_,v=i.elementContext,y=void 0===v?f:v,w=i.altBoundary,A=void 0!==w&&w,E=i.padding,T=void 0===E?0:E,C=U("number"!=typeof T?T:G(T,l)),O=y===f?p:f,x=t.rects.popper,k=t.elements[A?O:y],S=mt(L(k)?k:k.contextElement||q(t.elements.popper),m,b,h),D=H(t.elements.reference),$=_t({reference:D,element:x,strategy:"absolute",placement:a}),I=pt(Object.assign({},x,$)),N=y===f?I:D,P={top:S.top-N.top+C.top,bottom:N.bottom-S.bottom+C.bottom,left:S.left-N.left+C.left,right:N.right-S.right+C.right},M=t.modifiersData.offset;if(y===f&&M){var j=M[a];Object.keys(P).forEach((function(t){var e=[o,s].indexOf(t)>=0?1:-1,i=[n,s].indexOf(t)>=0?"y":"x";P[t]+=j[i]*e}))}return P}const vt={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,h=t.name;if(!e.modifiersData[h]._skip){for(var u=i.mainAxis,d=void 0===u||u,f=i.altAxis,p=void 0===f||f,_=i.fallbackPlacements,b=i.padding,v=i.boundary,y=i.rootBoundary,w=i.altBoundary,A=i.flipVariations,E=void 0===A||A,T=i.allowedAutoPlacements,C=e.options.placement,O=I(C),x=_||(O===C||!E?[rt(C)]:function(t){if(I(t)===a)return[];var e=rt(t);return[lt(t),e,lt(e)]}(C)),k=[C].concat(x).reduce((function(t,i){return t.concat(I(i)===a?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,c=i.allowedAutoPlacements,h=void 0===c?m:c,u=Z(n),d=u?a?g:g.filter((function(t){return Z(t)===u})):l,f=d.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=d);var p=f.reduce((function(e,i){return e[i]=bt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[I(i)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}(e,{placement:i,boundary:v,rootBoundary:y,padding:b,flipVariations:E,allowedAutoPlacements:T}):i)}),[]),L=e.rects.reference,S=e.rects.popper,D=new Map,$=!0,N=k[0],P=0;P=0,W=H?"width":"height",B=bt(e,{placement:M,boundary:v,rootBoundary:y,altBoundary:w,padding:b}),z=H?F?o:r:F?s:n;L[W]>S[W]&&(z=rt(z));var R=rt(z),q=[];if(d&&q.push(B[j]<=0),p&&q.push(B[z]<=0,B[R]<=0),q.every((function(t){return t}))){N=M,$=!1;break}D.set(M,q)}if($)for(var V=function(t){var e=k.find((function(e){var i=D.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return N=e,"break"},K=E?3:1;K>0;K--){if("break"===V(K))break}e.placement!==N&&(e.modifiersData[h]._skip=!0,e.placement=N,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function yt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function wt(t){return[n,o,s,r].some((function(e){return t[e]>=0}))}const At={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=bt(e,{elementContext:"reference"}),a=bt(e,{altBoundary:!0}),l=yt(r,n),c=yt(a,s,o),h=wt(l),u=wt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:u},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":u})}};const Et={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,s=t.name,a=i.offset,l=void 0===a?[0,0]:a,c=m.reduce((function(t,i){return t[i]=function(t,e,i){var s=I(t),a=[r,n].indexOf(s)>=0?-1:1,l="function"==typeof i?i(Object.assign({},e,{placement:t})):i,c=l[0],h=l[1];return c=c||0,h=(h||0)*a,[r,o].indexOf(s)>=0?{x:h,y:c}:{x:c,y:h}}(i,e.rects,l),t}),{}),h=c[e.placement],u=h.x,d=h.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=u,e.modifiersData.popperOffsets.y+=d),e.modifiersData[s]=c}};const Tt={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=_t({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};const Ct={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,a=t.name,l=i.mainAxis,h=void 0===l||l,u=i.altAxis,d=void 0!==u&&u,f=i.boundary,p=i.rootBoundary,g=i.altBoundary,m=i.padding,_=i.tether,b=void 0===_||_,v=i.tetherOffset,y=void 0===v?0:v,w=bt(e,{boundary:f,rootBoundary:p,padding:m,altBoundary:g}),A=I(e.placement),E=Z(e.placement),T=!E,C=Y(A),O="x"===C?"y":"x",x=e.modifiersData.popperOffsets,k=e.rects.reference,L=e.rects.popper,S="function"==typeof y?y(Object.assign({},e.rects,{placement:e.placement})):y,D="number"==typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),$=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(x){if(h){var j,F="y"===C?n:r,H="y"===C?s:o,B="y"===C?"height":"width",z=x[C],R=z+w[F],q=z-w[H],V=b?-L[B]/2:0,K=E===c?k[B]:L[B],U=E===c?-L[B]:-k[B],G=e.elements.arrow,J=b&&G?W(G):{width:0,height:0},tt=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[F],it=tt[H],nt=Q(0,k[B],J[B]),st=T?k[B]/2-V-nt-et-D.mainAxis:K-nt-et-D.mainAxis,ot=T?-k[B]/2+V+nt+it+D.mainAxis:U+nt+it+D.mainAxis,rt=e.elements.arrow&&X(e.elements.arrow),at=rt?"y"===C?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(j=null==$?void 0:$[C])?j:0,ct=z+ot-lt,ht=Q(b?P(R,z+st-lt-at):R,z,b?N(q,ct):q);x[C]=ht,M[C]=ht-z}if(d){var ut,dt="x"===C?n:r,ft="x"===C?s:o,pt=x[O],gt="y"===O?"height":"width",mt=pt+w[dt],_t=pt-w[ft],vt=-1!==[n,r].indexOf(A),yt=null!=(ut=null==$?void 0:$[O])?ut:0,wt=vt?mt:pt-k[gt]-L[gt]-yt+D.altAxis,At=vt?pt+k[gt]+L[gt]-yt-D.altAxis:_t,Et=b&&vt?function(t,e,i){var n=Q(t,e,i);return n>i?i:n}(wt,pt,At):Q(b?wt:mt,pt,b?At:_t);x[O]=Et,M[O]=Et-pt}e.modifiersData[a]=M}},requiresIfExists:["offset"]};function Ot(t,e,i){void 0===i&&(i=!1);var n,s,o=S(e),r=S(e)&&function(t){var e=t.getBoundingClientRect(),i=M(e.width)/t.offsetWidth||1,n=M(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=q(e),l=H(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==x(e)||ut(a))&&(c=(n=e)!==k(n)&&S(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:ct(n)),S(e)?((h=H(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ht(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function xt(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var kt={placement:"bottom",modifiers:[],strategy:"absolute"};function Lt(){for(var t=arguments.length,e=new Array(t),i=0;iPt.has(t)&&Pt.get(t).get(e)||null,remove(t,e){if(!Pt.has(t))return;const i=Pt.get(t);i.delete(e),0===i.size&&Pt.delete(t)}},jt="transitionend",Ft=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),Ht=t=>{t.dispatchEvent(new Event(jt))},Wt=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Bt=t=>Wt(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Ft(t)):null,zt=t=>{if(!Wt(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},Rt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||(!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled"))),qt=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?qt(t.parentNode):null},Vt=()=>{},Kt=t=>{t.offsetHeight},Xt=()=>Nt&&!document.body.hasAttribute("data-bs-no-jquery")?Nt:null,Yt=[],Qt=()=>"rtl"===document.documentElement.dir,Ut=t=>{var e;e=()=>{const e=Xt();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(Yt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Yt)t()})),Yt.push(e)):e()},Gt=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,Jt=(t,e,i=!0)=>{if(!i)return void Gt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const o=({target:i})=>{i===e&&(s=!0,e.removeEventListener(jt,o),Gt(t))};e.addEventListener(jt,o),setTimeout((()=>{s||Ht(e)}),n)},Zt=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},te=/[^.]*(?=\..*)\.|.*/,ee=/\..*/,ie=/::\d+$/,ne={};let se=1;const oe={mouseenter:"mouseover",mouseleave:"mouseout"},re=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function ae(t,e){return e&&`${e}::${se++}`||t.uidEvent||se++}function le(t){const e=ae(t);return t.uidEvent=e,ne[e]=ne[e]||{},ne[e]}function ce(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function he(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=pe(t);return re.has(o)||(o=t),[n,s,o]}function ue(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=he(e,i,n);if(e in oe){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=le(t),c=l[a]||(l[a]={}),h=ce(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const u=ae(r,e.replace(te,"")),d=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return me(s,{delegateTarget:r}),n.oneOff&&ge.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return me(n,{delegateTarget:t}),i.oneOff&&ge.off(t,n.type,e),e.apply(t,[n])}}(t,r);d.delegationSelector=o?i:null,d.callable=r,d.oneOff=s,d.uidEvent=u,c[u]=d,t.addEventListener(a,d,o)}function de(t,e,i,n,s){const o=ce(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function fe(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&de(t,e,i,r.callable,r.delegationSelector)}function pe(t){return t=t.replace(ee,""),oe[t]||t}const ge={on(t,e,i,n){ue(t,e,i,n,!1)},one(t,e,i,n){ue(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=he(e,i,n),a=r!==e,l=le(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))fe(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(ie,"");a&&!e.includes(s)||de(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;de(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=Xt();let s=null,o=!0,r=!0,a=!1;e!==pe(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=me(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function me(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function _e(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function be(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const ve={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${be(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${be(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=_e(t.dataset[n])}return e},getDataAttribute:(t,e)=>_e(t.getAttribute(`data-bs-${be(e)}`))};class ye{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=Wt(e)?ve.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...Wt(e)?ve.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],o=Wt(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${o}" but expected type "${s}".`)}var i}}class we extends ye{constructor(t,e){super(),(t=Bt(t))&&(this._element=t,this._config=this._getConfig(e),Mt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Mt.remove(this._element,this.constructor.DATA_KEY),ge.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Jt(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Mt.get(Bt(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.0"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const Ae=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return Ft(e)},Ee={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!Rt(t)&&zt(t)))},getSelectorFromElement(t){const e=Ae(t);return e&&Ee.findOne(e)?e:null},getElementFromSelector(t){const e=Ae(t);return e?Ee.findOne(e):null},getMultipleElementsFromSelector(t){const e=Ae(t);return e?Ee.find(e):[]}},Te=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;ge.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Rt(this))return;const s=Ee.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},Ce=".bs.alert",Oe=`close${Ce}`,xe=`closed${Ce}`;class ke extends we{static get NAME(){return"alert"}close(){if(ge.trigger(this._element,Oe).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),ge.trigger(this._element,xe),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=ke.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}Te(ke,"close"),Ut(ke);const Le='[data-bs-toggle="button"]';class Se extends we{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Se.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}ge.on(document,"click.bs.button.data-api",Le,(t=>{t.preventDefault();const e=t.target.closest(Le);Se.getOrCreateInstance(e).toggle()})),Ut(Se);const De=".bs.swipe",$e=`touchstart${De}`,Ie=`touchmove${De}`,Ne=`touchend${De}`,Pe=`pointerdown${De}`,Me=`pointerup${De}`,je={endCallback:null,leftCallback:null,rightCallback:null},Fe={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class He extends ye{constructor(t,e){super(),this._element=t,t&&He.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return je}static get DefaultType(){return Fe}static get NAME(){return"swipe"}dispose(){ge.off(this._element,De)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Gt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&Gt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(ge.on(this._element,Pe,(t=>this._start(t))),ge.on(this._element,Me,(t=>this._end(t))),this._element.classList.add("pointer-event")):(ge.on(this._element,$e,(t=>this._start(t))),ge.on(this._element,Ie,(t=>this._move(t))),ge.on(this._element,Ne,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const We=".bs.carousel",Be=".data-api",ze="next",Re="prev",qe="left",Ve="right",Ke=`slide${We}`,Xe=`slid${We}`,Ye=`keydown${We}`,Qe=`mouseenter${We}`,Ue=`mouseleave${We}`,Ge=`dragstart${We}`,Je=`load${We}${Be}`,Ze=`click${We}${Be}`,ti="carousel",ei="active",ii=".active",ni=".carousel-item",si=ii+ni,oi={ArrowLeft:Ve,ArrowRight:qe},ri={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},ai={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class li extends we{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Ee.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===ti&&this.cycle()}static get Default(){return ri}static get DefaultType(){return ai}static get NAME(){return"carousel"}next(){this._slide(ze)}nextWhenVisible(){!document.hidden&&zt(this._element)&&this.next()}prev(){this._slide(Re)}pause(){this._isSliding&&Ht(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?ge.one(this._element,Xe,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void ge.one(this._element,Xe,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?ze:Re;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&ge.on(this._element,Ye,(t=>this._keydown(t))),"hover"===this._config.pause&&(ge.on(this._element,Qe,(()=>this.pause())),ge.on(this._element,Ue,(()=>this._maybeEnableCycle()))),this._config.touch&&He.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of Ee.find(".carousel-item img",this._element))ge.on(t,Ge,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(qe)),rightCallback:()=>this._slide(this._directionToOrder(Ve)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new He(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=oi[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=Ee.findOne(ii,this._indicatorsElement);e.classList.remove(ei),e.removeAttribute("aria-current");const i=Ee.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(ei),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===ze,s=e||Zt(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>ge.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(Ke).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),Kt(s),i.classList.add(l),s.classList.add(l);this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(ei),i.classList.remove(ei,c,l),this._isSliding=!1,r(Xe)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return Ee.findOne(si,this._element)}_getItems(){return Ee.find(ni,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Qt()?t===qe?Re:ze:t===qe?ze:Re}_orderToDirection(t){return Qt()?t===Re?qe:Ve:t===Re?Ve:qe}static jQueryInterface(t){return this.each((function(){const e=li.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}ge.on(document,Ze,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=Ee.getElementFromSelector(this);if(!e||!e.classList.contains(ti))return;t.preventDefault();const i=li.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===ve.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),ge.on(window,Je,(()=>{const t=Ee.find('[data-bs-ride="carousel"]');for(const e of t)li.getOrCreateInstance(e)})),Ut(li);const ci=".bs.collapse",hi=`show${ci}`,ui=`shown${ci}`,di=`hide${ci}`,fi=`hidden${ci}`,pi=`click${ci}.data-api`,gi="show",mi="collapse",_i="collapsing",bi=`:scope .${mi} .${mi}`,vi='[data-bs-toggle="collapse"]',yi={parent:null,toggle:!0},wi={parent:"(null|element)",toggle:"boolean"};class Ai extends we{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=Ee.find(vi);for(const t of i){const e=Ee.getSelectorFromElement(t),i=Ee.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return yi}static get DefaultType(){return wi}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Ai.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(ge.trigger(this._element,hi).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(mi),this._element.classList.add(_i),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(_i),this._element.classList.add(mi,gi),this._element.style[e]="",ge.trigger(this._element,ui)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(ge.trigger(this._element,di).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,Kt(this._element),this._element.classList.add(_i),this._element.classList.remove(mi,gi);for(const t of this._triggerArray){const e=Ee.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(_i),this._element.classList.add(mi),ge.trigger(this._element,fi)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(gi)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Bt(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(vi);for(const e of t){const t=Ee.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=Ee.find(bi,this._config.parent);return Ee.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Ai.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}ge.on(document,pi,vi,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of Ee.getMultipleElementsFromSelector(this))Ai.getOrCreateInstance(t,{toggle:!1}).toggle()})),Ut(Ai);const Ei="dropdown",Ti=".bs.dropdown",Ci=".data-api",Oi="ArrowUp",xi="ArrowDown",ki=`hide${Ti}`,Li=`hidden${Ti}`,Si=`show${Ti}`,Di=`shown${Ti}`,$i=`click${Ti}${Ci}`,Ii=`keydown${Ti}${Ci}`,Ni=`keyup${Ti}${Ci}`,Pi="show",Mi='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',ji=`${Mi}.${Pi}`,Fi=".dropdown-menu",Hi=Qt()?"top-end":"top-start",Wi=Qt()?"top-start":"top-end",Bi=Qt()?"bottom-end":"bottom-start",zi=Qt()?"bottom-start":"bottom-end",Ri=Qt()?"left-start":"right-start",qi=Qt()?"right-start":"left-start",Vi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Ki={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Xi extends we{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=Ee.next(this._element,Fi)[0]||Ee.prev(this._element,Fi)[0]||Ee.findOne(Fi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Vi}static get DefaultType(){return Ki}static get NAME(){return Ei}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Rt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!ge.trigger(this._element,Si,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))ge.on(t,"mouseover",Vt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Pi),this._element.classList.add(Pi),ge.trigger(this._element,Di,t)}}hide(){if(Rt(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!ge.trigger(this._element,ki,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ge.off(t,"mouseover",Vt);this._popper&&this._popper.destroy(),this._menu.classList.remove(Pi),this._element.classList.remove(Pi),this._element.setAttribute("aria-expanded","false"),ve.removeDataAttribute(this._menu,"popper"),ge.trigger(this._element,Li,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!Wt(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Ei.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===t)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=this._parent:Wt(this._config.reference)?e=Bt(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig();this._popper=$t(e,this._menu,i)}_isShown(){return this._menu.classList.contains(Pi)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Ri;if(t.classList.contains("dropstart"))return qi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?Wi:Hi:e?zi:Bi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(ve.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Gt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=Ee.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>zt(t)));i.length&&Zt(i,e,t===xi,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=Xi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=Ee.find(ji);for(const i of e){const e=Xi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Oi,xi].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Mi)?this:Ee.prev(this,Mi)[0]||Ee.next(this,Mi)[0]||Ee.findOne(Mi,t.delegateTarget.parentNode),o=Xi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}ge.on(document,Ii,Mi,Xi.dataApiKeydownHandler),ge.on(document,Ii,Fi,Xi.dataApiKeydownHandler),ge.on(document,$i,Xi.clearMenus),ge.on(document,Ni,Xi.clearMenus),ge.on(document,$i,Mi,(function(t){t.preventDefault(),Xi.getOrCreateInstance(this).toggle()})),Ut(Xi);const Yi="backdrop",Qi="show",Ui=`mousedown.bs.${Yi}`,Gi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Ji={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Zi extends ye{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Gi}static get DefaultType(){return Ji}static get NAME(){return Yi}show(t){if(!this._config.isVisible)return void Gt(t);this._append();const e=this._getElement();this._config.isAnimated&&Kt(e),e.classList.add(Qi),this._emulateAnimation((()=>{Gt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Qi),this._emulateAnimation((()=>{this.dispose(),Gt(t)}))):Gt(t)}dispose(){this._isAppended&&(ge.off(this._element,Ui),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Bt(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),ge.on(t,Ui,(()=>{Gt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Jt(t,this._getElement(),this._config.isAnimated)}}const tn=".bs.focustrap",en=`focusin${tn}`,nn=`keydown.tab${tn}`,sn="backward",on={autofocus:!0,trapElement:null},rn={autofocus:"boolean",trapElement:"element"};class an extends ye{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return on}static get DefaultType(){return rn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),ge.off(document,tn),ge.on(document,en,(t=>this._handleFocusin(t))),ge.on(document,nn,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,ge.off(document,tn))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=Ee.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===sn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?sn:"forward")}}const ln=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",cn=".sticky-top",hn="padding-right",un="margin-right";class dn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,hn,(e=>e+t)),this._setElementAttributes(ln,hn,(e=>e+t)),this._setElementAttributes(cn,un,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,hn),this._resetElementAttributes(ln,hn),this._resetElementAttributes(cn,un)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&ve.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=ve.getDataAttribute(t,e);null!==i?(ve.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(Wt(t))e(t);else for(const i of Ee.find(t,this._element))e(i)}}const fn=".bs.modal",pn=`hide${fn}`,gn=`hidePrevented${fn}`,mn=`hidden${fn}`,_n=`show${fn}`,bn=`shown${fn}`,vn=`resize${fn}`,yn=`click.dismiss${fn}`,wn=`mousedown.dismiss${fn}`,An=`keydown.dismiss${fn}`,En=`click${fn}.data-api`,Tn="modal-open",Cn="show",On="modal-static",xn={backdrop:!0,focus:!0,keyboard:!0},kn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ln extends we{constructor(t,e){super(t,e),this._dialog=Ee.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new dn,this._addEventListeners()}static get Default(){return xn}static get DefaultType(){return kn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||this._isTransitioning)return;ge.trigger(this._element,_n,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Tn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){if(!this._isShown||this._isTransitioning)return;ge.trigger(this._element,pn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Cn),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated()))}dispose(){ge.off(window,fn),ge.off(this._dialog,fn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Zi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new an({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=Ee.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),Kt(this._element),this._element.classList.add(Cn);this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,ge.trigger(this._element,bn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){ge.on(this._element,An,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),ge.on(window,vn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),ge.on(this._element,wn,(t=>{ge.one(this._element,yn,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Tn),this._resetAdjustments(),this._scrollBar.reset(),ge.trigger(this._element,mn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(ge.trigger(this._element,gn).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(On)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(On),this._queueCallback((()=>{this._element.classList.remove(On),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=Qt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Qt()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ln.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}ge.on(document,En,'[data-bs-toggle="modal"]',(function(t){const e=Ee.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),ge.one(e,_n,(t=>{t.defaultPrevented||ge.one(e,mn,(()=>{zt(this)&&this.focus()}))}));const i=Ee.findOne(".modal.show");i&&Ln.getInstance(i).hide();Ln.getOrCreateInstance(e).toggle(this)})),Te(Ln),Ut(Ln);const Sn=".bs.offcanvas",Dn=".data-api",$n=`load${Sn}${Dn}`,In="show",Nn="showing",Pn="hiding",Mn=".offcanvas.show",jn=`show${Sn}`,Fn=`shown${Sn}`,Hn=`hide${Sn}`,Wn=`hidePrevented${Sn}`,Bn=`hidden${Sn}`,zn=`resize${Sn}`,Rn=`click${Sn}${Dn}`,qn=`keydown.dismiss${Sn}`,Vn={backdrop:!0,keyboard:!0,scroll:!1},Kn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Xn extends we{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Vn}static get DefaultType(){return Kn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown)return;if(ge.trigger(this._element,jn,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||(new dn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Nn);this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(In),this._element.classList.remove(Nn),ge.trigger(this._element,Fn,{relatedTarget:t})}),this._element,!0)}hide(){if(!this._isShown)return;if(ge.trigger(this._element,Hn).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Pn),this._backdrop.hide();this._queueCallback((()=>{this._element.classList.remove(In,Pn),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new dn).reset(),ge.trigger(this._element,Bn)}),this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Zi({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():ge.trigger(this._element,Wn)}:null})}_initializeFocusTrap(){return new an({trapElement:this._element})}_addEventListeners(){ge.on(this._element,qn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():ge.trigger(this._element,Wn))}))}static jQueryInterface(t){return this.each((function(){const e=Xn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}ge.on(document,Rn,'[data-bs-toggle="offcanvas"]',(function(t){const e=Ee.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Rt(this))return;ge.one(e,Bn,(()=>{zt(this)&&this.focus()}));const i=Ee.findOne(Mn);i&&i!==e&&Xn.getInstance(i).hide();Xn.getOrCreateInstance(e).toggle(this)})),ge.on(window,$n,(()=>{for(const t of Ee.find(Mn))Xn.getOrCreateInstance(t).show()})),ge.on(window,zn,(()=>{for(const t of Ee.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&Xn.getOrCreateInstance(t).hide()})),Te(Xn),Ut(Xn);const Yn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Qn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Un=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Gn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Qn.has(i)||Boolean(Un.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))};const Jn={allowList:Yn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
    "},Zn={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},ts={entry:"(string|element|function|null)",selector:"(string|element)"};class es extends ye{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Jn}static get DefaultType(){return Zn}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},ts)}_setContent(t,e,i){const n=Ee.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?Wt(e)?this._putElementInTemplate(Bt(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Gn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Gt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const is=new Set(["sanitize","allowList","sanitizeFn"]),ns="fade",ss="show",os=".modal",rs="hide.bs.modal",as="hover",ls="focus",cs={AUTO:"auto",TOP:"top",RIGHT:Qt()?"left":"right",BOTTOM:"bottom",LEFT:Qt()?"right":"left"},hs={allowList:Yn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},us={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class ds extends we{constructor(e,i){if(void 0===t)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,i),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return hs}static get DefaultType(){return us}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),ge.off(this._element.closest(os),rs,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=ge.trigger(this._element,this.constructor.eventName("show")),e=(qt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),ge.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(ss),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ge.on(t,"mouseover",Vt);this._queueCallback((()=>{ge.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(ge.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(ss),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ge.off(t,"mouseover",Vt);this._activeTrigger.click=!1,this._activeTrigger[ls]=!1,this._activeTrigger[as]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),ge.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ns,ss),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ns),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new es({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ns)}_isShown(){return this.tip&&this.tip.classList.contains(ss)}_createPopper(t){const e=Gt(this._config.placement,[this,t,this._element]),i=cs[e.toUpperCase()];return $t(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return Gt(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Gt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)ge.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===as?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===as?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");ge.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?ls:as]=!0,e._enter()})),ge.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?ls:as]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},ge.on(this._element.closest(os),rs,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=ve.getDataAttributes(this._element);for(const t of Object.keys(e))is.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Bt(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=ds.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Ut(ds);const fs={...ds.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ps={...ds.DefaultType,content:"(null|string|element|function)"};class gs extends ds{static get Default(){return fs}static get DefaultType(){return ps}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=gs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Ut(gs);const ms=".bs.scrollspy",_s=`activate${ms}`,bs=`click${ms}`,vs=`load${ms}.data-api`,ys="active",ws="[href]",As=".nav-link",Es=`${As}, .nav-item > ${As}, .list-group-item`,Ts={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Cs={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Os extends we{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Ts}static get DefaultType(){return Cs}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Bt(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(ge.off(this._config.target,bs),ge.on(this._config.target,bs,ws,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Ee.find(ws,this._config.target);for(const e of t){if(!e.hash||Rt(e))continue;const t=Ee.findOne(decodeURI(e.hash),this._element);zt(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(ys),this._activateParents(t),ge.trigger(this._element,_s,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))Ee.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(ys);else for(const e of Ee.parents(t,".nav, .list-group"))for(const t of Ee.prev(e,Es))t.classList.add(ys)}_clearActiveClass(t){t.classList.remove(ys);const e=Ee.find(`${ws}.${ys}`,t);for(const t of e)t.classList.remove(ys)}static jQueryInterface(t){return this.each((function(){const e=Os.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ge.on(window,vs,(()=>{for(const t of Ee.find('[data-bs-spy="scroll"]'))Os.getOrCreateInstance(t)})),Ut(Os);const xs=".bs.tab",ks=`hide${xs}`,Ls=`hidden${xs}`,Ss=`show${xs}`,Ds=`shown${xs}`,$s=`click${xs}`,Is=`keydown${xs}`,Ns=`load${xs}`,Ps="ArrowLeft",Ms="ArrowRight",js="ArrowUp",Fs="ArrowDown",Hs="active",Ws="fade",Bs="show",zs=":not(.dropdown-toggle)",Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`${`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}`}, ${Rs}`,Vs=`.${Hs}[data-bs-toggle="tab"], .${Hs}[data-bs-toggle="pill"], .${Hs}[data-bs-toggle="list"]`;class Ks extends we{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),ge.on(this._element,Is,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?ge.trigger(e,ks,{relatedTarget:t}):null;ge.trigger(t,Ss,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){if(!t)return;t.classList.add(Hs),this._activate(Ee.getElementFromSelector(t));this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),ge.trigger(t,Ds,{relatedTarget:e})):t.classList.add(Bs)}),t,t.classList.contains(Ws))}_deactivate(t,e){if(!t)return;t.classList.remove(Hs),t.blur(),this._deactivate(Ee.getElementFromSelector(t));this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),ge.trigger(t,Ls,{relatedTarget:e})):t.classList.remove(Bs)}),t,t.classList.contains(Ws))}_keydown(t){if(![Ps,Ms,js,Fs].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[Ms,Fs].includes(t.key),i=Zt(this._getChildren().filter((t=>!Rt(t))),t.target,e,!0);i&&(i.focus({preventScroll:!0}),Ks.getOrCreateInstance(i).show())}_getChildren(){return Ee.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=Ee.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=Ee.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Hs),n(".dropdown-menu",Bs),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Hs)}_getInnerElement(t){return t.matches(qs)?t:Ee.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ks.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ge.on(document,$s,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Rt(this)||Ks.getOrCreateInstance(this).show()})),ge.on(window,Ns,(()=>{for(const t of Ee.find(Vs))Ks.getOrCreateInstance(t)})),Ut(Ks);const Xs=".bs.toast",Ys=`mouseover${Xs}`,Qs=`mouseout${Xs}`,Us=`focusin${Xs}`,Gs=`focusout${Xs}`,Js=`hide${Xs}`,Zs=`hidden${Xs}`,to=`show${Xs}`,eo=`shown${Xs}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends we{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){if(ge.trigger(this._element,to).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(io),Kt(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),ge.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation)}hide(){if(!this.isShown())return;if(ge.trigger(this._element,Js).defaultPrevented)return;this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),ge.trigger(this._element,Zs)}),this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){ge.on(this._element,Ys,(t=>this._onInteraction(t,!0))),ge.on(this._element,Qs,(t=>this._onInteraction(t,!1))),ge.on(this._element,Us,(t=>this._onInteraction(t,!0))),ge.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}Te(ao),Ut(ao),window.bootstrap=e})()})(); \ No newline at end of file diff --git a/themes/demo/assets/vendor/bootstrap/bootstrap.min.js.LICENSE.txt b/themes/demo/assets/vendor/bootstrap/bootstrap.min.js.LICENSE.txt new file mode 100644 index 0000000..1ca1687 --- /dev/null +++ b/themes/demo/assets/vendor/bootstrap/bootstrap.min.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * Bootstrap v5.3.0 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ diff --git a/themes/demo/assets/vendor/bootstrap/bootstrap.scss b/themes/demo/assets/vendor/bootstrap/bootstrap.scss new file mode 100644 index 0000000..9516a91 --- /dev/null +++ b/themes/demo/assets/vendor/bootstrap/bootstrap.scss @@ -0,0 +1,75 @@ +// Override Bootstrap's Sass default variables +// +// Nearly all variables in Bootstrap are written with the `!default` flag. +// This allows you to override the default values of those variables before +// you import Bootstrap's source Sass files. +// +// Overriding the default variable values is the best way to customize your +// CSS without writing _new_ styles. For example, change you can either change +// `$body-color` or write more CSS that override's Bootstrap's CSS like so: +// `body { color: red; }`. + +// +// Bring in Bootstrap +// + +// Option 1 +// +// Import all of Bootstrap's CSS + +@import "bootstrap/scss/bootstrap"; + +/* +// Option 2 +// +// Place variable overrides first, then import just the styles you need. Note that some stylesheets are required no matter what. + +// Toggle global options +$enable-gradients: true; +$enable-shadows: true; + +// Customize some defaults +$body-color: #333; +$body-bg: #fff; +$border-radius: .4rem; +$success: #7952b3; + +@import "bootstrap/scss/functions"; // Required +@import "bootstrap/scss/variables"; // Required +@import "bootstrap/scss/mixins"; // Required + +@import "bootstrap/scss/root"; // Required +@import "bootstrap/scss/reboot"; // Required +@import "bootstrap/scss/type"; +// @import "bootstrap/scss/images"; +// @import "bootstrap/scss/code"; +@import "bootstrap/scss/grid"; +// @import "bootstrap/scss/tables"; +// @import "bootstrap/scss/forms"; +@import "bootstrap/scss/buttons"; +@import "bootstrap/scss/transitions"; +// @import "bootstrap/scss/dropdown"; +// @import "bootstrap/scss/button-group"; +// @import "bootstrap/scss/input-group"; // Requires forms +// @import "bootstrap/scss/custom-forms"; +// @import "bootstrap/scss/nav"; +// @import "bootstrap/scss/navbar"; // Requires nav +// @import "bootstrap/scss/card"; +// @import "bootstrap/scss/breadcrumb"; +// @import "bootstrap/scss/pagination"; +// @import "bootstrap/scss/badge"; +// @import "bootstrap/scss/jumbotron"; +// @import "bootstrap/scss/alert"; +// @import "bootstrap/scss/progress"; +// @import "bootstrap/scss/media"; +// @import "bootstrap/scss/list-group"; +@import "bootstrap/scss/close"; +// @import "bootstrap/scss/toasts"; +@import "bootstrap/scss/modal"; // Requires transitions +// @import "bootstrap/scss/tooltip"; +// @import "bootstrap/scss/popover"; +// @import "bootstrap/scss/carousel"; +// @import "bootstrap/scss/spinners"; +@import "bootstrap/scss/utilities"; +// @import "bootstrap/scss/print"; +*/ diff --git a/themes/demo/assets/vendor/codeblocks/codeblocks.js b/themes/demo/assets/vendor/codeblocks/codeblocks.js new file mode 100644 index 0000000..bc46c72 --- /dev/null +++ b/themes/demo/assets/vendor/codeblocks/codeblocks.js @@ -0,0 +1,50 @@ +/* + * Code Blocks + */ +import $ from 'jquery'; +import CodeMirror from 'codemirror'; +import 'codemirror/lib/codemirror.css'; +import 'codemirror/theme/twilight.css'; +import 'codemirror/mode/twig/twig'; +import 'codemirror/mode/php/php'; +import 'codemirror/mode/clike/clike'; +import 'codemirror/mode/xml/xml'; +import 'codemirror/addon/mode/multiplex'; + +$(document).on('render', function() { + $('.code-block > pre').each(function () { + if (this.dataset.disposable) { + return; + } + this.dataset.disposable = true; + + var $pre = $(this), + codeValue = $pre.text(), + language = $pre.data('language'), + modeValue; + + if (language === 'php') { + modeValue = 'text/x-php'; + } + else { + modeValue = { + name: 'twig', + base: 'text/html' + }; + } + + $pre.empty(); + + new CodeMirror(this, { + value: codeValue, + mode: modeValue, + lineNumbers: true, + readOnly: true + }); + }); + +}); + +$(document).on('click', '.expand-code', function () { + $(this).closest('.collapsed-code-block').removeClass('collapsed'); +}); diff --git a/themes/demo/assets/vendor/codeblocks/codeblocks.min.js b/themes/demo/assets/vendor/codeblocks/codeblocks.min.js new file mode 100644 index 0000000..eaba9c9 --- /dev/null +++ b/themes/demo/assets/vendor/codeblocks/codeblocks.min.js @@ -0,0 +1 @@ +(()=>{var e,t={830:(e,t,r)=>{"use strict";const n=jQuery;var i=r.n(n),o=r(631),a=r.n(o),l=r(379),s=r.n(l),c=r(789),u={insert:"head",singleton:!1};s()(c.Z,u);c.Z.locals;var d=r(845),f={insert:"head",singleton:!1};s()(d.Z,f);d.Z.locals;r(702),r(959),r(762),r(589),r(93);i()(document).on("render",(function(){i()(".code-block > pre").each((function(){if(!this.dataset.disposable){this.dataset.disposable=!0;var e,t=i()(this),r=t.text();e="php"===t.data("language")?"text/x-php":{name:"twig",base:"text/html"},t.empty(),new(a())(this,{value:r,mode:e,lineNumbers:!0,readOnly:!0})}}))})),i()(document).on("click",".expand-code",(function(){i()(this).closest(".collapsed-code-block").removeClass("collapsed")}))},93:(e,t,r)=>{!function(e){"use strict";e.multiplexingMode=function(t){var r=Array.prototype.slice.call(arguments,1);function n(e,t,r,n){if("string"==typeof t){var i=e.indexOf(t,r);return n&&i>-1?i+t.length:i}var o=t.exec(r?e.slice(r):e);return o?o.index+r+(n?o[0].length:0):-1}return{startState:function(){return{outer:e.startState(t),innerActive:null,inner:null,startingInner:!1}},copyState:function(r){return{outer:e.copyState(t,r.outer),innerActive:r.innerActive,inner:r.innerActive&&e.copyState(r.innerActive.mode,r.inner),startingInner:r.startingInner}},token:function(i,o){if(o.innerActive){var a=o.innerActive;if(c=i.string,!a.close&&i.sol())return o.innerActive=o.inner=null,this.token(i,o);if((d=a.close&&!o.startingInner?n(c,a.close,i.pos,a.parseDelimiters):-1)==i.pos&&!a.parseDelimiters)return i.match(a.close),o.innerActive=o.inner=null,a.delimStyle&&a.delimStyle+" "+a.delimStyle+"-close";d>-1&&(i.string=c.slice(0,d));var l=a.mode.token(i,o.inner);return d>-1?i.string=c:i.pos>i.start&&(o.startingInner=!1),d==i.pos&&a.parseDelimiters&&(o.innerActive=o.inner=null),a.innerStyle&&(l=l?l+" "+a.innerStyle:a.innerStyle),l}for(var s=1/0,c=i.string,u=0;u2),v=/Android/.test(e),y=g||v||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),b=g||/Mac/.test(t),w=/\bCrOS\b/.test(e),x=/win/i.test(t),k=f&&e.match(/Version\/(\d*\.\d*)/);k&&(k=Number(k[1])),k&&k>=15&&(f=!1,s=!0);var _=b&&(c||f&&(null==k||k<12.11)),C=r||a&&l>=9;function S(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var M,T=function(e,t){var r=e.className,n=S(t).exec(r);if(n){var i=r.slice(n.index+n[0].length);e.className=r.slice(0,n.index)+(i?n[1]+i:"")}};function L(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function N(e,t){return L(e).appendChild(t)}function A(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r),n&&(i.style.cssText=n),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o=t)return a+(t-o);a+=l-o,a+=r-a%r,o=l+1}}g?P=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:a&&(P=function(e){try{e.select()}catch(e){}});var H=function(){this.id=null,this.f=null,this.time=0,this.handler=W(this.onTimeout,this)};function R(e,t){for(var r=0;r=t)return n+Math.min(a,t-i);if(i+=o-n,n=o+1,(i+=r-i%r)>=t)return n}}var G=[""];function X(e){for(;G.length<=e;)G.push(Y(G)+" ");return G[e]}function Y(e){return e[e.length-1]}function Z(e,t){for(var r=[],n=0;n"€"&&(e.toUpperCase()!=e.toLowerCase()||te.test(e))}function ne(e,t){return t?!!(t.source.indexOf("\\w")>-1&&re(e))||t.test(e):re(e)}function ie(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var oe=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function ae(e){return e.charCodeAt(0)>=768&&oe.test(e)}function le(e,t,r){for(;(r<0?t>0:tr?-1:1;;){if(t==r)return t;var i=(t+r)/2,o=n<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:r;e(o)?r=o:t=o+n}}function ce(e,t,r,n){if(!e)return n(t,r,"ltr",0);for(var i=!1,o=0;ot||t==r&&a.to==t)&&(n(Math.max(a.from,t),Math.min(a.to,r),1==a.level?"rtl":"ltr",o),i=!0)}i||n(t,r,"ltr")}var ue=null;function de(e,t,r){var n;ue=null;for(var i=0;it)return i;o.to==t&&(o.from!=o.to&&"before"==r?n=i:ue=i),o.from==t&&(o.from!=o.to&&"before"!=r?n=i:ue=i)}return null!=n?n:ue}var fe=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function r(r){return r<=247?e.charAt(r):1424<=r&&r<=1524?"R":1536<=r&&r<=1785?t.charAt(r-1536):1774<=r&&r<=2220?"r":8192<=r&&r<=8203?"w":8204==r?"b":"L"}var n=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,i=/[stwN]/,o=/[LRr]/,a=/[Lb1n]/,l=/[1n]/;function s(e,t,r){this.level=e,this.from=t,this.to=r}return function(e,t){var c="ltr"==t?"L":"R";if(0==e.length||"ltr"==t&&!n.test(e))return!1;for(var u=e.length,d=[],f=0;f-1&&(n[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function ye(e,t){var r=ge(e,t);if(r.length)for(var n=Array.prototype.slice.call(arguments,2),i=0;i0}function ke(e){e.prototype.on=function(e,t){me(this,e,t)},e.prototype.off=function(e,t){ve(this,e,t)}}function _e(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function Ce(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function Se(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function Me(e){_e(e),Ce(e)}function Te(e){return e.target||e.srcElement}function Le(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),b&&e.ctrlKey&&1==t&&(t=3),t}var Ne,Ae,Oe=function(){if(a&&l<9)return!1;var e=A("div");return"draggable"in e||"dragDrop"in e}();function ze(e){if(null==Ne){var t=A("span","​");N(e,A("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(Ne=t.offsetWidth<=1&&t.offsetHeight>2&&!(a&&l<8))}var r=Ne?A("span","​"):A("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function De(e){if(null!=Ae)return Ae;var t=N(e,document.createTextNode("AخA")),r=M(t,0,1).getBoundingClientRect(),n=M(t,1,2).getBoundingClientRect();return L(e),!(!r||r.left==r.right)&&(Ae=n.right-r.right<3)}var Ee,Ie=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,r=[],n=e.length;t<=n;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),a=o.indexOf("\r");-1!=a?(r.push(o.slice(0,a)),t+=a+1):(r.push(o),t=i+1)}return r}:function(e){return e.split(/\r\n?|\n/)},Pe=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},We="oncopy"in(Ee=A("div"))||(Ee.setAttribute("oncopy","return;"),"function"==typeof Ee.oncopy),qe=null;function Fe(e){if(null!=qe)return qe;var t=N(e,A("span","x")),r=t.getBoundingClientRect(),n=M(t,0,1).getBoundingClientRect();return qe=Math.abs(r.left-n.left)>1}var He={},Re={};function Be(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),He[e]=t}function je(e,t){Re[e]=t}function Ue(e){if("string"==typeof e&&Re.hasOwnProperty(e))e=Re[e];else if(e&&"string"==typeof e.name&&Re.hasOwnProperty(e.name)){var t=Re[e.name];"string"==typeof t&&(t={name:t}),(e=ee(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Ue("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Ue("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function Ke(e,t){t=Ue(t);var r=He[t.name];if(!r)return Ke(e,"text/plain");var n=r(e,t);if(Ve.hasOwnProperty(t.name)){var i=Ve[t.name];for(var o in i)i.hasOwnProperty(o)&&(n.hasOwnProperty(o)&&(n["_"+o]=n[o]),n[o]=i[o])}if(n.name=t.name,t.helperType&&(n.helperType=t.helperType),t.modeProps)for(var a in t.modeProps)n[a]=t.modeProps[a];return n}var Ve={};function $e(e,t){q(t,Ve.hasOwnProperty(e)?Ve[e]:Ve[e]={})}function Ge(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var r={};for(var n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function Xe(e,t){for(var r;e.innerMode&&(r=e.innerMode(t))&&r.mode!=e;)t=r.state,e=r.mode;return r||{mode:e,state:t}}function Ye(e,t,r){return!e.startState||e.startState(t,r)}var Ze=function(e,t,r){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=r};function Qe(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var r=e;!r.lines;)for(var n=0;;++n){var i=r.children[n],o=i.chunkSize();if(t=e.first&&tr?at(r,Qe(e,r).text.length):ht(t,Qe(e,t.line).text.length)}function ht(e,t){var r=e.ch;return null==r||r>t?at(e.line,t):r<0?at(e.line,0):e}function mt(e,t){for(var r=[],n=0;n=this.string.length},Ze.prototype.sol=function(){return this.pos==this.lineStart},Ze.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Ze.prototype.next=function(){if(this.post},Ze.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},Ze.prototype.skipToEnd=function(){this.pos=this.string.length},Ze.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},Ze.prototype.backUp=function(e){this.pos-=e},Ze.prototype.column=function(){return this.lastColumnPos0?null:(n&&!1!==t&&(this.pos+=n[0].length),n)}var i=function(e){return r?e.toLowerCase():e};if(i(this.string.substr(this.pos,e.length))==i(e))return!1!==t&&(this.pos+=e.length),!0},Ze.prototype.current=function(){return this.string.slice(this.start,this.pos)},Ze.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},Ze.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},Ze.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var gt=function(e,t){this.state=e,this.lookAhead=t},vt=function(e,t,r,n){this.state=t,this.doc=e,this.line=r,this.maxLookAhead=n||0,this.baseTokens=null,this.baseTokenPos=1};function yt(e,t,r,n){var i=[e.state.modeGen],o={};Tt(e,t.text,e.doc.mode,r,(function(e,t){return i.push(e,t)}),o,n);for(var a=r.state,l=function(n){r.baseTokens=i;var l=e.state.overlays[n],s=1,c=0;r.state=!0,Tt(e,t.text,l.mode,r,(function(e,t){for(var r=s;ce&&i.splice(s,1,e,i[s+1],n),s+=2,c=Math.min(e,n)}if(t)if(l.opaque)i.splice(r,s-r,e,"overlay "+t),s=r+2;else for(;re.options.maxHighlightLength&&Ge(e.doc.mode,n.state),o=yt(e,t,n);i&&(n.state=i),t.stateAfter=n.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),r===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function wt(e,t,r){var n=e.doc,i=e.display;if(!n.mode.startState)return new vt(n,!0,t);var o=Lt(e,t,r),a=o>n.first&&Qe(n,o-1).stateAfter,l=a?vt.fromSaved(n,a,o):new vt(n,Ye(n.mode),o);return n.iter(o,t,(function(r){xt(e,r.text,l);var n=l.line;r.stateAfter=n==t-1||n%5==0||n>=i.viewFrom&&nt.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}vt.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},vt.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},vt.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},vt.fromSaved=function(e,t,r){return t instanceof gt?new vt(e,Ge(e.mode,t.state),r,t.lookAhead):new vt(e,Ge(e.mode,t),r)},vt.prototype.save=function(e){var t=!1!==e?Ge(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new gt(t,this.maxLookAhead):t};var Ct=function(e,t,r){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=r};function St(e,t,r,n){var i,o,a=e.doc,l=a.mode,s=Qe(a,(t=pt(a,t)).line),c=wt(e,t.line,r),u=new Ze(s.text,e.options.tabSize,c);for(n&&(o=[]);(n||u.pose.options.maxHighlightLength?(l=!1,a&&xt(e,t,n,d.pos),d.pos=t.length,s=null):s=Mt(_t(r,d,n.state,f),o),f){var p=f[0].name;p&&(s="m-"+(s?p+" "+s:p))}if(!l||u!=s){for(;ca;--l){if(l<=o.first)return o.first;var s=Qe(o,l-1),c=s.stateAfter;if(c&&(!r||l+(c instanceof gt?c.lookAhead:0)<=o.modeFrontier))return l;var u=F(s.text,null,e.options.tabSize);(null==i||n>u)&&(i=l-1,n=u)}return i}function Nt(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontierr;n--){var i=Qe(e,n).stateAfter;if(i&&(!(i instanceof gt)||n+i.lookAhead=t:o.to>t);(n||(n=[])).push(new Et(a,o.from,l?null:o.to))}}return n}function Ft(e,t,r){var n;if(e)for(var i=0;i=t:o.to>t)||o.from==t&&"bookmark"==a.type&&(!r||o.marker.insertLeft)){var l=null==o.from||(a.inclusiveLeft?o.from<=t:o.from0&&l)for(var b=0;b0)){var u=[s,1],d=lt(c.from,l.from),f=lt(c.to,l.to);(d<0||!a.inclusiveLeft&&!d)&&u.push({from:c.from,to:l.from}),(f>0||!a.inclusiveRight&&!f)&&u.push({from:l.to,to:c.to}),i.splice.apply(i,u),s+=u.length-3}}return i}function jt(e){var t=e.markedSpans;if(t){for(var r=0;rt)&&(!r||$t(r,o.marker)<0)&&(r=o.marker)}return r}function Qt(e,t,r,n,i){var o=Qe(e,t),a=Ot&&o.markedSpans;if(a)for(var l=0;l=0&&d<=0||u<=0&&d>=0)&&(u<=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?lt(c.to,r)>=0:lt(c.to,r)>0)||u>=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?lt(c.from,n)<=0:lt(c.from,n)<0)))return!0}}}function Jt(e){for(var t;t=Xt(e);)e=t.find(-1,!0).line;return e}function er(e){for(var t;t=Yt(e);)e=t.find(1,!0).line;return e}function tr(e){for(var t,r;t=Yt(e);)e=t.find(1,!0).line,(r||(r=[])).push(e);return r}function rr(e,t){var r=Qe(e,t),n=Jt(r);return r==n?t:rt(n)}function nr(e,t){if(t>e.lastLine())return t;var r,n=Qe(e,t);if(!ir(e,n))return t;for(;r=Yt(n);)n=r.find(1,!0).line;return rt(n)+1}function ir(e,t){var r=Ot&&t.markedSpans;if(r)for(var n=void 0,i=0;it.maxLineLength&&(t.maxLineLength=r,t.maxLine=e)}))}var cr=function(e,t,r){this.text=e,Ut(this,t),this.height=r?r(this):1};function ur(e,t,r,n){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),null!=e.order&&(e.order=null),jt(e),Ut(e,r);var i=n?n(e):1;i!=e.height&&tt(e,i)}function dr(e){e.parent=null,jt(e)}cr.prototype.lineNo=function(){return rt(this)},ke(cr);var fr={},pr={};function hr(e,t){if(!e||/^\s*$/.test(e))return null;var r=t.addModeClass?pr:fr;return r[e]||(r[e]=e.replace(/\S+/g,"cm-$&"))}function mr(e,t){var r=O("span",null,null,s?"padding-right: .1px":null),n={pre:O("pre",[r],"CodeMirror-line"),content:r,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,a=void 0;n.pos=0,n.addToken=vr,De(e.display.measure)&&(a=pe(o,e.doc.direction))&&(n.addToken=br(n.addToken,a)),n.map=[],xr(o,n,bt(e,o,t!=e.display.externalMeasured&&rt(o))),o.styleClasses&&(o.styleClasses.bgClass&&(n.bgClass=I(o.styleClasses.bgClass,n.bgClass||"")),o.styleClasses.textClass&&(n.textClass=I(o.styleClasses.textClass,n.textClass||""))),0==n.map.length&&n.map.push(0,0,n.content.appendChild(ze(e.display.measure))),0==i?(t.measure.map=n.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(n.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(s){var l=n.content.lastChild;(/\bcm-tab\b/.test(l.className)||l.querySelector&&l.querySelector(".cm-tab"))&&(n.content.className="cm-tab-wrap-hack")}return ye(e,"renderLine",e,t.line,n.pre),n.pre.className&&(n.textClass=I(n.pre.className,n.textClass||"")),n}function gr(e){var t=A("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function vr(e,t,r,n,i,o,s){if(t){var c,u=e.splitSpaces?yr(t,e.trailingSpace):t,d=e.cm.state.specialChars,f=!1;if(d.test(t)){c=document.createDocumentFragment();for(var p=0;;){d.lastIndex=p;var h=d.exec(t),m=h?h.index-p:t.length-p;if(m){var g=document.createTextNode(u.slice(p,p+m));a&&l<9?c.appendChild(A("span",[g])):c.appendChild(g),e.map.push(e.pos,e.pos+m,g),e.col+=m,e.pos+=m}if(!h)break;p+=m+1;var v=void 0;if("\t"==h[0]){var y=e.cm.options.tabSize,b=y-e.col%y;(v=c.appendChild(A("span",X(b),"cm-tab"))).setAttribute("role","presentation"),v.setAttribute("cm-text","\t"),e.col+=b}else"\r"==h[0]||"\n"==h[0]?((v=c.appendChild(A("span","\r"==h[0]?"␍":"␤","cm-invalidchar"))).setAttribute("cm-text",h[0]),e.col+=1):((v=e.cm.options.specialCharPlaceholder(h[0])).setAttribute("cm-text",h[0]),a&&l<9?c.appendChild(A("span",[v])):c.appendChild(v),e.col+=1);e.map.push(e.pos,e.pos+1,v),e.pos++}}else e.col+=t.length,c=document.createTextNode(u),e.map.push(e.pos,e.pos+t.length,c),a&&l<9&&(f=!0),e.pos+=t.length;if(e.trailingSpace=32==u.charCodeAt(t.length-1),r||n||i||f||o||s){var w=r||"";n&&(w+=n),i&&(w+=i);var x=A("span",[c],w,o);if(s)for(var k in s)s.hasOwnProperty(k)&&"style"!=k&&"class"!=k&&x.setAttribute(k,s[k]);return e.content.appendChild(x)}e.content.appendChild(c)}}function yr(e,t){if(e.length>1&&!/ /.test(e))return e;for(var r=t,n="",i=0;ic&&d.from<=c);f++);if(d.to>=u)return e(r,n,i,o,a,l,s);e(r,n.slice(0,d.to-c),i,o,null,l,s),o=null,n=n.slice(d.to-c),c=d.to}}}function wr(e,t,r,n){var i=!n&&r.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!n&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",r.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function xr(e,t,r){var n=e.markedSpans,i=e.text,o=0;if(n)for(var a,l,s,c,u,d,f,p=i.length,h=0,m=1,g="",v=0;;){if(v==h){s=c=u=l="",f=null,d=null,v=1/0;for(var y=[],b=void 0,w=0;wh||k.collapsed&&x.to==h&&x.from==h)){if(null!=x.to&&x.to!=h&&v>x.to&&(v=x.to,c=""),k.className&&(s+=" "+k.className),k.css&&(l=(l?l+";":"")+k.css),k.startStyle&&x.from==h&&(u+=" "+k.startStyle),k.endStyle&&x.to==v&&(b||(b=[])).push(k.endStyle,x.to),k.title&&((f||(f={})).title=k.title),k.attributes)for(var _ in k.attributes)(f||(f={}))[_]=k.attributes[_];k.collapsed&&(!d||$t(d.marker,k)<0)&&(d=x)}else x.from>h&&v>x.from&&(v=x.from)}if(b)for(var C=0;C=p)break;for(var M=Math.min(p,v);;){if(g){var T=h+g.length;if(!d){var L=T>M?g.slice(0,M-h):g;t.addToken(t,L,a?a+s:s,u,h+L.length==v?c:"",l,f)}if(T>=M){g=g.slice(M-h),h=M;break}h=T,u=""}g=i.slice(o,o=r[m++]),a=hr(r[m++],t.cm.options)}}else for(var N=1;N2&&o.push((s.bottom+c.top)/2-r.top)}}o.push(r.bottom-r.top)}}function Qr(e,t,r){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};if(e.rest){for(var n=0;nr)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}}function Jr(e,t){var r=rt(t=Jt(t)),n=e.display.externalMeasured=new kr(e.doc,t,r);n.lineN=r;var i=n.built=mr(e,n);return n.text=i.pre,N(e.display.lineMeasure,i.pre),n}function en(e,t,r,n){return nn(e,rn(e,t),r,n)}function tn(e,t){if(t>=e.display.viewFrom&&t=r.lineN&&tt)&&(i=(o=s-l)-1,t>=s&&(a="right")),null!=i){if(n=e[c+2],l==s&&r==(n.insertLeft?"left":"right")&&(a=r),"left"==r&&0==i)for(;c&&e[c-2]==e[c-3]&&e[c-1].insertLeft;)n=e[2+(c-=3)],a="left";if("right"==r&&i==s-l)for(;c=0&&(r=e[i]).left==r.right;i--);return r}function cn(e,t,r,n){var i,o=ln(t.map,r,n),s=o.node,c=o.start,u=o.end,d=o.collapse;if(3==s.nodeType){for(var f=0;f<4;f++){for(;c&&ae(t.line.text.charAt(o.coverStart+c));)--c;for(;o.coverStart+u0&&(d=n="right"),i=e.options.lineWrapping&&(p=s.getClientRects()).length>1?p["right"==n?p.length-1:0]:s.getBoundingClientRect()}if(a&&l<9&&!c&&(!i||!i.left&&!i.right)){var h=s.parentNode.getClientRects()[0];i=h?{left:h.left,right:h.left+On(e.display),top:h.top,bottom:h.bottom}:an}for(var m=i.top-t.rect.top,g=i.bottom-t.rect.top,v=(m+g)/2,y=t.view.measure.heights,b=0;b=n.text.length?(s=n.text.length,c="before"):s<=0&&(s=0,c="after"),!l)return a("before"==c?s-1:s,"before"==c);function u(e,t,r){return a(r?e-1:e,1==l[t].level!=r)}var d=de(l,s,c),f=ue,p=u(s,d,"before"==c);return null!=f&&(p.other=u(s,f,"before"!=c)),p}function xn(e,t){var r=0;t=pt(e.doc,t),e.options.lineWrapping||(r=On(e.display)*t.ch);var n=Qe(e.doc,t.line),i=ar(n)+Kr(e.display);return{left:r,right:r,top:i,bottom:i+n.height}}function kn(e,t,r,n,i){var o=at(e,t,r);return o.xRel=i,n&&(o.outside=n),o}function _n(e,t,r){var n=e.doc;if((r+=e.display.viewOffset)<0)return kn(n.first,0,null,-1,-1);var i=nt(n,r),o=n.first+n.size-1;if(i>o)return kn(n.first+n.size-1,Qe(n,o).text.length,null,1,1);t<0&&(t=0);for(var a=Qe(n,i);;){var l=Tn(e,a,i,t,r),s=Zt(a,l.ch+(l.xRel>0||l.outside>0?1:0));if(!s)return l;var c=s.find(1);if(c.line==i)return c;a=Qe(n,i=c.line)}}function Cn(e,t,r,n){n-=gn(t);var i=t.text.length,o=se((function(t){return nn(e,r,t-1).bottom<=n}),i,0);return{begin:o,end:i=se((function(t){return nn(e,r,t).top>n}),o,i)}}function Sn(e,t,r,n){return r||(r=rn(e,t)),Cn(e,t,r,vn(e,t,nn(e,r,n),"line").top)}function Mn(e,t,r,n){return!(e.bottom<=r)&&(e.top>r||(n?e.left:e.right)>t)}function Tn(e,t,r,n,i){i-=ar(t);var o=rn(e,t),a=gn(t),l=0,s=t.text.length,c=!0,u=pe(t,e.doc.direction);if(u){var d=(e.options.lineWrapping?Nn:Ln)(e,t,r,o,u,n,i);l=(c=1!=d.level)?d.from:d.to-1,s=c?d.to:d.from-1}var f,p,h=null,m=null,g=se((function(t){var r=nn(e,o,t);return r.top+=a,r.bottom+=a,!!Mn(r,n,i,!1)&&(r.top<=i&&r.left<=n&&(h=t,m=r),!0)}),l,s),v=!1;if(m){var y=n-m.left=w.bottom?1:0}return kn(r,g=le(t.text,g,1),p,v,n-f)}function Ln(e,t,r,n,i,o,a){var l=se((function(l){var s=i[l],c=1!=s.level;return Mn(wn(e,at(r,c?s.to:s.from,c?"before":"after"),"line",t,n),o,a,!0)}),0,i.length-1),s=i[l];if(l>0){var c=1!=s.level,u=wn(e,at(r,c?s.from:s.to,c?"after":"before"),"line",t,n);Mn(u,o,a,!0)&&u.top>a&&(s=i[l-1])}return s}function Nn(e,t,r,n,i,o,a){var l=Cn(e,t,n,a),s=l.begin,c=l.end;/\s/.test(t.text.charAt(c-1))&&c--;for(var u=null,d=null,f=0;f=c||p.to<=s)){var h=nn(e,n,1!=p.level?Math.min(c,p.to)-1:Math.max(s,p.from)).right,m=hm)&&(u=p,d=m)}}return u||(u=i[i.length-1]),u.fromc&&(u={from:u.from,to:c,level:u.level}),u}function An(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==on){on=A("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)on.appendChild(document.createTextNode("x")),on.appendChild(A("br"));on.appendChild(document.createTextNode("x"))}N(e.measure,on);var r=on.offsetHeight/50;return r>3&&(e.cachedTextHeight=r),L(e.measure),r||1}function On(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=A("span","xxxxxxxxxx"),r=A("pre",[t],"CodeMirror-line-like");N(e.measure,r);var n=t.getBoundingClientRect(),i=(n.right-n.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function zn(e){for(var t=e.display,r={},n={},i=t.gutters.clientLeft,o=t.gutters.firstChild,a=0;o;o=o.nextSibling,++a){var l=e.display.gutterSpecs[a].className;r[l]=o.offsetLeft+o.clientLeft+i,n[l]=o.clientWidth}return{fixedPos:Dn(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:r,gutterWidth:n,wrapperWidth:t.wrapper.clientWidth}}function Dn(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function En(e){var t=An(e.display),r=e.options.lineWrapping,n=r&&Math.max(5,e.display.scroller.clientWidth/On(e.display)-3);return function(i){if(ir(e.doc,i))return 0;var o=0;if(i.widgets)for(var a=0;a0&&(s=Qe(e.doc,c.line).text).length==c.ch){var u=F(s,s.length,e.options.tabSize)-s.length;c=at(c.line,Math.max(0,Math.round((o-$r(e.display).left)/On(e.display))-u))}return c}function Wn(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var r=e.display.view,n=0;nt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)Ot&&rr(e.doc,t)i.viewFrom?Hn(e):(i.viewFrom+=n,i.viewTo+=n);else if(t<=i.viewFrom&&r>=i.viewTo)Hn(e);else if(t<=i.viewFrom){var o=Rn(e,r,r+n,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=n):Hn(e)}else if(r>=i.viewTo){var a=Rn(e,t,t,-1);a?(i.view=i.view.slice(0,a.index),i.viewTo=a.lineN):Hn(e)}else{var l=Rn(e,t,t,-1),s=Rn(e,r,r+n,1);l&&s?(i.view=i.view.slice(0,l.index).concat(_r(e,l.lineN,s.lineN)).concat(i.view.slice(s.index)),i.viewTo+=n):Hn(e)}var c=i.externalMeasured;c&&(r=i.lineN&&t=n.viewTo)){var o=n.view[Wn(e,t)];if(null!=o.node){var a=o.changes||(o.changes=[]);-1==R(a,r)&&a.push(r)}}}function Hn(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function Rn(e,t,r,n){var i,o=Wn(e,t),a=e.display.view;if(!Ot||r==e.doc.first+e.doc.size)return{index:o,lineN:r};for(var l=e.display.viewFrom,s=0;s0){if(o==a.length-1)return null;i=l+a[o].size-t,o++}else i=l-t;t+=i,r+=i}for(;rr(e.doc,r)!=r;){if(o==(n<0?0:a.length-1))return null;r+=n*a[o-(n<0?1:0)].size,o+=n}return{index:o,lineN:r}}function Bn(e,t,r){var n=e.display;0==n.view.length||t>=n.viewTo||r<=n.viewFrom?(n.view=_r(e,t,r),n.viewFrom=t):(n.viewFrom>t?n.view=_r(e,t,n.viewFrom).concat(n.view):n.viewFromr&&(n.view=n.view.slice(0,Wn(e,r)))),n.viewTo=r}function jn(e){for(var t=e.display.view,r=0,n=0;n=e.display.viewTo||s.to().line0?a:e.defaultCharWidth())+"px"}if(n.other){var l=r.appendChild(A("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));l.style.display="",l.style.left=n.other.left+"px",l.style.top=n.other.top+"px",l.style.height=.85*(n.other.bottom-n.other.top)+"px"}}function $n(e,t){return e.top-t.top||e.left-t.left}function Gn(e,t,r){var n=e.display,i=e.doc,o=document.createDocumentFragment(),a=$r(e.display),l=a.left,s=Math.max(n.sizerWidth,Xr(e)-n.sizer.offsetLeft)-a.right,c="ltr"==i.direction;function u(e,t,r,n){t<0&&(t=0),t=Math.round(t),n=Math.round(n),o.appendChild(A("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px;\n top: "+t+"px; width: "+(null==r?s-e:r)+"px;\n height: "+(n-t)+"px"))}function d(t,r,n){var o,a,d=Qe(i,t),f=d.text.length;function p(r,n){return bn(e,at(t,r),"div",d,n)}function h(t,r,n){var i=Sn(e,d,null,t),o="ltr"==r==("after"==n)?"left":"right";return p("after"==n?i.begin:i.end-(/\s/.test(d.text.charAt(i.end-1))?2:1),o)[o]}var m=pe(d,i.direction);return ce(m,r||0,null==n?f:n,(function(e,t,i,d){var g="ltr"==i,v=p(e,g?"left":"right"),y=p(t-1,g?"right":"left"),b=null==r&&0==e,w=null==n&&t==f,x=0==d,k=!m||d==m.length-1;if(y.top-v.top<=3){var _=(c?w:b)&&k,C=(c?b:w)&&x?l:(g?v:y).left,S=_?s:(g?y:v).right;u(C,v.top,S-C,v.bottom)}else{var M,T,L,N;g?(M=c&&b&&x?l:v.left,T=c?s:h(e,i,"before"),L=c?l:h(t,i,"after"),N=c&&w&&k?s:y.right):(M=c?h(e,i,"before"):l,T=!c&&b&&x?s:v.right,L=!c&&w&&k?l:y.left,N=c?h(t,i,"after"):s),u(M,v.top,T-M,v.bottom),v.bottom0?t.blinker=setInterval((function(){e.hasFocus()||Jn(e),t.cursorDiv.style.visibility=(r=!r)?"":"hidden"}),e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function Yn(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||Qn(e))}function Zn(e){e.state.delayingBlurEvent=!0,setTimeout((function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&Jn(e))}),100)}function Qn(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(ye(e,"focus",e,t),e.state.focused=!0,E(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),s&&setTimeout((function(){return e.display.input.reset(!0)}),20)),e.display.input.receivedFocus()),Xn(e))}function Jn(e,t){e.state.delayingBlurEvent||(e.state.focused&&(ye(e,"blur",e,t),e.state.focused=!1,T(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout((function(){e.state.focused||(e.display.shift=!1)}),150))}function ei(e){for(var t=e.display,r=t.lineDiv.offsetTop,n=Math.max(0,t.scroller.getBoundingClientRect().top),i=t.lineDiv.getBoundingClientRect().top,o=0,s=0;s.005||m<-.005)&&(ie.display.sizerWidth){var v=Math.ceil(f/On(e.display));v>e.display.maxLineLength&&(e.display.maxLineLength=v,e.display.maxLine=c.line,e.display.maxLineChanged=!0)}}}Math.abs(o)>2&&(t.scroller.scrollTop+=o)}function ti(e){if(e.widgets)for(var t=0;t=a&&(o=nt(t,ar(Qe(t,s))-e.wrapper.clientHeight),a=s)}return{from:o,to:Math.max(a,o+1)}}function ni(e,t){if(!be(e,"scrollCursorIntoView")){var r=e.display,n=r.sizer.getBoundingClientRect(),i=null;if(t.top+n.top<0?i=!0:t.bottom+n.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!m){var o=A("div","​",null,"position: absolute;\n top: "+(t.top-r.viewOffset-Kr(e.display))+"px;\n height: "+(t.bottom-t.top+Gr(e)+r.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}function ii(e,t,r,n){var i;null==n&&(n=0),e.options.lineWrapping||t!=r||(r="before"==t.sticky?at(t.line,t.ch+1,"before"):t,t=t.ch?at(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t);for(var o=0;o<5;o++){var a=!1,l=wn(e,t),s=r&&r!=t?wn(e,r):l,c=ai(e,i={left:Math.min(l.left,s.left),top:Math.min(l.top,s.top)-n,right:Math.max(l.left,s.left),bottom:Math.max(l.bottom,s.bottom)+n}),u=e.doc.scrollTop,d=e.doc.scrollLeft;if(null!=c.scrollTop&&(pi(e,c.scrollTop),Math.abs(e.doc.scrollTop-u)>1&&(a=!0)),null!=c.scrollLeft&&(mi(e,c.scrollLeft),Math.abs(e.doc.scrollLeft-d)>1&&(a=!0)),!a)break}return i}function oi(e,t){var r=ai(e,t);null!=r.scrollTop&&pi(e,r.scrollTop),null!=r.scrollLeft&&mi(e,r.scrollLeft)}function ai(e,t){var r=e.display,n=An(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:r.scroller.scrollTop,o=Yr(e),a={};t.bottom-t.top>o&&(t.bottom=t.top+o);var l=e.doc.height+Vr(r),s=t.topl-n;if(t.topi+o){var u=Math.min(t.top,(c?l:t.bottom)-o);u!=i&&(a.scrollTop=u)}var d=e.options.fixedGutter?0:r.gutters.offsetWidth,f=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:r.scroller.scrollLeft-d,p=Xr(e)-r.gutters.offsetWidth,h=t.right-t.left>p;return h&&(t.right=t.left+p),t.left<10?a.scrollLeft=0:t.leftp+f-3&&(a.scrollLeft=t.right+(h?0:10)-p),a}function li(e,t){null!=t&&(di(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function si(e){di(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function ci(e,t,r){null==t&&null==r||di(e),null!=t&&(e.curOp.scrollLeft=t),null!=r&&(e.curOp.scrollTop=r)}function ui(e,t){di(e),e.curOp.scrollToPos=t}function di(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,fi(e,xn(e,t.from),xn(e,t.to),t.margin))}function fi(e,t,r,n){var i=ai(e,{left:Math.min(t.left,r.left),top:Math.min(t.top,r.top)-n,right:Math.max(t.right,r.right),bottom:Math.max(t.bottom,r.bottom)+n});ci(e,i.scrollLeft,i.scrollTop)}function pi(e,t){Math.abs(e.doc.scrollTop-t)<2||(r||Ui(e,{top:t}),hi(e,t,!0),r&&Ui(e),Pi(e,100))}function hi(e,t,r){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),(e.display.scroller.scrollTop!=t||r)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function mi(e,t,r,n){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(r?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!n||(e.doc.scrollLeft=t,Gi(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function gi(e){var t=e.display,r=t.gutters.offsetWidth,n=Math.round(e.doc.height+Vr(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?r:0,docHeight:n,scrollHeight:n+Gr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:r}}var vi=function(e,t,r){this.cm=r;var n=this.vert=A("div",[A("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=A("div",[A("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");n.tabIndex=i.tabIndex=-1,e(n),e(i),me(n,"scroll",(function(){n.clientHeight&&t(n.scrollTop,"vertical")})),me(i,"scroll",(function(){i.clientWidth&&t(i.scrollLeft,"horizontal")})),this.checkedZeroWidth=!1,a&&l<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};vi.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,n=e.nativeBarWidth;if(r){this.vert.style.display="block",this.vert.style.bottom=t?n+"px":"0";var i=e.viewHeight-(t?n:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=r?n+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(r?n:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==n&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?n:0,bottom:t?n:0}},vi.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},vi.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},vi.prototype.zeroWidthHack=function(){var e=b&&!h?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new H,this.disableVert=new H},vi.prototype.enableZeroWidthBar=function(e,t,r){function n(){var i=e.getBoundingClientRect();("vert"==r?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,n)}e.style.pointerEvents="auto",t.set(1e3,n)},vi.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var yi=function(){};function bi(e,t){t||(t=gi(e));var r=e.display.barWidth,n=e.display.barHeight;wi(e,t);for(var i=0;i<4&&r!=e.display.barWidth||n!=e.display.barHeight;i++)r!=e.display.barWidth&&e.options.lineWrapping&&ei(e),wi(e,gi(e)),r=e.display.barWidth,n=e.display.barHeight}function wi(e,t){var r=e.display,n=r.scrollbars.update(t);r.sizer.style.paddingRight=(r.barWidth=n.right)+"px",r.sizer.style.paddingBottom=(r.barHeight=n.bottom)+"px",r.heightForcer.style.borderBottom=n.bottom+"px solid transparent",n.right&&n.bottom?(r.scrollbarFiller.style.display="block",r.scrollbarFiller.style.height=n.bottom+"px",r.scrollbarFiller.style.width=n.right+"px"):r.scrollbarFiller.style.display="",n.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(r.gutterFiller.style.display="block",r.gutterFiller.style.height=n.bottom+"px",r.gutterFiller.style.width=t.gutterWidth+"px"):r.gutterFiller.style.display=""}yi.prototype.update=function(){return{bottom:0,right:0}},yi.prototype.setScrollLeft=function(){},yi.prototype.setScrollTop=function(){},yi.prototype.clear=function(){};var xi={native:vi,null:yi};function ki(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&T(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new xi[e.options.scrollbarStyle]((function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),me(t,"mousedown",(function(){e.state.focused&&setTimeout((function(){return e.display.input.focus()}),0)})),t.setAttribute("cm-not-content","true")}),(function(t,r){"horizontal"==r?mi(e,t):pi(e,t)}),e),e.display.scrollbars.addClass&&E(e.display.wrapper,e.display.scrollbars.addClass)}var _i=0;function Ci(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++_i,markArrays:null},Sr(e.curOp)}function Si(e){var t=e.curOp;t&&Tr(t,(function(e){for(var t=0;t=r.viewTo)||r.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new qi(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Li(e){e.updatedDisplay=e.mustUpdate&&Bi(e.cm,e.update)}function Ni(e){var t=e.cm,r=t.display;e.updatedDisplay&&ei(t),e.barMeasure=gi(t),r.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=en(t,r.maxLine,r.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(r.scroller.clientWidth,r.sizer.offsetLeft+e.adjustWidthTo+Gr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,r.sizer.offsetLeft+e.adjustWidthTo-Xr(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=r.input.prepareSelection())}function Ai(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft=e.display.viewTo)){var r=+new Date+e.options.workTime,n=wt(e,t.highlightFrontier),i=[];t.iter(n.line,Math.min(t.first+t.size,e.display.viewTo+500),(function(o){if(n.line>=e.display.viewFrom){var a=o.styles,l=o.text.length>e.options.maxHighlightLength?Ge(t.mode,n.state):null,s=yt(e,o,n,!0);l&&(n.state=l),o.styles=s.styles;var c=o.styleClasses,u=s.classes;u?o.styleClasses=u:c&&(o.styleClasses=null);for(var d=!a||a.length!=o.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),f=0;!d&&fr)return Pi(e,e.options.workDelay),!0})),t.highlightFrontier=n.line,t.modeFrontier=Math.max(t.modeFrontier,n.line),i.length&&zi(e,(function(){for(var t=0;t=r.viewFrom&&t.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==jn(e))return!1;Xi(e)&&(Hn(e),t.dims=zn(e));var i=n.first+n.size,o=Math.max(t.visible.from-e.options.viewportMargin,n.first),a=Math.min(i,t.visible.to+e.options.viewportMargin);r.viewFroma&&r.viewTo-a<20&&(a=Math.min(i,r.viewTo)),Ot&&(o=rr(e.doc,o),a=nr(e.doc,a));var l=o!=r.viewFrom||a!=r.viewTo||r.lastWrapHeight!=t.wrapperHeight||r.lastWrapWidth!=t.wrapperWidth;Bn(e,o,a),r.viewOffset=ar(Qe(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var s=jn(e);if(!l&&0==s&&!t.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var c=Hi(e);return s>4&&(r.lineDiv.style.display="none"),Ki(e,r.updateLineNumbers,t.dims),s>4&&(r.lineDiv.style.display=""),r.renderedView=r.view,Ri(c),L(r.cursorDiv),L(r.selectionDiv),r.gutters.style.height=r.sizer.style.minHeight=0,l&&(r.lastWrapHeight=t.wrapperHeight,r.lastWrapWidth=t.wrapperWidth,Pi(e,400)),r.updateLineNumbers=null,!0}function ji(e,t){for(var r=t.viewport,n=!0;;n=!1){if(n&&e.options.lineWrapping&&t.oldDisplayWidth!=Xr(e))n&&(t.visible=ri(e.display,e.doc,r));else if(r&&null!=r.top&&(r={top:Math.min(e.doc.height+Vr(e.display)-Yr(e),r.top)}),t.visible=ri(e.display,e.doc,r),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break;if(!Bi(e,t))break;ei(e);var i=gi(e);Un(e),bi(e,i),$i(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Ui(e,t){var r=new qi(e,t);if(Bi(e,r)){ei(e),ji(e,r);var n=gi(e);Un(e),bi(e,n),$i(e,n),r.finish()}}function Ki(e,t,r){var n=e.display,i=e.options.lineNumbers,o=n.lineDiv,a=o.firstChild;function l(t){var r=t.nextSibling;return s&&b&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),r}for(var c=n.view,u=n.viewFrom,d=0;d-1&&(p=!1),Or(e,f,u,r)),p&&(L(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(ot(e.options,u)))),a=f.node.nextSibling}else{var h=Fr(e,f,u,r);o.insertBefore(h,a)}u+=f.size}for(;a;)a=l(a)}function Vi(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",Nr(e,"gutterChanged",e)}function $i(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Gr(e)+"px"}function Gi(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var n=Dn(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=n+"px",a=0;a=102&&(null==e.display.chromeScrollHack?e.display.sizer.style.pointerEvents="none":clearTimeout(e.display.chromeScrollHack),e.display.chromeScrollHack=setTimeout((function(){e.display.chromeScrollHack=null,e.display.sizer.style.pointerEvents=""}),100));var n=ro(t),i=n.x,o=n.y,a=to;0===t.deltaMode&&(i=t.deltaX,o=t.deltaY,a=1);var l=e.display,c=l.scroller,p=c.scrollWidth>c.clientWidth,h=c.scrollHeight>c.clientHeight;if(i&&p||o&&h){if(o&&b&&s)e:for(var m=t.target,g=l.view;m!=c;m=m.parentNode)for(var v=0;v=0&<(e,n.to())<=0)return r}return-1};var ao=function(e,t){this.anchor=e,this.head=t};function lo(e,t,r){var n=e&&e.options.selectionsMayTouch,i=t[r];t.sort((function(e,t){return lt(e.from(),t.from())})),r=R(t,i);for(var o=1;o0:s>=0){var c=dt(l.from(),a.from()),u=ut(l.to(),a.to()),d=l.empty()?a.from()==a.head:l.from()==l.head;o<=r&&--r,t.splice(--o,2,new ao(d?u:c,d?c:u))}}return new oo(t,r)}function so(e,t){return new oo([new ao(e,t||e)],0)}function co(e){return e.text?at(e.from.line+e.text.length-1,Y(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function uo(e,t){if(lt(e,t.from)<0)return e;if(lt(e,t.to)<=0)return co(t);var r=e.line+t.text.length-(t.to.line-t.from.line)-1,n=e.ch;return e.line==t.to.line&&(n+=co(t).ch-t.to.ch),at(r,n)}function fo(e,t){for(var r=[],n=0;n1&&e.remove(l.line+1,h-1),e.insert(l.line+1,v)}Nr(e,"change",e,t)}function bo(e,t,r){function n(e,i,o){if(e.linked)for(var a=0;a1&&!e.done[e.done.length-2].ranges?(e.done.pop(),Y(e.done)):void 0}function To(e,t,r,n){var i=e.history;i.undone.length=0;var o,a,l=+new Date;if((i.lastOp==n||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&i.lastModTime>l-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(o=Mo(i,i.lastOp==n)))a=Y(o.changes),0==lt(t.from,t.to)&&0==lt(t.from,a.to)?a.to=co(t):o.changes.push(Co(e,t));else{var s=Y(i.done);for(s&&s.ranges||Ao(e.sel,i.done),o={changes:[Co(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(r),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=l,i.lastOp=i.lastSelOp=n,i.lastOrigin=i.lastSelOrigin=t.origin,a||ye(e,"historyAdded")}function Lo(e,t,r,n){var i=t.charAt(0);return"*"==i||"+"==i&&r.ranges.length==n.ranges.length&&r.somethingSelected()==n.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function No(e,t,r,n){var i=e.history,o=n&&n.origin;r==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||Lo(e,o,Y(i.done),t))?i.done[i.done.length-1]=t:Ao(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=r,n&&!1!==n.clearRedo&&So(i.undone)}function Ao(e,t){var r=Y(t);r&&r.ranges&&r.equals(e)||t.push(e)}function Oo(e,t,r,n){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,r),Math.min(e.first+e.size,n),(function(r){r.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=r.markedSpans),++o}))}function zo(e){if(!e)return null;for(var t,r=0;r-1&&(Y(l)[d]=c[d],delete c[d])}}}return n}function Po(e,t,r,n){if(n){var i=e.anchor;if(r){var o=lt(t,i)<0;o!=lt(r,i)<0?(i=t,t=r):o!=lt(t,r)<0&&(t=r)}return new ao(i,t)}return new ao(r||t,t)}function Wo(e,t,r,n,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),jo(e,new oo([Po(e.sel.primary(),t,r,i)],0),n)}function qo(e,t,r){for(var n=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o=t.ch:l.to>t.ch))){if(i&&(ye(s,"beforeCursorEnter"),s.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!s.atomic)continue;if(r){var d=s.find(n<0?1:-1),f=void 0;if((n<0?u:c)&&(d=Yo(e,d,-n,d&&d.line==t.line?o:null)),d&&d.line==t.line&&(f=lt(d,r))&&(n<0?f<0:f>0))return Go(e,d,t,n,i)}var p=s.find(n<0?-1:1);return(n<0?c:u)&&(p=Yo(e,p,n,p.line==t.line?o:null)),p?Go(e,p,t,n,i):null}}return t}function Xo(e,t,r,n,i){var o=n||1,a=Go(e,t,r,o,i)||!i&&Go(e,t,r,o,!0)||Go(e,t,r,-o,i)||!i&&Go(e,t,r,-o,!0);return a||(e.cantEdit=!0,at(e.first,0))}function Yo(e,t,r,n){return r<0&&0==t.ch?t.line>e.first?pt(e,at(t.line-1)):null:r>0&&t.ch==(n||Qe(e,t.line)).text.length?t.line=0;--i)ea(e,{from:n[i].from,to:n[i].to,text:i?[""]:t.text,origin:t.origin});else ea(e,t)}}function ea(e,t){if(1!=t.text.length||""!=t.text[0]||0!=lt(t.from,t.to)){var r=fo(e,t);To(e,t,r,e.cm?e.cm.curOp.id:NaN),na(e,t,r,Ht(e,t));var n=[];bo(e,(function(e,r){r||-1!=R(n,e.history)||(sa(e.history,t),n.push(e.history)),na(e,t,null,Ht(e,t))}))}}function ta(e,t,r){var n=e.cm&&e.cm.state.suppressEdits;if(!n||r){for(var i,o=e.history,a=e.sel,l="undo"==t?o.done:o.undone,s="undo"==t?o.undone:o.done,c=0;c=0;--p){var h=f(p);if(h)return h.v}}}}function ra(e,t){if(0!=t&&(e.first+=t,e.sel=new oo(Z(e.sel.ranges,(function(e){return new ao(at(e.anchor.line+t,e.anchor.ch),at(e.head.line+t,e.head.ch))})),e.sel.primIndex),e.cm)){qn(e.cm,e.first,e.first-t,t);for(var r=e.cm.display,n=r.viewFrom;ne.lastLine())){if(t.from.lineo&&(t={from:t.from,to:at(o,Qe(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Je(e,t.from,t.to),r||(r=fo(e,t)),e.cm?ia(e.cm,t,n):yo(e,t,n),Uo(e,r,U),e.cantEdit&&Xo(e,at(e.firstLine(),0))&&(e.cantEdit=!1)}}function ia(e,t,r){var n=e.doc,i=e.display,o=t.from,a=t.to,l=!1,s=o.line;e.options.lineWrapping||(s=rt(Jt(Qe(n,o.line))),n.iter(s,a.line+1,(function(e){if(e==i.maxLine)return l=!0,!0}))),n.sel.contains(t.from,t.to)>-1&&we(e),yo(n,t,r,En(e)),e.options.lineWrapping||(n.iter(s,o.line+t.text.length,(function(e){var t=lr(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,l=!1)})),l&&(e.curOp.updateMaxLine=!0)),Nt(n,o.line),Pi(e,400);var c=t.text.length-(a.line-o.line)-1;t.full?qn(e):o.line!=a.line||1!=t.text.length||vo(e.doc,t)?qn(e,o.line,a.line+1,c):Fn(e,o.line,"text");var u=xe(e,"changes"),d=xe(e,"change");if(d||u){var f={from:o,to:a,text:t.text,removed:t.removed,origin:t.origin};d&&Nr(e,"change",e,f),u&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(f)}e.display.selForContextMenu=null}function oa(e,t,r,n,i){var o;n||(n=r),lt(n,r)<0&&(r=(o=[n,r])[0],n=o[1]),"string"==typeof t&&(t=e.splitLines(t)),Jo(e,{from:r,to:n,text:t,origin:i})}function aa(e,t,r,n){r1||!(this.children[0]instanceof ua))){var l=[];this.collapse(l),this.children=[new ua(l)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var a=i.lines.length%25+25,l=a;l10);e.parent.maybeSpill()}},iterN:function(e,t,r){for(var n=0;n0||0==a&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=O("span",[o.replacedWith],"CodeMirror-widget"),n.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),n.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Qt(e,t.line,t,r,o)||t.line!=r.line&&Qt(e,r.line,t,r,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");Dt()}o.addToHistory&&To(e,{from:t,to:r,origin:"markText"},e.sel,NaN);var l,s=t.line,c=e.cm;if(e.iter(s,r.line+1,(function(n){c&&o.collapsed&&!c.options.lineWrapping&&Jt(n)==c.display.maxLine&&(l=!0),o.collapsed&&s!=t.line&&tt(n,0),Wt(n,new Et(o,s==t.line?t.ch:null,s==r.line?r.ch:null),e.cm&&e.cm.curOp),++s})),o.collapsed&&e.iter(t.line,r.line+1,(function(t){ir(e,t)&&tt(t,0)})),o.clearOnEnter&&me(o,"beforeCursorEnter",(function(){return o.clear()})),o.readOnly&&(zt(),(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++ma,o.atomic=!0),c){if(l&&(c.curOp.updateMaxLine=!0),o.collapsed)qn(c,t.line,r.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var u=t.line;u<=r.line;u++)Fn(c,u,"text");o.atomic&&Vo(c.doc),Nr(c,"markerAdded",c,o)}return o}ga.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&Ci(e),xe(this,"clear")){var r=this.find();r&&Nr(this,"clear",r.from,r.to)}for(var n=null,i=null,o=0;oe.display.maxLineLength&&(e.display.maxLine=c,e.display.maxLineLength=u,e.display.maxLineChanged=!0)}null!=n&&e&&this.collapsed&&qn(e,n,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Vo(e.doc)),e&&Nr(e,"markerCleared",e,this,n,i),t&&Si(e),this.parent&&this.parent.clear()}},ga.prototype.find=function(e,t){var r,n;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i=0;s--)Jo(this,n[s]);l?Bo(this,l):this.cm&&si(this.cm)})),undo:Ii((function(){ta(this,"undo")})),redo:Ii((function(){ta(this,"redo")})),undoSelection:Ii((function(){ta(this,"undo",!0)})),redoSelection:Ii((function(){ta(this,"redo",!0)})),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,r=0,n=0;n=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,r){e=pt(this,e),t=pt(this,t);var n=[],i=e.line;return this.iter(e.line,t.line+1,(function(o){var a=o.markedSpans;if(a)for(var l=0;l=s.to||null==s.from&&i!=e.line||null!=s.from&&i==t.line&&s.from>=t.ch||r&&!r(s.marker)||n.push(s.marker.parent||s.marker)}++i})),n},getAllMarks:function(){var e=[];return this.iter((function(t){var r=t.markedSpans;if(r)for(var n=0;ne)return t=e,!0;e-=o,++r})),pt(this,at(r,t))},indexFromPos:function(e){var t=(e=pt(this,e)).ch;if(e.linet&&(t=e.from),null!=e.to&&e.to-1)return t.state.draggingText(e),void setTimeout((function(){return t.display.input.focus()}),20);try{var d=e.dataTransfer.getData("Text");if(d){var f;if(t.state.draggingText&&!t.state.draggingText.copy&&(f=t.listSelections()),Uo(t.doc,so(r,r)),f)for(var p=0;p=0;t--)oa(e.doc,"",n[t].from,n[t].to,"+delete");si(e)}))}function Ga(e,t,r){var n=le(e.text,t+r,r);return n<0||n>e.text.length?null:n}function Xa(e,t,r){var n=Ga(e,t.ch,r);return null==n?null:new at(t.line,n,r<0?"after":"before")}function Ya(e,t,r,n,i){if(e){"rtl"==t.doc.direction&&(i=-i);var o=pe(r,t.doc.direction);if(o){var a,l=i<0?Y(o):o[0],s=i<0==(1==l.level)?"after":"before";if(l.level>0||"rtl"==t.doc.direction){var c=rn(t,r);a=i<0?r.text.length-1:0;var u=nn(t,c,a).top;a=se((function(e){return nn(t,c,e).top==u}),i<0==(1==l.level)?l.from:l.to-1,a),"before"==s&&(a=Ga(r,a,1))}else a=i<0?l.to:l.from;return new at(n,a,s)}}return new at(n,i<0?r.text.length:0,i<0?"before":"after")}function Za(e,t,r,n){var i=pe(t,e.doc.direction);if(!i)return Xa(t,r,n);r.ch>=t.text.length?(r.ch=t.text.length,r.sticky="before"):r.ch<=0&&(r.ch=0,r.sticky="after");var o=de(i,r.ch,r.sticky),a=i[o];if("ltr"==e.doc.direction&&a.level%2==0&&(n>0?a.to>r.ch:a.from=a.from&&f>=u.begin)){var p=d?"before":"after";return new at(r.line,f,p)}}var h=function(e,t,n){for(var o=function(e,t){return t?new at(r.line,s(e,1),"before"):new at(r.line,e,"after")};e>=0&&e0==(1!=a.level),c=l?n.begin:s(n.end,-1);if(a.from<=c&&c0?u.end:s(u.begin,-1);return null==g||n>0&&g==t.text.length||!(m=h(n>0?0:i.length-1,n,c(g)))?null:m}Fa.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Fa.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Fa.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Fa.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Fa.default=b?Fa.macDefault:Fa.pcDefault;var Qa={selectAll:Zo,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),U)},killLine:function(e){return $a(e,(function(t){if(t.empty()){var r=Qe(e.doc,t.head.line).text.length;return t.head.ch==r&&t.head.line0)i=new at(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),at(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var a=Qe(e.doc,i.line-1).text;a&&(i=new at(i.line,1),e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+a.charAt(a.length-1),at(i.line-1,a.length-1),i,"+transpose"))}r.push(new ao(i,i))}e.setSelections(r)}))},newlineAndIndent:function(e){return zi(e,(function(){for(var t=e.listSelections(),r=t.length-1;r>=0;r--)e.replaceRange(e.doc.lineSeparator(),t[r].anchor,t[r].head,"+input");t=e.listSelections();for(var n=0;n-1&&(lt((i=l.ranges[i]).from(),t)<0||t.xRel>0)&&(lt(i.to(),t)>0||t.xRel<0)?_l(e,n,t,o):Sl(e,n,t,o)}function _l(e,t,r,n){var i=e.display,o=!1,c=Di(e,(function(t){s&&(i.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:Zn(e)),ve(i.wrapper.ownerDocument,"mouseup",c),ve(i.wrapper.ownerDocument,"mousemove",u),ve(i.scroller,"dragstart",d),ve(i.scroller,"drop",c),o||(_e(t),n.addNew||Wo(e.doc,r,null,null,n.extend),s&&!p||a&&9==l?setTimeout((function(){i.wrapper.ownerDocument.body.focus({preventScroll:!0}),i.input.focus()}),20):i.input.focus())})),u=function(e){o=o||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},d=function(){return o=!0};s&&(i.scroller.draggable=!0),e.state.draggingText=c,c.copy=!n.moveOnDrag,me(i.wrapper.ownerDocument,"mouseup",c),me(i.wrapper.ownerDocument,"mousemove",u),me(i.scroller,"dragstart",d),me(i.scroller,"drop",c),e.state.delayingBlurEvent=!0,setTimeout((function(){return i.input.focus()}),20),i.scroller.dragDrop&&i.scroller.dragDrop()}function Cl(e,t,r){if("char"==r)return new ao(t,t);if("word"==r)return e.findWordAt(t);if("line"==r)return new ao(at(t.line,0),pt(e.doc,at(t.line+1,0)));var n=r(e,t);return new ao(n.from,n.to)}function Sl(e,t,r,n){a&&Zn(e);var i=e.display,o=e.doc;_e(t);var l,s,c=o.sel,u=c.ranges;if(n.addNew&&!n.extend?(s=o.sel.contains(r),l=s>-1?u[s]:new ao(r,r)):(l=o.sel.primary(),s=o.sel.primIndex),"rectangle"==n.unit)n.addNew||(l=new ao(r,r)),r=Pn(e,t,!0,!0),s=-1;else{var d=Cl(e,r,n.unit);l=n.extend?Po(l,d.anchor,d.head,n.extend):d}n.addNew?-1==s?(s=u.length,jo(o,lo(e,u.concat([l]),s),{scroll:!1,origin:"*mouse"})):u.length>1&&u[s].empty()&&"char"==n.unit&&!n.extend?(jo(o,lo(e,u.slice(0,s).concat(u.slice(s+1)),0),{scroll:!1,origin:"*mouse"}),c=o.sel):Fo(o,s,l,K):(s=0,jo(o,new oo([l],0),K),c=o.sel);var f=r;function p(t){if(0!=lt(f,t))if(f=t,"rectangle"==n.unit){for(var i=[],a=e.options.tabSize,u=F(Qe(o,r.line).text,r.ch,a),d=F(Qe(o,t.line).text,t.ch,a),p=Math.min(u,d),h=Math.max(u,d),m=Math.min(r.line,t.line),g=Math.min(e.lastLine(),Math.max(r.line,t.line));m<=g;m++){var v=Qe(o,m).text,y=$(v,p,a);p==h?i.push(new ao(at(m,y),at(m,y))):v.length>y&&i.push(new ao(at(m,y),at(m,$(v,h,a))))}i.length||i.push(new ao(r,r)),jo(o,lo(e,c.ranges.slice(0,s).concat(i),s),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b,w=l,x=Cl(e,t,n.unit),k=w.anchor;lt(x.anchor,k)>0?(b=x.head,k=dt(w.from(),x.anchor)):(b=x.anchor,k=ut(w.to(),x.head));var _=c.ranges.slice(0);_[s]=Ml(e,new ao(pt(o,k),b)),jo(o,lo(e,_,s),K)}}var h=i.wrapper.getBoundingClientRect(),m=0;function g(t){var r=++m,a=Pn(e,t,!0,"rectangle"==n.unit);if(a)if(0!=lt(a,f)){e.curOp.focus=D(),p(a);var l=ri(i,o);(a.line>=l.to||a.lineh.bottom?20:0;s&&setTimeout(Di(e,(function(){m==r&&(i.scroller.scrollTop+=s,g(t))})),50)}}function v(t){e.state.selectingText=!1,m=1/0,t&&(_e(t),i.input.focus()),ve(i.wrapper.ownerDocument,"mousemove",y),ve(i.wrapper.ownerDocument,"mouseup",b),o.history.lastSelOrigin=null}var y=Di(e,(function(e){0!==e.buttons&&Le(e)?g(e):v(e)})),b=Di(e,v);e.state.selectingText=b,me(i.wrapper.ownerDocument,"mousemove",y),me(i.wrapper.ownerDocument,"mouseup",b)}function Ml(e,t){var r=t.anchor,n=t.head,i=Qe(e.doc,r.line);if(0==lt(r,n)&&r.sticky==n.sticky)return t;var o=pe(i);if(!o)return t;var a=de(o,r.ch,r.sticky),l=o[a];if(l.from!=r.ch&&l.to!=r.ch)return t;var s,c=a+(l.from==r.ch==(1!=l.level)?0:1);if(0==c||c==o.length)return t;if(n.line!=r.line)s=(n.line-r.line)*("ltr"==e.doc.direction?1:-1)>0;else{var u=de(o,n.ch,n.sticky),d=u-a||(n.ch-r.ch)*(1==l.level?-1:1);s=u==c-1||u==c?d<0:d>0}var f=o[c+(s?-1:0)],p=s==(1==f.level),h=p?f.from:f.to,m=p?"after":"before";return r.ch==h&&r.sticky==m?t:new ao(new at(r.line,h,m),n)}function Tl(e,t,r,n){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(e){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;n&&_e(t);var a=e.display,l=a.lineDiv.getBoundingClientRect();if(o>l.bottom||!xe(e,r))return Se(t);o-=l.top-a.viewOffset;for(var s=0;s=i)return ye(e,r,e,nt(e.doc,o),e.display.gutterSpecs[s].className,t),Se(t)}}function Ll(e,t){return Tl(e,t,"gutterClick",!0)}function Nl(e,t){Ur(e.display,t)||Al(e,t)||be(e,t,"contextmenu")||C||e.display.input.onContextMenu(t)}function Al(e,t){return!!xe(e,"gutterContextMenu")&&Tl(e,t,"gutterContextMenu",!1)}function Ol(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),pn(e)}vl.prototype.compare=function(e,t,r){return this.time+gl>e&&0==lt(t,this.pos)&&r==this.button};var zl={toString:function(){return"CodeMirror.Init"}},Dl={},El={};function Il(e){var t=e.optionHandlers;function r(r,n,i,o){e.defaults[r]=n,i&&(t[r]=o?function(e,t,r){r!=zl&&i(e,t,r)}:i)}e.defineOption=r,e.Init=zl,r("value","",(function(e,t){return e.setValue(t)}),!0),r("mode",null,(function(e,t){e.doc.modeOption=t,mo(e)}),!0),r("indentUnit",2,mo,!0),r("indentWithTabs",!1),r("smartIndent",!0),r("tabSize",4,(function(e){go(e),pn(e),qn(e)}),!0),r("lineSeparator",null,(function(e,t){if(e.doc.lineSep=t,t){var r=[],n=e.doc.first;e.doc.iter((function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,r.push(at(n,o))}n++}));for(var i=r.length-1;i>=0;i--)oa(e.doc,t,r[i],at(r[i].line,r[i].ch+t.length))}})),r("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,(function(e,t,r){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),r!=zl&&e.refresh()})),r("specialCharPlaceholder",gr,(function(e){return e.refresh()}),!0),r("electricChars",!0),r("inputStyle",y?"contenteditable":"textarea",(function(){throw new Error("inputStyle can not (yet) be changed in a running editor")}),!0),r("spellcheck",!1,(function(e,t){return e.getInputField().spellcheck=t}),!0),r("autocorrect",!1,(function(e,t){return e.getInputField().autocorrect=t}),!0),r("autocapitalize",!1,(function(e,t){return e.getInputField().autocapitalize=t}),!0),r("rtlMoveVisually",!x),r("wholeLineUpdateBefore",!0),r("theme","default",(function(e){Ol(e),Qi(e)}),!0),r("keyMap","default",(function(e,t,r){var n=Va(t),i=r!=zl&&Va(r);i&&i.detach&&i.detach(e,n),n.attach&&n.attach(e,i||null)})),r("extraKeys",null),r("configureMouse",null),r("lineWrapping",!1,Wl,!0),r("gutters",[],(function(e,t){e.display.gutterSpecs=Yi(t,e.options.lineNumbers),Qi(e)}),!0),r("fixedGutter",!0,(function(e,t){e.display.gutters.style.left=t?Dn(e.display)+"px":"0",e.refresh()}),!0),r("coverGutterNextToScrollbar",!1,(function(e){return bi(e)}),!0),r("scrollbarStyle","native",(function(e){ki(e),bi(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)}),!0),r("lineNumbers",!1,(function(e,t){e.display.gutterSpecs=Yi(e.options.gutters,t),Qi(e)}),!0),r("firstLineNumber",1,Qi,!0),r("lineNumberFormatter",(function(e){return e}),Qi,!0),r("showCursorWhenSelecting",!1,Un,!0),r("resetSelectionOnContextMenu",!0),r("lineWiseCopyCut",!0),r("pasteLinesPerSelection",!0),r("selectionsMayTouch",!1),r("readOnly",!1,(function(e,t){"nocursor"==t&&(Jn(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)})),r("screenReaderLabel",null,(function(e,t){t=""===t?null:t,e.display.input.screenReaderLabelChanged(t)})),r("disableInput",!1,(function(e,t){t||e.display.input.reset()}),!0),r("dragDrop",!0,Pl),r("allowDropFileTypes",null),r("cursorBlinkRate",530),r("cursorScrollMargin",0),r("cursorHeight",1,Un,!0),r("singleCursorHeightPerLine",!0,Un,!0),r("workTime",100),r("workDelay",100),r("flattenSpans",!0,go,!0),r("addModeClass",!1,go,!0),r("pollInterval",100),r("undoDepth",200,(function(e,t){return e.doc.history.undoDepth=t})),r("historyEventDelay",1250),r("viewportMargin",10,(function(e){return e.refresh()}),!0),r("maxHighlightLength",1e4,go,!0),r("moveInputWithCursor",!0,(function(e,t){t||e.display.input.resetPosition()})),r("tabindex",null,(function(e,t){return e.display.input.getField().tabIndex=t||""})),r("autofocus",null),r("direction","ltr",(function(e,t){return e.doc.setDirection(t)}),!0),r("phrases",null)}function Pl(e,t,r){if(!t!=!(r&&r!=zl)){var n=e.display.dragFunctions,i=t?me:ve;i(e.display.scroller,"dragstart",n.start),i(e.display.scroller,"dragenter",n.enter),i(e.display.scroller,"dragover",n.over),i(e.display.scroller,"dragleave",n.leave),i(e.display.scroller,"drop",n.drop)}}function Wl(e){e.options.lineWrapping?(E(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(T(e.display.wrapper,"CodeMirror-wrap"),sr(e)),In(e),qn(e),pn(e),setTimeout((function(){return bi(e)}),100)}function ql(e,t){var r=this;if(!(this instanceof ql))return new ql(e,t);this.options=t=t?q(t):{},q(Dl,t,!1);var n=t.value;"string"==typeof n?n=new Ca(n,t.mode,null,t.lineSeparator,t.direction):t.mode&&(n.modeOption=t.mode),this.doc=n;var i=new ql.inputStyles[t.inputStyle](this),o=this.display=new Ji(e,n,i,t);for(var c in o.wrapper.CodeMirror=this,Ol(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),ki(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new H,keySeq:null,specialChars:null},t.autofocus&&!y&&o.input.focus(),a&&l<11&&setTimeout((function(){return r.display.input.reset(!0)}),20),Fl(this),za(),Ci(this),this.curOp.forceUpdate=!0,wo(this,n),t.autofocus&&!y||this.hasFocus()?setTimeout((function(){r.hasFocus()&&!r.state.focused&&Qn(r)}),20):Jn(this),El)El.hasOwnProperty(c)&&El[c](this,t[c],zl);Xi(this),t.finishInit&&t.finishInit(this);for(var u=0;u400}me(t.scroller,"touchstart",(function(i){if(!be(e,i)&&!o(i)&&!Ll(e,i)){t.input.ensurePolled(),clearTimeout(r);var a=+new Date;t.activeTouch={start:a,moved:!1,prev:a-n.end<=300?n:null},1==i.touches.length&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}})),me(t.scroller,"touchmove",(function(){t.activeTouch&&(t.activeTouch.moved=!0)})),me(t.scroller,"touchend",(function(r){var n=t.activeTouch;if(n&&!Ur(t,r)&&null!=n.left&&!n.moved&&new Date-n.start<300){var o,a=e.coordsChar(t.activeTouch,"page");o=!n.prev||s(n,n.prev)?new ao(a,a):!n.prev.prev||s(n,n.prev.prev)?e.findWordAt(a):new ao(at(a.line,0),pt(e.doc,at(a.line+1,0))),e.setSelection(o.anchor,o.head),e.focus(),_e(r)}i()})),me(t.scroller,"touchcancel",i),me(t.scroller,"scroll",(function(){t.scroller.clientHeight&&(pi(e,t.scroller.scrollTop),mi(e,t.scroller.scrollLeft,!0),ye(e,"scroll",e))})),me(t.scroller,"mousewheel",(function(t){return io(e,t)})),me(t.scroller,"DOMMouseScroll",(function(t){return io(e,t)})),me(t.wrapper,"scroll",(function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0})),t.dragFunctions={enter:function(t){be(e,t)||Me(t)},over:function(t){be(e,t)||(La(e,t),Me(t))},start:function(t){return Ta(e,t)},drop:Di(e,Ma),leave:function(t){be(e,t)||Na(e)}};var c=t.input.getField();me(c,"keyup",(function(t){return fl.call(e,t)})),me(c,"keydown",Di(e,ul)),me(c,"keypress",Di(e,pl)),me(c,"focus",(function(t){return Qn(e,t)})),me(c,"blur",(function(t){return Jn(e,t)}))}ql.defaults=Dl,ql.optionHandlers=El;var Hl=[];function Rl(e,t,r,n){var i,o=e.doc;null==r&&(r="add"),"smart"==r&&(o.mode.indent?i=wt(e,t).state:r="prev");var a=e.options.tabSize,l=Qe(o,t),s=F(l.text,null,a);l.stateAfter&&(l.stateAfter=null);var c,u=l.text.match(/^\s*/)[0];if(n||/\S/.test(l.text)){if("smart"==r&&((c=o.mode.indent(i,l.text.slice(u.length),l.text))==j||c>150)){if(!n)return;r="prev"}}else c=0,r="not";"prev"==r?c=t>o.first?F(Qe(o,t-1).text,null,a):0:"add"==r?c=s+e.options.indentUnit:"subtract"==r?c=s-e.options.indentUnit:"number"==typeof r&&(c=s+r),c=Math.max(0,c);var d="",f=0;if(e.options.indentWithTabs)for(var p=Math.floor(c/a);p;--p)f+=a,d+="\t";if(fa,s=Ie(t),c=null;if(l&&n.ranges.length>1)if(Bl&&Bl.text.join("\n")==t){if(n.ranges.length%Bl.text.length==0){c=[];for(var u=0;u=0;f--){var p=n.ranges[f],h=p.from(),m=p.to();p.empty()&&(r&&r>0?h=at(h.line,h.ch-r):e.state.overwrite&&!l?m=at(m.line,Math.min(Qe(o,m.line).text.length,m.ch+Y(s).length)):l&&Bl&&Bl.lineWise&&Bl.text.join("\n")==s.join("\n")&&(h=m=at(h.line,0)));var g={from:h,to:m,text:c?c[f%c.length]:s,origin:i||(l?"paste":e.state.cutIncoming>a?"cut":"+input")};Jo(e.doc,g),Nr(e,"inputRead",e,g)}t&&!l&&Vl(e,t),si(e),e.curOp.updateInput<2&&(e.curOp.updateInput=d),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Kl(e,t){var r=e.clipboardData&&e.clipboardData.getData("Text");if(r)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||!t.hasFocus()||zi(t,(function(){return Ul(t,r,0,null,"paste")})),!0}function Vl(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var r=e.doc.sel,n=r.ranges.length-1;n>=0;n--){var i=r.ranges[n];if(!(i.head.ch>100||n&&r.ranges[n-1].head.line==i.head.line)){var o=e.getModeAt(i.head),a=!1;if(o.electricChars){for(var l=0;l-1){a=Rl(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Qe(e.doc,i.head.line).text.slice(0,i.head.ch))&&(a=Rl(e,i.head.line,"smart"));a&&Nr(e,"electricInput",e,i.head.line)}}}function $l(e){for(var t=[],r=[],n=0;nr&&(Rl(this,i.head.line,e,!0),r=i.head.line,n==this.doc.sel.primIndex&&si(this));else{var o=i.from(),a=i.to(),l=Math.max(r,o.line);r=Math.min(this.lastLine(),a.line-(a.ch?0:1))+1;for(var s=l;s0&&Fo(this.doc,n,new ao(o,c[n].to()),U)}}})),getTokenAt:function(e,t){return St(this,e,t)},getLineTokens:function(e,t){return St(this,at(e),t,!0)},getTokenTypeAt:function(e){e=pt(this.doc,e);var t,r=bt(this,Qe(this.doc,e.line)),n=0,i=(r.length-1)/2,o=e.ch;if(0==o)t=r[2];else for(;;){var a=n+i>>1;if((a?r[2*a-1]:0)>=o)i=a;else{if(!(r[2*a+1]o&&(e=o,i=!0),n=Qe(this.doc,e)}else n=e;return vn(this,n,{top:0,left:0},t||"page",r||i).top+(i?this.doc.height-ar(n):0)},defaultTextHeight:function(){return An(this.display)},defaultCharWidth:function(){return On(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,r,n,i){var o=this.display,a=(e=wn(this,pt(this.doc,e))).bottom,l=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),o.sizer.appendChild(t),"over"==n)a=e.top;else if("above"==n||"near"==n){var s=Math.max(o.wrapper.clientHeight,this.doc.height),c=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==n||e.bottom+t.offsetHeight>s)&&e.top>t.offsetHeight?a=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=s&&(a=e.bottom),l+t.offsetWidth>c&&(l=c-t.offsetWidth)}t.style.top=a+"px",t.style.left=t.style.right="","right"==i?(l=o.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?l=0:"middle"==i&&(l=(o.sizer.clientWidth-t.offsetWidth)/2),t.style.left=l+"px"),r&&oi(this,{left:l,top:a,right:l+t.offsetWidth,bottom:a+t.offsetHeight})},triggerOnKeyDown:Ei(ul),triggerOnKeyPress:Ei(pl),triggerOnKeyUp:fl,triggerOnMouseDown:Ei(bl),execCommand:function(e){if(Qa.hasOwnProperty(e))return Qa[e].call(null,this)},triggerElectric:Ei((function(e){Vl(this,e)})),findPosH:function(e,t,r,n){var i=1;t<0&&(i=-1,t=-t);for(var o=pt(this.doc,e),a=0;a0&&a(t.charAt(r-1));)--r;for(;n.5||this.options.lineWrapping)&&In(this),ye(this,"refresh",this)})),swapDoc:Ei((function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),wo(this,e),pn(this),this.display.input.reset(),ci(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,Nr(this,"swapDoc",this,t),t})),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},ke(e),e.registerHelper=function(t,n,i){r.hasOwnProperty(t)||(r[t]=e[t]={_global:[]}),r[t][n]=i},e.registerGlobalHelper=function(t,n,i,o){e.registerHelper(t,n,o),r[t]._global.push({pred:i,val:o})}}function Zl(e,t,r,n,i){var o=t,a=r,l=Qe(e,t.line),s=i&&"rtl"==e.direction?-r:r;function c(){var r=t.line+s;return!(r=e.first+e.size)&&(t=new at(r,t.ch,t.sticky),l=Qe(e,r))}function u(o){var a;if("codepoint"==n){var u=l.text.charCodeAt(t.ch+(r>0?0:-1));if(isNaN(u))a=null;else{var d=r>0?u>=55296&&u<56320:u>=56320&&u<57343;a=new at(t.line,Math.max(0,Math.min(l.text.length,t.ch+r*(d?2:1))),-r)}}else a=i?Za(e.cm,l,t,r):Xa(l,t,r);if(null==a){if(o||!c())return!1;t=Ya(i,e.cm,l,t.line,s)}else t=a;return!0}if("char"==n||"codepoint"==n)u();else if("column"==n)u(!0);else if("word"==n||"group"==n)for(var d=null,f="group"==n,p=e.cm&&e.cm.getHelper(t,"wordChars"),h=!0;!(r<0)||u(!h);h=!1){var m=l.text.charAt(t.ch)||"\n",g=ne(m,p)?"w":f&&"\n"==m?"n":!f||/\s/.test(m)?null:"p";if(!f||h||g||(g="s"),d&&d!=g){r<0&&(r=1,u(),t.sticky="after");break}if(g&&(d=g),r>0&&!u(!h))break}var v=Xo(e,t,o,a,!0);return st(o,v)&&(v.hitSide=!0),v}function Ql(e,t,r,n){var i,o,a=e.doc,l=t.left;if("page"==n){var s=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),c=Math.max(s-.5*An(e.display),3);i=(r>0?t.bottom:t.top)+r*c}else"line"==n&&(i=r>0?t.bottom+3:t.top-3);for(;(o=_n(e,l,i)).outside;){if(r<0?i<=0:i>=a.height){o.hitSide=!0;break}i+=5*r}return o}var Jl=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new H,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function es(e,t){var r=tn(e,t.line);if(!r||r.hidden)return null;var n=Qe(e.doc,t.line),i=Qr(r,n,t.line),o=pe(n,e.doc.direction),a="left";o&&(a=de(o,t.ch)%2?"right":"left");var l=ln(i.map,t.ch,a);return l.offset="right"==l.collapse?l.end:l.start,l}function ts(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}function rs(e,t){return t&&(e.bad=!0),e}function ns(e,t,r,n,i){var o="",a=!1,l=e.doc.lineSeparator(),s=!1;function c(e){return function(t){return t.id==e}}function u(){a&&(o+=l,s&&(o+=l),a=s=!1)}function d(e){e&&(u(),o+=e)}function f(t){if(1==t.nodeType){var r=t.getAttribute("cm-text");if(r)return void d(r);var o,p=t.getAttribute("cm-marker");if(p){var h=e.findMarks(at(n,0),at(i+1,0),c(+p));return void(h.length&&(o=h[0].find(0))&&d(Je(e.doc,o.from,o.to).join(l)))}if("false"==t.getAttribute("contenteditable"))return;var m=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&0==t.textContent.length)return;m&&u();for(var g=0;g=t.display.viewTo||o.line=t.display.viewFrom&&es(t,i)||{node:s[0].measure.map[2],offset:0},u=o.linen.firstLine()&&(a=at(a.line-1,Qe(n.doc,a.line-1).length)),l.ch==Qe(n.doc,l.line).text.length&&l.linei.viewTo-1)return!1;a.line==i.viewFrom||0==(e=Wn(n,a.line))?(t=rt(i.view[0].line),r=i.view[0].node):(t=rt(i.view[e].line),r=i.view[e-1].node.nextSibling);var s,c,u=Wn(n,l.line);if(u==i.view.length-1?(s=i.viewTo-1,c=i.lineDiv.lastChild):(s=rt(i.view[u+1].line)-1,c=i.view[u+1].node.previousSibling),!r)return!1;for(var d=n.doc.splitLines(ns(n,r,c,t,s)),f=Je(n.doc,at(t,0),at(s,Qe(n.doc,s).text.length));d.length>1&&f.length>1;)if(Y(d)==Y(f))d.pop(),f.pop(),s--;else{if(d[0]!=f[0])break;d.shift(),f.shift(),t++}for(var p=0,h=0,m=d[0],g=f[0],v=Math.min(m.length,g.length);pa.ch&&y.charCodeAt(y.length-h-1)==b.charCodeAt(b.length-h-1);)p--,h++;d[d.length-1]=y.slice(0,y.length-h).replace(/^\u200b+/,""),d[0]=d[0].slice(p).replace(/\u200b+$/,"");var x=at(t,p),k=at(s,f.length?Y(f).length-h:0);return d.length>1||d[0]||lt(x,k)?(oa(n.doc,d,x,k,"+input"),!0):void 0},Jl.prototype.ensurePolled=function(){this.forceCompositionEnd()},Jl.prototype.reset=function(){this.forceCompositionEnd()},Jl.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Jl.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout((function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()}),80))},Jl.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||zi(this.cm,(function(){return qn(e.cm)}))},Jl.prototype.setUneditable=function(e){e.contentEditable="false"},Jl.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||Di(this.cm,Ul)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Jl.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Jl.prototype.onContextMenu=function(){},Jl.prototype.resetPosition=function(){},Jl.prototype.needsContentAttribute=!0;var as=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new H,this.hasSelection=!1,this.composing=null};function ls(e,t){if((t=t?q(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var r=D();t.autofocus=r==e||null!=e.getAttribute("autofocus")&&r==document.body}function n(){e.value=l.getValue()}var i;if(e.form&&(me(e.form,"submit",n),!t.leaveSubmitMethodAlone)){var o=e.form;i=o.submit;try{var a=o.submit=function(){n(),o.submit=i,o.submit(),o.submit=a}}catch(e){}}t.finishInit=function(r){r.save=n,r.getTextArea=function(){return e},r.toTextArea=function(){r.toTextArea=isNaN,n(),e.parentNode.removeChild(r.getWrapperElement()),e.style.display="",e.form&&(ve(e.form,"submit",n),t.leaveSubmitMethodAlone||"function"!=typeof e.form.submit||(e.form.submit=i))}},e.style.display="none";var l=ql((function(t){return e.parentNode.insertBefore(t,e.nextSibling)}),t);return l}function ss(e){e.off=ve,e.on=me,e.wheelEventPixels=no,e.Doc=Ca,e.splitLines=Ie,e.countColumn=F,e.findColumn=$,e.isWordChar=re,e.Pass=j,e.signal=ye,e.Line=cr,e.changeEnd=co,e.scrollbarModel=xi,e.Pos=at,e.cmpPos=lt,e.modes=He,e.mimeModes=Re,e.resolveMode=Ue,e.getMode=Ke,e.modeExtensions=Ve,e.extendMode=$e,e.copyState=Ge,e.startState=Ye,e.innerMode=Xe,e.commands=Qa,e.keyMap=Fa,e.keyName=Ka,e.isModifierKey=ja,e.lookupKey=Ba,e.normalizeKeyMap=Ra,e.StringStream=Ze,e.SharedTextMarker=ya,e.TextMarker=ga,e.LineWidget=fa,e.e_preventDefault=_e,e.e_stopPropagation=Ce,e.e_stop=Me,e.addClass=E,e.contains=z,e.rmClass=T,e.keyNames=Ia}as.prototype.init=function(e){var t=this,r=this,n=this.cm;this.createField(e);var i=this.textarea;function o(e){if(!be(n,e)){if(n.somethingSelected())jl({lineWise:!1,text:n.getSelections()});else{if(!n.options.lineWiseCopyCut)return;var t=$l(n);jl({lineWise:!0,text:t.text}),"cut"==e.type?n.setSelections(t.ranges,null,U):(r.prevInput="",i.value=t.text.join("\n"),P(i))}"cut"==e.type&&(n.state.cutIncoming=+new Date)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),g&&(i.style.width="0px"),me(i,"input",(function(){a&&l>=9&&t.hasSelection&&(t.hasSelection=null),r.poll()})),me(i,"paste",(function(e){be(n,e)||Kl(e,n)||(n.state.pasteIncoming=+new Date,r.fastPoll())})),me(i,"cut",o),me(i,"copy",o),me(e.scroller,"paste",(function(t){if(!Ur(e,t)&&!be(n,t)){if(!i.dispatchEvent)return n.state.pasteIncoming=+new Date,void r.focus();var o=new Event("paste");o.clipboardData=t.clipboardData,i.dispatchEvent(o)}})),me(e.lineSpace,"selectstart",(function(t){Ur(e,t)||_e(t)})),me(i,"compositionstart",(function(){var e=n.getCursor("from");r.composing&&r.composing.range.clear(),r.composing={start:e,range:n.markText(e,n.getCursor("to"),{className:"CodeMirror-composing"})}})),me(i,"compositionend",(function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)}))},as.prototype.createField=function(e){this.wrapper=Xl(),this.textarea=this.wrapper.firstChild},as.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},as.prototype.prepareSelection=function(){var e=this.cm,t=e.display,r=e.doc,n=Kn(e);if(e.options.moveInputWithCursor){var i=wn(e,r.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),a=t.lineDiv.getBoundingClientRect();n.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+a.top-o.top)),n.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+a.left-o.left))}return n},as.prototype.showSelection=function(e){var t=this.cm.display;N(t.cursorDiv,e.cursors),N(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},as.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var r=t.getSelection();this.textarea.value=r,t.state.focused&&P(this.textarea),a&&l>=9&&(this.hasSelection=r)}else e||(this.prevInput=this.textarea.value="",a&&l>=9&&(this.hasSelection=null))}},as.prototype.getField=function(){return this.textarea},as.prototype.supportsTouch=function(){return!1},as.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!y||D()!=this.textarea))try{this.textarea.focus()}catch(e){}},as.prototype.blur=function(){this.textarea.blur()},as.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},as.prototype.receivedFocus=function(){this.slowPoll()},as.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,(function(){e.poll(),e.cm.state.focused&&e.slowPoll()}))},as.prototype.fastPoll=function(){var e=!1,t=this;function r(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,r))}t.pollingFast=!0,t.polling.set(20,r)},as.prototype.poll=function(){var e=this,t=this.cm,r=this.textarea,n=this.prevInput;if(this.contextMenuPending||!t.state.focused||Pe(r)&&!n&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=r.value;if(i==n&&!t.somethingSelected())return!1;if(a&&l>=9&&this.hasSelection===i||b&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||n||(n="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var s=0,c=Math.min(n.length,i.length);s1e3||i.indexOf("\n")>-1?r.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))})),!0},as.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},as.prototype.onKeyPress=function(){a&&l>=9&&(this.hasSelection=null),this.fastPoll()},as.prototype.onContextMenu=function(e){var t=this,r=t.cm,n=r.display,i=t.textarea;t.contextMenuPending&&t.contextMenuPending();var o=Pn(r,e),c=n.scroller.scrollTop;if(o&&!f){r.options.resetSelectionOnContextMenu&&-1==r.doc.sel.contains(o)&&Di(r,jo)(r.doc,so(o),U);var u,d=i.style.cssText,p=t.wrapper.style.cssText,h=t.wrapper.offsetParent.getBoundingClientRect();if(t.wrapper.style.cssText="position: static",i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-h.top-5)+"px; left: "+(e.clientX-h.left-5)+"px;\n z-index: 1000; background: "+(a?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",s&&(u=window.scrollY),n.input.focus(),s&&window.scrollTo(null,u),n.input.reset(),r.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=v,n.selForContextMenu=r.doc.sel,clearTimeout(n.detectingSelectAll),a&&l>=9&&g(),C){Me(e);var m=function(){ve(window,"mouseup",m),setTimeout(v,20)};me(window,"mouseup",m)}else setTimeout(v,50)}function g(){if(null!=i.selectionStart){var e=r.somethingSelected(),o="​"+(e?i.value:"");i.value="⇚",i.value=o,t.prevInput=e?"":"​",i.selectionStart=1,i.selectionEnd=o.length,n.selForContextMenu=r.doc.sel}}function v(){if(t.contextMenuPending==v&&(t.contextMenuPending=!1,t.wrapper.style.cssText=p,i.style.cssText=d,a&&l<9&&n.scrollbars.setScrollTop(n.scroller.scrollTop=c),null!=i.selectionStart)){(!a||a&&l<9)&&g();var e=0,o=function(){n.selForContextMenu==r.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==t.prevInput?Di(r,Zo)(r):e++<10?n.detectingSelectAll=setTimeout(o,500):(n.selForContextMenu=null,n.input.reset())};n.detectingSelectAll=setTimeout(o,200)}}},as.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e,this.textarea.readOnly=!!e},as.prototype.setUneditable=function(){},as.prototype.needsContentAttribute=!1,Il(ql),Yl(ql);var cs="iter insert remove copy getEditor constructor".split(" ");for(var us in Ca.prototype)Ca.prototype.hasOwnProperty(us)&&R(cs,us)<0&&(ql.prototype[us]=function(e){return function(){return e.apply(this.doc,arguments)}}(Ca.prototype[us]));return ke(Ca),ql.inputStyles={textarea:as,contenteditable:Jl},ql.defineMode=function(e){ql.defaults.mode||"null"==e||(ql.defaults.mode=e),Be.apply(this,arguments)},ql.defineMIME=je,ql.defineMode("null",(function(){return{token:function(e){return e.skipToEnd()}}})),ql.defineMIME("text/plain","null"),ql.defineExtension=function(e,t){ql.prototype[e]=t},ql.defineDocExtension=function(e,t){Ca.prototype[e]=t},ql.fromTextArea=ls,ss(ql),ql.version="5.65.5",ql}()},762:(e,t,r)=>{!function(e){"use strict";function t(e,t,r,n,i,o){this.indented=e,this.column=t,this.type=r,this.info=n,this.align=i,this.prev=o}function r(e,r,n,i){var o=e.indented;return e.context&&"statement"==e.context.type&&"statement"!=n&&(o=e.context.indented),e.context=new t(o,r,n,i,null,e.context)}function n(e){var t=e.context.type;return")"!=t&&"]"!=t&&"}"!=t||(e.indented=e.context.indented),e.context=e.context.prev}function i(e,t,r){return"variable"==t.prevToken||"type"==t.prevToken||!!/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(e.string.slice(0,r))||!(!t.typeAtEndOfLine||e.column()!=e.indentation())||void 0}function o(e){for(;;){if(!e||"top"==e.type)return!0;if("}"==e.type&&"namespace"!=e.prev.info)return!1;e=e.prev}}function a(e){for(var t={},r=e.split(" "),n=0;n!?|\/]/,N=s.isIdentifierChar||/[\w\$_\xa1-\uffff]/,A=s.isReservedIdentifier||!1;function O(e,t){var r=e.next();if(w[r]){var n=w[r](e,t);if(!1!==n)return n}if('"'==r||"'"==r)return t.tokenize=z(r),t.tokenize(e,t);if(M.test(r)){if(e.backUp(1),e.match(T))return"number";e.next()}if(S.test(r))return c=r,null;if("/"==r){if(e.eat("*"))return t.tokenize=D,D(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(L.test(r)){for(;!e.match(/^\/[\/*]/,!1)&&e.eat(L););return"operator"}if(e.eatWhile(N),C)for(;e.match(C);)e.eatWhile(N);var i=e.current();return l(h,i)?(l(v,i)&&(c="newstatement"),l(y,i)&&(u=!0),"keyword"):l(m,i)?"type":l(g,i)||A&&A(i)?(l(v,i)&&(c="newstatement"),"builtin"):l(b,i)?"atom":"variable"}function z(e){return function(t,r){for(var n,i=!1,o=!1;null!=(n=t.next());){if(n==e&&!i){o=!0;break}i=!i&&"\\"==n}return(o||!i&&!x)&&(r.tokenize=null),"string"}}function D(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=null;break}n="*"==r}return"comment"}function E(e,t){s.typeFirstDefinitions&&e.eol()&&o(t.context)&&(t.typeAtEndOfLine=i(e,t,e.pos))}return{startState:function(e){return{tokenize:null,context:new t((e||0)-d,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(e,t){var a=t.context;if(e.sol()&&(null==a.align&&(a.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return E(e,t),null;c=u=null;var l=(t.tokenize||O)(e,t);if("comment"==l||"meta"==l)return l;if(null==a.align&&(a.align=!0),";"==c||":"==c||","==c&&e.match(/^\s*(?:\/\/.*)?$/,!1))for(;"statement"==t.context.type;)n(t);else if("{"==c)r(t,e.column(),"}");else if("["==c)r(t,e.column(),"]");else if("("==c)r(t,e.column(),")");else if("}"==c){for(;"statement"==a.type;)a=n(t);for("}"==a.type&&(a=n(t));"statement"==a.type;)a=n(t)}else c==a.type?n(t):k&&(("}"==a.type||"top"==a.type)&&";"!=c||"statement"==a.type&&"newstatement"==c)&&r(t,e.column(),"statement",e.current());if("variable"==l&&("def"==t.prevToken||s.typeFirstDefinitions&&i(e,t,e.start)&&o(t.context)&&e.match(/^\s*\(/,!1))&&(l="def"),w.token){var d=w.token(e,t,l);void 0!==d&&(l=d)}return"def"==l&&!1===s.styleDefs&&(l="variable"),t.startOfLine=!1,t.prevToken=u?"def":l||c,E(e,t),l},indent:function(t,r){if(t.tokenize!=O&&null!=t.tokenize||t.typeAtEndOfLine)return e.Pass;var n=t.context,i=r&&r.charAt(0),o=i==n.type;if("statement"==n.type&&"}"==i&&(n=n.prev),s.dontIndentStatements)for(;"statement"==n.type&&s.dontIndentStatements.test(n.info);)n=n.prev;if(w.indent){var a=w.indent(t,n,r,d);if("number"==typeof a)return a}var l=n.prev&&"switch"==n.prev.info;if(s.allmanIndentation&&/[{(]/.test(i)){for(;"top"!=n.type&&"}"!=n.type;)n=n.prev;return n.indented}return"statement"==n.type?n.indented+("{"==i?0:f):!n.align||p&&")"==n.type?")"!=n.type||o?n.indented+(o?0:d)+(o||!l||/^(?:case|default)\b/.test(r)?0:d):n.indented+f:n.column+(o?0:1)},electricInput:_?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"//",fold:"brace"}}));var s="auto if break case register continue return default do sizeof static else struct switch extern typedef union for goto while enum const volatile inline restrict asm fortran",c="alignas alignof and and_eq audit axiom bitand bitor catch class compl concept constexpr const_cast decltype delete dynamic_cast explicit export final friend import module mutable namespace new noexcept not not_eq operator or or_eq override private protected public reinterpret_cast requires static_assert static_cast template this thread_local throw try typeid typename using virtual xor xor_eq",u="bycopy byref in inout oneway out self super atomic nonatomic retain copy readwrite readonly strong weak assign typeof nullable nonnull null_resettable _cmd @interface @implementation @end @protocol @encode @property @synthesize @dynamic @class @public @package @private @protected @required @optional @try @catch @finally @import @selector @encode @defs @synchronized @autoreleasepool @compatibility_alias @available",d="FOUNDATION_EXPORT FOUNDATION_EXTERN NS_INLINE NS_FORMAT_FUNCTION NS_RETURNS_RETAINEDNS_ERROR_ENUM NS_RETURNS_NOT_RETAINED NS_RETURNS_INNER_POINTER NS_DESIGNATED_INITIALIZER NS_ENUM NS_OPTIONS NS_REQUIRES_NIL_TERMINATION NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_SWIFT_NAME NS_REFINED_FOR_SWIFT",f=a("int long char short double float unsigned signed void bool"),p=a("SEL instancetype id Class Protocol BOOL");function h(e){return l(f,e)||/.+_t$/.test(e)}function m(e){return h(e)||l(p,e)}var g="case do else for if switch while struct enum union",v="struct enum union";function y(e,t){if(!t.startOfLine)return!1;for(var r,n=null;r=e.peek();){if("\\"==r&&e.match(/^.$/)){n=y;break}if("/"==r&&e.match(/^\/[\/\*]/,!1))break;e.next()}return t.tokenize=n,"meta"}function b(e,t){return"type"==t.prevToken&&"type"}function w(e){return!(!e||e.length<2||"_"!=e[0]||"_"!=e[1]&&e[1]===e[1].toLowerCase())}function x(e){return e.eatWhile(/[\w\.']/),"number"}function k(e,t){if(e.backUp(1),e.match(/^(?:R|u8R|uR|UR|LR)/)){var r=e.match(/^"([^\s\\()]{0,16})\(/);return!!r&&(t.cpp11RawStringDelim=r[1],t.tokenize=S,S(e,t))}return e.match(/^(?:u8|u|U|L)/)?!!e.match(/^["']/,!1)&&"string":(e.next(),!1)}function _(e){var t=/(\w+)::~?(\w+)$/.exec(e);return t&&t[1]==t[2]}function C(e,t){for(var r;null!=(r=e.next());)if('"'==r&&!e.eat('"')){t.tokenize=null;break}return"string"}function S(e,t){var r=t.cpp11RawStringDelim.replace(/[^\w\s]/g,"\\$&");return e.match(new RegExp(".*?\\)"+r+'"'))?t.tokenize=null:e.skipToEnd(),"string"}function M(t,r){"string"==typeof t&&(t=[t]);var n=[];function i(e){if(e)for(var t in e)e.hasOwnProperty(t)&&n.push(t)}i(r.keywords),i(r.types),i(r.builtin),i(r.atoms),n.length&&(r.helperType=t[0],e.registerHelper("hintWords",t[0],n));for(var o=0;o!?|\/#:@]/,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,t){return!!e.match('""')&&(t.tokenize=T,t.tokenize(e,t))},"'":function(e){return e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},"=":function(e,r){var n=r.context;return!("}"!=n.type||!n.align||!e.eat(">"))&&(r.context=new t(n.indented,n.column,n.type,n.info,null,n.prev),"operator")},"/":function(e,t){return!!e.eat("*")&&(t.tokenize=L(1),t.tokenize(e,t))}},modeProps:{closeBrackets:{pairs:'()[]{}""',triples:'"'}}}),M("text/x-kotlin",{name:"clike",keywords:a("package as typealias class interface this super val operator var fun for is in This throw return annotation break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend actual expect setparam value"),types:a("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray Nothing ShortArray Unit"),intendSwitch:!1,indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,blockKeywords:a("catch class do else finally for if where try while enum"),defKeywords:a("class val var object interface fun"),atoms:a("true false null this"),hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},"*":function(e,t){return"."==t.prevToken?"variable":"operator"},'"':function(e,t){return t.tokenize=N(e.match('""')),t.tokenize(e,t)},"/":function(e,t){return!!e.eat("*")&&(t.tokenize=L(1),t.tokenize(e,t))},indent:function(e,t,r,n){var i=r&&r.charAt(0);return"}"!=e.prevToken&&")"!=e.prevToken||""!=r?"operator"==e.prevToken&&"}"!=r&&"}"!=e.context.type||"variable"==e.prevToken&&"."==i||("}"==e.prevToken||")"==e.prevToken)&&"."==i?2*n+t.indented:t.align&&"}"==t.type?t.indented+(e.context.type==(r||"").charAt(0)?0:n):void 0:e.indented}},modeProps:{closeBrackets:{triples:'"'}}}),M(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:a("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:a("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:a("for while do if else struct"),builtin:a("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:a("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":y},modeProps:{fold:["brace","include"]}}),M("text/x-nesc",{name:"clike",keywords:a(s+" as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:h,blockKeywords:a(g),atoms:a("null true false"),hooks:{"#":y},modeProps:{fold:["brace","include"]}}),M("text/x-objectivec",{name:"clike",keywords:a(s+" "+u),types:m,builtin:a(d),blockKeywords:a(g+" @synthesize @try @catch @finally @autoreleasepool @synchronized"),defKeywords:a(v+" @interface @implementation @protocol @class"),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:a("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:w,hooks:{"#":y,"*":b},modeProps:{fold:["brace","include"]}}),M("text/x-objectivec++",{name:"clike",keywords:a(s+" "+u+" "+c),types:m,builtin:a(d),blockKeywords:a(g+" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch"),defKeywords:a(v+" @interface @implementation @protocol @class class namespace"),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:a("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:w,hooks:{"#":y,"*":b,u:k,U:k,L:k,R:k,0:x,1:x,2:x,3:x,4:x,5:x,6:x,7:x,8:x,9:x,token:function(e,t,r){if("variable"==r&&"("==e.peek()&&(";"==t.prevToken||null==t.prevToken||"}"==t.prevToken)&&_(e.current()))return"def"}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}}),M("text/x-squirrel",{name:"clike",keywords:a("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:h,blockKeywords:a("case catch class else for foreach if switch try while"),defKeywords:a("function local class"),typeFirstDefinitions:!0,atoms:a("true false null"),hooks:{"#":y},modeProps:{fold:["brace","include"]}});var A=null;function O(e){return function(t,r){for(var n,i=!1,o=!1;!t.eol();){if(!i&&t.match('"')&&("single"==e||t.match('""'))){o=!0;break}if(!i&&t.match("``")){A=O(e),o=!0;break}n=t.next(),i="single"==e&&!i&&"\\"==n}return o&&(r.tokenize=null),"string"}}M("text/x-ceylon",{name:"clike",keywords:a("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(e){var t=e.charAt(0);return t===t.toUpperCase()&&t!==t.toLowerCase()},blockKeywords:a("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:a("class dynamic function interface module object package value"),builtin:a("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:a("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,t){return t.tokenize=O(e.match('""')?"triple":"single"),t.tokenize(e,t)},"`":function(e,t){return!(!A||!e.match("`"))&&(t.tokenize=A,A=null,t.tokenize(e,t))},"'":function(e){return e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},token:function(e,t,r){if(("variable"==r||"type"==r)&&"."==t.prevToken)return"variable-2"}},modeProps:{fold:["brace","import"],closeBrackets:{triples:'"'}}})}(r(631))},629:(e,t,r)=>{!function(e){"use strict";function t(e){for(var t={},r=0;r*\/]/.test(r)?k(null,"select-op"):"."==r&&e.match(/^-?[_a-z][_a-z0-9-]*/i)?k("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(r)?k(null,r):e.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(e.current())&&(t.tokenize=S),k("variable callee","variable")):/[\w\\\-]/.test(r)?(e.eatWhile(/[\w\\\-]/),k("property","word")):k(null,null):/[\d.]/.test(e.peek())?(e.eatWhile(/[\w.%]/),k("number","unit")):e.match(/^-[\w\\\-]*/)?(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?k("variable-2","variable-definition"):k("variable-2","variable")):e.match(/^\w+-/)?k("meta","meta"):void 0}function C(e){return function(t,r){for(var n,i=!1;null!=(n=t.next());){if(n==e&&!i){")"==e&&t.backUp(1);break}i=!i&&"\\"==n}return(n==e||!i&&")"!=e)&&(r.tokenize=null),k("string","string")}}function S(e,t){return e.next(),e.match(/^\s*[\"\')]/,!1)?t.tokenize=null:t.tokenize=C(")"),k(null,"(")}function M(e,t,r){this.type=e,this.indent=t,this.prev=r}function T(e,t,r,n){return e.context=new M(r,t.indentation()+(!1===n?0:a),e.context),r}function L(e){return e.context.prev&&(e.context=e.context.prev),e.context.type}function N(e,t,r){return z[r.context.type](e,t,r)}function A(e,t,r,n){for(var i=n||1;i>0;i--)r.context=r.context.prev;return N(e,t,r)}function O(e){var t=e.current().toLowerCase();o=v.hasOwnProperty(t)?"atom":g.hasOwnProperty(t)?"keyword":"variable"}var z={top:function(e,t,r){if("{"==e)return T(r,t,"block");if("}"==e&&r.context.prev)return L(r);if(w&&/@component/i.test(e))return T(r,t,"atComponentBlock");if(/^@(-moz-)?document$/i.test(e))return T(r,t,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(e))return T(r,t,"atBlock");if(/^@(font-face|counter-style)/i.test(e))return r.stateArg=e,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e))return"keyframes";if(e&&"@"==e.charAt(0))return T(r,t,"at");if("hash"==e)o="builtin";else if("word"==e)o="tag";else{if("variable-definition"==e)return"maybeprop";if("interpolation"==e)return T(r,t,"interpolation");if(":"==e)return"pseudo";if(y&&"("==e)return T(r,t,"parens")}return r.context.type},block:function(e,t,r){if("word"==e){var n=t.current().toLowerCase();return f.hasOwnProperty(n)?(o="property","maybeprop"):p.hasOwnProperty(n)?(o=x?"string-2":"property","maybeprop"):y?(o=t.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(o+=" error","maybeprop")}return"meta"==e?"block":y||"hash"!=e&&"qualifier"!=e?z.top(e,t,r):(o="error","block")},maybeprop:function(e,t,r){return":"==e?T(r,t,"prop"):N(e,t,r)},prop:function(e,t,r){if(";"==e)return L(r);if("{"==e&&y)return T(r,t,"propBlock");if("}"==e||"{"==e)return A(e,t,r);if("("==e)return T(r,t,"parens");if("hash"!=e||/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(t.current())){if("word"==e)O(t);else if("interpolation"==e)return T(r,t,"interpolation")}else o+=" error";return"prop"},propBlock:function(e,t,r){return"}"==e?L(r):"word"==e?(o="property","maybeprop"):r.context.type},parens:function(e,t,r){return"{"==e||"}"==e?A(e,t,r):")"==e?L(r):"("==e?T(r,t,"parens"):"interpolation"==e?T(r,t,"interpolation"):("word"==e&&O(t),"parens")},pseudo:function(e,t,r){return"meta"==e?"pseudo":"word"==e?(o="variable-3",r.context.type):N(e,t,r)},documentTypes:function(e,t,r){return"word"==e&&s.hasOwnProperty(t.current())?(o="tag",r.context.type):z.atBlock(e,t,r)},atBlock:function(e,t,r){if("("==e)return T(r,t,"atBlock_parens");if("}"==e||";"==e)return A(e,t,r);if("{"==e)return L(r)&&T(r,t,y?"block":"top");if("interpolation"==e)return T(r,t,"interpolation");if("word"==e){var n=t.current().toLowerCase();o="only"==n||"not"==n||"and"==n||"or"==n?"keyword":c.hasOwnProperty(n)?"attribute":u.hasOwnProperty(n)?"property":d.hasOwnProperty(n)?"keyword":f.hasOwnProperty(n)?"property":p.hasOwnProperty(n)?x?"string-2":"property":v.hasOwnProperty(n)?"atom":g.hasOwnProperty(n)?"keyword":"error"}return r.context.type},atComponentBlock:function(e,t,r){return"}"==e?A(e,t,r):"{"==e?L(r)&&T(r,t,y?"block":"top",!1):("word"==e&&(o="error"),r.context.type)},atBlock_parens:function(e,t,r){return")"==e?L(r):"{"==e||"}"==e?A(e,t,r,2):z.atBlock(e,t,r)},restricted_atBlock_before:function(e,t,r){return"{"==e?T(r,t,"restricted_atBlock"):"word"==e&&"@counter-style"==r.stateArg?(o="variable","restricted_atBlock_before"):N(e,t,r)},restricted_atBlock:function(e,t,r){return"}"==e?(r.stateArg=null,L(r)):"word"==e?(o="@font-face"==r.stateArg&&!h.hasOwnProperty(t.current().toLowerCase())||"@counter-style"==r.stateArg&&!m.hasOwnProperty(t.current().toLowerCase())?"error":"property","maybeprop"):"restricted_atBlock"},keyframes:function(e,t,r){return"word"==e?(o="variable","keyframes"):"{"==e?T(r,t,"top"):N(e,t,r)},at:function(e,t,r){return";"==e?L(r):"{"==e||"}"==e?A(e,t,r):("word"==e?o="tag":"hash"==e&&(o="builtin"),"at")},interpolation:function(e,t,r){return"}"==e?L(r):"{"==e||";"==e?A(e,t,r):("word"==e?o="variable":"variable"!=e&&"("!=e&&")"!=e&&(o="error"),"interpolation")}};return{startState:function(e){return{tokenize:null,state:n?"block":"top",stateArg:null,context:new M(n?"block":"top",e||0,null)}},token:function(e,t){if(!t.tokenize&&e.eatSpace())return null;var r=(t.tokenize||_)(e,t);return r&&"object"==typeof r&&(i=r[1],r=r[0]),o=r,"comment"!=i&&(t.state=z[t.state](i,e,t)),o},indent:function(e,t){var r=e.context,n=t&&t.charAt(0),i=r.indent;return"prop"!=r.type||"}"!=n&&")"!=n||(r=r.prev),r.prev&&("}"!=n||"block"!=r.type&&"top"!=r.type&&"interpolation"!=r.type&&"restricted_atBlock"!=r.type?(")"!=n||"parens"!=r.type&&"atBlock_parens"!=r.type)&&("{"!=n||"at"!=r.type&&"atBlock"!=r.type)||(i=Math.max(0,r.indent-a)):i=(r=r.prev).indent),i},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:b,fold:"brace"}}));var r=["domain","regexp","url","url-prefix"],n=t(r),i=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],o=t(i),a=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","orientation","device-pixel-ratio","min-device-pixel-ratio","max-device-pixel-ratio","pointer","any-pointer","hover","any-hover","prefers-color-scheme","dynamic-range","video-dynamic-range"],l=t(a),s=["landscape","portrait","none","coarse","fine","on-demand","hover","interlace","progressive","dark","light","standard","high"],c=t(s),u=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","all","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","binding","bleed","block-size","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-content","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-gap","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-gap","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","left","letter-spacing","line-break","line-height","line-height-step","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","place-content","place-items","place-self","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotate","rotation","rotation-point","row-gap","ruby-align","ruby-overhang","ruby-position","ruby-span","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-type","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-orientation","text-outline","text-overflow","text-rendering","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","touch-action","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-select","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","paint-order","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode"],d=t(u),f=["accent-color","aspect-ratio","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","content-visibility","margin-block","margin-block-end","margin-block-start","margin-inline","margin-inline-end","margin-inline-start","overflow-anchor","overscroll-behavior","padding-block","padding-block-end","padding-block-start","padding-inline","padding-inline-end","padding-inline-start","scroll-snap-stop","scrollbar-3d-light-color","scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-track-color","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","shape-inside","zoom"],p=t(f),h=t(["font-display","font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"]),m=t(["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"]),g=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],v=t(g),y=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","blur","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","brightness","bullets","button","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","conic-gradient","contain","content","contents","content-box","context-menu","continuous","contrast","copy","counter","counters","cover","crop","cross","crosshair","cubic-bezier","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","devanagari","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","drop-shadow","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","georgian","grayscale","graytext","grid","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hard-light","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","hue","hue-rotate","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","luminosity","malayalam","manipulation","match","matrix","matrix3d","media-play-button","media-slider","media-sliderthumb","media-volume-slider","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","multiple_mask_images","multiply","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","opacity","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturate","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","self-start","self-end","semi-condensed","semi-expanded","separate","sepia","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","somali","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","square-button","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"],b=t(y),w=r.concat(i).concat(a).concat(s).concat(u).concat(f).concat(g).concat(y);function x(e,t){for(var r,n=!1;null!=(r=e.next());){if(n&&"/"==r){t.tokenize=null;break}n="*"==r}return["comment","comment"]}e.registerHelper("hintWords","css",w),e.defineMIME("text/css",{documentTypes:n,mediaTypes:o,mediaFeatures:l,mediaValueKeywords:c,propertyKeywords:d,nonStandardPropertyKeywords:p,fontProperties:h,counterDescriptors:m,colorKeywords:v,valueKeywords:b,tokenHooks:{"/":function(e,t){return!!e.eat("*")&&(t.tokenize=x,x(e,t))}},name:"css"}),e.defineMIME("text/x-scss",{mediaTypes:o,mediaFeatures:l,mediaValueKeywords:c,propertyKeywords:d,nonStandardPropertyKeywords:p,colorKeywords:v,valueKeywords:b,fontProperties:h,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=x,x(e,t)):["operator","operator"]},":":function(e){return!!e.match(/^\s*\{/,!1)&&[null,null]},$:function(e){return e.match(/^[\w-]+/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"]},"#":function(e){return!!e.eat("{")&&[null,"interpolation"]}},name:"css",helperType:"scss"}),e.defineMIME("text/x-less",{mediaTypes:o,mediaFeatures:l,mediaValueKeywords:c,propertyKeywords:d,nonStandardPropertyKeywords:p,colorKeywords:v,valueKeywords:b,fontProperties:h,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=x,x(e,t)):["operator","operator"]},"@":function(e){return e.eat("{")?[null,"interpolation"]:!e.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i,!1)&&(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"])},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"}),e.defineMIME("text/x-gss",{documentTypes:n,mediaTypes:o,mediaFeatures:l,propertyKeywords:d,nonStandardPropertyKeywords:p,fontProperties:h,counterDescriptors:m,colorKeywords:v,valueKeywords:b,supportsAtComponent:!0,tokenHooks:{"/":function(e,t){return!!e.eat("*")&&(t.tokenize=x,x(e,t))}},name:"css",helperType:"gss"})}(r(631))},531:(e,t,r)=>{!function(e){"use strict";var t={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]};function r(e,t,r){var n=e.current(),i=n.search(t);return i>-1?e.backUp(n.length-i):n.match(/<\/?$/)&&(e.backUp(n.length),e.match(t,!1)||e.match(n)),r}var n={};function i(e){var t=n[e];return t||(n[e]=new RegExp("\\s+"+e+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"))}function o(e,t){var r=e.match(i(t));return r?/^\s*(.*?)\s*$/.exec(r[2])[1]:""}function a(e,t){return new RegExp((t?"^":"")+"","i")}function l(e,t){for(var r in e)for(var n=t[r]||(t[r]=[]),i=e[r],o=i.length-1;o>=0;o--)n.unshift(i[o])}function s(e,t){for(var r=0;r=0;f--)c.script.unshift(["type",d[f].matches,d[f].mode]);function p(t,i){var l,u=o.token(t,i.htmlState),d=/\btag\b/.test(u);if(d&&!/[<>\s\/]/.test(t.current())&&(l=i.htmlState.tagName&&i.htmlState.tagName.toLowerCase())&&c.hasOwnProperty(l))i.inTag=l+" ";else if(i.inTag&&d&&/>$/.test(t.current())){var f=/^([\S]+) (.*)/.exec(i.inTag);i.inTag=null;var h=">"==t.current()&&s(c[f[1]],f[2]),m=e.getMode(n,h),g=a(f[1],!0),v=a(f[1],!1);i.token=function(e,t){return e.match(g,!1)?(t.token=p,t.localState=t.localMode=null,null):r(e,v,t.localMode.token(e,t.localState))},i.localMode=m,i.localState=e.startState(m,o.indent(i.htmlState,"",""))}else i.inTag&&(i.inTag+=t.current(),t.eol()&&(i.inTag+=" "));return u}return{startState:function(){return{token:p,inTag:null,localMode:null,localState:null,htmlState:e.startState(o)}},copyState:function(t){var r;return t.localState&&(r=e.copyState(t.localMode,t.localState)),{token:t.token,inTag:t.inTag,localMode:t.localMode,localState:r,htmlState:e.copyState(o,t.htmlState)}},token:function(e,t){return t.token(e,t)},indent:function(t,r,n){return!t.localMode||/^\s*<\//.test(r)?o.indent(t.htmlState,r,n):t.localMode.indent?t.localMode.indent(t.localState,r,n):e.Pass},innerMode:function(e){return{state:e.localState||e.htmlState,mode:e.localMode||o}}}}),"xml","javascript","css"),e.defineMIME("text/html","htmlmixed")}(r(631),r(589),r(876),r(629))},876:(e,t,r)=>{!function(e){"use strict";e.defineMode("javascript",(function(t,r){var n,i,o=t.indentUnit,a=r.statementIndent,l=r.jsonld,s=r.json||l,c=!1!==r.trackScope,u=r.typescript,d=r.wordCharacters||/[\w$\xa1-\uffff]/,f=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),r=e("keyword b"),n=e("keyword c"),i=e("keyword d"),o=e("operator"),a={type:"atom",style:"atom"};return{if:e("if"),while:t,with:t,else:r,do:r,try:r,finally:r,return:i,break:i,continue:i,new:e("new"),delete:n,void:n,throw:n,debugger:e("debugger"),var:e("var"),const:e("var"),let:e("var"),function:e("function"),catch:e("catch"),for:e("for"),switch:e("switch"),case:e("case"),default:e("default"),in:o,typeof:o,instanceof:o,true:a,false:a,null:a,undefined:a,NaN:a,Infinity:a,this:e("this"),class:e("class"),super:e("atom"),yield:n,export:e("export"),import:e("import"),extends:n,await:n}}(),p=/[+\-*&%=<>!?|~^@]/,h=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function m(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}function g(e,t,r){return n=e,i=r,t}function v(e,t){var r=e.next();if('"'==r||"'"==r)return t.tokenize=y(r),t.tokenize(e,t);if("."==r&&e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return g("number","number");if("."==r&&e.match(".."))return g("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(r))return g(r);if("="==r&&e.eat(">"))return g("=>","operator");if("0"==r&&e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return g("number","number");if(/\d/.test(r))return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),g("number","number");if("/"==r)return e.eat("*")?(t.tokenize=b,b(e,t)):e.eat("/")?(e.skipToEnd(),g("comment","comment")):it(e,t,1)?(m(e),e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),g("regexp","string-2")):(e.eat("="),g("operator","operator",e.current()));if("`"==r)return t.tokenize=w,w(e,t);if("#"==r&&"!"==e.peek())return e.skipToEnd(),g("meta","meta");if("#"==r&&e.eatWhile(d))return g("variable","property");if("<"==r&&e.match("!--")||"-"==r&&e.match("->")&&!/\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),g("comment","comment");if(p.test(r))return">"==r&&t.lexical&&">"==t.lexical.type||(e.eat("=")?"!"!=r&&"="!=r||e.eat("="):/[<>*+\-|&?]/.test(r)&&(e.eat(r),">"==r&&e.eat(r))),"?"==r&&e.eat(".")?g("."):g("operator","operator",e.current());if(d.test(r)){e.eatWhile(d);var n=e.current();if("."!=t.lastType){if(f.propertyIsEnumerable(n)){var i=f[n];return g(i.type,i.style,n)}if("async"==n&&e.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return g("async","keyword",n)}return g("variable","variable",n)}}function y(e){return function(t,r){var n,i=!1;if(l&&"@"==t.peek()&&t.match(h))return r.tokenize=v,g("jsonld-keyword","meta");for(;null!=(n=t.next())&&(n!=e||i);)i=!i&&"\\"==n;return i||(r.tokenize=v),g("string","string")}}function b(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=v;break}n="*"==r}return g("comment","comment")}function w(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=v;break}n=!n&&"\\"==r}return g("quasi","string-2",e.current())}var x="([{}])";function k(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(u){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var i=0,o=!1,a=r-1;a>=0;--a){var l=e.string.charAt(a),s=x.indexOf(l);if(s>=0&&s<3){if(!i){++a;break}if(0==--i){"("==l&&(o=!0);break}}else if(s>=3&&s<6)++i;else if(d.test(l))o=!0;else if(/["'\/`]/.test(l))for(;;--a){if(0==a)return;if(e.string.charAt(a-1)==l&&"\\"!=e.string.charAt(a-2)){a--;break}}else if(o&&!i){++a;break}}o&&!i&&(t.fatArrowAt=a)}}var _={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function C(e,t,r,n,i,o){this.indented=e,this.column=t,this.type=r,this.prev=i,this.info=o,null!=n&&(this.align=n)}function S(e,t){if(!c)return!1;for(var r=e.localVars;r;r=r.next)if(r.name==t)return!0;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return!0}function M(e,t,r,n,i){var o=e.cc;for(T.state=e,T.stream=i,T.marked=null,T.cc=o,T.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((o.length?o.pop():s?K:j)(r,n)){for(;o.length&&o[o.length-1].lex;)o.pop()();return T.marked?T.marked:"variable"==r&&S(e,n)?"variable-2":t}}var T={state:null,column:null,marked:null,cc:null};function L(){for(var e=arguments.length-1;e>=0;e--)T.cc.push(arguments[e])}function N(){return L.apply(null,arguments),!0}function A(e,t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}function O(e){var t=T.state;if(T.marked="def",c){if(t.context)if("var"==t.lexical.info&&t.context&&t.context.block){var n=z(e,t.context);if(null!=n)return void(t.context=n)}else if(!A(e,t.localVars))return void(t.localVars=new I(e,t.localVars));r.globalVars&&!A(e,t.globalVars)&&(t.globalVars=new I(e,t.globalVars))}}function z(e,t){if(t){if(t.block){var r=z(e,t.prev);return r?r==t.prev?t:new E(r,t.vars,!0):null}return A(e,t.vars)?t:new E(t.prev,new I(e,t.vars),!1)}return null}function D(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}function E(e,t,r){this.prev=e,this.vars=t,this.block=r}function I(e,t){this.name=e,this.next=t}var P=new I("this",new I("arguments",null));function W(){T.state.context=new E(T.state.context,T.state.localVars,!1),T.state.localVars=P}function q(){T.state.context=new E(T.state.context,T.state.localVars,!0),T.state.localVars=null}function F(){T.state.localVars=T.state.context.vars,T.state.context=T.state.context.prev}function H(e,t){var r=function(){var r=T.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var i=r.lexical;i&&")"==i.type&&i.align;i=i.prev)n=i.indented;r.lexical=new C(n,T.stream.column(),e,null,r.lexical,t)};return r.lex=!0,r}function R(){var e=T.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function B(e){function t(r){return r==e?N():";"==e||"}"==r||")"==r||"]"==r?L():N(t)}return t}function j(e,t){return"var"==e?N(H("vardef",t),Le,B(";"),R):"keyword a"==e?N(H("form"),$,j,R):"keyword b"==e?N(H("form"),j,R):"keyword d"==e?T.stream.match(/^\s*$/,!1)?N():N(H("stat"),X,B(";"),R):"debugger"==e?N(B(";")):"{"==e?N(H("}"),q,fe,R,F):";"==e?N():"if"==e?("else"==T.state.lexical.info&&T.state.cc[T.state.cc.length-1]==R&&T.state.cc.pop()(),N(H("form"),$,j,R,Ee)):"function"==e?N(qe):"for"==e?N(H("form"),q,Ie,j,F,R):"class"==e||u&&"interface"==t?(T.marked="keyword",N(H("form","class"==e?e:t),je,R)):"variable"==e?u&&"declare"==t?(T.marked="keyword",N(j)):u&&("module"==t||"enum"==t||"type"==t)&&T.stream.match(/^\s*\w/,!1)?(T.marked="keyword","enum"==t?N(tt):"type"==t?N(He,B("operator"),ve,B(";")):N(H("form"),Ne,B("{"),H("}"),fe,R,R)):u&&"namespace"==t?(T.marked="keyword",N(H("form"),K,j,R)):u&&"abstract"==t?(T.marked="keyword",N(j)):N(H("stat"),oe):"switch"==e?N(H("form"),$,B("{"),H("}","switch"),q,fe,R,R,F):"case"==e?N(K,B(":")):"default"==e?N(B(":")):"catch"==e?N(H("form"),W,U,j,R,F):"export"==e?N(H("stat"),$e,R):"import"==e?N(H("stat"),Xe,R):"async"==e?N(j):"@"==t?N(K,j):L(H("stat"),K,B(";"),R)}function U(e){if("("==e)return N(Re,B(")"))}function K(e,t){return G(e,t,!1)}function V(e,t){return G(e,t,!0)}function $(e){return"("!=e?L():N(H(")"),X,B(")"),R)}function G(e,t,r){if(T.state.fatArrowAt==T.stream.start){var n=r?te:ee;if("("==e)return N(W,H(")"),ue(Re,")"),R,B("=>"),n,F);if("variable"==e)return L(W,Ne,B("=>"),n,F)}var i=r?Z:Y;return _.hasOwnProperty(e)?N(i):"function"==e?N(qe,i):"class"==e||u&&"interface"==t?(T.marked="keyword",N(H("form"),Be,R)):"keyword c"==e||"async"==e?N(r?V:K):"("==e?N(H(")"),X,B(")"),R,i):"operator"==e||"spread"==e?N(r?V:K):"["==e?N(H("]"),et,R,i):"{"==e?de(le,"}",null,i):"quasi"==e?L(Q,i):"new"==e?N(re(r)):N()}function X(e){return e.match(/[;\}\)\],]/)?L():L(K)}function Y(e,t){return","==e?N(X):Z(e,t,!1)}function Z(e,t,r){var n=0==r?Y:Z,i=0==r?K:V;return"=>"==e?N(W,r?te:ee,F):"operator"==e?/\+\+|--/.test(t)||u&&"!"==t?N(n):u&&"<"==t&&T.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?N(H(">"),ue(ve,">"),R,n):"?"==t?N(K,B(":"),i):N(i):"quasi"==e?L(Q,n):";"!=e?"("==e?de(V,")","call",n):"."==e?N(ae,n):"["==e?N(H("]"),X,B("]"),R,n):u&&"as"==t?(T.marked="keyword",N(ve,n)):"regexp"==e?(T.state.lastType=T.marked="operator",T.stream.backUp(T.stream.pos-T.stream.start-1),N(i)):void 0:void 0}function Q(e,t){return"quasi"!=e?L():"${"!=t.slice(t.length-2)?N(Q):N(X,J)}function J(e){if("}"==e)return T.marked="string-2",T.state.tokenize=w,N(Q)}function ee(e){return k(T.stream,T.state),L("{"==e?j:K)}function te(e){return k(T.stream,T.state),L("{"==e?j:V)}function re(e){return function(t){return"."==t?N(e?ie:ne):"variable"==t&&u?N(Se,e?Z:Y):L(e?V:K)}}function ne(e,t){if("target"==t)return T.marked="keyword",N(Y)}function ie(e,t){if("target"==t)return T.marked="keyword",N(Z)}function oe(e){return":"==e?N(R,j):L(Y,B(";"),R)}function ae(e){if("variable"==e)return T.marked="property",N()}function le(e,t){return"async"==e?(T.marked="property",N(le)):"variable"==e||"keyword"==T.style?(T.marked="property","get"==t||"set"==t?N(se):(u&&T.state.fatArrowAt==T.stream.start&&(r=T.stream.match(/^\s*:\s*/,!1))&&(T.state.fatArrowAt=T.stream.pos+r[0].length),N(ce))):"number"==e||"string"==e?(T.marked=l?"property":T.style+" property",N(ce)):"jsonld-keyword"==e?N(ce):u&&D(t)?(T.marked="keyword",N(le)):"["==e?N(K,pe,B("]"),ce):"spread"==e?N(V,ce):"*"==t?(T.marked="keyword",N(le)):":"==e?L(ce):void 0;var r}function se(e){return"variable"!=e?L(ce):(T.marked="property",N(qe))}function ce(e){return":"==e?N(V):"("==e?L(qe):void 0}function ue(e,t,r){function n(i,o){if(r?r.indexOf(i)>-1:","==i){var a=T.state.lexical;return"call"==a.info&&(a.pos=(a.pos||0)+1),N((function(r,n){return r==t||n==t?L():L(e)}),n)}return i==t||o==t?N():r&&r.indexOf(";")>-1?L(e):N(B(t))}return function(r,i){return r==t||i==t?N():L(e,n)}}function de(e,t,r){for(var n=3;n"),ve):"quasi"==e?L(xe,Ce):void 0}function ye(e){if("=>"==e)return N(ve)}function be(e){return e.match(/[\}\)\]]/)?N():","==e||";"==e?N(be):L(we,be)}function we(e,t){return"variable"==e||"keyword"==T.style?(T.marked="property",N(we)):"?"==t||"number"==e||"string"==e?N(we):":"==e?N(ve):"["==e?N(B("variable"),he,B("]"),we):"("==e?L(Fe,we):e.match(/[;\}\)\],]/)?void 0:N()}function xe(e,t){return"quasi"!=e?L():"${"!=t.slice(t.length-2)?N(xe):N(ve,ke)}function ke(e){if("}"==e)return T.marked="string-2",T.state.tokenize=w,N(xe)}function _e(e,t){return"variable"==e&&T.stream.match(/^\s*[?:]/,!1)||"?"==t?N(_e):":"==e?N(ve):"spread"==e?N(_e):L(ve)}function Ce(e,t){return"<"==t?N(H(">"),ue(ve,">"),R,Ce):"|"==t||"."==e||"&"==t?N(ve):"["==e?N(ve,B("]"),Ce):"extends"==t||"implements"==t?(T.marked="keyword",N(ve)):"?"==t?N(ve,B(":"),ve):void 0}function Se(e,t){if("<"==t)return N(H(">"),ue(ve,">"),R,Ce)}function Me(){return L(ve,Te)}function Te(e,t){if("="==t)return N(ve)}function Le(e,t){return"enum"==t?(T.marked="keyword",N(tt)):L(Ne,pe,ze,De)}function Ne(e,t){return u&&D(t)?(T.marked="keyword",N(Ne)):"variable"==e?(O(t),N()):"spread"==e?N(Ne):"["==e?de(Oe,"]"):"{"==e?de(Ae,"}"):void 0}function Ae(e,t){return"variable"!=e||T.stream.match(/^\s*:/,!1)?("variable"==e&&(T.marked="property"),"spread"==e?N(Ne):"}"==e?L():"["==e?N(K,B("]"),B(":"),Ae):N(B(":"),Ne,ze)):(O(t),N(ze))}function Oe(){return L(Ne,ze)}function ze(e,t){if("="==t)return N(V)}function De(e){if(","==e)return N(Le)}function Ee(e,t){if("keyword b"==e&&"else"==t)return N(H("form","else"),j,R)}function Ie(e,t){return"await"==t?N(Ie):"("==e?N(H(")"),Pe,R):void 0}function Pe(e){return"var"==e?N(Le,We):"variable"==e?N(We):L(We)}function We(e,t){return")"==e?N():";"==e?N(We):"in"==t||"of"==t?(T.marked="keyword",N(K,We)):L(K,We)}function qe(e,t){return"*"==t?(T.marked="keyword",N(qe)):"variable"==e?(O(t),N(qe)):"("==e?N(W,H(")"),ue(Re,")"),R,me,j,F):u&&"<"==t?N(H(">"),ue(Me,">"),R,qe):void 0}function Fe(e,t){return"*"==t?(T.marked="keyword",N(Fe)):"variable"==e?(O(t),N(Fe)):"("==e?N(W,H(")"),ue(Re,")"),R,me,F):u&&"<"==t?N(H(">"),ue(Me,">"),R,Fe):void 0}function He(e,t){return"keyword"==e||"variable"==e?(T.marked="type",N(He)):"<"==t?N(H(">"),ue(Me,">"),R):void 0}function Re(e,t){return"@"==t&&N(K,Re),"spread"==e?N(Re):u&&D(t)?(T.marked="keyword",N(Re)):u&&"this"==e?N(pe,ze):L(Ne,pe,ze)}function Be(e,t){return"variable"==e?je(e,t):Ue(e,t)}function je(e,t){if("variable"==e)return O(t),N(Ue)}function Ue(e,t){return"<"==t?N(H(">"),ue(Me,">"),R,Ue):"extends"==t||"implements"==t||u&&","==e?("implements"==t&&(T.marked="keyword"),N(u?ve:K,Ue)):"{"==e?N(H("}"),Ke,R):void 0}function Ke(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||u&&D(t))&&T.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(T.marked="keyword",N(Ke)):"variable"==e||"keyword"==T.style?(T.marked="property",N(Ve,Ke)):"number"==e||"string"==e?N(Ve,Ke):"["==e?N(K,pe,B("]"),Ve,Ke):"*"==t?(T.marked="keyword",N(Ke)):u&&"("==e?L(Fe,Ke):";"==e||","==e?N(Ke):"}"==e?N():"@"==t?N(K,Ke):void 0}function Ve(e,t){if("!"==t)return N(Ve);if("?"==t)return N(Ve);if(":"==e)return N(ve,ze);if("="==t)return N(V);var r=T.state.lexical.prev;return L(r&&"interface"==r.info?Fe:qe)}function $e(e,t){return"*"==t?(T.marked="keyword",N(Je,B(";"))):"default"==t?(T.marked="keyword",N(K,B(";"))):"{"==e?N(ue(Ge,"}"),Je,B(";")):L(j)}function Ge(e,t){return"as"==t?(T.marked="keyword",N(B("variable"))):"variable"==e?L(V,Ge):void 0}function Xe(e){return"string"==e?N():"("==e?L(K):"."==e?L(Y):L(Ye,Ze,Je)}function Ye(e,t){return"{"==e?de(Ye,"}"):("variable"==e&&O(t),"*"==t&&(T.marked="keyword"),N(Qe))}function Ze(e){if(","==e)return N(Ye,Ze)}function Qe(e,t){if("as"==t)return T.marked="keyword",N(Ye)}function Je(e,t){if("from"==t)return T.marked="keyword",N(K)}function et(e){return"]"==e?N():L(ue(V,"]"))}function tt(){return L(H("form"),Ne,B("{"),H("}"),ue(rt,"}"),R,R)}function rt(){return L(Ne,ze)}function nt(e,t){return"operator"==e.lastType||","==e.lastType||p.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}function it(e,t,r){return t.tokenize==v&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}return W.lex=q.lex=!0,F.lex=!0,R.lex=!0,{startState:function(e){var t={tokenize:v,lastType:"sof",cc:[],lexical:new C((e||0)-o,0,"block",!1),localVars:r.localVars,context:r.localVars&&new E(null,null,!1),indented:e||0};return r.globalVars&&"object"==typeof r.globalVars&&(t.globalVars=r.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),k(e,t)),t.tokenize!=b&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==n?r:(t.lastType="operator"!=n||"++"!=i&&"--"!=i?n:"incdec",M(t,r,n,i,e))},indent:function(t,n){if(t.tokenize==b||t.tokenize==w)return e.Pass;if(t.tokenize!=v)return 0;var i,l=n&&n.charAt(0),s=t.lexical;if(!/^\s*else\b/.test(n))for(var c=t.cc.length-1;c>=0;--c){var u=t.cc[c];if(u==R)s=s.prev;else if(u!=Ee&&u!=F)break}for(;("stat"==s.type||"form"==s.type)&&("}"==l||(i=t.cc[t.cc.length-1])&&(i==Y||i==Z)&&!/^[,\.=+\-*:?[\(]/.test(n));)s=s.prev;a&&")"==s.type&&"stat"==s.prev.type&&(s=s.prev);var d=s.type,f=l==d;return"vardef"==d?s.indented+("operator"==t.lastType||","==t.lastType?s.info.length+1:0):"form"==d&&"{"==l?s.indented:"form"==d?s.indented+o:"stat"==d?s.indented+(nt(t,n)?a||o:0):"switch"!=s.info||f||0==r.doubleIndentSwitch?s.align?s.column+(f?0:1):s.indented+(f?0:o):s.indented+(/^(?:case|default)\b/.test(n)?o:2*o)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:s?null:"/*",blockCommentEnd:s?null:"*/",blockCommentContinue:s?null:" * ",lineComment:s?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:s?"json":"javascript",jsonldMode:l,jsonMode:s,expressionAllowed:it,skipExpression:function(t){M(t,"atom","atom","true",new e.StringStream("",2,null))}}})),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/manifest+json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})}(r(631))},959:(e,t,r)=>{!function(e){"use strict";function t(e){for(var t={},r=e.split(" "),n=0;n\w/,!1)&&(t.tokenize=r([[["->",null]],[[/[\w]+/,"variable"]]],n,i)),"variable-2";for(var o=!1;!e.eol()&&(o||!1===i||!e.match("{$",!1)&&!e.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/,!1));){if(!o&&e.match(n)){t.tokenize=null,t.tokStack.pop(),t.tokStack.pop();break}o="\\"==e.next()&&!o}return"string"}var o="abstract and array as break case catch class clone const continue declare default do else elseif enddeclare endfor endforeach endif endswitch endwhile enum extends final for foreach function global goto if implements interface instanceof namespace new or private protected public static switch throw trait try use var while xor die echo empty exit eval include include_once isset list require require_once return print unset __halt_compiler self static parent yield insteadof finally readonly match",a="true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__",l="func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage memory_get_peak_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count";e.registerHelper("hintWords","php",[o,a,l].join(" ").split(" ")),e.registerHelper("wordChars","php",/[\w$]/);var s={name:"clike",helperType:"php",keywords:t(o),blockKeywords:t("catch do else elseif for foreach if switch try while finally"),defKeywords:t("class enum function interface namespace trait"),atoms:t(a),builtin:t(l),multiLineStrings:!0,hooks:{$:function(e){return e.eatWhile(/[\w\$_]/),"variable-2"},"<":function(e,t){var r;if(r=e.match(/^<<\s*/)){var i=e.eat(/['"]/);e.eatWhile(/[\w\.]/);var o=e.current().slice(r[0].length+(i?2:1));if(i&&e.eat(i),o)return(t.tokStack||(t.tokStack=[])).push(o,0),t.tokenize=n(o,"'"!=i),"string"}return!1},"#":function(e){for(;!e.eol()&&!e.match("?>",!1);)e.next();return"comment"},"/":function(e){if(e.eat("/")){for(;!e.eol()&&!e.match("?>",!1);)e.next();return"comment"}return!1},'"':function(e,t){return(t.tokStack||(t.tokStack=[])).push('"',0),t.tokenize=n('"'),"string"},"{":function(e,t){return t.tokStack&&t.tokStack.length&&t.tokStack[t.tokStack.length-1]++,!1},"}":function(e,t){return t.tokStack&&t.tokStack.length>0&&!--t.tokStack[t.tokStack.length-1]&&(t.tokenize=n(t.tokStack[t.tokStack.length-2])),!1}}};e.defineMode("php",(function(t,r){var n=e.getMode(t,r&&r.htmlMode||"text/html"),i=e.getMode(t,s);function o(t,r){var o=r.curMode==i;if(t.sol()&&r.pending&&'"'!=r.pending&&"'"!=r.pending&&(r.pending=null),o)return o&&null==r.php.tokenize&&t.match("?>")?(r.curMode=n,r.curState=r.html,r.php.context.prev||(r.php=null),"meta"):i.token(t,r.curState);if(t.match(/^<\?\w*/))return r.curMode=i,r.php||(r.php=e.startState(i,n.indent(r.html,"",""))),r.curState=r.php,"meta";if('"'==r.pending||"'"==r.pending){for(;!t.eol()&&t.next()!=r.pending;);var a="string"}else r.pending&&t.pos/.test(s)?r.pending=l[0]:r.pending={end:t.pos,style:a},t.backUp(s.length-c)),a}return{startState:function(){var t=e.startState(n),o=r.startOpen?e.startState(i):null;return{html:t,php:o,curMode:r.startOpen?i:n,curState:r.startOpen?o:t,pending:null}},copyState:function(t){var r,o=t.html,a=e.copyState(n,o),l=t.php,s=l&&e.copyState(i,l);return r=t.curMode==n?a:s,{html:a,php:s,curMode:t.curMode,curState:r,pending:t.pending}},token:o,indent:function(e,t,r){return e.curMode!=i&&/^\s*<\//.test(t)||e.curMode==i&&/^\?>/.test(t)?n.indent(e.html,t,r):e.curMode.indent(e.curState,t,r)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",innerMode:function(e){return{state:e.curState,mode:e.curMode}}}}),"htmlmixed","clike"),e.defineMIME("application/x-httpd-php","php"),e.defineMIME("application/x-httpd-php-open",{name:"php",startOpen:!0}),e.defineMIME("text/x-php",s)}(r(631),r(531),r(762))},702:(e,t,r)=>{!function(e){"use strict";e.defineMode("twig:inner",(function(){var e=["and","as","autoescape","endautoescape","block","do","endblock","else","elseif","extends","for","endfor","embed","endembed","filter","endfilter","flush","from","if","endif","in","is","include","import","not","or","set","spaceless","endspaceless","with","endwith","trans","endtrans","blocktrans","endblocktrans","macro","endmacro","use","verbatim","endverbatim"],t=/^[+\-*&%=<>!?|~^]/,r=/^[:\[\(\{]/,n=["true","false","null","empty","defined","divisibleby","divisible by","even","odd","iterable","sameas","same as"],i=/^(\d[+\-\*\/])?\d+(\.\d+)?/;function o(o,a){var l=o.peek();if(a.incomment)return o.skipTo("#}")?(o.eatWhile(/\#|}/),a.incomment=!1):o.skipToEnd(),"comment";if(a.intag){if(a.operator){if(a.operator=!1,o.match(n))return"atom";if(o.match(i))return"number"}if(a.sign){if(a.sign=!1,o.match(n))return"atom";if(o.match(i))return"number"}if(a.instring)return l==a.instring&&(a.instring=!1),o.next(),"string";if("'"==l||'"'==l)return a.instring=l,o.next(),"string";if(o.match(a.intag+"}")||o.eat("-")&&o.match(a.intag+"}"))return a.intag=!1,"tag";if(o.match(t))return a.operator=!0,"operator";if(o.match(r))a.sign=!0;else if(o.eat(" ")||o.sol()){if(o.match(e))return"keyword";if(o.match(n))return"atom";if(o.match(i))return"number";o.sol()&&o.next()}else o.next();return"variable"}if(o.eat("{")){if(o.eat("#"))return a.incomment=!0,o.skipTo("#}")?(o.eatWhile(/\#|}/),a.incomment=!1):o.skipToEnd(),"comment";if(l=o.eat(/\{|%/))return a.intag=l,"{"==l&&(a.intag="}"),o.eat("-"),"tag"}o.next()}return e=new RegExp("(("+e.join(")|(")+"))\\b"),n=new RegExp("(("+n.join(")|(")+"))\\b"),{startState:function(){return{}},token:function(e,t){return o(e,t)}}})),e.defineMode("twig",(function(t,r){var n=e.getMode(t,"twig:inner");return r&&r.base?e.multiplexingMode(e.getMode(t,r.base),{open:/\{[{#%]/,close:/[}#%]\}/,mode:n,parseDelimiters:!0}):n})),e.defineMIME("text/x-twig","twig")}(r(631),r(93))},589:(e,t,r)=>{!function(e){"use strict";var t={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},r={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};e.defineMode("xml",(function(n,i){var o,a,l=n.indentUnit,s={},c=i.htmlMode?t:r;for(var u in c)s[u]=c[u];for(var u in i)s[u]=i[u];function d(e,t){function r(r){return t.tokenize=r,r(e,t)}var n=e.next();return"<"==n?e.eat("!")?e.eat("[")?e.match("CDATA[")?r(h("atom","]]>")):null:e.match("--")?r(h("comment","--\x3e")):e.match("DOCTYPE",!0,!0)?(e.eatWhile(/[\w\._\-]/),r(m(1))):null:e.eat("?")?(e.eatWhile(/[\w\._\-]/),t.tokenize=h("meta","?>"),"meta"):(o=e.eat("/")?"closeTag":"openTag",t.tokenize=f,"tag bracket"):"&"==n?(e.eat("#")?e.eat("x")?e.eatWhile(/[a-fA-F\d]/)&&e.eat(";"):e.eatWhile(/[\d]/)&&e.eat(";"):e.eatWhile(/[\w\.\-:]/)&&e.eat(";"))?"atom":"error":(e.eatWhile(/[^&<]/),null)}function f(e,t){var r=e.next();if(">"==r||"/"==r&&e.eat(">"))return t.tokenize=d,o=">"==r?"endTag":"selfcloseTag","tag bracket";if("="==r)return o="equals",null;if("<"==r){t.tokenize=d,t.state=w,t.tagName=t.tagStart=null;var n=t.tokenize(e,t);return n?n+" tag error":"tag error"}return/[\'\"]/.test(r)?(t.tokenize=p(r),t.stringStartCol=e.column(),t.tokenize(e,t)):(e.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function p(e){var t=function(t,r){for(;!t.eol();)if(t.next()==e){r.tokenize=f;break}return"string"};return t.isInAttribute=!0,t}function h(e,t){return function(r,n){for(;!r.eol();){if(r.match(t)){n.tokenize=d;break}r.next()}return e}}function m(e){return function(t,r){for(var n;null!=(n=t.next());){if("<"==n)return r.tokenize=m(e+1),r.tokenize(t,r);if(">"==n){if(1==e){r.tokenize=d;break}return r.tokenize=m(e-1),r.tokenize(t,r)}}return"meta"}}function g(e){return e&&e.toLowerCase()}function v(e,t,r){this.prev=e.context,this.tagName=t||"",this.indent=e.indented,this.startOfLine=r,(s.doNotIndent.hasOwnProperty(t)||e.context&&e.context.noIndent)&&(this.noIndent=!0)}function y(e){e.context&&(e.context=e.context.prev)}function b(e,t){for(var r;;){if(!e.context)return;if(r=e.context.tagName,!s.contextGrabbers.hasOwnProperty(g(r))||!s.contextGrabbers[g(r)].hasOwnProperty(g(t)))return;y(e)}}function w(e,t,r){return"openTag"==e?(r.tagStart=t.column(),x):"closeTag"==e?k:w}function x(e,t,r){return"word"==e?(r.tagName=t.current(),a="tag",S):s.allowMissingTagName&&"endTag"==e?(a="tag bracket",S(e,t,r)):(a="error",x)}function k(e,t,r){if("word"==e){var n=t.current();return r.context&&r.context.tagName!=n&&s.implicitlyClosed.hasOwnProperty(g(r.context.tagName))&&y(r),r.context&&r.context.tagName==n||!1===s.matchClosing?(a="tag",_):(a="tag error",C)}return s.allowMissingTagName&&"endTag"==e?(a="tag bracket",_(e,t,r)):(a="error",C)}function _(e,t,r){return"endTag"!=e?(a="error",_):(y(r),w)}function C(e,t,r){return a="error",_(e,t,r)}function S(e,t,r){if("word"==e)return a="attribute",M;if("endTag"==e||"selfcloseTag"==e){var n=r.tagName,i=r.tagStart;return r.tagName=r.tagStart=null,"selfcloseTag"==e||s.autoSelfClosers.hasOwnProperty(g(n))?b(r,n):(b(r,n),r.context=new v(r,n,i==r.indented)),w}return a="error",S}function M(e,t,r){return"equals"==e?T:(s.allowMissing||(a="error"),S(e,t,r))}function T(e,t,r){return"string"==e?L:"word"==e&&s.allowUnquoted?(a="string",S):(a="error",S(e,t,r))}function L(e,t,r){return"string"==e?L:S(e,t,r)}return d.isInText=!0,{startState:function(e){var t={tokenize:d,state:w,indented:e||0,tagName:null,tagStart:null,context:null};return null!=e&&(t.baseIndent=e),t},token:function(e,t){if(!t.tagName&&e.sol()&&(t.indented=e.indentation()),e.eatSpace())return null;o=null;var r=t.tokenize(e,t);return(r||o)&&"comment"!=r&&(a=null,t.state=t.state(o||r,e,t),a&&(r="error"==a?r+" error":a)),r},indent:function(t,r,n){var i=t.context;if(t.tokenize.isInAttribute)return t.tagStart==t.indented?t.stringStartCol+1:t.indented+l;if(i&&i.noIndent)return e.Pass;if(t.tokenize!=f&&t.tokenize!=d)return n?n.match(/^(\s*)/)[0].length:0;if(t.tagName)return!1!==s.multilineTagIndentPastTag?t.tagStart+t.tagName.length+2:t.tagStart+l*(s.multilineTagIndentFactor||1);if(s.alignCDATA&&/$/,blockCommentStart:"\x3c!--",blockCommentEnd:"--\x3e",configuration:s.htmlMode?"html":"xml",helperType:s.htmlMode?"html":"xml",skipAttribute:function(e){e.state==T&&(e.state=S)},xmlCurrentTag:function(e){return e.tagName?{name:e.tagName,close:"closeTag"==e.type}:null},xmlCurrentContext:function(e){for(var t=[],r=e.context;r;r=r.prev)t.push(r.tagName);return t.reverse()}}})),e.defineMIME("text/xml","xml"),e.defineMIME("application/xml","xml"),e.mimeModes.hasOwnProperty("text/html")||e.defineMIME("text/html",{name:"xml",htmlMode:!0})}(r(631))},789:(e,t,r)=>{"use strict";r.d(t,{Z:()=>o});var n=r(645),i=r.n(n)()((function(e){return e[1]}));i.push([e.id,'.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:-50px}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:none;overflow:scroll!important;padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:none;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:none!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}',""]);const o=i},845:(e,t,r)=>{"use strict";r.d(t,{Z:()=>o});var n=r(645),i=r.n(n)()((function(e){return e[1]}));i.push([e.id,".cm-s-twilight.CodeMirror{background:#141414;color:#f7f7f7}.cm-s-twilight div.CodeMirror-selected{background:#323232}.cm-s-twilight .CodeMirror-line::selection,.cm-s-twilight .CodeMirror-line>span::selection,.cm-s-twilight .CodeMirror-line>span>span::selection{background:rgba(50,50,50,.99)}.cm-s-twilight .CodeMirror-line::-moz-selection,.cm-s-twilight .CodeMirror-line>span::-moz-selection,.cm-s-twilight .CodeMirror-line>span>span::-moz-selection{background:rgba(50,50,50,.99)}.cm-s-twilight .CodeMirror-gutters{background:#222;border-right:1px solid #aaa}.cm-s-twilight .CodeMirror-guttermarker{color:#fff}.cm-s-twilight .CodeMirror-guttermarker-subtle,.cm-s-twilight .CodeMirror-linenumber{color:#aaa}.cm-s-twilight .CodeMirror-cursor{border-left:1px solid #fff}.cm-s-twilight .cm-keyword{color:#f9ee98}.cm-s-twilight .cm-atom{color:#fc0}.cm-s-twilight .cm-number{color:#ca7841}.cm-s-twilight .cm-def{color:#8da6ce}.cm-s-twilight span.cm-def,.cm-s-twilight span.cm-tag,.cm-s-twilight span.cm-type,.cm-s-twilight span.cm-variable-2,.cm-s-twilight span.cm-variable-3{color:#607392}.cm-s-twilight .cm-operator{color:#cda869}.cm-s-twilight .cm-comment{color:#777;font-style:italic;font-weight:400}.cm-s-twilight .cm-string{color:#8f9d6a;font-style:italic}.cm-s-twilight .cm-string-2{color:#bd6b18}.cm-s-twilight .cm-meta{background-color:#141414;color:#f7f7f7}.cm-s-twilight .cm-builtin{color:#cda869}.cm-s-twilight .cm-tag{color:#997643}.cm-s-twilight .cm-attribute{color:#d6bb6d}.cm-s-twilight .cm-header{color:#ff6400}.cm-s-twilight .cm-hr{color:#aeaeae}.cm-s-twilight .cm-link{color:#ad9361;font-style:italic;text-decoration:none}.cm-s-twilight .cm-error{border-bottom:1px solid red}.cm-s-twilight .CodeMirror-activeline-background{background:#27282e}.cm-s-twilight .CodeMirror-matchingbracket{color:#fff!important;outline:1px solid grey}",""]);const o=i},645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r=e(t);return t[2]?"@media ".concat(t[2]," {").concat(r,"}"):r})).join("")},t.i=function(e,r,n){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(n)for(var o=0;o{},937:()=>{},379:(e,t,r)=>{"use strict";var n,i=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},o=function(){var e={};return function(t){if(void 0===e[t]){var r=document.querySelector(t);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}e[t]=r}return e[t]}}(),a=[];function l(e){for(var t=-1,r=0;r{if(!r){var a=1/0;for(u=0;u=o)&&Object.keys(n.O).every((e=>n.O[e](r[s])))?r.splice(s--,1):(l=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,i,o]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={138:0,118:0,766:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var i,o,[a,l,s]=r,c=0;if(a.some((t=>0!==e[t]))){for(i in l)n.o(l,i)&&(n.m[i]=l[i]);if(s)var u=s(n)}for(t&&t(r);cn(830))),n.O(void 0,[118,766],(()=>n(158)));var i=n.O(void 0,[118,766],(()=>n(937)));i=n.O(i)})(); \ No newline at end of file diff --git a/themes/demo/assets/vendor/jquery.min.js b/themes/demo/assets/vendor/jquery.min.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/themes/demo/assets/vendor/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 { + this.initPlugin(); + }); + } + + initPlugin() { + this.pswp = this.lightbox.pswp; + this.isCaptionHidden = false; + this.tempCaption = false; + this.captionElement = false; + + this.pswp.on('uiRegister', () => { + this.pswp.ui.registerElement({ + name: 'dynamic-caption', + order: 9, + isButton: false, + appendTo: 'root', + html: '', + onInit: (el) => { + this.captionElement = el; + this.initCaption(); + } + }); + }); + } + + initCaption() { + const { pswp } = this; + + pswp.on('change', () => { + this.updateCaptionHTML(); + this.updateCurrentCaptionPosition(); + + // make sure caption is displayed after slides are switched + this.showCaption(); + }); + + pswp.on('calcSlideSize', (e) => this.onCalcSlideSize(e)); + + // hide caption if mainscroll is shifted (dragging) + pswp.on('moveMainScroll', () => { + if (!this.useMobileLayout()) { + if (this.pswp.mainScroll.isShifted()) { + this.hideCaption(); + } else { + this.showCaption(); + } + } + }); + + // hide caption if zoomed + pswp.on('zoomPanUpdate', () => { + if (pswp.currSlide.currZoomLevel > pswp.currSlide.zoomLevels.initial) { + this.hideCaption(); + } else { + this.showCaption(); + } + }); + + pswp.on('beforeZoomTo', (e) => { + const { currSlide } = pswp; + + if (currSlide.__dcAdjustedPanAreaSize) { + if (e.destZoomLevel > currSlide.zoomLevels.initial) { + currSlide.panAreaSize.x = currSlide.__dcOriginalPanAreaSize.x; + currSlide.panAreaSize.y = currSlide.__dcOriginalPanAreaSize.y; + } else { + // Restore panAreaSize after we zoom back to initial position + currSlide.panAreaSize.x = currSlide.__dcAdjustedPanAreaSize.x; + currSlide.panAreaSize.y = currSlide.__dcAdjustedPanAreaSize.y; + } + } + }); + } + + useMobileLayout() { + const { mobileLayoutBreakpoint } = this.options; + + if (typeof mobileLayoutBreakpoint === 'function') { + return mobileLayoutBreakpoint.call(this); + } else if (typeof mobileLayoutBreakpoint === 'number') { + if (window.innerWidth < mobileLayoutBreakpoint) { + return true; + } + } + + return false; + } + + hideCaption() { + if (!this.isCaptionHidden) { + this.isCaptionHidden = true; + this.captionElement.classList.add('pswp__dynamic-caption--faded'); + + // Disable caption visibility with the delay, so it's not interactable + if (this.captionFadeTimeout) { + clearTimeout(this.captionFadeTimeout); + } + this.captionFadeTimeout = setTimeout(() => { + this.captionElement.style.visibility = 'hidden'; + this.captionFadeTimeout = null; + }, 400); + } + } + + showCaption() { + if (this.isCaptionHidden) { + this.isCaptionHidden = false; + this.captionElement.style.visibility = 'visible'; + + clearTimeout(this.captionFadeTimeout); + this.captionFadeTimeout = setTimeout(() => { + this.captionElement.classList.remove('pswp__dynamic-caption--faded'); + this.captionFadeTimeout = null; + }, 50); + } + } + + setCaptionPosition(x, y) { + const isOnHorizontalEdge = (x <= this.options.horizontalEdgeThreshold); + this.captionElement.classList[ + isOnHorizontalEdge ? 'add' : 'remove' + ]('pswp__dynamic-caption--on-hor-edge'); + + this.captionElement.style.left = x + 'px'; + this.captionElement.style.top = y + 'px'; + } + + setCaptionWidth(captionEl, width) { + if (!width) { + captionEl.style.removeProperty('width'); + } else { + captionEl.style.width = width + 'px'; + } + } + + setCaptionType(captionEl, type) { + const prevType = captionEl.dataset.pswpCaptionType; + if (type !== prevType) { + captionEl.classList.add('pswp__dynamic-caption--' + type); + captionEl.classList.remove('pswp__dynamic-caption--' + prevType); + captionEl.dataset.pswpCaptionType = type; + } + } + + updateCurrentCaptionPosition() { + const slide = this.pswp.currSlide; + + if (!slide.dynamicCaptionType) { + return; + } + + if (slide.dynamicCaptionType === 'mobile') { + this.setCaptionType(this.captionElement, slide.dynamicCaptionType); + + this.captionElement.style.removeProperty('left'); + this.captionElement.style.removeProperty('top'); + this.setCaptionWidth(this.captionElement, false); + return; + } + + const zoomLevel = slide.zoomLevels.initial; + const imageWidth = Math.ceil(slide.width * zoomLevel); + const imageHeight = Math.ceil(slide.height * zoomLevel); + + + this.setCaptionType(this.captionElement, slide.dynamicCaptionType); + if (slide.dynamicCaptionType === 'aside') { + this.setCaptionPosition( + this.pswp.currSlide.bounds.center.x + imageWidth, + this.pswp.currSlide.bounds.center.y + ); + this.setCaptionWidth(this.captionElement, false); + } else if (slide.dynamicCaptionType === 'below') { + this.setCaptionPosition( + this.pswp.currSlide.bounds.center.x, + this.pswp.currSlide.bounds.center.y + imageHeight + ); + this.setCaptionWidth(this.captionElement, imageWidth); + } + } + + /** + * Temporary caption is used to measure size for the current/next/previous captions, + * (it has visibility:hidden) + */ + createTemporaryCaption() { + this.tempCaption = document.createElement('div'); + this.tempCaption.className = 'pswp__dynamic-caption pswp__dynamic-caption--temp'; + this.tempCaption.style.visibility = 'hidden'; + this.tempCaption.setAttribute('aria-hidden', 'true'); + // move caption element, so it's after BG, + // so that other controls can freely overlap it + this.pswp.bg.after(this.captionElement); + this.captionElement.after(this.tempCaption); + } + + onCalcSlideSize(e) { + const { slide } = e; + + const captionHTML = this.getCaptionHTML(e.slide); + let useMobileVersion = false; + let captionSize; + + if (!captionHTML) { + slide.dynamicCaptionType = false; + return; + } + + this.storeOriginalPanAreaSize(slide); + + slide.bounds.update(slide.zoomLevels.initial); + + if (this.useMobileLayout()) { + slide.dynamicCaptionType = 'mobile'; + useMobileVersion = true; + } else { + if (this.options.type === 'auto') { + if (slide.bounds.center.x > slide.bounds.center.y) { + slide.dynamicCaptionType = 'aside'; + } else { + slide.dynamicCaptionType = 'below'; + } + } else { + slide.dynamicCaptionType = this.options.type; + } + } + + const imageWidth = Math.ceil(slide.width * slide.zoomLevels.initial); + const imageHeight = Math.ceil(slide.height * slide.zoomLevels.initial); + + if (!this.tempCaption) { + this.createTemporaryCaption(); + } + + this.setCaptionType(this.tempCaption, slide.dynamicCaptionType); + + if (slide.dynamicCaptionType === 'aside') { + this.tempCaption.innerHTML = this.getCaptionHTML(e.slide); + this.setCaptionWidth(this.tempCaption, false); + captionSize = this.measureCaptionSize(this.tempCaption, e.slide); + const captionWidth = captionSize.x; + + const horizontalEnding = imageWidth + slide.bounds.center.x; + const horizontalLeftover = (slide.panAreaSize.x - horizontalEnding); + + if (horizontalLeftover <= captionWidth) { + slide.panAreaSize.x -= captionWidth; + this.recalculateZoomLevelAndBounds(slide); + } else { + // do nothing, caption will fit aside without any adjustments + } + } else if (slide.dynamicCaptionType === 'below' || useMobileVersion) { + this.setCaptionWidth( + this.tempCaption, + useMobileVersion ? this.pswp.viewportSize.x : imageWidth + ); + this.tempCaption.innerHTML = this.getCaptionHTML(e.slide); + captionSize = this.measureCaptionSize(this.tempCaption, e.slide); + const captionHeight = captionSize.y; + + + // vertical ending of the image + const verticalEnding = imageHeight + slide.bounds.center.y; + + // height between bottom of the screen and ending of the image + // (before any adjustments applied) + const verticalLeftover = slide.panAreaSize.y - verticalEnding; + const initialPanAreaHeight = slide.panAreaSize.y; + + if (verticalLeftover <= captionHeight) { + // lift up the image to give more space for caption + slide.panAreaSize.y -= Math.min((captionHeight - verticalLeftover) * 2, captionHeight); + + // we reduce viewport size, thus we need to update zoom level and pan bounds + this.recalculateZoomLevelAndBounds(slide); + + const maxPositionX = slide.panAreaSize.x * this.options.mobileCaptionOverlapRatio / 2; + + // Do not reduce viewport height if too few space available + if (useMobileVersion + && slide.bounds.center.x > maxPositionX) { + // Restore the default position + slide.panAreaSize.y = initialPanAreaHeight; + this.recalculateZoomLevelAndBounds(slide); + } + } + + + + // if (this.useMobileLayout && slide.bounds.center.x > 100) { + // // do nothing, caption will overlap the bottom part of the image + // } else if (verticalLeftover <= captionHeight) { + + // } else { + // // do nothing, caption will fit below the image without any adjustments + // } + } else { + // mobile + } + + this.storeAdjustedPanAreaSize(slide); + + if (slide === this.pswp.currSlide) { + this.updateCurrentCaptionPosition(); + } + } + + measureCaptionSize(captionEl, slide) { + const rect = captionEl.getBoundingClientRect(); + const event = this.pswp.dispatch('dynamicCaptionMeasureSize', { + captionEl, + slide, + captionSize: { + x: rect.width, + y: rect.height + } + }); + return event.captionSize; + } + + recalculateZoomLevelAndBounds(slide) { + slide.zoomLevels.update(slide.width, slide.height, slide.panAreaSize); + slide.bounds.update(slide.zoomLevels.initial); + } + + storeAdjustedPanAreaSize(slide) { + if (!slide.__dcAdjustedPanAreaSize) { + slide.__dcAdjustedPanAreaSize = {}; + } + slide.__dcAdjustedPanAreaSize.x = slide.panAreaSize.x; + slide.__dcAdjustedPanAreaSize.y = slide.panAreaSize.y; + } + + storeOriginalPanAreaSize(slide) { + if (!slide.__dcOriginalPanAreaSize) { + slide.__dcOriginalPanAreaSize = {}; + } + slide.__dcOriginalPanAreaSize.x = slide.panAreaSize.x; + slide.__dcOriginalPanAreaSize.y = slide.panAreaSize.y; + } + + getCaptionHTML(slide) { + if (typeof this.options.captionContent === 'function') { + return this.options.captionContent.call(this, slide); + } + + const currSlideElement = slide.data.element; + let captionHTML = ''; + if (currSlideElement) { + const hiddenCaption = currSlideElement.querySelector(this.options.captionContent); + if (hiddenCaption) { + // get caption from element with class pswp-caption-content + captionHTML = hiddenCaption.innerHTML; + } else { + const img = currSlideElement.querySelector('img'); + if (img) { + // get caption from alt attribute + captionHTML = img.getAttribute('alt'); + } + } + } + return captionHTML; + } + + updateCaptionHTML() { + const captionHTML = this.getCaptionHTML(pswp.currSlide); + this.captionElement.style.visibility = captionHTML ? 'visible' : 'hidden'; + this.captionElement.innerHTML = captionHTML || ''; + this.pswp.dispatch('dynamicCaptionUpdateHTML', { + captionElement: this.captionElement + }); + } +} + +export default PhotoSwipeDynamicCaption; diff --git a/themes/demo/assets/vendor/photoswipe/LICENSE.txt b/themes/demo/assets/vendor/photoswipe/LICENSE.txt new file mode 100644 index 0000000..5e0ff4d --- /dev/null +++ b/themes/demo/assets/vendor/photoswipe/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2022 Dmitry Semenov, https://dimsemenov.com + +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. \ No newline at end of file diff --git a/themes/demo/assets/vendor/photoswipe/photoswipe-lightbox.esm.min.js b/themes/demo/assets/vendor/photoswipe/photoswipe-lightbox.esm.min.js new file mode 100644 index 0000000..ee409f4 --- /dev/null +++ b/themes/demo/assets/vendor/photoswipe/photoswipe-lightbox.esm.min.js @@ -0,0 +1,5 @@ +/*! + * PhotoSwipe Lightbox 5.2.7 - https://photoswipe.com + * (c) 2022 Dmytro Semenov + */ +function t(t,i,s){const h=document.createElement(i||"div");return t&&(h.className=t),s&&s.appendChild(h),h}function i(t,i,s){t.style.width="number"==typeof i?i+"px":i,t.style.height="number"==typeof s?s+"px":s}const s="idle",h="loading",e="loaded",n="error";function o(t,i,s=document){let h=[];if(t instanceof Element)h=[t];else if(t instanceof NodeList||Array.isArray(t))h=Array.from(t);else{const e="string"==typeof t?t:i;e&&(h=Array.from(s.querySelectorAll(e)))}return h}class r{constructor(t,i){this.type=t,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class a{constructor(i,s){this.element=t("pswp__img pswp__img--placeholder",i?"img":"",s),i&&(this.element.decoding="async",this.element.alt="",this.element.src=i,this.element.setAttribute("role","presentation")),this.element.setAttribute("aria-hiden","true")}setDisplayedSize(t,s){this.element&&("IMG"===this.element.tagName?(i(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=function(t,i,s){let h="translate3d("+t+"px,"+(i||0)+"px,0)";return void 0!==s&&(h+=" scale3d("+s+","+s+",1)"),h}(0,0,t/250)):i(this.element,t,s))}destroy(){this.element.parentNode&&this.element.remove(),this.element=null}}class c{constructor(t,i,h){this.instance=i,this.data=t,this.index=h,this.element=void 0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.state=s,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout((()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=null)}),500)}load(i,s){if(!this.placeholder&&this.slide&&this.usePlaceholder()){const t=this.instance.applyFilters("placeholderSrc",!(!this.data.msrc||!this.slide.isFirstSlide)&&this.data.msrc,this);this.placeholder=new a(t,this.slide.container)}this.element&&!s||this.instance.dispatch("contentLoad",{content:this,isLazy:i}).defaultPrevented||(this.isImageContent()?this.loadImage(i):(this.element=t("pswp__content"),this.element.innerHTML=this.data.html||""),s&&this.slide&&this.slide.updateContentSize(!0))}loadImage(i){const s=t("pswp__img","img");this.element=s,this.instance.dispatch("contentLoadImage",{content:this,isLazy:i}).defaultPrevented||(this.data.srcset&&(s.srcset=this.data.srcset),s.src=this.data.src,s.alt=this.data.alt||"",this.state=h,s.complete?this.onLoaded():(s.onload=()=>{this.onLoaded()},s.onerror=()=>{this.onError()}))}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=e,this.slide&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.slide.container.innerHTML="",this.append(),this.slide.updateContentSize(!0)))}onError(){this.state=n,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===h,this)}isError(){return this.state===n}isImageContent(){return"image"===this.type}setDisplayedSize(t,s){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,s),!this.instance.dispatch("contentResize",{content:this,width:t,height:s}).defaultPrevented&&(i(this.element,t,s),this.isImageContent()&&!this.isError()))){const i=this.element;i.srcset&&(!i.dataset.largestUsedSize||t>parseInt(i.dataset.largestUsedSize,10))&&(i.sizes=t+"px",i.dataset.largestUsedSize=String(t)),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:s,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==n,this)}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=null,this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented||(this.remove(),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=null))}displayError(){if(this.slide){let i=t("pswp__error-msg");i.innerText=this.instance.options.errorMsg,i=this.instance.applyFilters("contentErrorElement",i,this),this.element=t("pswp__content pswp__error-msg-container"),this.element.appendChild(i),this.slide.container.innerHTML="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){this.isAttached=!0,this.state!==n?this.instance.dispatch("contentAppend",{content:this}).defaultPrevented||(this.isImageContent()?this.slide&&!this.slide.isActive&&"decode"in this.element?(this.isDecoding=!0,requestAnimationFrame((()=>{this.element&&"IMG"===this.element.tagName&&this.element.decode().then((()=>{this.isDecoding=!1,requestAnimationFrame((()=>{this.appendImage()}))})).catch((()=>{this.isDecoding=!1}))}))):(!this.placeholder||this.state!==e&&this.state!==n||this.removePlaceholder(),this.appendImage()):this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element)):this.displayError()}activate(){this.instance.dispatch("contentActivate",{content:this}).defaultPrevented||this.slide&&(this.isImageContent()&&this.isDecoding?this.appendImage():this.isError()&&this.load(!1,!0))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this})}remove(){this.isAttached=!1,this.instance.dispatch("contentRemove",{content:this}).defaultPrevented||this.element&&this.element.parentNode&&this.element.remove()}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||this.slide&&this.element&&!this.element.parentNode&&(this.slide.container.appendChild(this.element),!this.placeholder||this.state!==e&&this.state!==n||this.removePlaceholder()))}}function l(t,i,s,h,e){let n;if(i.paddingFn)n=i.paddingFn(s,h,e)[t];else if(i.padding)n=i.padding[t];else{const s="padding"+t[0].toUpperCase()+t.slice(1);i[s]&&(n=i[s])}return n||0}class u{constructor(t,i,s,h){this.pswp=h,this.options=t,this.itemData=i,this.index=s}update(t,i,s){this.elementSize={x:t,y:i},this.panAreaSize=s;const h=this.panAreaSize.x/this.elementSize.x,e=this.panAreaSize.y/this.elementSize.y;this.fit=Math.min(1,he?h:e),this.vFill=Math.min(1,e),this.initial=this.t(),this.secondary=this.i(),this.max=Math.max(this.initial,this.secondary,this.o()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}l(t){const i=t+"ZoomLevel",s=this.options[i];if(s)return"function"==typeof s?s(this):"fill"===s?this.fill:"fit"===s?this.fit:Number(s)}i(){let t=this.l("secondary");return t||(t=Math.min(1,3*this.fit),t*this.elementSize.x>4e3&&(t=4e3/this.elementSize.x),t)}t(){return this.l("initial")||this.fit}o(){const t=this.l("max");return t||Math.max(1,4*this.fit)}}function d(t,i,s){const h=i.createContentFromData(t,s);if(!h||!h.lazyLoad)return;const{options:e}=i,n=i.viewportSize||function(t,i){if(t.getViewportSizeFn){const s=t.getViewportSizeFn(t,i);if(s)return s}return{x:document.documentElement.clientWidth,y:window.innerHeight}}(e,i),o=function(t,i,s,h){return{x:i.x-l("left",t,i,s,h)-l("right",t,i,s,h),y:i.y-l("top",t,i,s,h)-l("bottom",t,i,s,h)}}(e,n,t,s),r=new u(e,t,-1);return r.update(h.width,h.height,o),h.lazyLoad(),h.setDisplayedSize(Math.ceil(h.width*r.initial),Math.ceil(h.height*r.initial)),h}class m extends class extends class{constructor(){this.u={},this.m={},this.pswp=void 0,this.options=void 0}addFilter(t,i,s=100){this.m[t]||(this.m[t]=[]),this.m[t].push({fn:i,priority:s}),this.m[t].sort(((t,i)=>t.priority-i.priority)),this.pswp&&this.pswp.addFilter(t,i,s)}removeFilter(t,i){this.m[t]&&(this.m[t]=this.m[t].filter((t=>t.fn!==i))),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){return this.m[t]&&this.m[t].forEach((t=>{i[0]=t.fn.apply(this,i)})),i[0]}on(t,i){this.u[t]||(this.u[t]=[]),this.u[t].push(i),this.pswp&&this.pswp.on(t,i)}off(t,i){this.u[t]&&(this.u[t]=this.u[t].filter((t=>i!==t))),this.pswp&&this.pswp.off(t,i)}dispatch(t,i){if(this.pswp)return this.pswp.dispatch(t,i);const s=new r(t,i);return this.u?(this.u[t]&&this.u[t].forEach((t=>{t.call(this,s)})),s):s}}{getNumItems(){let t;const{dataSource:i}=this.options;i?"length"in i?t=i.length:"gallery"in i&&(i.items||(i.items=this.p(i.gallery)),i.items&&(t=i.items.length)):t=0;const s=this.dispatch("numItems",{dataSource:i,numItems:t});return this.applyFilters("numItems",s.numItems,i)}createContentFromData(t,i){return new c(t,this,i)}getItemData(t){const{dataSource:i}=this.options;let s;Array.isArray(i)?s=i[t]:i&&i.gallery&&(i.items||(i.items=this.p(i.gallery)),s=i.items[t]);let h=s;h instanceof Element&&(h=this.g(h));const e=this.dispatch("itemData",{itemData:h||{},index:t});return this.applyFilters("itemData",e.itemData,t)}p(t){return this.options.children||this.options.childSelector?o(this.options.children,this.options.childSelector,t)||[]:[t]}g(t){const i={element:t},s="A"===t.tagName?t:t.querySelector("a");if(s){i.src=s.dataset.pswpSrc||s.href,s.dataset.pswpSrcset&&(i.srcset=s.dataset.pswpSrcset),i.width=parseInt(s.dataset.pswpWidth,10),i.height=parseInt(s.dataset.pswpHeight,10),i.w=i.width,i.h=i.height,s.dataset.pswpType&&(i.type=s.dataset.pswpType);const h=t.querySelector("img");h&&(i.msrc=h.currentSrc||h.src,i.alt=h.getAttribute("alt")),(s.dataset.pswpCropped||s.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,s)}}{constructor(t){super(),this.options=t||{},this.I=0}init(){this.onThumbnailsClick=this.onThumbnailsClick.bind(this),o(this.options.gallery,this.options.gallerySelector).forEach((t=>{t.addEventListener("click",this.onThumbnailsClick,!1)}))}onThumbnailsClick(t){if(function(t){if(2===t.which||t.ctrlKey||t.metaKey||t.altKey||t.shiftKey)return!0}(t)||window.pswp||!1===window.navigator.onLine)return;let i={x:t.clientX,y:t.clientY};i.x||i.y||(i=null);let s=this.getClickedIndex(t);s=this.applyFilters("clickedIndex",s,t,this);const h={gallery:t.currentTarget};s>=0&&(t.preventDefault(),this.loadAndOpen(s,h,i))}getClickedIndex(t){if(this.options.getClickedIndexFn)return this.options.getClickedIndexFn.call(this,t);const i=t.target,s=o(this.options.children,this.options.childSelector,t.currentTarget).findIndex((t=>t===i||t.contains(i)));return-1!==s?s:this.options.children||this.options.childSelector?-1:0}loadAndOpen(t,i,s){return!window.pswp&&(this.options.index=t,this.options.initialPointerPos=s,this.shouldOpen=!0,this.preload(t,i),!0)}preload(t,i){const{options:s}=this;i&&(s.dataSource=i);const h=[],e=typeof s.pswpModule;if("function"==typeof(n=s.pswpModule)&&n.prototype&&n.prototype.goTo)h.push(Promise.resolve(s.pswpModule));else{if("string"===e)throw new Error("pswpModule as string is no longer supported");if("function"!==e)throw new Error("pswpModule is not valid");h.push(s.pswpModule())}var n;"function"==typeof s.openPromise&&h.push(s.openPromise()),!1!==s.preloadFirstSlide&&t>=0&&(this._=function(t,i){const s=i.getItemData(t);if(!i.dispatch("lazyLoadSlide",{index:t,itemData:s}).defaultPrevented)return d(s,i,t)}(t,this));const o=++this.I;Promise.all(h).then((t=>{if(this.shouldOpen){const i=t[0];this.v(i,o)}}))}v(t,i){if(i!==this.I&&this.shouldOpen)return;if(this.shouldOpen=!1,window.pswp)return;const s="object"==typeof t?new t.default(this.options):new t(this.options);this.pswp=s,window.pswp=s,Object.keys(this.u).forEach((t=>{this.u[t].forEach((i=>{s.on(t,i)}))})),Object.keys(this.m).forEach((t=>{this.m[t].forEach((i=>{s.addFilter(t,i.fn,i.priority)}))})),this._&&(s.contentLoader.addToCache(this._),this._=null),s.on("destroy",(()=>{this.pswp=null,window.pswp=null})),s.init()}destroy(){this.pswp&&this.pswp.destroy(),this.shouldOpen=!1,this.u=null,o(this.options.gallery,this.options.gallerySelector).forEach((t=>{t.removeEventListener("click",this.onThumbnailsClick,!1)}))}}export{m as default}; diff --git a/themes/demo/assets/vendor/photoswipe/photoswipe.css b/themes/demo/assets/vendor/photoswipe/photoswipe.css new file mode 100644 index 0000000..fbd0556 --- /dev/null +++ b/themes/demo/assets/vendor/photoswipe/photoswipe.css @@ -0,0 +1,419 @@ +/*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */ + +.pswp { + --pswp-bg: #000; + --pswp-placeholder-bg: #222; + + + --pswp-root-z-index: 100000; + + --pswp-preloader-color: rgba(79, 79, 79, 0.4); + --pswp-preloader-color-secondary: rgba(255, 255, 255, 0.9); + + /* defined via js: + --pswp-transition-duration: 333ms; */ + + --pswp-icon-color: #fff; + --pswp-icon-color-secondary: #4f4f4f; + --pswp-icon-stroke-color: #4f4f4f; + --pswp-icon-stroke-width: 2px; + + --pswp-error-text-color: var(--pswp-icon-color); +} + + +/* + Styles for basic PhotoSwipe (pswp) functionality (sliding area, open/close transitions) +*/ + +.pswp { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: var(--pswp-root-z-index); + display: none; + touch-action: none; + outline: 0; + opacity: 0.003; + contain: layout style size; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +/* Prevents focus outline on the root element, + (it may be focused initially) */ +.pswp:focus { + outline: 0; +} + +.pswp * { + box-sizing: border-box; +} + +.pswp img { + max-width: none; +} + +.pswp--open { + display: block; +} + +.pswp, +.pswp__bg { + transform: translateZ(0); + will-change: opacity; +} + +.pswp__bg { + opacity: 0.005; + background: var(--pswp-bg); +} + +.pswp, +.pswp__scroll-wrap { + overflow: hidden; +} + +.pswp__scroll-wrap, +.pswp__bg, +.pswp__container, +.pswp__item, +.pswp__content, +.pswp__img, +.pswp__zoom-wrap { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.pswp__img, +.pswp__zoom-wrap { + width: auto; + height: auto; +} + +.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img { + cursor: -webkit-zoom-in; + cursor: -moz-zoom-in; + cursor: zoom-in; +} + +.pswp--click-to-zoom.pswp--zoomed-in .pswp__img { + cursor: move; + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; +} + +.pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active { + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; +} + +/* :active to override grabbing cursor */ +.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img, +.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active, +.pswp__img { + cursor: -webkit-zoom-out; + cursor: -moz-zoom-out; + cursor: zoom-out; +} + + +/* Prevent selection and tap highlights */ +.pswp__container, +.pswp__img, +.pswp__button, +.pswp__counter { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.pswp__item { + /* z-index for fade transition */ + z-index: 1; + overflow: hidden; +} + +.pswp__hidden { + display: none !important; +} + +/* Allow to click through pswp__content element, but not its children */ +.pswp__content { + pointer-events: none; +} +.pswp__content > * { + pointer-events: auto; +} + + +/* + + PhotoSwipe UI + +*/ + +/* + Error message appears when image is not loaded + (JS option errorMsg controls markup) +*/ +.pswp__error-msg-container { + display: grid; +} +.pswp__error-msg { + margin: auto; + font-size: 1em; + line-height: 1; + color: var(--pswp-error-text-color); +} + +/* +class pswp__hide-on-close is applied to elements that +should hide (for example fade out) when PhotoSwipe is closed +and show (for example fade in) when PhotoSwipe is opened + */ +.pswp .pswp__hide-on-close { + opacity: 0.005; + will-change: opacity; + transition: opacity var(--pswp-transition-duration) cubic-bezier(0.4, 0, 0.22, 1); + z-index: 10; /* always overlap slide content */ + pointer-events: none; /* hidden elements should not be clickable */ +} + +/* class pswp--ui-visible is added when opening or closing transition starts */ +.pswp--ui-visible .pswp__hide-on-close { + opacity: 1; + pointer-events: auto; +} + +/* ', + nextArrow: '', + autoplay: false, + autoplaySpeed: 3000, + centerMode: false, + centerPadding: '50px', + cssEase: 'ease', + customPaging: function(slider, i) { + return $('',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i(' + + + +
    {% partial "calcresult" %}"
    \ No newline at end of file diff --git a/themes/demo/content/ajax/handler.txt b/themes/demo/content/ajax/handler.txt new file mode 100644 index 0000000..a0ceef1 --- /dev/null +++ b/themes/demo/content/ajax/handler.txt @@ -0,0 +1,21 @@ +function onTest() +{ + $value1 = input('value1'); + $value2 = input('value2'); + $operation = input('operation'); + + switch ($operation) { + case '+' : + $this['result'] = $value1 + $value2; + break; + case '-' : + $this['result'] = $value1 - $value2; + break; + case '*' : + $this['result'] = $value1 * $value2; + break; + default : + $this['result'] = $value2 != 0 ? round($value1 / $value2, 2) : 'NaN'; + break; + } +} \ No newline at end of file diff --git a/themes/demo/layouts/blog.htm b/themes/demo/layouts/blog.htm new file mode 100644 index 0000000..df19380 --- /dev/null +++ b/themes/demo/layouts/blog.htm @@ -0,0 +1,63 @@ +## +description = "Blog layout" + +[resources] +vars[activeBlogCategory] = "" +== + + + + {% partial 'site/head/head-meta' %} + October CMS - {{ this.page.meta_title ?: placeholder('pageTitle') }} + + + {% partial 'site/head/head-links' %} + {% partial 'site/head/head-scripts' %} + {% partial 'site/head/analytics-code' %} + + + + +
    + {% partial 'site/header' %} +
    + + {% partial 'site/flash-messages' %} + + +
    +
    + {% set pageTitle = placeholder('pageTitle') %} + {% if pageTitle %} +
    +

    {{ pageTitle }}

    +
    + {% endif %} +
    +
    +
    + {% page %} +
    +
    + +
    +
    + {% partial 'blog/sidebar' %} +
    +
    +
    +
    +
    + + +
    + {% partial 'site/footer' %} +
    + + + {% partial 'site/nav-mobile' %} + + + {% partial 'site/how-its-made' %} + + diff --git a/themes/demo/layouts/default.htm b/themes/demo/layouts/default.htm new file mode 100644 index 0000000..61af4a5 --- /dev/null +++ b/themes/demo/layouts/default.htm @@ -0,0 +1,40 @@ +## +description = "Default layout" +== + + + + {% partial 'site/head/head-meta' %} + October CMS - {{ this.page.meta_title ?: placeholder('pageTitle') }} + + + {% partial 'site/head/head-links' %} + {% partial 'site/head/head-scripts' %} + {% partial 'site/head/analytics-code' %} + + + + +
    + {% partial 'site/header' %} +
    + + {% partial 'site/flash-messages' %} + + +
    + {% page %} +
    + + +
    + {% partial 'site/footer' %} +
    + + + {% partial 'site/nav-mobile' %} + + + {% partial 'site/how-its-made' %} + + diff --git a/themes/demo/layouts/external.htm b/themes/demo/layouts/external.htm new file mode 100644 index 0000000..d3c717d --- /dev/null +++ b/themes/demo/layouts/external.htm @@ -0,0 +1,47 @@ +## +description = "External layout" +== + + + + {% partial 'site/head/head-meta' %} + October CMS - {{ this.page.meta_title ?: placeholder('pageTitle') }} + + + {% partial 'site/head/head-links' %} + {% partial 'site/head/head-scripts' %} + {% partial 'site/head/analytics-code' %} + + + + +
    + +
    + + {% partial 'site/flash-messages' %} + + +
    + {% page %} +
    + + +
    + + + {% partial 'site/modals/alert-dialog' %} + {% partial 'site/modals/password-dialog' %} + {% partial 'site/modals/ajax-modal' %} +
    + + diff --git a/themes/demo/layouts/home.htm b/themes/demo/layouts/home.htm new file mode 100644 index 0000000..d8f7ec9 --- /dev/null +++ b/themes/demo/layouts/home.htm @@ -0,0 +1,54 @@ +## +description = "Default layout" +== + + + + {% partial 'site/head/head-meta' %} + October CMS - {{ this.page.meta_title ?: placeholder('pageTitle') }} + + + {% partial 'site/head/head-links' %} + {% partial 'site/head/head-scripts' %} + {% partial 'site/head/analytics-code' %} + + + + + + + + {% partial 'site/flash-messages' %} + + +
    + {% page %} +
    + + +
    + {% partial 'site/footer' %} +
    + + + {% partial 'site/nav-mobile' %} + + + {% partial 'site/how-its-made' %} + + + diff --git a/themes/demo/layouts/wiki.htm b/themes/demo/layouts/wiki.htm new file mode 100644 index 0000000..198041a --- /dev/null +++ b/themes/demo/layouts/wiki.htm @@ -0,0 +1,52 @@ +## +description = "Wiki layout" +== + + + + {% partial 'site/head/head-meta' %} + October CMS - {{ this.page.meta_title ?: placeholder('pageTitle') }} + + + {% partial 'site/head/head-links' %} + {% partial 'site/head/head-scripts' %} + {% partial 'site/head/analytics-code' %} + + + + +
    + {% partial 'site/header' %} +
    + + {% partial 'site/flash-messages' %} + + +
    +
    +
    +
    +
    + {% partial 'wiki/sidebar' %} +
    +
    +
    + {% page %} +
    +
    +
    +
    + + +
    + {% partial 'site/footer' %} +
    + + + {% partial 'site/nav-mobile' %} + + + {% partial 'site/how-its-made' %} + + + diff --git a/themes/demo/mix-manifest.json b/themes/demo/mix-manifest.json new file mode 100644 index 0000000..4fbf578 --- /dev/null +++ b/themes/demo/mix-manifest.json @@ -0,0 +1,28 @@ +{ + "/assets/vendor/codeblocks/codeblocks.min.js": "/assets/vendor/codeblocks/codeblocks.min.js", + "/assets/vendor/bootstrap/bootstrap.min.js": "/assets/vendor/bootstrap/bootstrap.min.js", + "/assets/vendor/bootstrap-icons/bootstrap-icons.css": "/assets/vendor/bootstrap-icons/bootstrap-icons.css", + "/assets/vendor/bootstrap/bootstrap.css": "/assets/vendor/bootstrap/bootstrap.css", + "/assets/vendor/jquery.min.js": "/assets/vendor/jquery.min.js", + "/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff": "/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff", + "/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2": "/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2", + "/assets/vendor/slick-carousel/ajax-loader.gif": "/assets/vendor/slick-carousel/ajax-loader.gif", + "/assets/vendor/slick-carousel/config.rb": "/assets/vendor/slick-carousel/config.rb", + "/assets/vendor/slick-carousel/fonts/slick.eot": "/assets/vendor/slick-carousel/fonts/slick.eot", + "/assets/vendor/slick-carousel/fonts/slick.svg": "/assets/vendor/slick-carousel/fonts/slick.svg", + "/assets/vendor/slick-carousel/fonts/slick.ttf": "/assets/vendor/slick-carousel/fonts/slick.ttf", + "/assets/vendor/slick-carousel/fonts/slick.woff": "/assets/vendor/slick-carousel/fonts/slick.woff", + "/assets/vendor/slick-carousel/slick-theme.css": "/assets/vendor/slick-carousel/slick-theme.css", + "/assets/vendor/slick-carousel/slick-theme.less": "/assets/vendor/slick-carousel/slick-theme.less", + "/assets/vendor/slick-carousel/slick-theme.scss": "/assets/vendor/slick-carousel/slick-theme.scss", + "/assets/vendor/slick-carousel/slick.css": "/assets/vendor/slick-carousel/slick.css", + "/assets/vendor/slick-carousel/slick.js": "/assets/vendor/slick-carousel/slick.js", + "/assets/vendor/slick-carousel/slick.less": "/assets/vendor/slick-carousel/slick.less", + "/assets/vendor/slick-carousel/slick.min.js": "/assets/vendor/slick-carousel/slick.min.js", + "/assets/vendor/slick-carousel/slick.scss": "/assets/vendor/slick-carousel/slick.scss", + "/assets/vendor/photoswipe/photoswipe.css": "/assets/vendor/photoswipe/photoswipe.css", + "/assets/vendor/photoswipe/photoswipe-lightbox.esm.min.js": "/assets/vendor/photoswipe/photoswipe-lightbox.esm.min.js", + "/assets/vendor/photoswipe/photoswipe.esm.min.js": "/assets/vendor/photoswipe/photoswipe.esm.min.js", + "/assets/vendor/photoswipe-dynamic-caption-plugin/photoswipe-dynamic-caption-plugin.esm.js": "/assets/vendor/photoswipe-dynamic-caption-plugin/photoswipe-dynamic-caption-plugin.esm.js", + "/assets/vendor/photoswipe-dynamic-caption-plugin/photoswipe-dynamic-caption-plugin.css": "/assets/vendor/photoswipe-dynamic-caption-plugin/photoswipe-dynamic-caption-plugin.css" +} diff --git a/themes/demo/package.json b/themes/demo/package.json new file mode 100644 index 0000000..f17e276 --- /dev/null +++ b/themes/demo/package.json @@ -0,0 +1,26 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "mix", + "watch": "mix watch", + "watch-poll": "mix watch -- --watch-options-poll=1000", + "hot": "mix watch --hot", + "prod": "npm run production", + "production": "mix --production" + }, + "devDependencies": { + "laravel-mix": "^6.0.39", + "sass": "^1.45.0", + "sass-loader": "^12.1.0" + }, + "dependencies": { + "bootstrap": "^5.3.0", + "bootstrap-icons": "^1.10", + "codemirror": "^5.64.0", + "jquery": "^3.6.0", + "slick-carousel": "^1.8.1", + "photoswipe": "^5.2.4", + "photoswipe-dynamic-caption-plugin": "^1.1.1" + } +} diff --git a/themes/demo/pages/404.htm b/themes/demo/pages/404.htm new file mode 100644 index 0000000..2f1d5ef --- /dev/null +++ b/themes/demo/pages/404.htm @@ -0,0 +1,16 @@ +title = "Page Not Found (404)" +url = "/404" +layout = "default" + +[resources] +less[] = "pages/404.less" +== +{% put meta %} + +{% endput %} +
    + +
    diff --git a/themes/demo/pages/about.htm b/themes/demo/pages/about.htm new file mode 100644 index 0000000..3f37782 --- /dev/null +++ b/themes/demo/pages/about.htm @@ -0,0 +1,25 @@ +## +url = "/about" +layout = "default" +title = "About Page" +meta_title = "{{ aboutpage.title }}" + +[section aboutpage] +handle = "Page\About" + +[resources] +vars[activeNavLink] = 'about' +== +{% put headerAfter %} +
    +
    +

    Hello! This is October CMS!

    +

    A company proving that making websites is not rocket science.

    +
    +
    +{% endput %} +
    + {% for block in aboutpage.blocks %} + {% partial 'blocks/' ~ str_slug(block.type) block=block %} + {% endfor %} +
    diff --git a/themes/demo/pages/ajax.htm b/themes/demo/pages/ajax.htm new file mode 100644 index 0000000..bab76d1 --- /dev/null +++ b/themes/demo/pages/ajax.htm @@ -0,0 +1,119 @@ +## +title = "AJAX Framework" +url = "/ajax" +layout = "default" +meta_title = "AJAX Framework" + +[resources] +less[] = "pages/ajax.less" +vars[blueFooterStyle] = 1 +== + +== +
    +
    +
    +
    +
    +

    AJAX Framework

    +

    The built-in JavaScript framework provides simple but powerful AJAX capabilities. In most cases, you don't need to write JavaScript code to post data to the server and update elements of your page. The data- attributes can solve a lot of typical tasks. For more complex cases you can employ the full power of JavaScript. You can find more information in the documentation. Check out the calculator example below!

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + + + + +
    + +
    + +
    + +
    + +
    +
    +
    +
    +
    +
    {% partial "calcresult" %}
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +

    The HTML markup for that example

    + +

    The markup defines a form with the inputs for numbers, operation and buttons. Note the data-request and data-request-update attributes on the FORM tag. Those two attributes tell the AJAX framework which PHP function must handle the request and what page element must be updated when the result comes back from the server.

    + + + +

    The calcresult partial

    + +

    The partial is referred in the form's data-request-update attribute together with the ID of the element that must be updated with the AJAX request. The partial is also rendered when the page first loads to display the default value.

    + +
    +
    {% content "ajax/calcresult.txt" %}
    +
    + +

    The onTest PHP function

    + +

    That PHP function is referred in the form's data-request attribute and acts as the AJAX handler. It loads the submitted values, performs the requested operation, and assigns the calculated value to the result page variable, which is then used in the calcresult partial. The function is defined right in the page file, in the PHP section.

    + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/themes/demo/pages/blog/archive.htm b/themes/demo/pages/blog/archive.htm new file mode 100644 index 0000000..914df4c --- /dev/null +++ b/themes/demo/pages/blog/archive.htm @@ -0,0 +1,24 @@ +## +url = "/blog/archive/:year|(^[0-9]{4}$)/:month|(^0?[1-9]$)|(^1[0-2]$)" +title = "Blog Archive" +layout = "blog" + +[collection blog] +handle = "Blog\Post" + +[resources] +vars[activeNavLink] = 'blog' +== +{% set dateParsed = date('1-'~this.param.month~'-'~this.param.year) %} +{% set posts = blog + .where('published_at_year', this.param.year) + .where('published_at_month', this.param.month) + .get() +%} +{% put pageTitle = 'Articles from ' ~ dateParsed|date('F Y') %} + + diff --git a/themes/demo/pages/blog/author.htm b/themes/demo/pages/blog/author.htm new file mode 100644 index 0000000..4c7e562 --- /dev/null +++ b/themes/demo/pages/blog/author.htm @@ -0,0 +1,44 @@ +## +url = "/blog/author/:slug" +layout = "default" +title = "Display a Blog Author" + +[section author] +handle = "Blog\Author" +identifier = "slug" + +[collection blog] +handle = "Blog\Post" + +[resources] +vars[activeNavLink] = 'blog' +== +{% if author is empty %} + {% do abort(404) %} +{% endif %} + +{% set authorPosts = blog.whereRelation('author', 'slug', author.slug).paginate(16) %} +{% put pageTitle = author.title %} + +
    +
    +

    Posts by {{ author.title }}

    +
    + + + +
    diff --git a/themes/demo/pages/blog/category.htm b/themes/demo/pages/blog/category.htm new file mode 100644 index 0000000..2ccfb06 --- /dev/null +++ b/themes/demo/pages/blog/category.htm @@ -0,0 +1,33 @@ +## +url = "/blog/category/:slug/:id" +layout = "blog" +title = "Display a Blog Category" + +[section category] +handle = "Blog\Category" +identifier = "id" + +[collection blog] +handle = "Blog\Post" + +[resources] +vars[activeNavLink] = 'blog' +vars[activeBlogCategory] = "{{ :slug }}" +== +{% if category is empty %} + {% do abort(404) %} +{% elseif category.slug and category.slug != this.param.slug %} + {% do redirect(''|page({ slug: category.slug }), 301) %} +{% endif %} + +{% set posts = blog.whereRelation('categories', 'slug', category.slug).paginate(16) %} +{% put pageTitle = 'Articles in ' ~ category.title %} + + + diff --git a/themes/demo/pages/blog/index.htm b/themes/demo/pages/blog/index.htm new file mode 100644 index 0000000..b3b1287 --- /dev/null +++ b/themes/demo/pages/blog/index.htm @@ -0,0 +1,28 @@ +## +url = "/blog" +layout = "blog" +title = "Blog Homepage" + +[collection blog] +handle = "Blog\Post" + +[global blogConfig] +handle = "Blog\Config" + +[resources] +vars[activeNavLink] = 'blog' +== +{% set posts = blog.paginate(5) %} +{% set archiveDates = blog + .selectRaw("count(*) as post_count, published_at_month, published_at_year") + .groupBy('published_at_month', 'published_at_year').get() +%} +{% put pageTitle = blogConfig.blog_name ?: 'Blog' %} + +{% for post in posts %} + {% partial 'blog/post-card' post=post bannerCss='banner-lg' %} +{% endfor %} + + diff --git a/themes/demo/pages/blog/post.htm b/themes/demo/pages/blog/post.htm new file mode 100644 index 0000000..5c250ff --- /dev/null +++ b/themes/demo/pages/blog/post.htm @@ -0,0 +1,85 @@ +## +url = "/blog/post/:slug/:id" +layout = "blog" +title = "Display a Blog Post" +meta_title = "{{ blog.title }} - Blog" + +[section post] +handle = "Blog\Post" +identifier = "id" + +[collection blogCategories] +handle = "Blog\Category" + +[resources] +vars[activeNavLink] = 'blog' +== +{% if post is empty %} + {% do abort(404) %} +{% elseif post.slug and post.slug != this.param.slug %} + {% do redirect(''|page({ slug: post.slug }), 301) %} +{% endif %} + +
    + {% if post.banner %} + + {% else %} + + {% endif %} + +
    +

    + {{ post.title }} +

    + + {% if post.entry_type == 'markdown_post' %} + {{ post.content|md|content }} + {% else %} + {{ post.content|content }} + {% endif %} + +
    + {% partial 'controls/gallery-slider' gallery=post.gallery %} +
    + +
    +
    +
    + {% if post.categories %} +
    + Posted in + {% for category in post.categories %} + {{ category.title }}{{ not loop.last ? ',' }} + {% endfor %} +
    +
    + • +
    + {% endif %} +
    + {{ post.published_at_date|date('j M Y') }} +
    +
    +
    +
    + +
    +
    +
    + {% if post.author %} +
    +
    + {% partial 'elements/user-panel-author' user=post.author %} +
    + {% endif %} +
    +
    + {% partial 'blog/comment-list' %} +
    +
    +
    + {% partial 'blog/comment-form' %} +
    +
    diff --git a/themes/demo/pages/blog/rss.htm b/themes/demo/pages/blog/rss.htm new file mode 100644 index 0000000..1896cee --- /dev/null +++ b/themes/demo/pages/blog/rss.htm @@ -0,0 +1,27 @@ +## +url = "/blog/rss" +title = "Blog RSS Feed" + +[collection blog] +handle = "Blog\Post" + +[resources] +headers[Content-Type] = 'text/xml' +== + + + + {{ this.page.meta_title ?: this.page.title }} + {{ 'blog/index'|page }} + {{ this.page.meta_description ?: this.page.description }} + + {% for post in blog %} + {{ post.title }} + {{ 'blog/post'|page({ slug: post.slug, id: post.id }) }} + {{ post.slug }} + {{ post.published_at_date.toRfc2822String }} + {{ post.featured_text }} + + {% endfor %} + + diff --git a/themes/demo/pages/blog/search.htm b/themes/demo/pages/blog/search.htm new file mode 100644 index 0000000..8b2b0d7 --- /dev/null +++ b/themes/demo/pages/blog/search.htm @@ -0,0 +1,42 @@ +## +url = "/blog/search" +layout = "default" +title = "Search Blog Posts" +meta_title = "Search - Blog" + +[collection blog] +handle = "Blog\Post" + +[resources] +vars[activeNavLink] = 'blog' +== +{% set searchTerm = get('term')|trim %} +{% set posts = blog.searchWhere(searchTerm, ['title', 'content']).paginate(16) %} +{% put pageTitle=searchTerm ~ ' - Search Results' %} + +
    +
    +

    {{ searchTerm }} - Search Results

    +
    +
    +
    +
    +
    + +
    +
    + + + +
    +
    +
    diff --git a/themes/demo/pages/components.htm b/themes/demo/pages/components.htm new file mode 100644 index 0000000..11f34ab --- /dev/null +++ b/themes/demo/pages/components.htm @@ -0,0 +1,59 @@ +## +title = "Components Demo" +url = "/components" +layout = "default" +meta_title = "CMS Component Demo" + +[demoTodo] +max = 3 +addDefault = 1 + +[resources] +less[] = "pages/components.less" +vars[activeNavLink] = 'demo' +vars[blueFooterStyle] = 1 +== +
    +
    +
    +
    +
    +

    CMS Component Demo

    +

    Plugins can provide CMS components, simple building blocks that can enrich pages, layouts, and partials. Check out the To Do example below.

    +
    +
    +
    +
    + {% component 'demoTodo' %} +
    +
    +
    +
    + + +
    +
    +
    +
    +

    HTML Markup for that example

    + +
    +
    {% autoescape %}{{ "{% component 'demoTodo' %}" }}{% endautoescape %}
    +
    + +

    Wait, only one line is needed? Yes! CMS components are simple building blocks that can be used with a small amount of code. Components encapsulate PHP code and partials and can be included in a page, layout or partial with a single line of code. By sharing plugins between multiple projects, you can reuse CMS components and be more productive. The demoTodo component used here is provided by the plugin called October\Demo, you can find it in the plugins/october/demo folder.

    + + +
    +
    +
    +
    +
    +
    +
    diff --git a/themes/demo/pages/contact.htm b/themes/demo/pages/contact.htm new file mode 100644 index 0000000..5ade258 --- /dev/null +++ b/themes/demo/pages/contact.htm @@ -0,0 +1,66 @@ +## +title = "Contact Us" +url = "/contact" +layout = "default" +meta_title = "Get in touch!" + +[resources] +less[] = "pages/contact.less" +vars[activeNavLink] = 'contact' +vars[blueFooterStyle] = 1 +== +
    +
    +
    +
    +

    Ready for something new? Get in touch!

    +

    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.

    + +
    +
    +
    + +
    +
    +

    Address

    +

    Cupertino, California, United States

    +
    +
    +
    +
    + +
    +
    +

    Email

    +

    example@example.tld

    +
    +
    +
    +
    + +
    +
    +

    Phone

    +

    0 (123) 456 7890

    +
    +
    +
    +
    +
    + Team Shot +
    +
    +
    + +
    +
    +
    +
    + {% partial 'about/contact-form' %} +
    +
    +
    +
    +
    +
    +
    diff --git a/themes/demo/pages/error.htm b/themes/demo/pages/error.htm new file mode 100644 index 0000000..c8c8a68 --- /dev/null +++ b/themes/demo/pages/error.htm @@ -0,0 +1,16 @@ +title = "Error Page (500)" +url = "/error" +layout = "default" + +[resources] +less[] = "pages/404.less" +== +{% put meta %} + +{% endput %} +
    + +
    diff --git a/themes/demo/pages/index.htm b/themes/demo/pages/index.htm new file mode 100644 index 0000000..783ccb1 --- /dev/null +++ b/themes/demo/pages/index.htm @@ -0,0 +1,145 @@ +## +title = "Demonstration" +url = "/" +layout = "home" +meta_title = "Welcome" + +[collection blog] +handle = "Blog\Post" + +[resources] +less[] = "pages/index.less" +== +{% set latestPosts = blog.limit(3).get %} +
    +
    +
    +
    +
    +
    +

    Welcome to October CMS!

    +

    + This is the October CMS demo theme that explores the core features. You can use it as a foundation for your new website. +

    +

    + {% if backendUrl %} + + Explore the Backend Area + + {% else %} + + Explore the Platform Features + + {% endif %} +

    +
    +
    + +
    +
    + Product Shot +
    +
    +
    +
    +
    +
    +
    + + +
    +
    + October CMS +

    About This Page

    +

    + This page demonstrates the basic CMS features. Usually each page built with October CMS is a combination of a layout, page, partials and content blocks, although in simple cases you can just use a page without anything else. +

    +
    +
    + +
    +
    +
    +
    +
    +

    CMS Feature

    +

    Layouts

    +

    Layouts define the page scaffold. Layout files include everything that repeats on each page, such as the HTML, HEAD and BODY tags, CSS and JavaScript references. The page menu and footer in the Demo theme are defined in the layout as well. Layouts are optional — you can define everything right in a page file.

    + Learn more about Layouts +
    +
    +
    +
    + CMS Layouts +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + CMS Pages +
    +
    +
    +
    +

    Included

    +

    Pages

    +

    Pages hold the content for each URL. A page file defines the page URL and the page content. Pages are rendered inside layouts with the page tag that should be called in the layout code.

    + Learn more about Pages +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +

    CMS Feature

    +

    Partials

    +

    + Partials contain chunks of HTML code that are used anywhere throughout your website. They allow you to simplify the code of complex pages and reuse code in multiple places. + Also, partials are an important part of the built-in AJAX framework. +

    + Learn more about Partials +
    +
    +
    +
    + CMS Layouts +
    +
    +
    +
    +
    + +
    +
    +

    There are more great CMS features!

    +

    Visit the October CMS Documentation website to learn everything about the CMS features.

    + Learn more about October CMS +
    +
    +
    +
    +
    + +
    +
    +

    Latest News

    + + +
    +
    +
    \ No newline at end of file diff --git a/themes/demo/pages/sitemap.htm b/themes/demo/pages/sitemap.htm new file mode 100644 index 0000000..6c24ec0 --- /dev/null +++ b/themes/demo/pages/sitemap.htm @@ -0,0 +1,56 @@ +## +title = "Sitemap" +url = "/sitemap.xml" + +[resources] +headers[Content-Type] = 'application/xml' + +[section sitemap] +handle = "Site\Menus" +identifier = "slug" +value = "sitemap" +== +{% if sitemap is empty %} + {% do abort(500, "A menu definition with code 'sitemap' was not found. Please create this menu in the Admin Panel using the Content → Menus page.") %} +{% endif %} +{% macro render_sitemap_item(item, reference, isRoot) %} + {% import _self as nav %} + {% set hideRootItem = isRoot and item.replace %} + {% if reference.url and not hideRootItem %} + + {{ reference.url }} + {{ reference.mtime|date('c') }} + {{ item.changefreq }} + {{ item.priority }} + + {#- Multisite implementation -#} + {% if reference.sites %} + {% for site in reference.sites %} + + {% endfor %} + {% endif %} + + {% endif %} + + {#- Render child items -#} + {% if reference.items %} + {% for child in reference.items %} + {{ nav.render_sitemap_item(item, child) }} + {% endfor %} + {% endif %} +{% endmacro %} +{% import _self as nav %} + + {% for item in sitemap.items %} + {{ nav.render_sitemap_item( + item, + link(item.reference, { nesting: item.nesting, sites: true }), + true + ) }} + {% endfor %} + diff --git a/themes/demo/pages/wiki/article.htm b/themes/demo/pages/wiki/article.htm new file mode 100644 index 0000000..70b8dd6 --- /dev/null +++ b/themes/demo/pages/wiki/article.htm @@ -0,0 +1,58 @@ +## +url = "/wiki/:fullslug*/:id" +layout = "wiki" +title = "Wiki Article" +meta_title = "{{ wiki.title }}" + +[section wiki] +handle = "Page\Article" +identifier = "id" + +[resources] +vars[activeNavLink] = 'wiki' +== +{% set article = wiki %} +{% if article is empty %} + {% do abort(404) %} +{% elseif article.fullslug and article.fullslug != this.param.fullslug %} + {% do redirect(''|page({ fullslug: article.fullslug }), 301) %} +{% endif %} + +
    + +
    + {% partial 'wiki/breadcrumb' article=article %} +
    + +
    +

    {{ article.title }}

    +

    {{ article.summary_text }}

    + +
    + {% if article.banner %} +
    + {% else %} +
    + {% endif %} +
    + + {{ article.content|content }} + +
    + {% partial 'controls/gallery-slider' gallery=article.gallery %} +
    +
    + + {% partial 'wiki/continue' article=article %} + + {% if article.external_links %} +
    +

    External Links

    + + {% endif %} + +
    diff --git a/themes/demo/pages/wiki/index.htm b/themes/demo/pages/wiki/index.htm new file mode 100644 index 0000000..887db8b --- /dev/null +++ b/themes/demo/pages/wiki/index.htm @@ -0,0 +1,40 @@ +## +url = "/wiki" +layout = "wiki" +title = "Wiki Docs Demo" +meta_title = "Wiki" + +[collection wiki] +handle = "Page\Article" + +[resources] +vars[activeNavLink] = 'wiki' +== +{% set article = wiki.first() %} + +
    +
    +

    {{ article.title }}

    +

    {{ article.summary_text }}

    + +
    + {% if article.banner %} +
    + {% else %} +
    + {% endif %} +
    + + {{ article.content|raw }} +
    + + {% if article.external_links %} +
    +

    External Links

    + + {% endif %} +
    diff --git a/themes/demo/pages/wiki/search.htm b/themes/demo/pages/wiki/search.htm new file mode 100644 index 0000000..9b919dc --- /dev/null +++ b/themes/demo/pages/wiki/search.htm @@ -0,0 +1,49 @@ +## +url = "/wiki/search" +layout = "default" +title = "Search Wiki Articles" +meta_title = "Search - Wiki" + +[collection wiki] +handle = "Page\Article" + +[resources] +vars[activeNavLink] = "wiki" +== +{% set searchTerm = get('term')|trim %} +{% set articles = wiki.searchWhere(searchTerm, ['title', 'content']).paginate(4) %} +{% put pageTitle=searchTerm ~ ' - Search Results' %} + +
    +
    +

    {{ searchTerm }} - Search Results

    +
    +
    +
    +
    +
    + +
    +
    + +
    + {% for article in articles %} +
    +
    +
    + {{ article.title }} +
    + {{ article.content|html_limit(250)|raw }} +
    +
    + {% endfor %} +
    + +
    +
    +
    diff --git a/themes/demo/partials/about/contact-form.htm b/themes/demo/partials/about/contact-form.htm new file mode 100644 index 0000000..068698e --- /dev/null +++ b/themes/demo/partials/about/contact-form.htm @@ -0,0 +1,34 @@ +
    +

    Drop Us a Line

    +

    Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    + +
    +
    +
    +
    diff --git a/themes/demo/partials/blocks/detailed-block.htm b/themes/demo/partials/blocks/detailed-block.htm new file mode 100644 index 0000000..1cf2360 --- /dev/null +++ b/themes/demo/partials/blocks/detailed-block.htm @@ -0,0 +1,27 @@ +{% set blockImage = block.image ? block.image|media : 'assets/images/blocks/team.png'|theme %} + +
    +
    +
    +

    {{ block.title }}

    + {{ block.content|raw }} + + {% if block.list_items %} +
      + {% for item in block.list_items %} +
    • {{ item.text }}
    • + {% endfor %} +
    + {% endif %} + +

    + + {{ block.button_text }} + +

    +
    +
    + +
    +
    +
    diff --git a/themes/demo/partials/blocks/image-slice.htm b/themes/demo/partials/blocks/image-slice.htm new file mode 100644 index 0000000..3eb96e5 --- /dev/null +++ b/themes/demo/partials/blocks/image-slice.htm @@ -0,0 +1,8 @@ +## +[resources] +less[] = "blocks/hero-image.less" +== +{% set heroImage = block.image ? block.image|media : 'assets/images/stock/desks-cropped.png'|theme %} + +
    +
    diff --git a/themes/demo/partials/blocks/paragraph-block.htm b/themes/demo/partials/blocks/paragraph-block.htm new file mode 100644 index 0000000..ab55416 --- /dev/null +++ b/themes/demo/partials/blocks/paragraph-block.htm @@ -0,0 +1,13 @@ +{% set blockImage = block.image ? block.image|media : 'assets/images/blocks/chart.png'|theme %} + +
    +

    {{ block.title }}

    +
    +
    + {{ block.content|raw }} +
    +
    + +
    +
    +
    diff --git a/themes/demo/partials/blocks/scoreboard-metrics.htm b/themes/demo/partials/blocks/scoreboard-metrics.htm new file mode 100644 index 0000000..1f34e91 --- /dev/null +++ b/themes/demo/partials/blocks/scoreboard-metrics.htm @@ -0,0 +1,18 @@ +## +[resources] +less[] = "blocks/scoreboard-metrics.less" +== +
    +
    +
    + {% for metric in block.metrics|default([]) %} +
    + +

    {{ metric.number }}

    +

    {{ metric.description }}

    +
    + {% endfor %} +
    +
    +
    +
    diff --git a/themes/demo/partials/blocks/team-leaders.htm b/themes/demo/partials/blocks/team-leaders.htm new file mode 100644 index 0000000..8cba0c1 --- /dev/null +++ b/themes/demo/partials/blocks/team-leaders.htm @@ -0,0 +1,29 @@ +## +[resources] +less[] = "blocks/team-leaders.less" +js[] = "blocks/team-leaders.js" +== +
    +
    +
    +

    Meet the Team!

    +

    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.

    +
    +
    +
    + +
    +
    +
    + {% for member in block.members|default([]) %} +
    +
    +
    + {% partial 'elements/user-panel-team' user=member %} +
    +
    +
    + {% endfor %} +
    +
    +
    diff --git a/themes/demo/partials/blog/comment-form.htm b/themes/demo/partials/blog/comment-form.htm new file mode 100644 index 0000000..a1383fe --- /dev/null +++ b/themes/demo/partials/blog/comment-form.htm @@ -0,0 +1,32 @@ +
    +

    Tell us what you think!

    + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    + +
    +

    + You are replying to Mary Williams. You can post a new comment instead. +

    +
    +
    +
    diff --git a/themes/demo/partials/blog/comment-list.htm b/themes/demo/partials/blog/comment-list.htm new file mode 100644 index 0000000..458faa0 --- /dev/null +++ b/themes/demo/partials/blog/comment-list.htm @@ -0,0 +1,10 @@ +
    +

    2 comments

    + +
    + {% partial 'elements/user-panel' user={ title:'Andy Anderson', role:'', slug:'', avatar:null } %} +
    +
    + {% partial 'elements/user-panel' user={ title:'Mary Williams', role:'', slug:'', avatar:null } %} +
    +
    diff --git a/themes/demo/partials/blog/post-card.htm b/themes/demo/partials/blog/post-card.htm new file mode 100644 index 0000000..8a67b43 --- /dev/null +++ b/themes/demo/partials/blog/post-card.htm @@ -0,0 +1,49 @@ +
    +
    + {% if post.banner %} +
    + {% else %} +
    + {% endif %} + +
    + {% if post.categories %} +
    + +
    + {% endif %} + +

    + {{ post.title }} +

    + + +
    + + +
    +
    diff --git a/themes/demo/partials/blog/sidebar.htm b/themes/demo/partials/blog/sidebar.htm new file mode 100644 index 0000000..a3abf5a --- /dev/null +++ b/themes/demo/partials/blog/sidebar.htm @@ -0,0 +1,68 @@ +## +[collection blog] +handle = "Blog\Post" + +[collection blogCategories] +handle = "Blog\Category" + +[global blogConfig] +handle = "Blog\Config" +== +{% set archiveDates = blog + .selectRaw("count(*) as post_count, published_at_month, published_at_year") + .groupBy('published_at_month', 'published_at_year').get() +%} + + + + + + + + + + + diff --git a/themes/demo/partials/calcresult.htm b/themes/demo/partials/calcresult.htm new file mode 100644 index 0000000..6c66cc8 --- /dev/null +++ b/themes/demo/partials/calcresult.htm @@ -0,0 +1 @@ +{{ result|default(75) }} \ No newline at end of file diff --git a/themes/demo/partials/controls/gallery-slider.htm b/themes/demo/partials/controls/gallery-slider.htm new file mode 100644 index 0000000..f6b24a8 --- /dev/null +++ b/themes/demo/partials/controls/gallery-slider.htm @@ -0,0 +1,32 @@ +{% set galleryId = 'carousel' ~ random() %} +{% set width = width|default(640) %} +{% set height = height|default(640) %} + + diff --git a/themes/demo/partials/elements/share-button.htm b/themes/demo/partials/elements/share-button.htm new file mode 100644 index 0000000..d592ff8 --- /dev/null +++ b/themes/demo/partials/elements/share-button.htm @@ -0,0 +1,27 @@ + diff --git a/themes/demo/partials/elements/social-links.htm b/themes/demo/partials/elements/social-links.htm new file mode 100644 index 0000000..de0c5be --- /dev/null +++ b/themes/demo/partials/elements/social-links.htm @@ -0,0 +1,18 @@ + diff --git a/themes/demo/partials/elements/user-panel-author.htm b/themes/demo/partials/elements/user-panel-author.htm new file mode 100644 index 0000000..baf3819 --- /dev/null +++ b/themes/demo/partials/elements/user-panel-author.htm @@ -0,0 +1,30 @@ +
    +
    +
    +
    + {% if user.avatar %} + {{ user.title }} + {% else %} + {{ user.title }} + {% endif %} +
    +
    +

    {{ user.title }}

    +

    {{ user.role }}

    +
    +
    + {% if not hideAllPosts %} + + {% endif %} +
    + +
    + {% partial 'elements/social-links' links=user.social_links %} +
    +
    diff --git a/themes/demo/partials/elements/user-panel-team.htm b/themes/demo/partials/elements/user-panel-team.htm new file mode 100644 index 0000000..3172af9 --- /dev/null +++ b/themes/demo/partials/elements/user-panel-team.htm @@ -0,0 +1,23 @@ +
    +
    + {% if user.avatar %} + {{ user.title }} + {% else %} + {{ user.title }} + {% endif %} +
    +
    +

    {{ user.title }}

    +

    + {{ user.role }} +

    +
    + +
    + {% partial 'elements/social-links' links=user.social_links %} +
    + + +
    diff --git a/themes/demo/partials/elements/user-panel.htm b/themes/demo/partials/elements/user-panel.htm new file mode 100644 index 0000000..ff72277 --- /dev/null +++ b/themes/demo/partials/elements/user-panel.htm @@ -0,0 +1,27 @@ +
    +
    +
    +
    + {% if user.avatar %} + {{ user.title }} + {% else %} + {{ user.title }} + {% endif %} +
    +
    +

    {{ user.title }}

    +

    + March 12, 2022 +

    +
    +
    + +
    + +
    diff --git a/themes/demo/partials/site/flash-messages.htm b/themes/demo/partials/site/flash-messages.htm new file mode 100644 index 0000000..d5f26f1 --- /dev/null +++ b/themes/demo/partials/site/flash-messages.htm @@ -0,0 +1,8 @@ +{% flash %} +

    + {{ message }} +

    +{% endflash %} diff --git a/themes/demo/partials/site/footer.htm b/themes/demo/partials/site/footer.htm new file mode 100644 index 0000000..b0ce551 --- /dev/null +++ b/themes/demo/partials/site/footer.htm @@ -0,0 +1,108 @@ + + +{% partial 'site/modals/alert-dialog' %} +{% partial 'site/modals/password-dialog' %} +{% partial 'site/modals/ajax-modal' %} diff --git a/themes/demo/partials/site/head/analytics-code.htm b/themes/demo/partials/site/head/analytics-code.htm new file mode 100644 index 0000000..d2503fc --- /dev/null +++ b/themes/demo/partials/site/head/analytics-code.htm @@ -0,0 +1,2 @@ + +{#- Place Google Analytics Code Here -#} diff --git a/themes/demo/partials/site/head/head-links.htm b/themes/demo/partials/site/head/head-links.htm new file mode 100644 index 0000000..79ddd11 --- /dev/null +++ b/themes/demo/partials/site/head/head-links.htm @@ -0,0 +1,12 @@ +{# Favicon #} + + +{# Styles #} + + + + + + + +{% styles %} diff --git a/themes/demo/partials/site/head/head-meta.htm b/themes/demo/partials/site/head/head-meta.htm new file mode 100644 index 0000000..8faf683 --- /dev/null +++ b/themes/demo/partials/site/head/head-meta.htm @@ -0,0 +1,6 @@ +{# Global Meta Tags #} + + + + +{% meta %} diff --git a/themes/demo/partials/site/head/head-scripts.htm b/themes/demo/partials/site/head/head-scripts.htm new file mode 100644 index 0000000..148a17c --- /dev/null +++ b/themes/demo/partials/site/head/head-scripts.htm @@ -0,0 +1,24 @@ +{% framework extras %} + + + + + +{% scripts %} + + diff --git a/themes/demo/partials/site/header.htm b/themes/demo/partials/site/header.htm new file mode 100644 index 0000000..d36dbd1 --- /dev/null +++ b/themes/demo/partials/site/header.htm @@ -0,0 +1,24 @@ + +{% placeholder headerBefore %} + +
    + +
    +{% placeholder headerAfter %} diff --git a/themes/demo/partials/site/helpers/random-avatar-image.htm b/themes/demo/partials/site/helpers/random-avatar-image.htm new file mode 100644 index 0000000..29f2e7a --- /dev/null +++ b/themes/demo/partials/site/helpers/random-avatar-image.htm @@ -0,0 +1,7 @@ +{% set images = [ + 'avatar-1', + 'avatar-2', + 'avatar-3', + 'avatar-4', + 'avatar-5' +] %}{{ ('assets/images/avatars/' ~ random(images) ~ '.png')|theme }} diff --git a/themes/demo/partials/site/helpers/random-stock-image.htm b/themes/demo/partials/site/helpers/random-stock-image.htm new file mode 100644 index 0000000..b0274a1 --- /dev/null +++ b/themes/demo/partials/site/helpers/random-stock-image.htm @@ -0,0 +1,6 @@ +{% set images = [ + 'workspace', + 'desktop', + 'pancakes', + 'doughnuts' +] %}{{ ('assets/images/stock/' ~ random(images) ~ '.png')|theme }} diff --git a/themes/demo/partials/site/how-its-made.htm b/themes/demo/partials/site/how-its-made.htm new file mode 100644 index 0000000..c6b7e54 --- /dev/null +++ b/themes/demo/partials/site/how-its-made.htm @@ -0,0 +1,73 @@ +[backendLink] +== +{% if this.page.id == 'blog-category' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:blog/category.htm' %} + {% set howItsMadeTailorBlueprint = 'tailor:tailor-blueprint:blog/category.yaml' %} + {% set howItsMadeTailorContent = 'entries/blog_category/' ~ category.id %} +{% elseif this.page.id == '404' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:404.htm' %} +{% elseif this.page.id == 'error' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:error.htm' %} +{% elseif this.page.id == 'about' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:about.htm' %} + {% set howItsMadeTailorBlueprint = 'tailor:tailor-blueprint:landing/landing-page.yaml' %} + {% set howItsMadeTailorContent = 'entries/page_about' %} +{% elseif this.page.id == 'ajax' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:ajax.htm' %} +{% elseif this.page.id == 'components' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:components.htm' %} +{% elseif this.page.id == 'contact' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:contact.htm' %} +{% elseif this.page.id == 'index' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:index.htm' %} +{% elseif this.page.id == 'blog-archive' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:blog/archive.htm' %} + {% set howItsMadeTailorBlueprint = 'tailor:tailor-blueprint:blog/post.yaml' %} + {% set howItsMadeTailorContent = 'entries/blog_post' %} +{% elseif this.page.id == 'blog-author' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:blog/author.htm' %} + {% set howItsMadeTailorBlueprint = 'tailor:tailor-blueprint:blog/author.yaml' %} + {% set howItsMadeTailorContent = 'entries/blog_author/' ~ author.id %} +{% elseif this.page.id == 'blog-index' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:blog/index.htm' %} + {% set howItsMadeTailorBlueprint = 'tailor:tailor-blueprint:blog/post.yaml' %} + {% set howItsMadeTailorContent = 'entries/blog_post' %} +{% elseif this.page.id == 'blog-post' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:blog/post.htm' %} + {% set howItsMadeTailorBlueprint = 'tailor:tailor-blueprint:blog/post.yaml' %} + {% set howItsMadeTailorContent = 'entries/blog_post/' ~ blog.id %} +{% elseif this.page.id == 'blog-search' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:blog/search.htm' %} + {% set howItsMadeTailorBlueprint = 'tailor:tailor-blueprint:blog/post.yaml' %} + {% set howItsMadeTailorContent = 'entries/blog_post' %} +{% elseif this.page.id == 'wiki-article' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:wiki/article.htm' %} + {% set howItsMadeTailorBlueprint = 'tailor:tailor-blueprint:wiki/article.yaml' %} + {% set howItsMadeTailorContent = 'entries/page_article/' ~ wiki.id %} +{% elseif this.page.id == 'wiki-index' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:wiki/index.htm' %} + {% set howItsMadeTailorBlueprint = 'tailor:tailor-blueprint:wiki/article.yaml' %} + {% set howItsMadeTailorContent = 'entries/page_article' %} +{% elseif this.page.id == 'wiki-search' %} + {% set howItsMadeCmsTemplate = 'cms:cms-page:wiki/search.htm' %} + {% set howItsMadeTailorBlueprint = 'tailor:tailor-blueprint:wiki/article.yaml' %} + {% set howItsMadeTailorContent = 'entries/page_article' %} +{% endif %} + +{% if backendUrl and howItsMadeCmsTemplate %} +
    +
    +

    Wondering how this page is made? View the + {% if howItsMadeCmsTemplate|default(false) %} + CMS Template + {% endif %} + {% if howItsMadeTailorBlueprint|default(false) %} + • Tailor Blueprint + {% endif %} + {% if howItsMadeTailorContent|default(false) %} + • Tailor Content + {% endif %} +

    +
    +
    +{% endif %} diff --git a/themes/demo/partials/site/modals/ajax-modal.htm b/themes/demo/partials/site/modals/ajax-modal.htm new file mode 100644 index 0000000..d9dda83 --- /dev/null +++ b/themes/demo/partials/site/modals/ajax-modal.htm @@ -0,0 +1,9 @@ + diff --git a/themes/demo/partials/site/modals/alert-dialog.htm b/themes/demo/partials/site/modals/alert-dialog.htm new file mode 100644 index 0000000..6c827a1 --- /dev/null +++ b/themes/demo/partials/site/modals/alert-dialog.htm @@ -0,0 +1,19 @@ + diff --git a/themes/demo/partials/site/modals/password-dialog.htm b/themes/demo/partials/site/modals/password-dialog.htm new file mode 100644 index 0000000..64b551b --- /dev/null +++ b/themes/demo/partials/site/modals/password-dialog.htm @@ -0,0 +1,29 @@ + diff --git a/themes/demo/partials/site/nav-links.htm b/themes/demo/partials/site/nav-links.htm new file mode 100644 index 0000000..dba9668 --- /dev/null +++ b/themes/demo/partials/site/nav-links.htm @@ -0,0 +1,40 @@ +[backendLink] +[sitePicker] +== +{% set activeNavLink = activeNavLink|default(this.page.id) %} + + + + + + +{% if sitePicker.isEnabled %} + +{% elseif backendUrl %} + +{% endif %} diff --git a/themes/demo/partials/site/nav-mobile.htm b/themes/demo/partials/site/nav-mobile.htm new file mode 100644 index 0000000..1237e78 --- /dev/null +++ b/themes/demo/partials/site/nav-mobile.htm @@ -0,0 +1,12 @@ + diff --git a/themes/demo/partials/wiki/article-toc.htm b/themes/demo/partials/wiki/article-toc.htm new file mode 100644 index 0000000..721c6f4 --- /dev/null +++ b/themes/demo/partials/wiki/article-toc.htm @@ -0,0 +1,19 @@ +{% macro render_toc(articles) %} + {% for article in articles %} +
  • + {{ article.title }} + - {{ article.summary_text }} +
      + {% if article.children %} + {{ _self.render_toc(article.children) }} + {% endif %} +
    +
  • + {% endfor %} +{% endmacro %} + +{% import _self as nav %} + +
      + {{ nav.render_toc(articles) }} +
    diff --git a/themes/demo/partials/wiki/breadcrumb.htm b/themes/demo/partials/wiki/breadcrumb.htm new file mode 100644 index 0000000..94619ec --- /dev/null +++ b/themes/demo/partials/wiki/breadcrumb.htm @@ -0,0 +1,19 @@ +{% macro render_breadcrumb(article) %} + {% if article.parent %} + {{ _self.render_breadcrumb(article.parent) }} + + {% endif %} +{% endmacro %} + +{% import _self as nav %} + + diff --git a/themes/demo/partials/wiki/continue.htm b/themes/demo/partials/wiki/continue.htm new file mode 100644 index 0000000..0b8c516 --- /dev/null +++ b/themes/demo/partials/wiki/continue.htm @@ -0,0 +1,30 @@ +{% set parent = article.parent %} + +
      + {% if parent %} + {% set prevLink = null %} + {% set nextLink = null %} + {% for sibling in parent.children %} + {% if nextLink == true %} +
    • + Next: {{ sibling.title }} +
    • + {% set nextLink = null %} + {% endif %} + + {% if sibling.id == article.id %} + {% if prevLink %} +
    • + Previous: {{ prevLink.title }} +
    • + {% endif %} + {% set nextLink = true %} + {% endif %} + {% set prevLink = sibling %} + {% endfor %} + +
    • + Return to {{ parent.title }} +
    • + {% endif %} +
    diff --git a/themes/demo/partials/wiki/sidebar-toc.htm b/themes/demo/partials/wiki/sidebar-toc.htm new file mode 100644 index 0000000..2145cf9 --- /dev/null +++ b/themes/demo/partials/wiki/sidebar-toc.htm @@ -0,0 +1,23 @@ +{% macro render_toc(articles, activeSlug) %} + {% for article in articles %} + {% set hasChildren = article.children is not empty %} + {% set isActive = article.fullslug == activeSlug %} +
  • + + {{ article.title }} + {% if hasChildren %} +
      + {% if article.children %} + {{ _self.render_toc(article.children, activeSlug) }} + {% endif %} +
    + {% endif %} +
  • + {% endfor %} +{% endmacro %} + +{% import _self as nav %} + +
      + {{ nav.render_toc(articles, activeSlug|default(this.param.fullslug|default(''))) }} +
    diff --git a/themes/demo/partials/wiki/sidebar.htm b/themes/demo/partials/wiki/sidebar.htm new file mode 100644 index 0000000..8a64a25 --- /dev/null +++ b/themes/demo/partials/wiki/sidebar.htm @@ -0,0 +1,20 @@ +## + +[collection wiki] +handle = "Page\Article" +== +{% set articles = wiki.getNested() %} + + + + diff --git a/themes/demo/seeds/blueprints/blog/author.yaml b/themes/demo/seeds/blueprints/blog/author.yaml new file mode 100644 index 0000000..92050c2 --- /dev/null +++ b/themes/demo/seeds/blueprints/blog/author.yaml @@ -0,0 +1,34 @@ +uuid: 6947ff28-b660-47d7-9240-24ca6d58aeae +handle: Blog\Author +type: entry +name: Author +drafts: false + +customMessages: + buttonCreate: New Author + +navigation: + label: Authors + parent: Blog\Post + icon: octo-icon-user + order: 200 + +fields: + avatar: + label: Avatar + type: mediafinder + mode: image + + role: + label: Role + type: text + + about: + label: About + type: textarea + + _social_links: + type: mixin + label: Social Links + source: Fields\SocialLinks + tab: Social diff --git a/themes/demo/seeds/blueprints/blog/category.yaml b/themes/demo/seeds/blueprints/blog/category.yaml new file mode 100644 index 0000000..1683327 --- /dev/null +++ b/themes/demo/seeds/blueprints/blog/category.yaml @@ -0,0 +1,21 @@ +uuid: b022a74b-15e6-4c6b-9eb9-17efc5103543 +type: structure +handle: Blog\Category +name: Category +drafts: false + +customMessages: + buttonCreate: New Category + +structure: + maxDepth: 1 + +navigation: + label: Categories + parent: Blog\Post + icon: octo-icon-list-ul + order: 150 + +fields: + description: + label: Description diff --git a/themes/demo/seeds/blueprints/blog/config.yaml b/themes/demo/seeds/blueprints/blog/config.yaml new file mode 100644 index 0000000..48a3f1d --- /dev/null +++ b/themes/demo/seeds/blueprints/blog/config.yaml @@ -0,0 +1,36 @@ +uuid: 3328c303-7989-462e-b866-27e7037ba275 +handle: Blog\Config +type: global +name: Blog Settings + +customMessages: + titleUpdateForm: Update Blog Settings + +navigation: + label: Settings + parent: Blog\Post + icon: octo-icon-cog + order: 200 + +fields: + blog_name: + label: Blog Name + tab: General + placeholder: Latest News + + about_this_blog: + label: About This Blog + comment: Customize this section to tell your visitors a little bit about your publication, writers, content, or something else entirely. Totally up to you. + type: textarea + size: small + tab: General + + _section1: + label: Social Links + type: section + tab: General + + _social_links: + type: mixin + source: Fields\SocialLinks + tab: General diff --git a/themes/demo/seeds/blueprints/blog/post.yaml b/themes/demo/seeds/blueprints/blog/post.yaml new file mode 100644 index 0000000..f7fb06b --- /dev/null +++ b/themes/demo/seeds/blueprints/blog/post.yaml @@ -0,0 +1,46 @@ +uuid: edcd102e-0525-4e4d-b07e-633ae6c18db6 +handle: Blog\Post +type: stream +name: Post +drafts: true + +customMessages: + buttonCreate: New Post + +primaryNavigation: + label: Blog + icon: octo-icon-file + iconSvg: modules/tailor/assets/images/blog-icon.svg + order: 95 + +navigation: + label: Posts + icon: octo-icon-pencil + order: 100 + +groups: + regular_post: + name: Regular Post + fields: + content: + tab: Edit + label: Content + type: richeditor + span: adaptive + + _blog_post_content: + type: mixin + source: Fields\BlogContent + + markdown_post: + name: Markdown Post + fields: + content: + tab: Edit + label: Content + type: markdown + span: adaptive + + _blog_post_content: + type: mixin + source: Fields\BlogContent diff --git a/themes/demo/seeds/blueprints/fields/_blocks.yaml b/themes/demo/seeds/blueprints/fields/_blocks.yaml new file mode 100644 index 0000000..a74750d --- /dev/null +++ b/themes/demo/seeds/blueprints/fields/_blocks.yaml @@ -0,0 +1,57 @@ +uuid: 7b193500-ac0b-481f-a79c-2a362646364d +handle: Fields\Blocks +type: mixin +name: Page Blocks + +fields: + blocks: + label: Blocks + type: repeater + displayMode: builder + span: adaptive + tab: Blocks + groups: + image_slice: + name: Image Slice + description: A large image with an angled slice. + icon: octo-icon-picture + fields: + _mixin: + type: mixin + source: Blocks\ImageSlice + + paragraph_block: + name: Paragraph Block + description: Simple paragraph with image + icon: octo-icon-text-h1 + fields: + _mixin: + type: mixin + source: Blocks\ParagraphBlock + + detailed_block: + name: Detailed Block + description: Detailed paragraph with image and list + icon: octo-icon-diamond + fields: + _mixin: + type: mixin + source: Blocks\DetailedBlock + + scoreboard_metrics: + name: Scoreboard Metrics + description: Show some impressive metrics about the business. + icon: icon-quote-right + fields: + _mixin: + type: mixin + source: Blocks\ScoreboardMetrics + + team_leaders: + name: Team Leaders + description: Display the team members. + icon: octo-icon-comment + fields: + _mixin: + type: mixin + source: Blocks\TeamLeaders diff --git a/themes/demo/seeds/blueprints/fields/_blog_content.yaml b/themes/demo/seeds/blueprints/fields/_blog_content.yaml new file mode 100644 index 0000000..cb6aa43 --- /dev/null +++ b/themes/demo/seeds/blueprints/fields/_blog_content.yaml @@ -0,0 +1,47 @@ +uuid: 4d7fd1e4-85f2-48f5-947e-92819fc8664b +handle: Fields\BlogContent +type: mixin +name: Blog Post Content + +fields: + banner: + tab: Manage + label: Banner + type: fileupload + mode: image + maxFiles: 1 + + author: + tab: Manage + label: Author + commentAbove: 'Select the author for this blog post' + type: entries + maxItems: 1 + source: Blog\Author + + categories: + tab: Manage + label: Categories + commentAbove: 'Select categories the blog post belongs to' + type: entries + source: Blog\Category + + featured_text: + tab: Featured + label: Featured Text + type: textarea + size: small + + gallery: + label: Gallery + type: fileupload + mode: image + span: adaptive + tab: Gallery + + gallery_media: + label: Media + type: mediafinder + mode: image + span: adaptive + tab: Media diff --git a/themes/demo/seeds/blueprints/fields/_menu_item.yaml b/themes/demo/seeds/blueprints/fields/_menu_item.yaml new file mode 100644 index 0000000..c6de71b --- /dev/null +++ b/themes/demo/seeds/blueprints/fields/_menu_item.yaml @@ -0,0 +1,89 @@ +uuid: 936f26c0-b816-4c78-afaa-0b6977e80213 +handle: Fields\MenuItem +type: mixin +name: Menu Item + +fields: + is_hidden: + label: Hidden + comment: Hide this menu item from appearing on the website. + type: checkbox + tab: Display + + code: + label: Code + comment: Enter the menu item code if you want to access it with the API. + tab: Attributes + span: auto + type: text + preset: + field: title + type: slug + + css_class: + label: CSS Class + comment: Enter a CSS class name to give this menu item a custom appearance. + tab: Attributes + span: auto + type: text + + is_external: + label: External Link + comment: Open links for this menu item in a new window. + tab: Attributes + type: checkbox + + priority: + label: Priority + commentAbove: The priority of this URL relative to other URLs on your site. + tab: Sitemap + type: radio + column: false + inlineOptions: true + options: + '0.1': '0.1' + '0.2': '0.2' + '0.3': '0.3' + '0.4': '0.4' + '0.5': '0.5' + '0.6': '0.6' + '0.7': '0.7' + '0.8': '0.8' + '0.9': '0.9' + '1.0': '1.0' + + changefreq: + commentAbove: How frequently the page is likely to change. + label: Change Frequency + tab: Sitemap + type: radio + column: false + inlineOptions: true + options: + always: Always + hourly: Hourly + daily: Daily + weekly: Weekly + monthly: Monthly + yearly: Yearly + never: Never + + nesting: + label: Include nested items + shortLabel: Nesting + comment: Nested items could be generated dynamically by supported page references. + type: checkbox + tab: Reference + column: false + + replace: + label: Replace this item with its generated children + comment: Use this checkbox to push generated menu items to the same level with this item. This item itself will be hidden. + type: checkbox + tab: Reference + column: false + scope: false + trigger: + action: disable|empty + field: nesting + condition: unchecked diff --git a/themes/demo/seeds/blueprints/fields/_social_links.yaml b/themes/demo/seeds/blueprints/fields/_social_links.yaml new file mode 100644 index 0000000..fa766d3 --- /dev/null +++ b/themes/demo/seeds/blueprints/fields/_social_links.yaml @@ -0,0 +1,27 @@ +uuid: ae2d2c25-3a0e-4765-8b36-d1666fc0e31f +name: Social Links +type: mixin +handle: Fields\SocialLinks + +fields: + social_links: + type: repeater + prompt: Add Link + form: + fields: + platform: + span: auto + label: Platform + type: dropdown + options: + facebook: Facebook + linkedin: LinkedIn + dribbble: Dribbble + twitter: Twitter + youtube: YouTube + + url: + span: auto + label: Social Link + type: text + placeholder: "https://..." diff --git a/themes/demo/seeds/blueprints/fields/blocks/_detailed-block.yaml b/themes/demo/seeds/blueprints/fields/blocks/_detailed-block.yaml new file mode 100644 index 0000000..c486018 --- /dev/null +++ b/themes/demo/seeds/blueprints/fields/blocks/_detailed-block.yaml @@ -0,0 +1,39 @@ +uuid: da034c4f-0e24-4906-94b9-66b26c0549c9 +name: Detailed Block +type: mixin +handle: Blocks\DetailedBlock + +fields: + title: + label: Title + type: text + + content: + label: Description + type: richeditor + size: small + + list_items: + label: List Items + type: datatable + btnAddRowLabel: Add Item + btnDeleteRowLabel: Delete Item + columns: + text: + type: string + title: Text + + button_text: + label: Button Text + span: auto + placeholder: Main call to action + + button_url: + label: Button URL + span: auto + + image: + label: Image + type: mediafinder + mode: image + maxItems: 1 diff --git a/themes/demo/seeds/blueprints/fields/blocks/_image-slice.yaml b/themes/demo/seeds/blueprints/fields/blocks/_image-slice.yaml new file mode 100644 index 0000000..7d0beed --- /dev/null +++ b/themes/demo/seeds/blueprints/fields/blocks/_image-slice.yaml @@ -0,0 +1,11 @@ +uuid: 21aad99b-d3c6-4f5e-b271-15471c81e11b +name: Image Slice +type: mixin +handle: Blocks\ImageSlice + +fields: + image: + label: Image + type: mediafinder + mode: image + maxItems: 1 diff --git a/themes/demo/seeds/blueprints/fields/blocks/_paragraph-block.yaml b/themes/demo/seeds/blueprints/fields/blocks/_paragraph-block.yaml new file mode 100644 index 0000000..87ab650 --- /dev/null +++ b/themes/demo/seeds/blueprints/fields/blocks/_paragraph-block.yaml @@ -0,0 +1,20 @@ +uuid: 015fde4b-23d8-4ba3-8e78-9c6ebfb5fcf7 +name: Paragraph Block +type: mixin +handle: Blocks\ParagraphBlock + +fields: + title: + label: Title + type: text + + content: + label: Description + type: richeditor + size: small + + image: + label: Image + type: mediafinder + mode: image + maxItems: 1 diff --git a/themes/demo/seeds/blueprints/fields/blocks/_scoreboard-metrics.yaml b/themes/demo/seeds/blueprints/fields/blocks/_scoreboard-metrics.yaml new file mode 100644 index 0000000..00163b6 --- /dev/null +++ b/themes/demo/seeds/blueprints/fields/blocks/_scoreboard-metrics.yaml @@ -0,0 +1,32 @@ +uuid: 55615b16-120f-4be9-9429-6ae6dabc523c +name: Scoreboard Metrics +type: mixin +handle: Blocks\ScoreboardMetrics + +fields: + metrics: + label: Metrics + type: repeater + form: + fields: + number: + label: Number + type: number + span: row + spanClass: col-md-3 + + description: + label: Description + type: text + span: row + spanClass: col-md-9 + + icon: + label: Icon + type: radio + cssClass: inline-options + options: + notepad: Notepad + shield: Shield + basket: Basket + briefcase: Briefcase diff --git a/themes/demo/seeds/blueprints/fields/blocks/_team-leaders.yaml b/themes/demo/seeds/blueprints/fields/blocks/_team-leaders.yaml new file mode 100644 index 0000000..5d27c42 --- /dev/null +++ b/themes/demo/seeds/blueprints/fields/blocks/_team-leaders.yaml @@ -0,0 +1,35 @@ +uuid: 8c4041cf-f16d-46f8-86be-9372a266ae6d +name: Team Leaders +type: mixin +handle: Blocks\TeamLeaders + +fields: + members: + label: Members + type: repeater + itemsExpanded: false + form: + fields: + title: + label: Title + span: left + + role: + label: Role + span: right + + description: + label: Description + type: textarea + size: tiny + + avatar: + label: Image + type: mediafinder + mode: image + maxItems: 1 + + _social_links: + label: Social Links + type: mixin + source: Fields\SocialLinks diff --git a/themes/demo/seeds/blueprints/pages/about.yaml b/themes/demo/seeds/blueprints/pages/about.yaml new file mode 100644 index 0000000..139296e --- /dev/null +++ b/themes/demo/seeds/blueprints/pages/about.yaml @@ -0,0 +1,14 @@ +uuid: a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1 +handle: Page\About +type: single +name: About Page +drafts: true + +navigation: + icon: icon-rocket + order: 200 + +fields: + block_builder: + type: mixin + source: Fields\Blocks diff --git a/themes/demo/seeds/blueprints/pages/article.yaml b/themes/demo/seeds/blueprints/pages/article.yaml new file mode 100644 index 0000000..1010730 --- /dev/null +++ b/themes/demo/seeds/blueprints/pages/article.yaml @@ -0,0 +1,58 @@ +uuid: 339b11b7-69ad-43c4-9be1-6953e7738827 +handle: Page\Article +type: structure +name: Article +drafts: true + +customMessages: + buttonCreate: New Article + +structure: + maxDepth: 3 + +navigation: + label: All Articles + icon: icon-wikipedia-w + order: 100 + +fields: + content: + label: Content + tab: Edit + type: richeditor + span: adaptive + + banner: + label: Banner + type: fileupload + mode: image + maxFiles: 1 + + show_in_toc: + label: Show in TOC + comment: Include this article in the table of contents + type: checkbox + + summary_text: + label: Summary Text + type: textarea + size: small + + gallery: + label: Gallery + type: fileupload + mode: image + + external_links: + label: External Links + tab: Links + type: repeater + form: + fields: + link_text: + label: Link Text + span: auto + + link_url: + label: Link URL + span: auto diff --git a/themes/demo/seeds/blueprints/site/menus.yaml b/themes/demo/seeds/blueprints/site/menus.yaml new file mode 100644 index 0000000..52f784e --- /dev/null +++ b/themes/demo/seeds/blueprints/site/menus.yaml @@ -0,0 +1,52 @@ +uuid: 85e471d2-09b9-4f3d-a63b-1ae9d92d2879 +handle: Site\Menus +type: entry +name: Menu +drafts: false +pagefinder: false + +customMessages: + buttonCreate: New Menu + +navigation: + label: Menus + icon: icon-sitemap + order: 300 + +fields: + slug: + label: Code + column: + label: Code + invisible: false + validation: + - required + items: + label: Menu Item + type: nesteditems + span: adaptive + maxDepth: 0 + customMessages: + buttonCreate: Add Item + titleCreateForm: Create Item + titleUpdateForm: Edit Item + form: + fields: + title: + label: Title + tab: Reference + default: New Menu Item + span: full + type: text + validation: + - required + + reference: + label: Reference + type: pagefinder + tab: Reference + tabs: + fields: + _menu_item: + type: mixin + source: Fields\MenuItem diff --git a/themes/demo/seeds/data.yaml b/themes/demo/seeds/data.yaml new file mode 100644 index 0000000..eb5653e --- /dev/null +++ b/themes/demo/seeds/data.yaml @@ -0,0 +1,35 @@ +- + name: Blog Category Data + class: Tailor\Models\EntryRecordImport + file: seeds/data/blog/category.json + attributes: + file_format: json + blueprint_uuid: b022a74b-15e6-4c6b-9eb9-17efc5103543 +- + name: Blog Author Data + class: Tailor\Models\EntryRecordImport + file: seeds/data/blog/author.json + attributes: + file_format: json + blueprint_uuid: 6947ff28-b660-47d7-9240-24ca6d58aeae +- + name: Blog Post Data + class: Tailor\Models\EntryRecordImport + file: seeds/data/blog/post.json + attributes: + file_format: json + blueprint_uuid: edcd102e-0525-4e4d-b07e-633ae6c18db6 +- + name: Pages Data + class: Tailor\Models\EntryRecordImport + file: seeds/data/pages/article.json + attributes: + file_format: json + blueprint_uuid: 339b11b7-69ad-43c4-9be1-6953e7738827 +- + name: About Page Data + class: Tailor\Models\EntryRecordImport + file: seeds/data/pages/about.json + attributes: + file_format: json + blueprint_uuid: a63fabaf-7c0b-4c74-b36f-7abf1a3ad1c1 diff --git a/themes/demo/seeds/data/blog/author.json b/themes/demo/seeds/data/blog/author.json new file mode 100644 index 0000000..248ab42 --- /dev/null +++ b/themes/demo/seeds/data/blog/author.json @@ -0,0 +1,32 @@ +[ + { + "id": 1, + "title": "John Smith", + "slug": "john-smith", + "is_enabled": 1, + "role": "Manager", + "about": "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "social_links": [ + { + "platform": "twitter", + "url": "https:\/\/twitter.com\/octobercms", + "sort_order": 1 + }, + { + "platform": "youtube", + "url": "https:\/\/www.youtube.com\/c\/OctoberCMSOfficial", + "sort_order": 2 + }, + { + "platform": "facebook", + "url": "https:\/\/facebook.com\/octobercms", + "sort_order": 3 + }, + { + "platform": "linkedin", + "url": "https:\/\/www.linkedin.com\/company\/october-cms\/", + "sort_order": 4 + } + ] + } +] diff --git a/themes/demo/seeds/data/blog/category.json b/themes/demo/seeds/data/blog/category.json new file mode 100644 index 0000000..267a49c --- /dev/null +++ b/themes/demo/seeds/data/blog/category.json @@ -0,0 +1,37 @@ +[ + { + "id": 1, + "title": "Announcements", + "slug": "announcements", + "is_enabled": 1, + "description": "At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt molliti" + }, + { + "id": 2, + "title": "News", + "slug": "news", + "is_enabled": 1, + "description": "Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt." + }, + { + "id": 3, + "title": "Startup Ideas", + "slug": "startup-ideas", + "is_enabled": 1, + "description": "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proide" + }, + { + "id": 4, + "title": "Updates", + "slug": "updates", + "is_enabled": 1, + "description": "At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt molliti" + }, + { + "id": 5, + "title": "Automation", + "slug": "automation", + "is_enabled": 1, + "description": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo." + } +] diff --git a/themes/demo/seeds/data/blog/post.json b/themes/demo/seeds/data/blog/post.json new file mode 100644 index 0000000..76a5d4b --- /dev/null +++ b/themes/demo/seeds/data/blog/post.json @@ -0,0 +1,28 @@ +[ + { + "id": 1, + "title": "Consectetur adipiscing elit", + "slug": "consectetur-adipiscing-elit", + "is_enabled": 1, + "content_group": "regular_post", + "content": "

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<\/p>

    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?<\/p>", + "author": 1, + "categories": [ + 1 + ], + "featured_text": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo." + }, + { + "id": 2, + "title": "Nemo enim ipsam", + "slug": "nemo-enim-ipsam", + "is_enabled": 1, + "content_group": "regular_post", + "content": "

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<\/p>

    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?<\/p>", + "author": 1, + "categories": [ + 2 + ], + "featured_text": "At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga." + } +] diff --git a/themes/demo/seeds/data/pages/about.json b/themes/demo/seeds/data/pages/about.json new file mode 100644 index 0000000..40b12ed --- /dev/null +++ b/themes/demo/seeds/data/pages/about.json @@ -0,0 +1,218 @@ +[ + { + "id": 1, + "title": "About Us", + "slug": "about-us", + "is_enabled": 1, + "content_group": null, + "blocks": [ + { + "image": "", + "content_group": "image_slice", + "sort_order": 1 + }, + { + "title": "Outstanding performance", + "content": "

    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.<\/p>", + "image": "", + "content_group": "paragraph_block", + "sort_order": 2 + }, + { + "title": "Why work with us", + "content": "

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<\/p>", + "list_items": [ + { + "text": "Doloremque" + }, + { + "text": "Beatae vitae" + }, + { + "text": "Totam rem aperiam" + } + ], + "button_text": "Learn more about our process", + "button_url": "https:\/\/octobercms.com\/features", + "image": "", + "content_group": "detailed_block", + "sort_order": 3 + }, + { + "content_group": "scoreboard_metrics", + "sort_order": 4, + "metrics": [ + { + "number": 3912, + "description": "Sed ut perspiciatis", + "icon": "notepad", + "content_group": null, + "sort_order": 1 + }, + { + "number": 223, + "description": "Nemo enim ipsam", + "icon": "shield", + "content_group": null, + "sort_order": 2 + }, + { + "number": 863, + "description": "Nam libero tempore", + "icon": "basket", + "content_group": null, + "sort_order": 3 + }, + { + "number": 865, + "description": "Et harum quidem rerum", + "icon": "briefcase", + "content_group": null, + "sort_order": 4 + } + ] + }, + { + "content_group": "team_leaders", + "sort_order": 5, + "members": [ + { + "title": "Andy Anderson", + "role": "Sales Manager", + "description": "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam.", + "avatar": "", + "content_group": null, + "sort_order": 1, + "social_links": [ + { + "platform": "twitter", + "url": "https:\/\/twitter.com\/octobercms", + "sort_order": 1 + }, + { + "platform": "linkedin", + "url": "https:\/\/www.linkedin.com\/company\/october-cms\/", + "sort_order": 2 + }, + { + "platform": "facebook", + "url": "https:\/\/facebook.com\/octobercms", + "sort_order": 3 + } + ] + }, + { + "title": "Bob Harris", + "role": "Product Designer", + "description": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque.", + "avatar": "", + "content_group": null, + "sort_order": 2, + "social_links": [ + { + "platform": "twitter", + "url": "https:\/\/twitter.com\/octobercms", + "sort_order": 1 + }, + { + "platform": "youtube", + "url": "https:\/\/www.youtube.com\/c\/OctoberCMSOfficial", + "sort_order": 2 + }, + { + "platform": "dribbble", + "url": "https:\/\/www.dribbble.com", + "sort_order": 3 + }, + { + "platform": "facebook", + "url": "https:\/\/facebook.com\/octobercms", + "sort_order": 4 + } + ] + }, + { + "title": "Ann Lewis", + "role": "Marketing Manager", + "description": "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla.", + "avatar": "", + "content_group": null, + "sort_order": 3, + "social_links": [ + { + "platform": "twitter", + "url": "https:\/\/twitter.com\/octobercms", + "sort_order": 1 + }, + { + "platform": "linkedin", + "url": "https:\/\/www.linkedin.com\/company\/october-cms\/", + "sort_order": 2 + }, + { + "platform": "facebook", + "url": "https:\/\/facebook.com\/octobercms", + "sort_order": 3 + } + ] + }, + { + "title": "Christina Thompson", + "role": "System Analyst", + "description": "Et harum quidem rerum facilis est et expedita distinctio.", + "avatar": "", + "content_group": null, + "sort_order": 4, + "social_links": [ + { + "platform": "twitter", + "url": "https:\/\/twitter.com\/octobercms", + "sort_order": 1 + }, + { + "platform": "youtube", + "url": "https:\/\/www.youtube.com\/c\/OctoberCMSOfficial", + "sort_order": 2 + }, + { + "platform": "dribbble", + "url": "https:\/\/www.dribbble.com", + "sort_order": 3 + }, + { + "platform": "facebook", + "url": "https:\/\/facebook.com\/octobercms", + "sort_order": 4 + } + ] + }, + { + "title": "John Smith", + "role": "President", + "description": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.", + "avatar": "", + "content_group": null, + "sort_order": 5, + "social_links": [ + { + "platform": "dribbble", + "url": "https:\/\/www.dribbble.com", + "sort_order": 1 + }, + { + "platform": "linkedin", + "url": "https:\/\/www.linkedin.com\/company\/october-cms\/", + "sort_order": 2 + }, + { + "platform": "youtube", + "url": "https:\/\/www.youtube.com\/c\/OctoberCMSOfficial", + "sort_order": 3 + } + ] + } + ] + } + ] + } +] diff --git a/themes/demo/seeds/data/pages/article.json b/themes/demo/seeds/data/pages/article.json new file mode 100644 index 0000000..b8a9990 --- /dev/null +++ b/themes/demo/seeds/data/pages/article.json @@ -0,0 +1,91 @@ +[ + { + "id": 1, + "title": "Our Locations", + "content": "

    The term location generally implies a higher degree of certainty than place, the latter often indicating an entity with an ambiguous boundary, relying more on human or social attributes of place identity and sense of place than on geometry. An absolute location can be designated using a specific pairing of latitude and longitude in a Cartesian coordinate grid (for example, a spherical coordinate system or an ellipsoid-based system such as the World Geodetic System) or similar methods. For instance, the position of Lake Maracaibo in Venezuela can be expressed using the coordinate system as the location 9.80\u00b0N (latitude), 71.56\u00b0W (longitude).<\/p>", + "slug": "our-locations", + "fullslug": "our-locations", + "is_enabled": 1, + "content_group": null, + "parent_id": null, + "banner": null, + "show_in_toc": 1, + "summary_text": "In geography, location or place are used to denote a region (point, line, or area) on Earth's surface or elsewhere.", + "external_links": [] + }, + { + "id": 2, + "title": "Canberra", + "content": "

    Unusual among Australian cities, it is an entirely planned city. The city is located at the northern end of the Australian Capital Territory[11] at the northern tip of the Australian Alps, the country's highest mountain range. As of June 2020, Canberra's estimated population was 431,380.[12]<\/p>

    The area chosen for the capital had been inhabited by Indigenous Australians for up to 21,000 years,[13] with the principal group being the Ngunnawal people. European settlement commenced in the first half of the 19th century, as evidenced by surviving landmarks such as St John's Anglican Church and Blundells Cottage. On 1 January 1901, federation of the colonies of Australia was achieved. Following a long dispute over whether Sydney or Melbourne should be the national capital,[14] a compromise was reached: the new capital would be built in New South Wales, so long as it was at least 100 miles (160 km) from Sydney. The capital city was founded and formally named as Canberra in 1913. A blueprint by American architects Walter Burley Griffin and Marion Mahony Griffin was selected after an international design contest, and construction commenced in 1913.[15] The Griffins' plan featured geometric motifs and was centred on axes aligned with significant topographical landmarks such as Black Mountain, Mount Ainslie, Capital Hill and City Hill. Canberra's mountainous location makes it the only mainland Australian city where snow-capped mountains can be seen in winter; although snow in the city itself is rare.<\/p>

    As the seat of the Government of Australia, Canberra is home to many important institutions of the federal government, national monuments and museums. This includes Parliament House, Government House, the High Court and the headquarters of numerous government agencies. It is the location of many social and cultural institutions of national significance such as the Australian War Memorial, the Australian National University, the Royal Australian Mint, the Australian Institute of Sport, the National Gallery, the National Museum and the National Library. The city is home to many important institutions of the Australian Defence Force including the Royal Military College Duntroon and the Australian Defence Force Academy. It hosts all foreign embassies in Australia as well as regional headquarters of many international organisations, not-for-profit groups, lobbying groups and professional associations.<\/p>", + "slug": "canberra", + "fullslug": "our-locations/canberra", + "is_enabled": 1, + "content_group": null, + "parent_id": 1, + "banner": null, + "show_in_toc": 1, + "summary_text": "Canberra (\/\u02c8k\u00e6nb\u0259r\u0259\/ KAN-b\u0259-r\u0259) is the capital city of Australia. Founded following the federation of the colonies of Australia as the seat of government for the new nation, it is Australia's largest inland city and the eighth-largest city overall.", + "external_links": [ + { + "link_text": "Canberra travel guide from Wikivoyage", + "link_url": "https:\/\/en.wikivoyage.org\/wiki\/Canberra", + "content_group": null, + "sort_order": 1 + }, + { + "link_text": "Official Tourism Website", + "link_url": "https:\/\/visitcanberra.com.au\/", + "content_group": null, + "sort_order": 2 + }, + { + "link_text": "Canberra 100 \u2013 Celebrating Canberra's 100th anniversary", + "link_url": "https:\/\/www.canberra100.com.au\/", + "content_group": null, + "sort_order": 3 + } + ] + }, + { + "id": 3, + "title": "Sydney", + "content": "

    Located on Australia's east coast, the metropolis surrounds Port Jackson and extends about 70 km (43.5 mi) on its periphery towards the Blue Mountains to the west, Hawkesbury to the north, the Royal National Park to the south and Macarthur to the south-west. Sydney is made up of 658 suburbs, spread across 33 local government areas. Residents of the city are known as \"Sydneysiders\". As of June 2020, Sydney's estimated metropolitan population was 5,361,466, meaning the city is home to approximately 66% of the state's population. Nicknames of the city include the 'Emerald City' and the 'Harbour City'.<\/p>

    Indigenous Australians have inhabited the Sydney area for at least 30,000 years, and thousands of Aboriginal engravings remain throughout the region. During his first Pacific voyage in 1770, Lieutenant James Cook and his crew became the first Europeans to chart the eastern coast of Australia, making landfall at Botany Bay. In 1788, the First Fleet of convicts, led by Arthur Phillip, founded Sydney as a British penal colony, the first European settlement in Australia. After World War II, it experienced mass migration and became one of the most multicultural cities in the world. Furthermore, 45.4% of the population reported having been born overseas, and the city has the third-largest foreign-born population of any city in the world after London and New York City.<\/p>

    Despite being one of the most expensive cities in the world, Sydney frequently ranks in the top ten most liveable cities in the world. It is classified as an Alpha global city by the Globalization and World Cities Research Network, indicating its influence in the region and throughout the world. Ranked eleventh in the world for economic opportunity, Sydney has an advanced market economy with strengths in finance, manufacturing and tourism. Established in 1850, the University of Sydney was Australia's first university and is regarded as one of the world's leading universities.<\/p>", + "slug": "sydney", + "fullslug": "our-locations/sydney", + "is_enabled": 1, + "content_group": null, + "parent_id": 1, + "banner": null, + "show_in_toc": 1, + "summary_text": "Sydney is the capital city of the state of New South Wales, and the most populous city in Australia and Oceania.", + "external_links": [] + }, + { + "id": 4, + "title": "Vancouver", + "content": "

    As the most populous city in the province, the 2021 census recorded 662,248 people in the city, up from 631,486 in 2016. The Greater Vancouver area had a population of 2,642,825 in 2021, making it the third-largest metropolitan area in Canada. Vancouver has the highest population density in Canada, with over 5,400 people per square kilometre. Vancouver is one of the most ethnically and linguistically diverse cities in Canada: 52 percent of its residents are not native English speakers, 48.9 percent are native speakers of neither English nor French, and 50.6 percent of residents belong to visible minority groups.<\/p>

    Vancouver is one of the most livable cities in Canada and in the world. In terms of housing affordability, Vancouver is also one of the most expensive cities in Canada and in the world. Vancouver plans to become the greenest city in the world. Vancouverism is the city's urban planning design philosophy.<\/p>

    Indigenous settlement of Vancouver began more than 10,000 years ago, and the city is on the traditional and unceded territories of the Squamish, Musqueam, and Tsleil-Waututh (Burrard) peoples. The beginnings of the modern city, which was originally named Gastown, grew around the site of a makeshift tavern on the western edges of Hastings Mill that was built on July 1, 1867, and owned by proprietor Gassy Jack. The original site is marked by the Gastown steam clock. Gastown then formally registered as a townsite dubbed Granville, Burrard Inlet. The city was renamed \"Vancouver\" in 1886, through a deal with the Canadian Pacific Railway (CPR). The Canadian Pacific transcontinental railway was extended to the city by 1887. The city's large natural seaport on the Pacific Ocean became a vital link in the trade between Asia-Pacific, East Asia, Europe, and Eastern Canada.<\/p>", + "slug": "vancouver", + "fullslug": "our-locations/vancouver", + "is_enabled": 1, + "content_group": null, + "parent_id": 1, + "banner": null, + "show_in_toc": 1, + "summary_text": "Vancouver is a major city in western Canada, located in the Lower Mainland region of British Columbia.", + "external_links": [] + }, + { + "id": 5, + "title": "Knowledge Base", + "content": "

    Knowledge Base<\/p>", + "slug": "knowledge-base", + "fullslug": "our-locations/knowledge-base", + "is_enabled": 1, + "content_group": null, + "parent_id": null, + "banner": null, + "show_in_toc": 1, + "summary_text": "", + "external_links": [] + } +] \ No newline at end of file diff --git a/themes/demo/theme.yaml b/themes/demo/theme.yaml new file mode 100644 index 0000000..70e2ef0 --- /dev/null +++ b/themes/demo/theme.yaml @@ -0,0 +1,5 @@ +name: Demo +description: 'Demo October CMS theme. Demonstrates the basic concepts of the front-end theming: layouts, pages, partials, components, content blocks, AJAX framework.' +author: October CMS +homepage: 'http://octobercms.com' +code: '' diff --git a/themes/demo/webpack.config.js b/themes/demo/webpack.config.js new file mode 100644 index 0000000..d1163ca --- /dev/null +++ b/themes/demo/webpack.config.js @@ -0,0 +1,16 @@ +const webpack = require('webpack'); + +module.exports = { + plugins: [ + new webpack.ProvidePlugin({ + $: 'jquery', + jQuery: 'jquery', + 'window.jQuery': 'jquery', + 'window.$': 'jquery', + }), + ], + externals: { + // Use external version of jQuery + jquery: 'jQuery' + }, +}; diff --git a/themes/demo/webpack.mix.js b/themes/demo/webpack.mix.js new file mode 100644 index 0000000..f50e69f --- /dev/null +++ b/themes/demo/webpack.mix.js @@ -0,0 +1,43 @@ +const mix = require('laravel-mix'); +const webpackConfig = require('./webpack.config'); + +/* + |-------------------------------------------------------------------------- + | Mix Asset Management + |-------------------------------------------------------------------------- + | + | Mix provides a clean, fluent API for defining some Webpack build steps + | for your theme assets. By default, we are compiling the CSS + | file for the application as well as bundling up all the JS files. + | + */ + +mix.webpackConfig(webpackConfig) + .options({ + processCssUrls: false, + manifest: false, + terser: { + terserOptions: { + compress: true, + output: { + comments: false + } + }, + }, + }) + .setPublicPath(''); + +mix + .copy('node_modules/jquery/dist/jquery.min.js', 'assets/vendor/jquery.min.js') + .js('assets/vendor/codeblocks/codeblocks.js', 'assets/vendor/codeblocks/codeblocks.min.js') + .js('assets/vendor/bootstrap/bootstrap.js', 'assets/vendor/bootstrap/bootstrap.min.js') + .sass('assets/vendor/bootstrap/bootstrap.scss', 'assets/vendor/bootstrap/bootstrap.css') + .sass('assets/vendor/bootstrap-icons/bootstrap-icons.scss', 'assets/vendor/bootstrap-icons/bootstrap-icons.css') + .copy('node_modules/bootstrap-icons/font/fonts/', 'assets/vendor/bootstrap-icons/fonts/') + .copy('node_modules/slick-carousel/slick', 'assets/vendor/slick-carousel/') + .copy('node_modules/photoswipe/dist/photoswipe.css', 'assets/vendor/photoswipe/photoswipe.css') + .copy('node_modules/photoswipe/dist/photoswipe-lightbox.esm.min.js', 'assets/vendor/photoswipe/photoswipe-lightbox.esm.min.js') + .copy('node_modules/photoswipe/dist/photoswipe.esm.min.js', 'assets/vendor/photoswipe/photoswipe.esm.min.js') + .copy('node_modules/photoswipe-dynamic-caption-plugin/photoswipe-dynamic-caption-plugin.esm.js', 'assets/vendor/photoswipe-dynamic-caption-plugin/photoswipe-dynamic-caption-plugin.esm.js') + .copy('node_modules/photoswipe-dynamic-caption-plugin/photoswipe-dynamic-caption-plugin.css', 'assets/vendor/photoswipe-dynamic-caption-plugin/photoswipe-dynamic-caption-plugin.css') +; diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..76b3c20 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,17 @@ +const webpack = require('webpack'); + +module.exports = { + devtool: 'inline-source-map', + plugins: [ + new webpack.ProvidePlugin({ + $: 'jquery', + jQuery: 'jquery', + 'window.jQuery': 'jquery', + 'window.$': 'jquery', + }), + ], + externals: { + // Use external version of jQuery + jquery: 'jQuery' + }, +}; diff --git a/webpack.helpers.js b/webpack.helpers.js new file mode 100644 index 0000000..217512b --- /dev/null +++ b/webpack.helpers.js @@ -0,0 +1,45 @@ +/* + |-------------------------------------------------------------------------- + | Mix Extensions + |-------------------------------------------------------------------------- + | + | Adds custom helper functions to the mix object. + | + */ + +const { lstatSync, readdirSync } = require('fs'); +const { join } = require('path'); +const fs = require('fs'); + +const isDirectory = (source) => lstatSync(source).isDirectory(); +const getDirectories = (source) => readdirSync(source).map((name) => join(source, name)).filter(isDirectory); + +function makeComponentLessList(source) { + const componentDirs = getDirectories(source); + const result = []; + + componentDirs.forEach((dir) => { + const parts = dir.replace(/\\/g, '/').split('/'); + const componentName = parts[parts.length - 1]; + const lessFile = dir + '/assets/less/' + componentName + '.less'; + + if (fs.existsSync(lessFile)) { + result.push(componentName); + } + }); + + return result; +} + +// Attach the helpers to the mix object +module.exports = (mix) => { + + // Wildcard helper for components + mix.lessList = (path, except = []) => { + makeComponentLessList(path) + .filter(name => !except.includes(name)) + .forEach(name => mix.less(`${path}/${name}/assets/less/${name}.less`, `${path}/${name}/assets/css/`)) + ; + }; + +}; diff --git a/webpack.mix.js b/webpack.mix.js new file mode 100644 index 0000000..6cfc241 --- /dev/null +++ b/webpack.mix.js @@ -0,0 +1,67 @@ +const mix = require('laravel-mix'); +const webpackConfig = require('./webpack.config'); + +/* + |-------------------------------------------------------------------------- + | Mix Asset Management + |-------------------------------------------------------------------------- + | + | Mix provides a clean, fluent API for defining some Webpack build steps + | for your theme assets. By default, we are compiling the CSS + | file for the application as well as bundling up all the JS files. + | + */ + +mix + .webpackConfig(webpackConfig) + .options({ + processCssUrls: false, + manifest: false, + terser: { + terserOptions: { + mangle: false, + compress: true, + output: { + comments: false + } + }, + }, + }) + .setPublicPath('') +; + +// Vendor Mixes +mix + .copy('node_modules/jquery/dist/jquery.min.js', 'modules/system/assets/js/vendor/jquery.min.js') + .copy('node_modules/vue-router/dist/vue-router.min.js', 'modules/system/assets/vendor/vue-router/vue.min.js') + .copy('node_modules/bluebird/js/browser/bluebird.min.js', 'modules/system/assets/vendor/bluebird/bluebird.min.js') + .copy('node_modules/sortablejs/Sortable.min.js', 'modules/backend/assets/vendor/sortablejs/sortable.js') + .copy('node_modules/dropzone/dist/dropzone-min.js', 'modules/backend/assets/vendor/dropzone/dropzone.js') + .copy('node_modules/js-cookie/dist/js.cookie.js', 'modules/backend/assets/vendor/js-cookie/js.cookie.js') +; + +// Vue dev tools +if (!mix.inProduction()) { + mix.copy('node_modules/vue/dist/vue.js', 'modules/system/assets/vendor/vue/vue.min.js'); +} +else { + mix.copy('node_modules/vue/dist/vue.min.js', 'modules/system/assets/vendor/vue/vue.min.js'); +} + +// Boostrap Mixes +mix + .js('modules/backend/assets/vendor/bootstrap/bootstrap.js', 'modules/backend/assets/vendor/bootstrap/bootstrap.min.js') + .sass('modules/backend/assets/vendor/bootstrap/bootstrap.scss', 'modules/backend/assets/vendor/bootstrap/bootstrap.css') + .sass('modules/backend/assets/vendor/bootstrap/bootstrap-lite.scss', 'modules/backend/assets/vendor/bootstrap/bootstrap-lite.css') + .sass('modules/backend/assets/vendor/bootstrap-icons/bootstrap-icons.scss', 'modules/backend/assets/vendor/bootstrap-icons/bootstrap-icons.css') + .copy('node_modules/bootstrap-icons/font/fonts/', 'modules/backend/assets/vendor/bootstrap-icons/fonts/') +; + +// Core Mixes +require('./webpack.helpers')(mix); +require('./modules/system/system.mix')(mix); +require('./modules/backend/backend.mix')(mix); +require('./modules/editor/editor.mix')(mix); +require('./modules/media/media.mix')(mix); +require('./modules/tailor/tailor.mix')(mix); +require('./modules/cms/cms.mix')(mix);